Bläddra i källkod

Merge branch 'release'

zhujindu 1 vecka sedan
förälder
incheckning
d49e1f9e46

+ 86 - 8
src/components/filtrate.vue

@@ -46,7 +46,18 @@
         </p>
         <van-checkbox-group v-model="storeLabelTypes" direction="horizontal">
           <div v-if="otherbqShow" style="width: 100%">
-            <div class="checkbox" v-for="(item, index) in StoreLabels" :key="index">
+            <div class="checkbox" v-for="(item, index) in storeLabelsRegular" :key="index">
+              <van-checkbox :name="item.dictValue">{{ item.dictLabel }}</van-checkbox>
+            </div>
+            <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
+          </div>
+        </van-checkbox-group>
+        <p class="searchchecktitle" @click="otherjpdShow = !otherjpdShow">
+          &nbsp;门店等级<van-icon name="arrow-down" style="float: right" />
+        </p>
+        <van-checkbox-group v-model="jpdStoreLevelTypes" direction="horizontal">
+          <div v-if="otherjpdShow" style="width: 100%">
+            <div class="checkbox" v-for="(item, index) in jpdStoreLevels" :key="'jpd' + index">
               <van-checkbox :name="item.dictValue">{{ item.dictLabel }}</van-checkbox>
             </div>
             <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
