Browse Source

Merge branch 'feature_20250704_陈列SKU图片识别' into uat(dev)

# Conflicts:
#	src/views/week/dailyDetails.vue
#	src/views/week/dailyHistoricalDetails.vue
zhujindu 5 months ago
parent
commit
70694f4ba5

+ 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 {

+ 27 - 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,34 @@
           </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="photoIdentifyType == '6'" style="color: red">
+              请拍摄该店内所有立邦陈列产品,将用于计算该店经营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">
@@ -2724,7 +2731,7 @@
         font-size: 14px;
         left: 14px;
       "
-      v-if="processKey"
+      v-if="processKey && isEditSDHCL"
       @click="removeFn">
       <van-icon name="cross" />&nbsp;&nbsp;清空内容
     </div>
@@ -2842,6 +2849,7 @@ export default {
       productTitles: null,
       inspectionType: '',
       competitortableData: [],
+      isEditSDHCL: true, //是否可以编辑生动化陈列
     };
   },
   beforeRouteLeave(to, from, next) {
@@ -3380,6 +3388,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

+ 22 - 0
src/views/historicalVisit/hisvistdeils.vue

@@ -246,6 +246,25 @@
             <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
           </div>
         </div>
+        <!-- SKU识别 -->
+        <!-- 生动化陈列 sku -->
+        <template v-if="photoSkuImgSummaryeList && photoSkuImgSummaryeList.length">
+          <div class="skuNum" style="padding: 10px 0">
+            SKU识别:{{ photoSkuImgSummaryeList.length }}个
+          </div>
+          <el-table
+            :data="photoSkuImgSummaryeList"
+            style="width: 100%"
+            border
+            class="table-headermd">
+            <el-table-column label="SKU名称" prop="name" width="180" 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"></el-table-column>
+          </el-table>
+        </template>
       </van-form>
     </div>
     <van-dialog v-model="listShow" title="历史回显" show-cancel-button :showConfirmButton="false">
@@ -302,6 +321,7 @@ export default {
       checkShow: false,
       infoData: {},
       putInCode: '',
+      photoSkuImgSummaryeList: [],
     };
   },
   activated() {
@@ -373,6 +393,8 @@ export default {
         this.toastLoading().clear();
         this.infoData = res.data;
         var collectionItemLists = res.data.sfaTaskList[this.$route.query.ids].collectionItemList;
+        this.photoSkuImgSummaryeList =
+          res.data.sfaTaskList[this.$route.query.ids].photoSkuImgSummaryeList;
         if (res.data.sfaTaskList[this.$route.query.ids].checkUnManage == 'Y') {
           this.checkShow = true;
         } else {

+ 31 - 1
src/views/week/dailyApproval.vue

@@ -368,7 +368,13 @@
         <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-row
+              gutter="10"
+              class="visitIMG1"
+              :style="{
+                overflow: 'hidden',
+                height: item.visitIMG1Flag ? 'auto' : '85px',
+              }">
               <van-col
                 span="6"
                 style="padding-bottom: 10px"
@@ -378,6 +384,25 @@
                 <img :src="itemImg.fileUrl" alt="" />
               </van-col>
             </van-row>
+            <div
+              v-if="item.photos.length > 4"
+              class="arrowIcon"
+              style="text-align: center; padding: 3px 0"
+              @click="setVisitIMG1Flag(item)">
+              <van-icon size="28" :name="item.visitIMG1Flag ? 'arrow-up' : 'arrow-down'" />
+            </div>
+            <!-- 生动化陈列 sku -->
+            <template v-if="photoSkuImgSummaryeList && item.photoSkuImgSummaryeList.length">
+              <!-- <div class="skuNum">SKU识别:{{ item.num }}个</div> -->
+              <el-table
+                :data="item.productDetail"
+                border
+                class="table-headermd table-headermdhome"
+                style="width: 100%">
+                <el-table-column label="SKU名称" prop="name" align="center" />
+                <el-table-column label="数量" prop="cont" width="80px" align="center" />
+              </el-table>
+            </template>
           </div>
         </van-collapse-item>
       </van-collapse>
@@ -555,6 +580,10 @@ export default {
     },
   },
   methods: {
+    setVisitIMG1Flag(item) {
+      this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     buryingPoint(val) {
       buryingPoint(val);
     },
@@ -702,6 +731,7 @@ export default {
           var imgList = [];
           if (res.data.photos != null) {
             for (var k = 0; k < res.data.photos.length; k++) {
+              res.data.photos[k].visitIMG1Flag = false;
               imgList.push(res.data.photos[k].fileUrl + '');
             }
           }

+ 40 - 7
src/views/week/dailyDetails.vue

@@ -404,16 +404,41 @@
             <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-row
+                  gutter="10"
+                  class="visitIMG1"
+                  :style="{
+                    overflow: 'hidden',
+                    height: item.visitIMG1Flag ? 'auto' : '85px',
+                  }">
                   <van-col
                     span="6"
                     style="padding-bottom: 10px"
-                    @click="pviewFn(index, indexImg)"
+                    @click="pviewFn(index, indexImg, item)"
                     v-for="(itemImg, indexImg) in item.photos"
                     :key="indexImg">
                     <img :src="itemImg.fileUrl" alt="" />
                   </van-col>
                 </van-row>
+                <div
+                  v-if="item.photos.length > 4"
+                  class="arrowIcon"
+                  style="text-align: center; padding: 3px 0"
+                  @click="setVisitIMG1Flag(item)">
+                  <van-icon size="28" :name="item.visitIMG1Flag ? 'arrow-up' : 'arrow-down'" />
+                </div>
+                <!-- 生动化陈列 sku -->
+                <template v-if="photoSkuImgSummaryeList && item.photoSkuImgSummaryeList.length">
+                  <!-- <div class="skuNum">SKU识别:{{ item.num }}个</div> -->
+                  <el-table
+                    :data="item.productDetail"
+                    border
+                    class="table-headermd table-headermdhome"
+                    style="width: 100%">
+                    <el-table-column label="SKU名称" prop="name" align="center" />
+                    <el-table-column label="数量" prop="cont" width="80px" align="center" />
+                  </el-table>
+                </template>
               </div>
             </van-collapse-item>
           </van-collapse>
@@ -728,6 +753,10 @@ export default {
       this.shareImgFlag = false;
       this.setShareFlag = true;
     },
+    setVisitIMG1Flag(item) {
+      this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     pviewFn(val, imgVal) {
       var imgList = [];
       var photos = this.reportTarget.photos[val].photos;
@@ -791,9 +820,11 @@ export default {
         var imgList = [];
         if (res.data.photos != null) {
           for (var k = 0; k < res.data.photos.length; k++) {
+            res.data.photos[k].visitIMG1Flag = false;
             imgList.push(res.data.photos[k].fileUrl + '');
           }
         }
+        console.log(res.data.photos);
         this.imgList = imgList;
         if (this.sourceType == 'daily') {
           this.$nextTick(() => {
@@ -951,11 +982,13 @@ 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;
+  }
 }
 .el-dialog__wrapper {
   z-index: 9999 !important;

+ 32 - 2
src/views/week/dailyHistoricalDetails.vue

@@ -398,16 +398,41 @@
           <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-row
+                gutter="10"
+                class="visitIMG1"
+                :style="{
+                  overflow: 'hidden',
+                  height: item.visitIMG1Flag ? 'auto' : '85px',
+                }">
                 <van-col
                   span="6"
                   style="padding-bottom: 10px"
-                  @click="pviewFn(index, indexImg)"
+                  @click="pviewFn(index, indexImg, item)"
                   v-for="(itemImg, indexImg) in item.photos"
                   :key="indexImg">
                   <img :src="itemImg.fileUrl" alt="" />
                 </van-col>
               </van-row>
+              <div
+                v-if="item.photos.length > 4"
+                class="arrowIcon"
+                style="text-align: center; padding: 3px 0"
+                @click="setVisitIMG1Flag(item)">
+                <van-icon size="28" :name="item.visitIMG1Flag ? 'arrow-up' : 'arrow-down'" />
+              </div>
+              <!-- 生动化陈列 sku -->
+              <template v-if="photoSkuImgSummaryeList && item.photoSkuImgSummaryeList.length">
+                <!-- <div class="skuNum">SKU识别:{{ item.num }}个</div> -->
+                <el-table
+                  :data="item.productDetail"
+                  border
+                  class="table-headermd table-headermdhome"
+                  style="width: 100%">
+                  <el-table-column label="SKU名称" prop="name" align="center" />
+                  <el-table-column label="数量" prop="cont" width="80px" align="center" />
+                </el-table>
+              </template>
             </div>
           </van-collapse-item>
         </van-collapse>
@@ -762,6 +787,10 @@ export default {
       this.shareImgFlag = false;
       this.setShareFlag = true;
     },
+    setVisitIMG1Flag(item) {
+      this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
+      this.$forceUpdate();
+    },
     pviewFn(val, imgVal) {
       var imgList = [];
       var photos = this.reportTarget.photos[val].photos;
@@ -968,6 +997,7 @@ export default {
           var imgList = [];
           if (res.data.photos != null) {
             for (var k = 0; k < res.data.photos.length; k++) {
+              res.data.photos[k].visitIMG1Flag = false;
               imgList.push(res.data.photos[k].fileUrl + '');
             }
           }