Jelajahi Sumber

Merge branch 'feature_20250917_调色机预警' into release

zhujindu 1 bulan lalu
induk
melakukan
c21cd528a9

+ 9 - 0
src/api/home.js

@@ -8,3 +8,12 @@ export function getStoreInfos(query) {
     params: query,
   });
 }
+// 提示类预警门店列表信息
+export function getColorMixerStoreInfos(query) {
+  return request({
+    url: '/mobile/storeStatistics/getColorMixerStoreInfos',
+    method: 'get',
+    params: query,
+  });
+}
+

+ 17 - 2
src/api/index.js

@@ -902,7 +902,6 @@ export function getReportMaterial(query) {
     params: query,
   });
 }
-
 // 提示类页签-查询下属业务员色卡指标接口
 export function getReportMaterialType(data, signal) {
   return request({
@@ -912,7 +911,23 @@ export function getReportMaterialType(data, signal) {
     signal: signal,
   });
 }
-
+// 提示类页签-调色预警查询接口
+export function getColorWarning(query) {
+  return request({
+    url: '/mobile/storeStatistics/selectColorMixerStore',
+    method: 'get',
+    params: query,
+  });
+}
+// 提示类页签-查询调色机详情接口
+export function selectColorMixerStoreInfo(data, signal) {
+  return request({
+    url: '/mobile/storeStatistics/selectColorMixerStoreInfo',
+    method: 'post',
+    data: data,
+    signal: signal,
+  });
+}
 // 新建同城店铺提交审核
 export function submitApproval(query) {
   return request({

TEMPAT SAMPAH
src/assets/WiFi.png


+ 9 - 0
src/router/index.js

@@ -78,6 +78,15 @@ const router = new VueRouter({
             title: '提示类-业务员建店未完成页面',
           },
         },
+        {
+          path: '/warningStore',
+          name: 'warningStore',
+          meta: { title: '提示类-业务员预警门店页面' },
+          component: () => import('@/views/home/hintTabPage/warningStore.vue'),
+          meta: {
+            title: '提示类-业务员预警门店页面',
+          },
+        },
       ],
     },
     {

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

@@ -159,15 +159,22 @@
                     placement="bottom"
                     width="120"
                     trigger="click"
-                    content="调色机5天未联网">
+                    content="调色机7天未调色">
                     <div
-                      v-if="item.storeLabels.ccmOffline"
+                      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"
@@ -605,6 +612,7 @@ import times from '@/assets/Icon/times.png';
 import order60 from '@/assets/order60.png';
 import targetOne from '@/assets/targetOne.png';
 import Network from '@/assets/Network.png';
+import WiFi from '@/assets/WiFi.png';
 import ord from '@/assets/ord.png';
 import timeico from '@/assets/Icon/datatims.png';
 import location from '@/assets/location.png';
@@ -650,6 +658,7 @@ export default {
       mapShow: false,
       otherShow: false,
       Network: Network,
+      WiFi: WiFi,
       order60: order60,
       targetOne: targetOne,
       chainName: '',

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

@@ -314,15 +314,22 @@
                   placement="top"
                   width="120"
                   trigger="click"
-                  content="调色机5天未联网">
+                  content="调色机7天未调色">
                   <div
-                    v-if="info.storeLabels.ccmOffline"
+                    v-if="info.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="info.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="top"
@@ -706,6 +713,7 @@ import times from '@/assets/Icon/times.png';
 import order60 from '@/assets/order60.png';
 import targetOne from '@/assets/targetOne.png';
 import Network from '@/assets/Network.png';
+import WiFi from '@/assets/WiFi.png';
 import timeico from '@/assets/Icon/datatims.png';
 import paste from '@/assets/paste.png';
 import visitTimes from '@/assets/visitTimes.png';
@@ -773,6 +781,7 @@ export default {
       mapShow: false,
       otherShow: false,
       Network: Network,
+      WiFi: WiFi,
       order60: order60,
       ord: ord,
       targetOne: targetOne,

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

@@ -197,15 +197,22 @@
                       placement="bottom"
                       width="120"
                       trigger="click"
-                      content="调色机5天未联网">
+                      content="调色机7天未调色">
                       <div
-                        v-if="item.storeLabels.ccmOffline"
+                        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"
@@ -650,6 +657,7 @@ import times from '@/assets/Icon/times.png';
 import order60 from '@/assets/order60.png';
 import targetOne from '@/assets/targetOne.png';
 import Network from '@/assets/Network.png';
+import WiFi from '@/assets/WiFi.png';
 import ord from '@/assets/ord.png';
 import timeico from '@/assets/Icon/datatims.png';
 import location from '@/assets/location.png';
@@ -695,6 +703,7 @@ export default {
       call: call,
       otherShow: false,
       Network: Network,
+      WiFi: WiFi,
       order60: order60,
       targetOne: targetOne,
       chainName: '',

+ 18 - 0
src/views/deviceWithin/index.vue

@@ -175,6 +175,20 @@
                     <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"
@@ -427,6 +441,8 @@
 </template>
 
 <script>
+import Network from '@/assets/Network.png';
+import WiFi from '@/assets/WiFi.png';
 import tabBar from '@/components/tabBar';
 import times from '@/assets/Icon/times.png';
 import order60 from '@/assets/order60.png';
@@ -462,6 +478,8 @@ export default {
   components: { tabBar, filtrate },
   data() {
     return {
+    Network: Network,
+      WiFi: WiFi,
       xmgj: xmgj,
       bfxx: bfxx,
       yichang: yichang,

+ 111 - 2
src/views/home/hintTabPage/hintDetail.vue

@@ -23,6 +23,18 @@
           :title="key"
           :name="key"></van-tab>
       </van-tabs>
+      <van-tabs
+        class="myTab"
+        v-model="activaPantoneName"
+        color="#0057ba"
+        @change="tabChangePantone"
+        v-if="activeTabName == 'colorWarning'">
+        <van-tab
+          v-for="(val, key, index) in tabsItemPantone"
+          :key="index"
+          :title="key=='keKong'?'可控店':'金牌店'"
+          :name="key"></van-tab>
+      </van-tabs>
     </div>
     <div class="content">
       <el-table
@@ -77,6 +89,8 @@ import {
   selectPendingCasesInfo,
   getReportMaterialType,
   getReportMaterial,
+  selectColorMixerStoreInfo,
+  getColorWarning
 } from '@/api/index';
 import { mapState } from 'vuex';
 export default {
@@ -107,8 +121,8 @@ export default {
         //   name: 'pantone',
         // },
       ],
-      activePantoneTabName: '', //色卡tabName
-      tabsItemPantone: {}, //色卡tabItem
+      activePantoneTabName: '', //色卡/调色预警tabName
+      tabsItemPantone: {}, //色卡/调色预警tabItem
       toggleIndex: 0,
       firstLabel: '',
       firstProp: '',
@@ -244,6 +258,54 @@ export default {
           ],
         },
       ],
+      // 调色预警
+      colorWarning: [
+        {
+          label: '滚动7天未调色机',
+          childredColumn: [
+            {
+              label: '(家)',
+              prop: 'colorSeven',
+            },
+          ],
+        },
+        {
+          label: '当月未调色',
+          childredColumn: [
+            {
+              label: '(家)',
+              prop: 'colorMonth',
+            },
+          ],
+        },
+        {
+          label: '从未调色',
+          childredColumn: [
+            {
+              label: '(家)',
+              prop: 'colorStop',
+            },
+          ],
+        },
+        {
+          label: '布机但近两年DIS为0',
+          childredColumn: [
+            {
+              label: '(家)',
+              prop: 'colorDis',
+            },
+          ],
+        },
+        {
+          label: '合计',
+          childredColumn: [
+            {
+              label: '(家)',
+              prop: 'colorMixerSum',
+            },
+          ],
+        },
+      ],
       materialCode: null, //色卡物料来源
       maskShow: true,
       controller: null, //取消请求
@@ -295,6 +357,10 @@ export default {
           title: '建店',
           name: 'createStore',
         },
+        {
+          title: '调色预警',
+          name: 'colorWarning',
+        },
       ];
       // 业务员不显示色卡
       if (this.userInfo.empLevel != '3') {
@@ -330,6 +396,11 @@ export default {
         this.firstProp = 'warehouseName';
         let deptId = tree ? tree.deptId : null;
         this.getPantoneData(resolve, deptId);
+      }else if (this.fromType == 'colorWarning') {
+        // 调色预警
+        let deptId = tree ? tree.onlyId : null;
+        this.firstProp = 'onlyName';
+        this.getColorWarningData(resolve, deptId);
       }
     },
     tabChange(val) {
@@ -444,6 +515,44 @@ export default {
         }
       });
     },
+    // 调色机tab
+    getColorWarningData(resolve, deptId) {
+      if (JSON.stringify(this.tabsItemPantone) != '{}') {
+        this.getColorWarningFun(resolve, deptId);
+      } else {
+        getColorWarning().then((res) => {
+          this.tabsItemPantone = res.data;
+          delete this.tabsItemPantone.reminderContent;
+          this.$nextTick(() => {
+            this.getColorWarningFun(null, null);
+          });
+        });
+      }
+    },
+    // 调色机详情
+    getColorWarningFun(resolve, deptId) {
+      // deptId 第一次传 null 获取当前等级下的数据(不需要当前层级)
+      selectColorMixerStoreInfo({ deptId: deptId,storeType:this.activaPantoneName }, this.controller.signal).then((res) => {
+        this.maskShow = false;
+        if (res.code == 200) {
+          res.data.forEach((val) => {
+            // 是否还有子级
+            if (val.empLevel < 3) val.hasChildren = true;
+          });
+          // 是否是子级
+          if (resolve) {
+            resolve && resolve(res.data);
+          } else {
+            this.tableList = res.data;
+          }
+        } else {
+          this.Toast({
+            message: res.msg,
+            duration: 5000,
+          });
+        }
+      });
+    },
   },
 };
 </script>

+ 139 - 2
src/views/home/hintTabPage/index.vue

@@ -120,6 +120,67 @@
             </div>
           </div>
         </van-collapse-item>
+        <!-- 调色预警 -->
+        <van-collapse-item name="5">
+          <template #title>
+            <div class="itemHeader" @click.stop>
+              <span class="itemTitle">{{ colorWarning.title }}</span>
+              <el-popover
+                placement="right"
+                trigger="click"
+                popper-class="hintPopover"
+                v-if="colorWarning.tip">
+                <div
+                  class="popoverConten"
+                  v-for="(item, index) in colorWarning.tip"
+                  :key="index">
+                  {{ item }}
+                </div>
+                <div slot="reference" class="hintIconBox">
+                  <img class="hintIcon" :src="hintIcon" />
+                </div>
+              </el-popover>
+            </div>
+          </template>
+          <div class="pantoneContent">
+            <div v-for="(val, key, index) in colorWarning.contentData" :key="index">
+                <div :class="['title',key=='keKong'?'kekong':'jinpai']">{{ key=='keKong'?'可控店':'金牌店' }}</div>
+                <div class="pantoneItem">
+                  <div class="firstItem item">
+                    <div class="left">
+                      <div class="lebel">滚动7天未调色:</div>
+                      <div class="value valueIsClick" @click="colorWarningClick(val, key, val.mdwqsNum)">
+                        {{ Micrometer(val.colorSeven) }}家
+                      </div>
+                    </div>
+                    <div class="right">
+                      <div class="lebel">当月未调色:</div>
+                      <div class="value valueIsClick" @click="colorWarningClick(val, key, val.mdwqsNum)">
+                        {{ Micrometer(val.colorMonth) }}家
+                      </div>
+                    </div>
+                  </div>
+                  <div class="secondItem item">
+                    <div class="left">
+                      <div class="lebel">从未调色:</div>
+                      <div class="value valueIsClick" @click="colorWarningClick(val, key, val.mdwqsNum)">
+                        {{ Micrometer(val.colorStop) }}家
+                      </div>
+                    </div>
+                    <div class="right">
+                      <div class="lebel">布机但近两年DIS为0:</div>
+                      <div class="value valueIsClick" @click="colorWarningClick(val, key, val.mdwqsNum)">
+                        {{ Micrometer(val.colorDis) }}家
+                      </div>
+                    </div>
+                  </div>
+                </div>
+            </div>
+            <div class="mask" v-if="colorWarning.contentLosding">
+              <van-loading type="spinner" color="#1989fa" />
+            </div>
+          </div>
+        </van-collapse-item>
         <!-- 色卡 -->
         <van-collapse-item name="4">
           <template #title>
@@ -199,6 +260,7 @@
             </div>
           </div>
         </van-collapse-item>
+         
       </van-collapse>
     </div>
   </div>
@@ -209,6 +271,7 @@ import {
   selectBuildingStore,
   getReportTarget,
   getReportMaterial,
+  getColorWarning,
   buryingPoint,
 } from '@/api/index';
 import hintIcon from '@/assets/hintIcon.png';
@@ -438,6 +501,12 @@ export default {
         pantoneLosding: true,
         pantoneData: {},
       },
+      colorWarning: {
+        title: '调色预警',
+        tip: [],
+        contentLosding: true,
+        contentData: {},
+      },
       isLoading: false,
     };
   },
@@ -468,6 +537,8 @@ export default {
       this.getReportData();
       // 获取色卡数据
       this.getPantoneData();
+      // 获取调色预警数据
+      this.getColorWarning();
     },
     getVisitCollapseData() {
       this.visitCollapse.collapseLosding = true;
@@ -515,6 +586,17 @@ export default {
         });
       }
     },
