Kaynağa Gözat

计划外列表页面刷新优化

zhujindu 11 ay önce
ebeveyn
işleme
7de528bfe7

+ 5 - 1
src/layout/index.vue

@@ -1,8 +1,12 @@
 <template>
   <div class="container bgcolor">
-    <keep-alive>
+    <!-- <keep-alive>
       <router-view :key="$route.fullPath" />
+    </keep-alive> -->
+    <keep-alive>
+      <router-view v-if="$route.meta.keepAlive"></router-view>
     </keep-alive>
+    <router-view v-if="!$route.meta.keepAlive"></router-view>
   </div>
 </template>
 <script>

+ 18 - 0
src/mixin/scrollTop.js

@@ -0,0 +1,18 @@
+export const scrollTopMixins = {
+  mounted() {
+    window.addEventListener('scroll', () => {
+      const $content = document.querySelector('#content');
+      this.$route.meta.scrollTop = $content.scrollTop;
+      debugger;
+      console.log($content);
+    });
+  },
+  activated() {
+    const scrollTop = this.$route.meta.scrollTop;
+    const $content = document.querySelector('#content');
+    if (scrollTop && $content) {
+      $content.scrollTop = scrollTop;
+    }
+  },
+  deactivated() {},
+};

+ 227 - 7
src/router/index.js

