فهرست منبع

完美门店优化

zhujindu 4 روز پیش
والد
کامیت
e3f1783130

+ 5 - 0
src/router/index.js

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

+ 3 - 3
src/views/deviceOutside/index.vue

@@ -356,14 +356,14 @@
               <van-icon :name="times" color="#ee0a24" size="32" />
             </div>
             <template v-if="item.stateString == '已拜访'">
-              <div class="statstext">
-                已拜访
+              <div class="statstext" style="background-color: #e3f0fe">
+                <span style="color: #387bca">已拜访</span>
                 <div
                   class="statstextIcon"
                   style="background-color: #0057ba"
                   v-if="item.jinpaiStore"
                   @click="openPerfectStore(item)">
-                  <div style="margin: 5px 7px; font-size: 14px; font-weight: 600">
+                  <div style="margin: 4px; font-size: 14px; font-weight: 600">
                     <img
                       style="width: 18px; height: 20px; margin-left: 5px; vertical-align: -5px"
                       :src="require('@/assets/shouzhi.png')" />完美门店报告

+ 84 - 92
src/views/historicalVisit/perfectStore.vue

@@ -3,7 +3,7 @@
     <!--        顶部条-->
     <van-nav-bar class="navBar" title="完美门店报告" left-arrow @click-left="onClickLeft">
       <template #right>
-        <!-- <span
+        <span
           style="
             color: white;
             background: #74a4d9;
@@ -13,7 +13,8 @@
           "
           @click="editorFn"
           v-if="!remarkShow && sameDay"
-          >编辑</span> -->
+          >编辑</span
+        >
       </template>
     </van-nav-bar>
     <!--        主体内容-->
@@ -119,73 +120,62 @@
       <!-- 特殊任务展示 -->
       <!-- 店招 -->
       <div class="shopSign specialTask" v-if="shopSignDetail && shopSignDetail.qualifiedState">
-        <div class="specialTaskLeft">
-          <div class="SignText" style="width: 40px">店招:</div>
+        <div class="specialTaskLeft" @click="openPerfectStoreSign">
+          <div class="SignText">AI 店招识别</div>
           <div class="signContent">
-            <div class="icon">
-              <van-icon
-                name="checked"
-                color="#07c160"
-                v-if="shopSignDetail.qualifiedState == '1'" />
-              <van-icon name="warning" color="#ee0a24" v-else />
-            </div>
-            <div
-              class="content"
-              :style="{ color: shopSignDetail.qualifiedState == '1' ? '#07c160' : '#ee0a24' }">
-              {{
-                shopSignDetail.qualifiedState == '1' ? '已通过' : shopSignDetail.unqualifiedReason
-              }}
+            <div class="" style="display: flex">
+              <van-button round type="primary" v-if="shopSignDetail.qualifiedState == '1'"
+                >通过</van-button
+              >
+              <van-button round type="danger" v-else>不通过</van-button>
+              <div class="jiantou">
+                <van-icon name="arrow" />
+              </div>
             </div>
           </div>
         </div>
-        <div class="shopSignImg">
-          <img :src="shopSignDetail.fileUrl" @click="previewsImg(shopSignDetail.fileUrl)" />
-        </div>
       </div>
       <!-- 调色机 -->
       <div class="TSJBox specialTask" v-if="tiaoSJDetail && tiaoSJDetail.qualifiedState">
         <div class="specialTaskLeft">
-          <div class="SignText">调色机:</div>
+          <div class="SignText">AI 调色机识别</div>
           <div class="signContent">
-            <div class="icon">
-              <van-icon name="checked" color="#07c160" v-if="tiaoSJDetail.qualifiedState == '1'" />
-              <van-icon name="warning" color="#ee0a24" v-else />
+            <div class="" style="display: flex">
+              <van-button round type="primary" v-if="tiaoSJDetail.qualifiedState == '1'"
+                >通过</van-button
+              >
+              <van-button round type="danger" v-else>不通过</van-button>
+              <div class="jiantou">
+                <van-icon name="arrow" />
+              </div>
             </div>
-            <div
-              class="content"
-              :style="{ color: tiaoSJDetail.qualifiedState == '1' ? '#07c160' : '#ee0a24' }">
-              {{ tiaoSJDetail.qualifiedState == '1' ? '已通过' : tiaoSJDetail.unqualifiedReason }}
+          </div>
+        </div>
+      </div>
+      <!-- 陈列SKU个数: -->
+      <div class="TSJBox specialTask" v-if="list.isSku == '是'">
+        <div class="specialTaskLeft">
+          <div class="SignText">
+            AI SKU个数识别: <span v-if="list.skuTotal">{{ list.skuTotal }}个</span>
+          </div>
+          <div class="signContent" @click="toSkuRecognize">
+            <div class="" style="display: flex">
+              <span style="color: rgb(25, 137, 250)">查看详情</span>
+              <div class="jiantou">
+                <van-icon name="arrow" />
+              </div>
             </div>
           </div>
         </div>