+    getColorWarning() {
+       if (this.empLevel !== 4) {
+        this.colorWarning.contentLosding = true;
+        getColorWarning().then((res) => {
+          this.colorWarning.contentLosding = false;
+          this.colorWarning.tip = res.data.reminderContent;
+          this.colorWarning.contentData = res.data;
+          delete this.colorWarning.contentData.reminderContent;
+        });
+      }
+    },
     // 汇报下属详情-点击
     reportClick(type, value) {
       // 埋点
@@ -554,6 +636,27 @@ export default {
         });
       }
     },
+    // 调色预警查看详情
+    colorWarningClick(val, key, value) {
+      // 埋点
+      buryingPoint({
+        systemModel: '提示类',
+        buryingPointType: 7,
+        buryingPointValue: value,
+        buryingPointName: key,
+        buryingPointPosition: '调色预警',
+      });
+      // 业务员进入调色预警列表
+      if (this.empLevel == '3') {
+        this.$router.push({ path: '/warningStore', query: { storeId: val.storeId } });
+      } else {
+        // 销售部,大区,公司,总部
+        this.$router.push({
+          path: '/hintDetail',
+          query: { fromType: 'colorWarning', materialCode: val.materialCode, pantoneName: key }, // materialCode物料来源
+        });
+      }
+    },
   },
 };
 </script>
