Prechádzať zdrojové kódy

Merge branch 'feature_20250704_陈列SKU图片识别' into release

zhujindu 4 mesiacov pred
rodič
commit
04df05ed0e

+ 19 - 0
src/api/historicalVisit.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request';
+
+// sku识别信息查询接口
+export function photoSkuImgSummary(query) {
+  return request({
+    url: '/mobile/photoSkuImgSummary/list',
+    method: 'get',
+    params: query,
+  });
+}
+
+// 反馈接口
+export function photoSkuFeedback(data) {
+  return request({
+    url: 'mobile/photoSkuFeedback',
+    method: 'post',
+    data,
+  });
+}

+ 9 - 0
src/api/index.js

@@ -1039,3 +1039,12 @@ export function imgToBase64(data) {
     data,
   });
 }
+
+// sku识别信息接口
+export function getSkuDetailById(query) {
+  return request({
+    url: '/mobile/reportMobile/getSkuDetailById',
+    method: 'get',
+    params: query,
+  });
+}

BIN
src/assets/Icon/arrow-down.png


BIN
src/assets/Icon/arrow-up.png


+ 10 - 2
src/components/deleteUploadImg1.vue

@@ -3,7 +3,11 @@
     <van-row gutter="10">
       <van-col span="6" v-for="(urls, index) in imgs" :key="index">
         <div class="imgview">
-          <van-icon name="close" size="16" v-on:click="deleteImg(index, urls.id)" />
+          <van-icon
+            v-if="photoIdentifyType != 6 && types != 'edit'"
+            name="close"
+            size="16"
+            v-on:click="deleteImg(index, urls.id)" />
           <img
             v-if="urls.type == '2'"
             :src="urls.fileUrl"
@@ -43,10 +47,14 @@ export default {
       },
     },
     photoIdentifyType: {
-      // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招)
+      // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招,6:sku陈列照)
       type: String,
       default: '',
     },