-        <div class="shopSignImg" v-if="tiaoSJDetail.qualifiedState">
-          <img :src="tiaoSJDetail.fileUrl" @click="previewsImg(tiaoSJDetail.fileUrl)" />
+      </div>
+      <!-- 目前陈列任务 -->
+      <div class="TSJBox specialTask" v-if="list.isSku == '是'">
+        <div class="specialTaskLeft">
+          <div class="SignText">AI 陈列任务识别</div>
         </div>
       </div>
       <div class="SKUBox">
-        <div
-          class="SKUTotal"
-          style="padding: 5px 0 15px 0"
-          @click="toSkuRecognize"
-          v-if="list.isSku == '是'">
-          <p
-            style="
-              flex: 1;
-              margin: 0;
-              line-height: 24px;
-              /* padding: 10px 0; */
-              display: inline-block;
-              font-weight: 600;
-            ">
-            陈列SKU个数:<span v-if="list.skuTotal">{{ list.skuTotal }}个</span>
-          </p>
-          <p class="arrowdetils1" style="margin: 0">
-            查看详情
-            <van-icon name="arrow" />
-          </p>
-        </div>
         <div class="SKUList">
-          <div class="SKUListTitle">目前陈列任务:</div>
           <div
             class="itemList"
             v-for="(value, index) in taskTypeArr"
@@ -207,7 +197,7 @@
       </div>
 
       <div style="padding: 15px 16px; font-size: 16px; font-weight: bold; background: #f5f5f5">
-        任务
+        其他拜访任务
       </div>
       <div class="card" v-if="list.visitSource != 2">
         <div
@@ -579,6 +569,12 @@ export default {
     previewsImg(url) {
       ImagePreview([url]);
     },
+    openPerfectStoreSign() {
+      this.$router.push({
+        path: '/perfectStoreSign',
+        query: { visitId: this.visitsId },
+      });
+    },
   },
 };
 </script>
