Browse Source

refactor:优化金豆充值跳转

zhangrenyuan/feature-20250728113353-金币前端三期
lihui 2 weeks ago
parent
commit
6d2861bce2
  1. 152
      src/views/recharge/beanRecharge.vue

152
src/views/recharge/beanRecharge.vue

@ -1,115 +1,99 @@
<script setup lang="ts">
import {onMounted, ref, watch} from 'vue';
<template>
<div>
<el-button-group>
<el-button
:type="activeTab === 'addBeanRecharge' ? 'primary' : 'default'"
@click="navigateTo('addBeanRecharge')"
:disabled="!hasAdd"
style="width: 120px;"
>
新增充值
</el-button>
<el-button
:type="activeTab === 'beanSystemRecharge' ? 'primary' : 'default'"
@click="navigateTo('beanSystemRecharge')"
:disabled="!hasSystem"
style="width: 120px;"
>
系统充值
</el-button>
<el-button
:type="activeTab === 'beanOnlineRecharge' ? 'primary' : 'default'"
@click="navigateTo('beanOnlineRecharge')"
:disabled="!hasOnline"
style="width: 120px;"
>
线上充值
</el-button>
</el-button-group>
<router-view></router-view>
</div>
</template>
<script setup>
import {ref, watch, onMounted} from 'vue';
import {useRouter, useRoute} from 'vue-router'; import {useRouter, useRoute} from 'vue-router';
import {storeToRefs} from "pinia";
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from 'pinia';
import {useAdminStore} from '@/store/index.js';
import {hasMenuPermission, permissionMapping} from "@/utils/menuTreePermission.js";
const router = useRouter();//
const route = useRoute();//
// activeTab
const activeTab = ref(route.name === 'beanSystemRecharge' ? 'system' : route.name === 'beanOnlineRecharge' ? 'online' : 'add');
const router = useRouter();
const route = useRoute();
const adminStore = useAdminStore(); const adminStore = useAdminStore();
const {menuTree} = storeToRefs(adminStore); const {menuTree} = storeToRefs(adminStore);
const goToAdd = () => {
// activeTab add
activeTab.value = 'add';
router.push({name: 'addBeanRecharge'});
};
const goToSystem = () => {
// activeTab detail
activeTab.value = 'system';
router.push({name: 'beanSystemRecharge'});
};
const goToOnline = () => {
// activeTab detail
activeTab.value = 'online';
router.push({name: 'beanOnlineRecharge'});
};
const activeTab = ref('');
const hasAdd = ref(false);
const hasSystem = ref(false);
const hasOnline = ref(false);
// //
const navigateTo = (name) => { const navigateTo = (name) => {
activeTab.value = name; activeTab.value = name;
if (name === 'add') {
router.push({name: 'addBeanRecharge'});
} else if (name === 'system') {
router.push({name: 'beanSystemRecharge'});
}else if(name === 'online'){
router.push({name: 'beanOnlineRecharge'});
}
};
// menuName
const hasMenuPermission = (tree, targetName) => {
for (const node of tree) {
if (node.menuName === targetName) return true;
if (node.children && hasMenuPermission(node.children, targetName)) return true;
}
return false;
router.push({name});
}; };
//
const getDefaultRoute = () => {
if (!menuTree.value) return 'add';
const hasRecharge = hasMenuPermission(menuTree.value, '提交金豆充值');
return hasRecharge ? 'add' : 'system';
//
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.Submit_Golden_Bean_Recharge);
hasSystem.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_System_Recharge_Details);
hasOnline.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_Online_Recharge_Details);
}; };
//
const getDefaultAuditRoute = () => {
initPermissions();
if (hasAdd.value) return 'addBeanRecharge';
if (hasSystem.value) return 'beanSystemRecharge';
if (hasOnline.value) return 'beanOnlineRecharge';
return 'addBeanRecharge';
};
// //
watch(() => route.name, (newName) => { watch(() => route.name, (newName) => {
if (newName === 'add' || newName === 'system' || newName =='online') {
initPermissions()
if (newName=== 'addBeanRecharge' || newName === 'beanSystemRecharge' || newName === 'beanOnlineRecharge') {
activeTab.value = newName; activeTab.value = newName;
} else if (newName === 'beanRecharge') { } else if (newName === 'beanRecharge') {
const defaultRoute = getDefaultRoute();
// 访 /beanConsume
const defaultRoute = getDefaultAuditRoute();
navigateTo(defaultRoute); navigateTo(defaultRoute);
} }
}); });
// //
onMounted(() => { onMounted(() => {
initPermissions()
if (route.name === 'beanRecharge') { if (route.name === 'beanRecharge') {
const defaultRoute = getDefaultRoute();
console.log('defaultRoute',defaultRoute);
const defaultRoute = getDefaultAuditRoute();
navigateTo(defaultRoute); navigateTo(defaultRoute);
} else { } else {
// //
if (route.name === 'add' || route.name === 'system' || route.name =='online') {
if (route.name=== 'addBeanRecharge' || route.name === 'beanSystemRecharge' || route.name === 'beanOnlineRecharge') {
activeTab.value = route.name; activeTab.value = route.name;
} }
} }
}); });
</script>
<template>
<div>
<!-- 这里放置标签切换的按钮 -->
<el-button-group>
<!-- 切换后状态显示 primary 样式否则是默认样式 -->
<el-button
:type="activeTab === 'add' ? 'primary' : 'default'"
@click="goToAdd"
>
新增充值
</el-button>
<el-button
:type="activeTab === 'system' ? 'primary' : 'default'"
@click="goToSystem"
>
系统充值
</el-button>
<el-button
:type="activeTab === 'online' ? 'primary' : 'default'"
@click="goToOnline"
>
线上充值
</el-button>
</el-button-group>
<!-- 渲染子路由组件 -->
<router-view></router-view>
</div>
</template>
<style scoped>
</style>
</script>
Loading…
Cancel
Save