From dc16b68e74c18b617c8f79d82fd3c3306badbcbe Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 21 十一月 2024 17:22:23 +0800 Subject: [PATCH] 修复场景报告中设备图片选择弹框错误问题 --- src/views/fysp/data-product/ProdSceneReport.vue | 46 ++++++++++----- src/views/fysp/check/ProCheck.vue | 39 +------------ src/views/fysp/check/ProCheckProxy.js | 34 +++++++++++ src/components.d.ts | 10 +++ src/components/SideList.vue | 4 5 files changed, 80 insertions(+), 53 deletions(-) diff --git a/src/components.d.ts b/src/components.d.ts index 611607b..d9c2fb8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -20,6 +20,7 @@ ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElButton: typeof import('element-plus/es')['ElButton'] + ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElCalendar: typeof import('element-plus/es')['ElCalendar'] ElCard: typeof import('element-plus/es')['ElCard'] ElCascader: typeof import('element-plus/es')['ElCascader'] @@ -35,6 +36,9 @@ ElDialog: typeof import('element-plus/es')['ElDialog'] ElDivider: typeof import('element-plus/es')['ElDivider'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElEmpty: typeof import('element-plus/es')['ElEmpty'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] @@ -43,14 +47,18 @@ ElImage: typeof import('element-plus/es')['ElImage'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElLink: typeof import('element-plus/es')['ElLink'] ElMain: typeof import('element-plus/es')['ElMain'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup'] ElOption: typeof import('element-plus/es')['ElOption'] + ElPageHeader: typeof import('element-plus/es')['ElPageHeader'] ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm'] ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRow: typeof import('element-plus/es')['ElRow'] @@ -61,6 +69,7 @@ ElStep: typeof import('element-plus/es')['ElStep'] ElSteps: typeof import('element-plus/es')['ElSteps'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] @@ -68,6 +77,7 @@ ElTag: typeof import('element-plus/es')['ElTag'] ElText: typeof import('element-plus/es')['ElText'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTransfer: typeof import('element-plus/es')['ElTransfer'] ElTree: typeof import('element-plus/es')['ElTree'] ElUpload: typeof import('element-plus/es')['ElUpload'] Footer: typeof import('./components/core/Footer.vue')['default'] diff --git a/src/components/SideList.vue b/src/components/SideList.vue index dc3f4ff..846be3d 100644 --- a/src/components/SideList.vue +++ b/src/components/SideList.vue @@ -1,5 +1,5 @@ <template> - <div class="state-label"> + <div v-if="legend" class="state-label"> <el-input v-model="filterText" icon="Search" @@ -7,7 +7,7 @@ placeholder="鍏抽敭瀛楃瓫閫�" clearable /> - <el-tooltip v-if="legend" placement="bottom-start" effect="dark"> + <el-tooltip placement="bottom-start" effect="dark"> <template #content> <el-space> <el-space v-for="(item, index) in stateLabels" :key="index" :size="1"> diff --git a/src/views/fysp/check/ProCheck.vue b/src/views/fysp/check/ProCheck.vue index 9cda78a..92e3617 100644 --- a/src/views/fysp/check/ProCheck.vue +++ b/src/views/fysp/check/ProCheck.vue @@ -239,7 +239,7 @@ taskApi.getSubtaskSummary(param).then((res) => { const list = []; res.forEach((s) => { - const t = this.getSubtaskType(s); + const t = ProCheckProxy.getSubtaskType(s); list.push({ status: s.subtask.status, type: t, @@ -254,39 +254,6 @@ this.mainLoading = false; } }); - }, - //鑾峰彇浠诲姟闂鐨勫鏍告儏鍐� - getSubtaskType(s) { - let type = 0; - // 鏃犻棶棰� - if (s.proNum == 0) { - type = 0; - } - // 闂鏈鏍� - else if (s.proCheckedNum == 0) { - type = 1; - } - // 闂閮ㄥ垎瀹℃牳 - else if (s.proCheckedNum < s.proNum) { - type = 2; - } - // 鏈暣鏀� - else if (s.changeNum < s.proNum) { - type = 3; - } - // 鏁存敼鏈鏍� - else if (s.changeCheckedNum == 0) { - type = 4; - } - // 鏁存敼閮ㄥ垎瀹℃牳 - else if (s.changeCheckedNum < s.changeNum) { - type = 5; - } - // 瀹屽叏瀹℃牳 - else { - type = 6; - } - return type; }, //鐐瑰嚮宸︿晶鑿滃崟浠诲姟浜嬩欢 chooseSubtask(s) { @@ -309,7 +276,7 @@ // 闂鍗$墖缁勪欢涓诲姩鍙戣捣鍒锋柊鐖剁粍浠舵暟鎹� updateSubtask(refresh = false) { this.curSubtask.data.proCheckedNum++; - this.curSubtask.type = this.getSubtaskType(this.curSubtask.data); + this.curSubtask.type = ProCheckProxy.getSubtaskType(this.curSubtask.data); if (this.proAddOrUpdDialogVisible) { this.proAddOrUpdDialogVisible = false; } @@ -351,7 +318,7 @@ this.curSubtask.data.proCheckedNum = status.proCheckedNum this.curSubtask.data.changeNum = status.changeNum this.curSubtask.data.changeCheckedNum = status.changeCheckedNum - this.curSubtask.type = this.getSubtaskType(this.curSubtask.data) + this.curSubtask.type = ProCheckProxy.getSubtaskType(this.curSubtask.data) } }, mounted() {} diff --git a/src/views/fysp/check/ProCheckProxy.js b/src/views/fysp/check/ProCheckProxy.js index 533d9d6..938422f 100644 --- a/src/views/fysp/check/ProCheckProxy.js +++ b/src/views/fysp/check/ProCheckProxy.js @@ -219,6 +219,40 @@ } }, + //鑾峰彇浠诲姟闂鐨勫鏍告儏鍐� + getSubtaskType(s) { + let type = 0; + // 鏃犻棶棰� + if (s.proNum == 0) { + type = 0; + } + // 闂鏈鏍� + else if (s.proCheckedNum == 0) { + type = 1; + } + // 闂閮ㄥ垎瀹℃牳 + else if (s.proCheckedNum < s.proNum) { + type = 2; + } + // 鏈暣鏀� + else if (s.changeNum < s.proNum) { + type = 3; + } + // 鏁存敼鏈鏍� + else if (s.changeCheckedNum == 0) { + type = 4; + } + // 鏁存敼閮ㄥ垎瀹℃牳 + else if (s.changeCheckedNum < s.changeNum) { + type = 5; + } + // 瀹屽叏瀹℃牳 + else { + type = 6; + } + return type; + }, + /** * 闂瀹℃牳鍚庣姸鎬佸彉鎹� * @param {String} s 褰撳墠闂鐘舵�� diff --git a/src/views/fysp/data-product/ProdSceneReport.vue b/src/views/fysp/data-product/ProdSceneReport.vue index dd38e5c..2f2a140 100644 --- a/src/views/fysp/data-product/ProdSceneReport.vue +++ b/src/views/fysp/data-product/ProdSceneReport.vue @@ -5,6 +5,7 @@ </template> <template #aside> <SideList + legend :items="subtasks" :loading="sideLoading" @item-click="chooseSubtask" @@ -12,6 +13,7 @@ </template> <template #main> <el-scrollbar class="el-scrollbar" v-loading="mainLoading"> + <div></div> <CompSceneConstructionInfo title="A銆佸熀鏈俊鎭�" :scene="formScene" @@ -80,7 +82,15 @@ @submit="handleSelectAnyPhoto" :defaultFile="[sceneImg]" ></ArbitraryPhoto> - <el-dialog + <FYImageSelectDialog + v-model:dialog-visible="deiveceImgDialog" + title="璁惧鍥剧墖" + :max-select="1" + :typeList="showDeviceTypeList" + :typeImgMap="showDeviceImgMap" + @submit="handleSelectDevicePhoto" + ></FYImageSelectDialog> + <!-- <el-dialog title="璁惧鍥剧墖" width="66%" v-model="deiveceImgDialog" @@ -88,10 +98,10 @@ > <CompDevicePhono @selectPhonoEvent="handleSelectDevicePhoto" - :imgPathsDataSource="showDeviceImgList" + :imgPathsDataSource="showDeviceImgMap" > </CompDevicePhono> - </el-dialog> + </el-dialog> --> </template> <script setup> import { ref, computed } from 'vue'; @@ -105,10 +115,10 @@ import { enumDevice, toLabel } from '@/enum/device/device'; import { exportDocx } from '@/utils/doc'; import right_triangle from '@/assets/image/right_triangle.png'; +import ProCheckProxy from '@/views/fysp/check/ProCheckProxy'; import CompSceneConstructionInfo from '@/views/fysp/scene/CompSceneConstructionInfo.vue'; import ArbitraryPhoto from '@/views/fysp/check/components/ArbitraryPhoto.vue'; -import CompDevicePhono from '@/views/fysp/check/components/CompDevicePhono.vue'; import CompImgInfo from '@/views/fysp/data-product/components/CompImgInfo.vue'; import CompProblemTable from './components/CompProblemTable.vue'; import dayjs from 'dayjs'; @@ -146,8 +156,9 @@ taskApi.getSubtaskSummary(param).then((res) => { const list = []; res.forEach((s) => { - const t = getSubtaskType(s); + const t = ProCheckProxy.getSubtaskType(s); list.push({ + status: s.subtask.status, type: t, title: s.stName, categoly: s.stPlanTime.split('T')[0], @@ -210,36 +221,37 @@ // 璁惧鍥剧墖閫夋嫨瀵硅瘽妗� const deiveceImgDialog = ref(false); const showDeviceIndex = ref(0); -const showDeviceImgList = ref([]); +const showDeviceTypeList = ref([]); +const showDeviceImgMap = ref(new Map()); // 璁惧鍥剧墖鍒楄〃 const deviceList = ref([]); function showDevicePhotoDialog(device, index) { showDeviceIndex.value = index; deiveceImgDialog.value = true; - showDeviceImgList.value = []; + showDeviceTypeList.value = [ + { typeId: device.topTypeId, typeName: device._deviceTypeName } + ]; + showDeviceImgMap.value.clear(); let imgList = []; device._status .map((s) => s._picUrls) .forEach((pics) => { imgList = imgList.concat( pics.map((p) => { - return { - topTypeId: device.topTypeId, - _picUrl: p - }; + return { url: p }; }) ); }); // console.log(imgList); - showDeviceImgList.value = imgList; + showDeviceImgMap.value.set(device.topTypeId, imgList); } function handleSelectDevicePhoto(data) { deiveceImgDialog.value = false; if (data.length > 0) { - deviceList.value[showDeviceIndex.value]._showStatusPic = data[0]._picUrl; + deviceList.value[showDeviceIndex.value]._showStatusPic = data[0].url; } } @@ -354,8 +366,12 @@ _showStatusPic_1: d1._showStatusPic ? d1._showStatusPic : right_triangle, _deviceTypeName_1: d1._deviceTypeName, // hasPic2: d2 ? true : false, - _showStatusPic_2: d2 ? (d2._showStatusPic ? d2._showStatusPic : right_triangle) : right_triangle, - _deviceTypeName_2: d2 ? d2._deviceTypeName : '', + _showStatusPic_2: d2 + ? d2._showStatusPic + ? d2._showStatusPic + : right_triangle + : right_triangle, + _deviceTypeName_2: d2 ? d2._deviceTypeName : '' }); } const param = { -- Gitblit v1.9.3