@@ -588,53 +584,46 @@ export default {
   .specialTask {
     display: flex;
     flex-direction: row;
-    margin: 0px 10px;
+    margin: 5px 10px;
     border-radius: 10px;
-    min-height: 90px;
-    padding: 10px 10px;
+    // min-height: 90px;
+    padding: 10px 0px 10px 10px;
     font-size: 16px;
     justify-content: space-between;
+    background: #e5faff;
     .specialTaskLeft {
       display: flex;
       flex-direction: row;
+      justify-content: space-between;
+      width: 100%;
     }
     .SignText {
-      color: rgb(25, 137, 250);
-      width: 55px;
       font-weight: 600;
     }
     .signContent {
       display: flex;
       flex-direction: row;
       margin: 0 8px;
-      flex: 1;
       .icon {
         padding-top: 2px;
         margin-right: 5px;
       }
     }
-    .shopSignImg {
-      img {
-        height: 80px;
-        width: 80px;
-        border-radius: 8px;
-      }
-    }
-  }
-  .shopSign {
-    background: #e5faff;
-  }
-  .TSJBox {
-    background: #fff4e4;
-    margin-top: 20px;
   }
+  // .shopSign {
+  //   background: #e5faff;
+  // }
+  // .TSJBox {
+  //   background: #fff4e4;
+  //   margin-top: 20px;
+  // }
   .SKUBox {
-    margin: 10px 10px 10px 10px;
+    margin: 0px 10px 10px 10px;
     border-radius: 10px;
     min-height: 90px;
     padding: 5px 10px;
     font-size: 16px;
-    background: #ffecf4;
+    // background: #ffecf4;
     .SKUTotal {
       display: flex;
       justify-content: space-between;
@@ -648,26 +637,29 @@ export default {
         justify-content: space-between;
         align-items: center;
         padding: 3px 0;
-        .itemTitle {
-          flex: 1;
-          // text-decoration: underline;
-          // color: rgb(25, 137, 250);
-        }
-        .jiantou {
-          margin-left: 5px;
-          color: rgb(25, 137, 250);
-          display: flex;
-          align-items: center;
-        }
-        button {
-          width: 55px;
-          height: 28px;
-          padding: 0;
-          font-size: 12px;
-        }
       }
     }
   }
+  .itemList,
+  .signContent {
+    .itemTitle {
+      flex: 1;
+      // text-decoration: underline;
+      // color: rgb(25, 137, 250);
+    }
+    .jiantou {
+      margin-left: 5px;
+      color: rgb(25, 137, 250);
+      display: flex;
+      align-items: center;
+    }
+    button {
+      width: 55px;
+      height: 28px;
+      padding: 0;
+      font-size: 12px;
+    }
+  }
 }
 .container {
   padding-bottom: 50px;

+ 174 - 0
src/views/historicalVisit/perfectStoreSign.vue

@@ -0,0 +1,174 @@
+<template>
+  <div class="perfectStoreSign">
+    <van-nav-bar class="navBar" title="AI 店招识别" left-arrow @click-left="onClickLeft" />
+    <div class="content">
+      <div class="contentBox">
+        <div class="shopSign specialTask" v-if="shopSignDetail && shopSignDetail.qualifiedState">
+          <div class="specialTaskLeft">
+            <div class="SignText">识别结果:</div>
+            <div class="signContent">
+              <div class="icon">
+                <van-icon
+                  name="checked"
+                  color="#07c160"
+                  v-if="shopSignDetail.qualifiedState == '1'" />
+                <van-icon name="warning" color="#ee0a24" v-else />
+              </div>
+              <div :style="{ color: shopSignDetail.qualifiedState == '1' ? '#07c160' : '#ee0a24' }">
+                {{
+                  shopSignDetail.qualifiedState == '1' ? '已通过' : shopSignDetail.unqualifiedReason
+                }}
+              </div>
+            </div>
+            <div class="shopSignButton">
+              <div class="" style="display: flex">
+                <van-button round type="primary" v-if="shopSignDetail.qualifiedState == '1'"
+                  >通过</van-button
+                >
+                <van-button round type="danger" v-else>不通过</van-button>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="shopSignImg">
+          <div class="text">店招照片</div>
+          <div class="imgBox">
+            <img
+              v-if="shopSignDetail && shopSignDetail.qualifiedState"
+              :src="shopSignDetail.fileUrl"
+              @click="previewsImg(shopSignDetail.fileUrl)" />
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import deleteUploadImg from '@/components/deleteUploadImg';
+import { getVisitsDetailPerfectStore } from '@/api/index';
+import { ImagePreview } from 'vant';
+export default {
+  name: 'perfectStoreSign',
+  components: { deleteUploadImg },
+  data() {
+    return {
+      visitsId: '',
+      detail: null,
+      shopSignDetail: null,
+    };
+  },
+  activated() {
+    this.visitsId = this.$route.query.visitId || '';
+    this.detail = null;
+    this.getVisitsDetailFn();
+  },
+  methods: {
+    getVisitsDetailFn() {
+      this.shopSignDetail = null;
+      getVisitsDetailPerfectStore({ visitsId: this.visitsId })
+        .then((res) => {
+          this.toastLoading().clear();
+          if (res.code == 200) {
+            this.detail = res.data;
+            let shopSignArr = this.detail.sfaTaskList.filter((val) => val.photoIdentifyType == '1');
+            if (shopSignArr.length) this.shopSignDetail = shopSignArr[0];
+          } else {
+            this.$dialog.alert({
+              message: res.msg,
+            });
+          }
+        })
+        .catch((err) => {
+          this.$dialog.alert({
+            message: err.msg,
+          });
+        });
+    },
+    previewsImg(url) {
+      ImagePreview([url]);
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.perfectStoreSign {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+  .content {
+    flex: 1;
+    overflow-y: auto;
+    padding: 10px 15px;
+    .contentBox {
+      width: 100%;
+      height: 100%;
+      background: #fff;
+      padding-top: 15px;
+    }
+    .specialTask {
+      display: flex;
+      flex-direction: row;
+      padding: 10px;
+      font-size: 16px;
+      justify-content: space-between;
+      background: #e5faff;
+      .specialTaskLeft {
+        display: flex;
+        flex-direction: row;
+        width: 100%;
+      }
+      .SignText {
+        width: 80px;
+        font-weight: 600;
+      }
+      .signContent {
+        flex: 1;
+        display: flex;
+        flex-direction: row;
+        margin: 0 8px;
+        .icon {
+          padding-top: 2px;
+          margin-right: 5px;
+        }
+      }
+    }
+    .shopSignButton {
+      width: 56px;
+      button {
+        width: 55px;
+        height: 28px;
+        padding: 0;
+        font-size: 12px;
+      }
+    }
+    .shopSignImg {
+      .text {
+        font-size: 16px;
+        font-weight: 600;
+        padding: 15px 10px;
+      }
+      .imgBox {
+        width: 100%;
+        text-align: center;
+        img {
+          width: 60%;
+        }
+      }
+    }
+  }
+}
+</style>
+<style lang="scss">
+.perfectStoreSign {
+  .van-button--danger {
+    background-color: #ee0a24 !important;
+    border: 1px solid #ee0a24 !important;
+  }
+}
+</style>