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

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,25 @@
.el-popover__title{ .el-popover__title {
margin-bottom: 0; margin-bottom: 0;
} }
.BUSINESS_TRADEBox{
.el-form-item__label{ .BUSINESS_TRADEBox {
color: #fff!important; .el-form-item__label {
color: #fff !important;
} }
.el-form-item__content{ .el-form-item__content {
.el-select{ .el-select {
.el-select__wrapper{ .el-select__wrapper {
background-color: transparent!important; background-color: transparent !important;
} }
} }
} }
} }
.moreSelectBox{
.moreSelectBox {
margin-right: 8px; margin-right: 8px;
.selectBox{
.selectBox {
width: 36px; width: 36px;
height: 36px; height: 36px;
background: rgba(95, 95, 95, 0.5); background: rgba(95, 95, 95, 0.5);
@ -27,29 +30,35 @@
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
.selectBoxDefaultIcon{
.selectBoxDefaultIcon {
width: 22px; width: 22px;
height: 22px; height: 22px;
} }
} }
.selectFormBox{
.selectFormBox {
width: 260px; width: 260px;
background: rgba(95, 95, 95, 0.5); background: rgba(95, 95, 95, 0.5);
border-radius: 6px; border-radius: 6px;
border: 1px solid #5F5F5F; border: 1px solid #5F5F5F;
box-sizing: border-box; box-sizing: border-box;
padding: 12px; padding: 12px;
.closeIcon{ z-index: 99;
.closeIcon {
width: 22px; width: 22px;
height: 22px; height: 22px;
cursor: pointer; cursor: pointer;
z-index: 6; z-index: 999;
} }
} }
} }
.rightSearchMain{
.rightSearchMain {
width: 40px; width: 40px;
.defaultIconBox{
.defaultIconBox {
width: 36px; width: 36px;
height: 36px; height: 36px;
background: rgba(95, 95, 95, 0.5); background: rgba(95, 95, 95, 0.5);
@ -60,15 +69,18 @@
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
.defaultIcon{
.defaultIcon {
width: 22px; width: 22px;
height: 22px; height: 22px;
} }
} }
.otherList{
.otherList {
width: 36px; width: 36px;
margin-top: 8px; margin-top: 8px;
.otherItem{
.otherItem {
width: 36px; width: 36px;
height: 36px; height: 36px;
background: rgba(95, 95, 95, 0.5); background: rgba(95, 95, 95, 0.5);
@ -80,24 +92,29 @@
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
.otherIcon{
.otherIcon {
width: 22px; width: 22px;
height: 22px; height: 22px;
} }
} }
} }
} }
.el-popover{
background-color: #000!important; .el-popover {
.el-popover__title{ background-color: #000 !important;
color: #fff!important;
.el-popover__title {
color: #fff !important;
} }
.el-popper__arrow::before{
background-color: #000!important; .el-popper__arrow::before {
background-color: #000 !important;
} }
.is-light{
border-color: #000!important; .is-light {
border-color: #000 !important;
} }
} }

View File

@ -83,6 +83,7 @@ const handleClickFilter = (value: string) => {
filterList.forEach((item: any) => { filterList.forEach((item: any) => {
item.isSelect = false; item.isSelect = false;
}); });
showSearchForm.value = false
emit("handleDeleteSelect"); emit("handleDeleteSelect");
} else { } else {
// //
@ -133,7 +134,7 @@ const handleClickFilter = (value: string) => {
} }
console.log("selectFilterList.value", selectFilterList.value); console.log("selectFilterList.value", selectFilterList.value);
if (value === "99") { if (value === "99") {
emit("handleNearServiceList"); // emit("handleNearServiceList");
} }
if (selectFilterList.value) { if (selectFilterList.value) {
@ -180,15 +181,12 @@ const handleShowMoreFormBox = () => {
if (!isShowFilterIconList.value) { if (!isShowFilterIconList.value) {
isShowFilterIconList.value = true; isShowFilterIconList.value = true;
} }
showSearchForm.value = true; showSearchForm.value = !showSearchForm.value;
}; };
// //
const handleColseSearchBox = () => { const handleColseSearchBox = () => {
console.log("1"); showSearchForm.value = !showSearchForm.value;
nextTick(() => {
showSearchForm.value = false;
});
}; };
// //
@ -279,10 +277,10 @@ defineExpose({
</el-form> </el-form>
<div style="width: 100%; display: flex; justify-content: flex-end"> <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>
</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> </div>
</div> </div>

View File

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