¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | <template> |
| | | <el-dialog |
| | | :model-value="modelValue" |
| | | @opened="handleChange(true)" |
| | | @closed="handleChange(false)" |
| | | :show-close="false" |
| | | :destroy-on-close="true" |
| | | :width="width" |
| | |
| | | export default { |
| | | props: { |
| | | // æ¾éæ§å¶ |
| | | modelValue: Boolean, |
| | | // modelValue: Boolean, |
| | | // æ é¢ |
| | | title: String, |
| | | // 宽度 |
| | |
| | | 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> |
| | |
| | | <CardDialog |
| | | :title="title" |
| | | :model-value="modelValue" |
| | | @update:modelValue="handleChange" |
| | | :width="400" |
| | | @handleChange="handleChange" |
| | | > |
| | | <el-row justify="center"> |
| | | <div class="m-v-16">{{ msg }}</div> |
| | |
| | | <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" |
| | |
| | | </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'; |
| | |
| | | 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: [ |
| | |
| | | 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; |
| | | 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({ |
| | |
| | | }, |
| | | cancel: { |
| | | do: () => { |
| | | visible.value = false; |
| | | emits('update:modelValue', false); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // çå¬ä¼ å
¥çä»»å¡ä¿¡æ¯ï¼å¨æ´æ°æ¨¡å¼ä¸ï¼å°ä»»å¡ä¿¡æ¯æ å°å°è¡¨åä¸ |
| | | 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', |
| | |
| | | dCode: '310106', |
| | | dName: 'éå®åº' |
| | | }; |
| | | } else { |
| | | formObj.value = {}; |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | |
| | | > |
| | | ä»»å¡ç®¡ç |
| | | </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 |
| | |
| | | /> |
| | | <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" |
| | |
| | | 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> |
| | |
| | | <!-- <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"> |
| | |
| | | msg="确认æ¯å¦å é¤è¯¥èµ°èªä»»å¡" |
| | | confirmText="å é¤" |
| | | ></MessageBox> |
| | | <MissionEdit |
| | | v-model="dialogVisible" |
| | | width="30%" |
| | | :mode="editMode" |
| | | :mission="selectedMission" |
| | | ></MissionEdit> |
| | | </template> |
| | | <script> |
| | | import moment from 'moment'; |
| | |
| | | return { loading, fetchData }; |
| | | }, |
| | | props: { |
| | | modelValue: Boolean |
| | | // modelValue: Boolean |
| | | }, |
| | | emits: ['update:modelValue'], |
| | | // emits: ['update:modelValue'], |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | msgBoxVisible: false, |
| | | onConfirm: undefined |
| | | onConfirm: undefined, |
| | | // ä»»å¡ç¼è¾æ¨¡å¼ï¼createï¼å建æ°ä»»å¡ï¼updateï¼ç¼è¾å·²æä»»å¡ |
| | | 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 = () => { |
| | |
| | | |
| | | gridDataDetail; |
| | | |
| | | infoMap = new Map(); |
| | | |
| | | // å°å¾ç½æ ¼å¯¹è±¡Mapç»æï¼åå¨å¯¹åºkeyä¸çç½æ ¼å¯¹è±¡ãç½æ ¼åæ ä¿¡æ¯ |
| | | mapViewsMap = new Map(); |
| | | |
| | | gridStateMap = new Map(); |
| | | |
| | | // ç½æ ¼æ°æ®Mapç»æï¼åå¨å¯¹åºkeyä¸çç½æ ¼çæµæ°æ®ä¿¡æ¯ |
| | | gridDataDetailMap = new Map(); |
| | |
| | | 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); |
| | | } |
| | |
| | | tags.forEach((t) => { |
| | | this.mapViewsMap.delete(t); |
| | | this.gridDataDetailMap.delete(t); |
| | | this.gridStateMap.delete(t); |
| | | }); |
| | | } |
| | | |
| | |
| | | _mapViewsList.forEach((v) => { |
| | | if (v.dataTxt) { |
| | | map.add(v.dataTxt); |
| | | v.show = true; |
| | | v.showData = true; |
| | | } |
| | | }); |
| | | } else { |
| | |
| | | _mapViewsList.forEach((v) => { |
| | | if (v.dataTxt) { |
| | | map.remove(v.dataTxt); |
| | | v.show = false; |
| | | v.showData = false; |
| | | } |
| | | }); |
| | | } |
| | |
| | | _mapViewsList.forEach((v) => { |
| | | if (v.rankTxt) { |
| | | map.add(v.rankTxt); |
| | | v.show = true; |
| | | v.showRank = true; |
| | | } |
| | | }); |
| | | } else { |
| | |
| | | _mapViewsList.forEach((v) => { |
| | | if (v.rankTxt) { |
| | | map.remove(v.rankTxt); |
| | | v.show = false; |
| | | v.showRank = false; |
| | | } |
| | | }); |
| | | } |
| | |
| | | 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, |
| | |
| | | }); |
| | | this.changeGridColor({ tags: [mixTag], isMixGridHighlight }); |
| | | } else { |
| | | // const mixMapViews = this._createNewMapViews(); |
| | | // æ ¹æ®æ ç¾tagï¼è·å对åºå¤ç»ç½æ ¼æ°æ® |
| | | let { _gridDataDetailList } = this._getMapViews(...tags); |
| | | const _dataMap = new Map(); |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | show: true |
| | | }; |
| | | } |
| | | |
| | | _createNewGridState({ extData }) { |
| | | return { |
| | | type: undefined, |
| | | name: '', |
| | | showGrid: true, |
| | | showRank: false, |
| | | showData: false, |
| | | showCustomColor: false, |
| | | showHeatMap: false, |
| | | highlightFusionGrid: false, |
| | | showUnderway: false, |
| | | opacityValue: 1 |
| | | }; |
| | | } |
| | | } |
| | |
| | | v-model="selectedPollutionDegree" |
| | | multiple |
| | | clearable |
| | | placeholder="éæ©èæ¯" |
| | | placeholder="éæ©æ±¡æèæ¯" |
| | | size="small" |
| | | style="width: 300px" |
| | | > |
| | |
| | | class="el-button-custom" |
| | | size="small" |
| | | @click="handleMixClick" |
| | | :disabled="selectedfusionData.length < 2" |
| | | > |
| | | {{ 'èååæ' }} |
| | | </el-button> |
| | |
| | | |
| | | 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() { |
| | |
| | | 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); |
| | |
| | | } |
| | | }); |
| | | |
| | | lastSelectedfusionData.value = useCloned(val).cloned.value |
| | | lastSelectedfusionData.value = useCloned(val).cloned.value; |
| | | selectedfusionData.value = val; |
| | | } |
| | | |
| | |
| | | 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 |
| | | }; |
| | | }) |
| | |
| | | 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]); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |