| | |
| | | BaseMap: typeof import('./components/map/BaseMap.vue')['default'] |
| | | BaseTable: typeof import('./components/BaseTable.vue')['default'] |
| | | CoreHeader: typeof import('./components/core/CoreHeader.vue')['default'] |
| | | ElBadge: typeof import('element-plus/es')['ElBadge'] |
| | | ElButton: typeof import('element-plus/es')['ElButton'] |
| | | ElCalendar: typeof import('element-plus/es')['ElCalendar'] |
| | | ElCard: typeof import('element-plus/es')['ElCard'] |
| | | ElCascader: typeof import('element-plus/es')['ElCascader'] |
| | | ElCol: typeof import('element-plus/es')['ElCol'] |
| | | ElCollapse: typeof import('element-plus/es')['ElCollapse'] |
| | | ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] |
| | | ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] |
| | | ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] |
| | | ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] |
| | | ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] |
| | | ElDivider: typeof import('element-plus/es')['ElDivider'] |
| | | ElEmpty: typeof import('element-plus/es')['ElEmpty'] |
| | | ElForm: typeof import('element-plus/es')['ElForm'] |
| | | ElFormItem: typeof import('element-plus/es')['ElFormItem'] |
| | | ElIcon: typeof import('element-plus/es')['ElIcon'] |
| | | ElImage: typeof import('element-plus/es')['ElImage'] |
| | | ElLink: typeof import('element-plus/es')['ElLink'] |
| | |
| | | <!-- é项 --> |
| | | <!-- 设å¤ç±»å --> |
| | | <el-row> |
| | | <el-col> |
| | | <el-tabs class="child_select" placeholder="设å¤ç±»å" v-model="currSelect.topDeviceTypeId"> |
| | | <el-tabs style="width: 100%" placeholder="设å¤ç±»å" v-model="currSelect.topDeviceTypeId"> |
| | | <el-tab-pane v-for="item in deviceTopTypes" :key="item.id" :name="item.id"> |
| | | <template #label> |
| | | <el-badge :value="item.count" :type="item.count == 0 ? 'danger' : 'primary'"> |
| | |
| | | </template> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-col> |
| | | </el-row> |
| | | <el-collapse v-model="activeNames" style="border: 4px"> |
| | | <el-collapse-item |
| | | <el-scrollbar :height="height" v-loading="loading"> |
| | | <!-- <el-collapse v-model="activeNames" style="border: 4px"> --> |
| | | <!-- <el-collapse-item |
| | | v-for="item in formInfo" |
| | | :key="item.id" |
| | | :name="item.id" |
| | | class="collapse-item-class" |
| | | > |
| | | <template #title> |
| | | <div style="display: flex; width: 100%; justify-content: space-between"> |
| | | <div style=""> |
| | | <el-descriptions style="" :column="3" size="small" border> |
| | | <el-descriptions-item |
| | | width="64px" |
| | | :label="currSelect.topDeviceTypeId == 0 ? 'ç«ç¹åç§°' : '设å¤åç§°'" |
| | | :span="3" |
| | | >{{ item.name || 'æ ' }}</el-descriptions-item |
| | | > |
| | | <el-descriptions-item label="ä¾åºå">{{ |
| | | item.supplier || 'æ ' |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¿ç»´å">{{ |
| | | item.maintainer || 'æ ' |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¿ç»´é¢æ¬¡"> |
| | | > --> |
| | | <!-- <template #title> --> |
| | | <div v-for="item in formInfo" :key="item.id" :name="item.id" class="collapse-item-class"> |
| | | <el-card class="m-b-10"> |
| | | <div style="text-align: start"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <div> |
| | | <el-text>{{ |
| | | (currSelect.topDeviceTypeId == 0 ? 'ç«ç¹åç§°ï¼' : '设å¤åç§°ï¼') + |
| | | (item.name || 'æ ') |
| | | }}</el-text> |
| | | </div> |
| | | <template v-if="item._showMore"> |
| | | <div> |
| | | <el-text>{{ 'ä¾åºåï¼' + (item.supplier || 'æ ') }}</el-text> |
| | | </div> |
| | | <div> |
| | | <el-text>{{ 'è¿ç»´åï¼' + (item.maintainer || 'æ ') }}</el-text> |
| | | </div> |
| | | <el-space> |
| | | <el-text>{{ 'è¿ç»´é¢æ¬¡ï¼' }}</el-text> |
| | | <el-select |
| | | v-model="item.maintainFrequency" |
| | | :disabled="isDisabled" |
| | | style="width: 150px" |
| | | style="width: 100px" |
| | | > |
| | | <el-option |
| | | v-for="frequency of maintainFrequencysArray" |
| | |
| | | :value="frequency.key" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="è¿ç»´äººå">{{ |
| | | item.maintainStaff || 'æ ' |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¿ç»´èç³»æ¹å¼">{{ |
| | | item.maintainTel || 'æ ' |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="åçåå·">{{ |
| | | item.brandModel || 'æ ' |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="è¿è¡ç¶æ"> |
| | | <el-select v-model="item.runningStatus" :disabled="isDisabled" style="width: 150px"> |
| | | </el-space> |
| | | </template> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div> |
| | | <el-text>{{ 'ç±»åï¼' + (item._typename || 'æ ') }}</el-text> |
| | | </div> |
| | | <template v-if="item._showMore"> |
| | | <div> |
| | | <el-text>{{ 'è¿ç»´äººåï¼' + (item.maintainStaff || 'æ ') }}</el-text> |
| | | </div> |
| | | <div> |
| | | <el-text>{{ 'èç³»æ¹å¼ï¼' + (item.maintainTel || 'æ ') }}</el-text> |
| | | </div> |
| | | <div> |
| | | <el-text>{{ 'åçåå·ï¼' + (item.brandModel || 'æ ') }}</el-text> |
| | | </div> |
| | | <el-space> |
| | | <el-text>{{ 'è¿è¡ç¶æï¼' }}</el-text> |
| | | <el-select |
| | | v-model="item.runningStatus" |
| | | :disabled="isDisabled" |
| | | style="width: 100px" |
| | | > |
| | | <el-option |
| | | v-for="status of runStatusArray" |
| | | :key="status.key" |
| | |
| | | :value="status.key" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="ç±»å"> |
| | | {{ item._typename || 'æ ' }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </div> |
| | | |
| | | <div style="display: flex"> |
| | | <!-- <div class="sub-title">{{ item.name }}</div> --> |
| | | <!-- å¾ç --> |
| | | </el-space> |
| | | </template> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row justify="end"> |
| | | <el-link type="success" @click="item._showMore = !item._showMore"> |
| | | <el-icon> |
| | | <Bottom v-if="!item._showMore" /> |
| | | <Top v-else /> |
| | | </el-icon> |
| | | {{ item._showMore ? 'æ¶èµ·æ´å¤' : 'æ´å¤ä¿¡æ¯' }} |
| | | </el-link> |
| | | </el-row> |
| | | <!-- <div style="display: flex"> |
| | | <div class="image-container"> |
| | | <div |
| | | class="block-div" |
| | |
| | | }}</span> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <!-- </template> --> |
| | | <!-- 详ç»å
容å¼å§ --> |
| | | <el-form :model="item" class="form_class"> |
| | | <el-form-item label="ç¶æ"> |
| | | <el-space> |
| | | <div> |
| | | <div>设</div> |
| | | <div>å¤</div> |
| | | <div>ç¶</div> |
| | | <div>æ</div> |
| | | </div> |
| | | <el-tabs tab-position="top"> |
| | | <el-tab-pane |
| | | v-for="(status, i) in item._statusList" |
| | | :label="status.dlCreateTime.slice(0, 10)" |
| | | :key="i" |
| | | > |
| | | <el-form :model="status" class="form-class"> |
| | | <el-form-item label="ä½ç½®" style="margin-bottom: 10px"> |
| | | {{ status.dlLocation }} |
| | | </el-form-item> |
| | | <el-form-item label="å¾ç"> |
| | | <!-- <el-form :model="status" class="form-class"> --> |
| | | <!-- <el-form-item label=""> --> |
| | | <!-- å¾ç --> |
| | | <el-space> |
| | | <div v-if="status._paths && status._paths.length > 0"> |
| | |
| | | </div> |
| | | <el-empty v-else></el-empty> |
| | | </el-space> |
| | | <!-- </el-form-item> --> |
| | | <el-form-item v-if="status.dlLocation" label="ä½ç½®" style="margin-bottom: 10px"> |
| | | {{ status.dlLocation }} |
| | | </el-form-item> |
| | | </el-form> |
| | | <!-- </el-form> --> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-space> |
| | | </el-card> |
| | | </div> |
| | | |
| | | <!-- 详ç»å
å®¹ç»æ --> |
| | | </el-collapse-item> |
| | | </el-collapse> |
| | | <!-- </el-collapse-item> --> |
| | | <!-- </el-collapse> --> |
| | | <!-- ç©ºç¶æ --> |
| | | <el-empty v-if="isEmpty" /> |
| | | </el-scrollbar> |
| | | <!-- </template> |
| | | </CompGenericWrapper> --> |
| | | </template> |
| | | |
| | | <script> |
| | | import { reactive } from 'vue' |
| | | import deviceApi from '@/api/fysp/deviceApi' |
| | | import { $fysp } from '@/api/index' |
| | | import { toLabel } from '@/enum/device/device' |
| | | export default { |
| | | components: {}, |
| | | props: { |
| | | scene: Object |
| | | scene: Object, |
| | | height: { |
| | | type: String, |
| | | default: '70vh' |
| | | } |
| | | }, |
| | | watch: { |
| | | // éæ©æ¹åçå¬ |
| | |
| | | this.getList() |
| | | }, |
| | | deep: true |
| | | }, |
| | | scene(nV, oV) { |
| | | if (nV != oV) { |
| | | this.init() |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | activeNames: [], |
| | | // æ§å¶æ¯å¦å±ç¤ºç©ºç¶æ |
| | | isEmpty: false, |
| | |
| | | }, |
| | | // æ§å¶è¡¨åæ¯å¦å¯ä»¥ç¼è¾ |
| | | isDisabled: true, |
| | | formInfo: {}, |
| | | formInfo: [], |
| | | rules: [], |
| | | // 设å¤ç±»å |
| | | deviceTopTypes: [ |
| | |
| | | ownershipArray: [ |
| | | { key: 0, value: 'è´ä¹°' }, |
| | | { key: 1, value: 'ç§èµ' } |
| | | ], |
| | | scene: {} |
| | | ] |
| | | } |
| | | }, |
| | | |
| | |
| | | showDetail(item) { |
| | | item._isDetail = !item._isDetail |
| | | }, |
| | | init(scene) { |
| | | // ç¶ç»ä»¶ä¸»å¨è°ç¨åå§ååç»ä»¶çæ¹æ³ |
| | | this.scene = scene |
| | | |
| | | init() { |
| | | this.getList() |
| | | this.getTabsCount() |
| | | }, |
| | |
| | | newKey = newKey.charAt(0).toLowerCase() + newKey.slice(1) |
| | | newObj[newKey] = obj[key] |
| | | } |
| | | return newObj |
| | | return reactive(newObj) |
| | | }, |
| | | // æ°å¢å段 |
| | | initFormData(data) { |
| | | data._isDetail = false |
| | | }, |
| | | getList() { |
| | | deviceApi.fetchDevices(this.scene.guid, this.currSelect.topDeviceTypeId).then((result) => { |
| | | this.loading = true |
| | | deviceApi |
| | | .fetchDevices(this.scene.guid, this.currSelect.topDeviceTypeId) |
| | | .then((result) => { |
| | | this.initList() |
| | | if (result.data == null || result.data.length <= 0) { |
| | | this.isEmpty = true |
| | |
| | | element = this.convertKeys(result.data[index]) |
| | | element = this.setDeviceType(element) |
| | | element._picUrls = imgPaths |
| | | for (let index = 0; index < statusData.length; index++) { |
| | | for (let index = statusData.length - 1; index >= 0; index--) { |
| | | const statusItem = statusData[index] |
| | | // 设å¤å¯¹è±¡æ·»å ä¸ä¸ªå±æ§åè¡¨å±æ§ç¨æ¥ä¿å设å¤ç¶æ |
| | | this.saveStatus(element, statusItem) |
| | | element.dlLocation = statusItem.dlLocation |
| | | } |
| | | this.formInfo.push(element) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | .finally(() => (this.loading = false)) |
| | | }, |
| | | setDeviceType(element) { |
| | | var type = [] |
| | |
| | | } |
| | | // æåº |
| | | device._statusList.sort(function (x, y) { |
| | | return new Date(x.dlCreateTime) - new Date(y.dlCreateTime) // éåºï¼ååºååä¹ |
| | | return new Date(y.dlCreateTime) - new Date(x.dlCreateTime) // éåºï¼ååºååä¹ |
| | | }) |
| | | }, |
| | | submit() {}, |
| | |
| | | /* overflow: hidden; ç¡®ä¿å¾çä¸ä¼è¶
åºå®¹å¨ */ |
| | | } |
| | | .pic-style { |
| | | width: 150px; |
| | | height: 150px; |
| | | width: 100px; |
| | | height: 100px; |
| | | border-radius: 4px; |
| | | } |
| | | .card-style { |
| | |
| | | <div> |
| | | <div class="text_title">æ¥ç¨è¿åº¦</div> |
| | | <el-space> |
| | | <el-text style="color: transparent;">æ¥ç¨</el-text> |
| | | <el-text style="color: transparent">æ¥ç¨</el-text> |
| | | <el-progress |
| | | style="width: 350px" |
| | | type="line" |
| | |
| | | box-shadow: var(--el-box-shadow-lighter); |
| | | background-color: rgba(161, 161, 161, 0.068); |
| | | padding: 8px 8px; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .text_title { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import monitor from './monitorDevice'; |
| | | import treatment from './treatmentDevice'; |
| | | import production from './productionDevice'; |
| | | |
| | | function enumDevice() { |
| | | return [ |
| | | { value: 0, label: 'çæ§è®¾å¤' }, |
| | | { value: 1, label: 'æ²»ç设å¤' }, |
| | | { value: 2, label: 'ç产设å¤' } |
| | | ]; |
| | | } |
| | | |
| | | function toLabel(sceneType, deviceType, valueArr) { |
| | | switch (deviceType + '') { |
| | | case '0': |
| | | return monitor.toLabel(sceneType, valueArr); |
| | | case '1': |
| | | return treatment.toLabel(sceneType, valueArr); |
| | | case '2': |
| | | return production.toLabel(sceneType, valueArr); |
| | | } |
| | | } |
| | | |
| | | export { enumDevice, toLabel }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | const dustDeviceType = [ |
| | | { |
| | | label: 'æ¬å°', |
| | | value: '1', |
| | | children: [ |
| | | { |
| | | label: 'çæµè®¾å¤', |
| | | value: '1', |
| | | }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | const fumeDeviceType = [ |
| | | { |
| | | label: 'æ²¹ç', |
| | | value: '1', |
| | | children: [ |
| | | { |
| | | label: 'çæµè®¾å¤', |
| | | value: '1', |
| | | }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | const vocDeviceType = [ |
| | | { |
| | | label: 'VOC', |
| | | value: '1', |
| | | children: [ |
| | | { |
| | | label: 'çæµè®¾å¤', |
| | | value: '1', |
| | | }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | // çæµè®¾å¤ç±»å |
| | | function monitorDevices(sceneType) { |
| | | switch (parseInt(sceneType)) { |
| | | // å·¥å°,ç 头,æ
æç«,å åº |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | case 14: |
| | | return dustDeviceType; |
| | | // é¤é¥® |
| | | case 5: |
| | | return fumeDeviceType; |
| | | // å·¥ä¸ä¼ä¸,汽修 |
| | | case 4: |
| | | case 6: |
| | | return vocDeviceType; |
| | | default: |
| | | return dustDeviceType; |
| | | } |
| | | } |
| | | |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = monitorDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return (o.value + '') == (v + ''); |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = op.children; |
| | | } |
| | | }); |
| | | |
| | | return labelArr; |
| | | } |
| | | |
| | | export default { monitorDevices, toLabel }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | const dustDeviceType = [ |
| | | { |
| | | label: 'éé', |
| | | value: '1', |
| | | children: [ |
| | | { label: 'æææº', value: '1' }, |
| | | { label: 'å车', value: '2' }, |
| | | { label: '履带å', value: '3' }, |
| | | { label: 'é²è½¦', value: '4' }, |
| | | { label: 'å卿º', value: '5' }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | const fumeDeviceType = [ |
| | | { |
| | | label: 'å¨å
·', |
| | | value: '1', |
| | | children: [{ label: 'å¨å
·', value: '1' }], |
| | | }, |
| | | ]; |
| | | |
| | | const vocDeviceType = [ |
| | | { |
| | | label: 'VOC', |
| | | value: '1', |
| | | children: [{ label: 'VOC', value: '1' }], |
| | | }, |
| | | ]; |
| | | |
| | | // ç产设å¤ç±»å |
| | | function productionDevices(sceneType) { |
| | | switch (parseInt(sceneType)) { |
| | | // å·¥å°,ç 头,æ
æç«,å åº |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | case 14: |
| | | return dustDeviceType; |
| | | // é¤é¥® |
| | | case 5: |
| | | return fumeDeviceType; |
| | | // å·¥ä¸ä¼ä¸,汽修 |
| | | case 4: |
| | | case 6: |
| | | return vocDeviceType; |
| | | default: |
| | | return dustDeviceType; |
| | | } |
| | | } |
| | | |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = productionDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return (o.value + '') == (v + ''); |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = op.children; |
| | | } |
| | | }); |
| | | return labelArr; |
| | | } |
| | | |
| | | export default { productionDevices, toLabel }; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | const dustDeviceType = [ |
| | | { |
| | | label: 'æé²', |
| | | value: '1', |
| | | children: [ |
| | | { label: 'ç¯ä¿æ´æ°´è½¦ï¼å¤§åéçµå¨ï¼', value: '1' }, |
| | | { label: 'çµå¨é¾ç®è½¦', value: '2' }, |
| | | { label: 'çµå¨æ´æ°´è½¦ï¼å°åï¼', value: '3' }, |
| | | { label: 'é¾ç®è½¦ï¼åºå®æè½®å¼ï¼', value: '4' }, |
| | | { label: 'èªå¨å²æ´è£
ç½®ï¼å°éå¼ï¼', value: '5' }, |
| | | { label: '髿æ´è½®æº', value: '6' }, |
| | | { label: 'é«åæ°´æª', value: '7' }, |
| | | { label: 'æ®éæ°´ç®¡ææ¶é²æ ', value: '8' }, |
| | | { label: 'å¡åå·æ·', value: '9' }, |
| | | { label: 'å´å¢å·æ·', value: '10' }, |
| | | { label: 'æ¬å°çæµä¸å·æ·èå¨', value: '11' }, |
| | | { label: 'å åºå·æ·', value: '12' }, |
| | | { label: 'ç产åºå·æ·', value: '13' }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | const fumeDeviceType = [ |
| | | { |
| | | label: 'åå', |
| | | value: '1', |
| | | children: [{ label: 'æ²¹çåå', value: '1' }], |
| | | }, |
| | | ]; |
| | | |
| | | const vocDeviceType = [ |
| | | { |
| | | label: 'åå', |
| | | value: '1', |
| | | children: [{ label: 'åºåºåå', value: '1' }], |
| | | }, |
| | | ]; |
| | | |
| | | // æ²»ç设å¤ç±»å |
| | | function treatmentDevices(sceneType) { |
| | | switch (parseInt(sceneType)) { |
| | | // å·¥å°,ç 头,æ
æç«,å åº |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | case 14: |
| | | return dustDeviceType; |
| | | // é¤é¥® |
| | | case 5: |
| | | return fumeDeviceType; |
| | | // å·¥ä¸ä¼ä¸,汽修 |
| | | case 4: |
| | | case 6: |
| | | return vocDeviceType; |
| | | default: |
| | | return dustDeviceType; |
| | | } |
| | | } |
| | | |
| | | function toLabel(sceneType, valueArr) { |
| | | const labelArr = []; |
| | | let options = treatmentDevices(sceneType); |
| | | valueArr.forEach(v => { |
| | | if (options) { |
| | | const op = options.find(o => { |
| | | return (o.value + '') == (v + ''); |
| | | }); |
| | | labelArr.push(op.label); |
| | | options = op.children; |
| | | } |
| | | }); |
| | | return labelArr; |
| | | } |
| | | |
| | | export default { treatmentDevices, toLabel }; |
| | |
| | | </el-col> |
| | | <el-col :span="7" class="page-right"> |
| | | <el-scrollbar height="var(--fy-body-height)" class="p-events-auto"> |
| | | <SupervisionVisual></SupervisionVisual> |
| | | <ManagementView></ManagementView> |
| | | </el-scrollbar> |
| | | </el-col> |
| | | </el-row> |
| | | <SupervisionVisual class="supervision-view"></SupervisionVisual> |
| | | <!-- <SupervisionVisual class="supervision-view"></SupervisionVisual> --> |
| | | |
| | | <WorkStream class="work-stream"></WorkStream> |
| | | <!-- <ProblemTrack class="problem-track"></ProblemTrack> --> |
| | |
| | | |
| | | import { useSubtaskStore } from '@/stores/subtask.js' |
| | | |
| | | import taskApi from '@/api/fysp/taskApi.js' |
| | | |
| | | /** |
| | | * ä»»å¡å®ææ
åµ |
| | | */ |
| | |
| | | const subtaskStore = useSubtaskStore() |
| | | const tasks = ref([]) |
| | | const sceneTaskMap = ref(new Map()) |
| | | const subtaskLoading = ref(false) |
| | | |
| | | function onGetTaskInfo(tInfoList) { |
| | | const resList = [] |
| | |
| | | tasks.value = resList |
| | | } |
| | | |
| | | const area = { |
| | | provincecode: null, |
| | | provincename: '䏿µ·å¸', |
| | | citycode: undefined, |
| | | cityname: undefined, |
| | | districtcode: undefined, |
| | | districtname: undefined, |
| | | starttime: '2025-06-01 00:00:00', |
| | | endtime: '2025-06-30 23:59:59', |
| | | scensetypeid: undefined |
| | | } |
| | | function cal() { |
| | | subtaskStore.onAllTaskRefreshed(onGetTaskInfo) |
| | | subtaskLoading.value = true |
| | | taskApi |
| | | .fetchTopTaskProgress(area) |
| | | .then((res) => { |
| | | if (res.data.length == 0) return |
| | | onGetTaskInfo(res.data) |
| | | }) |
| | | .finally(() => (subtaskLoading.value = false)) |
| | | // subtaskStore.onAllTaskRefreshed(onGetTaskInfo) |
| | | } |
| | | |
| | | onMounted(() => { |
| | |
| | | ></FYImageSelectDialog> |
| | | </div> |
| | | <div v-show="value == '设å¤è®¾æ½'"> |
| | | |
| | | <SceneDevice :scene="scene" height="500px"></SceneDevice> |
| | | </div> |
| | | </el-card> |
| | | </el-scrollbar> |
| | |
| | | ></OptionLocation> |
| | | <OptionSceneType |
| | | :type="2" |
| | | :width="120" |
| | | :width="100" |
| | | :initValue="false" |
| | | v-model="sceneType" |
| | | ></OptionSceneType> |