From 71030e1f80635b7332136a488bc2cc8bd36fc04c Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期二, 19 十一月 2024 11:40:37 +0800 Subject: [PATCH] Merge branch 'hc-dataproduct-v1112' into lsf-dataproduct-1024 --- src/views/fysp/check/components/CompProblemAddOrUpd.vue | 434 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 262 insertions(+), 172 deletions(-) diff --git a/src/views/fysp/check/components/CompProblemAddOrUpd.vue b/src/views/fysp/check/components/CompProblemAddOrUpd.vue index d901b6a..91ba7d2 100644 --- a/src/views/fysp/check/components/CompProblemAddOrUpd.vue +++ b/src/views/fysp/check/components/CompProblemAddOrUpd.vue @@ -1,8 +1,28 @@ <template> <div class="main-container"> <el-form :model="problem" label-width="auto" style="max-width: 95%"> + <el-form-item label="闂浣嶇疆" prop="locationid"> + <el-select + v-model="deepCopyProblem.locationid" + @change="onProLocationChange" + class="row" + :disabled="readonly" + > + <el-option + v-for="item in posList" + :key="item.index" + :label="item.text" + :value="item.index" + /> + </el-select> + </el-form-item> <el-form-item label="闂绫诲瀷" prop="proType"> - <el-select v-model="proType" @change="onProTypeChange" class="row" :disabled="readonly"> + <el-select + v-model="proType" + @change="onProTypeChange" + class="row" + :disabled="readonly" + > <el-option v-for="item in problemTypeOptions" :key="item.typeid" @@ -22,32 +42,7 @@ v-for="item in descriptionOptions" :key="item.guid" :label="item.description" - :value="item.guid" - /> - </el-select> - </el-form-item> - <el-form-item label="闂浣嶇疆" prop="locationid"> - <el-select - v-model="deepCopyProblem.locationid" - @change="onProLocationChange" - class="row" - :disabled="readonly" - > - <el-option - v-for="item in posList" - :key="item.index" - :label="item.text" - :value="item.index" - /> - </el-select> - </el-form-item> - <el-form-item label="闂寤鸿" prop="advise"> - <el-select v-model="deepCopyProblem.advise" class="row" :disabled="readonly"> - <el-option - v-for="item in adviseOptions" - :key="item.adGuid" - :label="item.adName" - :value="item.adName" + :value="item.description" /> </el-select> </el-form-item> @@ -58,15 +53,66 @@ @change="onProRemarkChange" class="row" placeholder="璇疯緭鍏�" + :disabled="readonly" + /> + </el-form-item> + <el-form-item label="闂寤鸿" prop="advise"> + <el-select + v-model="deepCopyProblem.advise" + class="row" + :disabled="readonly" + @change="onProAdviseChange" + > + <el-option + v-for="item in adviseOptions" + :key="item.adGuid" + :label="item.adName" + :value="item.adName" + /> + </el-select> + </el-form-item> + <el-form-item + v-show="deepCopyProblem.advise && deepCopyProblem.advise != ''" + label="闂寤鸿淇" + prop="_adviseEdit" + :disabled="false" + > + <el-input + v-model="deepCopyProblem._adviseEdit" + type="textarea" + @change="onProAdviseEditChange" + class="row" + placeholder="璇疯緭鍏ラ棶棰樺缓璁慨姝�" + :disabled="readonly" /> </el-form-item> <div class="t-card_item"> 闂鍥剧墖 <div> - <el-button @click="chosePicFromAnyPic" v-show="!readonly">浠庝换鎰忓浘鐗囬�夊彇</el-button> - <el-button @click="chosePicFromDevicePic" v-show="!readonly">浠庤澶囧浘鐗囬�夊彇</el-button> - <el-button @click="chosePicFromLedgerPic" v-show="!readonly">浠庡彴璐﹂�夊彇</el-button> - <el-button @click="choseChangePic" v-show="!readonly">浠庢枃浠跺す閫夊彇</el-button> + <el-button + @click="chosePicFromAnyPic" + v-show="!readonly" + :disabled="fileList.length >= 3" + >浠庡満鏅浘鐗囬�夊彇</el-button + > + <el-button + @click="chosePicFromDevicePic" + v-show="!readonly" + :disabled="fileList.length >= 3" + >浠庤澶囧浘鐗囬�夊彇</el-button + > + <el-button + @click="chosePicFromLedgerPic" + v-show="!readonly" + :disabled="fileList.length >= 3" + >浠庡彴璐﹂�夊彇</el-button + > + <el-button + @click="choseChangePic" + v-show="!readonly" + :disabled="fileList.length >= 3" + >浠庢枃浠跺す閫夊彇</el-button + > </div> </div> <el-upload @@ -82,65 +128,61 @@ :disabled="readonly" accept="image/*" > - <el-button type="primary" id="uploadBtnId" style="display: none"></el-button> - <el-icon v-show="fileList.length != 3"> - <Plus /> - </el-icon> + <template #trigger v-if="fileList.length < 3 && !readonly"> + <el-button + v-if="fileList.length < 3" + type="primary" + id="uploadBtnId" + style="display: none" + ></el-button> + <el-icon> + <Plus /> + </el-icon> + </template> + <template #tip> + <div style="color: #f56c6c">鏈�灏戜笂浼犱竴寮犲浘鐗囷紝鏈�澶氶�夋嫨涓夊紶鍥剧墖</div> + </template> </el-upload> <el-form-item> - <el-button type="primary" @click="onSubmit" v-show="!readonly">淇濆瓨</el-button> - <el-button @click="this.$emit('submited', false)" v-show="!readonly">鍙栨秷</el-button> + <el-button type="primary" @click="onSubmit" v-show="!readonly" + >淇濆瓨</el-button + > + <el-button @click="this.$emit('submited', false)" v-show="!readonly" + >鍙栨秷</el-button + > </el-form-item> </el-form> - <el-dialog - title="浠绘剰鍥剧墖" - width="80%" - v-model="anyPhotoDialog" - :before-close="beforeAnyPhotoDialogclose" - class="dialog_style" + + <ArbitraryPhoto + :max-select="maxSelectImgCount - fileList.length" + v-if="anyPhotoDialog" + v-model:dialog-visible="anyPhotoDialog" + @submit="handleSelectedAnyPhono" + :subtask="subtask" + :defaultFile="fileList" + ref="arbitraryPhotoRef" > - <ArbitraryPhoto - v-if="anyPhotoDialog" - @selectByAnyPhonoEvent="handleSelectedAnyPhono" - :subtask="subtask" - :defaultFile="fileList" - ref="arbitraryPhotoRef" - > - </ArbitraryPhoto> - </el-dialog> - <el-dialog - title="鍙拌处鍥剧墖" - width="80%" - v-model="ledgerPicDialog" - :before-close="beforeLedgerPicDialogclose" - class="dialog_style" + </ArbitraryPhoto> + <CompLedgerPhoto + :max-select="maxSelectImgCount - fileList.length" + v-if="ledgerPicDialog" + v-model:dialog-visible="ledgerPicDialog" + @submit="handleLedgerPicPhono" + :subtask="subtask" + :defaultFile="fileList" + ref="ledgerPhotoRef" + ></CompLedgerPhoto> + <CompDevicePhoto + :max-select="maxSelectImgCount - fileList.length" + v-if="deiveceImgDialog" + v-model:dialog-visible="deiveceImgDialog" + @submit="handleSelectedDevicePhono" + :subtask="subtask" + :defaultFile="fileList" + ref="deiveceImgDialogRef" > - <LedgerPic - v-if="ledgerPicDialog" - @selectByLedgerPicEvent="handleLedgerPicPhono" - :month="month" - :subtask="subtask" - :defaultFile="fileList" - ref="ledgerPicRef" - > - </LedgerPic> - </el-dialog> - <el-dialog - title="璁惧鍥剧墖" - width="80%" - v-model="deiveceImgDialog" - :before-close="beforeDeiveceImgDialogclose" - class="dialog_style" - > - <CompDevicePhono - v-if="deiveceImgDialog" - @selectPhonoEvent="handleSelectedDevicePhono" - :imgPathsDataSource="deviceImgObjList" - :defaultFile="fileList" - ref="deiveceImgDialogRef" - > - </CompDevicePhono> - </el-dialog> + </CompDevicePhoto> + <el-dialog v-model="previewDialogVisible"> <img w-full :src="previewDialogImageUrl" alt="棰勮" class="preview-pic" /> </el-dialog> @@ -149,19 +191,20 @@ <script> import ArbitraryPhoto from './ArbitraryPhoto.vue'; import LedgerPic from './CompLedgerPic.vue'; -import CompDevicePhono from './CompDevicePhono.vue'; +import CompLedgerPhoto from './CompLedgerPhoto.vue'; +import CompDevicePhoto from './CompDevicePhoto.vue'; import problemApi from '@/api/fysp/problemApi.js'; import { $fysp } from '@/api/index.js'; import fileUtil from '@/utils/fileUtils.js'; -import { get, useCloned } from '@vueuse/core'; +import { useCloned } from '@vueuse/core'; import { ElMessage } from 'element-plus'; import deviceApi from '@/api/fysp/deviceApi'; export default { components: { ArbitraryPhoto, - LedgerPic, - CompDevicePhono + CompDevicePhoto, + CompLedgerPhoto }, props: { readonly: { @@ -192,6 +235,8 @@ }, data() { return { + // 鍥剧墖閫夋嫨鏈�澶ф暟閲� + maxSelectImgCount: 3, previewDialogVisible: false, previewDialogImageUrl: '', // 璁惧鍥剧墖鍒楄〃 @@ -216,11 +261,31 @@ month: -1, ledgerPicDialog: false, rules: { - proType: { required: true, message: '闂绫诲瀷涓嶈兘涓虹┖', trigger: 'change' }, - description: { required: true, message: '闂鎻忚堪涓嶈兘涓虹┖', trigger: 'change' }, - locationid: { required: true, message: '闂浣嶇疆涓嶈兘涓虹┖', trigger: 'change' }, - advise: { required: true, message: '闂寤鸿涓嶈兘涓虹┖', trigger: 'change' }, - proRemark: { required: true, message: '琛ュ厖璇存槑涓嶈兘涓虹┖', trigger: 'change' } + proType: { + required: true, + message: '闂绫诲瀷涓嶈兘涓虹┖', + trigger: 'change' + }, + description: { + required: true, + message: '闂鎻忚堪涓嶈兘涓虹┖', + trigger: 'change' + }, + locationid: { + required: true, + message: '闂浣嶇疆涓嶈兘涓虹┖', + trigger: 'change' + }, + advise: { + required: true, + message: '闂寤鸿涓嶈兘涓虹┖', + trigger: 'change' + }, + proRemark: { + required: true, + message: '琛ュ厖璇存槑涓嶈兘涓虹┖', + trigger: 'change' + } }, deviceTopTypes: [ { id: 0, label: '鐩戞帶璁惧' }, @@ -232,9 +297,16 @@ watch: { fileList: { handler(newFileList, oldFileList) { - console.log('newFileList', newFileList); // 鍥剧墖鏍¢獙 this.pictureValidate(); + }, + deep: true + }, + // 褰撻棶棰樺缓璁敼鍙樻椂闂寤鸿淇璺熺潃鏀瑰彉 + deepCopyProblem: { + handler(nv, ov) { + // 鍥剧墖鏍¢獙 + nv._adviseEdit = ov.advise; }, deep: true } @@ -242,13 +314,13 @@ computed: { descriptionOptions() { const descriptions = []; - + this.problemTypeList.forEach((item) => { if (item.typename == this.proType) { descriptions.push(item); } }); - + return descriptions; }, problemTypeOptions() { @@ -261,11 +333,19 @@ }, []); }, adviseOptions() { - var problemGuid = this.currProTypeGuid || this.problem.guid; - console.log("problemGuid", problemGuid); - - var array = this.suggestions.filter((item) => item.adProblemtypeguid == problemGuid); - console.log("array", array); + console.log(this.currProTypeGuid, this.problem.guid, this.suggestions); + + let problemGuid = this.currProTypeGuid || this.problem.guid; + let array = this.suggestions.filter( + (item) => item.adProblemtypeguid == problemGuid + ); + console.log( + this.suggestions.filter( + (item) => item.adProblemtypeguid == problemGuid + ), + this.adviseOptions + ); + return array; } }, @@ -274,6 +354,9 @@ this.getDeviceImgList(); }, methods: { + onProAdviseChange(value) { + this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise; + }, handlePictureCardPreview(uploadFile) { this.previewDialogVisible = true; this.previewDialogImageUrl = uploadFile.url; @@ -286,18 +369,16 @@ // 灏嗕竴涓猨s瀵硅薄涓墍鏈塪i锛寃i锛宲i寮�澶寸殑灞炴�у叏閮ㄦ敼鎴愬幓鎺夎繖浜涘墠缂�骞朵笖閲嶆柊鍙樹负椹煎嘲寮忓懡鍚� const newObj = {}; for (const key in obj) { - if (obj.hasOwnProperty(key)) { - let newKey = key; - if (key.startsWith('di')) { - newKey = key.substring(2); - } else if (key.startsWith('wi')) { - newKey = key.substring(2); - } else if (key.startsWith('pi')) { - newKey = key.substring(2); - } - newKey = newKey.charAt(0).toLowerCase() + newKey.slice(1); - newObj[newKey] = obj[key]; + let newKey = key; + if (key.startsWith('di')) { + newKey = key.substring(2); + } else if (key.startsWith('wi')) { + newKey = key.substring(2); + } else if (key.startsWith('pi')) { + newKey = key.substring(2); } + newKey = newKey.charAt(0).toLowerCase() + newKey.slice(1); + newObj[newKey] = obj[key]; } return newObj; }, @@ -320,57 +401,59 @@ this.deviceImgObjList = []; for (const deviceTopTypeElement of this.deviceTopTypes) { const topTypeId = deviceTopTypeElement.id; - await deviceApi.fetchDevices(this.subtask.sceneId, topTypeId).then((result) => { - // 鏍囧噯鍖栧睘鎬у悕 - for (let i = 0; i < result.data.length; i++) { - var element = this.convertKeys(result.data[i]); - // 鑾峰彇璁惧鐘舵�佷俊鎭� - let data = { - deviceId: element.id, - sceneId: element.sceneGuid, - deviceTypeId: topTypeId - }; - deviceApi - .fetchDeviceStatus(data) - .then((status) => { - var statusData = status.data; - var imgPaths = []; + await deviceApi + .fetchDevices(this.subtask.sceneId, topTypeId) + .then((result) => { + // 鏍囧噯鍖栧睘鎬у悕 + for (let i = 0; i < result.data.length; i++) { + var element = this.convertKeys(result.data[i]); + // 鑾峰彇璁惧鐘舵�佷俊鎭� + let data = { + deviceId: element.id, + sceneId: element.sceneGuid, + deviceTypeId: topTypeId + }; + deviceApi + .fetchDeviceStatus(data) + .then((status) => { + var statusData = status.data; + var imgPaths = []; - if (statusData) { - if (statusData.length == 0) { - this.deviceImgObjList.push(element); - return; - } - element = this.convertKeys(result.data[i]); - for (let j = 0; j < statusData.length; j++) { - // 澶嶅埗鍑轰竴涓澶囧璞� - var newDevice = useCloned(element).cloned.value; - const statusItem = statusData[j]; - // 璁惧瀵硅薄娣诲姞涓�涓睘鎬у垪琛ㄥ睘鎬х敤鏉ヤ繚瀛樿澶囩姸鎬� - this.saveStatus(newDevice, statusItem); - newDevice.dlLocation = statusItem.dlLocation; - newDevice.topTypeId = topTypeId; - console.log('newDevice.topTypeId', newDevice.topTypeId); - console.log('newDevice', newDevice); + if (statusData) { + if (statusData.length == 0) { + this.deviceImgObjList.push(element); + return; + } + element = this.convertKeys(result.data[i]); + for (let j = 0; j < statusData.length; j++) { + // 澶嶅埗鍑轰竴涓澶囧璞� + var newDevice = useCloned(element).cloned.value; + const statusItem = statusData[j]; + // 璁惧瀵硅薄娣诲姞涓�涓睘鎬у垪琛ㄥ睘鎬х敤鏉ヤ繚瀛樿澶囩姸鎬� + this.saveStatus(newDevice, statusItem); + newDevice.dlLocation = statusItem.dlLocation; + newDevice.topTypeId = topTypeId; - this.deviceImgObjList.push(newDevice); + this.deviceImgObjList.push(newDevice); + } } - } - }) - .catch((err) => {}); - } - }); + }) + .catch((err) => {}); + } + }); } }, initOptions() { if (this.problem == undefined || this.problem == null) { - this.problem = {}; this.deepCopyProblem = {}; } else { this.deepCopyProblem = useCloned(this.problem).cloned.value; + this.currProTypeGuid = this.problem.guid; + this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise; } this.type = 'guid' in this.deepCopyProblem ? 1 : 0; + // 鑾峰彇闂绫诲瀷 let data = { sceneTypeId: this.subtask.sceneTypeId, @@ -394,7 +477,10 @@ this.deepCopyProblem.description = currDescription; this.proRemark = ''; } else { - currDescription = currProName.substring(0, currProName.lastIndexOf('(')); + currDescription = currProName.substring( + 0, + currProName.lastIndexOf('(') + ); this.problemTypeList.forEach((item) => { if (item.description === currDescription) { @@ -445,7 +531,6 @@ } }, handleLedgerPicPhono(data) { - this.beforeLedgerPicDialogclose(); let isExist = false; for (const item of data) { for (const already of this.fileList) { @@ -472,7 +557,7 @@ return result; }, changeProblemname() { - if (this.proRemark == null || this.proRemark == '') { + if (!this.proRemark || this.proRemark == null || this.proRemark == '') { this.deepCopyProblem.problemname = this.deepCopyProblem.description; } else { this.deepCopyProblem.problemname = @@ -482,19 +567,33 @@ onProRemarkChange(value) { this.changeProblemname(); }, + onProAdviseEditChange(value) {}, onProTypeChange(value) { - this.deepCopyProblem.description = ''; - this.deepCopyProblem.advise = ''; + // 榛樿闂鎻忚堪鍜岄棶棰樺缓璁负绗竴涓� + this.currProTypeGuid = this.descriptionOptions[0].guid; + this.deepCopyProblem.description = this.descriptionOptions[0].description; + this.deepCopyProblem.advise = this.adviseOptions[0].adName; + this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise; + }, + findProByProDesName(name) { + let result; + this.problemTypeList.forEach((item) => { + if (item.description == name) { + result = item; + } + }); + return result; }, onProDesChange(value) { - let currPro = this.findProTypeByGuid(value); + let currPro = this.findProByProDesName(value); this.deepCopyProblem.advise = ''; - this.currProTypeGuid = value; + this.currProTypeGuid = currPro.guid; // this.deepCopyProblem.description = currPro.description; this.changeProblemname(); this.deepCopyProblem.advise = ''; - var adName = this.adviseOptions.length == 0 ? '' : this.adviseOptions[0].adName; + var adName = + this.adviseOptions.length == 0 ? '' : this.adviseOptions[0].adName; this.deepCopyProblem.advise = adName; }, onProLocationChange(value) { @@ -549,7 +648,6 @@ } exclude = false; // picUrls.push(item) - } else { } }); if (this.type == 1) { @@ -568,13 +666,14 @@ const deepCopySubTask = useCloned(this.subtask).cloned.value; const that = this; fileUtil.getImageFiles(picUrls, function (files) { - console.log('deepCopySubTask', deepCopySubTask); deepCopyPro.insGuid = deepCopySubTask.insGuid; delete deepCopyPro['advise']; delete deepCopyPro['description']; deepCopyPro.proName = deepCopyPro.problemname; delete deepCopyPro['problemname']; - deepCopyPro.ptGuid = that.findProTypeByGuid(that.currProTypeGuid).guid; + deepCopyPro.ptGuid = that.findProTypeByGuid( + that.currProTypeGuid + ).guid; deepCopyPro.locationId = deepCopyPro.locationid; delete deepCopyPro['locationid']; data.append('problemVo', JSON.stringify(deepCopyPro)); @@ -605,17 +704,16 @@ } }, handleSelectedDevicePhono(data) { - this.beforeDeiveceImgDialogclose(); let isExist = false; for (const item of data) { for (const already of this.fileList) { - if (item._picUrl == already.url) { + if (item.url == already.url) { isExist = true; } } if (!isExist) { this.fileList.push({ - url: item._picUrl, + url: item.url, name: '1' }); } @@ -684,14 +782,6 @@ } .row { width: 100%; -} -::v-deep .el-dialog { - --el-dialog-margin-top: 2vh; - height: 98vh; -} -::v-deep .el-dialog__body { - width: 95%; - height: 100%; } ::v-deep .el-upload-list--picture-card .el-upload-list__item-thumbnail { object-fit: cover !important; -- Gitblit v1.9.3