riku
2025-09-18 c1d2051abc8ca88cd07f0d7c56c0dbf8165d5c33
src/views/fysp/check/components/CompProblemAddOrUpd.vue
@@ -1,206 +1,230 @@
<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"
  <CompGenericWrapper type="dialog" append-to-body>
    <template #content>
      <div class="main-container">
        <el-form
          :rules="rules"
          :model="deepCopyProblem"
          label-width="auto"
          style="max-width: 95%"
          ref="formRef"
        >
          <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-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="deepCopyProblem._proType"
              @change="onProTypeChange"
              class="row"
              :disabled="readonly"
            >
              <el-option
                v-for="item in problemTypeOptions"
                :key="item.typeid"
                :label="item.typename"
                :value="item.typename"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="问题描述" prop="description">
            <el-select
              v-model="deepCopyProblem.description"
              @change="onProDesChange"
              class="row"
              :disabled="readonly"
            >
              <el-option
                v-for="item in descriptionOptions"
                :key="item.guid"
                :label="item.description"
                :value="item.description"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="补充说明" :disabled="readonly" prop="proRemark">
            <el-input
              v-model="proRemark"
              type="textarea"
              @change="onProRemarkChange"
              class="row"
              placeholder="请输入"
              :disabled="readonly"
            />
          </el-form-item>
          <el-form-item label="问题建议" prop="advice">
            <el-select
              v-model="deepCopyProblem.advice"
              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
            label="问题建议修正"
            prop="_adviseEdit"
            :disabled="false"
          >
            <el-input
              v-model="deepCopyProblem._adviseEdit"
              type="textarea"
              @change="onProAdviseEditChange"
              class="row"
              placeholder="请输入问题建议修正"
              :disabled="readonly"
            />
          </el-form-item>
          <el-form-item label="问题图片">
            <el-row>
              <el-col>
                <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
                >
              </el-col>
              <el-col v-if="!fileList || fileList.length <= 0">
                <el-empty
                  style="height: 145px"
                  class="img-upload"
                  description="请添加图片"
                />
              </el-col>
              <el-col>
                <el-upload
                  v-show="fileList && fileList.length > 0"
                  class="img-upload"
                  ref="uploadRef"
                  v-model:file-list="fileList"
                  list-type="picture-card"
                  multiple
                  :auto-upload="false"
                  crossorigin="Anonymous"
                  :before-remove="beforeRemoveFile"
                  :on-preview="handlePictureCardPreview"
                  :disabled="readonly"
                  accept="image/*"
                >
                  <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-col>
            </el-row>
          </el-form-item>
        </el-form>
        <el-row justify="end">
          <el-button type="primary" @click="onSubmit" v-show="!readonly"
            >保存</el-button
          >
          <el-button @click="onCancel" v-show="!readonly">取消</el-button>
        </el-row>
        <ArbitraryPhoto
          :max-select="maxSelectImgCount - fileList.length"
          v-model:dialog-visible="anyPhotoDialog"
          @submit="handleSelectedAnyPhono"
          :subtask="subtask"
          :defaultFile="fileList"
          ref="arbitraryPhotoRef"
        >
          <el-option
            v-for="item in problemTypeOptions"
            :key="item.typeid"
            :label="item.typename"
            :value="item.typename"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="问题描述" prop="description">
        <el-select
          v-model="deepCopyProblem.description"
          @change="onProDesChange"
          class="row"
          :disabled="readonly"
        </ArbitraryPhoto>
        <CompLedgerPhoto
          :max-select="maxSelectImgCount - fileList.length"
          v-model:dialog-visible="ledgerPicDialog"
          @submit="handleLedgerPicPhono"
          :subtask="subtask"
          :defaultFile="fileList"
          ref="ledgerPhotoRef"
        ></CompLedgerPhoto>
        <CompDevicePhoto
          :max-select="maxSelectImgCount - fileList.length"
          v-model:dialog-visible="deiveceImgDialog"
          @submit="handleSelectedDevicePhono"
          :subtask="subtask"
          :defaultFile="fileList"
          ref="deiveceImgDialogRef"
        >
          <el-option
            v-for="item in descriptionOptions"
            :key="item.guid"
            :label="item.description"
            :value="item.description"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="补充说明" :disabled="readonly" prop="proRemark">
        <el-input
          v-model="proRemark"
          type="textarea"
          @change="onProRemarkChange"
          class="row"
          placeholder="请输入"
          :disabled="readonly"
        </CompDevicePhoto>
        <el-image-viewer
          v-if="previewDialogVisible"
          :url-list="fileList.map((item) => item.url)"
          :initial-index="initialIndex"
          @close="previewDialogVisible = false"
          alt="预览"
          class="preview-pic"
        />
      </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">
        问题图片&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <div>
          <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>
        <!-- <el-dialog v-model="previewDialogVisible">
        </el-dialog> -->
      </div>
      <el-upload
        class="img-upload"
        ref="uploadRef"
        v-model:file-list="fileList"
        list-type="picture-card"
        multiple
        :auto-upload="false"
        crossorigin="Anonymous"
        :before-remove="beforeRemoveFile"
        :on-preview="handlePictureCardPreview"
        :disabled="readonly"
        accept="image/*"
      >
        <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-form-item>
    </el-form>
    <ArbitraryPhoto
      :max-select="maxSelectImgCount - fileList.length"
      v-if="anyPhotoDialog"
      v-model:dialog-visible="anyPhotoDialog"
      @submit="handleSelectedAnyPhono"
      :subtask="subtask"
      :defaultFile="fileList"
      ref="arbitraryPhotoRef"
    >
    </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"
    >
    </CompDevicePhoto>
    <el-dialog v-model="previewDialogVisible">
      <img w-full :src="previewDialogImageUrl" alt="预览" class="preview-pic" />
    </el-dialog>
  </div>
    </template>
  </CompGenericWrapper>