@@ -623,6 +726,7 @@ export default {
     .pantoneContent {
       padding-bottom: 10px;
       .title {
+        
         padding: 2px 5px;
         border-radius: 2px;
         background-color: #13b5b1;
@@ -630,17 +734,50 @@ export default {
         display: inline-block;
         color: #fff;
       }
+      .kekong{
+        color: #fff;
+        height: 21px;
+        margin-right: 6px;
+        /* width: 50px; */
+        text-align: center;
+        line-height: 21px;
+        border-radius: 2px;
+        margin: 4px 0;
+        width: -moz-max-content;
+        width: max-content;
+        padding: 0 3px;
+        background: rgb(235, 104, 119);
+      }
+      .jinpai{
+        color: #fff;
+        height: 21px;
+        margin-right: 6px;
+        /* width: 50px; */
+        text-align: center;
+        line-height: 21px;
+        border-radius: 2px;
+        margin: 4px 0;
+        width: -moz-max-content;
+        width: max-content;
+        padding: 0 3px;
+        background: rgb(241, 183, 137);
+      }
       .pantoneItem {
         .item {
           display: flex;
           justify-content: space-between;
           .left {
             display: flex;
+            flex: 1;
+            .valueIsClick {
+              text-decoration: underline;
+              color: #0057ba;
+            }
           }
           .right {
             display: flex;
-            width: 48%;
-            justify-content: left;
+            width: 180px;
+            // justify-content: center;
             .valueIsClick {
               text-decoration: underline;
               color: #0057ba;

+ 755 - 0
src/views/home/hintTabPage/warningStore.vue

@@ -0,0 +1,755 @@
+<template>
+  <div class="unCreateStore">
+    <div class="header">
+      <van-nav-bar class="navBar" title="调色机预警门店明细" left-arrow @click-left="onClickLeft" />
+    </div>
+    <div class="content">
+      <van-collapse v-model="activeName" accordion @change="collapseCange">
+        <van-collapse-item v-for="(val, key, ind) in list" :key="ind" :name="key">
+          <template #title>
+            <div class="title">{{ key | storeType }}</div>
+            <div class="num">{{ val.storeNum }}家</div>
+          </template>
+          <div class="itemContent">
+            <template v-if="val.storeList && val.storeList.length >= 1">
+              <div class="item" v-for="(item, index) in val.storeList" :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" />
+                      </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 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(';')" :key="tt">
+                              {{ 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.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.needVisitNum"
+                            style="text-align: center; background: #fff; color: red; padding: 5px 0">
+                            A级金牌店拜访标准: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">
+                      类型:{{ item.storeCategory }}&nbsp;
+                      <el-popover popper-class="zpover zpover6" placement="bottom-start" trigger="click">
+                        <div>
+                          <p>
+                            本店经营品项指导:
+                            <a @click="linkimg(item)" style="text-decoration: underline">点击查看</a>
+                          </p>
+                        </div>
+                        <van-icon name="question-o" size="18" slot="reference" />
+                      </el-popover>
+                    </div>
+                    <div class="info" v-if="item.telephone" @click="buryingPointFn(item)">
+                      联系电话:<a style="color: #0057ba; font-weight: bold; text-decoration: underline"
+                        :href="'tel:' + item.telephone">{{
+                        item.telephone }}<van-icon name="phone" /></a>
+                    </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"
+                            :key="index">
+                            <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>
+                  </div>
+                </van-cell>
+              </div>
+            </template>
+            <van-empty description="暂无数据" v-else />
+          </div>
+        </van-collapse-item>
+      </van-collapse>
+    </div>
+  </div>
+</template>
+<script>
+import { getColorMixerStoreInfos } from '@/api/home';
+import { mapState } from 'vuex';
+import store from '@/store';
+import { getMonthCommon } from '@/utils';
+import { buryingPoint, ProductItemImge } from '@/api/index';
+import order from '@/assets/order.png';
+import order60 from '@/assets/order60.png';
+import targetOne from '@/assets/targetOne.png';
+import ord from '@/assets/ord.png';
+import Network from '@/assets/Network.png';
+import WiFi from '@/assets/WiFi.png';
+import paste from '@/assets/paste.png';
+import axios from 'axios';
+export default {
+  name: 'unCreateStore',
+  computed: {
+    ...mapState({
+      activaCreateTypeStore: (state) => state.user.activaCreateTypeStore,
+    }),
+  },
+  data() {
+    return {
+      typeShow: true,
+      ord: ord,
+      order: order,
+      order60: order60,
+      Network: Network,
+      WiFi: WiFi,
+      targetOne: targetOne,
+      paste: paste,
+      activeName: 'keKong',
+      list: {},
+      TXPiont: {}, //腾讯定位数据
+      TXisBD: {}, // 腾讯定位数据转百度
+      activatStoreVal: {}, //当前点击门店数据
+      visitRoutePath: '', //拜访页面路径
+      clickIsFlage: true,
+      timeData: '',
+    };
+  },
+  filters: {
+    storeType(value) {
+      let type = '';
+      if (value == 'keKong') {
+        type = '可控店';
+      } else if (value == 'jinPai') {
+        type = '金牌店';
+      }
+      return type;
+    },
+  },
+  activated() {
+    this.timeData = getMonthCommon();
+    this.getList();
+    // this.activeName = this.activaCreateTypeStore || '';
+  },
+  methods: {
+    collapseCange(value) {
+      store.dispatch('activaCreateTypeStore', value);
+    },
+    getList() {
+      this.toastLoading(0, '加载中...', true);
+      getColorMixerStoreInfos()
+        .then((res) => {
+          this.toastLoading().clear();
+          this.list = res.data;
+          console.log(this.list);
+        })
+        .catch(() => {
+          this.toastLoading().clear();
+        });
+    },
+    storeDetailFn(id) {
+      this.$router.push({
+        path: '/storeDetail',
+        query: { id: id },
+      });
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    linkapp(val) {
+      var poind = this.gcj02BD(val.lat, val.lon);
+      let url = window.location.href;
+      let wx = this.wx;
+      let qiyeData;
+      const instance = axios.create();
+      instance.defaults.headers.common['userId'] = localStorage.getItem('loginName');
+      instance
+        .get(process.env.VUE_APP_BASE_API + 'mobile/wx/ticket', {
+          params: {
+            url: url,
+            agent: 1,
+          },
+        })
+        .then((response) => {
+          if (response.status == 200) {
+            qiyeData = response.data.data;
+            wx.agentConfig({
+              corpid: qiyeData.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
+              agentid: qiyeData.agentId, // 必填,企业微信的应用id (e.g. 1000247)
+              timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
+              nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
+              signature: qiyeData.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
+              jsApiList: ['launchMiniprogram'], //必填,传入需要使用的接口名称
+              success: function () {
+                wx.invoke(
+                  'launchMiniprogram',
+                  {
+                    appid: 'wx238bbb5f6d958414',
+                    path:
+                      'pages/relayStation/relayStation?latitude=' +
+                      poind.lat +
+                      '&longitude=' +
+                      poind.lon +
+                      '&name=' +
+                      val.addressLine,
+                  },
+                );
+              },
+              fail: function (res) {
+                if (res.errMsg.indexOf('function not exist') > -1) {
+                  alert('版本过低请升级');
+                }
+              },
+            });
+          }
+        });
+    },
+    buryingPointFn(val) {
+      buryingPoint({
+        systemModel: '调色机预警门店明细',
+        buryingPointType: 1,
+        buryingPointValue: val.telephone,
+        buryingPointName: '点击电话',
+        buryingPointPosition: val.storeName + '(' + val.storeCode + ')',
+      });
+    },
+    linkList(val) {
+      this.$router.push({
+        path: '/pItem',
+        query: {
+          id: val.storeId,
+          detilId: 'a',
+          storeCode: val.storeCode,
+          showOrderButton: val.showOrderButton,
+        },
+      });
+    },
+    linkimg(val) {
+      ProductItemImge({ storeId: val.storeId }).then((response) => {
+        if (response.code == 200) {
+          if (response.data != undefined) {
+            window.open(response.data);
+          } else {
+            this.$toast(response.msg);
+          }
+        } else {
+          this.$toast(response.msg);
+        }
+      });
+    },
+    setStroeNameStyle(item) {
+      // 家装或工装 approvalStatus:是否结案 0:未结案,1:已结案
+      if (
+        (item.sfaStoreType && (item.sfaStoreType.jz || item.sfaStoreType.gz)) ||
+        item.approvalStatus == null ||
+        item.approvalStatus == 0
+      ) {
+        return {};
+      } else {
+        return { color: '#0057ba', 'text-decoration': 'underline' };
+      }
+    },
+    // 跳转好帮手门店详情
+    goOtherSystem(item) {
+      // 家装或工装 approvalStatus:是否结案 0:未结案,1:已结案
+      if (
+        (item.sfaStoreType && (item.sfaStoreType.jz || item.sfaStoreType.gz)) ||
+        item.approvalStatus == null ||
+        item.approvalStatus == 0
+      ) {
+        return false;
+      }
+      if (item.storeCode) {
+        window.location.href =
+          process.env.VUE_APP_SSB_LINK + '/order/storeDetail/index?shopCode=' + item.storeCode;
+      } else {
+        this.$dialog.alert({
+          message: '缺少门店code',
+        });
+      }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+/* Base container styles */
+.unCreateStore {
+  height: 100%;
+  width: 100%;
+
+  .content {
+    padding: 8px 10px;
+  }
+}
+
+/* Store item styles */
+.item {
+  padding: 8px 10px;
+  margin: 10px 0;
+  background: #fff;
+
+  .van-cell {
+    padding: 0;
+
+    &__right-icon {
+      height: 144px;
+      line-height: 144px;
+      margin-right: 10px;
+    }
+  }
+}
+
+/* Card styles */
+.card {
+  box-sizing: border-box;
+
+  .title {
+    font-size: 16px;
+    font-weight: bold;
+    color: #333;
+    line-height: 30px;
+  }
+
+  .info {
+    font-size: 14px;
+    color: #909090;
+    line-height: 26px;
+  }
+}
+
+/* Icon styles */
+.visitStoreIco {
+  float: left;
+  width: 26px;
+  text-align: center;
+  background-color: #ffba13;
+  color: #fff;
+  border-radius: 100%;
+  margin-left: 14px;
+  line-height: 26px;
+  height: 26px;
+}
+
+/* Button styles */
+.centerBtn {
+  display: block;
+  color: #0057ba;
+  border-radius: 5px;
+  padding: 0 6px;
+  height: 28px;
+
+  &.ctns {
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 80px;
+  }
+}
+
+/* Status styles */
+.statusIcon {
+  padding: 3px;
+  font-size: 12px;
+  margin: 0 3px;
+  color: #fff;
+  display: inline-block;
+  height: 20px;
+  line-height: 16px;
+  vertical-align: -1px;
+
+  &.submit {
+    background: #ffba13;
+  }
+
+  &.noSubmit {
+    background: #f11818;
+  }
+}
+
+/* List item styles */
+.TCFXListItem {
+  display: inline-block;
+  border: 1px solid #ccc;
+  padding: 3px 5px;
+  margin: 0 5px;
+  border-radius: 6px;
+}
+
+/* Collapse styles */
+.van-collapse-item {
+  border-bottom: 1px solid #dcdcdc;
+}
+</style>
+<style lang="scss">
+.unCreateStore {
+  .van-cell__title {
+    font-size: 16px;
+    font-weight: bold;
+    color: #333;
+    display: flex;
+    justify-content: space-between;
+
+    .num {
+      color: #909090;
+      margin-right: 5px;
+    }
+  }
+
+  .van-collapse-item__wrapper {
+    border-top: 1px solid #dcdcdc;
+  }
+
+  .van-collapse-item__title--expanded {
+    position: sticky;
+    top: 0px;
+    z-index: 10;
+  }
+
+  .van-collapse-item__content {
+    background-color: unset;
+    padding: 0;
+  }
+}
+</style>
+<style lang="scss">
+.van-dialog__confirm,
+.van-dialog__confirm:active {
+  color: #0057ba;
+}
+
+.searchDiv {
+  .van-search {
+    background: #fff;
+  }
+
+  .van-search__action {
+    font-size: 14px;
+    color: #0057ba;
+    font-weight: bold;
+    background: #f1f1f1;
+    border-bottom-right-radius: 60px;
+    border-top-right-radius: 60px;
+    border: 1px solid #c1c1c1;
+    padding: 0 20px;
+  }
+
+  .van-search--show-action {
+    padding-right: 12px;
+  }
+
+  .van-search__content {
+    border: 1px solid #c1c1c1;
+    border-bottom-left-radius: 60px;
+    border-top-left-radius: 60px;
+    background: #f1f1f1;
+    border-right: 0;
+  }
+}
+</style>
+<style lang="scss" scoped>
+.bgcolor {
+  background-color: #f5f5f5;
+}
+
+.container {
+  padding-bottom: 50px;
+}
+
+.monthNow {
+  height: 48px;
+  line-height: 48px;
+  text-align: center;
+  font-weight: bold;
+  padding: 0 15px;
+  box-sizing: border-box;
+  background-color: #f5f5f5;
+  font-size: 16px;
+
+  .CalendarIcon {
+    font-size: 24px;
+    color: #0057ba;
+    position: relative;
+    top: 6px;
+    margin-left: 10px;
+  }
+}
+
+.card {
+  padding: 10px 16px;
+  box-sizing: border-box;
+
+  .title {
+    font-size: 15px;
+    font-weight: bold;
+    color: #333;
+    line-height: 22px;
+    padding-right: 52px;
+
+    /*word-break: break-all;*/
+    .JPABC {
+      width: 20px;
+      position: relative;
+      top: 4px;
+      margin-right: 3px;
+    }
+
+    .statusIcon {
+      padding: 3px;
+      font-size: 12px;
+      margin: 0 3px;
+      color: #fff;
+      display: inline-block;
+      height: 20px;
+      line-height: 16px;
+      vertical-align: -1px;
+    }
+
+    .submit {
+      background: #ffba13;
+    }
+
+    .noSubmit {
+      background: #f11818;
+    }
+  }
+
+  .info {
+    font-size: 14px;
+    color: #909090;
+    line-height: 26px;
+  }
+}
+
+.navBarTOP {
+  position: fixed;
+  width: 100%;
+  z-index: 2;
+  top: 0;
+}
+
+.cellcontent .centerBtn {
+  margin: 0 auto 10px;
+  display: block;
+  width: 92%;
+  border-radius: 5px;
+  color: #0057ba;
+  border: 1px solid #0057ba;
+}
+
+.cellcontent .centerBtn1 {
+  background-color: #0057ba;
+  color: #fff;
+}
+
+.btnbox {
+  padding-top: 14px;
+  border-top: 1px solid #eee;
+  margin: 0 10px;
+}
+
+.cellcontent .centerBtn2 {
+  margin: 0 auto 10px;
+  display: block;
+  width: 92%;
+  color: #0057ba;
+  border-radius: 5px;
+  padding: 0;
+}
+
+.statstext {
+  background-color: #0057ba;
+  position: absolute;
+  right: 0;
+  top: 6px;
+  padding: 2px 6px 2px 12px;
+  border-bottom-left-radius: 60px;
+  border-top-left-radius: 60px;
+  color: #fff;
+}
+
+.lineGrey {
+  height: 10px;
+  width: 100%;
+  background: #f1f1f1;
+}
+
+.cellcontent .van-cell {
+  padding: 10px 0;
+}
+
+.statstext .van-icon__image {
+  height: 0.7em;
+}
+
+.visitStoreIco {
+  float: left;
+  float: left;
+  width: 26px;
+  text-align: center;
+  background-color: #ffba13;
+  color: #fff;
+  border-radius: 100%;
+  margin-left: 14px;
+  line-height: 26px;
+  height: 26px;
+}
+</style>