Selaa lähdekoodia

Merge branch 'release'

# Conflicts:
#	src/views/deviceWithin/index.vue
zhujindu 11 tuntia sitten
vanhempi
commit
f74e7365a6

+ 158 - 44
src/components/deleteUploadImgTaskPhoto.vue

@@ -4,7 +4,6 @@
       <van-col span="6" style="" v-if="insert == 'true' && formData.processStatus != 1">
         <div class="addImg">
           <uploadVNormalTaskPhoto
-            :imgArr="imgs"
             :shouws="true"
             :storeGroupId="storeGroupId"
             :taskList="taskIds.split(',')"
@@ -20,39 +19,27 @@
             ref="uploadVNormal" />
         </div>
       </van-col>
-      <van-col span="6" v-for="(urls, index) in imgs" :key="urls.id">
+      <van-col span="6" v-for="(urls, index) in imgArr" :key="index">
         <div class="imgview">
           <van-icon
-            v-if="
-              (photoIdentifyType != 6 || photoIdentifyType != 7) &&
-              insert == 'true' &&
-              formData.processStatus != 1
-            "
+            v-if="insert == 'true' && formData.processStatus != 1"
             name="close"
             size="16"
-            v-on:click="deleteImg(index, urls.fileIdSplicing)" />
+            v-on:click="deleteImg(index, urls)" />
           <img
-            v-if="urls.type == '2'"
-            :src="urls.fileUrl"
+            :src="urls.fileUrl || urls.mediaFileUrl"
             width="100px"
             height="100px"
             @click="previewsImg(index)" />
-          <img
+          <!-- <img
             v-else
             :src="urls.fileUrl"
             width="100px"
             height="100px"
-            @click="previewsImg(index)" />
+            @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>
 
@@ -60,9 +47,16 @@
 import { ImagePreview } from 'vant';
 import { removePhotoBatch } from '@/api/index';
 import uploadVNormalTaskPhoto from '@/components/uploadVNormalTaskPhoto';