@@ -161,7 +172,20 @@ export default {
   watch: {
     showFilter: {
       handler(val) {
-        // this.CustomerName = '';
+        if (val) {
+          this.storeName = localStorage.getItem('outvstoreName') || '';
+          this.chainName = localStorage.getItem('outvchainName') || '';
+          this.chainCode = localStorage.getItem('outvchainCode') || '';
+          this.storeLabelTypes = (localStorage.getItem('outvstoreLabelTypes') || '')
+            .split(',')
+            .filter(Boolean);
+          this.jpdStoreLevelTypes = (localStorage.getItem('outvjpdStoreLevelTypes') || '')
+            .split(',')
+            .filter(Boolean);
+          this.result = (localStorage.getItem('outvstoreCategoryList') || '')
+            .split(',')
+            .filter(Boolean);
+        }
       },
       deep: true,
       immediate: true,
@@ -179,6 +203,10 @@ export default {
       otherShow: false,
       otherbqShow: true,
       StoreLabels: [],
+      storeLabelsRegular: [],
+      jpdStoreLevels: [],
+      jpdStoreLevelTypes: [],
+      otherjpdShow: true,
       result: [],
       otherkkdShow: true,
       storeTypeLists: [],
@@ -197,7 +225,18 @@ export default {
       this.otherShow = false;
     }
   },
-  created() {},
+  created() {
+    this.storeName = localStorage.getItem('outvstoreName') || '';
+    this.chainName = localStorage.getItem('outvchainName') || '';
+    this.chainCode = localStorage.getItem('outvchainCode') || '';
+    this.storeLabelTypes = (localStorage.getItem('outvstoreLabelTypes') || '')
+      .split(',')
+      .filter(Boolean);
+    this.jpdStoreLevelTypes = (localStorage.getItem('outvjpdStoreLevelTypes') || '')
+      .split(',')
+      .filter(Boolean);
+    this.result = (localStorage.getItem('outvstoreCategoryList') || '').split(',').filter(Boolean);
+  },
   mounted() {
     this.getStoreLabels();
     this.getStoreTypeList();
@@ -207,9 +246,10 @@ export default {
       // flag 是否筛选列表
       let params = {};
       if (flag) {
+        var storeLabelTypes = this.storeLabelTypes.concat(this.jpdStoreLevelTypes);
         params = {
           chainCode: this.chainCode ? this.chainCode : '',
-          storeLabelTypes: this.storeLabelTypes.join(','),
+          storeLabelTypes: storeLabelTypes.join(','),
           storeCategoryList: this.storeCategoryList,
         };
       }
@@ -219,8 +259,17 @@ export default {
       e._isScroller = true;
     },
     onsets() {
+      localStorage.setItem('outvstoreName', '');
+      localStorage.setItem('outvchainName', '');
+      localStorage.removeItem('outvstoreLabelTypes');
+      localStorage.removeItem('outvjpdStoreLevelTypes');
+      localStorage.removeItem('outvstoreCategoryList');
+      localStorage.setItem('outvchainCode', '');
+      localStorage.setItem('lat', '');
+      localStorage.setItem('lon', '');
       this.result = [];
       this.storeLabelTypes = [];
+      this.jpdStoreLevelTypes = [];
       this.storeCategoryList = this.result.join(',');
       this.chainName = '';
       this.chainCode = '';
@@ -244,9 +293,17 @@ export default {
     onSearchm() {
       var StoreLabelsArr = [];
       for (var k = 0; k < this.storeLabelTypes.length; k++) {
-        for (var k1 = 0; k1 < this.StoreLabels.length; k1++) {
-          if (this.StoreLabels[k1].dictValue == this.storeLabelTypes[k]) {
-            StoreLabelsArr.push(this.StoreLabels[k1].dictLabel);
+        for (var k1 = 0; k1 < this.storeLabelsRegular.length; k1++) {
+          if (this.storeLabelsRegular[k1].dictValue == this.storeLabelTypes[k]) {
+            StoreLabelsArr.push(this.storeLabelsRegular[k1].dictLabel);
+          }
+        }
+      }
+      var jpdStoreLabelsArr = [];
+      for (var k = 0; k < this.jpdStoreLevelTypes.length; k++) {
+        for (var k1 = 0; k1 < this.jpdStoreLevels.length; k1++) {
+          if (this.jpdStoreLevels[k1].dictValue == this.jpdStoreLevelTypes[k]) {
+            jpdStoreLabelsArr.push(this.jpdStoreLevels[k1].dictLabel);
           }
         }
       }
@@ -258,6 +315,24 @@ export default {
           }
         }
       }
+      if (StoreLabelsArr.length > 0) {
+        buryingPoint({
+          systemModel: '计划内',
+          buryingPointType: 1,
+          buryingPointValue: StoreLabelsArr.join(','),
+          buryingPointName: '标签',
+          buryingPointPosition: '计划内',
+        });
+      }
+      if (jpdStoreLabelsArr.length > 0) {
+        buryingPoint({
+          systemModel: '计划内',
+          buryingPointType: 1,
+          buryingPointValue: jpdStoreLabelsArr.join(','),
+          buryingPointName: '金牌店等级',
+          buryingPointPosition: '计划内',
+        });
+      }
       if (this.chainName != '' && this.chainName != 'null') {
         buryingPoint({
           systemModel: '计划内',
@@ -270,6 +345,7 @@ export default {
       localStorage.setItem('outvstoreName', this.storeName);
       localStorage.setItem('outvchainName', this.chainName);
       localStorage.setItem('outvstoreLabelTypes', this.storeLabelTypes);
+      localStorage.setItem('outvjpdStoreLevelTypes', this.jpdStoreLevelTypes);
       localStorage.setItem('outvstoreCategoryList', this.result);
       localStorage.setItem('outvchainCode', this.chainCode);
       this.closePopup(true);
@@ -284,7 +360,9 @@ export default {
     },
     getStoreLabels() {
       getStoreLabels().then((res) => {
-        this.StoreLabels = res.data;
+        this.StoreLabels = res.data || [];
+        this.storeLabelsRegular = this.StoreLabels.filter((item) => item.ifJpdStoreLevel != '1');
+        this.jpdStoreLevels = this.StoreLabels.filter((item) => item.ifJpdStoreLevel == '1');
       });
     },
     getStoreTypeList() {

+ 105 - 14
src/views/deviceOutside/index.vue

@@ -152,9 +152,9 @@
                     width="200"
                     trigger="click">
                     <div v-if="item.storeLabels">
-                      <p>已参加:</p>
-                      <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
-                        {{ tt }}
+                      <p>{{ timeData }}未通过的陈列任务:</p>
+                      <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
+                        <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
                       </p>
                     </div>
                     <div
@@ -513,7 +513,18 @@
         </p>
         <van-checkbox-group v-model="storeLabelTypes" direction="horizontal">
           <div v-if="otherbqShow" style="width: 100%">
-            <div class="checkbox" v-for="(item, index) in StoreLabels" :key="index">
+            <div class="checkbox" v-for="(item, index) in storeLabelsRegular" :key="index">
+              <van-checkbox :name="item.dictValue">{{ item.dictLabel }}</van-checkbox>
+            </div>
+            <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
+          </div>
+        </van-checkbox-group>
+        <p class="searchchecktitle" @click="otherjpdShow = !otherjpdShow">
+          &nbsp;门店等级<van-icon name="arrow-down" style="float: right" />
+        </p>
+        <van-checkbox-group v-model="jpdStoreLevelTypes" direction="horizontal">
+          <div v-if="otherjpdShow" style="width: 100%">
+            <div class="checkbox" v-for="(item, index) in jpdStoreLevels" :key="'jpd' + index">
               <van-checkbox :name="item.dictValue">{{ item.dictLabel }}</van-checkbox>
             </div>
             <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
@@ -747,6 +758,10 @@ export default {
       storeCategoryList: '',
       result: [],
       StoreLabels: [],
+      storeLabelsRegular: [],
+      jpdStoreLevels: [],
+      jpdStoreLevelTypes: [],
+      otherjpdShow: true,
       CustomerName: '',
       lat: '',
       lon: '',
@@ -758,12 +773,26 @@ export default {
   },
   watch: {
     $route(to, from) {
+      if (from.path == '/deviceWithin/index') {
+        localStorage.setItem('outvstoreName', '');
+        localStorage.setItem('outvchainName', '');
+        localStorage.removeItem('outvstoreLabelTypes');
+        localStorage.removeItem('outvjpdStoreLevelTypes');
+        localStorage.removeItem('outvstoreCategoryList');
+        localStorage.setItem('outvchainCode', '');
+        localStorage.setItem('outvsortType', '');
+        localStorage.setItem('outsortParam', '');
+        localStorage.setItem('lat', '');
+        localStorage.setItem('lon', '');
+      }
       this.storeName = localStorage.getItem('outvstoreName');
       if (
         localStorage.getItem('outvchainName') &&
         localStorage.getItem('outvchainName') != 'null'
       ) {
         this.chainName = localStorage.getItem('outvchainName');
+      } else {
+        this.chainName = '';
       }
       if (localStorage.getItem('lat') != null) {
         this.lat = localStorage.getItem('lat');
@@ -772,12 +801,26 @@ export default {
         this.lat = '';
         this.lon = '';
       }
-      if (localStorage.getItem('outvstoreLabelTypes') != null) {
-        this.storeLabelTypes = localStorage.getItem('outvstoreLabelTypes').split(',');
+      const storedStoreLabels = localStorage.getItem('outvstoreLabelTypes');
+      if (storedStoreLabels != null && storedStoreLabels !== '') {
+        this.storeLabelTypes = storedStoreLabels
+          .split(',')
+          .map((it) => it.trim())
+          .filter((it) => it);
       } else {
         this.storeLabelTypes = [];
       }
 
+      const storedJpdStoreLevels = localStorage.getItem('outvjpdStoreLevelTypes');
+      if (storedJpdStoreLevels != null && storedJpdStoreLevels !== '') {
+        this.jpdStoreLevelTypes = storedJpdStoreLevels
+          .split(',')
+          .map((it) => it.trim())
+          .filter((it) => it);
+      } else {
+        this.jpdStoreLevelTypes = [];
+      }
+
       if (localStorage.getItem('outvstoreCategoryList') != null) {
         this.result = localStorage.getItem('outvstoreCategoryList').split(',');
         this.storeCategoryList = this.result.join(',');
@@ -832,11 +875,25 @@ export default {
     if (localStorage.getItem('outvchainName') && localStorage.getItem('outvchainName') != 'null') {
       this.chainName = localStorage.getItem('outvchainName');
     }
-    if (localStorage.getItem('outvstoreLabelTypes') != null) {
-      this.storeLabelTypes = localStorage.getItem('outvstoreLabelTypes').split(',');
+    const storedStoreLabels = localStorage.getItem('outvstoreLabelTypes');
+    if (storedStoreLabels != null && storedStoreLabels !== '') {
+      this.storeLabelTypes = storedStoreLabels
+        .split(',')
+        .map((it) => it.trim())
+        .filter((it) => it);
     } else {
       this.storeLabelTypes = [];
     }
+
+    const storedJpdStoreLevels = localStorage.getItem('outvjpdStoreLevelTypes');
+    if (storedJpdStoreLevels != null && storedJpdStoreLevels !== '') {
+      this.jpdStoreLevelTypes = storedJpdStoreLevels
+        .split(',')
+        .map((it) => it.trim())
+        .filter((it) => it);
+    } else {
+      this.jpdStoreLevelTypes = [];
+    }
     if (localStorage.getItem('outvstoreCategoryList') != null) {
       this.result = localStorage.getItem('outvstoreCategoryList').split(',');
       this.storeCategoryList = this.result.join(',');
@@ -1097,7 +1154,9 @@ export default {
     },
     getStoreLabels() {
       getStoreLabels().then((res) => {
-        this.StoreLabels = res.data;
+        this.StoreLabels = res.data || [];
+        this.storeLabelsRegular = this.StoreLabels.filter((item) => item.ifJpdStoreLevel != '1');
+        this.jpdStoreLevels = this.StoreLabels.filter((item) => item.ifJpdStoreLevel == '1');
       });
     },
     searchType(val) {
@@ -1130,6 +1189,7 @@ export default {
       this.noOrder = [];
       this.fxNoOrder = [];
       this.storeLabelTypes = [];
+      this.jpdStoreLevelTypes = [];
       this.storeCategoryList = this.result.join(',');
       this.chainName = '';
       this.chainCode = '';
@@ -1220,7 +1280,9 @@ export default {
         lat: that.lat,
         lon: that.lon,
         chainCode: this.chainCode ? this.chainCode : '',
-        storeLabelTypes: this.storeLabelTypes.join(','),
+        storeLabelTypes: [
+          ...new Set([...(this.storeLabelTypes || []), ...(this.jpdStoreLevelTypes || [])]),
+        ].join(','),
         pageNum: this.pageNum,
         storeCategoryList: this.storeCategoryList,
         pageSize: this.pageSize,
@@ -1299,7 +1361,9 @@ export default {
         lat: that.lat,
         lon: that.lon,
         chainCode: this.chainCode ? this.chainCode : '',
-        storeLabelTypes: this.storeLabelTypes.join(','),
+        storeLabelTypes: [
+          ...new Set([...(this.storeLabelTypes || []), ...(this.jpdStoreLevelTypes || [])]),
+        ].join(','),
         pageNum: this.pageNum,
         storeCategoryList: this.storeCategoryList,
         pageSize: this.pageSize,
@@ -2220,9 +2284,17 @@ export default {
       }
       var StoreLabelsArr = [];
       for (var k = 0; k < this.storeLabelTypes.length; k++) {
-        for (var k1 = 0; k1 < this.StoreLabels.length; k1++) {
-          if (this.StoreLabels[k1].dictValue == this.storeLabelTypes[k]) {
-            StoreLabelsArr.push(this.StoreLabels[k1].dictLabel);
+        for (var k1 = 0; k1 < this.storeLabelsRegular.length; k1++) {
+          if (this.storeLabelsRegular[k1].dictValue == this.storeLabelTypes[k]) {
+            StoreLabelsArr.push(this.storeLabelsRegular[k1].dictLabel);
+          }
+        }
+      }
+      var jpdStoreLabelsArr = [];
+      for (var k = 0; k < this.jpdStoreLevelTypes.length; k++) {
+        for (var k1 = 0; k1 < this.jpdStoreLevels.length; k1++) {
+          if (this.jpdStoreLevels[k1].dictValue == this.jpdStoreLevelTypes[k]) {
+            jpdStoreLabelsArr.push(this.jpdStoreLevels[k1].dictLabel);
           }
         }
       }
@@ -2244,6 +2316,15 @@ export default {
             buryingPointPosition: '我的筛选',
           });
         }
+        if (jpdStoreLabelsArr.length > 0) {
+          this.buryingPoint({
+            systemModel: '计划外',
+            buryingPointType: 1,
+            buryingPointValue: jpdStoreLabelsArr.join(','),
+            buryingPointName: '金牌店等级',
+            buryingPointPosition: '我的筛选',
+          });
+        }
         if (this.storeCategoryList.length > 0) {
           this.buryingPoint({
             systemModel: '计划外',
@@ -2281,6 +2362,15 @@ export default {
             buryingPointPosition: '销售部的门店筛选',
           });
         }
+        if (jpdStoreLabelsArr.length > 0) {
+          this.buryingPoint({
+            systemModel: '计划外',
+            buryingPointType: 1,
+            buryingPointValue: jpdStoreLabelsArr.join(','),
+            buryingPointName: '金牌店等级',
+            buryingPointPosition: '销售部的门店筛选',
+          });
+        }
         if (this.storeCategoryList != '') {
           this.buryingPoint({
             systemModel: '计划外',
@@ -2312,6 +2402,7 @@ export default {
       localStorage.setItem('outvstoreName', this.storeName);
       localStorage.setItem('outvchainName', this.chainName);
       localStorage.setItem('outvstoreLabelTypes', this.storeLabelTypes);
+      localStorage.setItem('outvjpdStoreLevelTypes', this.jpdStoreLevelTypes);
       localStorage.setItem('outvstoreCategoryList', this.result);
       localStorage.setItem('outvchainCode', this.chainCode == 'null' ? '' : this.chainCode);
       this.onSearch();

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

@@ -300,9 +300,9 @@
                   width="200"
                   trigger="click">
                   <div v-if="info.storeLabels">
-                    <p>已参加:</p>
-                    <p v-for="tt in (info.storeLabels.targetOne + '').split(';')">
-                      {{ tt }}
+                    <p>{{ timeData }}未通过的陈列任务:</p>
+                    <p v-for="(tt, ind) in (info.storeLabels.targetOne + '').split(';')">
+                      <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
                     </p>
                   </div>
                   <div

+ 24 - 14
src/views/deviceWithin/index.vue

@@ -172,9 +172,9 @@
                 </el-popover>
                 <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(';')">
-                      {{ tt }}
+                    <p>{{ timeData }}未通过的陈列任务:</p>
+                    <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
+                      <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
                     </p>
                   </div>
                   <div
@@ -485,7 +485,11 @@
         @cancel="show = false" />
     </van-popup>
     <!-- 筛选模块 -->
-    <filtrate v-show="showFilter" :showFilter="showFilter" @closePopup="closePopup"></filtrate>
+    <filtrate
+      v-show="showFilter"
+      :showFilter="showFilter"
+      @closePopup="closePopup"
+      ref="filtrate"></filtrate>
     <tab-bar tabBarActive="deviceWithin"></tab-bar>
   </div>
 </template>
@@ -599,6 +603,22 @@ export default {
       if (from.path == '/deviceWithin/index' && to.path == '/storeVisitpage') {
         localStorage.setItem('startTime', new Date());
       }
+      if (from.path == '/outsidelist/index') {
+        localStorage.setItem('outvstoreName', '');
+        localStorage.setItem('outvchainName', '');
+        localStorage.removeItem('outvstoreLabelTypes');
+        localStorage.removeItem('outvjpdStoreLevelTypes');
+        localStorage.removeItem('outvstoreCategoryList');
+        localStorage.setItem('outvchainCode', '');
+        localStorage.setItem('outvsortType', '');
+        localStorage.setItem('outsortParam', '');
+        localStorage.setItem('lat', '');
+        localStorage.setItem('lon', '');
+        this.filterParams = {};
+        if (this.$refs.filtrate) {
+          this.$refs.filtrate.onsets();
+        }
+      }
     },
   },
   activated() {
@@ -825,16 +845,6 @@ export default {
       });
     },
     getUserInPlanList() {
-      localStorage.setItem('outvstoreName', '');
-      localStorage.setItem('outvchainName', '');
-      localStorage.removeItem('outvstoreLabelTypes');
-      localStorage.removeItem('outvstoreCategoryList');
-      localStorage.setItem('outvchainCode', '');
-      localStorage.setItem('outvstoreName', '');
-      localStorage.setItem('outvsortType', '');
-      localStorage.setItem('outsortParam', '');
-      localStorage.setItem('lat', '');
-      localStorage.setItem('lon', '');
       this.list = [];
       var postType = localStorage.getItem('postType');
       this.customerVisits = localStorage.getItem('customerVisits');

+ 1 - 0
src/views/home/ABtarget.vue

@@ -741,6 +741,7 @@ export default {
       localStorage.setItem('outvstoreName', '');
       localStorage.setItem('outvchainName', '');
       localStorage.removeItem('outvstoreLabelTypes');
+      localStorage.removeItem('outvjpdStoreLevelTypes');
       localStorage.removeItem('outvstoreCategoryList');
       localStorage.setItem('outvchainCode', '');
       localStorage.setItem('outvstoreName', '');

+ 1 - 0
src/views/home/HomeTarget.vue

@@ -271,6 +271,7 @@ export default {
       localStorage.setItem('outvstoreName', '');
       localStorage.setItem('outvchainName', '');
       localStorage.removeItem('outvstoreLabelTypes');
+      localStorage.removeItem('outvjpdStoreLevelTypes');
       localStorage.removeItem('outvstoreCategoryList');
       localStorage.setItem('outvchainCode', '');
       localStorage.setItem('outvstoreName', '');

+ 3 - 3
src/views/home/hintTabPage/unCreateStore.vue

@@ -106,9 +106,9 @@
                           width="200"
                           trigger="click">
                           <div v-if="item.storeLabels">
-                            <p>已参加:</p>
-                            <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
-                              {{ tt }}
+                            <p>{{ timeData }}未通过的陈列任务:</p>
+                            <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
+                              <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
                             </p>
                           </div>
                           <div

+ 3 - 3
src/views/home/hintTabPage/warningStore.vue

@@ -127,9 +127,9 @@
                           width="200"
                           trigger="click">
                           <div v-if="item.storeLabels">
-                            <p>已参加:</p>
-                            <p v-for="tt in (item.storeLabels.targetOne + '').split(';')" :key="tt">
-                              {{ tt }}
+                            <p>{{ timeData }}未通过的陈列任务:</p>
+                            <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
+                              <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
                             </p>
                           </div>
                           <div

+ 4 - 2
src/views/storeManagement/index.vue

@@ -187,8 +187,10 @@
                     width="200"
                     trigger="click">
                     <div v-if="item.storeLabels">
-                      <p>已参加:</p>
-                      <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">{{ tt }}</p>
+                      <p>{{ timeData }}未通过的陈列任务:</p>
+                      <p v-for="(tt, ind) in (item.storeLabels.targetOne + '').split(';')">
+                        <template v-if="tt"> {{ ind + 1 }}、{{ tt }};</template>
+                      </p>
                     </div>
                     <div
                       class="visitStoreIco"