diff --git a/src/components/GuipTable.vue b/src/components/GuipTable.vue index 351f02d..ba85bb2 100644 --- a/src/components/GuipTable.vue +++ b/src/components/GuipTable.vue @@ -39,7 +39,7 @@ -
+
无数据

暂无数据

diff --git a/src/components/SetLeftMenu.vue b/src/components/SetLeftMenu.vue index 375582d..a63e283 100644 --- a/src/components/SetLeftMenu.vue +++ b/src/components/SetLeftMenu.vue @@ -58,8 +58,14 @@ export default { } }, mounted() { - this.activeFloor = this.menuList[this.curIndex]?.list?.[0]?.desc || this.menuList[this.curIndex]?.list?.[0]?.path; - this.componentsName = this.menuList[this.curIndex]?.list?.[0]?.componentsName; + let curItem = this.menuList[this.curIndex]; + // 增加单项初始值判断 + if(!curItem.list || !curItem.list.length){ + this.activeFloor = curItem.path + }else{ + this.activeFloor = curItem?.list?.[0]?.desc || curItem?.list?.[0]?.path; + } + this.componentsName = curItem?.list?.[0]?.componentsName; this.$nextTick(() => { // 更可靠的获取滚动容器方式 this.scrollContainer = document.querySelector('.main-content') || @@ -160,7 +166,7 @@ export default { // } gotoPath(item) { let path = item.path; - this.activeFloor = null + this.activeFloor = path if (!path) { this.curIndex = 0; return; @@ -185,7 +191,7 @@ export default { setActiveCur(item1, item,index) { this.curIndex = index; - let componentsName = item1.componentsName; + let componentsName = item1?.componentsName; // 如果采用的是 组件切换显示的办法 if(componentsName){ this.activeFloor = componentsName; diff --git a/src/main.js b/src/main.js index 7e8af37..90e30ce 100755 --- a/src/main.js +++ b/src/main.js @@ -19,8 +19,36 @@ import clipboard from '@/utils/dirClipBoard'; import { modernCopyToClipboard } from '@/utils/clipboard'; //登陆 import { autoLoginByToken } from '@/utils/login' + +function filterByPermission(data, targetPermission) { + return data.filter(item => { + // 检查主项权限 + const hasMainPermission = item.permission?.includes(targetPermission); + + // 检查子项权限(如果存在list) + const hasChildPermission = item.list?.some( + child => child.permission?.includes(targetPermission) + ); + + return hasMainPermission || hasChildPermission; + }).map(item => { + // 深拷贝避免污染原数据 + const newItem = JSON.parse(JSON.stringify(item)); + + // 过滤子项 + if (newItem.list) { + newItem.list = newItem.list.filter( + child => child.permission?.includes(targetPermission) + ); + } + + return newItem; + }); +} + // 复制 Vue.prototype.$copy = modernCopyToClipboard; +Vue.prototype.$filterByPermission = filterByPermission; Vue.prototype.$loadingFn = LoadingService; Vue.config.productionTip = false; // 请求 diff --git a/src/store/index.js b/src/store/index.js index 0cc8c57..cbaf5cf 100755 --- a/src/store/index.js +++ b/src/store/index.js @@ -11,6 +11,83 @@ export default new Vuex.Store({ showHeader: false, showHeaderRight: false, menuList: [], //目录菜单 + // secondMenu:{ + // '1': { + // type: '1', + // name: '万方数字哈哈哈哈', + // is_select: false, + // list: [ + // { + // type: '29', + // name: '万方通用版44生生世世生生世世', + // is_select: true, + // //componentsName:'1-1' + // }, + // { + // type: '30', + // name: '通用说播版44', + // is_select: false, + // //componentsName:'1-2' + // }, + // { + // type: '32', + // name: '本科通用版44', + // is_select: false, + // //componentsName:'1-3' + // }, + // ] + // }, + // '3': { + // type: '3', + // name: '万方个哥哥个', + // is_select: true, + // list: [ + // { + // type: '6', + // name: '万方通用版a salads asides33', + // is_select: true, + // //componentsName:'2-2' + // }, + // { + // type: '27', + // name: '通用说播版33', + // is_select: true, + // //componentsName:'2-3' + // }, + // { + // type: '109', + // name: '本科通用版33', + // is_select: true, + // //componentsName:'2-4' + // }, + // ] + // }, + // '6': { + // type: '6', + // name: '万方', + // is_select: true, + // list: [ + // { + // type: '10', + // name: '万方通用版11', + // is_select: false, + // //componentsName:'3-4' + // }, + // { + // type: '11', + // name: '通用说播版11', + // is_select: true, + // //componentsName:'3-5' + // }, + // { + // type: '105', + // name: '本科通用版11', + // is_select: false, + // //componentsName:'3-4' + // }, + // ] + // }, + // }, secondMenu:{},//第三种侧边栏 -- 可折叠、 切换显示 showBreadcrumb: false, //是否展示面包屑 breadRightText: '', //是否展示面包屑 @@ -436,7 +513,8 @@ export default new Vuex.Store({ path: '/agent/payInfoSetting', img:'site/pay.svg', imgActive: require('@/assets/site/sitebase_active.svg'), - list: [] + list: [], + permission:[0,4,11,2] }, { name: '钱款交易', @@ -446,17 +524,20 @@ export default new Vuex.Store({ list: [ { name: '管理证书', - desc: 'siteMessage1' + desc: 'siteMessage1', + permission:[2] }, { name: '平台退款', - desc: 'siteMessage2' + desc: 'siteMessage2', + permission:[3,2] }, { name: '分账管理', - desc: 'siteMessage3' + desc: 'siteMessage3', + permission:[2] }, - ] + ], }, { name: '支付设置', @@ -466,15 +547,18 @@ export default new Vuex.Store({ list: [ { name: '支付客服', - desc: 'siteMessage4' + desc: 'siteMessage4', + permission:[2] }, { name: '启停收款方式', - desc: 'siteMessage5' + desc: 'siteMessage5', + permission:[0,4,11,3,2], }, { name: '移除收款方式', - desc: 'siteMessage6' + desc: 'siteMessage6', + permission:[0,4,11,3,2], }, ] }, @@ -565,7 +649,11 @@ export default new Vuex.Store({ state.componentsName = name; }, SET_SLIDER_MENU(state,type){ - state.slidermenu = state[type] + if(typeof(type) == 'string'){ + state.slidermenu = state[type] + }else{ + state.slidermenu = type + } }, SET_SECOND_MENU(state,data){ state.secondMenu = data && JSON.parse(JSON.stringify(data)) diff --git a/src/style/theme/common.scss b/src/style/theme/common.scss index 6fe95f2..fe743ba 100644 --- a/src/style/theme/common.scss +++ b/src/style/theme/common.scss @@ -213,6 +213,10 @@ body { .el-table__body-wrapper::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; + transition: all .3s; + &:hover{ + background: #6B7280; + } } @keyframes fadeInOut { diff --git a/src/views/agent/payCertSetting.vue b/src/views/agent/payCertSetting.vue index 430fa6f..d2f45ba 100644 --- a/src/views/agent/payCertSetting.vue +++ b/src/views/agent/payCertSetting.vue @@ -320,11 +320,13 @@ export default { } }, computed: { - ...mapState(['pageTitle']) // 从Vuex映射showSidebar状态到组件的计算属性中 + ...mapState(['pageTitle','paySettingData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, created() { + const {payType} = this.$route.query store.commit('SET_CUSTOMIZE', true); - store.commit('SET_SLIDER_MENU', 'paySettingData'); + const data = this.$filterByPermission(this.paySettingData,Number(payType)) + store.commit('SET_SLIDER_MENU', data); }, mounted() { store.commit('SET_PAGETITLE', '支付授权'); diff --git a/src/views/agent/payInfoSetting.vue b/src/views/agent/payInfoSetting.vue index 9bd365a..29e5fe0 100644 --- a/src/views/agent/payInfoSetting.vue +++ b/src/views/agent/payInfoSetting.vue @@ -219,11 +219,13 @@ export default { } }, computed: { - ...mapState(['pageTitle']) // 从Vuex映射showSidebar状态到组件的计算属性中 + ...mapState(['pageTitle','paySettingData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, created() { + const {payType} = this.$route.query store.commit('SET_CUSTOMIZE', true); - store.commit('SET_SLIDER_MENU', 'paySettingData'); + const data = this.$filterByPermission(this.paySettingData,Number(payType)) + store.commit('SET_SLIDER_MENU', data); }, mounted() { store.commit('SET_PAGETITLE', '支付授权'); diff --git a/src/views/agent/payList.vue b/src/views/agent/payList.vue index 997bc24..aa9285e 100644 --- a/src/views/agent/payList.vue +++ b/src/views/agent/payList.vue @@ -54,7 +54,7 @@ @@ -109,7 +109,7 @@ @@ -161,7 +161,7 @@ @@ -214,7 +214,7 @@ @@ -266,7 +266,7 @@ @@ -408,6 +408,7 @@ import GuipInput from '@/components/GuipInput.vue'; import GuipSwitch from '@/components/GuipSwitch.vue'; import GuipDialog from '@/components/GuipDialog.vue'; import GuipTable from '@/components/GuipTable.vue'; +import { mapState } from 'vuex'; // 收款方式 const PAY_TYPE_TAOBAO = 0; // 淘宝 @@ -485,6 +486,7 @@ export default { } }, computed: { + ...mapState(['paySettingData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, mounted() { @@ -708,8 +710,10 @@ export default { handleClick(tab, event) { console.log(tab, event); }, - paySetting(row) { - window.open('/agent/payInfoSetting?payid='+row.payid, '_blank'); + paySetting(row,payType) { + console.log(typeof(payType),'===payType'); + const data = this.$filterByPermission(this.paySettingData,Number(payType)) + window.open(data[0].path + '?payid='+row.payid + '&payType=' + payType, '_blank'); } }, diff --git a/src/views/agent/paySetting.vue b/src/views/agent/paySetting.vue index 958ff3e..09a82fd 100644 --- a/src/views/agent/paySetting.vue +++ b/src/views/agent/paySetting.vue @@ -92,11 +92,13 @@ export default { } }, computed: { - ...mapState(['pageTitle']) // 从Vuex映射showSidebar状态到组件的计算属性中 + ...mapState(['pageTitle','paySettingData']) // 从Vuex映射showSidebar状态到组件的计算属性中 }, created() { + const {payType} = this.$route.query store.commit('SET_CUSTOMIZE', true); - store.commit('SET_SLIDER_MENU', 'paySettingData'); + const data = this.$filterByPermission(this.paySettingData,Number(payType)) + store.commit('SET_SLIDER_MENU', data); }, mounted() { store.commit('SET_PAGETITLE', '支付授权');