+import { mapState } from 'vuex';
+import { getTicketFun } from '@/utils/TXApiFun';
 export default {
   name: 'deleteUploadImgTaskPhoto',
   components: { uploadVNormalTaskPhoto },
+  computed: {
+    ...mapState({
+      userInfo: (state) => state.user.userInfo,
+    }),
+  },
   props: {
     formData: {
       type: Object,
@@ -70,12 +64,6 @@ export default {
         return {};
       },
     },
-    imgs: {
-      type: Array,
-      default() {
-        return [];
-      },
-    },
     photoIdentifyType: {
       // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招,6:sku陈列照)
       type: String,
@@ -119,10 +107,30 @@ export default {
       type: String,
       default: 'false',
     },
+    fileInfoList: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
   },
   watch: {
-    imgs: {
-      handler(val) {},
+    formData: {
+      handler(val) {
+        // <!-- 0=企业微信,1=H5相机 -->
+        if (this.userInfo.photoMethod == '1') {
+          this.imgArr = this.fileInfoList || [];
+        } else {
+          this.imgArr = [];
+          if (this.formData.mediaInfos) {
+            getTicketFun(['downloadImage']).then(() => {
+              this.toastLoading(0, '加载中,请稍候...', true);
+              let mediaInfosCopy = JSON.parse(JSON.stringify(this.formData.mediaInfos));
+              this.downloadImage(mediaInfosCopy);
+            });
+          }
+        }
+      },
       deep: true,
       immediate: true,
     },
@@ -130,34 +138,140 @@ export default {
   data() {
     return {
       url: process.env.VUE_APP_Target1 + process.env.VUE_APP_BASE_API,
+      imgArr: [],
+      mediaIds: [],
+      locationRemark: '',
+      isUploadImg: true,
     };
   },
   methods: {
-    deleteImg(index, fileIdList) {
-      removePhotoBatch({ fileIdList: fileIdList.split(',') }).then((res) => {
-        if (res.code == 200) {
-          this.$toast('删除成功!');
-          this.$emit('upDataDetail');
+    downloadImage(mediaInfos) {
+      if (!mediaInfos.length) {
+        this.toastLoading().clear();
+        return;
+      } else {
+        let mediaitem = mediaInfos.pop();
+        if (mediaitem.fileUrl) {
+          this.imgArr.push(mediaitem);
+          this.downloadImage(mediaInfos);
         } else {
-          this.$toast('删除失败!');
+          wx.downloadImage({
+            serverId: mediaitem.mediaId,
+            isShowProgressTips: 0, // 默认为1,显示进度提示
+            success: (res) => {
+              wx.getLocalImgData({
+                localId: res.localId,
+                success: (res2) => {
+                  this.imgArr.push({
+                    mediaId: mediaitem.mediaId,
+                    mediaFileUrl: res2.localData,
+                  });
+                  this.downloadImage(mediaInfos);
+                },
+                fail: (err) => {
+                  console.error('获取本地图片数据失败:', err);
+                  this.$toast('获取图片数据失败');
+                  this.toastLoading().clear();
+                  this.downloadImage(mediaInfos);
+                },
+              });
+            },
+            fail: (err) => {
+              console.error('下载图片失败:', err);
+              this.$toast('下载图片失败,请重试');
+              // 可以选择继续下载其他图片或停止
+              this.downloadImage(mediaInfos);
+            },
+          });
         }
-      });
+      }
     },
-    previewsImg(index) {
-      var arrimg = [];
-      for (var imgi = 0; imgi < this.imgs.length; imgi++) {
-        arrimg.push(this.imgs[imgi].fileUrl);
+    deleteImg(index, urls) {
+      // <!-- 0=企业微信,1=H5相机 -->
+      if (this.userInfo.photoMethod == '1') {
+        removePhotoBatch({ fileIdList: urls.fileIdSplicing.split(',') }).then((res) => {
+          if (res.code == 200) {
+            this.$toast('删除成功!');
+            this.$emit('upDataDetail');
+          } else {
+            this.$toast('删除失败!');
+          }
+        });
+      } else {
+        this.imgArr.splice(index, 1);
       }
+    },
+    previewsImg(index) {
+      let urls = this.imgArr.map((item) => item.fileUrl || item.mediaFileUrl);
       ImagePreview({
-        images: arrimg,
+        images: urls,
         startPosition: index,
-        onClose() {
-          // do something
-        },
       });
     },
-    newimgarr() {
-      this.$emit('upDataDetail');
+    newimgarr(data) {
+      const { localIds, locationRemark, source } = data;
+      this.locationRemark = locationRemark;
+      console.log(source);
+      // 0=企业微信,1=H5相机
+      if (this.userInfo.photoMethod == '0') {
+        this.isUploadImg = false;
+        const startIndex = this.imgArr.length;
+        this.imgArr = this.imgArr.concat(
+          localIds.map((item) => {
+            return {
+              mediaId: '',
+              mediaFileUrl: item,
+            };
+          }),
+        );
+        this.$nextTick(() => {
+          this.syncUpload(localIds, startIndex);
+        });
+      } else {
+        this.$emit('upDataDetail');
+      }
+      // if (this.isIOS()) {
+      //   this.imgArr = this.imgArr.concat([...localIds]);
+      //   // 解决ios微信localId无法直接使用的问题,获取base64后再上传
+      //   // this.setIosImg(localIds);
+      // } else {
+      //   this.imgArr = this.imgArr.concat([...localIds]);
+      // }
+      // this.$emit('upDataDetail');
+    },
+    syncUpload(localIds, baseIndex = 0, callback) {
+      if (!localIds.length) {
+        this.isUploadImg = true;
+        callback && callback();
+        return;
+      } else {
+        var localId = localIds.pop();
+        wx.uploadImage({
+          localId: localId,
+          isShowProgressTips: 0, // 默认为1,显示进度提示
+          success: (res) => {
+            const index = baseIndex + localIds.length;
+            if (this.imgArr[index]) {
+              this.imgArr[index].mediaId = res.serverId;
+            }
+            this.syncUpload(localIds, baseIndex, callback);
+          },
+        });
+      }
+    },
+    isIOS() {
+      return /iPhone|iPad|iPod/i.test(navigator.userAgent);
+    },
+    setIosImg(localIds) {
+      localIds.forEach((localId) => {
+        this.wx.getLocalImgData({
+          localId: localId, // 图片的localID
+          success: (res) => {
+            console.log(res.localData);
+            // this.imgArr.push(res.localData);
+          },
+        });
+      });
     },
   },
 };

+ 9 - 107
src/components/uploadVNormalTaskPhoto.vue

@@ -89,58 +89,6 @@ export default {
       type: [String, Number],
       default: '',
     },
-    // uploadid: {
-    //   type: String,
-    //   default: '',
-    // },
-    // secondCollectionId: {
-    //   type: [String, Number],
-    //   default: '',
-    // },
-    // firstCollectionId: {
-    //   type: String,
-    //   default: '',
-    // },
-    // fourthCollectionId: {
-    //   type: String,
-    //   default: '',
-    // },
-    // thirdCollectionId: {
-    //   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: '',
-    // },
-    // equipmentCode: {
-    //   // 当前任务对应的资产编号
-    //   type: String,
-    //   default: '',
-    // },
-    // inStore: {
-    //   // 调色机是否在店
-    //   type: String,
-    //   default: '否',
-    // },
   },
   computed: {
     ...mapState({
@@ -271,25 +219,13 @@ export default {
                 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);
-                  //   },
-                  // });
+                  that.$emit('newimgarr', {
+                    localIds: localIds,
+                    locationRemark: that.addressesRemark,
+                    collectionItemId: that.collectionItemId,
+                    source: 'weixin',
+                  });
+                  // that.syncUpload(localIds);
                 },
               });
             });
@@ -306,7 +242,7 @@ export default {
           isShowProgressTips: 1, // 默认为1,显示进度提示
           success: (res) => {
             this.localIdsArr.push(res.serverId);
-            this.syncUpload(localIds);
+            // this.syncUpload(localIds);
           },
         });
       }
@@ -315,19 +251,6 @@ export default {
       this.close();
       var that = this;
       var form = {
-        // mediaIds: [],
-        // fileUrl: '',
-        // objectType: that.objectType,
-        // storeGroupId: that.storeGroupId,
-        // taskList: that.taskList,
-        // visitsId: that.visitsId,
-        // visitSource: '1',
-        // locationRemark: that.addressesRemark,
-        // deviceCode: that.deviceCode, //设备编号
-        // putInCode: that.putInCode, //投放编号
-        // equipmentCode: that.equipmentCode,
-        // inStore: that.inStore,
-
         mediaIds: [], //	是	List<String>	图片素材id集合
         visitSource: '1', //	是	Long	拜访模式
         storeGroupId: that.storeGroupId, //	是	string	门店任务组,多个用逗号隔开
@@ -417,10 +340,8 @@ export default {
       });
       this.$emit('newimgarr', {
         fileInfoList: fileInfoList,
-        // fileUrl: res.data.url,
-        // id: res.data.fileId,
-        // type: 2,
         photoIdentifyType: this.photoIdentifyType,
+        source: 'H5',
       });
     },
     // 照片是否入库,1.照片识别三次不通过仍要上传,2.照片识别通过
@@ -431,23 +352,6 @@ export default {
         (this.photoIdentifyType != '6' || this.photoIdentifyType != '7')
       ) {
         var form = {
-          // mediaIds: [],
-          // fileUrl: '',
-          // objectType: that.objectType,
-          // visitSource: '1', //	Long	拜访模式
-          // storeGroupId: this.storeGroupId, //	string	门店任务组,多个用逗号隔开
-          // visitsId: that.visitsId,
-          // taskList: this.taskList, //	string	任务id
-          // locationRemark: this.addressesRemark, //	String	当前地址信息
-          // // firstCollectionId: this.firstCollectionId, //	Long	第一级采集项id,取当前采集项的字段就行
-          // // secondCollectionId: this.secondCollectionId, //	Long	第二级采集项id,取当前采集项的字段就行
-          // // putInCode: this.putInCode, //	String	当前任务对应的投放编号
-          // // deviceCode: this.deviceCode, //	String	当前任务对应的设备编号
-          // url: res.data.url, //	String	当前拍摄图片的url
-          // businessId: res.data.businessId, // 当前拍摄图片id
-          // feedbackMessage: res.feedbackMessage,
-          // equipmentCode: this.equipmentCode,
-          // inStore: this.inStore,
           mediaIds: [], //	是	List<String>	图片素材id集合
           visitSource: '1', //	是	Long	拜访模式
           storeGroupId: this.storeGroupId, //	是	string	门店任务组,多个用逗号隔开
@@ -506,8 +410,6 @@ export default {
 .questionNamep {
   font-size: 16px;
   color: #484848;
-  // line-height: 40px;
-  // padding: 0 15px;
   box-sizing: border-box;
   position: relative;
 

+ 443 - 428
src/views/deviceOutside/index.vue

@@ -26,443 +26,445 @@
     </div>
     <!--        主体内容-->
     <div class="container content" style="margin-top: 144px" @touchmove="handleTouch">
-      <van-list
-        class="myList"
-        v-model="loading"
-        :finished="finished"
-        finished-text="--已经到底了--"
-        @load="onLoad">
-        <div class="cellcontent" v-for="(item, index) in list" :key="index">
-          <van-cell>
-            <div class="card">
-              <div class="title titlero">
-                <template v-if="item.storeLabels">
-                  <!-- 金牌店ABC -->
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeA.png')"
-                    v-if="item.storeLabels.storeA" />
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeB.png')"
-                    v-if="item.storeLabels.storeB" />
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeC.png')"
-                    v-if="item.storeLabels.storeC" />
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeD.png')"
-                    v-if="item.storeLabels.storeD" />
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeE.png')"
-                    v-if="item.storeLabels.storeE" />
-                  <img
-                    class="JPABC"
-                    :src="require('@/assets/Icon/storeS.png')"
-                    v-if="item.storeLabels.storeS" />
-                </template>
-                <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
-                  <span>{{ item.storeName }}</span>
-                  (<span>{{ item.storeCode }}</span
-                  >)
-                </span>
-                <span class="btn" :data-clipboard-text="item.storeCode">
-                  <van-icon
-                    :name="paste"
-                    color="#ee0a24"
-                    size="20"
-                    style="top: 6px; margin-left: 4px" />
-                </span>
-                <!-- "approvalStatus": 1:已结案;0:未结案, -->
-                <!-- "processApprovalStatus": 审批状态(0=未提交,1=已提交待审核,2=审批通过,3=审批拒绝) -->
-                <template v-if="item.approvalStatus == 0">
-                  <span class="statusIcon submit" v-if="item.processApprovalStatus == 1"
-                    >已提交</span
-                  >
-                  <span class="statusIcon noSubmit" v-if="item.processApprovalStatus == 0"
-                    >未提交</span
-                  >
-                </template>
-              </div>
-              <div class="info" style="position: relative">联系人:{{ item.contactName }}</div>
-              <div class="info">类型:{{ item.storeCategory }}&nbsp;</div>
-              <div class="info" style="position: relative" @click="buryingPointFn(item)">
-                联系电话:<a
-                  v-if="item.telephone"
-                  style="color: #0057ba; font-weight: bold; text-decoration: underline"
-                  :href="'tel:' + item.telephone"
-                  >{{ item.telephone }}<van-icon name="phone"
-                /></a>
-                <div style="position: absolute; bottom: 0px; right: 0px">
-                  <!-- 凤凰客户 -->
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="120"
-                    trigger="click"
-                    content="该客户为凤凰客户">
-                    <div
-                      v-if="item.storeLabels.fhCustomer"
-                      class="visitStoreIco"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="require('@/assets/Icon/fenghuangjihua.png')" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover zpover6"
-                    placement="bottom-start"
-                    trigger="click">
-                    <div>
-                      <p>
-                        本店{{ timeData }}下单SKU数:<a
-                          @click="linkList(item)"
-                          style="text-decoration: underline"
-                          >点击查看详情</a
-                        >
-                      </p>
-                    </div>
-                    <div
-                      class="visitStoreIco"
-                      v-if="item.storeLabels.zysslNums !== false"
-                      style="background-color: #fff; position: relative"
-                      slot="reference">
-                      <p
-                        style="
-                          width: 100%;
-                          position: absolute;
-                          z-index: 1;
-                          top: 0.2px;
-                          width: 22px;
-                          margin: 0;
-                          margin-left: 3.6px;
-                          text-align: center;
-                          font-size: 12px;
-                        ">
-                        {{ item.storeLabels.zysslNums }}
-                      </p>
-                      <van-icon :name="ord" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover zpover5"
-                    placement="bottom"
-                    width="200"
-                    trigger="click">
-                    <div v-if="item.storeLabels">
-                      <p>{{ timeData }}未通过的陈列任务:</p>
-                      <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
-                        <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <van-list
+          class="myList"
+          v-model="loading"
+          :finished="finished"
+          finished-text="--已经到底了--"
+          @load="onLoad">
+          <div class="cellcontent" v-for="(item, index) in list" :key="index">
+            <van-cell>
+              <div class="card">
+                <div class="title titlero">
+                  <template v-if="item.storeLabels">
+                    <!-- 金牌店ABC -->
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeA.png')"
+                      v-if="item.storeLabels.storeA" />
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeB.png')"
+                      v-if="item.storeLabels.storeB" />
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeC.png')"
+                      v-if="item.storeLabels.storeC" />
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeD.png')"
+                      v-if="item.storeLabels.storeD" />
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeE.png')"
+                      v-if="item.storeLabels.storeE" />
+                    <img
+                      class="JPABC"
+                      :src="require('@/assets/Icon/storeS.png')"
+                      v-if="item.storeLabels.storeS" />
+                  </template>
+                  <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
+                    <span>{{ item.storeName }}</span>
+                    (<span>{{ item.storeCode }}</span
+                    >)
+                  </span>
+                  <span class="btn" :data-clipboard-text="item.storeCode">
+                    <van-icon
+                      :name="paste"
+                      color="#ee0a24"
+                      size="20"
+                      style="top: 6px; margin-left: 4px" />
+                  </span>
+                  <!-- "approvalStatus": 1:已结案;0:未结案, -->
+                  <!-- "processApprovalStatus": 审批状态(0=未提交,1=已提交待审核,2=审批通过,3=审批拒绝) -->
+                  <template v-if="item.approvalStatus == 0">
+                    <span class="statusIcon submit" v-if="item.processApprovalStatus == 1"
+                      >已提交</span
+                    >
+                    <span class="statusIcon noSubmit" v-if="item.processApprovalStatus == 0"
+                      >未提交</span
+                    >
+                  </template>
+                </div>
+                <div class="info" style="position: relative">联系人:{{ item.contactName }}</div>
+                <div class="info">类型:{{ item.storeCategory }}&nbsp;</div>
+                <div class="info" style="position: relative" @click="buryingPointFn(item)">
+                  联系电话:<a
+                    v-if="item.telephone"
+                    style="color: #0057ba; font-weight: bold; text-decoration: underline"
+                    :href="'tel:' + item.telephone"
+                    >{{ item.telephone }}<van-icon name="phone"
+                  /></a>
+                  <div style="position: absolute; bottom: 0px; right: 0px">
+                    <!-- 凤凰客户 -->
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="120"
+                      trigger="click"
+                      content="该客户为凤凰客户">
+                      <div
+                        v-if="item.storeLabels.fhCustomer"
+                        class="visitStoreIco"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="require('@/assets/Icon/fenghuangjihua.png')" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover zpover6"
+                      placement="bottom-start"
+                      trigger="click">
+                      <div>
+                        <p>
+                          本店{{ timeData }}下单SKU数:<a
+                            @click="linkList(item)"
+                            style="text-decoration: underline"
+                            >点击查看详情</a
+                          >
+                        </p>
+                      </div>
+                      <div
+                        class="visitStoreIco"
+                        v-if="item.storeLabels.zysslNums !== false"
+                        style="background-color: #fff; position: relative"
+                        slot="reference">
+                        <p
+                          style="
+                            width: 100%;
+                            position: absolute;
+                            z-index: 1;
+                            top: 0.2px;
+                            width: 22px;
+                            margin: 0;
+                            margin-left: 3.6px;
+                            text-align: center;
+                            font-size: 12px;
+                          ">
+                          {{ item.storeLabels.zysslNums }}
+                        </p>
+                        <van-icon :name="ord" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover zpover5"
+                      placement="bottom"
+                      width="200"
+                      trigger="click">
+                      <div v-if="item.storeLabels">
+                        <p>已参加:</p>
+                        <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
+                          {{ tt }}
+                        </p>
+                      </div>
+                      <div
+                        class="visitStoreIco"
+                        v-if="item.storeLabels.targetOne"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="targetOne" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="120"
+                      trigger="click"
+                      content="调色机7天未调色">
+                      <div
+                        v-if="item.storeLabels.stopColorMixerSeven"
+                        class="visitStoreIco"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="Network" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="120"
+                      trigger="click"
+                      content="调色机当月未调色">
+                      <div
+                        v-if="item.storeLabels.stopColorMixerMonth"
+                        class="visitStoreIco"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="WiFi" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="200"
+                      trigger="click"
+                      content="同城店近60天未下单">
+                      <div
+                        v-if="item.storeLabels.fxNoOrder"
+                        class="visitStoreIco"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="order60" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="200"
+                      trigger="click"
+                      content="金牌店近30天未下单">
+                      <div
+                        v-if="item.storeLabels.noOrder"
+                        class="visitStoreIco"
+                        style="background-color: #fff"
+                        slot="reference">
+                        <van-icon :name="order" size="26" />
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover"
+                      placement="bottom"
+                      width="200"
+                      trigger="click"
+                      content="本店本月进过专业时时丽">
+                      <div
+                        class="visitStoreIco"
+                        v-if="item.storeLabels.zyssl"
+                        style="background-color: #ed5c68"
+                        slot="reference">
+                        专
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      popper-class="zpover zpover1"
+                      placement="bottom"
+                      width="200"
+                      trigger="click"
+                      content="本店本月进过超好贴">
+                      <div
+                        v-if="item.storeLabels.chtczj"
+                        class="visitStoreIco"
+                        style="background-color: #0057ba"
+                        slot="reference">
+                        超
+                      </div>
+                    </el-popover>
+                    <el-popover
+                      placement="bottom"
+                      popper-class="zpover zpover1 zpover1sb"
+                      :disabled="!item.userVisitTimesMap"
+                      trigger="click">
+                      <div
+                        v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
+                        class="visitStoreIco"
+                        slot="reference"
+                        style="background-color: #fff; position: relative">
+                        <p
+                          style="
+                            width: 100%;
+                            position: absolute;
+                            z-index: 10;
+                            top: -2px;
+                            margin: 0;
+                            text-align: center;
+                            font-size: 12px;
+                          ">
+                          {{ item.storeLabels.visitTimes }}
+                        </p>
+                        <!-- A级金牌店拜访次数少于needVisitNum 需要拜访的次数 -->
+                        <van-icon
+                          :name="require('@/assets/ordernumRed.png')"
+                          size="26"
+                          v-if="
+                            (item.storeLabels.storeA || item.storeLabels.storeS) &&
+                            item.needVisitNum &&
+                            item.storeLabels.visitTimes < item.needVisitNum
+                          " />
+                        <!-- 其他门店拜访 -->
+                        <van-icon :name="require('@/assets/ordernum.png')" size="26" v-else />
+                      </div>
+                      <p style="text-align: center; background: #fff; color: #000; padding: 5px 0">
+                        本店本月已拜访过{{ item.storeLabels.visitTimes }}次
                       </p>
-                    </div>
-                    <div
-                      class="visitStoreIco"
-                      v-if="item.storeLabels.targetOne"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="targetOne" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="120"
-                    trigger="click"
-                    content="调色机7天未调色">
-                    <div
-                      v-if="item.storeLabels.stopColorMixerSeven"
-                      class="visitStoreIco"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="Network" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="120"
-                    trigger="click"
-                    content="调色机当月未调色">
-                    <div
-                      v-if="item.storeLabels.stopColorMixerMonth"
-                      class="visitStoreIco"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="WiFi" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="200"
-                    trigger="click"
-                    content="同城店近60天未下单">
-                    <div
-                      v-if="item.storeLabels.fxNoOrder"
-                      class="visitStoreIco"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="order60" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="200"
-                    trigger="click"
-                    content="金牌店近30天未下单">
-                    <div
-                      v-if="item.storeLabels.noOrder"
-                      class="visitStoreIco"
-                      style="background-color: #fff"
-                      slot="reference">
-                      <van-icon :name="order" size="26" />
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover"
-                    placement="bottom"
-                    width="200"
-                    trigger="click"
-                    content="本店本月进过专业时时丽">
-                    <div
-                      class="visitStoreIco"
-                      v-if="item.storeLabels.zyssl"
-                      style="background-color: #ed5c68"
-                      slot="reference">
-                      专
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    popper-class="zpover zpover1"
-                    placement="bottom"
-                    width="200"
-                    trigger="click"
-                    content="本店本月进过超好贴">
-                    <div
-                      v-if="item.storeLabels.chtczj"
-                      class="visitStoreIco"
-                      style="background-color: #0057ba"
-                      slot="reference">
-                      超
-                    </div>
-                  </el-popover>
-                  <el-popover
-                    placement="bottom"
-                    popper-class="zpover zpover1 zpover1sb"
-                    :disabled="!item.userVisitTimesMap"
-                    trigger="click">
-                    <div
-                      v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
-                      class="visitStoreIco"
-                      slot="reference"
-                      style="background-color: #fff; position: relative">
                       <p
-                        style="
-                          width: 100%;
-                          position: absolute;
-                          z-index: 10;
-                          top: -2px;
-                          margin: 0;
-                          text-align: center;
-                          font-size: 12px;
-                        ">
-                        {{ item.storeLabels.visitTimes }}
-                      </p>
-                      <!-- A级金牌店拜访次数少于needVisitNum 需要拜访的次数 -->
-                      <van-icon
-                        :name="require('@/assets/ordernumRed.png')"
-                        size="26"
                         v-if="
-                          (item.storeLabels.storeA || item.storeLabels.storeS) &&
-                          item.needVisitNum &&
-                          item.storeLabels.visitTimes < item.needVisitNum
-                        " />
-                      <!-- 其他门店拜访 -->
-                      <van-icon :name="require('@/assets/ordernum.png')" size="26" v-else />
-                    </div>
-                    <p style="text-align: center; background: #fff; color: #000; padding: 5px 0">
-                      本店本月已拜访过{{ item.storeLabels.visitTimes }}次
-                    </p>
-                    <p
-                      v-if="
-                        (item.storeLabels.storeA || item.storeLabels.storeS) && item.needVisitNum
-                      "
-                      style="text-align: center; background: #fff; color: red; padding: 5px 0">
-                      <span v-if="item.storeLabels.storeA">A</span>
-                      <span v-if="item.storeLabels.storeS">S</span>
-                      级金牌店拜访标准:1月{{ item.needVisitNum }}次
-                    </p>
-                    <el-table :data="item.userVisitTimesMap" border max-height="180px">
-                      <el-table-column label="业务员" prop="userName" />
-                      <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
-                    </el-table>
-                  </el-popover>
+                          (item.storeLabels.storeA || item.storeLabels.storeS) && item.needVisitNum
+                        "
+                        style="text-align: center; background: #fff; color: red; padding: 5px 0">
+                        <span v-if="item.storeLabels.storeA">A</span>
+                        <span v-if="item.storeLabels.storeS">S</span>
+                        级金牌店拜访标准:1月{{ item.needVisitNum }}次
+                      </p>
+                      <el-table :data="item.userVisitTimesMap" border max-height="180px">
+                        <el-table-column label="业务员" prop="userName" />
+                        <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
+                      </el-table>
+                    </el-popover>
+                  </div>
                 </div>
-              </div>
-              <div class="info">
-                地址:{{ item.addressLine }}
-                <img
-                  v-if="item.storeLonExist"
-                  style="width: 36px"
-                  :src="sbpmdh"
-                  @click="linkapp(item)" />
-              </div>
-              <!-- 潜在店不显示经销商 -->
-              <template v-if="item.sfaStoreType.type != 'qzd'">
-                <!-- 分销店 -->
-                <template
-                  v-if="
-                    item.sfaStoreType &&
-                    item.sfaStoreType.type == 'fxd' &&
-                    item.sfaStoreChainsContactList
-                  ">
-                  <div class="info" v-if="typeShow">
-                    经销商:
-                    <div
-                      class="TCFXListItem"
-                      v-for="(item, index) in item.sfaStoreChainsContactList">
-                      <el-popover
-                        popper-class="zpover zpoverStoreztype"
-                        placement="bottom-start"
-                        trigger="click">
-                        <div>
-                          <div>{{ item.chainCode }}</div>
-                          <div>{{ item.chainName }}</div>
-                        </div>
-                        <div slot="reference" :key="index">
-                          {{ item.categoryDescribe }}
-                        </div>
-                      </el-popover>
+                <div class="info">
+                  地址:{{ item.addressLine }}
+                  <img
+                    v-if="item.storeLonExist"
+                    style="width: 36px"
+                    :src="sbpmdh"
+                    @click="linkapp(item)" />
+                </div>
+                <!-- 潜在店不显示经销商 -->
+                <template v-if="item.sfaStoreType.type != 'qzd'">
+                  <!-- 分销店 -->
+                  <template
+                    v-if="
+                      item.sfaStoreType &&
+                      item.sfaStoreType.type == 'fxd' &&
+                      item.sfaStoreChainsContactList
+                    ">
+                    <div class="info" v-if="typeShow">
+                      经销商:
+                      <div
+                        class="TCFXListItem"
+                        v-for="(item, index) in item.sfaStoreChainsContactList">
+                        <el-popover
+                          popper-class="zpover zpoverStoreztype"
+                          placement="bottom-start"
+                          trigger="click">
+                          <div>
+                            <div>{{ item.chainCode }}</div>
+                            <div>{{ item.chainName }}</div>
+                          </div>
+                          <div slot="reference" :key="index">
+                            {{ item.categoryDescribe }}
+                          </div>
+                        </el-popover>
+                      </div>
                     </div>
-                  </div>
+                  </template>
+                  <template v-else>
+                    <div class="info" v-if="typeShow">经销商:{{ item.chainName }}</div>
+                  </template>
                 </template>
-                <template v-else>
-                  <div class="info" v-if="typeShow">经销商:{{ item.chainName }}</div>
-                </template>
-              </template>
-              <!-- storeLonExist 门店是否存在经纬度 字段false=不显示导航和距离,true=显示 -->
-              <div class="info" v-if="item.storeLonExist">
-                距离:{{ Micrometer(item.distance) }}m
+                <!-- storeLonExist 门店是否存在经纬度 字段false=不显示导航和距离,true=显示 -->
+                <div class="info" v-if="item.storeLonExist">
+                  距离:{{ Micrometer(item.distance) }}m
+                </div>
+                <div class="info" v-if="item.cntOrderAmtYear">
+                  门店销额(全年累计):{{ Micrometer(item.cntOrderAmtYear) }}元
+                </div>
               </div>
-              <div class="info" v-if="item.cntOrderAmtYear">
-                门店销额(全年累计):{{ Micrometer(item.cntOrderAmtYear) }}元
+              <div
+                class="statstext"
+                v-if="item.stateString == '未拜访'"
+                style="background-color: #ed5c68">
+                未拜访
               </div>
-            </div>
-            <div
-              class="statstext"
-              v-if="item.stateString == '未拜访'"
-              style="background-color: #ed5c68">
-              未拜访
-            </div>
-            <div
-              class="statstext"
-              v-if="item.stateString == '拜访中'"
-              style="background-color: white">
-              <van-icon :name="times" color="#ee0a24" size="32" />
-            </div>
-            <template v-if="item.stateString == '已拜访'">
-              <template v-if="item.visitSource == 1">
-                <!-- 金牌店+同城分销店+可控店 -->
-                <template v-if="item.jinpaiStore || item.fenxiaoStore || item.kekongStore">
-                  <div class="statstext" style="background-color: #e3f0fe">
-                    <span style="color: #387bca">已拜访</span>
-                    <div
-                      class="statstextIcon"
-                      style="background-color: #0057ba"
-                      @click="openPerfectStore(item)">
-                      <div style="margin: 4px; font-size: 14px; font-weight: 600">
-                        <img
-                          style="width: 18px; height: 20px; margin: 0 5px; vertical-align: -5px"
-                          :src="require('@/assets/shouzhi.png')" />完美门店报告
+              <div
+                class="statstext"
+                v-if="item.stateString == '拜访中'"
+                style="background-color: white">
+                <van-icon :name="times" color="#ee0a24" size="32" />
+              </div>
+              <template v-if="item.stateString == '已拜访'">
+                <template v-if="item.visitSource == 1">
+                  <!-- 金牌店+同城分销店+可控店 -->
+                  <template v-if="item.jinpaiStore || item.fenxiaoStore || item.kekongStore">
+                    <div class="statstext" style="background-color: #e3f0fe">
+                      <span style="color: #387bca">已拜访</span>
+                      <div
+                        class="statstextIcon"
+                        style="background-color: #0057ba"
+                        @click="openPerfectStore(item)">
+                        <div style="margin: 4px; font-size: 14px; font-weight: 600">
+                          <img
+                            style="width: 18px; height: 20px; margin: 0 5px; vertical-align: -5px"
+                            :src="require('@/assets/shouzhi.png')" />完美门店报告
+                        </div>
                       </div>
                     </div>
-                  </div>
+                  </template>
+                  <template v-else>
+                    <div class="statstext">
+                      <span>已拜访</span>
+                    </div>
+                  </template>
                 </template>
                 <template v-else>
+                  <!-- 异常拜访 -->
                   <div class="statstext">
                     <span>已拜访</span>
                   </div>
                 </template>
               </template>
-              <template v-else>
-                <!-- 异常拜访 -->
-                <div class="statstext">
-                  <span>已拜访</span>
-                </div>
-              </template>
-            </template>
-            <div class="btnbox">
-              <van-row>
-                <van-col
-                  span="4"
-                  v-if="item.stateString != '已拜访' && customerVisits"
-                  @click="storeVisit(item)">
-                  <img :src="call" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; font-size: 11px">进入拜访</p>
-                </van-col>
-                <van-col
-                  span="4"
-                  v-if="item.storeCategory == '公装经销商'"
-                  @click="projectOutVisit(item)">
-                  <img :src="xmgj" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; font-size: 11px">项目跟进</p>
-                </van-col>
-                <van-col
-                  span="4"
-                  v-if="
-                    item.stateString != '已拜访' &&
-                    item.storeCategory != '公装经销商' &&
-                    customerVisits
-                  "
-                  @click="abnormalVisit(item)">
-                  <img :src="yichang" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                    异常拜访
-                  </p>
-                </van-col>
-                <van-col
-                  span="4"
-                  v-if="item.storeLabels.zysslNums !== false"
-                  @click="linkList(item)">
-                  <img
-                    :src="require('@/assets/recommendicon.png')"
-                    style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                    推荐下单
-                  </p>
-                </van-col>
-                <van-col span="4" v-else-if="item.showOrderButton" @click="orderFn(item)">
-                  <img :src="xiadan" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                    去下单
-                  </p>
-                </van-col>
-                <van-col span="4" v-if="item.stateString == '已拜访'" @click="Visit(item)">
-                  <img :src="bfxx" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                    拜访信息
-                  </p>
-                </van-col>
-                <van-col span="4" @click="visitFn(item)">
-                  <img :src="kehuxinxi" style="margin: 0 auto; width: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                    客户信息
-                  </p>
-                </van-col>
-                <van-col span="4" v-if="tabVal == 1" @click="storeJoinVisit(item)">
-                  <img :src="jiarujihua" style="margin: 0 auto; height: 15px; display: block" />
-                  <p style="text-align: center; margin: 0; font-size: 11px">加入计划内</p>
-                </van-col>
-              </van-row>
-            </div>
-          </van-cell>
-          <div class="lineGrey"></div>
-        </div>
-        <van-empty v-if="list.length == 0" />
-      </van-list>
+              <div class="btnbox">
+                <van-row>
+                  <van-col
+                    span="4"
+                    v-if="item.stateString != '已拜访' && customerVisits"
+                    @click="storeVisit(item)">
+                    <img :src="call" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; font-size: 11px">进入拜访</p>
+                  </van-col>
+                  <van-col
+                    span="4"
+                    v-if="item.storeCategory == '公装经销商'"
+                    @click="projectOutVisit(item)">
+                    <img :src="xmgj" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; font-size: 11px">项目跟进</p>
+                  </van-col>
+                  <van-col
+                    span="4"
+                    v-if="
+                      item.stateString != '已拜访' &&
+                      item.storeCategory != '公装经销商' &&
+                      customerVisits
+                    "
+                    @click="abnormalVisit(item)">
+                    <img :src="yichang" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                      异常拜访
+                    </p>
+                  </van-col>
+                  <van-col
+                    span="4"
+                    v-if="item.storeLabels.zysslNums !== false"
+                    @click="linkList(item)">
+                    <img
+                      :src="require('@/assets/recommendicon.png')"
+                      style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                      推荐下单
+                    </p>
+                  </van-col>
+                  <van-col span="4" v-else-if="item.showOrderButton" @click="orderFn(item)">
+                    <img :src="xiadan" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                      去下单
+                    </p>
+                  </van-col>
+                  <van-col span="4" v-if="item.stateString == '已拜访'" @click="Visit(item)">
+                    <img :src="bfxx" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                      拜访信息
+                    </p>
+                  </van-col>
+                  <van-col span="4" @click="visitFn(item)">
+                    <img :src="kehuxinxi" style="margin: 0 auto; width: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                      客户信息
+                    </p>
+                  </van-col>
+                  <van-col span="4" v-if="tabVal == 1" @click="storeJoinVisit(item)">
+                    <img :src="jiarujihua" style="margin: 0 auto; height: 15px; display: block" />
+                    <p style="text-align: center; margin: 0; font-size: 11px">加入计划内</p>
+                  </van-col>
+                </van-row>
+              </div>
+            </van-cell>
+            <div class="lineGrey"></div>
+          </div>
+          <van-empty v-if="list.length == 0" />
+        </van-list>
+      </van-pull-refresh>
     </div>
     <van-popup v-model="showPicker" position="bottom" class="textsize">
       <van-row
@@ -769,6 +771,7 @@ export default {
       customerVisits: true,
       isCompetingStores: true,
       postType: '',
+      refreshing: false,
     };
   },
   watch: {
@@ -950,6 +953,17 @@ export default {
     );
   },
   methods: {
+    onRefresh() {
+      this.pageNum = 1;
+      // 清空列表数据
+      this.finished = false;
+
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      this.loading = true;
+      this.list = [];
+      this.onLoad();
+    },
     handleTouch(e) {
       e._isScroller = true;
     },
@@ -1269,10 +1283,6 @@ export default {
     getUserOrgStoreList() {
       this.storeType = localStorage.getItem('storeType');
       this.endShow = false;
-      if (this.refreshing) {
-        this.list = [];
-        this.refreshing = false;
-      }
       var that = this;
       this.disabled = true;
       this.toastLoading(0, '加载中...', true);
@@ -1290,6 +1300,9 @@ export default {
         genDate: this.genDate,
       }).then((res) => {
         this.disabled = false;
+        if (this.refreshing) {
+          this.refreshing = false;
+        }
         this.toastLoading().clear();
         if (res.code == 200) {
           this.loading = false;
@@ -1317,6 +1330,7 @@ export default {
             this.showPopoverZ.push({ showPopover: false });
           });
         } else {
+          this.list = [];
           this.$toast(res.msg);
         }
       });
@@ -1353,10 +1367,6 @@ export default {
         forbidClick: true,
       });
       this.endShow = false;
-      if (this.refreshing) {
-        this.list = [];
-        this.refreshing = false;
-      }
       getUserOutPlaList({
         lat: that.lat,
         lon: that.lon,
@@ -1371,6 +1381,9 @@ export default {
         genDate: this.genDate,
       }).then((res) => {
         this.disabled = false;
+        if (this.refreshing) {
+          this.refreshing = false;
+        }
         if (res.code == 200) {
           loading3.clear();
           this.loading = false;
@@ -1394,6 +1407,7 @@ export default {
             this.showPopoverZ.push({ showPopover: false });
           });
         } else {
+          this.list = [];
           this.$toast(res.msg);
         }
       });
@@ -1423,6 +1437,7 @@ export default {
         //     buryingPointPosition: '销售部',
         //   });
         // }
+        localStorage.setItem('getRequestFlage', 'true');
         if (res.code == 200 || val.stateString.indexOf('拜访中') != -1) {
           if (localStorage.getItem('loginType') == 'cs') {
             var lat = '';

+ 432 - 401
src/views/deviceWithin/index.vue

@@ -51,62 +51,65 @@
     </div>
     <!--        主体内容-->
     <div class="container content" style="margin-top: 145px" @touchmove="handleTouch">
-      <div class="cellcontent" v-for="(item, index) in list" :key="index">
-        <van-cell>
-          <div class="card">
-            <div class="title">
-              <template v-if="item.storeLabels">
-                <!-- 金牌店ABC -->
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeA.png')"
-                  v-if="item.storeLabels.storeA" />
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeB.png')"
-                  v-if="item.storeLabels.storeB" />
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeC.png')"
-                  v-if="item.storeLabels.storeC" />
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeD.png')"
-                  v-if="item.storeLabels.storeD" />
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeE.png')"
-                  v-if="item.storeLabels.storeE" />
-                <img
-                  class="JPABC"
-                  :src="require('@/assets/Icon/storeS.png')"
-                  v-if="item.storeLabels.storeS" />
-              </template>
-              <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
-                <span>{{ item.storeName }}</span>
-                (<span>{{ item.storeCode }}</span
-                >)
-              </span>
-              <span class="btn" :data-clipboard-text="item.storeCode">
-                <van-icon
-                  :name="paste"
-                  color="#ee0a24"
-                  size="20"
-                  style="top: 6px; margin-left: 4px" />
-              </span>
-              <!-- "approvalStatus": 1:已结案;0:未结案, -->
-              <!-- "processApprovalStatus": 审批状态(0=未提交,1=已提交待审核,2=审批通过,3=审批拒绝) -->
-              <template v-if="item.approvalStatus == 0">
-                <span class="statusIcon submit" v-if="item.processApprovalStatus == 1">已提交</span>
-                <span class="statusIcon noSubmit" v-if="item.processApprovalStatus == 0"
-                  >未提交</span
-                >
-              </template>
-            </div>
-            <div class="info" style="position: relative">联系人:{{ item.contactName }}</div>
-            <div class="info">
-              类型:{{ item.storeCategory }} &nbsp;
-              <!-- <el-popover popper-class="zpover zpover6" placement="bottom-start" trigger="click">
+      <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+        <div class="cellcontent" v-for="(item, index) in list" :key="index">
+          <van-cell>
+            <div class="card">
+              <div class="title">
+                <template v-if="item.storeLabels">
+                  <!-- 金牌店ABC -->
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeA.png')"
+                    v-if="item.storeLabels.storeA" />
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeB.png')"
+                    v-if="item.storeLabels.storeB" />
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeC.png')"
+                    v-if="item.storeLabels.storeC" />
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeD.png')"
+                    v-if="item.storeLabels.storeD" />
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeE.png')"
+                    v-if="item.storeLabels.storeE" />
+                  <img
+                    class="JPABC"
+                    :src="require('@/assets/Icon/storeS.png')"
+                    v-if="item.storeLabels.storeS" />
+                </template>
+                <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
+                  <span>{{ item.storeName }}</span>
+                  (<span>{{ item.storeCode }}</span
+                  >)
+                </span>
+                <span class="btn" :data-clipboard-text="item.storeCode">
+                  <van-icon
+                    :name="paste"
+                    color="#ee0a24"
+                    size="20"
+                    style="top: 6px; margin-left: 4px" />
+                </span>
+                <!-- "approvalStatus": 1:已结案;0:未结案, -->
+                <!-- "processApprovalStatus": 审批状态(0=未提交,1=已提交待审核,2=审批通过,3=审批拒绝) -->
+                <template v-if="item.approvalStatus == 0">
+                  <span class="statusIcon submit" v-if="item.processApprovalStatus == 1"
+                    >已提交</span
+                  >
+                  <span class="statusIcon noSubmit" v-if="item.processApprovalStatus == 0"
+                    >未提交</span
+                  >
+                </template>
+              </div>
+              <div class="info" style="position: relative">联系人:{{ item.contactName }}</div>
+              <div class="info">
+                类型:{{ item.storeCategory }} &nbsp;
+                <!-- <el-popover popper-class="zpover zpover6" placement="bottom-start" trigger="click">
                 <div>
                   <p>
                     本店经营品项指导:
@@ -115,365 +118,375 @@
                 </div>
                 <van-icon name="question-o" size="18" slot="reference" />
               </el-popover> -->
-            </div>
-            <div class="info" style="position: relative" @click="buryingPointFn(item)">
-              联系电话:<a
-                v-if="item.telephone"
-                style="color: #0057ba; font-weight: bold; text-decoration: underline"
-                :href="'tel:' + item.telephone"
-                >{{ item.telephone }}<van-icon name="phone"
-              /></a>
-              <div style="position: absolute; bottom: 0; right: 14px">
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="120"
-                  trigger="click"
-                  content="该客户为凤凰客户">
-                  <div
-                    v-if="item.storeLabels.fhCustomer"
-                    class="visitStoreIco"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="require('@/assets/Icon/fenghuangjihua.png')" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover popper-class="zpover zpover6" placement="bottom-start" trigger="click">
-                  <div>
-                    <p>
-                      本店{{ timeData1 }}下单SKU数:<a
-                        @click="linkList(item)"
-                        style="text-decoration: underline"
-                        >点击查看详情</a
-                      >
-                    </p>
-                  </div>
-                  <div
-                    class="visitStoreIco"
-                    v-if="item.storeLabels.zysslNums !== false"
-                    style="background-color: #fff; position: relative"
-                    slot="reference">
-                    <p
-                      style="
-                        width: 100%;
-                        position: absolute;
-                        z-index: 1;
-                        top: 0.2px;
-                        width: 22px;
-                        margin: 0;
-                        margin-left: 3.6px;
-                        text-align: center;
-                        font-size: 12px;
-                      ">
-                      {{ item.storeLabels.zysslNums }}
-                    </p>
-                    <van-icon :name="ord" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover zpover5"
-                  placement="bottom"
-                  width="200"
-                  trigger="click">
-                  <div v-if="item.storeLabels">
-                    <p>{{ timeData1 }}未通过的陈列任务:</p>
-                    <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
-                      <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
+              </div>
+              <div class="info" style="position: relative" @click="buryingPointFn(item)">
+                联系电话:
+                <a
+                  v-if="item.telephone"
+                  style="color: #0057ba; font-weight: bold; text-decoration: underline"
+                  :href="'tel:' + item.telephone"
+                  >{{ item.telephone }}<van-icon name="phone"
+                /></a>
+                <div style="position: absolute; bottom: 0; right: 14px">
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="120"
+                    trigger="click"
+                    content="该客户为凤凰客户">
+                    <div
+                      v-if="item.storeLabels.fhCustomer"
+                      class="visitStoreIco"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="require('@/assets/Icon/fenghuangjihua.png')" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover zpover6"
+                    placement="bottom-start"
+                    trigger="click">
+                    <div>
+                      <p>
+                        本店{{ timeData1 }}下单SKU数:<a
+                          @click="linkList(item)"
+                          style="text-decoration: underline"
+                          >点击查看详情</a
+                        >
+                      </p>
+                    </div>
+                    <div
+                      class="visitStoreIco"
+                      v-if="item.storeLabels.zysslNums !== false"
+                      style="background-color: #fff; position: relative"
+                      slot="reference">
+                      <p
+                        style="
+                          width: 100%;
+                          position: absolute;
+                          z-index: 1;
+                          top: 0.2px;
+                          width: 22px;
+                          margin: 0;
+                          margin-left: 3.6px;
+                          text-align: center;
+                          font-size: 12px;
+                        ">
+                        {{ item.storeLabels.zysslNums }}
+                      </p>
+                      <van-icon :name="ord" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover popper-class="zpover" placement="bottom" width="200" trigger="click">
+                    <div v-if="item.storeLabels">
+                      <p>已参加:</p>
+                      <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
+                        {{ tt }}
+                      </p>
+                    </div>
+                    <div
+                      class="visitStoreIco"
+                      v-if="item.storeLabels.targetOne"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="targetOne" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="120"
+                    trigger="click"
+                    content="调色机7天未调色">
+                    <div
+                      v-if="item.storeLabels.stopColorMixerSeven"
+                      class="visitStoreIco"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="Network" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="120"
+                    trigger="click"
+                    content="调色机当月未调色">
+                    <div
+                      v-if="item.storeLabels.stopColorMixerMonth"
+                      class="visitStoreIco"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="WiFi" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="200"
+                    trigger="click"
+                    content="同城店近60天未下单">
+                    <div
+                      v-if="item.storeLabels.fxNoOrder"
+                      class="visitStoreIco"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="order60" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="200"
+                    trigger="click"
+                    content="金牌店近30天未下单">
+                    <div
+                      v-if="item.storeLabels.noOrder"
+                      class="visitStoreIco"
+                      style="background-color: #fff"
+                      slot="reference">
+                      <van-icon :name="order" size="26" />
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover"
+                    placement="bottom"
+                    width="200"
+                    trigger="click"
+                    content="本店本月进过专业时时丽">
+                    <div
+                      v-if="item.storeLabels.zyssl"
+                      class="visitStoreIco"
+                      style="background-color: #ed5c68"
+                      slot="reference">
+                      专
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    popper-class="zpover zpover1"
+                    placement="bottom"
+                    width="200"
+                    trigger="click"
+                    content="本店本月进过超好贴">
+                    <div
+                      v-if="item.storeLabels.chtczj"
+                      class="visitStoreIco"
+                      style="background-color: #0057ba"
+                      slot="reference">
+                      超
+                    </div>
+                  </el-popover>
+                  <el-popover
+                    placement="bottom"
+                    popper-class="zpover zpover1 zpover1sb"
+                    trigger="click"
+                    :disabled="!item.userVisitTimesMap"
+                    :content="'本店本月已拜访过' + item.storeLabels.visitTimes + '次'">
+                    <div
+                      v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
+                      class="visitStoreIco"
+                      slot="reference"
+                      style="background-color: #fff; position: relative">
+                      <p
+                        style="
+                          width: 100%;
+                          position: absolute;
+                          z-index: 10;
+                          top: -2px;
+                          margin: 0;
+                          text-align: center;
+                          font-size: 12px;
+                        ">
+                        {{ item.storeLabels.visitTimes }}
+                      </p>
+                      <!-- A级金牌店拜访次数少于2 -->
+                      <van-icon
+                        :name="require('@/assets/ordernumRed.png')"
+                        size="26"
+                        v-if="
+                          (item.storeLabels.storeA || item.storeLabels.storeS) &&
+                          item.needVisitNum &&
+                          item.storeLabels.visitTimes < item.needVisitNum
+                        " />
+                      <van-icon :name="require('@/assets/ordernum.png')" size="26" v-else />
+                    </div>
+                    <p style="text-align: center; background: #fff; color: #000; padding: 5px 0">
+                      本店本月已拜访过{{ item.storeLabels.visitTimes }}次
                     </p>
-                  </div>
-                  <div
-                    class="visitStoreIco"
-                    v-if="item.storeLabels.targetOne"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="targetOne" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="120"
-                  trigger="click"
-                  content="调色机7天未调色">
-                  <div
-                    v-if="item.storeLabels.stopColorMixerSeven"
-                    class="visitStoreIco"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="Network" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="120"
-                  trigger="click"
-                  content="调色机当月未调色">
-                  <div
-                    v-if="item.storeLabels.stopColorMixerMonth"
-                    class="visitStoreIco"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="WiFi" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="200"
-                  trigger="click"
-                  content="同城店近60天未下单">
-                  <div
-                    v-if="item.storeLabels.fxNoOrder"
-                    class="visitStoreIco"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="order60" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="200"
-                  trigger="click"
-                  content="金牌店近30天未下单">
-                  <div
-                    v-if="item.storeLabels.noOrder"
-                    class="visitStoreIco"
-                    style="background-color: #fff"
-                    slot="reference">
-                    <van-icon :name="order" size="26" />
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover"
-                  placement="bottom"
-                  width="200"
-                  trigger="click"
-                  content="本店本月进过专业时时丽">
-                  <div
-                    v-if="item.storeLabels.zyssl"
-                    class="visitStoreIco"
-                    style="background-color: #ed5c68"
-                    slot="reference">
-                    专
-                  </div>
-                </el-popover>
-                <el-popover
-                  popper-class="zpover zpover1"
-                  placement="bottom"
-                  width="200"
-                  trigger="click"
-                  content="本店本月进过超好贴">
-                  <div
-                    v-if="item.storeLabels.chtczj"
-                    class="visitStoreIco"
-                    style="background-color: #0057ba"
-                    slot="reference">
-                    超
-                  </div>
-                </el-popover>
-                <el-popover
-                  placement="bottom"
-                  popper-class="zpover zpover1 zpover1sb"
-                  trigger="click"
-                  :disabled="!item.userVisitTimesMap"
-                  :content="'本店本月已拜访过' + item.storeLabels.visitTimes + '次'">
-                  <div
-                    v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
-                    class="visitStoreIco"
-                    slot="reference"
-                    style="background-color: #fff; position: relative">
                     <p
-                      style="
-                        width: 100%;
-                        position: absolute;
-                        z-index: 10;
-                        top: -2px;
-                        margin: 0;
-                        text-align: center;
-                        font-size: 12px;
-                      ">
-                      {{ item.storeLabels.visitTimes }}
-                    </p>
-                    <!-- A级金牌店拜访次数少于2 -->
-                    <van-icon
-                      :name="require('@/assets/ordernumRed.png')"
-                      size="26"
                       v-if="
-                        (item.storeLabels.storeA || item.storeLabels.storeS) &&
-                        item.needVisitNum &&
-                        item.storeLabels.visitTimes < item.needVisitNum
-                      " />
-                    <van-icon :name="require('@/assets/ordernum.png')" size="26" v-else />
+                        (item.storeLabels.storeA || item.storeLabels.storeS) && item.needVisitNum
+                      "
+                      style="text-align: center; background: #fff; color: red; padding: 5px 0">
+                      <span v-if="item.storeLabels.storeA">A</span>
+                      <span v-if="item.storeLabels.storeS">S</span>
+                      级金牌店拜访标准:1月{{ item.needVisitNum }}次
+                    </p>
+                    <el-table :data="item.userVisitTimesMap" border max-height="180px">
+                      <el-table-column label="业务员" prop="userName" />
+                      <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
+                    </el-table>
+                  </el-popover>
+                </div>
+              </div>
+              <div class="info" v-if="item.addressLine">
+                地址:{{ item.addressLine
+                }}<img
+                  v-if="item.storeLonExist"
+                  style="width: 36px"
+                  :src="sbpmdh"
+                  @click="linkapp(item)" />
+              </div>
+              <!-- 潜在店不显示经销商 -->
+              <template v-if="item.sfaStoreType.type != 'qzd'">
+                <!-- 分销店 -->
+                <template
+                  v-if="
+                    item.sfaStoreType &&
+                    item.sfaStoreType.type == 'fxd' &&
+                    item.sfaStoreChainsContactList
+                  ">
+                  <div class="info" v-if="typeShow">
+                    经销商:
+                    <div
+                      class="TCFXListItem"
+                      v-for="(item, index) in item.sfaStoreChainsContactList">
+                      <el-popover
+                        popper-class="zpover zpoverStoreztype"
+                        placement="bottom-start"
+                        trigger="click">
+                        <div>
+                          <div>{{ item.chainCode }}</div>
+                          <div>{{ item.chainName }}</div>
+                        </div>
+                        <div slot="reference" :key="index">
+                          {{ item.categoryDescribe }}
+                        </div>
+                      </el-popover>
+                    </div>
                   </div>
-                  <p style="text-align: center; background: #fff; color: #000; padding: 5px 0">
-                    本店本月已拜访过{{ item.storeLabels.visitTimes }}次
-                  </p>
-                  <p
-                    v-if="(item.storeLabels.storeA || item.storeLabels.storeS) && item.needVisitNum"
-                    style="text-align: center; background: #fff; color: red; padding: 5px 0">
-                    <span v-if="item.storeLabels.storeA">A</span>
-                    <span v-if="item.storeLabels.storeS">S</span>
-                    级金牌店拜访标准:1月{{ item.needVisitNum }}次
-                  </p>
-                  <el-table :data="item.userVisitTimesMap" border max-height="180px">
-                    <el-table-column label="业务员" prop="userName" />
-                    <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
-                  </el-table>
-                </el-popover>
+                </template>
+                <template v-else>
+                  <div class="info" v-if="typeShow">经销商:{{ item.chainName }}</div>
+                </template>
+              </template>
+              <!-- storeLonExist 门店是否存在经纬度 字段false=不显示导航和距离,true=显示 -->
+              <div class="info" v-if="item.storeLonExist">
+                距离:{{ Micrometer(item.distance) }}m
+              </div>
+              <div class="info" v-if="item.cntOrderAmtYear">
+                门店销额(全年累计):{{ Micrometer(item.cntOrderAmtYear) }}元
               </div>
             </div>
-            <div class="info" v-if="item.addressLine">
-              地址:{{ item.addressLine
-              }}<img
-                v-if="item.storeLonExist"
-                style="width: 36px"
-                :src="sbpmdh"
-                @click="linkapp(item)" />
+            <div
+              class="statstext"
+              v-if="item.stateString == '未拜访'"
+              style="background-color: #ed5c68">
+              未拜访
             </div>
-            <!-- 潜在店不显示经销商 -->
-            <template v-if="item.sfaStoreType.type != 'qzd'">
-              <!-- 分销店 -->
-              <template
-                v-if="
-                  item.sfaStoreType &&
-                  item.sfaStoreType.type == 'fxd' &&
-                  item.sfaStoreChainsContactList
-                ">
-                <div class="info" v-if="typeShow">
-                  经销商:
-                  <div class="TCFXListItem" v-for="(item, index) in item.sfaStoreChainsContactList">
-                    <el-popover
-                      popper-class="zpover zpoverStoreztype"
-                      placement="bottom-start"
-                      trigger="click">
-                      <div>
-                        <div>{{ item.chainCode }}</div>
-                        <div>{{ item.chainName }}</div>
-                      </div>
-                      <div slot="reference" :key="index">
-                        {{ item.categoryDescribe }}
-                      </div>
-                    </el-popover>
-                  </div>
-                </div>
-              </template>
-              <template v-else>
-                <div class="info" v-if="typeShow">经销商:{{ item.chainName }}</div>
-              </template>
-            </template>
-            <!-- storeLonExist 门店是否存在经纬度 字段false=不显示导航和距离,true=显示 -->
-            <div class="info" v-if="item.storeLonExist">距离:{{ Micrometer(item.distance) }}m</div>
-            <div class="info" v-if="item.cntOrderAmtYear">
-              门店销额(全年累计):{{ Micrometer(item.cntOrderAmtYear) }}元
+            <div
+              class="statstext"
+              v-if="item.stateString == '拜访中'"
+              style="background-color: white">
+              <van-icon :name="times" color="#ee0a24" size="32" />
             </div>
-          </div>
-          <div
-            class="statstext"
-            v-if="item.stateString == '未拜访'"
-            style="background-color: #ed5c68">
-            未拜访
-          </div>
-          <div
-            class="statstext"
-            v-if="item.stateString == '拜访中'"
-            style="background-color: white">
-            <van-icon :name="times" color="#ee0a24" size="32" />
-          </div>
-          <template v-if="item.stateString == '已拜访'">
-            <!-- 正常拜访 -->
-            <template v-if="item.visitSource == 1">
-              <!-- 金牌店+同城分销店+可控店 -->
-              <template v-if="item.jinpaiStore || item.fenxiaoStore || item.kekongStore">
-                <div class="statstext" style="background-color: #e3f0fe">
-                  <span style="color: #387bca">已拜访</span>
-                  <div
-                    class="statstextIcon"
-                    style="background-color: #0057ba"
-                    @click="openPerfectStore(item)">
-                    <div style="margin: 4px; font-size: 14px; font-weight: 600">
-                      <img
-                        style="width: 18px; height: 20px; margin: 0 5px; vertical-align: -5px"
-                        :src="require('@/assets/shouzhi.png')" />完美门店报告
+            <template v-if="item.stateString == '已拜访'">
+              <!-- 正常拜访 -->
+              <template v-if="item.visitSource == 1">
+                <!-- 金牌店+同城分销店+可控店 -->
+                <template v-if="item.jinpaiStore || item.fenxiaoStore || item.kekongStore">
+                  <div class="statstext" style="background-color: #e3f0fe">
+                    <span style="color: #387bca">已拜访</span>
+                    <div
+                      class="statstextIcon"
+                      style="background-color: #0057ba"
+                      @click="openPerfectStore(item)">
+                      <div style="margin: 4px; font-size: 14px; font-weight: 600">
+                        <img
+                          style="width: 18px; height: 20px; margin: 0 5px; vertical-align: -5px"
+                          :src="require('@/assets/shouzhi.png')" />完美门店报告
+                      </div>
                     </div>
                   </div>
-                </div>
+                </template>
+                <template v-else>
+                  <div class="statstext">
+                    <span>已拜访</span>
+                  </div>
+                </template>
               </template>
               <template v-else>
+                <!-- 异常拜访 -->
                 <div class="statstext">
                   <span>已拜访</span>
                 </div>
               </template>
             </template>
-            <template v-else>
-              <!-- 异常拜访 -->
-              <div class="statstext">
-                <span>已拜访</span>
-              </div>
-            </template>
-          </template>
-          <div class="btnbox">
-            <van-row>
-              <van-col
-                span="4"
-                v-if="item.stateString != '已拜访' && item.visitAble && customerVisits"
-                @click="storeVisit(item)">
-                <img :src="call" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; font-size: 11px">进入拜访</p>
-              </van-col>
-              <van-col
-                span="4"
-                v-if="item.storeCategory == '公装经销商'"
-                @click="projectOutVisit(item)">
-                <img :src="xmgj" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; font-size: 11px">项目跟进</p>
-              </van-col>
-              <van-col
-                span="4"
-                v-if="
-                  item.stateString != '已拜访' &&
-                  item.visitAble &&
-                  item.storeCategory != '公装经销商' &&
-                  customerVisits
-                "
-                @click="abnormalVisit(item)">
-                <img :src="yichang" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                  异常拜访
-                </p>
-              </van-col>
-              <van-col span="4" v-if="item.storeLabels.zysslNums !== false" @click="linkList(item)">
-                <img
-                  :src="require('@/assets/recommendicon.png')"
-                  style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                  推荐下单
-                </p>
-              </van-col>
-              <van-col span="4" v-else-if="item.showOrderButton" @click="orderFn(item)">
-                <img :src="xiadan" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                  去下单
-                </p>
-              </van-col>
-              <van-col span="4" v-if="item.stateString == '已拜访'" @click="Visit(item)">
-                <img :src="bfxx" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                  拜访信息
-                </p>
-              </van-col>
-              <van-col span="4" @click="visitFn(item)">
-                <img :src="kehuxinxi" style="margin: 0 auto; height: 15px; display: block" />
-                <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
-                  客户信息
-                </p>
-              </van-col>
-            </van-row>
-          </div>
-        </van-cell>
-        <div class="lineGrey"></div>
-      </div>
+            <div class="btnbox">
+              <van-row>
+                <van-col
+                  span="4"
+                  v-if="item.stateString != '已拜访' && item.visitAble && customerVisits"
+                  @click="storeVisit(item)">
+                  <img :src="call" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; font-size: 11px">进入拜访</p>
+                </van-col>
+                <van-col
+                  span="4"
+                  v-if="item.storeCategory == '公装经销商'"
+                  @click="projectOutVisit(item)">
+                  <img :src="xmgj" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; font-size: 11px">项目跟进</p>
+                </van-col>
+                <van-col
+                  span="4"
+                  v-if="
+                    item.stateString != '已拜访' &&
+                    item.visitAble &&
+                    item.storeCategory != '公装经销商' &&
+                    customerVisits
+                  "
+                  @click="abnormalVisit(item)">
+                  <img :src="yichang" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                    异常拜访
+                  </p>
+                </van-col>
+                <van-col
+                  span="4"
+                  v-if="item.storeLabels.zysslNums !== false"
+                  @click="linkList(item)">
+                  <img
+                    :src="require('@/assets/recommendicon.png')"
+                    style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                    推荐下单
+                  </p>
+                </van-col>
+                <van-col span="4" v-else-if="item.showOrderButton" @click="orderFn(item)">
+                  <img :src="xiadan" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                    去下单
+                  </p>
+                </van-col>
+                <van-col span="4" v-if="item.stateString == '已拜访'" @click="Visit(item)">
+                  <img :src="bfxx" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                    拜访信息
+                  </p>
+                </van-col>
+                <van-col span="4" @click="visitFn(item)">
+                  <img :src="kehuxinxi" style="margin: 0 auto; height: 15px; display: block" />
+                  <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 11px">
+                    客户信息
+                  </p>
+                </van-col>
+              </van-row>
+            </div>
+          </van-cell>
+          <div class="lineGrey"></div>
+        </div>
+      </van-pull-refresh>
       <p style="text-align: center; color: #888a8e" v-if="list.length > 0">--已经到底了--</p>
       <br />
       <van-empty description="暂无数据" v-if="list.length == 0" />
@@ -571,7 +584,6 @@ export default {
       tabVal: 'insidePlan',
       list: [],
       loading: false,
-      finished: false,
       mapShows: false,
       typeShow: false,
       storeName: '',
@@ -588,6 +600,7 @@ export default {
       // 筛选模块
       showFilter: false,
       filterParams: {},
+      refreshing: false,
     };
   },
   computed: {
@@ -650,6 +663,10 @@ export default {
     );
   },
   methods: {
+    onRefresh() {
+      this.list = [];
+      this.getUserInPlanList();
+    },
     closePopup(flag, filterParams) {
       this.showFilter = false;
       if (flag) {
@@ -849,7 +866,16 @@ export default {
       });
     },
     getUserInPlanList() {
-      this.list = [];
+      localStorage.setItem('outvstoreName', '');
+      localStorage.setItem('outvchainName', '');
+      localStorage.removeItem('outvstoreLabelTypes');
+      localStorage.removeItem('outvstoreCategoryList');
+      localStorage.setItem('outvchainCode', '');
+      localStorage.setItem('outvstoreName', '');
+      localStorage.setItem('outvsortType', '');
+      localStorage.setItem('outsortParam', '');
+      localStorage.setItem('lat', '');
+      localStorage.setItem('lon', '');
       var postType = localStorage.getItem('postType');
       this.customerVisits = localStorage.getItem('customerVisits');
       if (localStorage.getItem('postType') == 'JZ' || localStorage.getItem('postType') == 'GZ') {
@@ -864,7 +890,6 @@ export default {
       }
       this.storeType = localStorage.getItem('storeType');
       this.endShow = false;
-      this.toastLoading(0, '加载中...', true);
       localStorage.removeItem('visitId');
       getPosition(true, true)
         .then((res) => {
@@ -879,6 +904,7 @@ export default {
         });
     },
     getUserInPlanListFun(TXisBD) {
+      this.toastLoading(0, '加载中...', true);
       getUserInPlanList({
         storeName: this.storeName.trim(),
         genDate: this.genDate,
@@ -887,6 +913,9 @@ export default {
         ...this.filterParams,
       }).then((res) => {
         this.toastLoading().clear();
+        if (this.refreshing) {
+          this.refreshing = false;
+        }
         if (res.code == 200) {
           this.list = res.data;
           this.list.forEach((item) => {
@@ -897,6 +926,7 @@ export default {
             }
           });
         } else {
+          this.list = [];
           this.$toast.fail(res.msg);
         }
       });
@@ -916,6 +946,7 @@ export default {
         //   buryingPointName: '进店拜访',
         //   buryingPointPosition: '计划内',
         // });
+        localStorage.setItem('getRequestFlage', 'true');
         if (res.code == 200 || val.stateString.indexOf('拜访中') != -1) {
           if (localStorage.getItem('loginType') == 'cs') {
             var lat = '';

+ 0 - 5
src/views/deviceWithin/storeVisit.vue

@@ -253,7 +253,6 @@ export default {
     next();
   },
   activated() {
-    console.log(11111);
     // 是否请求任务列表接口
     let getRequestFlage = localStorage.getItem('getRequestFlage');
     if (getRequestFlage != 'true') return;
@@ -392,7 +391,6 @@ export default {
       return Math.round((arrtime2 - arrtime1) / 1000);
     },
     addVisits() {
-      console.log(222);
       var that = this;
       var insert = '';
       var postType = localStorage.getItem('postType');
@@ -474,7 +472,6 @@ export default {
             });
             that.list = [];
             getVisitTasks(params).then((res) => {
-              console.log(333);
               loading2.clear();
               if (res.code == 200) {
                 that.notes = res.data.notes;
@@ -532,7 +529,6 @@ export default {
               forbidClick: true,
             });
             that.list = [];
-            console.log(444);
             getVisitTasks(params).then((res) => {
               loading2.clear();
               if (res.code == 200) {
@@ -565,7 +561,6 @@ export default {
           }
         },
         function (err) {
-          console.log(555);
           if (that.$route.query.type == 'edit') {
             var params = {
               storeId: that.storeId,

+ 79 - 25
src/views/deviceWithin/taskPhotoTaking.vue

@@ -41,9 +41,9 @@
                   </taskTips>
                 </template>
               </van-cell>
-              <deleteUploadImg
+              <deleteUploadImgTaskPhoto
+                ref="taskPhoto"
                 :formData="formData"
-                :imgs="item.fileInfoList"
                 :storeGroupId="storeGroupId"
                 :taskIds="taskIds"
                 :visitsId="visitsId"
@@ -54,7 +54,8 @@
                 :pictureSource="item.pictureSource"
                 :continuousShoot="item.continuousShoot"
                 :insert="insert"
-                :objectType="objectType"></deleteUploadImg>
+                :fileInfoList="item.fileInfoList"
+                :objectType="objectType"></deleteUploadImgTaskPhoto>
             </div>
           </div>
         </van-form>
@@ -75,12 +76,13 @@
           </div>
           <div class="itemBottom" v-if="insert == 'false'">
             <img
+              v-if="item.taskPhotoConditionPassed == 1"
               @click="openDialog(item)"
-              :src="
-                item.taskPhotoConditionPassed == 1
-                  ? require('@/assets/taskPhotoSu.png')
-                  : require('@/assets/taskPhotoErr.png')
-              " />
+              :src="require('@/assets/taskPhotoSu.png')" />
+            <img
+              v-if="item.taskPhotoConditionPassed == 0"
+              @click="openDialog(item)"
+              :src="require('@/assets/taskPhotoErr.png')" />
           </div>
         </div>
       </div>
@@ -126,10 +128,16 @@
 <script>
 import { getCollectionInfosBatch, addCollectionAnswerBatch, getVisitsDetail } from '@/api/index';
 import taskTips from './taskTips';
-import deleteUploadImg from '@/components/deleteUploadImgTaskPhoto';
+import deleteUploadImgTaskPhoto from '@/components/deleteUploadImgTaskPhoto';
+import { mapState } from 'vuex';
 export default {
   name: 'abnortaskPhotoTakingmalVisit',
-  components: { taskTips, deleteUploadImg },
+  components: { taskTips, deleteUploadImgTaskPhoto },
+  computed: {
+    ...mapState({
+      userInfo: (state) => state.user.userInfo,
+    }),
+  },
   data() {
     return {
       isEdit: true,
@@ -144,6 +152,7 @@ export default {
       taskPhotoRecognitionResult: null,
       spanArr: [],
       pos: 0,
+      mediaIds: [],
     };
   },
   activated() {
@@ -158,6 +167,13 @@ export default {
       this.getDetaile();
     }
   },
+  beforeRouteLeave(to, from, next) {
+    if (this.$refs.taskPhoto && this.$refs.taskPhoto[0]) {
+      this.$refs.taskPhoto[0].imgArr = [];
+    }
+    next();
+  },
+  watch: {},
   methods: {
     taskObjectSpanMethod({ row, column, rowIndex, columnIndex }) {
       const cellValue = row[column.property];
@@ -227,24 +243,62 @@ export default {
         this.taskPhotoRecognitionResult = item.taskPhotoRecognitionResult;
       });
     },
-    onSubmit() {
-      let formData = {
-        storeId: this.$route.query.storeId,
-        storeCode: this.$route.query.storeCode,
-        storeGroupId: this.$route.query.storeGroupId,
-        visitsId: this.visitsId,
-        taskList: this.taskIds.split(',').map((val) => Number(val)),
-        insert: true,
-        collectionAnswers: [],
-        checkUnManage: 'N',
-        deviceCode: '',
-        putInCode: '',
-        equipmentCode: '',
-      };
-      addCollectionAnswerBatch(formData).then((res) => {
+    waitUploadReady(interval = 1000) {
+      return new Promise((resolve) => {
+        const intervalId = setInterval(() => {
+          const taskPhoto = this.$refs.taskPhoto && this.$refs.taskPhoto[0];
+          if (taskPhoto && taskPhoto.isUploadImg) {
+            clearInterval(intervalId);
+            resolve();
+          }
+        }, interval);
+      });
+    },
+    async onSubmit() {
+      this.toastLoading(0, '提交中,请稍候...', true);
+      try {
+        const taskPhoto = this.$refs.taskPhoto && this.$refs.taskPhoto[0];
+        if (taskPhoto && !taskPhoto.isUploadImg) {
+          await this.waitUploadReady(1000);
+        }
+
+        let formData = {
+          storeId: this.$route.query.storeId,
+          storeCode: this.$route.query.storeCode,
+          storeGroupId: this.$route.query.storeGroupId,
+          visitsId: this.visitsId,
+          taskList: this.taskIds.split(',').map((val) => Number(val)),
+          insert: true,
+          collectionAnswers: [],
+          checkUnManage: 'N',
+          deviceCode: '',
+          putInCode: '',
+          equipmentCode: '',
+          collectionItemId: taskPhoto ? taskPhoto.collectionItemId : '',
+          objectType: this.$route.query.photoType,
+          locationRemark: taskPhoto ? taskPhoto.locationRemark : '',
+          mediaInfos: [],
+          isH5: this.userInfo.photoMethod == '1',
+        };
+        if (this.userInfo.photoMethod == '1') {
+          formData.mediaInfos = [];
+        } else if (taskPhoto) {
+          formData.mediaInfos = taskPhoto.imgArr;
+        }
+        await this.addCollection(formData);
+      } catch (err) {
+        this.$toast(err.message || '提交失败,请稍后再试');
+      } finally {
+        this.toastLoading().clear();
+      }
+    },
+    addCollection(formData) {
+      return addCollectionAnswerBatch(formData).then((res) => {
         if (res.code == 200) {
           localStorage.setItem('getRequestFlage', 'true');
           this.$router.go(-1);
+        } else {
+          this.$toast('提交失败,请重试');
         }
       });
     },

+ 1 - 0
src/views/historicalVisit/historicalDetails.vue

@@ -317,6 +317,7 @@ export default {
       } else {
         localStorage.setItem('ORGName', this.list.deptName);
         localStorage.setItem('chainNameR', this.list.storeName);
+        localStorage.setItem('getRequestFlage', 'true');
         if (this.list.visitSource == '2') {
           this.$router.push({
             path: '/abnormalVisit',

+ 5 - 2
src/views/historicalVisit/hisvistdeils.vue

@@ -278,8 +278,11 @@
     <div class="identifyResult" v-if="taskPhotoRecognitionResult" style="padding: 0 10px">
       <div style="font-weight: bold; padding: 10px; font-size: 16px">
         <span>识别结果:</span>
-        <span style="color: red">{{
-          activatedSfaTask.taskPhotoConditionPassed == '1' ? 'AI识别通过' : 'AI识别不通过'
+        <span v-if="activatedSfaTask.taskPhotoConditionPassed == '1'" style="color: red">{{
+          'AI识别通过'
+        }}</span>
+        <span v-if="activatedSfaTask.taskPhotoConditionPassed == '0'" style="color: red">{{
+          'AI识别不通过'
         }}</span>
       </div>
       <div class="resultContent">

+ 11 - 6
src/views/historicalVisit/perfectStore.vue

@@ -103,7 +103,9 @@
               <van-button round type="primary" v-if="shopSignDetail.qualifiedState == '1'"
                 >通过</van-button
               >
-              <van-button round type="danger" v-else>不通过</van-button>
+              <van-button round type="danger" v-if="shopSignDetail.qualifiedState == '0'"
+                >不通过</van-button
+              >
               <div class="jiantou">
                 <van-icon name="arrow" />
               </div>
@@ -120,7 +122,9 @@
               <van-button round type="primary" v-if="tiaoSJDetail.qualifiedState == '1'"
                 >通过</van-button
               >
-              <van-button round type="danger" v-else>不通过</van-button>
+              <van-button round type="danger" v-if="tiaoSJDetail.qualifiedState == '0'"
+                >不通过</van-button
+              >
               <div class="jiantou">
                 <van-icon name="arrow" />
               </div>
@@ -145,9 +149,7 @@
         </div>
       </div>
       <!-- 目前陈列任务 -->
-      <div
-        class="TSJBox specialTask"
-        v-if="list.isSku == '是' && taskTypeArr && taskTypeArr.length">
+      <div class="TSJBox specialTask" v-if="taskTypeArr && taskTypeArr.length">
         <div class="specialTaskLeft">
           <div class="SignText">AI 陈列任务识别</div>
         </div>
@@ -163,7 +165,9 @@
               <van-button round type="primary" v-if="value.taskPhotoConditionPassed == 1"
                 >通过</van-button
               >
-              <van-button round type="danger" v-else>不通过</van-button>
+              <van-button round type="danger" v-if="value.taskPhotoConditionPassed == 0"
+                >不通过</van-button
+              >
               <!-- <van-icon name="success" color="#07c160" v-if="value.taskPhotoConditionPassed == 1" />
               <van-icon name="cross" color="#ee0a24" v-else /> -->
               <div class="jiantou">
@@ -387,6 +391,7 @@ export default {
       } else {
         localStorage.setItem('ORGName', this.list.deptName);
         localStorage.setItem('chainNameR', this.list.storeName);
+        localStorage.setItem('getRequestFlage', 'true');
         if (this.list.visitSource == '2') {
           this.$router.push({
             path: '/abnormalVisit',

+ 6 - 2
src/views/historicalVisit/perfectStoreSign.vue

@@ -14,7 +14,9 @@
                   v-if="shopSignDetail.qualifiedState == '1'" />
                 <van-icon name="warning" color="#ee0a24" v-else />
               </div>
-              <div :style="{ color: shopSignDetail.qualifiedState == '1' ? '#07c160' : '#ee0a24' }">
+              <div
+                v-if="shopSignDetail.qualifiedState != null"
+                :style="{ color: shopSignDetail.qualifiedState == '1' ? '#07c160' : '#ee0a24' }">
                 {{
                   shopSignDetail.qualifiedState == '1'
                     ? '店招完整,授权号正确'
@@ -27,7 +29,9 @@
                 <van-button round type="primary" v-if="shopSignDetail.qualifiedState == '1'"
                   >通过</van-button
                 >
-                <van-button round type="danger" v-else>不通过</van-button>
+                <van-button round type="danger" v-if="shopSignDetail.qualifiedState == '0'"
+                  >不通过</van-button
+                >
               </div>
             </div>
           </div>

+ 7 - 9
src/views/historicalVisit/perfectStoreTask.vue

@@ -96,9 +96,12 @@
             width="50"></el-table-column>
           <el-table-column label="要求" prop="conditionIdentifyNum" align="center" width="60px">
             <template slot-scope="scope">
-              <span :style="{ color: scope.row.meetTheStandard == 1 ? '#07c160' : 'red' }">
+              <span
+                v-if="scope.row.meetTheStandard != null"
+                :style="{ color: scope.row.meetTheStandard == 1 ? '#07c160' : 'red' }">
                 {{ scope.row.conditionIdentifyNum }}
               </span>
+              <span v-else>{{ scope.row.conditionIdentifyNum }}</span>
             </template>
           </el-table-column>
         </el-table>
@@ -119,14 +122,9 @@
             <van-button round type="primary" v-if="item.taskPhotoConditionPassed == 1"
               >通过</van-button
             >
-            <van-button round type="danger" v-else>不通过</van-button>
-            <!-- <img
-              @click="openDialog"
-              :src="
-                item.taskPhotoConditionPassed == 1
-                  ? require('@/assets/taskPhotoSu.png')
-                  : require('@/assets/taskPhotoErr.png')
-              " /> -->
+            <van-button round type="danger" v-if="item.taskPhotoConditionPassed == 0"
+              >不通过</van-button
+            >
           </div>
         </div>
       </div>