</template>
<script>
import ArbitraryPhoto from './ArbitraryPhoto.vue';
import LedgerPic from './CompLedgerPic.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 {  useCloned } from '@vueuse/core';
import { useCloned } from '@vueuse/core';
import { ElMessage } from 'element-plus';
import deviceApi from '@/api/fysp/deviceApi';
import { useFormConfirm } from '@/composables/formConfirm';
export default {
  emits: ['submit', 'cancel'],
  components: {
    ArbitraryPhoto,
    CompDevicePhoto,
@@ -235,6 +259,10 @@
  },
  data() {
    return {
      // fixme 2024.11.20 子组件初始化时机问题
      initPropsCount: 0,
      // 初始预览图片index
      initialIndex: -1,
      // 图片选择最大数量
      maxSelectImgCount: 3,
      previewDialogVisible: false,
@@ -261,7 +289,7 @@
      month: -1,
      ledgerPicDialog: false,
      rules: {
        proType: {
        _proType: {
          required: true,
          message: '问题类型不能为空',
          trigger: 'change'
@@ -276,14 +304,9 @@
          message: '问题位置不能为空',
          trigger: 'change'
        },
        advise: {
        advice: {
          required: true,
          message: '问题建议不能为空',
          trigger: 'change'
        },
        proRemark: {
          required: true,
          message: '补充说明不能为空',
          trigger: 'change'
        }
      },
@@ -302,13 +325,37 @@
      },
      deep: true
    },
    // 当问题建议改变时问题建议修正跟着改变
    deepCopyProblem: {
    initPropsCount: {
      handler(nv, ov) {
        // 图片校验
        nv._adviseEdit = ov.advise;
        if (nv >= 3) {
          this.initOptions();
        }
      },
      deep: true
      immediate: true
    },
    problem: {
      handler(nv, ov) {
        if (nv != null && nv != undefined) {
          this.initPropsCount++;
        }
      },
      immediate: true
    },
    topTask: {
      handler(nv, ov) {
        if (nv != null && nv != undefined) {
          this.initPropsCount++;
        }
      },
      immediate: true
    },
    subtask: {
      handler(nv, ov) {
        if (nv != null && nv != undefined) {
          this.initPropsCount++;
        }
      },
      immediate: true
    }
  },
  computed: {
@@ -316,7 +363,7 @@
      const descriptions = [];
      this.problemTypeList.forEach((item) => {
        if (item.typename == this.proType) {
        if (item.typename == this.deepCopyProblem._proType) {
          descriptions.push(item);
        }
      });
@@ -333,123 +380,37 @@
      }, []);
    },
    adviseOptions() {
      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;
    }
  },
  mounted() {
    this.initOptions();
    this.getDeviceImgList();
  },
  mounted() {},
  methods: {
    onProAdviseChange(value) {
      this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise;
      this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advice;
    },
    handlePictureCardPreview(uploadFile) {
      this.initialIndex = this.fileList.indexOf(uploadFile);
      this.previewDialogVisible = true;
      this.previewDialogImageUrl = uploadFile.url;
    },
    beforeDeiveceImgDialogclose() {
      this.deiveceImgDialog = false;
    },
    // 标准化属性名
    convertKeys(obj) {
      // 将一个js对象中所有di,wi,pi开头的属性全部改成去掉这些前缀并且重新变为驼峰式命名
      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];
      }
      return newObj;
    },
    // 保存状态信息
    saveStatus(device, status) {
      var _picUrl = $fysp.imgUrl + status.dlPicUrl;
      device._picUrl = _picUrl;
      status._picUrl = _picUrl;
      if ('_statusList' in device) {
        device._statusList.push(status);
      } else {
        device._statusList = Array.of(status);
      }
      // 排序
      device._statusList.sort(function (x, y) {
        return new Date(x.dlCreateTime) - new Date(y.dlCreateTime); //   降序,升序则反之
      });
    },
    async getDeviceImgList() {
      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 = [];
                  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);
                    }
                  }
                })
                .catch((err) => {});
            }
          });
      }
    },
    initOptions() {
      if (!this.problem || !this.subtask || !this.topTask) {
        return;
      }
      if (this.problem == undefined || this.problem == null) {
        this.deepCopyProblem = {};
      } else {
        this.deepCopyProblem = useCloned(this.problem).cloned.value;
        this.currProTypeGuid = this.problem.guid;
        this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advise;
        this.deepCopyProblem.advice = this.deepCopyProblem.advise;
        this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advice;
      }
      this.type = 'guid' in this.deepCopyProblem ? 1 : 0;
@@ -461,7 +422,7 @@
        districtCode: this.topTask.districtcode
      };
      problemApi.fetchProblemType(data).then((res) => {
        this.problemTypeList = res.data;
        this.problemTypeList = res;
        if (this.type == 1) {
          let currProName = String(this.problem.problemname);
@@ -471,7 +432,7 @@
            currDescription = currProName;
            this.problemTypeList.forEach((item) => {
              if (item.description == currDescription) {
                this.proType = item.typename;
                this.deepCopyProblem._proType = item.typename;
              }
            });
            this.deepCopyProblem.description = currDescription;
@@ -484,7 +445,7 @@
            this.problemTypeList.forEach((item) => {
              if (item.description === currDescription) {
                this.proType = item.typename;
                this.deepCopyProblem._proType = item.typename;
              }
            });
            this.deepCopyProblem.description = currDescription;
@@ -531,6 +492,7 @@
      }
    },
    handleLedgerPicPhono(data) {
      this.beforeLedgerPicDialogclose();
      let isExist = false;
      for (const item of data) {
        for (const already of this.fileList) {
@@ -572,8 +534,9 @@
      // 默认问题描述和问题建议为第一个
      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;
      this.onProDesChange(this.deepCopyProblem.description);
      this.deepCopyProblem.advice = this.adviseOptions[0].adName;
      this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advice;
    },
    findProByProDesName(name) {
      let result;
@@ -586,15 +549,15 @@
    },
    onProDesChange(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;
      this.deepCopyProblem.advise = adName;
      this.deepCopyProblem.advice = adName;
      this.$nextTick(() => {
        this.deepCopyProblem._adviseEdit = this.deepCopyProblem.advice;
      });
    },
    onProLocationChange(value) {
      this.posList.forEach((item) => {
@@ -620,70 +583,79 @@
      }
      return true;
    },
    // TODO
    validateForm() {},
    onCancel() {
      this.$emit('cancel');
      this.$emit('update:visible', false);
    },
    onSubmit() {
      this.validateForm();
      // 图片校验
      if (!this.pictureValidate()) {
        return;
      }
      // 数据准备
      let deepCopyPro = useCloned(this.deepCopyProblem).cloned.value;
      let data = new FormData();
      var picUrls = [];
      this.fileList.forEach((item) => {
        if (!('guid' in item)) {
          // 新的
          let exclude = false;
          for (let index = 0; index < this.oldFileList.length; index++) {
            const element = this.oldFileList[index];
            if (item.url == element.url) {
              exclude = true;
              break;
      this.$refs.formRef.validate((valid) => {
        if (valid && this.pictureValidate()) {
          // 数据准备
          let deepCopyPro = useCloned(this.deepCopyProblem).cloned.value;
          let data = new FormData();
          var picUrls = [];
          this.fileList.forEach((item) => {
            if (!('guid' in item)) {
              // 新的
              let exclude = false;
              for (let index = 0; index < this.oldFileList.length; index++) {
                const element = this.oldFileList[index];
                if (item.url == element.url) {
                  exclude = true;
                  break;
                }
              }
              if (!exclude) {
                picUrls.push(item.url);
              }
              exclude = false;
              // picUrls.push(item)
            }
          });
          if (this.type == 1) {
            let deleteImgCopy = this.deleteImg;
            fileUtil.getImageFiles(picUrls, (files) => {
              data.append('deleteImg', deleteImgCopy);
              deepCopyPro.advise = deepCopyPro.advice;
              delete deepCopyPro['advice'];
              delete deepCopyPro['mediafileList'];
              delete deepCopyPro['description'];
              delete deepCopyPro['_adviseEdit'];
              delete deepCopyPro['_proType'];
              delete deepCopyPro['proType'];
              data.append('problem', JSON.stringify(deepCopyPro));
              files.forEach((image) => {
                data.append('images', image);
              });
              problemApi.updateProblem(data).then((res) => {
                this.$emit('submit', false);
              });
            });
          } else {
            const deepCopySubTask = useCloned(this.subtask).cloned.value;
            fileUtil.getImageFiles(picUrls, (files) => {
              deepCopyPro.insGuid = deepCopySubTask.insGuid;
              delete deepCopyPro['description'];
              deepCopyPro.proName = deepCopyPro.problemname;
              delete deepCopyPro['problemname'];
              deepCopyPro.ptGuid = this.findProTypeByGuid(
                this.currProTypeGuid
              ).guid;
              deepCopyPro.locationId = deepCopyPro.locationid;
              delete deepCopyPro['locationid'];
              delete deepCopyPro['_adviseEdit'];
              delete deepCopyPro['_proType'];
              data.append('problemVo', JSON.stringify(deepCopyPro));
              files.forEach((image) => {
                data.append('images', image);
              });
              problemApi.newProblem(data).then((res) => {
                this.$emit('submit', true);
              });
            });
          }
          if (!exclude) {
            picUrls.push(item.url);
          }
          exclude = false;
          // picUrls.push(item)
        }
      });
      if (this.type == 1) {
        let deleteImgCopy = this.deleteImg;
        fileUtil.getImageFiles(picUrls, function (files) {
          data.append('deleteImg', deleteImgCopy);
          delete deepCopyPro['mediafileList'];
          delete deepCopyPro['description'];
          data.append('problem', JSON.stringify(deepCopyPro));
          files.forEach((image) => {
            data.append('images', image);
          });
          problemApi.updateProblem(data).then((res) => {});
        });
      } else {
        const deepCopySubTask = useCloned(this.subtask).cloned.value;
        const that = this;
        fileUtil.getImageFiles(picUrls, function (files) {
          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.locationId = deepCopyPro.locationid;
          delete deepCopyPro['locationid'];
          data.append('problemVo', JSON.stringify(deepCopyPro));
          files.forEach((image) => {
            data.append('images', image);
          });
          problemApi.newProblem(data).then((res) => {});
        });
      }
      this.$emit('submited', true);
    },
    handleSelectedAnyPhono(data) {
      this.beforeAnyPhotoDialogclose();
@@ -753,10 +725,6 @@
    },
    beforeLedgerPicDialogclose() {
      this.ledgerPicDialog = false;
    },
    destoryMyself() {
      this.$destroy();
    }
  }
};
@@ -778,7 +746,6 @@
.img-upload {
  margin-top: 30px;
  margin-bottom: 30px;
  margin-left: 63px;
}
.row {
  width: 100%;
@@ -792,6 +759,10 @@
  height: 100%;
}
::v-deep .el-upload--picture-card {
  border: 0 !important;
  display: none;
}
/* 隐藏el-upload上传成功组件 */
::v-deep .el-upload-list__item-status-label {
  display: none !important;
}
</style>