Forráskód Böngészése

feature_20250917_调色机预警

sunny 2 hónapja
szülő
commit
79865fbbf4
1 módosított fájl, 372 hozzáadás és 178 törlés
  1. 372 178
      src/views/home/hintTabPage/warningStore.vue

+ 372 - 178
src/views/home/hintTabPage/warningStore.vue

@@ -15,238 +15,174 @@
               <div class="item" v-for="(item, index) in val" :key="index">
                 <van-cell>
                   <div class="card">
-                    <div></div>
-                    <div class="title" style="padding-right: 74px">
-                      <span class="btn" :data-clipboard-text="item.storeCode">
+                    <div class="title">
+                      <template v-if="item.storeLabels">
+                        <!-- 金牌店ABC -->
+                        <img class="JPABC" :src="require('@/assets/Icon/storeA.png')" v-if="item.storeLabels.storeA" />
+                        <img class="JPABC" :src="require('@/assets/Icon/storeB.png')" v-if="item.storeLabels.storeB" />
+                        <img class="JPABC" :src="require('@/assets/Icon/storeC.png')" v-if="item.storeLabels.storeC" />
+                        <img class="JPABC" :src="require('@/assets/Icon/storeD.png')" v-if="item.storeLabels.storeD" />
+                        <img class="JPABC" :src="require('@/assets/Icon/storeE.png')" v-if="item.storeLabels.storeE" />
+                      </template>
+                      <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
                         <span>{{ item.storeName }}</span>
