diff --git a/src/router/index.ts b/src/router/index.ts index fdfbdf2..1daff70 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -408,6 +408,267 @@ const routes: RouteRecordRaw[] = [ { prop: 'sort', label: '排序', width: 100, align: 'right' } ], hint: '资讯分类(level=1), 后端 /other/category/categoryDeepPageList?type=1&level=1' }), meta: { title: '资讯分类' } }, + // W5.x.x+3.2: 35 个剩余菜单接 GenericTableView (按老 vue controller 端点, 后端 404/500 走优雅占位) + // ===== devtools 5 个 (admin-server 内部: baseclass/datasource/fieldtype/template + params) ===== + { path: '/devtools/baseclass', name: 'DevtoolsBaseclass', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '基类配置', endpoint: '/sys/baseclass/page', filterKey: 'packageName', + columns: [ + { prop: 'packageName', label: '包名', minWidth: 240 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '基类配置' } }, + { path: '/devtools/datasource', name: 'DevtoolsDatasource', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '数据源配置', endpoint: '/sys/datasource/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '名称', minWidth: 200 }, + { prop: 'dbType', label: '数据库类型', width: 140 }, + { prop: 'connUrl', label: '连接URL', minWidth: 240 }, + { prop: 'username', label: '用户名', width: 160 } + ] }), meta: { title: '数据源配置' } }, + { path: '/devtools/fieldtype', name: 'DevtoolsFieldtype', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '字段配置', endpoint: '/sys/fieldtype/page', filterKey: 'columnType', + columns: [ + { prop: 'columnType', label: '列类型', width: 200 }, + { prop: 'attrType', label: '属性类型', width: 200 }, + { prop: 'packageName', label: '包名', minWidth: 200 } + ] }), meta: { title: '字段配置' } }, + { path: '/devtools/param', name: 'DevtoolsParam', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '参数配置(开发)', endpoint: '/sys/param/page', filterKey: 'paramCode', + columns: [ + { prop: 'paramCode', label: '参数编码', minWidth: 200 }, + { prop: 'remark', label: '备注', minWidth: 200 } + ] }), meta: { title: '参数配置(开发)' } }, + { path: '/devtools/template', name: 'DevtoolsTemplate', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '模板配置', endpoint: '/sys/template/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '模板名称', minWidth: 200 } + ] }), meta: { title: '模板配置' } }, + // ===== job 1 ===== + { path: '/job/schedule', name: 'JobSchedule', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '定时任务', endpoint: '/sys/schedule/page', filterKey: 'beanName', + columns: [ + { prop: 'beanName', label: 'Bean名称', minWidth: 200 }, + { prop: 'methodName', label: '方法名', width: 200 }, + { prop: 'cronExpression', label: 'Cron表达式', minWidth: 200 }, + { prop: 'status', label: '状态', width: 100, type: 'status', + statusMap: { 0: {label:'暂停',type:'info'}, 1: {label:'正常',type:'success'} } } + ] }), meta: { title: '定时任务' } }, + // ===== order 8 个 (order-server, pageList 端点) ===== + { path: '/order/ordergood', name: 'OrderOrdergood', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '商品订单', endpoint: '/order/ordergood/pageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'totalAmount', label: '金额', width: 120, align: 'right' }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '商品订单' } }, + { path: '/order/serviceorder', name: 'OrderServiceorder', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '服务订单', endpoint: '/order/serviceorder/pageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'totalAmount', label: '金额', width: 120, align: 'right' }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '服务订单' } }, + { path: '/order/ordergood/after', name: 'OrderOrdergoodAfter', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '商品售后订单', endpoint: '/order/orderAfterSale/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '申请时间', width: 180, type: 'date' } + ] }), meta: { title: '商品售后订单' } }, + { path: '/order/orderserviceafter', name: 'OrderOrderserviceafter', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '服务售后订单', endpoint: '/order/serviceOrderAfterSale/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '申请时间', width: 180, type: 'date' } + ] }), meta: { title: '服务售后订单' } }, + { path: '/order/groupsupplierorder', name: 'OrderGroupSupplier', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '商品拼团订单', endpoint: '/order/groupsupplierorder/pageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '商品拼团订单' } }, + { path: '/order/groupserviceorder', name: 'OrderGroupService', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '服务拼团订单', endpoint: '/order/groupserviceorder/pageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '服务拼团订单' } }, + { path: '/order/ordergood/commission', name: 'OrderOrdergoodCommission', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '实物订单分佣统计', endpoint: '/order/ordergood/commissionPageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'commission', label: '分佣金额', width: 120, align: 'right' }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '实物订单分佣统计' } }, + { path: '/order/serviceorder/commission', name: 'OrderServiceorderCommission', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '服务订单分佣统计', endpoint: '/order/serviceorder/commissionPageList', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'commission', label: '分佣金额', width: 120, align: 'right' }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '服务订单分佣统计' } }, + { path: '/order/base-price-analysis', name: 'OrderBasePriceAnalysis', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '基础价格分析表', endpoint: '/order/orderbase-price-analysis/pageList', filterKey: 'name', + columns: [ + { prop: 'name', label: '名称', minWidth: 200 }, + { prop: 'price', label: '价格', width: 120, align: 'right' } + ] }), meta: { title: '基础价格分析表' } }, + // ===== other 5 个 (other-server 端点) ===== + { path: '/other/brand', name: 'OtherBrand', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '品牌管理', endpoint: '/other/supplierBrand/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '品牌名称', minWidth: 200 }, + { prop: 'firstLetter', label: '首字母', width: 80 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '品牌管理' } }, + { path: '/other/category/good', name: 'OtherCategoryGood', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '平台分类', endpoint: '/other/category/categoryDeepPageList', queryParams: { type: 1 }, filterKey: 'name', + columns: [ + { prop: 'name', label: '分类名称', minWidth: 200 }, + { prop: 'id', label: 'ID', width: 100, align: 'right' }, + { prop: 'sort', label: '排序', width: 100, align: 'right' } + ], hint: '平台分类(type=1), 后端 /other/category/categoryDeepPageList' }), meta: { title: '平台分类' } }, + { path: '/other/help', name: 'OtherHelp', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '帮助中心', endpoint: '/other/help/page', filterKey: 'title', + columns: [ + { prop: 'title', label: '标题', minWidth: 240 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '帮助中心' } }, + { path: '/other/guide', name: 'OtherGuide', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '内容列表', endpoint: '/other/operateguide/page', filterKey: 'title', + columns: [ + { prop: 'title', label: '标题', minWidth: 240 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '内容列表' } }, + // ===== supplier 2 个 ===== + { path: '/supplier/coupon', name: 'SupplierCoupon', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '优惠券', endpoint: '/supplier/coupon/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '优惠券名称', minWidth: 200 }, + { prop: 'amount', label: '面额', width: 120, align: 'right' }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '优惠券' } }, + { path: '/supplier/promoter', name: 'SupplierPromoter', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '推广返佣', endpoint: '/supplier/promoter/page', filterKey: 'realName', + columns: [ + { prop: 'realName', label: '姓名', width: 140 }, + { prop: 'mobile', label: '手机号', width: 160 }, + { prop: 'commission', label: '佣金', width: 120, align: 'right' }, + { prop: 'createDate', label: '加入时间', width: 180, type: 'date' } + ] }), meta: { title: '推广返佣' } }, + // ===== sys 7 个 (admin-server) ===== + { path: '/sys/dict', name: 'SysDict', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '字典类型', endpoint: '/sys/dict-type/page', filterKey: 'dictType', + columns: [ + { prop: 'dictType', label: '字典类型', minWidth: 200 }, + { prop: 'dictName', label: '字典名称', minWidth: 200 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '字典类型' } }, + { path: '/sys/log/login', name: 'SysLogLoginList', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '登录日志', endpoint: '/sys/log/login/page', filterKey: 'username', + columns: [ + { prop: 'username', label: '用户名', width: 160 }, + { prop: 'ip', label: 'IP地址', width: 140 }, + { prop: 'status', label: '状态', width: 80, type: 'status' }, + { prop: 'createDate', label: '登录时间', width: 180, type: 'date' } + ] }), meta: { title: '登录日志' } }, + { path: '/sys/log/operation', name: 'SysLogOperationList', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '操作日志', endpoint: '/sys/log/operation/page', filterKey: 'username', + columns: [ + { prop: 'username', label: '操作人', width: 160 }, + { prop: 'operation', label: '操作', minWidth: 200 }, + { prop: 'createDate', label: '操作时间', width: 180, type: 'date' } + ] }), meta: { title: '操作日志' } }, + { path: '/sys/log/error', name: 'SysLogErrorList', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '异常日志', endpoint: '/sys/log/error/page', filterKey: 'requestUri', + columns: [ + { prop: 'requestUri', label: '请求URI', minWidth: 240 }, + { prop: 'errorMessage', label: '错误信息', minWidth: 240 }, + { prop: 'createDate', label: '异常时间', width: 180, type: 'date' } + ] }), meta: { title: '异常日志' } }, + { path: '/sys/notice-user', name: 'SysNoticeUser', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '我的通知', endpoint: '/sys/notice-user/page', filterKey: 'title', + columns: [ + { prop: 'title', label: '标题', minWidth: 240 }, + { prop: 'type', label: '类型', width: 100, type: 'status' }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '我的通知' } }, + { path: '/sys/userManagement', name: 'SysUserManagement', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '全国运营中心', endpoint: '/sys/operation/pageList', queryParams: { type: 1 }, filterKey: 'name', + columns: [ + { prop: 'name', label: '运营中心名称', minWidth: 200 }, + { prop: 'realName', label: '负责人', width: 140 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'date' } + ] }), meta: { title: '全国运营中心' } }, + // ===== user 9 个 (user-server) ===== + { path: '/user/enterprise/level', name: 'UserEnterpriseLevel', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '企业等级管理', endpoint: '/user/enterprise/enterprise-level/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '等级名称', minWidth: 200 }, + { prop: 'level', label: '等级', width: 100, align: 'right' }, + { prop: 'discount', label: '折扣', width: 100, align: 'right' } + ] }), meta: { title: '企业等级管理' } }, + { path: '/user/enterprise/rating', name: 'UserEnterpriseRating', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '企业评级', endpoint: '/user/enterprise/enterprise-rating/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '评级名称', minWidth: 200 }, + { prop: 'level', label: '级别', width: 100, align: 'right' } + ] }), meta: { title: '评级' } }, + { path: '/user/enterprise/score', name: 'UserEnterpriseScore', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '企业评分', endpoint: '/user/enterprise/enterprise-score/page', filterKey: 'name', + columns: [ + { prop: 'name', label: '企业名称', minWidth: 200 }, + { prop: 'score', label: '评分', width: 100, align: 'right' } + ] }), meta: { title: '评分' } }, + { path: '/user/finance/recharge', name: 'UserFinanceRecharge', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '充值管理', endpoint: '/user/finance/recharge/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'amount', label: '金额', width: 120, align: 'right' }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '充值时间', width: 180, type: 'date' } + ] }), meta: { title: '充值管理' } }, + { path: '/user/finance/recharge-tx', name: 'UserFinanceRechargeTx', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '提现管理', endpoint: '/user/finance/recharge-tx/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'amount', label: '金额', width: 120, align: 'right' }, + { prop: 'status', label: '状态', width: 100, type: 'status' }, + { prop: 'createDate', label: '申请时间', width: 180, type: 'date' } + ] }), meta: { title: '提现管理' } }, + { path: '/user/finance/revenue', name: 'UserFinanceRevenue', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '分账记录管理', endpoint: '/user/finance/revenue-sharing/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'amount', label: '分账金额', width: 120, align: 'right' }, + { prop: 'createDate', label: '分账时间', width: 180, type: 'date' } + ] }), meta: { title: '分账记录管理' } }, + { path: '/user/finance/transaction', name: 'UserFinanceTransaction', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '交易流水', endpoint: '/user/finance/transaction-record/page', filterKey: 'orderNo', + columns: [ + { prop: 'orderNo', label: '订单号', width: 200 }, + { prop: 'amount', label: '金额', width: 120, align: 'right', formatter: (r: any) => (r.amount >= 0 ? '+' : '') + r.amount }, + { prop: 'type', label: '类型', width: 100, type: 'status' }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '交易流水' } }, + { path: '/user/message', name: 'UserMessage', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '系统消息', endpoint: '/user/message/message/page', filterKey: 'title', + columns: [ + { prop: 'title', label: '标题', minWidth: 240 }, + { prop: 'type', label: '类型', width: 100, type: 'status' }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '系统消息' } }, + { path: '/user/message/handel', name: 'UserMessageHandel', component: () => import('@/modules/generic/GenericTableView.vue'), + props: () => ({ title: '待处理消息', endpoint: '/user/message/messageHandel/page', filterKey: 'title', + columns: [ + { prop: 'title', label: '标题', minWidth: 240 }, + { prop: 'createDate', label: '时间', width: 180, type: 'date' } + ] }), meta: { title: '待处理消息' } }, + + // W3.1 通用通配占位 — 覆盖菜单 70 个 url // W3.1 通用通配占位 — 覆盖菜单 70 个 url // W3.1 通用通配占位 — 覆盖菜单 70 个 url(两层路径,如 /admin/user/finance/recharge) // 注意:必须放在具体路由后面,否则会拦截 /inquiry /login