@@ -30,44 +30,68 @@ const router = new VueRouter({
           path: '/home',
           name: 'home',
           component: () => import('@/views/home/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/reportingRate',
           name: 'reportingRate',
           component: () => import('@/views/home/reportingRate.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/err',
           name: 'err',
           component: () => import('@/views/home/err.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/login',
           name: 'login',
           component: () => import('@/views/home/login.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/logincs',
           name: 'logincs',
           component: () => import('@/views/home/logincs.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/noVisit',
           name: 'noVisit',
-          meta: { title: '未拜访门店' },
           component: () => import('@/views/home/hintTabPage/noVisit.vue'),
+          meta: {
+            keepAlive: true,
+            title: '未拜访门店',
+          },
         },
         {
           path: '/hintDetail',
           name: 'hintDetail',
-          meta: { title: '提示类-拜访(实时) ' },
           component: () => import('@/views/home/hintTabPage/hintDetail.vue'),
+          meta: {
+            keepAlive: true,
+            title: '提示类-拜访(实时) ',
+          },
         },
         {
           path: '/pantoneNoGet',
           name: 'pantoneNoGet',
-          meta: { title: '提示类-业务员未领取色卡门店 ' },
           component: () => import('@/views/home/hintTabPage/pantoneNoGet.vue'),
+          meta: {
+            keepAlive: true,
+            title: '提示类-业务员未领取色卡门店 ',
+          },
         },
       ],
     },
@@ -80,36 +104,57 @@ const router = new VueRouter({
           path: '/storemanagement/index',
           name: 'storeManagement',
           component: () => import('@/views/storeManagement/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeDetail',
           name: 'storeDetail',
           component: () => import('@/views/storeManagement/storeDetail.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeAdd',
           name: 'storeAdd',
           component: () => import('@/views/storeManagement/storeAdd.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeAddress',
           name: 'storeAddress',
           component: () => import('@/views/storeManagement/storeAddress.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/odersuccess',
           name: 'storeAdd',
           component: () => import('@/views/deviceOutside/oderSuccess.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeEdit',
           name: 'storeEdit',
           component: () => import('@/views/storeManagement/storeEdit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/success',
           name: 'success',
           component: () => import('@/views/storeManagement/success.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
       ],
     },
@@ -122,56 +167,90 @@ const router = new VueRouter({
           path: '/outsidelist/index',
           name: 'outsidelist',
           component: () => import('@/views/deviceOutside/index.vue'),
+          meta: {
+            keepAlive: true,
+            scrollTop: 0,
+          },
         },
         {
           path: '/ai',
           name: 'ai',
           component: () => import('@/views/intelligence/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/topStore',
           name: 'topStore',
           component: () => import('@/views/deviceOutside/topStore.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/pItem',
           name: 'pItem',
           component: () => import('@/views/deviceOutside/productItem.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/suishenbangOutstoreVisit',
           name: 'suishenbangOutstoreVisit',
           component: () => import('@/views/deviceOutside/suishenbangOutstoreVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/projectOut',
           name: 'projectOut',
           component: () => import('@/views/deviceOutside/projectOut.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/rangeStore',
           name: 'rangeStore',
           component: () => import('@/views/deviceOutside/rangeStore.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/outstoreVisit',
           name: 'outstoreVisit',
           component: () => import('@/views/deviceOutside/outstoreVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/taskList',
           name: 'taskList',
           component: () => import('@/views/deviceOutside/taskList.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeGroup',
           name: 'storeGroup',
           component: () => import('@/views/deviceOutside/storeGroup.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/outabnormalVisit',
           name: 'outabnormalVisit',
           component: () => import('@/views/deviceOutside/outabnormalVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
       ],
     },
@@ -184,22 +263,34 @@ const router = new VueRouter({
           path: '/historicalVisit/index',
           name: 'historicalVisit',
           component: () => import('@/views/historicalVisit/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/historAllVisit',
           name: 'historAllVisit',
           component: () => import('@/views/historicalVisit/historAllVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
 
         {
           path: '/historicalDetails',
           name: 'historicalDetails',
           component: () => import('@/views/historicalVisit/historicalDetails.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/historiStoreVisit',
           name: 'historiStoreVisit',
           component: () => import('@/views/historicalVisit/hisvistdeils.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
       ],
     },
@@ -212,58 +303,91 @@ const router = new VueRouter({
           path: '/deviceWithin/index',
           name: 'deviceWithin',
           component: () => import('@/views/deviceWithin/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/storeVisitpage',
           name: 'storeVisitpage',
           component: () => import('@/views/deviceWithin/storeVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/addStoreVisit',
           name: 'addStoreVisit',
           component: () => import('@/views/deviceWithin/addStoreVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
 
         {
           path: '/addStoreVisitd',
           name: 'addStoreVisitd',
           component: () => import('@/views/deviceWithin/addStoreVisitd.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/addStoreVisitP',
           name: 'addStoreVisitP',
           component: () => import('@/views/deviceWithin/addStoreVisitP.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/abnormalVisit',
           name: 'abnormalVisit',
           component: () => import('@/views/deviceWithin/abnormalVisit.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/sign',
           name: 'sign',
           component: () => import('@/views/sign/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/signApprovalList',
           name: 'signApproval',
           component: () => import('@/views/signApproval/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/signApproval',
           name: 'signApproval',
           component: () => import('@/views/signApproval/signApproval.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         // 同城店铺建店审批
         {
           path: '/newStoreApprovalList',
           name: 'newStoreApprovalList',
           component: () => import('@/views/signApproval/newStoreApprovalList.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/newStoreApprovalDetail',
           name: 'newStoreApprovalDetail',
           component: () => import('@/views/signApproval/newStoreApprovalDetail.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
       ],
     },
@@ -277,149 +401,236 @@ const router = new VueRouter({
           path: '/My/index',
           name: 'MyList',
           component: () => import('@/views/week/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/myInventory',
           name: 'myInventory',
           component: () => import('@/views/my/myInventory.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/material',
           name: 'material',
           component: () => import('@/views/my/material.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/subordinateHistoricalDaily',
           name: 'subordinateHistoricalDaily',
           component: () => import('@/views/week/dailyHistorical.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/subordinateHistoricalWeekly',
           name: 'subordinateHistoricalWeekly',
           component: () => import('@/views/week/weeklyHistorical.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/myHistoricalDaily',
           name: 'myHistoricalDaily',
           component: () => import('@/views/week/myHistoricalDaily.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/weeklyApproval',
           name: 'weeklyApproval',
           component: () => import('@/views/week/weeklyApproval.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/weeklyApprovalDetils',
           name: 'weeklyApprovalDetils',
           component: () => import('@/views/week/weeklyApprovalDetils.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/myComment',
           name: 'myComment',
           component: () => import('@/views/week/myComment.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/doubleWeeklyDetils',
           name: 'doubleWeeklyDetils',
           component: () => import('@/views/week/doubleWeeklyDetils.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/daily',
           name: 'daily',
           component: () => import('@/views/week/daily.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/dailyApprovalList',
           name: 'dailyApprovalList',
           component: () => import('@/views/week/dailyApprovalList.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/dailyApproval',
           name: 'dailyApproval',
           component: () => import('@/views/week/dailyApproval.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/dailyDetails',
           name: 'dailyDetails',
           component: () => import('@/views/week/dailyDetails.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/weeklyApproval',
           name: 'weeklyApproval',
           component: () => import('@/views/week/weeklyApproval.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/weekly',
           name: 'weekly',
           component: () => import('@/views/week/weekly.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/doubleWeekly',
           name: 'doubleWeekly',
           component: () => import('@/views/week/doubleWeekly.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/doubleWeeklyApproval',
           name: 'doubleWeeklyApproval',
           component: () => import('@/views/week/doubleWeeklyApproval.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/doubleWeeklyHistorical',
           name: 'doubleWeeklyHistorical',
           component: () => import('@/views/week/doubleWeeklyHistorical.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/dailyHistoricalDetails',
           name: 'dailyHistoricalDetails',
           component: () => import('@/views/week/dailyHistoricalDetails.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/doubleHistoricalWeeklyDetils',
           name: 'doubleHistoricalWeeklyDetils',
           component: () => import('@/views/week/doubleHistoricalWeeklyDetils.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/weeklyHistoricalDetils',
           name: 'weeklyHistoricalDetils',
           component: () => import('@/views/week/weeklyHistoricalDetils.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/VisitSummary',
           name: 'VisitSummary',
           component: () => import('@/views/week/VisitSummary.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/VisitSummaryMy',
           name: 'VisitSummaryMy',
           component: () => import('@/views/week/VisitSummaryMy.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/VisitSummaryAdd',
           name: 'VisitSummaryAdd',
           component: () => import('@/views/week/VisitSummaryAdd.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/VisitSummaryDetail',
           name: 'VisitSummaryDetail',
           component: () => import('@/views/week/VisitSummaryDetail.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/assignAwait',
           name: 'assignAwait',
-          meta: { title: '待分配客资' },
           component: () => import('@/views/week/assignAwait/index.vue'),
+          meta: {
+            keepAlive: true,
+            title: '待分配客资',
+          },
         },
         {
           path: '/assignPage',
           name: 'assignPage',
-          meta: { title: '分配客资' },
           component: () => import('@/views/week/assignAwait/assignPage.vue'),
+          meta: {
+            keepAlive: true,
+            title: '分配客资',
+          },
         },
         {
           path: '/JZfollowUp',
           name: 'JZfollowUp',
-          meta: { title: '客资跟进' },
           component: () => import('@/views/week/assignAwait/JZfollowUp.vue'),
+          meta: {
+            keepAlive: true,
+            title: '客资跟进',
+          },
         },
       ],
     },
@@ -432,17 +643,26 @@ const router = new VueRouter({
           path: '/clew',
           name: 'clew',
           component: () => import('@/views/clew/index.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/clewent',
           name: 'clewent',
           component: () => import('@/views/clew/clewent.vue'),
+          meta: {
+            keepAlive: true,
+          },
         },
         {
           path: '/complaintDetail',
           name: 'complaintDetail',
-          meta: { title: '渠道投诉' },
           component: () => import('@/views/clew/complaintDetail/index.vue'),
+          meta: {
+            keepAlive: true,
+            title: '渠道投诉',
+          },
         },
       ],
     },

+ 1 - 1
src/views/clew/complaintDetail/radioGroup.vue

@@ -12,7 +12,7 @@
         </div>
         <van-radio-group v-model="val.searchValue" @change="radioGroupChange">
           <template v-for="(item, index) in val.customerClueOptionList">
-            <van-radio :name="item.customerClueOptionId" :key="index" @click="radioClick">
+            <van-radio :name="item.customerClueOptionId" @click="radioClick" :key="index">
               {{ item.customerClueOption }}
             </van-radio>
             <radioGroup

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

@@ -25,7 +25,7 @@
       </van-tabs>
     </div>
     <!--        主体内容-->
-    <div class="container" style="margin-top: 144px">
+    <div class="container" id="content" style="margin-top: 144px">
       <van-list
         class="myList"
         v-model="loading"
@@ -513,9 +513,11 @@ import { checkStoreAddressByStoreCode } from '@/api/visitstore';
 import { getPosition, getMapPoi, getkeywordPoi, getTicketFun } from '@/utils/TXApiFun';
 import { mapState } from 'vuex';
 import store from '@/store';
+import { scrollTopMixins } from '@/mixin/scrollTop';
 export default {
   name: 'outsidelist',
   components: { tabBar, mapmarker },
+  mixins: [scrollTopMixins],
   computed: {
     ...mapState({
       deviceOutsidePage: (state) => state.isRefreshPage.deviceOutsidePage,

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1633 - 1464
src/views/deviceWithin/addStoreVisitd.vue


+ 0 - 1
src/views/storeManagement/storeEdit.vue

@@ -190,7 +190,6 @@
                 @input="numberFn"
                 type="number"
                 label="面积(m²)"
-                @
                 placeholder="面积">
                 <template #left-icon>
                   <span class="van-f-red"> </span>

+ 1 - 1
src/views/week/assignAwait/radioGroup.vue

@@ -4,7 +4,7 @@
       <template v-if="clueOptionList[0].answerType == 'dx'">
         <van-radio-group v-model="clueOptionList[0].searchValue" @change="radioGroupChange">
           <template v-for="(item, index) in clueOptionList[0].customerClueOptionList">
-            <van-radio :name="item.customerClueOptionId" :key="index" @click="radioClick">
+            <van-radio :name="item.customerClueOptionId" @click="radioClick" :key="index">
               {{ item.customerClueOption }}
             </van-radio>
             <radioGroup