-                        (<span style="color: #0057ba">{{ item.storeCode }}</span
-                        >)
-                        <van-icon
-                          :name="require('@/assets/paste.png')"
-                          color="#ee0a24"
-                          size="20"
-                          style="top: 6px; margin-left: 4px" />
+                        (<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>
-                      <!-- validFlag: 0正常门店,1无效门店,2临时门店 -->
-                      <span
-                        v-if="item.validFlag == 2"
-                        style="
-                          display: inline-block;
-                          border-radius: 100px;
-                          width: 20px;
-                          text-align: center;
-                          color: orange;
-                          font-weight: normal;
-                        "
-                        >临</span
-                      >
                       <!-- "approvalStatus": 1:已结案;0:未结案, -->
                       <!-- "processApprovalStatus": 审批状态(0=未提交,1=已提交待审核,2=审批通过,3=审批拒绝) -->
-                      <template v-if="item.approvalStatus == 0 && item.validFlag == 0">
-                        <span class="statusIcon submit" v-if="item.processApprovalStatus == 1"
-                          >已提交</span
-                        >
-                        <span class="statusIcon noSubmit" v-if="item.processApprovalStatus == 0"
-                          >未提交</span
-                        >
+                      <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>
-                      <van-button
-                        type="info"
-                        size="small"
-                        plain
-                        class="centerBtn ctns"
-                        @click="storeDetailFn(item.storeId)">
-                        客户信息
-                        <van-icon name="arrow" />
-                      </van-button>
+                    </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" style="position: relative">
                       联系人:{{ item.contactName }}
-                      <div
-                        style="position: absolute; bottom: 0px; right: 0px"
-                        v-if="item.storeLabels">
-                        <el-popover
-                          popper-class="zpover zpover6"
-                          placement="bottom"
-                          trigger="click">
+                      <div style="position: absolute; bottom: 0; right: 14px">
+                        <el-popover popper-class="zpover" placement="bottom" width="120" trigger="click"
+                          content="该客户为凤凰客户">
+                          <div v-if="item.storeLabels.fhCustomer" class="visitStoreIco" style="background-color: #fff"
+                            slot="reference">
+                            <van-icon :name="require('@/assets/Icon/fenghuangjihua.png')" size="26" />
+                          </div>
+                        </el-popover>
+                        <el-popover popper-class="zpover zpover6" placement="bottom-start" trigger="click">
                           <div>
                             <p>
-                              本店{{ timeData }}下单SKU数:<a
-                                @click="linkList(item)"
-                                style="text-decoration: underline"
-                                >点击查看详情</a
-                              >
+                              本店{{ timeData1 }}下单SKU数:<a @click="linkList(item)"
+                                style="text-decoration: underline">点击查看详情</a>
                             </p>
                           </div>
-                          <div
-                            class="visitStoreIco"
-                            v-if="item.storeLabels.zysslNums !== false"
-                            style="background-color: #fff; position: relative"
-                            slot="reference">
-                            <p
-                              style="
-                                width: 100%;
-                                position: absolute;
-                                z-index: 1;
-                                top: 0.2px;
-                                width: 22px;
-                                margin: 0;
-                                margin-left: 3.6px;
-                                text-align: center;
-                                font-size: 12px;
-                              ">
+                          <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="require('@/assets/ord.png')" size="26" />
+                            <van-icon :name="ord" size="26" />
                           </div>
                         </el-popover>
-                        <el-popover
-                          popper-class="zpover zpover5"
-                          placement="bottom"
-                          width="200"
-                          trigger="click">
+                        <el-popover popper-class="zpover" placement="bottom" width="200" trigger="click">
                           <div v-if="item.storeLabels">
                             <p>已参加:</p>
-                            <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
+                            <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"
+                          <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="200"
-                          trigger="click"
+                        <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"
+                          <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"
+                        <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"
+                          <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"
+                        <el-popover popper-class="zpover" placement="bottom" width="200" trigger="click"
                           content="本店本月进过专业时时丽">
-                          <div
-                            v-if="item.storeLabels.zyssl"
-                            class="visitStoreIco"
-                            style="background-color: #ed5c68"
+                          <div v-if="item.storeLabels.zyssl" class="visitStoreIco" style="background-color: #ed5c68"
                             slot="reference">
                           </div>
                         </el-popover>
-                        <el-popover
-                          popper-class="zpover zpover1"
-                          placement="bottom"
-                          width="200"
-                          trigger="click"
+                        <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"
+                          <div v-if="item.storeLabels.chtczj" class="visitStoreIco" style="background-color: #0057ba"
                             slot="reference">
                           </div>
                         </el-popover>
-                        <el-popover
-                          placement="bottom"
-                          popper-class="zpover zpover1 zpover1sb"
-                          trigger="click"
-                          :content="'本店本月已拜访过' + item.storeLabels.visitTimes + '次'">
-                          <div
-                            v-if="
-                              false &&
-                              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;
-                              ">
+                        <el-popover placement="bottom" popper-class="zpover zpover1 zpover1sb" trigger="click"
+                          :disabled="!item.userVisitTimesMap" :content="'本店本月已拜访过' + item.storeLabels.visitTimes + '次'">
+                          <div v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
+                            class="visitStoreIco" slot="reference" style="background-color: #fff; position: relative">
+                            <p style="
+                        width: 100%;
+                        position: absolute;
+                        z-index: 10;
+                        top: -2px;
+                        margin: 0;
+                        text-align: center;
+                        font-size: 12px;
+                      ">
                               {{ item.storeLabels.visitTimes }}
                             </p>
-                            <van-icon :name="ordernum" size="26" />
+                            <!-- A级金牌店拜访次数少于2 -->
+                            <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" />
+                            <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
                           </el-table>
                         </el-popover>
                       </div>
                     </div>
-                    <div class="info">
-                      类型:{{ item.storeCategoryName }}&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 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" v-if="item.addressLine">
+                      地址:{{ item.addressLine
+                      }}<img v-if="item.storeLonExist" style="width: 36px" :src="sbpmdh" @click="linkapp(item)" />
                     </div>
-                    <div class="info">联系电话:{{ item.telephone }}</div>
-                    <div class="info">地址:{{ item.addressLine }}</div>
                     <!-- 潜在店不显示经销商 -->
                     <template v-if="item.sfaStoreType.type != 'qzd'">
                       <!-- 分销店 -->
-                      <template
-                        v-if="
-                          item.sfaStoreType &&
-                          item.sfaStoreType.type == 'fxd' &&
-                          item.sfaStoreChainsContactList
-                        ">
-                        <div class="info">
+                      <template v-if="
+                        item.sfaStoreType &&
+                        item.sfaStoreType.type == 'fxd' &&
+                        item.sfaStoreChainsContactList
+                      ">
+                        <div class="info" v-if="typeShow">
                           经销商:
-                          <div
-                            class="TCFXListItem"
-                            v-for="(item, index) in item.sfaStoreChainsContactList">
-                            <el-popover
-                              popper-class="zpover zpoverStoreztype"
-                              placement="bottom-start"
-                              trigger="click">
+                          <div 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>
@@ -259,9 +195,14 @@
                         </div>
                       </template>
                       <template v-else>
-                        <div class="info">经销商:{{ item.chainName }}</div>
+                        <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>
@@ -278,7 +219,8 @@ import { getStoreInfos } from '@/api/home';
 import { mapState } from 'vuex';
 import store from '@/store';
 import { getMonthCommon } from '@/utils';
-import { ProductItemImge } from '@/api/index';
+import { buryingPoint, ProductItemImge } from '@/api/index';
+import axios from 'axios';
 export default {
   name: 'unCreateStore',
   computed: {
@@ -302,11 +244,11 @@ export default {
     storeType(value) {
       let type = '';
       if (value == 'keKongAbnormalNum') {
-        type = '可控店45天未结案列表';
+        type = '可控店';
       } else if (value == 'jinPaiUnfinishedNum') {
         type = '金牌店7天未完工列表';
       } else if (value == 'jinPaiAbnormalNum') {
-        type = '金牌店30天未结案列表';
+        type = '金牌店';
       } else if (value == 'TuLiaoAbnormalNum') {
         type = '同城分销-涂料店7天未结案列表';
       } else if (value == 'QiTaAbnormalNum') {
@@ -345,6 +287,63 @@ export default {
     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',
@@ -365,10 +364,41 @@ export default {
             this.$toast(response.msg);
           }
         } else {
-          this.$toast(res.msg);
+          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>
@@ -489,22 +519,186 @@ export default {
     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>
+