From 5e059c9c17a6d63b6c017d2d2beb25ae227071d1 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 11 四月 2025 17:33:59 +0800
Subject: [PATCH] 走航融合优化中
---
src/components/MessageBox.vue | 2
src/components/mission/MissionEdit.vue | 106 ++++++---
src/views/underwaymix/component/ItemGridStyleCtrl.vue | 114 +++++++++++
src/model/SatelliteGrid.js | 140 ++-----------
src/views/underwaymix/UnderwayMixMode.vue | 56 ----
src/components/mission/MissionManage.vue | 56 ++++-
src/views/underwaymix/component/GridStyleTool.vue | 19 +
src/components/CardDialog.vue | 15
src/components/CardDialog copy.vue | 70 +++++++
9 files changed, 354 insertions(+), 224 deletions(-)
diff --git a/src/components/CardDialog copy.vue b/src/components/CardDialog copy.vue
new file mode 100644
index 0000000..7d601c7
--- /dev/null
+++ b/src/components/CardDialog copy.vue
@@ -0,0 +1,70 @@
+<template>
+ <el-dialog
+ :model-value="modelValue"
+ @opened="handleChange(true)"
+ @closed="handleChange(false)"
+ :show-close="false"
+ :destroy-on-close="true"
+ :width="width"
+ :draggable="draggable"
+ :modal="modal"
+ :close-on-click-modal="modal"
+ :modal-class="modal ? 'p-events-auto' : ''"
+ >
+ <template #header="{ close, titleId, titleClass }">
+ <BaseCard direction="top-left" borderless="t">
+ <template #content>
+ <el-row justify="space-between" align="middle">
+ <el-row align="middle">
+ <font-awesome-icon icon="fa fa-list" class="m-r-4" />
+ <span :id="titleId" :class="titleClass">{{ title }}</span>
+ </el-row>
+ <font-awesome-icon
+ icon="fa fa-times"
+ class="cursor-p m-r-4"
+ @click="close"
+ />
+ </el-row>
+ </template>
+ </BaseCard>
+ </template>
+ <BaseCard size="medium">
+ <template #content>
+ <slot></slot>
+ </template>
+ <template #footer>
+ <slot name="footer"></slot>
+ </template>
+ </BaseCard>
+ </el-dialog>
+</template>
+<script>
+export default {
+ props: {
+ // 鏄鹃殣鎺у埗
+ modelValue: Boolean,
+ // 鏍囬
+ title: String,
+ // 瀹藉害
+ width: {
+ type: [String, Number],
+ default: '50%'
+ },
+ // 鍙嫋鎷�
+ draggable: Boolean,
+ // 閬僵灞�
+ modal: {
+ type: Boolean,
+ default: true
+ }
+ },
+ emits: ['update:modelValue', 'changed'],
+ methods: {
+ handleChange(value) {
+ this.$emit('update:modelValue', value);
+ this.$emit('changed', value);
+ }
+ }
+};
+</script>
+<style></style>
diff --git a/src/components/CardDialog.vue b/src/components/CardDialog.vue
index 7d601c7..0d9a0d8 100644
--- a/src/components/CardDialog.vue
+++ b/src/components/CardDialog.vue
@@ -1,8 +1,5 @@
<template>
<el-dialog
- :model-value="modelValue"
- @opened="handleChange(true)"
- @closed="handleChange(false)"
:show-close="false"
:destroy-on-close="true"
:width="width"
@@ -42,7 +39,7 @@
export default {
props: {
// 鏄鹃殣鎺у埗
- modelValue: Boolean,
+ // modelValue: Boolean,
// 鏍囬
title: String,
// 瀹藉害
@@ -58,12 +55,12 @@
default: true
}
},
- emits: ['update:modelValue', 'changed'],
+ // emits: ['update:modelValue', 'changed'],
methods: {
- handleChange(value) {
- this.$emit('update:modelValue', value);
- this.$emit('changed', value);
- }
+ // handleChange(value) {
+ // this.$emit('update:modelValue', value);
+ // this.$emit('changed', value);
+ // }
}
};
</script>
diff --git a/src/components/MessageBox.vue b/src/components/MessageBox.vue
index ce075f9..bdde446 100644
--- a/src/components/MessageBox.vue
+++ b/src/components/MessageBox.vue
@@ -2,8 +2,8 @@
<CardDialog
:title="title"
:model-value="modelValue"
+ @update:modelValue="handleChange"
:width="400"
- @handleChange="handleChange"
>
<el-row justify="center">
<div class="m-v-16">{{ msg }}</div>
diff --git a/src/components/mission/MissionEdit.vue b/src/components/mission/MissionEdit.vue
index c8695b7..902b77a 100644
--- a/src/components/mission/MissionEdit.vue
+++ b/src/components/mission/MissionEdit.vue
@@ -1,5 +1,9 @@
<template>
- <CardDialog v-model="visible" title="鏂板缓璧拌埅浠诲姟">
+ <CardDialog
+ :title="dialogTitle"
+ :model-value="modelValue"
+ @update:modelValue="(e) => $emit('update:modelValue', e)"
+ >
<el-form
:inline="false"
:model="formObj"
@@ -43,26 +47,10 @@
</el-form-item>
</el-form>
</CardDialog>
- <el-button
- v-if="mode == 'create'"
- type="primary"
- class="el-button-custom"
- @click="visible = !visible"
- >
- 鏂板缓浠诲姟
- </el-button>
- <el-button
- v-else
- type="primary"
- size="small"
- icon="EditPen"
- class="el-button-custom"
- @click="visible = !visible"
- ></el-button>
</template>
<script setup>
import moment from 'moment';
-import { ref, reactive, computed } from 'vue';
+import { ref, onMounted, reactive, computed, watch } from 'vue';
import missionApi from '@/api/missionApi';
import thirdPartyDataApi from '@/api/thirdPartyDataApi';
import { useFormConfirm } from '@/composables/formConfirm';
@@ -74,15 +62,19 @@
mode: {
type: String,
default: 'create'
+ },
+ modelValue: Boolean,
+ mission: {
+ type: Object
}
- // visible: {
- // type: String,
- // default: 'create'
- // }
+});
+const dialogTitle = computed(() => {
+ return `${props.mode == 'create' ? '鏂板缓' : '淇敼'}璧拌埅浠诲姟`;
});
+const emits = defineEmits(['update:modelValue']);
+
const missionStore = useMissionStore();
-const visible = ref(false);
const { loading, fetchData } = useFetchData();
const rules = reactive({
location: [
@@ -130,15 +122,22 @@
endTime: formObj.value.timeArray[1]
};
});
+
+function submitMission() {
+ const newMission = { ...param.value };
+}
+
// 鍒涘缓浠诲姟
function createMission() {
fetchData((page, pageSize) => {
- return missionApi.putNewMission(param.value).then((res) => {
- visible.value = false;
- missionStore.fetchMission();
- // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟
- thirdPartyDataApi.fetchMissionData(param.value.missionCode);
- });
+ return missionApi
+ .putNewMission(param.value)
+ .then((res) => {
+ missionStore.fetchMission();
+ // 閫氱煡鏈嶅姟绔惎鍔ㄤ换鍔¤寖鍥村唴鐨勭涓夋柟鏁版嵁鑾峰彇浠诲姟
+ thirdPartyDataApi.fetchMissionData(param.value.missionCode);
+ })
+ .finally(() => emits('update:modelValue', false));
});
}
const { formObj, formRef, edit, onSubmit, onCancel } = useFormConfirm({
@@ -147,20 +146,49 @@
},
cancel: {
do: () => {
- visible.value = false;
+ emits('update:modelValue', false);
}
}
});
-if (import.meta.env.VITE_DATA_MODE == 'jingan') {
- formObj.value.location = {
- pCode: '31',
- pName: '涓婃捣甯�',
- cCode: '3100',
- cName: '涓婃捣甯�',
- dCode: '310106',
- dName: '闈欏畨鍖�'
- };
+// 鐩戝惉浼犲叆鐨勪换鍔′俊鎭紝鍦ㄦ洿鏂版ā寮忎笅锛屽皢浠诲姟淇℃伅鏄犲皠鍒拌〃鍗曚笂
+watch(
+ () => [props.modelValue, props.mission],
+ (nV, oV) => {
+ if (nV != oV) {
+ const [v, m] = nV;
+ if (v) {
+ initFormObj();
+ }
+ if (m && props.mode == 'update') {
+ formObj.value.location = { dName: m.districtName };
+ formObj.value.missionCode = m.missionCode;
+ formObj.value.deviceType = m.deviceType;
+ formObj.value.deviceCode = m.deviceCode;
+ formObj.value.timeArray = [m.startTime, m.endTime];
+ }
+ }
+ },
+ { immediate: true }
+);
+
+onMounted(() => {
+ initFormObj();
+});
+
+function initFormObj() {
+ if (import.meta.env.VITE_DATA_MODE == 'jingan') {
+ formObj.value.location = {
+ pCode: '31',
+ pName: '涓婃捣甯�',
+ cCode: '3100',
+ cName: '涓婃捣甯�',
+ dCode: '310106',
+ dName: '闈欏畨鍖�'
+ };
+ } else {
+ formObj.value = {};
+ }
}
</script>
<style scoped>
diff --git a/src/components/mission/MissionManage.vue b/src/components/mission/MissionManage.vue
index 5695155..92fda9d 100644
--- a/src/components/mission/MissionManage.vue
+++ b/src/components/mission/MissionManage.vue
@@ -7,11 +7,7 @@
>
浠诲姟绠$悊
</el-button> -->
- <CardDialog
- :model-value="modelValue"
- @changed="handleChange"
- title="璧拌埅浠诲姟绠$悊"
- >
+ <CardDialog v-bind="$attrs" title="璧拌埅浠诲姟绠$悊">
<el-row class="mission-table">
<el-col :span="20">
<el-table
@@ -49,7 +45,14 @@
/>
<el-table-column label="绠$悊" width="160" align="center">
<template #default="{ row }">
- <MissionEdit mode="update"></MissionEdit>
+ <!-- <MissionEdit mode="update"></MissionEdit> -->
+ <!-- <el-button
+ type="primary"
+ size="small"
+ icon="EditPen"
+ class="el-button-custom"
+ @click="updateMission(row)"
+ ></el-button> -->
<el-button
type="primary"
size="small"
@@ -57,14 +60,14 @@
class="el-button-custom"
@click="deleteMission(row)"
></el-button>
- <el-button
+ <!-- <el-button
:loading="row.downloadLoading"
type="primary"
size="small"
icon="Document"
class="el-button-custom"
@click="downloadReport(row)"
- ></el-button>
+ ></el-button> -->
</template>
</el-table-column>
</el-table>
@@ -74,7 +77,13 @@
<!-- <el-button type="primary" class="el-button-custom">
鏂板缓浠诲姟
</el-button> -->
- <MissionEdit></MissionEdit>
+ <el-button
+ type="primary"
+ class="el-button-custom"
+ @click="createMission"
+ >
+ 鏂板缓浠诲姟
+ </el-button>
<!-- </div> -->
<!-- <div>
<el-button type="primary" class="el-button-custom">
@@ -96,6 +105,12 @@
msg="纭鏄惁鍒犻櫎璇ヨ蛋鑸换鍔�"
confirmText="鍒犻櫎"
></MessageBox>
+ <MissionEdit
+ v-model="dialogVisible"
+ width="30%"
+ :mode="editMode"
+ :mission="selectedMission"
+ ></MissionEdit>
</template>
<script>
import moment from 'moment';
@@ -110,22 +125,35 @@
return { loading, fetchData };
},
props: {
- modelValue: Boolean
+ // modelValue: Boolean
},
- emits: ['update:modelValue'],
+ // emits: ['update:modelValue'],
data() {
return {
dialogVisible: false,
msgBoxVisible: false,
- onConfirm: undefined
+ onConfirm: undefined,
+ // 浠诲姟缂栬緫妯″紡锛宑reate锛氬垱寤烘柊浠诲姟锛寀pdate锛氱紪杈戝凡鏈変换鍔�
+ editMode: 'create',
+ // 閫変腑鐨勫緟缂栬緫浠诲姟
+ selectedMission: undefined
};
},
computed: {
...mapStores(useMissionStore)
},
methods: {
- handleChange(value) {
- this.$emit('update:modelValue', value);
+ // handleChange(value) {
+ // this.$emit('update:modelValue', value);
+ // },
+ createMission() {
+ this.editMode = 'create';
+ this.dialogVisible = true;
+ },
+ updateMission(row) {
+ this.editMode = 'update';
+ this.selectedMission = row;
+ this.dialogVisible = true;
},
deleteMission(row) {
this.onConfirm = () => {
diff --git a/src/model/SatelliteGrid.js b/src/model/SatelliteGrid.js
index 2ca4d43..e2ef06d 100644
--- a/src/model/SatelliteGrid.js
+++ b/src/model/SatelliteGrid.js
@@ -15,16 +15,16 @@
}
gridGroupId;
-
+
// 榛樿鍦板浘缃戞牸鐩稿叧瀵硅薄
mapViews;
gridDataDetail;
- infoMap = new Map();
-
// 鍦板浘缃戞牸瀵硅薄Map缁撴瀯锛屽瓨鍌ㄥ搴攌ey涓嬬殑缃戞牸瀵硅薄銆佺綉鏍煎潗鏍囦俊鎭�
mapViewsMap = new Map();
+
+ gridStateMap = new Map();
// 缃戞牸鏁版嵁Map缁撴瀯锛屽瓨鍌ㄥ搴攌ey涓嬬殑缃戞牸鐩戞祴鏁版嵁淇℃伅
gridDataDetailMap = new Map();
@@ -349,7 +349,8 @@
drawTagGrid({ tag, data, grid, dataTxt, rankTxt, extData }) {
if (!this.mapViewsMap.has(tag)) {
const newMapViews = this._createNewMapViews({ extData });
- this.infoMap.set(tag, extData);
+ const newGridState = this._createNewGridState({ extData });
+ this.gridStateMap.set(tag, newGridState);
this.mapViewsMap.set(tag, newMapViews);
this.gridDataDetailMap.set(tag, data);
}
@@ -373,6 +374,7 @@
tags.forEach((t) => {
this.mapViewsMap.delete(t);
this.gridDataDetailMap.delete(t);
+ this.gridStateMap.delete(t);
});
}
@@ -405,7 +407,7 @@
_mapViewsList.forEach((v) => {
if (v.dataTxt) {
map.add(v.dataTxt);
- v.show = true;
+ v.showData = true;
}
});
} else {
@@ -413,7 +415,7 @@
_mapViewsList.forEach((v) => {
if (v.dataTxt) {
map.remove(v.dataTxt);
- v.show = false;
+ v.showData = false;
}
});
}
@@ -424,7 +426,7 @@
_mapViewsList.forEach((v) => {
if (v.rankTxt) {
map.add(v.rankTxt);
- v.show = true;
+ v.showRank = true;
}
});
} else {
@@ -432,7 +434,7 @@
_mapViewsList.forEach((v) => {
if (v.rankTxt) {
map.remove(v.rankTxt);
- v.show = false;
+ v.showRank = false;
}
});
}
@@ -470,9 +472,9 @@
if (_mapViewsList.length == _gridDataDetailList.length) {
_mapViewsList.forEach((v, i) => {
if (v.lastGridViews) {
- if (useCustomColor != undefined) v.useCustomColor = useCustomColor;
+ if (useCustomColor != undefined) v.showCustomColor = useCustomColor;
const lastGridDataDetail = _gridDataDetailList[i];
- if (v.useCustomColor) {
+ if (v.showCustomColor) {
gridMapUtil.drawGridColorCustom(
v.lastGridViews,
lastGridDataDetail,
@@ -588,7 +590,6 @@
});
this.changeGridColor({ tags: [mixTag], isMixGridHighlight });
} else {
- // const mixMapViews = this._createNewMapViews();
// 鏍规嵁鏍囩tag锛岃幏鍙栧搴斿缁勭綉鏍兼暟鎹�
let { _gridDataDetailList } = this._getMapViews(...tags);
const _dataMap = new Map();
@@ -691,108 +692,6 @@
}
return mixTag;
- }
-
- /**
- * 缁樺埗鐑姏鍥剧綉鏍�
- * @param {string} tag
- */
- drawHeatGrid(tag) {
- if (!this.mapViewsMap.has(tag) || !this.gridDataDetailMap.has(tag)) {
- return;
- }
-
- const heatTag = `heat-${tag}`;
- if (this.mapViewsMap.has(heatTag)) {
- this.changeVisibility({
- tags: [heatTag],
- showGridViews: true
- });
- } else {
- const _mapViews = this.mapViewsMap.get(tag);
- const _gridDataDetail = this.gridDataDetailMap.get(tag);
- // const groupId = _gridDataDetail[0].groupId;
- // const cellId = _gridDataDetail.cellId;
-
- const originCellIdList = _gridDataDetail.map((v) => v.cellId);
- let headGridDataDetailList = [];
-
- const width = 120;
- const height = 90;
- const eachwidth = 10;
- const eachheight = 10;
-
- const searchLength = 3;
-
- const _dataMap = new Map();
-
- _gridDataDetail.forEach((gdd) => {
- const searchRes = this.search(
- gdd,
- width,
- height,
- eachwidth,
- eachheight,
- searchLength
- );
- if (searchRes.find((v) => v.cellId == 1670)) {
- console.log();
- }
- searchRes.forEach((e) => {
- if (originCellIdList.indexOf(e.cellId) == -1) {
- if (!_dataMap.has(e.cellId)) {
- _dataMap.set(e.cellId, {
- source: [],
- res: {}
- });
- }
- _dataMap.get(e.cellId).source.push(e);
- }
- });
- });
-
- _dataMap.forEach((v, k) => {
- let total = 0,
- count = v.source.length;
- v.source.forEach((s) => {
- total += s.pm25;
- });
- v.res = {
- isHeatData: true,
- groupId: v.source[0].groupId,
- cellId: v.source[0].cellId,
- pm25: count == 0 ? null : Math.round((total / count) * 10) / 10,
- originData: v.source
- };
- headGridDataDetailList.push(v.res);
- });
- headGridDataDetailList = headGridDataDetailList.concat(_gridDataDetail);
-
- // 閲嶆柊鎸夌収鐩戞祴鏁版嵁鎺掑簭骞舵爣璁版帓鍚�
- headGridDataDetailList.sort((a, b) => {
- return b.pm25 - a.pm25;
- });
- headGridDataDetailList.forEach((gdd, i) => {
- gdd.rank = i + 1;
- });
-
- this.drawTagGrid({
- tag: heatTag,
- data: headGridDataDetailList,
- // grid: {
- // style: {
- // isMixGridHighlight:
- // isMixGridHighlight == undefined ? true : isMixGridHighlight
- // }
- // },
- extData: {
- name: `璧拌埅鐑姏鍥� - ${heatTag}`,
- type: 2
- }
- });
- }
-
- return heatTag;
}
drawHeatGrid2(tag, headGridDataDetailList) {
@@ -971,4 +870,19 @@
show: true
};
}
+
+ _createNewGridState({ extData }) {
+ return {
+ type: undefined,
+ name: '',
+ showGrid: true,
+ showRank: false,
+ showData: false,
+ showCustomColor: false,
+ showHeatMap: false,
+ highlightFusionGrid: false,
+ showUnderway: false,
+ opacityValue: 1
+ };
+ }
}
diff --git a/src/views/underwaymix/UnderwayMixMode.vue b/src/views/underwaymix/UnderwayMixMode.vue
index 8c82db3..fed5590 100644
--- a/src/views/underwaymix/UnderwayMixMode.vue
+++ b/src/views/underwaymix/UnderwayMixMode.vue
@@ -57,7 +57,7 @@
v-model="selectedPollutionDegree"
multiple
clearable
- placeholder="閫夋嫨鑳屾櫙"
+ placeholder="閫夋嫨姹℃煋鑳屾櫙"
size="small"
style="width: 300px"
>
@@ -154,6 +154,7 @@
class="el-button-custom"
size="small"
@click="handleMixClick"
+ :disabled="selectedfusionData.length < 2"
>
{{ '铻嶅悎鍒嗘瀽' }}
</el-button>
@@ -484,59 +485,17 @@
let mixTag;
function handleMixClick() {
- // mixActive.value = !mixActive.value;
const tags = selectedfusionData.value.map((v) => v.id);
satelliteGrid.changeVisibility({
showGridViews: false,
showDataTxt: false,
showRankTxt: false
});
- // if (mixActive.value) {
gridApi.mixUnderwayGridData(props.groupId, tags).then((res) => {
mixTag = satelliteGrid.mixGrid2({ tags, gridDataDetailList: res.data });
satelliteGrid.setDefaultGridClickEvent([mixTag]);
gridCtrls.value = [satelliteGrid];
});
-
- // satelliteGrid.setGridEvent([mixTag], 'click', (gridCell, gridDataDetail) => {
- // gridStore.selectedGridCellAndDataDetail = {
- // gridCell,
- // gridDataDetail
- // };
- // });
- // gridCtrls.value = [satelliteGrid];
- // } else {
- // satelliteGrid.changeVisibility({
- // tags,
- // showGridViews: true
- // });
- // }
-}
-
-let heatTag;
-const heatMapSearchLength = 4;
-function handleHeatMapClick() {
- heatActive.value = !heatActive.value;
- satelliteGrid.changeVisibility({
- showGridViews: false,
- showDataTxt: false,
- showRankTxt: false
- });
- if (heatActive.value) {
- const data = satelliteGrid.gridDataDetailMap.get(mixTag);
- gridApi
- .buildUnderwayHeatmap(props.groupId, data, heatMapSearchLength)
- .then((res) => {
- heatTag = satelliteGrid.drawHeatGrid2(mixTag, res.data);
- satelliteGrid.setDefaultGridClickEvent([heatTag]);
- gridCtrls.value = [satelliteGrid];
- });
- } else {
- satelliteGrid.changeVisibility({
- tags: [mixTag],
- showGridViews: true
- });
- }
}
function handleHeatMapSearchClick() {
@@ -573,14 +532,17 @@
function handleFusionDelete(index, tag) {
const f = selectedfusionData.value.find((v) => v.id == tag);
if (f) {
- // const i = selectedfusionData.value.indexOf(f);
- // selectedfusionData.value.splice(i, 1);
+ const i = selectedfusionData.value.indexOf(f);
+ selectedfusionData.value.splice(i, 1);
+ lastSelectedfusionData.value = useCloned(
+ selectedfusionData.value
+ ).cloned.value;
tableRef.value.toggleRowSelection(f, false);
}
}
function handleSelectionChange(val) {
- console.log(val);
+ // console.log(val);
const deleted = lastSelectedfusionData.value.filter((v) => {
return !val.find((t) => t.id == v.id);
@@ -660,7 +622,7 @@
}
});
- lastSelectedfusionData.value = useCloned(val).cloned.value
+ lastSelectedfusionData.value = useCloned(val).cloned.value;
selectedfusionData.value = val;
}
diff --git a/src/views/underwaymix/component/GridStyleTool.vue b/src/views/underwaymix/component/GridStyleTool.vue
index 7429e04..0c5b79d 100644
--- a/src/views/underwaymix/component/GridStyleTool.vue
+++ b/src/views/underwaymix/component/GridStyleTool.vue
@@ -181,6 +181,12 @@
tag: v[0],
extData: v[1].extData,
show: v[1].show,
+ showRank: v[1].showRank,
+ showData: v[1].showData,
+ showCustomColor: v[1].showCustomColor,
+ showHeatMap: v[1].showHeatMap,
+ highlightFusionGrid: true,
+ // ...v[1],
opacityValue: 1
};
})
@@ -274,10 +280,21 @@
showDataTxt: false,
showRankTxt: false
});
+ // gridCtrlList.value.forEach((v) => {
+ // v.views.forEach((view) => {
+ // view.show = false;
+ // view.showData = false;
+ // view.showRank = false;
+ // });
+ // });
if (e) {
const data = _satelliteGrid.gridDataDetailMap.get(value.tag);
gridApi
- .buildUnderwayHeatmap(_satelliteGrid.gridGroupId, data, heatMapSearchLength)
+ .buildUnderwayHeatmap(
+ _satelliteGrid.gridGroupId,
+ data,
+ heatMapSearchLength
+ )
.then((res) => {
heatTag = _satelliteGrid.drawHeatGrid2(value.tag, res.data);
_satelliteGrid.setDefaultGridClickEvent([heatTag]);
diff --git a/src/views/underwaymix/component/ItemGridStyleCtrl.vue b/src/views/underwaymix/component/ItemGridStyleCtrl.vue
new file mode 100644
index 0000000..8dd0298
--- /dev/null
+++ b/src/views/underwaymix/component/ItemGridStyleCtrl.vue
@@ -0,0 +1,114 @@
+<template>
+ <el-row justify="space-between" align="middle">
+ <div>
+ <span v-if="value.extData.type == 0">{{ value.tag + '.' }}</span>
+ {{ value.extData.name }}
+ </div>
+ <el-button
+ class="el-button-custom"
+ type="primary"
+ icon="Close"
+ circle
+ size="small"
+ @click="handleCloseClick(i, t, value)"
+ />
+ </el-row>
+ <el-row class="m-t-8" justify="space-between">
+ <CheckButton
+ :loading="gridLoading"
+ v-model="value.show"
+ active-text="鏄剧ず缃戞牸"
+ inactive-text="闅愯棌缃戞牸"
+ @change="(e) => handleGridClick(e, i, value)"
+ >
+ </CheckButton>
+ <CheckButton
+ :loading="rankLoading"
+ v-model="value.showRank"
+ active-text="鏄剧ず鎺掑悕"
+ inactive-text="闅愯棌鎺掑悕"
+ :default-value="false"
+ @change="(e) => handleRankClick(e, i, value)"
+ >
+ </CheckButton>
+ <CheckButton
+ :loading="dataLoading"
+ v-model="value.showData"
+ active-text="鏄剧ず鏁版嵁"
+ inactive-text="闅愯棌鏁版嵁"
+ :default-value="false"
+ @change="(e) => handleDataClick(e, i, value)"
+ >
+ </CheckButton>
+ </el-row>
+ <el-row class="m-t-8" justify="space-between">
+ <CheckButton
+ :loading="colorLoading"
+ v-model="value.showCustomColor"
+ active-text="缁樺埗瀵规瘮鑹�"
+ inactive-text="缁樺埗鏍囧噯鑹�"
+ :default-value="false"
+ @change="(e) => handleColorClick(e, i, value)"
+ >
+ </CheckButton>
+ <CheckButton
+ :loading="heatMapLoading"
+ v-model="value.showHeatMap"
+ active-text="椋庨櫓鐑姏鍥�"
+ inactive-text="椋庨櫓鐑姏鍥�"
+ :default-value="false"
+ @change="(e) => handleHeatMapClick(e, i, value)"
+ >
+ </CheckButton>
+ <CheckButton
+ :loading="underwayLoading"
+ v-if="value.extData.type == 0"
+ v-model="value.showUnderway"
+ active-text="鏄剧ず璧拌埅杞ㄨ抗"
+ inactive-text="闅愯棌璧拌埅杞ㄨ抗"
+ :default-value="false"
+ @change="(e) => handleUnderwayClick(e, i, value)"
+ >
+ </CheckButton>
+ <CheckButton
+ :loading="highlightLoading"
+ v-if="value.extData.type == 1"
+ v-model="value.highlightFusionGrid"
+ active-text="楂樹寒铻嶅悎缃戞牸"
+ :default-value="true"
+ @change="(e) => handleHighlightGridClick(e, i, value)"
+ >
+ </CheckButton>
+ </el-row>
+ <el-form-item label="閫忔槑搴�">
+ <el-slider
+ v-model="value.opacityValue"
+ :min="0"
+ :max="1"
+ :step="0.1"
+ show-stops
+ @change="(e) => handleOpacityChange(e, i, value)"
+ style="width: 150px"
+ />
+ <el-input-number
+ class="m-l-16"
+ size="small"
+ v-model="value.opacityValue"
+ :min="0"
+ :max="1"
+ :step="0.1"
+ @change="(e) => handleOpacityChange(e, i, value)"
+ />
+ </el-form-item>
+ <el-divider />
+</template>
+<script setup>
+import { ref, reactive, onMounted, onUnmounted, computed, toRaw } from 'vue';
+
+const props = defineProps({
+ value: {
+ type: Object,
+ default: () => {}
+ }
+});
+</script>
--
Gitblit v1.9.3