Procházet zdrojové kódy

提示类建店指标跳转页

zhujindu před 10 měsíci
rodič
revize
db6d8341ff
2 změnil soubory, kde provedl 320 přidání a 328 odebrání
  1. 4 0
      src/router/index.js
  2. 316 328
      src/views/home/hintTabPage/unCreateStore.vue

+ 4 - 0
src/router/index.js

@@ -74,6 +74,10 @@ const router = new VueRouter({
           name: 'unCreateStore',
           meta: { title: '提示类-业务员建店未完成页面' },
           component: () => import('@/views/home/hintTabPage/unCreateStore.vue'),
+          meta: {
+            keepAlive: false,
+            title: '提示类-业务员建店未完成页面',
+          },
         },
       ],
     },

+ 316 - 328
src/views/home/hintTabPage/unCreateStore.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="noVisit">
     <div class="header">
-      <van-nav-bar class="navBar" title="未拜访门店" left-arrow @click-left="onClickLeft" />
+      <van-nav-bar class="navBar" title="店" left-arrow @click-left="onClickLeft" />
     </div>
     <div class="content">
       <van-collapse v-model="activeName" accordion @change="collapseCange">
@@ -13,34 +13,249 @@
           <div class="itemContent">
             <template v-if="val.storeList && val.storeList.length">
               <div class="item" v-for="(item, index) in val.storeList" :key="index">
