Commit 5ce409fd by caoyanzhi

update: keep-alive

parent cab5d0e0
......@@ -6,11 +6,9 @@
<bread-menu v-if="activedMenu.length > 3" :menu-list="activedMenu.slice(2)"></bread-menu>
<div class="hb-layout-pager" id="hb-layout-pager-one" :style="{ height: activedMenu.length > 3 ? `calc(100% - 30px)` : '100%', 'padding-bottom': pagePaddingBottom }">
<!-- 页面内容 -->
<!-- <router-view v-if="activeBrand" :brandId="activeBrand" :activeGroupId="activeGroup" :tabType="activeTab" @showTab="showTab"></router-view> -->
<keep-alive>
<router-view :brand-id="enterpriseId" :key="$route.path" v-if="$route.meta.keepAlive"></router-view>
<keep-alive :exclude="keepAlive">
<router-view :key="$route.path" :brand-id="enterpriseId"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive" :key="$route.path" :brand-id="enterpriseId"></router-view>
</div>
</div>
</div>
......@@ -27,6 +25,33 @@ export default {
name: 'DmHbLayout',
components: { MainMenu, AsideMenu, BreadMenu },
provide: () => provideData,
beforeRouteUpdate(to, from, next) {
if (Array.isArray(to.meta.fromPath)) {
to.meta.fromPath.some(el => {
let menuUrlReg = el;
let pathConfigReg = /(:.*)(\/?)/;
const pathRegStr = '([\\d\\w]+[\\-]*[\\d\\w]*)';
while (pathConfigReg.test(menuUrlReg)) {
menuUrlReg = menuUrlReg.replace(pathConfigReg, `${pathRegStr}$2`);
}
pathConfigReg = /(\/\*)(\/?)/;
while (pathConfigReg.test(menuUrlReg)) {
menuUrlReg = menuUrlReg.replace(pathConfigReg, `${pathRegStr}$2`);
}
const reg = new RegExp(`^${menuUrlReg}$`);
if (reg.test(from.path)) {
this.keepAlive = [];
} else {
this.keepAlive = [to.meta.componentName];
}
return reg.test(from.path);
});
setTimeout(() => {
this.keepAlive = [];
}, 100);
}
next();
},
props: {
// 菜单树数据
menuList: {
......@@ -40,6 +65,7 @@ export default {
},
data() {
return {
keepAlive: [],
showAside: true,
pagePaddingBottom: null,
enterpriseId: '',
......
......@@ -79,30 +79,6 @@ router.beforeEach((to, from, next) => {
} else {
baseUrl = host;
}
const { fromPath = [],refresh } = from.meta || {};
if (Array.isArray(fromPath)) {
from.meta.keepAlive = fromPath.some(el => {
let menuUrlReg = el;
let pathConfigReg = /(:.*)(\/?)/;
const pathRegStr = '([\\d\\w]+[\\-]*[\\d\\w]*)';
while (pathConfigReg.test(menuUrlReg)) {
menuUrlReg = menuUrlReg.replace(pathConfigReg, `${pathRegStr}$2`);
}
pathConfigReg = /(\/\*)(\/?)/;
while (pathConfigReg.test(menuUrlReg)) {
menuUrlReg = menuUrlReg.replace(pathConfigReg, `${pathRegStr}$2`);
}
const reg = new RegExp(menuUrlReg);
return reg.test(to.path);
});
if(from.meta.keepAlive){
to.meta.refresh=false;
}else{
to.meta.refresh=refresh;
}
}
next();
});
......
......@@ -6,8 +6,10 @@ const attractFlowLinkRouter = [
name: '引流链接',
component: _import('salesleads/actCodeManage/attractFlowLink', 'index'),
meta: {
keepAlive: true,
fromPath: ['/attractFlowLinkAdd', '/attractFlowLinkEdit/:id', '/attractFlowLinkInfo/:id', '/attractFlowLinkInfos/:id']
// 页面组件的name属性
componentName: 'attractFlowLink',
// 从fromPath回到当前页面时,需要使用keep-alive
fromPath: ['/attractFlowLinkEdit/:id', '/attractFlowLinkInfo/:id', '/attractFlowLinkInfos/:id']
}
},
{
......@@ -52,8 +54,8 @@ const attractFlowLinkRouter = [
name: '落地页列表',
component: _import('salesleads/actCodeManage/attractFlowLink/landingPage', 'list'),
meta: {
keepAlive: true,
fromPath: ['/ladingPageAdd', '/ladingPageEdit/:id']
componentName: 'ladingPageList',
fromPath: ['/ladingPageEdit/:id']
}
},
{
......
......@@ -6,8 +6,8 @@ const staffActCodeRouter = [
name: '员工活码',
component: _import('salesleads/actCodeManage/staffActCode', 'index'),
meta: {
keepAlive: true,
fromPath: ['/actCodeAdd', '/actCodeEdit', '/actCodeBatch', '/actCodeDetail', '/actCodeDetails']
componentName: 'staffActCode',
fromPath: ['/actCodeEdit', '/actCodeBatch', '/actCodeDetail', '/actCodeDetails']
}
},
{
......@@ -25,36 +25,24 @@ const staffActCodeRouter = [
name: '活码详情-详情',
component: _import('salesleads/actCodeManage/staffActCode', 'actCodeDetail'),
meta: {
keepAlive: true,
componentName: 'actCodeDetail',
fromPath: ['/actCodeRecord']
}
},
{
path: '/actCodeAdd',
name: '新增活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode'),
meta: {
keepAlive: true,
fromPath: ['/salutatorySet']
}
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeEdit',
name: '编辑活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode'),
meta: {
keepAlive: true,
fromPath: ['/salutatorySet']
}
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeBatch',
name: '批量创建活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'batchAddCode'),
meta: {
keepAlive: true,
fromPath: ['/salutatorySet']
}
component: _import('salesleads/actCodeManage/staffActCode/views', 'batchAddCode')
}
];
export default staffActCodeRouter;
......@@ -102,8 +102,8 @@ export const constantRouterMap = [
name: '欢迎语',
component: _import('enterprise', 'salutatoryIndex'),
meta:{
keepAlive: true,
fromPath: ['/editSalutatorySet','/salutatorySet']
componentName: 'salutatoryIndex',
fromPath: ['/editSalutatorySet']
}
},
{
......@@ -148,7 +148,7 @@ export const constantRouterMap = [
name: '话务任务记录',
component: _import('salesleads/trafficTask', 'taskRecord'),
meta: {
keepAlive: true,
componentName: 'TaskRecord',
fromPath: ['/taskDetail']
}
......@@ -178,7 +178,7 @@ export const constantRouterMap = [
name: '门店视图',
component: _import('salesleads/groupSend', 'grStoreList'),
meta: {
keepAlive: true,
componentName: 'grStoreList',
fromPath: ['/grStoreDetail/:id']
}
},
......@@ -246,7 +246,7 @@ export const constantRouterMap = [
name: '客户分组设置',
component: _import('apps/customerApp', 'memberGroupSet'),
meta: {
keepAlive: true,
componentName: 'memberGroupSet',
fromPath: ['/addGroupTemplate', '/editGroupTemplate', '/storeRangeSet']
}
},
......@@ -357,7 +357,7 @@ export const constantRouterMap = [
name: '月指标任务',
component: _import('apps/quota', 'monthTask'),
meta: {
keepAlive: true,
componentName: 'monthTask',
fromPath: ['/monthTaskDetail']
}
},
......
......@@ -27,7 +27,7 @@
import MemberGroupList from './memberGroupList.vue';
import MemberGroupSetList from './memberGroupSetList.vue';
export default {
name: 'app-detail',
name: 'memberGroupSet',
components: { MemberGroupList, MemberGroupSetList },
props: {
brandId: {
......
......@@ -51,7 +51,7 @@ import { getRequest, postExcel } from '@/api/api';
import { _debounce } from '@/common/js/public';
import errMsg from '@/common/js/error';
export default {
name: 'reviewed',
name: 'monthTask',
props: {
brandId: {
type: String,
......
......@@ -125,16 +125,8 @@ export default {
},
mounted() {
this.getData();
console.log('mounted');
},
activated() {
if (this.$route.meta.refresh) {
this.form = {
title: '',
pageSize: 20,
pageNum: 1
};
}
this.getData();
},
props: {
......
......@@ -14,6 +14,7 @@
<script>
import salutatory from './salutatory.vue';
export default {
name: 'salutatoryIndex',
components: {
salutatory
},
......
......@@ -684,10 +684,7 @@ export default {
type: 'success',
message: '保存成功!'
});
if (!this.$route.query.id) {
this.$route.meta.refresh = true;
}
sessionStorage.setItem('activeName', para.type);
this.$router.push('salutatory');
}
})
......
......@@ -443,7 +443,6 @@ export default {
.then(res => {
setTimeout(() => {
this.btnLoading = false;
this.$route.meta.refresh = true;
this.$router.go(-1);
}, 1000);
})
......
......@@ -136,6 +136,7 @@ const tableHead = [
}
];
export default {
name: 'attractFlowLink',
data() {
let tableMaxHeight = document.body.clientHeight - 285 + 'px';
return {
......@@ -219,15 +220,6 @@ export default {
this.getList();
},
activated() {
if (this.$route.meta.refresh) {
this.form = {
pageSize: 20,
pageNum: 1,
linkType: '',
searchParams: '',
dateRange: []
};
}
this.getList();
},
components: {
......
......@@ -137,7 +137,6 @@ export default {
guidePageSave(this.form)
.then(_ => {
this.$router.push('/ladingPageList');
this.$route.meta.refresh = true;
this.$message.success('保存成功');
})
.finally(_ => {
......
......@@ -26,6 +26,7 @@ import relationDialog from './relationDialog';
import { guidePageList, guidePageDel, guidePageRelation } from '@/api/actCode';
import { _debounce } from '@/common/js/public';
export default {
name: 'ladingPageList',
data() {
return {
form: {
......@@ -115,14 +116,6 @@ export default {
this.getList();
},
activated() {
if (this.$route.meta.refresh) {
this.form = {
pageSearchText: '',
dateRange: [],
pageSize: 20,
pageNum: 1
};
}
this.getList();
},
methods: {
......
......@@ -373,30 +373,11 @@ export default {
};
},
created() {
if (!this.$route.meta.keepAlive) {
this.getTableList();
this.searchGroup();
}
this.searchGroup();
this.getTableList();
},
activated() {
if (this.$route.meta.refresh) {
this.inFields = {
hmSelect: '',
statusFlagInt: '',
storeSelect: '',
clerkSelect: '',
hmTypeInt: '',
startTime: '',
endTime: '',
orderByField: 'createTime desc',
hmGroupId: '-1'
};
this.pageParam = {
pageSize: 20,
pageNo: 1
};
}
this.searchGroup();
this.getTableList();
},
methods: {
......
......@@ -75,16 +75,16 @@ export default {
if (this.memberType == 1) {
this.form.clerkIdList = ['-1'];
this.form.hmUserNum = this.hmMemberNum;
} else {
this.form.clerkIdList = this.form.clerkList.map(el => el.clerkId);
}
let obj = {
...event,
...this.form
};
obj.clerkIdList = obj.clerkList.map(el => el.clerkId);
postJsonRequest('/haoban-manage3-web/hm/qrcode/addList', obj).then(res => {
if (res.data.code == 0) {
setTimeout(() => {
this.$route.meta.refresh = true;
this.$refs.setActCodePage.saveLoading = false;
this.$router.go(-1);
}, 1000);
......
......@@ -100,19 +100,10 @@ export default {
};
},
created() {
if (!this.$route.meta.refresh) {
this.searchGroup();
}
this.searchGroup();
},
activated() {
if (this.$route.meta.refresh) {
this.pageP = {
groupName: '',
pageNum: 1,
pageSize: 40
};
this.searchGroup();
}
this.searchGroup();
},
methods: {
onSearch() {
......
......@@ -114,7 +114,6 @@ export default {
postJsonRequest('/haoban-manage3-web/hm/qrcode/add', obj).then(res => {
if (res.data.code == 0) {
setTimeout(() => {
this.$route.meta.refresh = true;
this.$refs.setActCodePage.btnLoading = false;
this.$refs.setActCodePage.saveLoading = false;
this.$router.go(-1);
......
......@@ -93,7 +93,7 @@ import { getRequest, postExcel } from '@/api/api';
import errMsg from '@/common/js/error';
import { _debounce } from '@/common/js/public';
export default {
name: 'storeList',
name: 'grStoreList',
props: {
brandId: {
type: String,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment