diff --git a/src/modules/generic/MockTableView.vue b/src/modules/generic/MockTableView.vue new file mode 100644 index 0000000..e519ebd --- /dev/null +++ b/src/modules/generic/MockTableView.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/modules/generic/mockTableConfigs.ts b/src/modules/generic/mockTableConfigs.ts new file mode 100644 index 0000000..fba59d9 --- /dev/null +++ b/src/modules/generic/mockTableConfigs.ts @@ -0,0 +1,928 @@ +/** + * F006 W5.x.x+3.x 通用 Mock 表格配置 + * + * 字段定义来源: 老 vue 页面 el-table-column + * Mock 数据: 基于字段类型生成 8-12 条合理示例 + */ +export interface MockColumn { + prop: string + label: string + width?: number | string + minWidth?: number | string + type?: 'status' | 'text' + align?: 'left' | 'center' | 'right' + format?: (row: any) => string +} + +export interface MockConfig { + endpoint?: string + title?: string + columns: MockColumn[] + mockData: any[] + queryKey?: string + queryLabel?: string + pageSize?: number + queryParams?: Record + description?: string +} + +// 共享: 状态映射 +const STATUS_ENABLED = { '0': { label: '禁用', type: 'info' as const }, '1': { label: '启用', type: 'success' as const } } +const STATUS_LOCK = { '0': { label: '正常', type: 'success' as const }, '1': { label: '锁定', type: 'danger' as const } } + +const now = (offset: number = 0) => { + const d = new Date(Date.now() - offset * 86400000) + const p = (n: number) => String(n).padStart(2, '0') + return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}` +} + +// ========== devtools ========== +const baseclassCols: MockColumn[] = [ + { prop: 'id', label: 'ID', width: 80 }, + { prop: 'code', label: '基类编码', minWidth: 160 }, + { prop: 'packageName', label: '基类包名', minWidth: 200 }, + { prop: 'fields', label: '基类字段', minWidth: 200 }, + { prop: 'remark', label: '备注', minWidth: 160 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'text' } +] +const baseclassMock = [ + { id: '1', code: 'BaseEntity', packageName: 'io.renren.common.base', fields: 'id,creator,createDate,updater,updateDate', remark: '所有实体基类', createDate: now(120) }, + { id: '2', code: 'TreeEntity', packageName: 'io.renren.common.base', fields: 'id,parentId,name,sort,children', remark: '树形结构基类', createDate: now(90) }, + { id: '3', code: 'PageReq', packageName: 'io.renren.common.utils', fields: 'page,limit,order,orderBy', remark: '分页请求基类', createDate: now(80) }, + { id: '4', code: 'PageRes', packageName: 'io.renren.common.utils', fields: 'total,list,page,limit', remark: '分页响应基类', createDate: now(80) }, + { id: '5', code: 'BaseService', packageName: 'io.renren.common.service', fields: 'getById,list,save,update,delete', remark: 'Service 层基类', createDate: now(60) }, + { id: '6', code: 'BaseController', packageName: 'io.renren.common.controller', fields: 'page,info,save,update,delete', remark: 'Controller 层基类', createDate: now(50) }, + { id: '7', code: 'BaseDao', packageName: 'io.renren.common.dao', fields: 'selectById,selectList,insert,update,delete', remark: 'DAO 层基类', createDate: now(45) }, + { id: '8', code: 'BaseDTO', packageName: 'io.renren.common.dto', fields: 'id,createDate', remark: '数据传输基类', createDate: now(30) }, + { id: '9', code: 'BaseVO', packageName: 'io.renren.common.vo', fields: 'id,createDate', remark: '视图层基类', createDate: now(20) } +] + +const paramCols: MockColumn[] = [ + { prop: 'packageName', label: '默认包名', minWidth: 200 }, + { prop: 'version', label: '默认版本号', width: 140 }, + { prop: 'author', label: '默认作者', width: 120 }, + { prop: 'email', label: '作者邮箱', minWidth: 200 }, + { prop: 'backendPath', label: '后端生成路径', minWidth: 200 }, + { prop: 'frontendPath', label: '前端生成路径', minWidth: 200 } +] +const paramMock = [{ + packageName: 'io.renren', + version: '1.0.0', + author: 'zou', + email: 'zou@direv.com', + backendPath: '/data/平台开发/04-源码/product_network_java/renren-module', + frontendPath: '/data/平台开发/04-源码/admin_new/src' +}] + +const fieldtypeCols: MockColumn[] = [ + { prop: 'id', label: 'ID', width: 80 }, + { prop: 'columnType', label: '字段类型', width: 160 }, + { prop: 'attrType', label: '属性类型', width: 160 }, + { prop: 'packageName', label: '属性包名', minWidth: 200 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'text' } +] +const fieldtypeMock = [ + { id: '1', columnType: 'bigint', attrType: 'Long', packageName: 'java.lang.Long', createDate: now(100) }, + { id: '2', columnType: 'varchar', attrType: 'String', packageName: 'java.lang.String', createDate: now(100) }, + { id: '3', columnType: 'int', attrType: 'Integer', packageName: 'java.lang.Integer', createDate: now(90) }, + { id: '4', columnType: 'tinyint', attrType: 'Integer', packageName: 'java.lang.Integer', createDate: now(90) }, + { id: '5', columnType: 'double', attrType: 'Double', packageName: 'java.lang.Double', createDate: now(80) }, + { id: '6', columnType: 'decimal', attrType: 'BigDecimal', packageName: 'java.math.BigDecimal', createDate: now(80) }, + { id: '7', columnType: 'datetime', attrType: 'Date', packageName: 'java.util.Date', createDate: now(70) }, + { id: '8', columnType: 'text', attrType: 'String', packageName: 'java.lang.String', createDate: now(60) }, + { id: '9', columnType: 'boolean', attrType: 'Boolean', packageName: 'java.lang.Boolean', createDate: now(50) } +] + +const templateCols: MockColumn[] = [ + { prop: 'id', label: 'ID', width: 80 }, + { prop: 'name', label: '模板名称', minWidth: 200 }, + { prop: 'fileName', label: '文件名', minWidth: 200 }, + { prop: 'content', label: '内容', minWidth: 280 }, + { prop: 'createDate', label: '创建时间', width: 180, type: 'text' } +] +const templateMock = [ + { id: '1', name: 'Controller 模板', fileName: 'Controller.java.vm', content: 'package ${package}.controller;', createDate: now(100) }, + { id: '2', name: 'Service 模板', fileName: 'Service.java.vm', content: 'package ${package}.service.impl;', createDate: now(100) }, + { id: '3', name: 'Dao 模板', fileName: 'Dao.java.vm', content: 'package ${package}.dao;', createDate: now(90) }, + { id: '4', name: 'Entity 模板', fileName: 'Entity.java.vm', content: 'package ${package}.entity;', createDate: now(90) }, + { id: '5', name: 'Vue 列表页', fileName: 'list.vue.vm', content: '