-                <div class="itemLeft">
-                  <div class="storeName">{{ item.storeName }}</div>
-                  <div class="address">
-                    <van-icon name="location-o" />
-                    {{ item.addressLine }}
-                    <!-- <img v-if="item.distance" style="width: 36px" :src="sbpmdh" @click="linkapp(item)" /> -->
+                <van-cell>
+                  <div class="card">
+                    <div></div>
+                    <div class="title" style="padding-right: 74px">
+                      <span class="btn" :data-clipboard-text="item.storeCode">
+                        <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>
+                      <!-- 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>
+                    </div>
+                    <van-button
+                      type="info"
+                      size="small"
+                      plain
+                      class="centerBtn ctns"
+                      @click="storeDetailFn(item.storeId)"
+                      >客户信息<van-icon name="arrow"
+                    /></van-button>
+                    <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>
+                            <p>
+                              本店{{ timeData }}下单SKU数:<a
+                                @click="linkList(item)"
+                                style="text-decoration: underline"
+                                >点击查看详情</a
+                              >
+                            </p>
+                          </div>
+                          <div
+                            class="visitStoreIco"
+                            v-if="item.storeLabels.zysslNums"
+                            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(';')">
+                              {{ 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="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
+                            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"
+                          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"
+                          trigger="click"
+                          :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" />
+                          </div>
+                          <el-table :data="item.userVisitTimesMap" border max-height="180px">
+                            <el-table-column label="业务员" prop="userName" />
+                            <el-table-column label="拜访次数" prop="visitTimes" />
+                          </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>
+                    <div class="info">联系电话:{{ item.telephone }}</div>
+                    <div class="info">地址:{{ item.addressLine }}</div>
+                    <!-- 分销店 -->
+                    <template
+                      v-if="
+                        item.sfaStoreType &&
+                        item.sfaStoreType.type == 'fxd' &&
+                        item.sfaStoreChainsContactList
+                      ">
+                      <div class="info">
+                        经销商:
+                        <div
+                          class="TCFXListItem"
+                          v-for="(item, index) in item.sfaStoreChainsContactList">
+                          <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">经销商:{{ item.chainName }}</div>
+                    </template>
                   </div>
-                  <div class="distance" v-if="item.distance">
-                    (距离{{ Micrometer(item.distance) }}m)
-                  </div>
-                </div>
-                <div class="itemRight">
-                  <div
-                    class="statstext"
-                    :style="{
-                      'background-color': item.stateString == '未拜访' ? '#ed5c68' : 'white',
-                    }">
-                    <van-icon
-                      v-if="item.stateString == '拜访中'"
-                      :name="times"
-                      color="#ee0a24"
-                      size="32" />
-                    {{ item.stateString == '未拜访' ? '未拜访' : '' }}
-                  </div>
-                  <div class="toVisit" @click="storeVisit(item)">
-                    进入拜访 <van-icon name="arrow" />
-                  </div>
-                </div>
+                </van-cell>
               </div>
             </template>
             <template v-else><div style="text-align: center">暂无数据</div></template>
@@ -51,20 +266,12 @@
   </div>
 </template>
 <script>
-import {
-  selectUserStoreNoVisits,
-  mobileReposition,
-  checkVisit,
-  addVisitsPosition,
-} from '@/api/index';
-import { checkStoreAddressByStoreCode } from '@/api/visitstore';
+import { selectUserStoreNoVisits } from '@/api/index';
 import { getPosition, getTicketFun } from '@/utils/TXApiFun';
-import sbpmdh from '@/assets/sbpmdh.png';
-import times from '@/assets/Icon/times.png';
 import { mapState } from 'vuex';
 import store from '@/store';
 export default {
-  name: 'noVisit',
+  name: 'unCreateStore',
   computed: {
     ...mapState({
       activaTypeStore: (state) => state.user.activaTypeStore,
@@ -72,8 +279,6 @@ export default {
   },
   data() {
     return {
-      sbpmdh: sbpmdh,
-      times: times,
       activeName: '',
       list: {},
       TXPiont: {}, //腾讯定位数据
@@ -98,7 +303,8 @@ export default {
       return type;
     },
   },
-  activated() {
+  created() {
+    debugger;
     // 授权
     getTicketFun().then(() => {
       // 获取定位
@@ -128,247 +334,12 @@ export default {
         console.log(this.list);
       });
     },
-    tabChange(val) {},
-    // 进入拜访
-    storeVisit(val) {
-      if (!this.clickIsFlage) return;
-      this.clickIsFlage = false;
-      this.toastLoading(0, '加载中...', true);
-      // 删除拜访id
-      localStorage.removeItem('visitId');
-      checkVisit({ storeId: val.storeId }).then((res) => {
-        if (res.code == 200) {
-          this.activatStoreVal = val;
-          // 拜访页面分为 计划外、计划内; 0计划内 1计划外
-          this.visitRoutePath =
-            this.activatStoreVal.visitEntry == '1'
-              ? '/suishenbangOutstoreVisit'
-              : '/storeVisitpage';
-          if (val.stateString.indexOf('拜访中') != -1) {
-            this.clickIsFlage = true;
-            localStorage.setItem('startTime', new Date());
-            localStorage.setItem('ORGName', this.activatStoreVal.deptName);
-            localStorage.setItem('chainNameR', this.activatStoreVal.storeName);
-            this.$router.push({
-              path: this.visitRoutePath,
-              query: {
-                storeId: this.activatStoreVal.storeId,
-                rdId: this.activatStoreVal.rdId,
-                lat: this.activatStoreVal.lat,
-                lon: this.activatStoreVal.lon,
-                visitId: this.activatStoreVal.visitId,
-                pageType: 'out',
-                addressLine: this.activatStoreVal.addressLine,
-                storeCategory: this.activatStoreVal.storeCategoryName,
-                storeName: this.activatStoreVal.storeName,
-                hisTime: this.activatStoreVal.hisTime,
-                contactName: this.activatStoreVal.contactName,
-                storeCode: this.activatStoreVal.storeCode,
-                tabVal: this.tabVal,
-                visitModel: '1',
-                latNew: this.activatStoreVal.lat,
-                lonNew: this.activatStoreVal.lon,
-                PointSum: 0,
-                marklat: this.activatStoreVal.lat,
-                marklon: this.activatStoreVal.lon,
-                from: 'outPlan',
-              },
-            });
-          } else {
-            // 拜访时重新获取定位
-            getPosition()
-              .then((res) => {
-                let { TXisBD, resData } = res;
-                this.TXisBD = TXisBD;
-                this.TXPiont = resData;
-                localStorage.setItem('lat', TXisBD.lat);
-                localStorage.setItem('lon', TXisBD.lon);
-                this.checkStoreAddressByStoreCodeFun();
-              })
-              .catch((error) => {
-                this.clickIsFlage = true;
-                this.$dialog.alert({
-                  message: error,
-                });
-              });
-          }
-        } else {
-          this.toastLoading().clear();
-          this.clickIsFlage = true;
-          this.$dialog.alert({
-            message: res.msg,
-          });
-        }
-      });
-    },
-    checkStoreAddressByStoreCodeFun() {
-      this.toastLoading(0, '加载中...', true);
-      let PointSumval = this.twoPointSum(
-        this.TXisBD.lat,
-        this.TXisBD.lon,
-        this.TXisBD.lat,
-        this.TXisBD.lon
-      ).toFixed(2);
-      // GZ:工装店铺 直接进入拜访
-      if (localStorage.getItem('postType') == 'GZ') {
-        localStorage.setItem('startTime', new Date());
-        localStorage.setItem('ORGName', this.activatStoreVal.deptName);
-        localStorage.setItem('chainNameR', this.activatStoreVal.storeName);
-        this.toSuishenbangOutstoreVisit(PointSumval);
-        return;
-      }
-      checkStoreAddressByStoreCode({
-        storeCode: this.activatStoreVal.storeCode,
-        lon: this.TXisBD.lon,
-        lat: this.TXisBD.lat,
-      })
-        .then((response) => {
-          this.clickIsFlage = true;
-          // 门店校验 地址不通过
-          if (response.code != 200) {
-            this.toastLoading().clear();
-            // updateAddress : ,1:同城AB+金牌,去修改地址;2:非金牌店铺,非同城店铺偏差过大不允许拜访,可以重置定位;0非金牌店铺,非同城店铺 位置信息不存在 可以继续拜访
-            if (response.data) {
-              if (response.data.updateAddress == 0) {
-                // 非金牌店铺,非同城店铺 位置信息不存在 可以继续拜访
-                this.$dialog
-                  .confirm({
-                    confirmButtonText: '确定拜访',
-                    cancelButtonText: '取消拜访',
-                    title: '系统提示',
-                    message:
-                      '该客户没有经纬度,此次拜访会保存定位点作为客户经纬度,下次拜访时判断是否偏差过大。',
-                    closeOnClickOverlay: true,
-                  })
-                  .then(() => {
-                    this.toSuishenbangOutstoreVisit(PointSumval);
-                  });
-              } else if (response.data.updateAddress == 1) {
-                // 同城AB+金牌,去修改地址
-                // addressUpdateTimesOver: true=已经达到最大次数,不让修改; false=没有达到可以修改
-                if (!response.data.addressUpdateTimesOver) {
-                  this.$dialog
-                    .confirm({
-                      title: '系统提示',
-                      message: response.msg + '请立即修改后再拜访',
-                      messageAlign: 'left',
-                      confirmButtonText: '立即修改',
-                      cancelButtonText: '取消',
-                    })
-                    .then(() => {
-                      this.$router.push({
-                        path: '/storeDetail',
-                        query: {
-                          id: this.activatStoreVal.storeId,
-                          type: 'address',
-                          storeAddressId: this.activatStoreVal.storeAddressId,
-                        },
-                      });
-                    });
-                } else {
-                  this.$dialog.confirm({
-                    title: '系统提示',
-                    message: '已经达到最大修改次数',
-                    messageAlign: 'left',
-                    confirmButtonText: '确定',
-                  });
-                }
-              } else if (response.data.updateAddress == 2) {
-                // 1.非金牌店铺,非同城店铺 位置偏差过大 重置经纬度
-                this.resetCoord(PointSumval);
-                return;
-              }
-            } else {
-              this.$dialog.confirm({
-                title: '系统提示',
-                message: response.msg,
-                showCancelButton: false,
-                confirmButtonText: '确定',
-              });
-            }
-          } else {
-            // 门店编码校验门店地址通过 进入拜访
-            this.toSuishenbangOutstoreVisit(PointSumval);
-          }
-        })
-        .catch((error) => {
-          this.clickIsFlage = true;
-        });
-    },
-    // 进入拜访
-    toSuishenbangOutstoreVisit(PointSumval) {
-      addVisitsPosition({
-        storeId: this.activatStoreVal.storeId,
-        visitsId: '',
-        lon: this.TXPiont.longitude,
-        lat: this.TXPiont.latitude,
-        sourceLon: this.TXisBD.lon,
-        sourceLat: this.TXisBD.lat,
-        positionDesc: '',
-        accuracy: this.TXPiont.accuracy,
-      });
-      this.clickIsFlage = true;
-      this.toastLoading().clear();
+    storeDetailFn(id) {
       this.$router.push({
-        path: this.visitRoutePath,
-        query: {
-          storeId: this.activatStoreVal.storeId,
-          rdId: this.activatStoreVal.rdId,
-          lat: this.TXisBD.lat,
-          lon: this.TXisBD.lon,
-          visitId: this.activatStoreVal.visitId,
-          pageType: 'out',
-          addressLine: this.activatStoreVal.addressLine,
-          storeCategory: this.activatStoreVal.storeCategoryName,
-          storeName: this.activatStoreVal.storeName,
-          hisTime: this.activatStoreVal.hisTime,
-          contactName: this.activatStoreVal.contactName,
-          storeCode: this.activatStoreVal.storeCode,
-          tabVal: this.tabVal,
-          visitModel: '1',
-          latNew: this.TXisBD.lat,
-          lonNew: this.TXisBD.lon,
-          PointSum: PointSumval,
-          marklat: this.TXPiont.latitude,
-          marklon: this.TXPiont.longitude,
-          from: 'outPlan',
-        },
+        path: '/storeDetail',
+        query: { id: id },
       });
     },
-    // 重置经纬度
-    resetCoord(PointSumval) {
-      this.$dialog
-        .confirm({
-          confirmButtonText: '初始化定位',
-          cancelButtonText: '取消拜访',
-          title: '系统提示',
-          message: '偏差过大,不允许拜访。可修改本店定位.',
-          closeOnClickOverlay: true,
-        })
-        .then(() => {
-          mobileReposition({
-            storeId: this.activatStoreVal.storeId,
-            lat: this.TXisBD.lat,
-            lon: this.TXisBD.lon,
-          }).then((response) => {
-            if (response.code == 200) {
-              this.$dialog
-                .alert({
-                  title: '系统提示',
-                  message: '本信息定位已更新成功!',
-                })
-                .then(() => {
-                  this.toSuishenbangOutstoreVisit(PointSumval);
-                });
-              localStorage.setItem('startTime', new Date());
-              localStorage.setItem('ORGName', this.activatStoreVal.deptName);
-              localStorage.setItem('chainNameR', this.activatStoreVal.storeName);
-            } else {
-              this.$toast(response.msg);
-            }
-          });
-        });
-    },
     onClickLeft() {
       this.$router.go(-1);
     },
@@ -383,61 +354,74 @@ export default {
   .content {
     padding: 8px 10px;
     .item {
-      background: #deedff;
-      padding: 8px;
+      padding: 8px 10px;
       margin: 10px 0;
-      border-radius: 5px;
-      display: flex;
-      .storeName {
-        font-size: 15px;
-        font-weight: bold;
-        color: #333;
-        padding: 3px 0;
+      background: #fff;
+      .van-cell__right-icon {
+        height: 144px;
+        line-height: 144px;
+        margin-right: 10px;
       }
-      .address,
-      .distance {
-        font-size: 14px;
-        color: #909090;
-        padding: 3px 0;
+      .van-cell {
+        padding: 0;
       }
-      .distance {
-        padding-left: 12px;
-      }
-      .itemLeft {
-        flex: 1;
-      }
-      .itemRight {
-        width: 25%;
-        display: flex;
-        flex-direction: column;
-        justify-content: space-between;
-        align-items: end;
-        .statstext {
-          background-color: #0057ba;
-          padding: 2px 6px 2px 12px;
-          border-bottom-left-radius: 60px;
-          border-top-left-radius: 60px;
-          color: #fff;
-          width: 60px;
-          margin-right: -8px;
-          /* overflow: hidden; */
-          white-space: nowrap;
-          .van-icon__image {
-            height: 0.7em;
-          }
+      .card {
+        box-sizing: border-box;
+        .title {
+          font-size: 16px;
+          font-weight: bold;
+          color: #333;
+          line-height: 30px;
         }
-        .toVisit {
-          height: 40%;
-          font-size: 15px;
-          color: #1989fa;
-          width: 100%;
-          display: flex;
-          align-items: center;
-          justify-content: end;
-          /* overflow: hidden; */
-          white-space: nowrap;
+        .info {
+          font-size: 14px;
+          color: #909090;
+          line-height: 26px;
         }
       }
+      .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;
+      }
+      .centerBtn {
+        margin: 0 auto 10px;
+        display: block;
+        width: 92%;
+        color: #0057ba;
+        border-radius: 5px;
+        padding: 0 6px;
+        height: 28px;
+      }
+      .ctns {
+        position: absolute;
+        top: 12px;
+        right: 12px;
+        width: 74px;
+      }
+      .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;
+      }
     }
   }
   .van-collapse-item {
@@ -466,5 +450,9 @@ export default {
     top: 0px;
     z-index: 10;
   }
+  .van-collapse-item__content {
+    background-color: unset;
+    padding: 0;
+  }
 }
 </style>