From 18eee6f8818b864d1f8d8fb56298620921f909e4 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期五, 15 十一月 2024 15:49:24 +0800
Subject: [PATCH] bug修改,图片选择组件使用,撤回审核功能

---
 src/views/fysp/check/components/CompProblemAddOrUpd.vue |  400 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 246 insertions(+), 154 deletions(-)

diff --git a/src/views/fysp/check/components/CompProblemAddOrUpd.vue b/src/views/fysp/check/components/CompProblemAddOrUpd.vue
index eaad334..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"
@@ -26,23 +46,23 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="闂浣嶇疆" prop="locationid">
-        <el-select
-          v-model="deepCopyProblem.locationid"
-          @change="onProLocationChange"
+      <el-form-item label="琛ュ厖璇存槑" :disabled="readonly" prop="proRemark">
+        <el-input
+          v-model="proRemark"
+          type="textarea"
+          @change="onProRemarkChange"
           class="row"
+          placeholder="璇疯緭鍏�"
           :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-select
+          v-model="deepCopyProblem.advise"
+          class="row"
+          :disabled="readonly"
+          @change="onProAdviseChange"
+        >
           <el-option
             v-for="item in adviseOptions"
             :key="item.adGuid"
@@ -51,22 +71,48 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="琛ュ厖璇存槑" :disabled="readonly" prop="proRemark">
+      <el-form-item
+        v-show="deepCopyProblem.advise && deepCopyProblem.advise != ''"
+        label="闂寤鸿淇"
+        prop="_adviseEdit"
+        :disabled="false"
+      >
         <el-input
-          v-model="proRemark"
+          v-model="deepCopyProblem._adviseEdit"
           type="textarea"
-          @change="onProRemarkChange"
+          @change="onProAdviseEditChange"
           class="row"
-          placeholder="璇疯緭鍏�"
+          placeholder="璇疯緭鍏ラ棶棰樺缓璁慨姝�"
+          :disabled="readonly"
         />
       </el-form-item>
       <div class="t-card_item">
         闂鍥剧墖&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <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: '鐩戞帶璁惧' },
@@ -236,18 +301,26 @@
         this.pictureValidate();
       },
       deep: true
+    },
+    // 褰撻棶棰樺缓璁敼鍙樻椂闂寤鸿淇璺熺潃鏀瑰彉
+    deepCopyProblem: {
+      handler(nv, ov) {
+        // 鍥剧墖鏍¢獙
+        nv._adviseEdit = ov.advise;
+      },
+      deep: true
     }
   },
   computed: {
     descriptionOptions() {
       const descriptions = [];
-      
+
       this.problemTypeList.forEach((item) => {
         if (item.typename == this.proType) {
           descriptions.push(item);
         }
       });
-      
+
       return descriptions;
     },
     problemTypeOptions() {
@@ -260,8 +333,19 @@
       }, []);
     },
     adviseOptions() {
-      var problemGuid = this.currProTypeGuid || this.problem.guid;
-      var array = this.suggestions.filter((item) => item.adProblemtypeguid == problemGuid);
+      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;
     }
   },
@@ -270,6 +354,9 @@
     this.getDeviceImgList();
   },
   methods: {
+    onProAdviseChange(value) {
+      this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise;
+    },
     handlePictureCardPreview(uploadFile) {
       this.previewDialogVisible = true;
       this.previewDialogImageUrl = uploadFile.url;
@@ -283,15 +370,15 @@
       const newObj = {};
       for (const key in obj) {
         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];
+        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;
     },
@@ -314,44 +401,46 @@
       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;
+                  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() {
@@ -359,9 +448,12 @@
         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,
@@ -385,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) {
@@ -436,7 +531,6 @@
       }
     },
     handleLedgerPicPhono(data) {
-      this.beforeLedgerPicDialogclose();
       let isExist = false;
       for (const item of data) {
         for (const already of this.fileList) {
@@ -473,28 +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=>{
+      let result;
+      this.problemTypeList.forEach((item) => {
         if (item.description == name) {
           result = item;
         }
-      })
-      return result
+      });
+      return result;
     },
     onProDesChange(value) {
-      let currPro = this.findProByProDesName(value)
+      let currPro = this.findProByProDesName(value);
       this.deepCopyProblem.advise = '';
       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) {
@@ -572,7 +671,9 @@
           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));
@@ -603,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'
           });
         }
@@ -682,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