添加银行后端接口,前端代码

This commit is contained in:
2025-09-23 17:57:18 +08:00
parent 325c114c38
commit bdc1b29934
67 changed files with 12682 additions and 7085 deletions

View File

@@ -6,13 +6,7 @@
<h2 v-if="!collapsed">政府管理系统</h2>
<h2 v-else>政府</h2>
</div>
<a-menu
v-model:selectedKeys="selectedKeys"
theme="dark"
mode="inline"
:items="menus"
@click="handleMenuClick"
/>
<Sidebar />
</a-layout-sider>
<!-- 主内容区 -->
@@ -70,288 +64,46 @@
</template>
<script setup>
import { ref, onMounted, h } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import {
MenuUnfoldOutlined,
MenuFoldOutlined,
UserOutlined,
DownOutlined,
LogoutOutlined,
DashboardOutlined,
UserAddOutlined,
EyeOutlined,
CheckCircleOutlined,
LineChartOutlined,
FileOutlined,
TeamOutlined,
SettingOutlined,
MedicineBoxOutlined,
ShoppingOutlined,
FolderOutlined,
BarChartOutlined,
PieChartOutlined,
ShoppingCartOutlined,
FileTextOutlined,
DatabaseOutlined,
HomeOutlined,
ShopOutlined,
MessageOutlined,
BookOutlined,
VideoCameraOutlined,
EnvironmentOutlined
LogoutOutlined
} from '@ant-design/icons-vue'
import { useUserStore } from '@/stores/user'
import Sidebar from '@/layout/Sidebar.vue'
const router = useRouter()
const route = useRoute()
const userStore = useUserStore()
const collapsed = ref(false)
const selectedKeys = ref([route.name])
const menus = ref([])
// 图标映射
const iconMap = {
DashboardOutlined: () => h(DashboardOutlined),
UserAddOutlined: () => h(UserAddOutlined),
EyeOutlined: () => h(EyeOutlined),
CheckCircleOutlined: () => h(CheckCircleOutlined),
LineChartOutlined: () => h(LineChartOutlined),
FileOutlined: () => h(FileOutlined),
TeamOutlined: () => h(TeamOutlined),
SettingOutlined: () => h(SettingOutlined),
MedicineBoxOutlined: () => h(MedicineBoxOutlined),
ShoppingOutlined: () => h(ShoppingOutlined),
FolderOutlined: () => h(FolderOutlined),
BarChartOutlined: () => h(BarChartOutlined),
PieChartOutlined: () => h(PieChartOutlined),
ShoppingCartOutlined: () => h(ShoppingCartOutlined),
FileTextOutlined: () => h(FileTextOutlined),
DatabaseOutlined: () => h(DatabaseOutlined),
HomeOutlined: () => h(HomeOutlined),
ShopOutlined: () => h(ShopOutlined),
MessageOutlined: () => h(MessageOutlined),
BookOutlined: () => h(BookOutlined),
VideoCameraOutlined: () => h(VideoCameraOutlined),
ShopOutlined: () => h(ShopOutlined),
EnvironmentOutlined: () => h(EnvironmentOutlined)
};
// 格式化菜单数据
const formatMenuItems = (menuList) => {
return menuList.map(menu => {
const menuItem = {
key: menu.key,
label: menu.label,
path: menu.path
};
// 添加图标
if (menu.icon && iconMap[menu.icon]) {
menuItem.icon = iconMap[menu.icon];
}
// 添加子菜单
if (menu.children && menu.children.length > 0) {
menuItem.children = formatMenuItems(menu.children);
}
return menuItem;
});
};
// 获取菜单数据
const fetchMenus = async () => {
try {
// 这里可以根据实际情况从API获取菜单数据
// 由于没有实际的API这里提供默认菜单作为备用
menus.value = [
{
key: 'DataCenter',
icon: 'DatabaseOutlined',
label: '数据览仓',
path: '/index/data_center'
},
{
key: 'MarketPrice',
icon: 'BarChartOutlined',
label: '市场行情',
path: '/price/price_list'
},
{
key: 'PersonnelManagement',
icon: 'TeamOutlined',
label: '人员管理',
path: '/personnel'
},
{
key: 'FarmerManagement',
icon: 'UserAddOutlined',
label: '养殖户管理',
path: '/farmer'
},
{
key: 'SmartWarehouse',
icon: 'FolderOutlined',
label: '智能仓库',
path: '/smart-warehouse'
},
{
key: 'BreedImprovement',
icon: 'SettingOutlined',
label: '品种改良管理',
path: '/breed-improvement'
},
{
key: 'PaperlessService',
icon: 'FileTextOutlined',
label: '无纸化服务',
path: '/paperless'
},
{
key: 'SlaughterHarmless',
icon: 'EnvironmentOutlined',
label: '屠宰无害化',
path: '/slaughter'
},
{
key: 'FinanceInsurance',
icon: 'ShoppingOutlined',
label: '金融保险',
path: '/finance'
},
{
key: 'ProductCertification',
icon: 'CheckCircleOutlined',
label: '生资认证',
path: '/examine/index'
},
{
key: 'ProductTrade',
icon: 'ShoppingCartOutlined',
label: '生资交易',
path: '/shengzijiaoyi'
},
{
key: 'CommunicationCommunity',
icon: 'MessageOutlined',
label: '交流社区',
path: '/community'
},
{
key: 'OnlineConsultation',
icon: 'EyeOutlined',
label: '线上问诊',
path: '/consultation'
},
{
key: 'CattleAcademy',
icon: 'BookOutlined',
label: '养牛学院',
path: '/academy'
},
{
key: 'MessageNotification',
icon: 'VideoCameraOutlined',
label: '消息通知',
path: '/notification'
},
{
key: 'UserManagement',
icon: 'UserAddOutlined',
label: '用户管理',
path: '/users'
},
{
key: 'WarehouseManagement',
icon: 'MedicineBoxOutlined',
label: '仓库管理',
path: '/warehouse'
},
{
key: 'FileManagement',
icon: 'FolderOutlined',
label: '文件管理',
path: '/files'
},
{
key: 'ServiceManagement',
icon: 'SettingOutlined',
label: '服务管理',
path: '/service'
},
{
key: 'ApprovalProcess',
icon: 'CheckCircleOutlined',
label: '审批流程',
path: '/approval'
},
{
key: 'EpidemicManagement',
icon: 'LineChartOutlined',
label: '防疫管理',
path: '/epidemic'
},
{
key: 'SupervisionDashboard',
icon: 'EyeOutlined',
label: '监管大屏',
path: '/supervision'
},
{
key: 'VisualAnalysis',
icon: 'PieChartOutlined',
label: '数据分析',
path: '/visualization'
},
{
key: 'LogManagement',
icon: 'FileOutlined',
label: '日志管理',
path: '/log'
}
];
// 应用图标映射
menus.value = formatMenuItems(menus.value);
} catch (error) {
console.error('获取菜单失败:', error);
}
};
// 菜单点击处理
const handleMenuClick = (e) => {
const menuItem = menus.value.find(item => item.key === e.key);
if (menuItem && menuItem.path) {
router.push(menuItem.path);
}
};
// 退出登录处理
// 退出登录
const handleLogout = () => {
userStore.logout();
router.push('/login');
};
// 组件挂载时获取菜单
onMounted(() => {
fetchMenus();
});
userStore.logout()
router.push('/login')
}
</script>
<style scoped>
.logo {
height: 32px;
margin: 16px;
color: white;
height: 64px;
line-height: 64px;
background: #002140;
text-align: center;
overflow: hidden;
}
.logo h2 {
color: white;
margin: 0;
font-size: 18px;
}
.trigger {
font-size: 18px;
line-height: 64px;
padding: 0 24px;
cursor: pointer;
transition: color 0.3s;
}
@@ -359,4 +111,11 @@ onMounted(() => {
.trigger:hover {
color: #1890ff;
}
.ant-dropdown-link {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
</style>