This commit is contained in:
ylj20011123 2025-11-21 09:38:07 +08:00
parent 5cd17869a5
commit 7b28725b13
5 changed files with 2839 additions and 1563 deletions

View File

@ -307,20 +307,17 @@ const handleSetRowKeyTable = (list: any) => {
subItem.rowKey = `${index + 1}-${subIndex + 1}`;
if (subItem.children && subItem.children.length > 0) {
subItem.children.forEach((thirdItem: any, thirdIndex: number) => {
thirdItem.rowKey = `${index + 1}-${subIndex + 1}-${
thirdIndex + 1
thirdItem.rowKey = `${index + 1}-${subIndex + 1}-${thirdIndex + 1
}`;
if (thirdItem.children && thirdItem.children.length > 0) {
thirdItem.children.forEach(
(fourthItem: any, fourthIndex: number) => {
fourthItem.rowKey = `${index + 1}-${subIndex + 1}-${
thirdIndex + 1
fourthItem.rowKey = `${index + 1}-${subIndex + 1}-${thirdIndex + 1
}-${fourthIndex + 1}`;
if (fourthItem.children && fourthItem.children.length > 0) {
fourthItem.children.forEach(
(fifthItem: any, fifthIndex: number) => {
fourthItem.rowKey = `${index + 1}-${subIndex + 1}-${
thirdIndex + 1
fourthItem.rowKey = `${index + 1}-${subIndex + 1}-${thirdIndex + 1
}-${fourthIndex + 1}-${fifthIndex + 1}`;
}
);
@ -1093,8 +1090,7 @@ const renderCell = (row: any, column: any) => {
return `<span style="text-align: right">${formatNumber(value)}</span>`;
}
if (column.isRate) {
return `<span style="color: ${
value > 0 ? "green" : "red"
return `<span style="color: ${value > 0 ? "green" : "red"
};text-align: right">${value}%</span>`;
}
@ -1121,57 +1117,41 @@ const handleGetResFieldRes = (obj: any, config: any) => {
//
const handleInspectionDialogueBox = async (detail: any, otherObj?: any) => {
//
let str: string = `${
props.currentServerPartDetail.SERVERPART_NAME
}<span class="style4">天气情况${
props.currentServerPartDetail.weatherModel
? `<span class="style5">${"今天"}(${moment().format("YYYY-MM-DD")})${
detail.weatherModel.DAY_WEATHER
}转${detail.weatherModel.NIGHT_WEATHER}气温${
detail.weatherModel.NIGHT_AIR_TEMPERATURE
}~${
detail.weatherModel.DAY_AIR_TEMPERATURE
let str: string = `${props.currentServerPartDetail.SERVERPART_NAME
}<span class="style4">天气情况${props.currentServerPartDetail.weatherModel
? `<span class="style5">${"今天"}(${moment().format("YYYY-MM-DD")})${detail.weatherModel.DAY_WEATHER
}转${detail.weatherModel.NIGHT_WEATHER}气温${detail.weatherModel.NIGHT_AIR_TEMPERATURE
}~${detail.weatherModel.DAY_AIR_TEMPERATURE
}</span><span class="style5">${"明天"}(${moment()
.add(1, "d")
.format("YYYY-MM-DD")})${detail.tmwWeatherModel.DAY_WEATHER}转${
detail.tmwWeatherModel.NIGHT_WEATHER
}气温${detail.tmwWeatherModel.NIGHT_AIR_TEMPERATURE}~${
detail.tmwWeatherModel.DAY_AIR_TEMPERATURE
.format("YYYY-MM-DD")})${detail.tmwWeatherModel.DAY_WEATHER}转${detail.tmwWeatherModel.NIGHT_WEATHER
}气温${detail.tmwWeatherModel.NIGHT_AIR_TEMPERATURE}~${detail.tmwWeatherModel.DAY_AIR_TEMPERATURE
}</span>`
: "暂无天气数据"
}</span><span class="style4">实时路况<span class="style5">${
detail?.roadConditions
? `${
detail?.roadConditions?.EXPRESSWAY_NAME
}</span><span class="style4">实时路况<span class="style5">${detail?.roadConditions
? `${detail?.roadConditions?.EXPRESSWAY_NAME
? detail?.roadConditions?.EXPRESSWAY_NAME + ""
: ""
}${
detail?.roadConditions?.evaluation.status_desc || ""
}${detail?.roadConditions?.evaluation.status_desc || ""
}(${moment().format("MM月DD日 HH时mm分")})`
: "暂无实况车流数据"
} </span></span><span class="style4">车辆归属${
detail?.provinceListTooltip && detail?.provinceListTooltip.length > 0
} </span></span><span class="style4">车辆归属${detail?.provinceListTooltip && detail?.provinceListTooltip.length > 0
? `${detail?.provinceListTooltip
.map((item: any) => {
return `<span class="style5">${moment(
moment().startOf("year")
).format("YYYY年MM月")}至${moment().format("YYYY年MM月")}${
detail?.SERVERPART_NAME || ""
}总入区车流${formatNumber(item.TotalCount || 0)}</span>${
item.children && item.children.length > 0
).format("YYYY年MM月")}至${moment().format("YYYY年MM月")}${detail?.SERVERPART_NAME || ""
}总入区车流${formatNumber(item.TotalCount || 0)}</span>${item.children && item.children.length > 0
? item.children
.map((subItem: any) => {
return `<span class="style5">${
subItem.ProvinceOrCityName
return `<span class="style5">${subItem.ProvinceOrCityName
}占比${formatNumber(
(subItem.TotalCount / item.TotalCount) * 100
)}%Top3${
subItem.children && subItem.children.length > 0
)}%Top3${subItem.children && subItem.children.length > 0
? subItem.children
.map((thirdItem: any, thirdIndex: number) => {
return thirdItem.ProvinceOrCityName !== "其他"
? `${thirdItem.ProvinceOrCityName}${
thirdIndex + 1 !== subItem.children.length
? `${thirdItem.ProvinceOrCityName}${thirdIndex + 1 !== subItem.children.length
? "、"
: ""
}`
@ -1187,14 +1167,11 @@ const handleInspectionDialogueBox = async (detail: any, otherObj?: any) => {
})
.join("")}`
: "暂无车辆归属地数据"
}</span>${
otherObj
? `${
otherObj?.businessText
}</span>${otherObj
? `${otherObj?.businessText
? `<span class="style4">经营数据:</span><span class="style4">${otherObj?.businessText}</span>`
: ""
}${
otherObj?.merchantText
}${otherObj?.merchantText
? `<span class="style4">在营商家:${otherObj?.merchantText}</span>`
: ""
}`
@ -1338,8 +1315,7 @@ const handleConfigItemTable = async (
}
timeStr = time;
} else {
timeStr = `${answer?.StartDate ? answer?.StartDate : ""}${
answer?.EndDate ? "-" + answer?.EndDate : ""
timeStr = `${answer?.StartDate ? answer?.StartDate : ""}${answer?.EndDate ? "-" + answer?.EndDate : ""
}`;
}
}
@ -1453,7 +1429,7 @@ const handleAnswerQuestions = async () => {
//
searchText.value = "";
const data = await handleTranslateSentence(req);
console.log("data", data);
console.log("data321312", data);
// deepseekid
//
// const deepseekIds = await handleUseDeepseekSemantics(req.Sentence);
@ -1502,10 +1478,8 @@ const handleAnswerQuestions = async () => {
// let newShowText: string = await handleUseDeepseekOptimize(
// data?.RevenueAnalysis
// );
const lastContent = `<span class="style4">${data?.RevenueAnalysis}</span>`;
// const lastContent = `<span class="style4">${
// newShowText || ""
// }</span>`;
const lastContent = `<span class="style4">${data?.RevenueAnalysis}</span>`
isPrinting.value = true;
await handlePrintWord(lastBox, lastContent);
}
@ -2009,6 +1983,7 @@ const emit = defineEmits<{
(e: "handleHiddenSuspended"): void; //
(e: "handleShowAi", value: boolean): void; // ai
(e: "handleChangeRightFilterInDialogue", id: any): void; // watch
(e: "handleDeleteNoDefault"): void; // watch
}>();
//
@ -2122,8 +2097,7 @@ const handleSetWarningData = async (noAdd?: boolean) => {
//
const handleSelectWarning = async (value: number) => {
handleAddDialogList(
`${props.currentServerPartDetail?.SERVERPART_NAME || ""}${
descObjRef.value[Number(value)] || "预警类型"
`${props.currentServerPartDetail?.SERVERPART_NAME || ""}${descObjRef.value[Number(value)] || "预警类型"
}`
);
console.log("value", value);
@ -2190,10 +2164,8 @@ const handleSelectWarning = async (value: number) => {
}
});
}
result = `${descObjRef.value[Number(value)]},共有${
serverpartId.length || 0
} 对服务区存在${warningData.length || 0}条${
descObjRef.value[Number(value)]
result = `${descObjRef.value[Number(value)]},共有${serverpartId.length || 0
} 对服务区存在${warningData.length || 0}条${descObjRef.value[Number(value)]
} 的情况您可以鼠标移动到具体服务区查看情况`;
}
console.log("result", result);
@ -2354,6 +2326,7 @@ const handleCloseInspection = () => {
//
const closeInspection = () => {
duringInspection.value = false;
emit("handleDeleteNoDefault");
// inspectionIndex.value = 0;
};
@ -2567,29 +2540,17 @@ defineExpose({
<div class="expandBox" v-if="showDialogBox">
<!-- 展开后的顶部机器人图标和文字 -->
<div class="boxTop">
<img
class="closeIcon"
src="@/assets/ai/AiIcon.png"
@click="handleCloseDialogbox()"
/>
<img class="closeIcon" src="@/assets/ai/AiIcon.png" @click="handleCloseDialogbox()" />
<span class="titleText">商业智能助理小驿为您服务</span>
</div>
<div class="dialogBox">
<!-- 实际的对话框方框 -->
<div id="dialogContent" class="dialogContent">
<div
:class="`dialogueBoxItem dialogueBoxItem${index + 1}`"
v-for="(item, index) in dialogueList"
:key="index"
<div :class="`dialogueBoxItem dialogueBoxItem${index + 1}`" v-for="(item, index) in dialogueList" :key="index"
:style="{
justifyContent: item.type === 1 ? 'flex-start' : 'flex-end',
}"
>
<img
v-if="item.type === 1"
class="robotIcon"
src="@/assets/ai/profileIcon.png"
/>
}">
<img v-if="item.type === 1" class="robotIcon" src="@/assets/ai/profileIcon.png" />
<div class="dialogueTextBox">
<div class="dialogueTextBox-text">
{{ item.text || "" }}
@ -2599,43 +2560,20 @@ defineExpose({
v-if="item.deepseekContent"
v-html="item.deepseekContent"
></div> -->
<div
class="loadingBox"
v-if="isNewDialogLoading && index === dialogueList.length - 1"
v-loading="
isNewDialogLoading && index === dialogueList.length - 1
"
></div>
<div class="loadingBox" v-if="isNewDialogLoading && index === dialogueList.length - 1" v-loading="isNewDialogLoading && index === dialogueList.length - 1
"></div>
<div
v-if="item.isFirst && item.isOver"
style="margin-top: 8px"
class="firstClickTab"
>
<div
v-for="(item, index) in clickTabList"
:key="index"
:class="
selectTab === item.value
<div v-if="item.isFirst && item.isOver" style="margin-top: 8px" class="firstClickTab">
<div v-for="(item, index) in clickTabList" :key="index" :class="selectTab === item.value
? 'clickItem selctClickItem'
: 'clickItem'
"
@click="handleClickTab(item.value)"
>
" @click="handleClickTab(item.value)">
{{ item.label || "" }}
</div>
<div
v-if="!duringInspection"
class="clickItem"
@click="servicepartInspection(inspectionIndex)"
>
<div v-if="!duringInspection" class="clickItem" @click="servicepartInspection(inspectionIndex)">
{{ inspectionIndex > 0 ? "继续巡检" : "服务区巡检" }}
</div>
<div
v-if="duringInspection"
class="clickItem"
@click="handleCloseInspection()"
>
<div v-if="duringInspection" class="clickItem" @click="handleCloseInspection()">
{{ "暂停巡检" }}
</div>
<!-- <img
@ -2646,36 +2584,18 @@ defineExpose({
</div>
<div v-if="item.isWarningSelect" class="firstClickTab">
<div
class="clickItem"
style="display: block"
v-for="(item, index) in descListRef"
:key="index"
@click="handleSelectWarning(item.value)"
>
<div class="clickItem" style="display: block" v-for="(item, index) in descListRef" :key="index"
@click="handleSelectWarning(item.value)">
{{ item.label || "" }}
</div>
</div>
<div v-if="item.haveTable" style="margin-top: 8px">
<el-table
:data="item.tableData"
:fit="true"
tree-props="treeProps"
row-key="rowKey"
class="elTable"
:max-height="500"
>
<el-table-column
v-for="(column, index) in item.columns"
:key="index"
:prop="column.prop"
:label="column.label"
:width="column.width"
:align="column.align"
:show-overflow-tooltip="true"
header-align="center"
>
<el-table :data="item.tableData" :fit="true" tree-props="treeProps" row-key="rowKey" class="elTable"
:max-height="500">
<el-table-column v-for="(column, index) in item.columns" :key="index" :prop="column.prop"
:label="column.label" :width="column.width" :align="column.align" :show-overflow-tooltip="true"
header-align="center">
<!-- :formatter="handleFormatter" -->
<!-- 自定义表头内容 -->
@ -2723,126 +2643,58 @@ defineExpose({
</el-table>
</div>
<div
class="moreOption"
v-if="
<div class="moreOption" v-if="
item.ENABLE_CHART ||
item.ENABLE_PDF_EXPORT ||
item.ENABLE_VIEW_MORE
"
>
<span
class="optionItem"
v-if="item.ENABLE_CHART"
@click="handleShowDataPie()"
>查看数据图表</span
>
<span
class="optionItem"
v-if="item.ENABLE_CHART"
@click="handleGoSearchMore()"
>查看更多</span
>
<span
class="optionItem"
v-if="item.ENABLE_CHART"
@click="handleExportPDF()"
>导出为PDF</span
>
">
<span class="optionItem" v-if="item.ENABLE_CHART" @click="handleShowDataPie()">查看数据图表</span>
<span class="optionItem" v-if="item.ENABLE_CHART" @click="handleGoSearchMore()">查看更多</span>
<span class="optionItem" v-if="item.ENABLE_CHART" @click="handleExportPDF()">导出为PDF</span>
</div>
<div
style="width: 100%; height: 80px"
v-if="printingLoading && index === dialogueList.length - 1"
v-loading="printingLoading"
:element-loading-text="printingLoadingText"
></div>
<div style="width: 100%; height: 80px" v-if="printingLoading && index === dialogueList.length - 1"
v-loading="printingLoading" :element-loading-text="printingLoadingText"></div>
</div>
<img
v-if="item.type === 2"
class="userIcon"
src="@/assets/ai/userIcon.png"
/>
<img v-if="item.type === 2" class="userIcon" src="@/assets/ai/userIcon.png" />
</div>
</div>
<!-- 输入框 -->
<div class="inputBox">
<el-input
ref="inputRef"
class="searchText"
placeholder="Hi,您好!请输入您想了解的服务区..."
v-model="searchText"
@keyup.enter="handleSubmit()"
:disabled="isPrinting"
/>
<img
v-if="isPrinting"
class="searchIcon"
src="@/assets/ai/stopIcon.png"
@click="handleStopPrint()"
/>
<img
v-if="!isPrinting"
class="searchIcon"
src="@/assets/ai/searchIconBlue.png"
@click="handleSubmit()"
/>
<el-input ref="inputRef" class="searchText" placeholder="Hi,您好!请输入您想了解的服务区..." v-model="searchText"
@keyup.enter="handleSubmit()" :disabled="isPrinting" />
<img v-if="isPrinting" class="searchIcon" src="@/assets/ai/stopIcon.png" @click="handleStopPrint()" />
<img v-if="!isPrinting" class="searchIcon" src="@/assets/ai/searchIconBlue.png" @click="handleSubmit()" />
</div>
<div class="moreSelect">
<div v-if="!bottomSelect" class="filterFixed">
<img
class="filterIcon"
src="@/assets/ai/dropDown.png"
@click="handleShowTabList()"
/>
<img class="filterIcon" src="@/assets/ai/dropDown.png" @click="handleShowTabList()" />
</div>
<div class="filterBox" v-if="bottomSelect">
<div class="filterList">
<div
v-for="(item, index) in clickTabList"
:key="index"
:class="
selectTab === item.value
<div v-for="(item, index) in clickTabList" :key="index" :class="selectTab === item.value
? 'filterItem selectFilterItem'
: 'filterItem'
"
@click="handleClickTab(item.value)"
>
" @click="handleClickTab(item.value)">
{{ item.label || "" }}
</div>
<div
v-if="!duringInspection"
class="filterItem"
@click="servicepartInspection(inspectionIndex)"
>
<div v-if="!duringInspection" class="filterItem" @click="servicepartInspection(inspectionIndex)">
{{ inspectionIndex > 0 ? "继续巡检" : "服务区巡检" }}
</div>
<div
v-if="duringInspection"
class="filterItem"
@click="handleCloseInspection()"
>
<div v-if="duringInspection" class="filterItem" @click="handleCloseInspection()">
{{ "暂停巡检" }}
</div>
</div>
<img
class="filterIcon"
src="@/assets/ai/pullUp.png"
@click="handleShowTabList()"
/>
<img class="filterIcon" src="@/assets/ai/pullUp.png" @click="handleShowTabList()" />
</div>
</div>
</div>
</div>
<div class="closeBox" v-else>
<img
class="closeIcon"
src="@/assets/ai/AiIcon.png"
@click="handleGetShowDailogBox()"
/>
<img class="closeIcon" src="@/assets/ai/AiIcon.png" @click="handleGetShowDailogBox()" />
</div>
</template>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
.el-popover__title {
margin-bottom: 0;
}
.BUSINESS_TRADEBox {
.el-form-item__label {
color: #fff !important;
@ -14,8 +15,10 @@
}
}
}
.moreSelectBox {
margin-right: 8px;
.selectBox {
width: 36px;
height: 36px;
@ -27,11 +30,13 @@
justify-content: center;
box-sizing: border-box;
cursor: pointer;
.selectBoxDefaultIcon {
width: 22px;
height: 22px;
}
}
.selectFormBox {
width: 260px;
background: rgba(95, 95, 95, 0.5);
@ -39,16 +44,20 @@
border: 1px solid #5F5F5F;
box-sizing: border-box;
padding: 12px;
z-index: 99;
.closeIcon {
width: 22px;
height: 22px;
cursor: pointer;
z-index: 6;
z-index: 999;
}
}
}
.rightSearchMain {
width: 40px;
.defaultIconBox {
width: 36px;
height: 36px;
@ -60,14 +69,17 @@
justify-content: center;
box-sizing: border-box;
cursor: pointer;
.defaultIcon {
width: 22px;
height: 22px;
}
}
.otherList {
width: 36px;
margin-top: 8px;
.otherItem {
width: 36px;
height: 36px;
@ -80,6 +92,7 @@
justify-content: center;
box-sizing: border-box;
cursor: pointer;
.otherIcon {
width: 22px;
height: 22px;
@ -89,14 +102,18 @@
}
}
.el-popover {
background-color: #000 !important;
.el-popover__title {
color: #fff !important;
}
.el-popper__arrow::before {
background-color: #000 !important;
}
.is-light {
border-color: #000 !important;
}

View File

@ -83,6 +83,7 @@ const handleClickFilter = (value: string) => {
filterList.forEach((item: any) => {
item.isSelect = false;
});
showSearchForm.value = false
emit("handleDeleteSelect");
} else {
//
@ -133,7 +134,7 @@ const handleClickFilter = (value: string) => {
}
console.log("selectFilterList.value", selectFilterList.value);
if (value === "99") {
emit("handleNearServiceList");
// emit("handleNearServiceList");
}
if (selectFilterList.value) {
@ -180,15 +181,12 @@ const handleShowMoreFormBox = () => {
if (!isShowFilterIconList.value) {
isShowFilterIconList.value = true;
}
showSearchForm.value = true;
showSearchForm.value = !showSearchForm.value;
};
//
const handleColseSearchBox = () => {
console.log("1");
nextTick(() => {
showSearchForm.value = false;
});
showSearchForm.value = !showSearchForm.value;
};
//
@ -279,10 +277,10 @@ defineExpose({
</el-form>
<div style="width: 100%; display: flex; justify-content: flex-end">
<el-button type="primary" @click="handleClickFilter('5')">查询</el-button>
<el-button type="primary" @click.stop="handleClickFilter('5')">查询</el-button>
</div>
</div>
<img class="closeIcon" src="@/assets/ai/retract.png" @click="handleColseSearchBox" />
<img class="closeIcon" src="@/assets/ai/retract.png" @click.stop="handleColseSearchBox" />
</div>
</div>
</div>

View File

@ -235,7 +235,7 @@ const handleGetAllService = async () => {
let SPREGIONTYPECOLORLIST: any = [];
let typeID: number = 0;
data.forEach((item: any) => {
if (item.SPREGIONTYPE_ID) {
if (item.SPREGIONTYPE_ID && item.SPREGIONTYPE_ID !== 89) {
if (
SPREGIONTYPETYPELIST[item.SPREGIONTYPE_ID] ||
SPREGIONTYPETYPELIST[item.SPREGIONTYPE_ID] === 0
@ -309,14 +309,13 @@ const handleAllServiceMarkedPoint = async () => {
});
pointLayer.on("mousemove", (ev: any) => {
const detail: any = ev.feature;
console.log('detaildetaildetail', detail)
hoverPoint.value.style.top = `${ev.y + 5}px`;
hoverPoint.value.style.left = `${ev.x + 5}px`;
hoverPoint.value.style.display = "block";
hoverPoint.value.innerHTML = `<div>
<div>${detail?.SERVERPART_NAME || ""}${
detail?.SERVERPART_TYPE
? `${
ServerpartTypeObj ? ServerpartTypeObj[detail?.SERVERPART_TYPE] : ""
<div>${detail?.SERVERPART_NAME || ""}${detail?.SERVERPART_TYPE
? `${ServerpartTypeObj ? ServerpartTypeObj[detail?.SERVERPART_TYPE] : ""
}`
: ""
}</div>
@ -326,15 +325,11 @@ const handleAllServiceMarkedPoint = async () => {
? `
<div style="background-color: black; color: white; border-radius: 5px; font-size: 14px; border: none;box-shadow: none;">
<div>天气情况</div>
<div>${"今天"}${detail.weatherModel.DAY_WEATHER}转${
detail.weatherModel.NIGHT_WEATHER
}气温${detail.weatherModel.NIGHT_AIR_TEMPERATURE}~${
detail.weatherModel.DAY_AIR_TEMPERATURE
<div>${"今天"}${detail.weatherModel.DAY_WEATHER}转${detail.weatherModel.NIGHT_WEATHER
}气温${detail.weatherModel.NIGHT_AIR_TEMPERATURE}~${detail.weatherModel.DAY_AIR_TEMPERATURE
}</div>
<div>${"明天"}${detail.tmwWeatherModel.DAY_WEATHER}转${
detail.tmwWeatherModel.NIGHT_WEATHER
}气温${detail.tmwWeatherModel.NIGHT_AIR_TEMPERATURE}~${
detail.tmwWeatherModel.DAY_AIR_TEMPERATURE
<div>${"明天"}${detail.tmwWeatherModel.DAY_WEATHER}转${detail.tmwWeatherModel.NIGHT_WEATHER
}气温${detail.tmwWeatherModel.NIGHT_AIR_TEMPERATURE}~${detail.tmwWeatherModel.DAY_AIR_TEMPERATURE
}</div>
</div>
`
@ -347,16 +342,14 @@ const handleAllServiceMarkedPoint = async () => {
? `
<div style="max-height: 250px;overflow-y: auto">
<div>实时路况${moment().format("YY月DD日 HH点mm分")}</div>
<div>${
detail?.roadConditions?.EXPRESSWAY_NAME
<div>${detail?.roadConditions?.EXPRESSWAY_NAME
? detail?.roadConditions?.EXPRESSWAY_NAME + ""
: ""
}${
detail?.roadConditions?.evaluation.status === 1
}${detail?.roadConditions?.evaluation?.status === 1
? "双向畅通"
: detail?.roadConditions?.evaluation.status === 2
: detail?.roadConditions?.evaluation?.status === 2
? "双向缓行"
: detail?.roadConditions?.evaluation.status === 3
: detail?.roadConditions?.evaluation?.status === 3
? "双向拥堵"
: ""
}</div>
@ -384,21 +377,17 @@ const handleAllServiceMarkedPoint = async () => {
(item: any) =>
`<div>${moment(moment().startOf("y")).format(
"YYYY年MM月"
)}至${moment().format("YYYY年MM月")}${
detail?.SERVERPART_NAME || ""
)}至${moment().format("YYYY年MM月")}${detail?.SERVERPART_NAME || ""
}总入区车流${formatNumber(item.TotalCount || 0)}
${
item.children?.length > 0
${item.children?.length > 0
? `<div>${item.children
.map(
(subItem: any) =>
`<div>${
subItem.ProvinceOrCityName
`<div>${subItem.ProvinceOrCityName
}占比${formatNumber(
(subItem.TotalCount / item.TotalCount) * 100
)}% Top3
${
subItem.children && subItem.children.length > 0
${subItem.children && subItem.children.length > 0
? `<span>
${subItem.children
.map((thirdItem: any, thirdIndex: number) => {
@ -425,8 +414,7 @@ const handleAllServiceMarkedPoint = async () => {
//
nowSelectId.value && nowSelectId.value.indexOf("5") !== -1
? `<div>
${detail?.tradeType || ""}${
detail?.shopName ? `${detail?.shopName}` : ""
${detail?.tradeType || ""}${detail?.shopName ? `${detail?.shopName}` : ""
}
</div>`
: ""
@ -442,8 +430,7 @@ const handleAllServiceMarkedPoint = async () => {
${
//
nowSelectId.value && nowSelectId.value.indexOf("8") !== -1
? `<div>对客销售:${
detail.AVR_TICKET > 30
? `<div>对客销售:${detail.AVR_TICKET > 30
? "繁忙"
: detail.AVR_TICKET > 15 && detail.AVR_TICKET < 30
? "良好"
@ -765,6 +752,7 @@ const handleSetCarData = async (
}
});
}
let data: any = {};
let roadItem: any = {};
let roadReq: any = {
@ -773,6 +761,7 @@ const handleSetCarData = async (
};
data = await handleGetBaiDuTrafficInfo(roadReq);
let roadRes: any = JSON.parse(data);
if (roadRes.status == 2) {
let roadReq: any = {
RoadName: selectObj.SERVERPART_NAME || "",
@ -822,8 +811,6 @@ const handleSetCarData = async (
...selectObj,
...roadItem,
};
console.log("item", item);
console.log("defaultServerPartList", defaultServerPartList);
let allLayers: any = scene.value.getLayers();
if (allLayers && allLayers.length > 0) {
let obj: any = {};
@ -987,7 +974,7 @@ const handleDeleteLayer = (name: string) => {
};
//
const handleDeleteNoDefault = (nowSelect: string) => {
const handleDeleteNoDefault = (nowSelect?: string) => {
if (nowSelect) {
if (nowSelect.indexOf("1") === -1) {
scene.value.removeAllMarkers();
@ -1256,7 +1243,7 @@ const handleGetCarComeForm = async () => {
//
const handleGetBusinessFormat = async () => {
await RobotDialogueBoxRef.value.handleGetBusinessTrade();
// await RobotDialogueBoxRef.value.handleGetBusinessTrade();
let formData: any = RightSearchBoxRef.value.form;
console.log("formData", formData);
const req: any = {
@ -1318,8 +1305,6 @@ const handleGetBusinessFormat = async () => {
}
let BusinessTradeIdsObj: any =
RightSearchBoxRef.value.selectBusinessTradeIdsObj;
console.log("BusinessTradeIdsObj", BusinessTradeIdsObj);
console.log("obj", obj);
nextTick(() => {
defaultServerPartList.forEach((item: any) => {
@ -1467,8 +1452,7 @@ const handleWarningMap = async (warningData: any) => {
if (itemStr) {
itemStr += `${subItem.SERVERPARTSHOP_NAME}`;
} else {
itemStr = `${waringObj[subItem.WARNING_TYPE]}${
subItem.SERVERPARTSHOP_NAME
itemStr = `${waringObj[subItem.WARNING_TYPE]}${subItem.SERVERPARTSHOP_NAME
} `;
}
}
@ -1515,8 +1499,7 @@ const handleWarningMap = async (warningData: any) => {
if (itemStr) {
itemStr += `${subItem.SERVERPARTSHOP_NAME}; `;
} else {
itemStr = `${waringObj[subItem.WARNING_TYPE]}${
subItem.SERVERPARTSHOP_NAME
itemStr = `${waringObj[subItem.WARNING_TYPE]}${subItem.SERVERPARTSHOP_NAME
} `;
}
}
@ -2061,131 +2044,77 @@ const handleNearServiceList = async () => {
<template>
<div id="map" class="mapBox">
<div class="RobotBox" v-if="baseInfoObj?.ShowAIQA">
<RobotDialogueBox
ref="RobotDialogueBoxRef"
@handleLightServerpart="handleLightServerpart"
@handleEnterySearch="handleEnterySearch"
@handleWarningMap="handleWarningMap"
@handleAreaInspection="handleAreaInspection"
@handleHiddenSuspended="handleHiddenSuspended"
@handleShowAi="handleShowAi"
@handleChangeRightFilterInDialogue="handleChangeRightFilterInDialogue"
:currentServerPartDetail="currentServerPartDetail"
:allServerPartIdList="allServerPartIdList"
/>
<RobotDialogueBox ref="RobotDialogueBoxRef" @handleLightServerpart="handleLightServerpart"
@handleEnterySearch="handleEnterySearch" @handleWarningMap="handleWarningMap"
@handleAreaInspection="handleAreaInspection" @handleHiddenSuspended="handleHiddenSuspended"
@handleShowAi="handleShowAi" @handleChangeRightFilterInDialogue="handleChangeRightFilterInDialogue"
@handleDeleteNoDefault="handleDeleteNoDefault" :currentServerPartDetail="currentServerPartDetail"
:allServerPartIdList="allServerPartIdList" />
</div>
<div
class="rightSearchBox"
:style="{ right: showRightDetail ? 'calc(25% + 8px)' : '16px' }"
>
<RightSearchBox
ref="RightSearchBoxRef"
@handleChangeMapShow="handleChangeMapShow"
@handleDeleteSelect="handleDeleteSelect"
@handleHiddenSuspended="handleHiddenSuspended"
@handleNearServiceList="handleNearServiceList"
:currentServerPartDetail="currentServerPartDetail"
/>
<div class="rightSearchBox" :style="{ right: showRightDetail ? 'calc(25% + 8px)' : '16px' }">
<RightSearchBox ref="RightSearchBoxRef" @handleChangeMapShow="handleChangeMapShow"
@handleDeleteSelect="handleDeleteSelect" @handleHiddenSuspended="handleHiddenSuspended"
@handleNearServiceList="handleNearServiceList" :currentServerPartDetail="currentServerPartDetail" />
</div>
<div
class="serverpartDetail"
:style="{ right: showRightDetail ? '0' : '-25%' }"
>
<div class="serverpartDetail" :style="{ right: showRightDetail ? '0' : '-25%' }">
<!-- v-if="showRightDetail" -->
<RightDetail
ref="RightDetailRef"
:currentServerPartDetail="currentServerPartDetail"
@handleCloseRightDetail="handleCloseRightDetail"
@handleShowDetail="handleShowDetail"
/>
<RightDetail ref="RightDetailRef" :currentServerPartDetail="currentServerPartDetail"
@handleCloseRightDetail="handleCloseRightDetail" @handleShowDetail="handleShowDetail" />
</div>
<!-- 实时营收的box -->
<div
class="realBox"
v-show="
isShowAi || isShowDetail
<div class="realBox" v-show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
>
">
<!-- v-if="baseInfoObj?.ShowRevenueGraphic && isShowAi || isShowDetail" -->
<RealBox
ref="RealBoxRef"
:show="
isShowAi || isShowDetail
<RealBox ref="RealBoxRef" :show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
/>
" />
</div>
<!-- 片区图例 -->
<div
class="areaListLegend"
v-if="SPREGIONTYPECOLORList && SPREGIONTYPECOLORList.length > 0"
>
<div
class="areaItem"
v-for="(item, index) in SPREGIONTYPECOLORList"
:key="index"
>
<div class="areaListLegend" v-if="SPREGIONTYPECOLORList && SPREGIONTYPECOLORList.length > 0">
<div class="areaItem" v-for="(item, index) in SPREGIONTYPECOLORList" :key="index">
<span class="color" :style="{ background: item.value }"></span>
<span class="text">{{ item.label }}</span>
</div>
</div>
<!-- 区域营收占比 -->
<div
class="revenueRate"
v-show="
isShowAi || isShowDetail
<div class="revenueRate" v-show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
>
<RevenueRate
ref="revenueRateRef"
:SPREGIONTYPECOLOR="SPREGIONTYPECOLOR"
:show="
isShowAi || isShowDetail
">
<RevenueRate ref="revenueRateRef" :SPREGIONTYPECOLOR="SPREGIONTYPECOLOR" :show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
/>
" />
</div>
<!-- 消费金额趋势图 -->
<div
class="BusyRanking"
v-show="
isShowAi || isShowDetail
<div class="BusyRanking" v-show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
>
<BusyRanking
ref="BusyRankingRef"
:show="
isShowAi || isShowDetail
">
<BusyRanking ref="BusyRankingRef" :show="isShowAi || isShowDetail
? false
: baseInfoObj?.ShowRevenueGraphic && isShowRealData
? true
: false
"
@handleServiceBusy="handleServiceBusy"
/>
" @handleServiceBusy="handleServiceBusy" />
</div>
</div>
</template>