Bläddra i källkod

feature_20260108_陈列奖励案任务合并

zhujindu 1 vecka sedan
förälder
incheckning
5018416287

+ 9 - 0
src/api/index.js

@@ -1115,3 +1115,12 @@ export function confirmPhone(query) {
     params: query,
   });
 }
+
+// 陈列奖励案门店获取拜访详情
+export function getCollectionInfosBatch(data) {
+  return request({
+    url: 'mobile/storeGroup/getCollectionInfosBatch',
+    method: 'post',
+    data: data,
+  });
+}

+ 131 - 0
src/components/deleteUploadImgTaskPhoto.vue

@@ -0,0 +1,131 @@
+<template>
+  <div class="deleteUploadImgTaskPhoto">
+    <van-row gutter="10">
+      <van-col span="6" style="background: #f5f5f5">
+        <div class="addImg" @click="addimg"><van-icon name="plus" size="26" /></div>
+      </van-col>
+      <van-col span="6" v-for="(urls, index) in imgs" :key="urls.id">
+        <div class="imgview">
+          <van-icon
+            v-if="(photoIdentifyType != 6 || photoIdentifyType != 7) && types != 'edit'"
+            name="close"
+            size="16"
+            v-on:click="deleteImg(index, urls.id)" />
+          <img
+            v-if="urls.type == '2'"
+            :src="urls.fileUrl"
+            width="100px"
+            height="100px"
+            @click="previewsImg(index)" />
+          <img
+            v-else
+            :src="urls.fileUrl"
+            width="100px"
+            height="100px"
+            @click="previewsImg(index)" />
+        </div>
+      </van-col>
+    </van-row>
+    <!--  <div style="padding: 10px 16px 0;">-->
+    <!--    <div class="img-box" v-for="(urls, index) in imgs" :key="index">-->
+    <!--      <van-icon name="clear" v-on:click="deleteImg(index,urls.id)"/>-->
+    <!--      <img v-if="urls.type=='2'" :src="urls.fileUrl" width="100px" height="100px" @click="previewsImg(index)"/>-->
+    <!--      <img v-else :src="urls.fileUrl" width="100px" height="100px" @click="previewsImg(index)"/>-->
+    <!--    </div>-->
+    <!--  </div>-->
+  </div>
+</template>
+
+<script>
+import { ImagePreview } from 'vant';
+import { removePhoto } from '@/api/index';
+
+export default {
+  name: 'deleteUploadImg',
+  props: {
+    imgs: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+    photoIdentifyType: {
+      // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招,6:sku陈列照)
+      type: String,
+      default: '',
+    },
+    types: {
+      // edit 编辑
+      type: String,
+    },
+  },
+  watch: {
+    imgs: {
+      handler(val) {},
+      deep: true,
+      immediate: true,
+    },
+  },
+  data() {
+    return {
+      url: process.env.VUE_APP_Target1 + process.env.VUE_APP_BASE_API,
+    };
+  },
+  methods: {
+    deleteImg(index, collectionItemId) {
+      removePhoto({ fileId: collectionItemId }).then((res) => {
+        if (res.code == 200) {
+          this.$toast('删除成功!');
+          this.imgs.splice(index, 1);
+        } else {
+          this.$toast('删除失败!');
+        }
+      });
+    },
+    previewsImg(index) {
+      var arrimg = [];
+      for (var imgi = 0; imgi < this.imgs.length; imgi++) {
+        arrimg.push(this.imgs[imgi].fileUrl);
+      }
+      ImagePreview({
+        images: arrimg,
+        startPosition: index,
+        onClose() {
+          // do something
+        },
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.deleteUploadImgTaskPhoto {
+}
+.addImg {
+  width: 100%;
+  height: 72px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.imgview {
+  width: 100%;
+  height: 72px;
+  position: relative;
+  display: inline-block;
+  i {
+    position: absolute;
+    right: -2px;
+    top: -3px;
+    color: white;
+    background: red;
+    overflow: hidden;
+    border-radius: 50%;
+  }
+  img {
+    width: 100%;
+    height: 100%;
+  }
+}
+</style>

+ 538 - 0
src/components/uploadVNormalTaskPhoto.vue

@@ -0,0 +1,538 @@
+<template>
+  <div class="questionNamep">
+    <!-- 0=企业微信,1=H5相机 -->
+    <!-- 企业微信拍照 -->
+    <div class="cameraDiv" @click="uploadImg" v-if="userInfo.photoMethod == '0'">
+      <van-icon class="photo photos" name="photograph" size="22px" color="#969696" />
+    </div>
+    <!-- 原生自带拍照 -->
+    <H5Camera
+      @getImg="getImg"
+      ref="H5Camera"
+      :objectType="objectType"
+      :capture="pictureSource == '1' ? '' : 'camera'"
+      v-else />
+    <div id="allmap"></div>
+    <imageAIVerifyErr
+      v-if="imageAIVerifyFlag"
+      :imageAIVerifyFlag="imageAIVerifyFlag"
+      :imageAIVerifyData="imageAIVerifyData"
+      @confirmUpload="confirmUpload"
+      @uploadImgFun="uploadImgFun"
+      :source="'visit'"
+      @normalFlow="normalFlow"
+      @close="close"></imageAIVerifyErr>
+    <!-- 图像识别白名单弹框提示 -->
+    <imageWhiteStore
+      v-if="imageWhiteStoreFlag"
+      :imageWhiteStoreFlag="imageWhiteStoreFlag"
+      :imageWhiteStoreData="imageWhiteStoreData"
+      @normalFlow="normalFlow"
+      @close="close">
+    </imageWhiteStore>
+  </div>
+</template>
+
+<script>
+import { addstorePhoto, addVisitsPosition, addPhotoToDB } from '@/api/index';
+import imageAIVerifyErr from './imageAIVerifyErr';
+import imageWhiteStore from './imageWhiteStore';
+import H5Camera from '@/components/H5Camera';
+import axios from 'axios';
+import uploadAliOss from '@/utils/uploadAliOss';
+import { addH5Photo } from '@/api/H5Camera';
+import { mapState } from 'vuex';
+
+export default {
+  name: 'uploadImg',
+  components: { imageAIVerifyErr, H5Camera, imageWhiteStore },
+  props: {
+    uploadid: {
+      type: String,
+      default: '',
+    },
+    storeGroupId: {
+      type: String,
+      default: '',
+    },
+    parentCollectionId: {
+      type: String,
+      default: '',
+    },
+    secondCollectionId: {
+      type: [String, Number],
+      default: '',
+    },
+    firstCollectionId: {
+      type: String,
+      default: '',
+    },
+    fourthCollectionId: {
+      type: String,
+      default: '',
+    },
+    thirdCollectionId: {
+      type: String,
+      default: '',
+    },
+    visitsId: {
+      type: String,
+      default: '',
+    },
+    taskId: {
+      type: String,
+      default: '',
+    },
+    collectionId: {
+      type: String,
+      default: '',
+    },
+    objectType: {
+      type: String,
+      default: '',
+    },
+    type: {
+      type: Number,
+      default: 1,
+    },
+    imgArr: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+    visitModel: {
+      type: String,
+      default: '1',
+    },
+    deviceCode: {
+      type: String,
+      default: '',
+    },
+    putInCode: {
+      type: String,
+      default: '',
+    },
+    pictureSource: {
+      // 是否允许从相册选择图片 1:允许;0:不允许
+      type: String,
+      default: '0',
+    },
+    photoIdentifyType: {
+      // 图匠识别目的(1:店招内容识别(不能连拍和多选),3:调色机识别(不能连拍和多选),6:陈列SKU图片识别(不需要图匠实时识别))
+      type: String,
+      default: '',
+    },
+    continuousShoot: {
+      // 是否允许连拍/相册多选 1:允许;0:不允许
+      type: String,
+      default: '0',
+    },
+    equipmentCode: {
+      // 当前任务对应的资产编号
+      type: String,
+      default: '',
+    },
+    inStore: {
+      // 调色机是否在店
+      type: String,
+      default: '否',
+    },
+  },
+  computed: {
+    ...mapState({
+      userInfo: (state) => state.user.userInfo,
+    }),
+  },
+  data() {
+    return {
+      shows: false,
+      url: '',
+      imageAIVerifyFlag: false,
+      imageAIVerifyData: null, //图匠校验返回的数据
+      mediaId: '', //当前上传图片id
+      addressesRemark: '', //当前位置信息
+      controller: null, //取消请求状态
+      fileUrl: '',
+      imageWhiteStoreData: null,
+      imageWhiteStoreFlag: false,
+      localIdsArr: [],
+    };
+  },
+  methods: {
+    // 原生H5拍照图片
+    // url: base64
+    getImg(base64) {
+      // 图片名称:用户名-时间戳
+      let username = localStorage.getItem('loginName');
+      let imgName = username + '-' + new Date().getTime();
+      uploadAliOss(base64, imgName)
+        .then((res) => {
+          if (res.url && res.url.indexOf('http') != -1) {
+            this.fileUrl = res.url;
+            this.uploadImagev();
+          }
+        })
+        .catch((err) => {
+          console.log('err:' + err);
+        });
+    },
+    uploadImgFun() {
+      // 0=企业微信,1=H5相机
+      if (this.userInfo.photoMethod == '0') {
+        this.uploadImg();
+      } else {
+        this.$refs.H5Camera.camera();
+      }
+    },
+    uploadImg() {
+      var map = new TMap.Map('allmap', {
+        zoom: 14,
+        center: new TMap.LatLng(39.986785, 116.301012),
+      });
+
+      var geocoder = new TMap.service.Geocoder(); // 新建一个正逆地址解析类
+      var markers = new TMap.MultiMarker({
+        map: map,
+        geometries: [],
+      });
+      markers.setGeometries([]);
+
+      if (this.objectType == '' || this.objectType == null) {
+        this.$toast('请选择类型!');
+        return;
+      }
+      let url = window.location.href;
+      let that = this;
+      let wx = this.wx;
+      let qiyeData;
+      this.addressesRemark = '';
+      const instance = axios.create();
+      instance.defaults.headers.common['userId'] = localStorage.getItem('loginName');
+      instance
+        .get(process.env.VUE_APP_BASE_API + 'mobile/wx/ticket', {
+          params: {
+            url: url,
+          },
+        })
+        .then((response) => {
+          if (response.status == 200) {
+            qiyeData = response.data.data;
+            wx.config({
+              beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+              debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+              appId: qiyeData.appId, // 必填,企业微信的corpID
+              timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
+              nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
+              signature: qiyeData.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
+              jsApiList: ['ready', 'chooseImage', 'uploadImage', 'getLocation'], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
+            });
+            wx.ready(function () {
+              wx.getLocation({
+                type: 'gcj02',
+                success: function (res) {
+                  var location = new TMap.LatLng(res.latitude, res.longitude);
+                  map.setCenter(location);
+                  markers.updateGeometries([
+                    {
+                      id: 'main', // 点标注数据数组
+                      position: location,
+                    },
+                  ]);
+                  geocoder.getAddress({ location: location }).then(
+                    function (result) {
+                      var addresses = result.result.formatted_addresses;
+                      that.addressesRemark = addresses.recommend;
+                    },
+                    function (err) {
+                      that.addressesRemark = '';
+                    }
+                  );
+                },
+                fail: function () {
+                  that.$dialog.alert({
+                    message: 'GPS未开启',
+                  });
+                },
+              });
+              console.log(that.pictureSource);
+              let sourceType = that.pictureSource == '1' ? ['album', 'camera'] : ['camera'];
+              let count = 1;
+              // 1:店招内容识别(不能连拍和多选),3:调色机识别(不能连拍和多选) 需要实时识别的不支持连拍和多选
+              if (that.photoIdentifyType != 1 && that.photoIdentifyType != 3) {
+                count = that.continuousShoot == '1' ? 5 : 1; //是否允许连拍/相册多选 最多5张
+              }
+              wx.chooseImage({
+                count: count,
+                sizeType: ['original'], // 可以指定是原图还是压缩图,默认二者都有
+                sourceType: sourceType, // 可以指定来源是相册还是相机,默认二者都有
+                defaultCameraMode: count == 1 ? 'normal' : 'batch', //表示进入拍照界面的默认模式,目前有normal与batch两种选择,normal表示普通单拍模式,batch表示连拍模式,不传该参数则为normal模式。从3.0.26版本开始支持front和batch_front两种值,其中front表示默认为前置摄像头单拍模式,batch_front表示默认为前置摄像头连拍模式。(注:用户进入拍照界面仍然可自由切换两种模式)
+                // defaultCameraMode: 'normal', //表示进入拍照界面的默认模式,目前有normal与batch两种选择,normal表示普通单拍模式,batch表示连拍模式,不传该参数则为normal模式。从3.0.26版本开始支持front和batch_front两种值,其中front表示默认为前置摄像头单拍模式,batch_front表示默认为前置摄像头连拍模式。(注:用户进入拍照界面仍然可自由切换两种模式)
+                isSaveToAlbum: 0, //整型值,0表示拍照时不保存到系统相册,1表示自动保存,默认值是1
+                success: function (res) {
+                  let localIds = res.localIds;
+                  that.localIdsArr = [];
+                  that.syncUpload(localIds);
+                  // var localIds = '';
+                  // if (res.localIds != undefined) {
+                  //   localIds = res.localIds[0];
+                  // } else {
+                  //   localIds = res.localId;
+                  // }
+                  // wx.uploadImage({
+                  //   localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得
+                  //   isShowProgressTips: 0, // 默认为1,显示进度提示
+                  //   success: function (res) {
+                  //     that.mediaId = res.serverId;
+                  //     that.uploadImagev(addressesRemark);
+                  //   },
+                  //   fail: (err) => {
+                  //     that.$toast(err.errMsg);
+                  //     that.$toast(err.errCode);
+                  //   },
+                  // });
+                },
+              });
+            });
+          }
+        });
+    },
+    syncUpload(localIds) {
+      if (!localIds.length) {
+        this.uploadImagev();
+      } else {
+        var localId = localIds.pop();
+        wx.uploadImage({
+          localId: localId,
+          isShowProgressTips: 1, // 默认为1,显示进度提示
+          success: (res) => {
+            this.localIdsArr.push(res.serverId);
+            this.syncUpload(localIds);
+          },
+        });
+      }
+    },
+    uploadImagev() {
+      this.close();
+      var that = this;
+      var parentCollectionId = null;
+      if (that.parentCollectionId != null && that.parentCollectionId != 'null') {
+        parentCollectionId = that.parentCollectionId;
+      }
+      var secondCollectionId = null;
+      if (that.secondCollectionId != null && that.secondCollectionId != 'null') {
+        secondCollectionId = that.secondCollectionId;
+      }
+      var firstCollectionId = null;
+      if (that.firstCollectionId != null && that.firstCollectionId != 'null') {
+        firstCollectionId = that.firstCollectionId;
+      }
+      var fourthCollectionId = null;
+      if (that.fourthCollectionId != null && that.fourthCollectionId != 'null') {
+        fourthCollectionId = that.fourthCollectionId;
+      }
+      var thirdCollectionId = null;
+      if (that.thirdCollectionId != null && that.thirdCollectionId != 'null') {
+        thirdCollectionId = that.thirdCollectionId;
+      }
+      var form = {
+        mediaIds: [],
+        fileUrl: '',
+        collectionItemId: that.collectionId,
+        objectType: that.objectType,
+        storeGroupId: that.storeGroupId,
+        taskId: that.taskId,
+        visitsId: localStorage.getItem('visitId'),
+        visitModel: that.visitModel,
+        visitSource: '1',
+        locationRemark: that.addressesRemark,
+        parentCollectionId: parentCollectionId,
+        secondCollectionId: secondCollectionId,
+        firstCollectionId: firstCollectionId,
+        fourthCollectionId: fourthCollectionId,
+        thirdCollectionId: thirdCollectionId,
+        deviceCode: that.deviceCode, //设备编号
+        putInCode: that.putInCode, //投放编号
+        equipmentCode: that.equipmentCode,
+        inStore: that.inStore,
+      };
+      // 0=企业微信,1=H5相机
+      if (this.userInfo.photoMethod == '0') {
+        form.mediaIds = this.localIdsArr; //	string	图片素材id
+      } else {
+        form.fileUrl = this.fileUrl; //	string	图片素材id
+      }
+      this.controller = null;
+      // 需要图匠校验的添加参数和loading
+      if (
+        this.photoIdentifyType &&
+        (this.photoIdentifyType == '1' || this.photoIdentifyType == '3')
+      ) {
+        form.photoIdentifyType = this.photoIdentifyType;
+        this.controller = new AbortController(); //取消请求
+      } else {
+        this.toastLoading(0, '上传中...', true);
+      }
+      addstorePhoto(form, this.controller ? this.controller.signal : null)
+        .then((res) => {
+          this.requestThen(res);
+        })
+        .catch((error) => {
+          this.requestCatch(error);
+        });
+    },
+    // 公用请求then
+    requestThen(res) {
+      this.toastLoading().clear();
+      if (res.code == -1) {
+        // 图匠图片校验接口超时
+        this.requestTimeOut(res);
+      } else if (res.code == 200) {
+        // 图匠校验结果返回
+        if (
+          this.photoIdentifyType &&
+          (this.photoIdentifyType == '1' || this.photoIdentifyType == '3')
+        ) {
+          this.imageAIVerifyFlag = true;
+          this.imageAIVerifyData = res.data[0];
+        } else {
+          // 正常流程
+          // 图像识别白名单用户弹出框提示
+          if (res.data[0].whiteStore) {
+            this.imageWhiteStoreFlag = true;
+            this.imageWhiteStoreData = res.data[0];
+          } else {
+            this.normalFlow(res);
+          }
+        }
+      } else {
+        that.$toast('上传失败!');
+      }
+    },
+    // 公用请求catch
+    requestCatch(error) {
+      if (error.message === 'canceled') {
+        this.$toast('取消上传');
+        console.log('请求被取消:', error.message);
+      }
+    },
+    // 正常流程
+    normalFlow(res) {
+      this.$toast('上传成功!');
+      let fileInfoList = [];
+      res.data.forEach((val) => {
+        fileInfoList.push({
+          fileUrl: val.url,
+          id: val.fileId,
+          type: 2,
+        });
+      });
+      this.$emit('newimgarr', {
+        fileInfoList: fileInfoList,
+        // fileUrl: res.data.url,
+        // id: res.data.fileId,
+        // type: 2,
+        photoIdentifyType: this.photoIdentifyType,
+      });
+    },
+    // 照片是否入库,1.照片识别三次不通过仍要上传,2.照片识别通过
+    // isUpdate:是否更新店招照片,只有门店店招需要更新
+    confirmUpload(res) {
+      if (
+        this.photoIdentifyType &&
+        (this.photoIdentifyType != '6' || this.photoIdentifyType != '7')
+      ) {
+        var form = {
+          mediaIds: [],
+          fileUrl: '',
+          visitSource: '1', //	Long	拜访模式
+          storeGroupId: this.storeGroupId, //	string	门店任务组,多个用逗号隔开
+          visitsId: localStorage.getItem('visitId'), //	string	拜访id
+          taskId: this.taskId, //	string	任务id
+          objectType: this.objectType, //	string	照片类型,取任务上的照片类型,如果没有则取手动选择的照片类型
+          locationRemark: this.addressesRemark, //	String	当前地址信息
+          firstCollectionId: this.firstCollectionId, //	Long	第一级采集项id,取当前采集项的字段就行
+          secondCollectionId: this.secondCollectionId, //	Long	第二级采集项id,取当前采集项的字段就行
+          putInCode: this.putInCode, //	String	当前任务对应的投放编号
+          deviceCode: this.deviceCode, //	String	当前任务对应的设备编号
+          collectionItemId: this.collectionId,
+          url: res.data.url, //	String	当前拍摄图片的url
+          businessId: res.data.businessId, // 当前拍摄图片id
+          feedbackMessage: res.feedbackMessage,
+          equipmentCode: this.equipmentCode,
+          inStore: this.inStore,
+        };
+        // 0=企业微信,1=H5相机
+        if (this.userInfo.photoMethod == '0') {
+          form.mediaIds = this.localIdsArr; //	string	图片素材id
+        } else {
+          form.fileUrl = this.fileUrl; //	string	图片素材id
+        }
+        if (res.isUpdate) {
+          form.isUpdate = 'true';
+        }
+        addPhotoToDB(form).then((resData) => {
+          if (resData.code == 200) {
+            console.log(resData);
+            res.data.fileId = resData.data[0].fileId;
+            res.data = [res.data];
+            this.normalFlow(res);
+          }
+        });
+      }
+    },
+    close() {
+      this.imageAIVerifyFlag = false;
+      this.imageWhiteStoreFlag = false;
+    },
+    requestTimeOut(res) {
+      this.close();
+      this.$dialog
+        .confirm({
+          title: '系统提示',
+          message: res.msg,
+          showCancelButton: false,
+        })
+        .then(() => {
+          this.confirmUpload(res);
+        });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.questionNamep {
+  font-size: 16px;
+  color: #484848;
+  // line-height: 40px;
+  padding: 0 15px;
+  box-sizing: border-box;
+  position: relative;
+
+  .cameraDivp {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    .photo {
+      /*margin-top: 9px;*/
+      float: right;
+    }
+    .camera {
+      width: 60px;
+      height: 100%;
+      position: absolute;
+      right: 0;
+      top: 0;
+      opacity: 0;
+      z-index: 89;
+    }
+  }
+}
+#allmap {
+  width: 10px;
+  height: 10px;
+  left: -1000px;
+  position: absolute;
+}
+</style>

+ 11 - 2
src/views/deviceOutside/suishenbangOutstoreVisit.vue

@@ -607,8 +607,14 @@ export default {
       let taskTypeArr = list.filter((val) => val.taskType !== '5');
       let taskType5Index = list.findIndex((val) => val.taskType == '5');
       if (taskType5Index != -1) {
+        let taskType5Arr = list.filter((val) => val.taskType == '5');
+        let taskIds = [];
+        taskType5Arr.forEach((val) => {
+          taskIds.push(val.taskId);
+        });
         let taskType5 = {
           ...list[taskType5Index],
+          taskIds: taskIds,
         };
         taskType5.taskName = '生动化陈列任务拍照';
         taskTypeArr.splice(taskType5Index, 0, taskType5);
@@ -620,10 +626,13 @@ export default {
       localStorage.setItem('getRequestFlage', 'false');
       console.log(this.visitId);
       if (val.taskType == '5') {
-        // if (val.taskType == '5') {
         this.$router.push({
           path: '/taskPhotoTaking',
-          query: {},
+          query: {
+            storeCode: this.urlParameter.storeCode,
+            id: this.visitId,
+            taskIds: val.taskIds.join(','),
+          },
         });
       } else {
         this.$router.push({

+ 0 - 1
src/views/deviceWithin/addStoreVisit.vue

@@ -5294,7 +5294,6 @@ export default {
       this.childIndex7 = childIndex7;
       this.pType = type;
       this.collectionItemList;
-      debugger;
       this.filterInStore(this.collectionItemList[index]);
       this.show = true;
     },

+ 460 - 17
src/views/deviceWithin/taskPhotoTaking.vue

@@ -34,41 +34,446 @@
                   :examplePhoto="formData.examplePhoto">
                 </taskTips>
               </template>
-              <!-- <template #right-icon>
-                <template v-if="isEdit">
-                  <span v-if="formData.isMustPicture == '0'" class="van-f-red">*</span>
-                  <van-icon
-                    v-if="formData.isPicture == 0"
-                    color="#666"
-                    name="photograph"
-                    size="24"
-                    @click="imgClick(formData, 'A', index)" />
-                </template>
-              </template> -->
             </van-cell>
-            <!-- <delete-upload-img
-              :photoIdentifyType="photoIdentifyType"
-              :types="$route.query.types"
-              :imgs="formData.fileInfoList"></delete-upload-img> -->
+            <delete-upload-img :imgs="formData.fileInfoList"></delete-upload-img>
           </div>
         </van-form>
       </div>
     </div>
+    <!-- <van-dialog v-model="show" :show-confirm-button="false" show-cancel-button title="上传图片">
+      <van-field
+        v-if="indexselect == '1'"
+        :value="PhotoTypeText"
+        clickable
+        name="picker"
+        placeholder="选择图片类型"
+        readonly
+        @click="showPicker = true">
+        <template #label> <span class="van-f-red">*</span>图片类型 </template>
+      </van-field>
+      <van-cell>
+        <template #title> <span class="van-f-red">*</span>图片上传 </template>
+        <template #right-icon>
+          <upload-img
+            :collectionId="collectionId"
+            :parentCollectionId="parentCollectionId"
+            :secondCollectionId="secondCollectionId"
+            :firstCollectionId="firstCollectionId"
+            :fourthCollectionId="fourthCollectionId"
+            :thirdCollectionId="thirdCollectionId"
+            :imgArr="imgs"
+            :objectType="PhotoType"
+            :shouws="true"
+            :storeGroupId="storeGroupId"
+            :taskId="taskId"
+            :uploadid="uploadid2"
+            :visitModel="1 + ''"
+            :visitsId="visitId"
+            :childIndex="childIndex"
+            :deviceCode="deviceCode"
+            :putInCode="putInCode"
+            :equipmentCode="equipmentCode"
+            @newimgarr="newimgarr1"
+            @typeshow="typeshow"
+            :photoIdentifyType="photoIdentifyType"
+            :pictureSource="pictureSource"
+            :continuousShoot="continuousShoot"
+            :inStore="machineInTheStore"
+            ref="uploadVNormal"></upload-img>
+        </template>
+      </van-cell>
+      <div v-if="continuousShoot == '1'" class="uploadImgNum" style="color: red; padding: 0px 16px">
+        注:拍照功能支持每次最多5张连拍,可多次连拍。
+      </div>
+    </van-dialog> -->
   </div>
 </template>
 <script>
+import { getCollectionInfosBatch } from '@/api/index';
 import taskTips from './taskTips';
+import deleteUploadImg from '@/components/deleteUploadImgTaskPhoto';
 export default {
   name: 'abnortaskPhotoTakingmalVisit',
-  components: { taskTips },
+  components: { taskTips, deleteUploadImg },
   data() {
     return {
       isEdit: true,
       formData: null,
+      taskIds: null,
+    };
+  },
+  activated() {
+    this.taskIds = this.$route.query.taskIds;
+    this.formData = {
+      searchValue: null,
+      createBy: null,
+      createTime: null,
+      updateBy: null,
+      updateTime: null,
+      remark: null,
+      params: {},
+      pageSize: null,
+      pageNum: null,
+      parentCollectionId: null,
+      firstCollectionId: null,
+      secondCollectionId: null,
+      thirdCollectionId: null,
+      fourthCollectionId: null,
+      collectionId: 252,
+      collectionCode: 'cj100102',
+      collectionName: '整体陈列',
+      collectionType: 'sdhcl',
+      isMust: '0',
+      isValid: '0',
+      isPicture: '0',
+      pictureSource: '1',
+      isMustPicture: '0',
+      answerType: 'zp',
+      delFlag: '0',
+      useType: 1,
+      showHistory: '0',
+      taskCollectionId: 3310,
+      taskId: null,
+      examplePhoto:
+        'https://cdn-svs-test.nipponpaint.com.cn/176033302782908c7122f-027d-4dc8-8d73-859625472b5c%281%29.jpg?Expires=2075865827&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=JnndklXdShGjFaD%2FqrjnMMj2dGQ%3D',
+      contactPhone: null,
+      itemList: null,
+      useFrequency: 19,
+      collectionRelatedId: null,
+      collectionOptionId: null,
+      levelDeep: null,
+      seqence: null,
+      inventoryNum: null,
+      signDictype: null,
+      relevancyItemId: null,
+      relevancyItemName: null,
+      relevancyItem: false,
+      collectionOptionList: null,
+      fileInfoList: [
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 17:37:20',
+          updateBy: '',
+          updateTime: '2026-01-12 17:37:19',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639242,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 91,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120537154.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120537154.jpg?Expires=2083743439&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=27%2FqhgrHZqHspKKTAO7u4j4gdmw%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=4Pym0-8rvczkuQCcJtlHZd1RPnZL_mqEDX_8eel1QiFvZ_kIFtyMzuIA6Wz7Jhi39Ok_mekbFv8nPzf6VVhoy5MMBTu94kbaaJnWcH-Ak8-zo2EMDj73xCYBPLFuQqLagiblBAVO7zngWPfE8i9TpLGNslP0emn5ygHEjJFCi_DjCbxtYJk1JAeoEB-OR2Tde8go903t29NetHOcU9nhzg&media_id=3RNbG_xTtOWoJs5P_ec-F6oEynpsGdb4Cg8PMVV77gdQlOJff76DTp8t6lJjY5WLQKeKDV82HlQHwn876hleshA',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 17:37:20',
+          updateBy: '',
+          updateTime: '2026-01-12 17:37:19',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639241,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 98,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120537153.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120537153.jpg?Expires=2083743439&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=KLVDY2ONFVEyUlc06GEWUXUc1YQ%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=4Pym0-8rvczkuQCcJtlHZd1RPnZL_mqEDX_8eel1QiFvZ_kIFtyMzuIA6Wz7Jhi39Ok_mekbFv8nPzf6VVhoy5MMBTu94kbaaJnWcH-Ak8-zo2EMDj73xCYBPLFuQqLagiblBAVO7zngWPfE8i9TpLGNslP0emn5ygHEjJFCi_DjCbxtYJk1JAeoEB-OR2Tde8go903t29NetHOcU9nhzg&media_id=3sRGyhLeDlvgqkCKc6JDCzBfna7-46iCQvN8SpHYhsbN7mS-UWq5gPKA92o_jK6TtetkYGWLW-mbUyBBT-k_52g',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 17:37:20',
+          updateBy: '',
+          updateTime: '2026-01-12 17:37:19',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639240,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 97,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120537152.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120537152.jpg?Expires=2083743438&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=RWF40truLsmFRP2eWCC8vLXkhVQ%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=4Pym0-8rvczkuQCcJtlHZd1RPnZL_mqEDX_8eel1QiFvZ_kIFtyMzuIA6Wz7Jhi39Ok_mekbFv8nPzf6VVhoy5MMBTu94kbaaJnWcH-Ak8-zo2EMDj73xCYBPLFuQqLagiblBAVO7zngWPfE8i9TpLGNslP0emn5ygHEjJFCi_DjCbxtYJk1JAeoEB-OR2Tde8go903t29NetHOcU9nhzg&media_id=3Syoq301LGwty8v23_TIOveXrBoi8LoUUhM9XeYcGYJbjKQ1QJWhs2DUgerO_35S_ja-lOp-4CkpgXr3_Fsh24A',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 17:37:20',
+          updateBy: '',
+          updateTime: '2026-01-12 17:37:19',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639239,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 93,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120537151.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120537151.jpg?Expires=2083743438&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=bX3y0xc35Uei4sIudxV7dHktTj4%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=4Pym0-8rvczkuQCcJtlHZd1RPnZL_mqEDX_8eel1QiFvZ_kIFtyMzuIA6Wz7Jhi39Ok_mekbFv8nPzf6VVhoy5MMBTu94kbaaJnWcH-Ak8-zo2EMDj73xCYBPLFuQqLagiblBAVO7zngWPfE8i9TpLGNslP0emn5ygHEjJFCi_DjCbxtYJk1JAeoEB-OR2Tde8go903t29NetHOcU9nhzg&media_id=3zB7QrnT0_QXdMEJaO17YunX6-NwpKVo4_CPyKBSHngBDN_-Oin7_a1rc8PGplhPhcR13eQYE4d7A_9m6S8hZRQ',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 17:37:20',
+          updateBy: '',
+          updateTime: '2026-01-12 17:37:19',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639238,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 105,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120537150.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120537150.jpg?Expires=2083743438&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=f75hQUp%2FuSHChTdP4c0Ra1IWlVw%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=4Pym0-8rvczkuQCcJtlHZd1RPnZL_mqEDX_8eel1QiFvZ_kIFtyMzuIA6Wz7Jhi39Ok_mekbFv8nPzf6VVhoy5MMBTu94kbaaJnWcH-Ak8-zo2EMDj73xCYBPLFuQqLagiblBAVO7zngWPfE8i9TpLGNslP0emn5ygHEjJFCi_DjCbxtYJk1JAeoEB-OR2Tde8go903t29NetHOcU9nhzg&media_id=3NwXHIxwFM69b9O6z7iI1hRvgbtAgYW8e2ZTV14DfOoGwDxvBbOQq6FR1HsaLrFKaQ0XkVpSZK8Mu2OcpDvGYoQ',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+        {
+          searchValue: null,
+          createBy: 'YueALong',
+          createTime: '2026-01-12 15:48:37',
+          updateBy: '',
+          updateTime: '2026-01-12 15:48:36',
+          remark: null,
+          params: {},
+          pageSize: null,
+          pageNum: null,
+          id: 9639237,
+          userId: null,
+          objectId: null,
+          storeId: null,
+          visitsId: 28326220,
+          fileSize: 181,
+          fileName: '岳阿龙-生动化陈列-吴中区郭巷金钥匙五金经营部-202601120348360.jpg',
+          fileType: 'jpg',
+          fileUrl:
+            'https://cdn-svs-test.nipponpaint.com.cn/%E5%B2%B3%E9%98%BF%E9%BE%99-%E7%94%9F%E5%8A%A8%E5%8C%96%E9%99%88%E5%88%97-%E5%90%B4%E4%B8%AD%E5%8C%BA%E9%83%AD%E5%B7%B7%E9%87%91%E9%92%A5%E5%8C%99%E4%BA%94%E9%87%91%E7%BB%8F%E8%90%A5%E9%83%A8-202601120348360.jpg?Expires=2083736916&OSSAccessKeyId=LTAI5tG1DTJFA16BHkzHVxjz&Signature=LePiUZJjWySpRUE1iCz6RAKjO18%3D',
+          fileUrlOld:
+            'https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=NoReDRUW-JAALmnKltMD0KYuxAVjwrCNg38BediE4G0v8r_mjOhqemXSUXXtpdOxPqJTTP0TsV04FPQ_UCQlj6aWA1jp0--w7VKp6u5WhZkFaQKxbX0r_32JXLjLNfOxhkezk7RstwdV_nPYQJpuYhk9JjWCc7yewc-Ij4ScLVZv7nn89FB-QV97lG2hOPWv4qouAPuUSqdKltrgXIavKg&media_id=3AntPxvbkldjBn8sffnQJ-FG6xRz0fQPSmCrLYMJLUh6Eb7gwwzPXi_Ew8epoj3acGaelWXuSGPJkCwBMCryoZQ',
+          frameUrl: null,
+          objectType: 'rw-sdhcl',
+          storeGroupId: '1153,1152,1131,1123,1122,1114,1100,1000,862,839,804,795,770',
+          taskId: 1040,
+          instanceId: null,
+          taskName: null,
+          taskType: null,
+          inspectionType: null,
+          unManage: null,
+          firstCollectionId: null,
+          secondCollectionId: null,
+          thirdCollectionId: null,
+          fourthCollectionId: null,
+          deviceCode: null,
+          putInCode: null,
+          equipmentCode: null,
+          collectionItemId: 252,
+          photoIdentifyId: null,
+          writeAgain: '0',
+          delFlag: null,
+          base64Url: null,
+          frequencyReset: '0',
+          taskIdList: null,
+          ids: null,
+          visitsIds: null,
+          startTime: null,
+          stopTime: null,
+        },
+      ],
+      maxValue: null,
+      materialFrequency: null,
+      continuousShoot: '1',
+      status: null,
     };
+    // this.getDetaile();
   },
-  activated() {},
   methods: {
+    getDetaile() {
+      console.log(this.$route.query);
+      getCollectionInfosBatch({
+        storeCode: this.$route.query.storeCode,
+        insert: true,
+        id: this.$route.query.storeCode,
+        taskIds: this.taskIds.split(','),
+      }).then((res) => {
+        if (res.data && res.data.legnth) {
+          this.formData = res.data[0];
+        } else {
+          this.formData = null;
+        }
+      });
+    },
     onSubmit() {},
     onClickLeft() {
       this.$router.go(-1);
@@ -78,5 +483,43 @@ export default {
 </script>
 <style lang="scss" scoped>
 .taskPhotoTaking {
+  display: flex;
+  flex-direction: column;
+  background: #fff;
+  .content {
+    .formLabel {
+      margin-left: 20px;
+      border-bottom: 1px solid #f1f1f1;
+    }
+    .formLabel .van-cell {
+      padding: 10px 0;
+    }
+    .formLabel .van-cell::after {
+      border: 0;
+    }
+    .formLabel .van-field {
+      border: 1px solid #f1f1f1;
+      padding: 6px;
+      width: 100%;
+      border-radius: 4px;
+      overflow: hidden;
+    }
+    .formLabel .van-field__control {
+      padding: 0 10px;
+    }
+    .formLabel .formLabeltitle {
+      position: absolute;
+      top: 8px;
+    }
+    .z-cell .van-cell__title {
+      font-size: 16px;
+    }
+    .van-f-red {
+      color: red;
+      width: 8px;
+      display: inline-block;
+      line-height: 26px;
+    }
+  }
 }
 </style>