+    types: {
+      // edit 编辑
+      type: String,
+    },
   },
   data() {
     return {

+ 4 - 4
src/components/uploadVNormal.vue

@@ -127,7 +127,7 @@ export default {
       default: '0',
     },
     photoIdentifyType: {
-      // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招)
+      // 图匠识别目的(1:店招内容识别,2:门店代码识别,3:调色机识别,4:更换店招,6:陈列SKU图片识别)
       type: String,
       default: '',
     },
@@ -374,7 +374,7 @@ export default {
       }
       this.controller = null;
       // 需要图匠校验的添加参数和loading
-      if (this.photoIdentifyType) {
+      if (this.photoIdentifyType && this.photoIdentifyType != '6') {
         form.photoIdentifyType = this.photoIdentifyType;
         this.progress();
         this.controller = new AbortController(); //取消请求
@@ -397,7 +397,7 @@ export default {
         this.requestTimeOut(res);
       } else if (res.code == 200) {
         // 图匠校验结果返回
-        if (this.photoIdentifyType) {
+        if (this.photoIdentifyType && this.photoIdentifyType != '6') {
           // 重置loaidng状态
           this.resetProgress();
           this.imageAIVerifyFlag = true;
@@ -457,7 +457,7 @@ export default {
     // 照片是否入库,1.照片识别三次不通过仍要上传,2.照片识别通过
     // isUpdate:是否更新店招照片,只有门店店招需要更新
     confirmUpload(res) {
-      if (this.photoIdentifyType) {
+      if (this.photoIdentifyType && this.photoIdentifyType != '6') {
         var form = {
           mediaId: '',
           fileUrl: '',

+ 5 - 0
src/router/index.js

@@ -233,6 +233,11 @@ const router = new VueRouter({
           name: 'historiStoreVisit',
           component: () => import('@/views/historicalVisit/hisvistdeils.vue'),
         },
+        {
+          path: '/skuRecognize',
+          name: 'skuRecognize',
+          component: () => import('@/views/historicalVisit/skuRecognize.vue'),
+        },
       ],
     },
     {

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

@@ -78,11 +78,17 @@
           物料历史
         </van-button> -->
       </div>
-      <div
-        v-if="addShow1"
-        style="color: #999; font-size: 12px; padding: 10px; background-color: #f5f5f5">
-        <van-icon
-          name="info-o" />&nbsp;可控店及金牌店的店招任务中,若拍摄两次仍不通过,允许提交,不影响正常拜访。
+      <div v-if="addShow1" style="padding: 10px; background-color: #f5f5f5">
+        <!-- <van-icon name="info-o" /> -->
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          1、已启动SKU图像识别,目前覆盖桶装和战略产品106个
+        </p>
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          2、请在“奖励案”和“生动化陈列”中拍全本店陈列的所有立邦产品,以便准确识别SKU数量
+        </p>
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          3、提交拜访后约30秒,可去历史拜访中查看SKU图像识别结果
+        </p>
       </div>
       <div class="card">
         <div

+ 60 - 13
src/views/deviceWithin/addStoreVisit.vue

@@ -6,7 +6,7 @@
         <!--     right-text="保存"   @click-right="onSubmit"-->
         <template #right>
           <span
-            v-if="processKey"
+            v-if="processKey && isEditSDHCL"
             @click="onSubmit"
             style="
               color: white;
@@ -285,27 +285,37 @@
           </div>
           <div v-if="item.answerType == 'zp'" class="formLabel z-cell">
             <van-cell>
-              <template #title
-                ><span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.collectionName }}
+              <template #title>
+                <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.collectionName }}
                 <!-- 操作说明图片和电话 -->
                 <taskTips
                   v-if="item.contactPhone || item.examplePhoto"
                   :contactPhone="item.contactPhone"
                   :examplePhoto="item.examplePhoto">
-                </taskTips
-              ></template>
+                </taskTips>
+              </template>
               <template #right-icon>
-                <span v-if="item.isMustPicture == '0'" class="van-f-red">*</span>
-                <van-icon
-                  v-if="item.isPicture == 0"
-                  color="#666"
-                  name="photograph"
-                  size="24"
-                  @click="imgClick(item, 'A', index)" />
+                <template v-if="isEditSDHCL">
+                  <span v-if="item.isMustPicture == '0'" class="van-f-red">*</span>
+                  <van-icon
+                    v-if="item.isPicture == 0"
+                    color="#666"
+                    name="photograph"
+                    size="24"
+                    @click="imgClick(item, 'A', index)" />
+                </template>
               </template>
             </van-cell>
+            <!-- 生动化陈列备注 只能有一层采集项 -->
+            <div
+              class="sdhclTips"
+              v-if="item.collectionName == '生动化陈列'"
+              style="color: red; font-size: 14px">
+              请补充拍摄除陈列奖励案产品外,本店经营的其他立邦产品,以便准确识别SKU数量
+            </div>
             <delete-upload-img
               :photoIdentifyType="photoIdentifyType"
+              :types="$route.query.types"
               :imgs="item.fileInfoList"></delete-upload-img>
           </div>
           <div v-if="item.answerType == 'wb'" class="formLabel z-cell">
@@ -698,6 +708,13 @@
                             @click="imgClick(childitem, 'B', index, childIndex)" />
                         </template>
                       </van-cell>
+                      <!-- 生动化陈列备注 只能有一层采集项 -->
+                      <div
+                        class="sdhclTips"
+                        v-if="childitem.collectionName == '生动化陈列'"
+                        style="color: red; font-size: 14px">
+                        请补充拍摄除陈列奖励案产品外,本店经营的其他立邦产品,以便准确识别SKU数量
+                      </div>
                       <delete-upload-img
                         :photoIdentifyType="photoIdentifyType"
                         :imgs="childitem.fileInfoList"></delete-upload-img>
@@ -1595,6 +1612,13 @@
                                                 " />
                                             </template>
                                           </van-cell>
+                                          <!-- 生动化陈列备注 只能有一层采集项 -->
+                                          <div
+                                            class="sdhclTips"
+                                            v-if="child33item1.collectionName == '生动化陈列'"
+                                            style="color: red; font-size: 14px">
+                                            请补充拍摄除陈列奖励案产品外,本店经营的其他立邦产品,以便准确识别SKU数量
+                                          </div>
                                           <delete-upload-img
                                             :photoIdentifyType="photoIdentifyType"
                                             :imgs="child33item1.fileInfoList"></delete-upload-img>
@@ -2241,6 +2265,15 @@
                                                           " />
                                                       </template>
                                                     </van-cell>
+                                                    <!-- 生动化陈列备注 只能有一层采集项 -->
+                                                    <div
+                                                      class="sdhclTips"
+                                                      v-if="
+                                                        child44item1.collectionName == '生动化陈列'
+                                                      "
+                                                      style="color: red; font-size: 14px">
+                                                      请补充拍摄除陈列奖励案产品外,本店经营的其他立邦产品,以便准确识别SKU数量
+                                                    </div>
                                                     <delete-upload-img
                                                       :photoIdentifyType="photoIdentifyType"
                                                       :imgs="
@@ -2590,6 +2623,13 @@
                                       " />
                                   </template>
                                 </van-cell>
+                                <!-- 生动化陈列备注 只能有一层采集项 -->
+                                <div
+                                  class="sdhclTips"
+                                  v-if="childitem1.collectionName == '生动化陈列'"
+                                  style="color: red; font-size: 14px">
+                                  请补充拍摄除陈列奖励案产品外,本店经营的其他立邦产品,以便准确识别SKU数量
+                                </div>
                                 <delete-upload-img
                                   :photoIdentifyType="photoIdentifyType"
                                   :imgs="childitem1.fileInfoList"></delete-upload-img>
@@ -2724,7 +2764,7 @@
         font-size: 14px;
         left: 14px;
       "
-      v-if="processKey"
+      v-if="processKey && isEditSDHCL"
       @click="removeFn">
       <van-icon name="cross" />&nbsp;&nbsp;清空内容
     </div>
@@ -2842,6 +2882,7 @@ export default {
       productTitles: null,
       inspectionType: '',
       competitortableData: [],
+      isEditSDHCL: true, //是否可以编辑生动化陈列
     };
   },
   beforeRouteLeave(to, from, next) {
@@ -3381,6 +3422,12 @@ export default {
           this.equipmentCode = this.equipmentCode || '';
           this.showCode = false;
         }
+        // 生动化陈列是否可以编辑
+        if (this.$route.query.types == 'edit' && this.photoIdentifyType == '6') {
+          this.isEditSDHCL = false;
+        } else {
+          this.isEditSDHCL = true;
+        }
         if (
           (res.data.processStatus == 3 && this.$route.query.types == 'edit') ||
           res.data.processStatus == undefined

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

@@ -76,11 +76,17 @@
         > -->
         </div>
       </div>
-      <div
-        v-if="addShow1"
-        style="color: #999; font-size: 12px; padding: 10px; background-color: #f5f5f5">
-        <van-icon
-          name="info-o" />&nbsp;可控店及金牌店的店招任务中,若拍摄两次仍不通过,允许提交,不影响正常拜访。
+      <div v-if="addShow1" style="padding: 10px; background-color: #f5f5f5">
+        <!-- <van-icon name="info-o" /> -->
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          1、已启动SKU图像识别,目前覆盖桶装和战略产品106个
+        </p>
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          2、请在“奖励案”和“生动化陈列”中拍全本店陈列的所有立邦产品,以便准确识别SKU数量
+        </p>
+        <p style="margin: 5px 0; color: red; font-size: 12px">
+          3、提交拜访后约30秒,可去历史拜访中查看SKU图像识别结果
+        </p>
       </div>
       <div class="card">
         <div

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

@@ -93,6 +93,28 @@
           <p style="text-align: right">点评时间:{{ managerRemarkContents[0].createTime }}</p>
         </van-collapse-item>
       </van-collapse>
+      <template v-if="list.isSku == '是'">
+        <div style="padding: 10px 16px; font-size: 16px; font-weight: bold">SKU图像识别结果</div>
+        <div class="card">
+          <div class="info" @click="toSkuRecognize">
+            <p
+              style="
+                width: 94%;
+                margin: 0;
+                line-height: 24px;
+                padding: 10px 0;
+                display: inline-block;
+              ">
+              拍摄的所有产品陈列照识别结果:<span v-if="list.skuTotal" style="color: red"
+                >{{ list.skuTotal }}个</span
+              >
+            </p>
+            <p class="arrowdetils1">
+              <van-icon name="arrow" />
+            </p>
+          </div>
+        </div>
+      </template>
       <div style="padding: 10px 16px; font-size: 16px; font-weight: bold">任务</div>
       <div class="card" v-if="list.visitSource != 2">
         <div
@@ -397,6 +419,12 @@ export default {
       });
       sessionStorage.setItem('collectionItemList', JSON.stringify(val.collectionItemList));
     },
+    toSkuRecognize() {
+      this.$router.push({
+        path: '/skuRecognize',
+        query: { visitId: this.visitsId },
+      });
+    },
     onClickLeft() {
       if (this.$route.query.token) {
         this.$router.push({

+ 301 - 0
src/views/historicalVisit/skuRecognize.vue

@@ -0,0 +1,301 @@
+<template>
+  <div class="skuRecognize">
+    <van-nav-bar class="navBar" title="拜访任务详情" left-arrow @click-left="onClickLeft">
+      <template #right>
+        <van-button
+          style="height: 30px; padding: 5px; border-radius: 5px"
+          type="info"
+          v-if="detail && detail.skuPhotoIdentifyId"
+          @click="clickFeedbackShow"
+          >识别异常反馈</van-button
+        >
+      </template>
+    </van-nav-bar>
+    <div class="content" v-if="detail">
+      <div class="title">产品陈列照</div>
+      <div class="tipsTitle">{{ detail.skuDescribe }}</div>
+      <div>
+        <van-row gutter="10">
+          <van-col span="4" v-for="(urls, index) in detail.fileUrlList" :key="index">
+            <div class="img-box">
+              <img :src="urls" @click="previewsImg(index)" />
+            </div>
+          </van-col>
+        </van-row>
+      </div>
+      <div class="skuDeatil" v-if="detail.skuList">
+        <div class="tableTitle">SKU图像识别结果:{{ detail.skuTotal }}个</div>
+        <el-table
+          :data="detail.skuList"
+          style="width: 100%; border-radius: 10px"
+          border
+          class="table-headermd1">
+          <el-table-column label="序号" type="index" align="center" width="40"> </el-table-column>
+          <el-table-column
+            label="品类"
+            prop="skuProductType"
+            align="center"
+            width="60"></el-table-column>
+          <el-table-column label="SKU名称" prop="name" align="center">
+            <template slot-scope="scope">
+              <span class="tipTitle">{{ scope.row.name }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="排面数" prop="count" align="center" width="50"></el-table-column>
+        </el-table>
+      </div>
+      <!-- 返回历史 -->
+      <div class="feedbackHistorical" v-if="detail.feedbackList.length">
+        <div class="tableTitle">识别异常反馈</div>
+        <div class="historicalContent">
+          <div class="rejectMsgItem" v-for="(item, index) in detail.feedbackList" :key="index">
+            <div class="item approver">
+              <span class="label">反馈人:</span>
+              <span class="value">{{ item.nickName }}</span>
+            </div>
+            <div class="item approvalTime">
+              <span class="label">反馈时间:</span>
+              <span class="value">{{ item.createTime }}</span>
+            </div>
+            <div class="item rejectCause">
+              <span class="label">反馈内容:</span>
+              <span class="value">{{ item.feedbackContent }}</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 识别异常反馈 -->
+    <van-popup v-model="feedbackShow" round class="feedbackMsgBox" :close-on-click-overlay="false">
+      <div class="feedbackTitle">SKU图像识别结果异常反馈</div>
+      <div class="feedbackContent">
+        <van-field
+          v-model="feedbackMessage"
+          rows="2"
+          autosize
+          type="textarea"
+          :formatter="formatter"
+          placeholder="若识别SKU有遗漏、缺失,请在此反馈,本部会根据实际情况优化模型,谢谢!" />
+      </div>
+      <div class="btnBox">
+        <van-button type="info" plain @click="feedbackShow = false">取消</van-button>
+        <van-button type="info" @click="feedbackSubmit">提交</van-button>
+      </div>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import deleteUploadImg from '@/components/deleteUploadImg';
+import { photoSkuImgSummary, photoSkuFeedback } from '@/api/historicalVisit.js';
+import { ImagePreview } from 'vant';
+export default {
+  name: 'skuRecognize',
+  components: { deleteUploadImg },
+  data() {
+    return {
+      visitsId: '',
+      detail: null,
+      feedbackShow: false,
+      feedbackMessage: '', //反馈内容
+    };
+  },
+  activated() {
+    this.visitsId = this.$route.query.visitId || '';
+    this.getDetail();
+  },
+  methods: {
+    getDetail() {
+      this.toastLoading(0, '加载中...', true);
+      photoSkuImgSummary({ visitsId: this.visitsId })
+        .then((res) => {
+          this.toastLoading().clear();
+          if (res.code == 200) {
+            this.detail = res.data;
+          } else {
+            this.$dialog.alert({
+              message: res.msg,
+            });
+          }
+        })
+        .catch((err) => {
+          this.$dialog.alert({
+            message: err.msg,
+          });
+        });
+    },
+    // 提交反馈
+    feedbackSubmit() {
+      if (this.feedbackMessage == '') {
+        this.$toast('请输入反馈意见!');
+        return;
+      }
+      photoSkuFeedback({
+        photoIdentifyId: this.detail.skuPhotoIdentifyId, //long	sku识别信息id
+        feedbackContent: this.feedbackMessage, //string	内容
+      }).then((res) => {
+        this.feedbackShow = false;
+        this.getDetail();
+      });
+    },
+    previewsImg(index) {
+      ImagePreview({
+        images: this.detail.fileUrlList,
+        startPosition: index,
+      });
+    },
+    formatter(value) {
+      return value.replace(
+        /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,
+        ''
+      );
+    },
+    clickFeedbackShow() {
+      this.feedbackMessage = '';
+      this.feedbackShow = true;
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.skuRecognize {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+  .content {
+    flex: 1;
+    overflow-y: auto;
+    background: #fff;
+    padding: 10px 15px;
+    margin-top: 10px;
+    .title {
+      font-size: 16px;
+      padding-bottom: 10px;
+      font-weight: bold;
+    }
+    .tipsTitle {
+      font-size: 12px;
+      padding-bottom: 10px;
+    }
+    .tableTitle {
+      padding: 10px 0;
+      font-size: 16px;
+      font-weight: bold;
+      background: #f5f5f5;
+      margin: 15px 0;
+    }
+    .skuDeatil {
+    }
+    .feedbackHistorical {
+      .historicalContent {
+        flex: 1;
+        overflow-y: auto;
+        .rejectMsgItem {
+          margin-bottom: 20px;
+          border: 1px solid #ccc;
+          padding: 10px;
+          .item {
+            padding: 5px 0;
+            span {
+              display: inline-block;
+            }
+          }
+          .label {
+            width: 80px;
+            font-size: 14px;
+            font-weight: 600;
+          }
+          .value {
+            font-size: 14px;
+          }
+        }
+      }
+    }
+    .img-box {
+      width: 100%;
+      height: 50px;
+      position: relative;
+      display: inline-block;
+      border-radius: 6px;
+      overflow: hidden;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+  .feedbackMsgBox {
+    min-height: 30%;
+    width: 90%;
+    padding: 10px 20px;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    .feedbackTitle {
+      padding: 10px 0;
+      text-align: center;
+      font-size: 16px;
+      font-weight: 600px;
+    }
+    .feedbackContent {
+      flex: 1;
+      overflow-y: auto;
+      .van-field__control {
+        color: #666 !important;
+      }
+    }
+    .btnBox {
+      margin-bottom: 10px;
+      height: 44px;
+      display: flex;
+      justify-content: space-between;
+      button {
+        width: 45%;
+        border-radius: 10px;
+      }
+    }
+  }
+}
+</style>
+<style lang="scss">
+.skuDeatil {
+  .table-headermd1 {
+    font-size: 14px;
+    text-align: center;
+    position: initial;
+    width: 98% !important;
+    margin: 0 auto;
+    border-right: 0;
+    border-radius: 8px;
+    th {
+      color: #000;
+      font-weight: bold;
+    }
+    td {
+      color: #000;
+    }
+    .el-table__cell {
+      padding: 6px 0 !important;
+      .cell {
+        padding: 0;
+      }
+    }
+  }
+  .table-headermd1 th.el-table__cell {
+    background-color: #f5f5f5;
+  }
+}
+.feedbackMsgBox {
+  .van-cell {
+    border: 1px solid #ccc;
+  }
+  .van-field__control {
+    color: #666;
+  }
+}
+</style>

+ 59 - 3
src/views/week/daily.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="daily">
     <!--        顶部条-->
     <div class="navBarTOP">
       <van-nav-bar class="navBar" title="填写日报" left-arrow @click-left="onClickLeft">
@@ -380,6 +380,25 @@
             </van-col>
           </van-row>
         </van-collapse-item>
+        <!-- 生动化陈列 sku -->
+        <div v-if="photoSkuImgSummaryeList && photoSkuImgSummaryeList.length" class="SKUTable">
+          <p style="padding: 10px 0; font-size: 14px; color: #1e5398; font-weight: 500">
+            SKU陈列照识别结果
+          </p>
+          <el-table
+            :data="photoSkuImgSummaryeList"
+            border
+            class="table-headermd1"
+            style="width: 100%">
+            <el-table-column label="序号" type="index" width="50px" align="center" />
+            <el-table-column label="门店名称(编号)" prop="name" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.storeName }}({{ scope.row.storeCode }})
+              </template>
+            </el-table-column>
+            <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
+          </el-table>
+        </div>
       </van-collapse>
       <div class="contentContainer">
         <div v-if="GZQuota">
@@ -454,6 +473,7 @@ import {
   getDetailById,
   tsContents,
   buryingPoint,
+  getSkuDetailById,
 } from '@/api/index';
 import visitedRealTime from '@/views/componentsTarget/visitedRealTime';
 import createStoreBJ from '@/views/componentsTarget/createStoreBJ';
@@ -549,6 +569,7 @@ export default {
       YFQuota: false, //应用服务
       titlejz: '',
       notVisitReason: '', //今日拜访0家店的原因;
+      photoSkuImgSummaryeList: null,
     };
   },
   created() {
@@ -651,6 +672,7 @@ export default {
             this.reportTarget = res.data;
             this.notVisitReason = this.reportTarget.notVisitReason;
           }
+          this.getskuDetailByIdFun();
         } else {
           this.$toast(res.msg);
         }
@@ -828,13 +850,24 @@ export default {
         } else {
           this.saptitle = '业绩目标SAP(千元)';
         }
-        if (res.data.reportContents.length > 0) {
+        if (res.data.reportContents && res.data.reportContents.length > 0) {
           this.reportContents = res.data.reportContents;
           if (res.data.reportContents.length > 2) {
             this.projectFollowNum = res.data.reportContents[2].projectFollowNum;
             this.tucReportingSuccessNum = res.data.reportContents[3].tucReportingSuccessNum;
           }
         }
+        this.getskuDetailByIdFun();
+      });
+    },
+    getskuDetailByIdFun() {
+      if (this.reportTarget.reportPostType != 'fx') return;
+      getSkuDetailById({ reportId: this.reportTarget.id }).then((res) => {
+        if (res.code == 200) {
+          this.photoSkuImgSummaryeList = res.data;
+        } else {
+          this.photoSkuImgSummaryeList = null;
+        }
       });
     },
     userTodayPlanNum() {
@@ -856,7 +889,7 @@ export default {
 };
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .container {
   margin: 10px;
 }
@@ -910,6 +943,29 @@ export default {
 }
 </style>
 <style lang="scss">
+.daily {
+  .SKUTable {
+    padding-bottom: 10px;
+    .table-headermd1 {
+      font-size: 12px;
+      text-align: center;
+      position: initial;
+      width: 98% !important;
+      margin: 0 auto;
+      border-right: 0;
+      border-radius: 10px;
+      .el-table__cell {
+        padding: 6px 0 !important;
+      }
+      thead {
+        .el-table__cell {
+          background-color: #1989fa;
+          color: #fff;
+        }
+      }
+    }
+  }
+}
 .linepAdd .van-cell__title {
   color: #1e5398;
   font-weight: 500;

+ 86 - 21
src/views/week/dailyApproval.vue

@@ -10,7 +10,7 @@
     <div class="lineGrey"></div>
     <div style="height: 4px"></div>
     <!--        主体内容-->
-    <div class="container linep">
+    <div class="container linep" v-if="reportTargetAll">
       <van-collapse v-model="activeNames" v-if="!YFQuota">
         <!-- YFQuota:应用服务平台 不显示各项指标 -->
         <van-collapse-item v-if="!GZQuota" title="拜访数据(实时)" name="7">
@@ -365,20 +365,63 @@
             </van-col>
           </van-row>
         </van-collapse-item>
-        <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photos">
-          <div v-for="(item, index) in reportTarget.photos" :key="index">
-            <p style="margin-bottom: 10px; margin-top: 0">{{ item.taskName }}</p>
-            <van-row gutter="10" class="visitIMG1">
-              <van-col
-                span="6"
-                style="padding-bottom: 10px"
-                @click="pviewFn(index, indexImg, item)"
-                v-for="(itemImg, indexImg) in item.photos"
-                :key="indexImg">
-                <img :src="itemImg.fileUrl" alt="" />
+        <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photoSummary">
+          <div
+            class="visitIMG1"
+            :style="{
+              overflow: 'hidden',
+              height: visitIMG1Flag ? 'auto' : '170px',
+            }">
+            <template v-for="(item, index) in reportTarget.photoSummary">
+              <van-col span="6" style="padding: 5px" @click="pviewFn(index)" :key="index">
+                <img :src="item.fileUrl" alt="" />
               </van-col>
-            </van-row>
+            </template>
           </div>
+          <div
+            v-if="reportTarget.photoSummary.length > 8"
+            class="arrowIcon"
+            style="
+              display: flex;
+              align-items: center;
+              justify-content: center;
+              padding: 5px 0;
+              font-size: 14px;
+              color: #969799;
+            "
+            @click="visitIMG1Flag = !visitIMG1Flag">
+            <template v-if="visitIMG1Flag">
+              <span style="margin-right: 5px">折叠</span>
+              <van-icon size="14" :name="require('@/assets/Icon/arrow-up.png')" />
+            </template>
+            <template v-else>
+              <span style="margin-right: 5px">展开</span>
+              <van-icon size="14" :name="require('@/assets/Icon/arrow-down.png')" />
+            </template>
+          </div>
+          <!-- 生动化陈列 sku -->
+          <template
+            v-if="
+              reportTarget.photoSkuImgSummaryeList && reportTarget.photoSkuImgSummaryeList.length
+            ">
+            <p style="padding-bottom: 10px; font-size: 14px; color: #1e5398; font-weight: 500">
+              SKU陈列照识别结果
+            </p>
+            <p style="padding-bottom: 10px; font-size: 14px; font-weight: 500">
+              目前识别桶装和战略产品合计106个,后续会增加被识别产品数
+            </p>
+            <el-table
+              :data="reportTarget.photoSkuImgSummaryeList"
+              border
+              class="table-headermd table-headermdhome"
+              style="width: 100%">
+              <el-table-column label="序号" type="index" width="50px" align="center" />
+              <el-table-column label="门店名称(编号)" prop="name" align="center">
+                <template slot-scope="scope"> {{ scope.row.name }}({{ scope.row.code }}) </template>
+              </el-table-column>
+              <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
+            </el-table>
+          </template>
         </van-collapse-item>
       </van-collapse>
       <div class="contentContainer">
@@ -523,7 +566,7 @@ export default {
       Content2: '',
       number: 0,
       powerGrade: '',
-      reportTargetAll: {},
+      reportTargetAll: null,
       saptitle: '业绩目标SAP(千元)',
       failContent: '',
       successContent: '',
@@ -537,6 +580,7 @@ export default {
       GZQuota: false,
       YFQuota: false,
       titlejz: '',
+      visitIMG1Flag: false,
       //
     };
   },
@@ -555,16 +599,20 @@ export default {
     },
   },
   methods: {
+    setVisitIMG1Flag(item) {
+      this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     buryingPoint(val) {
       buryingPoint(val);
     },
-    pviewFn(val, imgVal, datai) {
+    pviewFn(index) {
       var imgList = [];
-      var photos = this.reportTarget.photos[val].photos;
+      var photos = this.reportTarget.photoSummary;
       for (let i = 0; i < photos.length; i++) {
         imgList.push(photos[i].fileUrl);
       }
-      ImagePreview({ images: imgList, startPosition: imgVal });
+      ImagePreview({ images: imgList, startPosition: index });
       this.buryingPoint({
         systemModel: '日报审核',
         buryingPointType: 2,
@@ -700,9 +748,9 @@ export default {
             }
           }
           var imgList = [];
-          if (res.data.photos != null) {
-            for (var k = 0; k < res.data.photos.length; k++) {
-              imgList.push(res.data.photos[k].fileUrl + '');
+          if (res.data.photoSummary != null) {
+            for (var k = 0; k < res.data.photoSummary.length; k++) {
+              imgList.push(res.data.photoSummary[k].fileUrl + '');
             }
           }
           this.imgList = imgList;
@@ -784,7 +832,7 @@ export default {
   border-radius: 2px;
 }
 </style>
-<style>
+<style lang="scss">
 .linep .van-cell__title {
   color: #1e5398;
   font-weight: 500;
@@ -854,4 +902,21 @@ export default {
   height: 75px;
   border-radius: 6px;
 }
+
+.table-headermd {
+  font-size: 12px;
+  text-align: center;
+  position: initial;
+  width: 98% !important;
+  margin: 0 auto;
+  border-right: 0;
+  border-radius: 10px;
+  .el-table__cell {
+    padding: 6px 0 !important;
+  }
+}
+.table-headermd th.el-table__cell {
+  background-color: #1989fa;
+  color: #fff;
+}
 </style>

+ 107 - 38
src/views/week/dailyDetails.vue

@@ -382,20 +382,65 @@
               </van-col>
             </van-row>
           </van-collapse-item>
-          <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photos">
-            <div v-for="(item, index) in reportTarget.photos" :key="index">
-              <p style="margin-bottom: 10px; margin-top: 0">{{ item.taskName }}</p>
-              <van-row gutter="10" class="visitIMG1">
-                <van-col
-                  span="6"
-                  style="padding-bottom: 10px"
-                  @click="pviewFn(index, indexImg)"
-                  v-for="(itemImg, indexImg) in item.photos"
-                  :key="indexImg">
-                  <img :src="itemImg.fileUrl" alt="" />
+          <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photoSummary">
+            <div
+              class="visitIMG1"
+              :style="{
+                overflow: 'hidden',
+                height: visitIMG1Flag ? 'auto' : '170px',
+              }">
+              <template v-for="(item, index) in reportTarget.photoSummary">
+                <van-col span="6" style="padding: 5px" @click="pviewFn(index)" :key="index">
+                  <img :src="item.fileUrl" alt="" />
                 </van-col>
-              </van-row>
+              </template>
+            </div>
+            <div
+              v-if="reportTarget.photoSummary.length > 8"
+              class="arrowIcon"
+              style="
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                padding: 5px 0;
+                font-size: 14px;
+                color: #969799;
+              "
+              @click="visitIMG1Flag = !visitIMG1Flag">
+              <template v-if="visitIMG1Flag">
+                <span style="margin-right: 5px">折叠</span>
+                <van-icon size="14" :name="require('@/assets/Icon/arrow-up.png')" />
+              </template>
+              <template v-else>
+                <span style="margin-right: 5px">展开</span>
+                <van-icon size="14" :name="require('@/assets/Icon/arrow-down.png')" />
+              </template>
             </div>
+            <!-- 生动化陈列 sku -->
+            <template
+              v-if="
+                reportTarget.photoSkuImgSummaryeList && reportTarget.photoSkuImgSummaryeList.length
+              ">
+              <p style="padding-bottom: 10px; font-size: 14px; color: #1e5398; font-weight: 500">
+                SKU陈列照识别结果
+              </p>
+              <p style="padding-bottom: 10px; font-size: 14px; font-weight: 500">
+                目前识别桶装和战略产品合计106个,后续会增加被识别产品数
+              </p>
+              <el-table
+                :data="reportTarget.photoSkuImgSummaryeList"
+                border
+                class="table-headermd table-headermdhome"
+                style="width: 100%">
+                <el-table-column label="序号" type="index" width="50px" align="center" />
+                <el-table-column label="门店名称(编号)" prop="name" align="center">
+                  <template slot-scope="scope">
+                    {{ scope.row.name }}({{ scope.row.code }})
+                  </template>
+                </el-table-column>
+                <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
+              </el-table>
+            </template>
           </van-collapse-item>
         </van-collapse>
         <div class="contentContainer">
@@ -511,16 +556,15 @@
       :close-on-click-modal="false"
       @close="wuliaoTableClose"
       custom-class="shareImgFlag">
-      <div v-if="reportTarget.photos">
+      <div v-if="reportTarget.photoSummary">
         <p style="margin-bottom: 10px; margin-top: 0; display: flex">
           今日总结&明日规划的文本内容<van-checkbox
             v-model="checkedPlan"
             style="margin-left: 10px"></van-checkbox>
         </p>
-        <div v-for="(item, index) in reportTarget.photos" :key="index">
-          <p style="margin-bottom: 10px">{{ item.taskName }}</p>
-          <div class="shareVisitImg">
-            <div v-for="(itemImg, indexImg) in item.photos" :key="indexImg">
+        <div class="shareVisitImg">
+          <template v-for="(itemImg, indexImg) in reportTarget.photoSummary">
+            <div>
               <img :src="itemImg.fileUrl" alt="" @click="selectImg(itemImg)" />
               <van-icon
                 @click.stop
@@ -539,7 +583,7 @@
                 "
                 v-if="itemImg.checked" />
             </div>
-          </div>
+          </template>
         </div>
       </div>
       <span slot="footer" class="footer-btn">
@@ -641,6 +685,7 @@ export default {
       setDailyDetailsBoxFlag: true,
       sourceType: '',
       checkedPlan: true, //今日总结&明日规划
+      visitIMG1Flag: false,
       //
     };
   },
@@ -670,6 +715,10 @@ export default {
     this.setShareFlag = false;
   },
   methods: {
+    setVisitIMG1Flag(item) {
+      // this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     setDailyDetailsBox(flag) {
       this.setDailyDetailsBoxFlag = flag;
     },
@@ -687,12 +736,12 @@ export default {
       });
       this.urlList = [];
       this.reportRemarksIndex = index;
-      if (this.reportTarget.photos && this.reportTarget.photos.length) {
+      if (this.reportTarget.photoSummary && this.reportTarget.photoSummary.length) {
         // 重置分享图片状态
-        this.reportTarget.photos.forEach((item) => {
-          item.photos.forEach((val) => {
-            this.$set(val, 'checked', false);
-          });
+        this.reportTarget.photoSummary.forEach((item) => {
+          // item.photos.forEach((val) => {
+          this.$set(item, 'checked', false);
+          // });
         });
         // 选择分享的图片
         this.shareImgFlag = true;
@@ -702,10 +751,10 @@ export default {
     },
     // 确认分享
     confirmShare() {
-      this.reportTarget.photos.forEach((item) => {
-        item.photos.forEach((val) => {
-          if (val.checked) this.urlList.push(val.fileUrl);
-        });
+      this.reportTarget.photoSummary.forEach((item) => {
+        // item.photos.forEach((val) => {
+        if (item.checked) this.urlList.push(item.fileUrl);
+        // });
       });
       if (this.urlList.length == 0 && !this.checkedPlan) {
         this.$notify({ type: 'warning', message: '请选择分享内容!', className: 'notifyIndex' });
@@ -721,13 +770,13 @@ export default {
       this.shareImgFlag = false;
       this.setShareFlag = true;
     },
-    pviewFn(val, imgVal) {
+    pviewFn(index) {
       var imgList = [];
-      var photos = this.reportTarget.photos[val].photos;
+      var photos = this.reportTarget.photoSummary;
       for (let i = 0; i < photos.length; i++) {
         imgList.push(photos[i].fileUrl);
       }
-      ImagePreview({ images: imgList, startPosition: imgVal });
+      ImagePreview({ images: imgList, startPosition: index });
     },
     submint() {
       this.$router.push({
@@ -780,11 +829,12 @@ export default {
         }
         this.reportContents = res.data.reportContents;
         var imgList = [];
-        if (res.data.photos != null) {
-          for (var k = 0; k < res.data.photos.length; k++) {
-            imgList.push(res.data.photos[k].fileUrl + '');
+        if (res.data.photoSummary != null) {
+          for (var k = 0; k < res.data.photoSummary.length; k++) {
+            imgList.push(res.data.photoSummary[k].fileUrl + '');
           }
         }
+        console.log(res.data.photoSummary);
         this.imgList = imgList;
         if (this.sourceType == 'daily') {
           this.$nextTick(() => {
@@ -942,11 +992,30 @@ export default {
 .colorbalck {
   color: #333;
 }
-.visitIMG1 img {
-  display: block;
-  width: 100%;
-  height: 75px;
-  border-radius: 6px;
+.visitIMG1 {
+  img {
+    display: block;
+    width: 100%;
+    height: 75px;
+    border-radius: 6px;
+  }
+}
+
+.table-headermd {
+  font-size: 12px;
+  text-align: center;
+  position: initial;
+  width: 98% !important;
+  margin: 0 auto;
+  border-right: 0;
+  border-radius: 10px;
+  .el-table__cell {
+    padding: 6px 0 !important;
+  }
+}
+.table-headermd th.el-table__cell {
+  background-color: #1989fa;
+  color: #fff;
 }
 .el-dialog__wrapper {
   z-index: 9999 !important;

+ 111 - 35
src/views/week/dailyHistoricalDetails.vue

@@ -27,7 +27,7 @@
       <div class="lineGrey"></div>
       <div class="lineGrey"></div>
       <!--        主体内容-->
-      <div class="container linep">
+      <div class="container linep" v-if="reportTargetAll">
         <p style="font-size: 16px; margin: 10px 0">
           {{ title }}
         </p>
@@ -395,20 +395,65 @@
               </van-col>
             </van-row>
           </van-collapse-item>
-          <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photos">
-            <div v-for="(item, index) in reportTarget.photos" :key="index">
-              <p style="margin-bottom: 10px; margin-top: 0">{{ item.taskName }}</p>
-              <van-row gutter="10" class="visitIMG1">
-                <van-col
-                  span="6"
-                  style="padding-bottom: 10px"
-                  @click="pviewFn(index, indexImg)"
-                  v-for="(itemImg, indexImg) in item.photos"
-                  :key="indexImg">
-                  <img :src="itemImg.fileUrl" alt="" />
+          <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photoSummary">
+            <div
+              class="visitIMG1"
+              :style="{
+                overflow: 'hidden',
+                height: visitIMG1Flag ? 'auto' : '170px',
+              }">
+              <template v-for="(item, index) in reportTarget.photoSummary">
+                <van-col span="6" style="padding: 5px" @click="pviewFn(index)" :key="index">
+                  <img :src="item.fileUrl" alt="" />
                 </van-col>
-              </van-row>
+              </template>
+            </div>
+            <div
+              v-if="reportTarget.photoSummary.length > 8"
+              class="arrowIcon"
+              style="
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                padding: 5px 0;
+                font-size: 14px;
+                color: #969799;
+              "
+              @click="visitIMG1Flag = !visitIMG1Flag">
+              <template v-if="visitIMG1Flag">
+                <span style="margin-right: 5px">折叠</span>
+                <van-icon size="14" :name="require('@/assets/Icon/arrow-up.png')" />
+              </template>
+              <template v-else>
+                <span style="margin-right: 5px">展开</span>
+                <van-icon size="14" :name="require('@/assets/Icon/arrow-down.png')" />
+              </template>
             </div>
+            <!-- 生动化陈列 sku -->
+            <template
+              v-if="
+                reportTarget.photoSkuImgSummaryeList && reportTarget.photoSkuImgSummaryeList.length
+              ">
+              <p style="padding-bottom: 10px; font-size: 14px; color: #1e5398; font-weight: 500">
+                SKU陈列照识别结果
+              </p>
+              <p style="padding-bottom: 10px; font-size: 14px; font-weight: 500">
+                目前识别桶装和战略产品合计106个,后续会增加被识别产品数
+              </p>
+              <el-table
+                :data="reportTarget.photoSkuImgSummaryeList"
+                border
+                class="table-headermd table-headermdhome"
+                style="width: 100%">
+                <el-table-column label="序号" type="index" width="50px" align="center" />
+                <el-table-column label="门店名称(编号)" prop="name" align="center">
+                  <template slot-scope="scope">
+                    {{ scope.row.name }}({{ scope.row.code }})
+                  </template>
+                </el-table-column>
+                <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
+              </el-table>
+            </template>
           </van-collapse-item>
         </van-collapse>
         <div class="contentContainer">
@@ -559,16 +604,15 @@
       :close-on-click-modal="false"
       @close="wuliaoTableClose"
       custom-class="shareImgFlag">
-      <div v-if="reportTarget.photos">
+      <div v-if="reportTarget.photoSummary">
         <p style="margin-bottom: 10px; margin-top: 0; display: flex">
           今日总结&明日规划的文本内容<van-checkbox
             v-model="checkedPlan"
             style="margin-left: 10px"></van-checkbox>
         </p>
-        <div v-for="(item, index) in reportTarget.photos" :key="index">
-          <p style="margin-bottom: 10px">{{ item.taskName }}</p>
-          <div class="shareVisitImg">
-            <div v-for="(itemImg, indexImg) in item.photos" :key="indexImg">
+        <div class="shareVisitImg">
+          <template v-for="(itemImg, indexImg) in reportTarget.photoSummary">
+            <div>
               <img :src="itemImg.fileUrl" alt="" @click="selectImg(itemImg)" />
               <van-icon
                 @click.stop
@@ -587,7 +631,7 @@
                 "
                 v-if="itemImg.checked" />
             </div>
-          </div>
+          </template>
         </div>
       </div>
       <span slot="footer" class="footer-btn">
@@ -672,7 +716,7 @@ export default {
       powerGrade: '',
       Content: '',
       Content2: '',
-      reportTargetAll: {},
+      reportTargetAll: null,
       reportContents: [{ dayContent: '' }],
       reportTarget: {},
       successContent: '',
@@ -696,6 +740,7 @@ export default {
       reportId: '',
       checkedPlan: true, //今日总结&明日规划
       setDailyDetailsBoxFlag: true,
+      visitIMG1Flag: false,
       //
     };
   },
@@ -731,6 +776,10 @@ export default {
     this.setShareFlag = false;
   },
   methods: {
+    setVisitIMG1Flag(item) {
+      this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     setDailyDetailsBox(flag) {
       this.setDailyDetailsBoxFlag = flag;
     },
@@ -748,12 +797,12 @@ export default {
       });
       this.urlList = [];
       this.reportRemarksIndex = index;
-      if (this.reportTarget.photos && this.reportTarget.photos.length) {
+      if (this.reportTarget.photoSummary && this.reportTarget.photoSummary.length) {
         // 重置分享图片状态
-        this.reportTarget.photos.forEach((item) => {
-          item.photos.forEach((val) => {
-            this.$set(val, 'checked', false);
-          });
+        this.reportTarget.photoSummary.forEach((item) => {
+          // item.photos.forEach((val) => {
+          this.$set(item, 'checked', false);
+          // });
         });
         // 选择分享的图片
         this.shareImgFlag = true;
@@ -763,10 +812,10 @@ export default {
     },
     // 确认分享
     confirmShare() {
-      this.reportTarget.photos.forEach((item) => {
-        item.photos.forEach((val) => {
-          if (val.checked) this.urlList.push(val.fileUrl);
-        });
+      this.reportTarget.photoSummary.forEach((item) => {
+        // item.photos.forEach((val) => {
+        if (item.checked) this.urlList.push(item.fileUrl);
+        // });
       });
       if (this.urlList.length == 0 && !this.checkedPlan) {
         this.$notify({ type: 'warning', message: '请选择分享内容!', className: 'notifyIndex' });
@@ -782,13 +831,13 @@ export default {
       this.shareImgFlag = false;
       this.setShareFlag = true;
     },
-    pviewFn(val, imgVal) {
+    pviewFn(index) {
       var imgList = [];
-      var photos = this.reportTarget.photos[val].photos;
+      var photos = this.reportTarget.photoSummary;
       for (let i = 0; i < photos.length; i++) {
         imgList.push(photos[i].fileUrl);
       }
-      ImagePreview({ images: imgList, startPosition: imgVal });
+      ImagePreview({ images: imgList, startPosition: index });
     },
     openEnterpriseChatv() {
       this.$dialog
@@ -986,13 +1035,23 @@ export default {
           }
           this.reportContents = res.data.reportContents;
           var imgList = [];
-          if (res.data.photos != null) {
-            for (var k = 0; k < res.data.photos.length; k++) {
-              imgList.push(res.data.photos[k].fileUrl + '');
+          if (res.data.photoSummary != null) {
+            for (var k = 0; k < res.data.photoSummary.length; k++) {
+              imgList.push(res.data.photoSummary[k].fileUrl + '');
             }
           }
           this.imgList = imgList;
         }
+        this.reportContents = res.data.reportContents;
+        var imgList = [];
+        if (res.data.photoSummary != null) {
+          if (res.data.photoSummary != null) {
+            for (var k = 0; k < res.data.photoSummary.length; k++) {
+              imgList.push(res.data.photoSummary[k].fileUrl + '');
+            }
+          }
+        }
+        this.imgList = imgList;
       });
     },
     userTodayPlanNum() {
@@ -1161,6 +1220,23 @@ export default {
   height: 75px;
   border-radius: 6px;
 }
+
+.table-headermd {
+  font-size: 12px;
+  text-align: center;
+  position: initial;
+  width: 98% !important;
+  margin: 0 auto;
+  border-right: 0;
+  border-radius: 10px;
+  .el-table__cell {
+    padding: 6px 0 !important;
+  }
+}
+.table-headermd th.el-table__cell {
+  background-color: #1989fa;
+  color: #fff;
+}
 .el-dialog__wrapper {
   z-index: 9999 !important;
   display: flex;

+ 6 - 14
src/views/week/index.vue

@@ -62,7 +62,7 @@
         </van-cell-group>
         <!--      客资类-->
         <van-cell-group inset class="mtb10">
-          <van-cell title="客资&投诉任务" to="/clew" v-if="customerClueButton">
+          <van-cell title="客资&投诉任务" to="/clew" v-if="customerClueButton" is-link>
             <template #icon>
               <van-icon :name="history" class="zicon" />
             </template>
@@ -72,11 +72,8 @@
                 customerClueNum
               }}</van-tag>
             </template>
-            <template #right-icon>
-              <van-icon name="arrow" size="16" />
-            </template>
           </van-cell>
-          <van-cell title="待分配客资" to="/assignAwait" v-if="isAssignFlag">
+          <van-cell title="待分配客资" to="/assignAwait" v-if="isAssignFlag" is-link>
             <template #icon>
               <van-icon :name="history" class="zicon" />
             </template>
@@ -86,13 +83,11 @@
                 notAllocationNum
               }}</van-tag>
             </template>
-            <template #right-icon>
-              <van-icon name="arrow" size="16" />
-            </template>
-          </van-cell> </van-cell-group
-        ><!--拜访照片识别异常反馈 部主管及以上-->
+          </van-cell>
+        </van-cell-group>
+        <!--拜访照片识别异常反馈 部主管及以上-->
         <van-cell-group inset class="mtb10">
-          <van-cell title="拜访照片识别异常反馈" to="/AIImage">
+          <van-cell title="拜访照片识别异常反馈" to="/AIImage" is-link>
             <template #icon>
               <van-icon :name="history" class="zicon" />
             </template>
@@ -104,9 +99,6 @@
                 <van-tag type="danger">{{ photoApprovalNum }}</van-tag>
               </span>
             </template>
-            <template #right-icon>
-              <van-icon name="arrow" size="16" />
-            </template>
           </van-cell>
         </van-cell-group>
         <!--      汇报类-->