diff --git a/src/api/infra/module/index.ts b/src/api/infra/module/index.ts new file mode 100644 index 000000000..21b53aa73 --- /dev/null +++ b/src/api/infra/module/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +// 模块-阶段管理 VO +export interface ModuleVO { + id: number // 主键Id + moduleName: string // 模块名称 + stage: string // 阶段 + revision: number // 乐观锁 +} + +// 模块-阶段管理 API +export const ModuleApi = { + // 查询模块-阶段管理分页 + getModulePage: async (params: any) => { + return await request.get({ url: `/infra/module/page`, params }) + }, + + // 查询模块-阶段管理详情 + getModule: async (id: number) => { + return await request.get({ url: `/infra/module/get?id=` + id }) + }, + + // 新增模块-阶段管理 + createModule: async (data: ModuleVO) => { + return await request.post({ url: `/infra/module/create`, data }) + }, + + // 修改模块-阶段管理 + updateModule: async (data: ModuleVO) => { + return await request.put({ url: `/infra/module/update`, data }) + }, + + // 删除模块-阶段管理 + deleteModule: async (id: number) => { + return await request.delete({ url: `/infra/module/delete?id=` + id }) + }, + + // 导出模块-阶段管理 Excel + exportModule: async (params) => { + return await request.download({ url: `/infra/module/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/infra/modulefile/index.ts b/src/api/infra/modulefile/index.ts new file mode 100644 index 000000000..6d4e33cd2 --- /dev/null +++ b/src/api/infra/modulefile/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +// 模块文件管理 VO +export interface ModuleFileVO { + id: number // 主键Id + fileName: string // 文件名称 + fileType: string // 文件类型 + revision: number // 乐观锁 + moduleId: number // 模块id + required: boolean // 是否为必传 + fileSize: number // 文件大小 +} + +// 模块文件管理 API +export const ModuleFileApi = { + // 查询模块文件管理分页 + getModuleFilePage: async (params: any) => { + return await request.get({ url: `/infra/module-file/page`, params }) + }, + + // 查询模块文件管理详情 + getModuleFile: async (id: number) => { + return await request.get({ url: `/infra/module-file/get?id=` + id }) + }, + + // 新增模块文件管理 + createModuleFile: async (data: ModuleFileVO) => { + return await request.post({ url: `/infra/module-file/create`, data }) + }, + + // 修改模块文件管理 + updateModuleFile: async (data: ModuleFileVO) => { + return await request.put({ url: `/infra/module-file/update`, data }) + }, + + // 删除模块文件管理 + deleteModuleFile: async (id: number) => { + return await request.delete({ url: `/infra/module-file/delete?id=` + id }) + }, + + // 导出模块文件管理 Excel + exportModuleFile: async (params) => { + return await request.download({ url: `/infra/module-file/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/patents/patents/index.ts b/src/api/patents/patents/index.ts index c55b1888b..ace511982 100644 --- a/src/api/patents/patents/index.ts +++ b/src/api/patents/patents/index.ts @@ -50,10 +50,27 @@ export const MainApi = { return await request.download({ url: `/patents/main/export-excel`, params }) }, + //审核 + auditPatent: async (data: MainVO) => { + return await request.post({ url: `/patents/main/auditPatent`, data }) + }, + //提报 + presentingPatent: async (params: any) => { + return await request.post({ url: `/patents/main/presentingPatent`, params }) + }, + //审核记录 + getAuditList: async (params) => { + return await request.get({ url: `/patents/main/getAuditList`, params }) + }, + // 成文 + generateDoc: async (id: number)=>{ + return await request.download({ url: `/patents/main/generate-doc?id=` + id }) + }, + // ==================== 子表(专利信息) ==================== // 获得专利信息列表 getInfoListByPatentsId: async (patentsId) => { return await request.get({ url: `/patents/main/info/list-by-patents-id?patentsId=` + patentsId }) }, -} \ No newline at end of file +} diff --git a/src/api/publicLab/equip/index.ts b/src/api/publicLab/equip/index.ts new file mode 100644 index 000000000..fe69b0957 --- /dev/null +++ b/src/api/publicLab/equip/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +// 实验室设备 VO +export interface LabEquipmentVO { + id: number // 主键ID + labId: number // 实验室ID + equipmentName: string // 设备名称 + revision: number // 乐观锁 +} + +// 实验室设备 API +export const LabEquipmentApi = { + // 查询实验室设备分页 + getLabEquipmentPage: async (params: any) => { + return await request.get({ url: `/lab-equipment/page`, params }) + }, + + // 查询实验室设备详情 + getLabEquipment: async (id: number) => { + return await request.get({ url: `/lab-equipment/get?id=` + id }) + }, + + // 新增实验室设备 + createLabEquipment: async (data: LabEquipmentVO) => { + return await request.post({ url: `/lab-equipment/create`, data }) + }, + + // 修改实验室设备 + updateLabEquipment: async (data: LabEquipmentVO) => { + return await request.put({ url: `/lab-equipment/update`, data }) + }, + + // 删除实验室设备 + deleteLabEquipment: async (id: number) => { + return await request.delete({ url: `/lab-equipment/delete?id=` + id }) + }, + + // 导出实验室设备 Excel + exportLabEquipment: async (params) => { + return await request.download({ url: `/lab-equipment/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/publicLab/lab/index.ts b/src/api/publicLab/lab/index.ts new file mode 100644 index 000000000..b49852d89 --- /dev/null +++ b/src/api/publicLab/lab/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +// 公共实验室 VO +export interface LabVO { + id: number // 主键ID + labName: string // 实验室名称 + revision: number // 乐观锁 +} + +// 公共实验室 API +export const LabApi = { + // 查询公共实验室分页 + getLabPage: async (params: any) => { + return await request.get({ url: `/Lab/page`, params }) + }, + + // 查询公共实验室详情 + getLab: async (id: number) => { + return await request.get({ url: `/Lab/get?id=` + id }) + }, + + // 新增公共实验室 + createLab: async (data: LabVO) => { + return await request.post({ url: `/Lab/create`, data }) + }, + + // 修改公共实验室 + updateLab: async (data: LabVO) => { + return await request.put({ url: `/Lab/update`, data }) + }, + + // 删除公共实验室 + deleteLab: async (id: number) => { + return await request.delete({ url: `/Lab/delete?id=` + id }) + }, + + // 导出公共实验室 Excel + exportLab: async (params) => { + return await request.download({ url: `/Lab/export-excel`, params }) + }, + + // ==================== 子表(实验室设备) ==================== + + // 获得实验室设备列表 + getLabEquipmentListByLabId: async (labId) => { + return await request.get({ url: `/Lab/lab-equipment/list-by-lab-id?labId=` + labId }) + } +} \ No newline at end of file diff --git a/src/api/publicLab/publicLab/index.ts b/src/api/publicLab/publicLab/index.ts index 33d73b191..c3ddaa7ea 100644 --- a/src/api/publicLab/publicLab/index.ts +++ b/src/api/publicLab/publicLab/index.ts @@ -14,6 +14,8 @@ export interface VO { deptId: number // 单位ID deptName: string // 单位名称 revision: number // 乐观锁 + checkout: string // 归还 + state: number // 归还状态 } // 公共实验室信 API diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 2dd5e0f30..79a51c3b8 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -54,7 +54,8 @@ export default { updateTime: '更新时间', copy: '复制', copySuccess: '复制成功', - copyError: '复制失败' + copyError: '复制失败', + checkoutSuccess: '归还成功', }, lock: { lockScreen: '锁定屏幕', diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index f63bee6e4..a77fdc276 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -128,6 +128,54 @@ const remainingRouter: AppRouteRecordRaw[] = [ ] }, + { + path: '/lab', + component: Layout, + name: 'llab', + meta: { + hidden: true + }, + children: [ + { + path: 'equip/:labId', + component: () => import('@/views/publicLab/publicLab/equip/index.vue'), + name: 'eequip', + meta: { + title: '设备管理', + noCache: true, + hidden: true, + canTo: true, + icon: '', + activeMenu: '/publicLab/lab' + } + } + ] + }, + + { + path: '/module-file', + component: Layout, + name: 'modulefile', + meta: { + hidden: true + }, + children: [ + { + path: 'file/:moduleId', + component: () => import('@/views/infra/modulefile/file/index.vue'), + name: 'modulefile-file', + meta: { + title: '文件管理', + noCache: true, + hidden: true, + canTo: true, + icon: '', + activeMenu: '/infra/module-file' + } + } + ] + }, + { path: '/codegen', component: Layout, diff --git a/src/views/infra/modulefile/ModuleForm.vue b/src/views/infra/modulefile/ModuleForm.vue new file mode 100644 index 000000000..e211b4a68 --- /dev/null +++ b/src/views/infra/modulefile/ModuleForm.vue @@ -0,0 +1,115 @@ + + \ No newline at end of file diff --git a/src/views/infra/modulefile/file/ModuleFileForm.vue b/src/views/infra/modulefile/file/ModuleFileForm.vue new file mode 100644 index 000000000..a3b169493 --- /dev/null +++ b/src/views/infra/modulefile/file/ModuleFileForm.vue @@ -0,0 +1,137 @@ + + \ No newline at end of file diff --git a/src/views/infra/modulefile/file/index.vue b/src/views/infra/modulefile/file/index.vue new file mode 100644 index 000000000..bf924efdb --- /dev/null +++ b/src/views/infra/modulefile/file/index.vue @@ -0,0 +1,281 @@ + + + \ No newline at end of file diff --git a/src/views/infra/modulefile/index.vue b/src/views/infra/modulefile/index.vue new file mode 100644 index 000000000..b917fa92d --- /dev/null +++ b/src/views/infra/modulefile/index.vue @@ -0,0 +1,223 @@ + + + \ No newline at end of file diff --git a/src/views/patents/patents/index.vue b/src/views/patents/patents/index.vue index 54b4006c8..029d37f4b 100644 --- a/src/views/patents/patents/index.vue +++ b/src/views/patents/patents/index.vue @@ -122,7 +122,8 @@ :formatter="dateFormatter" width="180px" /> - + + @@ -152,6 +170,46 @@ /> + + + + + + 审核通过 + 审核不通过 + + + + + + + + + + + + + + +
{{ log.creatorName }}
+

{{ log.comment }}

+ 审核不通过 + 审核通过 +
+
+ + +
+ +
暂无审核记录
+
+ +
+ @@ -162,6 +220,8 @@ import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' import { MainApi, MainVO } from '@/api/patents/patents' import MainForm from './MainForm.vue' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { formatDate } from '@/utils/formatTime' /** 专利信息 列表 */ defineOptions({ name: 'PatentsMain' }) @@ -187,6 +247,22 @@ const queryParams = reactive({ }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 +const dialogVisible1 = ref(false) // 弹窗的是否展示 +const dialogVisible2 = ref(false) // 弹窗的是否展示 +const logList = ref([]) // 弹窗的是否展示 + +const { wsCache } = useCache() +const user = wsCache.get(CACHE_KEY.USER).user +const formData = ref({ + itemId: undefined, + moduleId: "7", + creatorName: user.nickname, + status: '1', + comment: '', +}) +const formRules = reactive({ + comment: [{ required: true, message: '审核意见不能为空', trigger: 'blur' }], +}) /** 查询列表 */ const getList = async () => { @@ -246,6 +322,61 @@ const handleExport = async () => { } } +//提报 +const handlePresenting = async (id: number) => { + try { + var par = { id: id } + await MainApi.presentingPatent(par) + await getList() + } catch { } +} + +//审核 +const handleauditPatent = async (id: number) => { + formData.value.itemId = id; + formData.value.comment = '' + dialogVisible1.value = true +} + +//审核记录 +const handleRecord = async (id: number) => { + dialogVisible2.value = true + try { + const data = await MainApi.getAuditList({ id: id }) + logList.value = data + + } finally { + loading.value = false + } +} + +const submitForm1 = async () => { + try { + await MainApi.auditPatent(formData.value as unknown as MainVO) + message.success("审核成功") + await getList() + } finally { + // 关闭弹窗 + //currentRow.value = undefined + //currentRowValue.value = undefined + dialogVisible1.value = false + } +} + +const generateDoc = async (id: number,name:string) =>{ + //todo + try{ + // 发起导出 + // exportLoading.value = true + const filename = name +'.docx' + const data = await MainApi.generateDoc(id) + download.word(data, filename) + } catch { + } finally { + // exportLoading.value = false + } +} + /** 初始化 **/ onMounted(() => { getList() diff --git a/src/views/publicLab/publicLab/equip/LabEquipmentForm.vue b/src/views/publicLab/publicLab/equip/LabEquipmentForm.vue new file mode 100644 index 000000000..ba4e2319b --- /dev/null +++ b/src/views/publicLab/publicLab/equip/LabEquipmentForm.vue @@ -0,0 +1,103 @@ + + \ No newline at end of file diff --git a/src/views/publicLab/publicLab/equip/index.vue b/src/views/publicLab/publicLab/equip/index.vue new file mode 100644 index 000000000..d9b41ecd5 --- /dev/null +++ b/src/views/publicLab/publicLab/equip/index.vue @@ -0,0 +1,206 @@ + + + \ No newline at end of file diff --git a/src/views/publicLab/publicLab/lab/Form.vue b/src/views/publicLab/publicLab/lab/Form.vue new file mode 100644 index 000000000..a8a3e5d92 --- /dev/null +++ b/src/views/publicLab/publicLab/lab/Form.vue @@ -0,0 +1,98 @@ + + \ No newline at end of file diff --git a/src/views/publicLab/publicLab/lab/index.vue b/src/views/publicLab/publicLab/lab/index.vue new file mode 100644 index 000000000..b70d56bf5 --- /dev/null +++ b/src/views/publicLab/publicLab/lab/index.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/views/publicLab/publicLab/reservation/CheckoutForm.vue b/src/views/publicLab/publicLab/reservation/CheckoutForm.vue new file mode 100644 index 000000000..7c7cb712a --- /dev/null +++ b/src/views/publicLab/publicLab/reservation/CheckoutForm.vue @@ -0,0 +1,187 @@ + + diff --git a/src/views/publicLab/publicLab/Form.vue b/src/views/publicLab/publicLab/reservation/Form.vue similarity index 100% rename from src/views/publicLab/publicLab/Form.vue rename to src/views/publicLab/publicLab/reservation/Form.vue diff --git a/src/views/publicLab/publicLab/index.vue b/src/views/publicLab/publicLab/reservation/index.vue similarity index 76% rename from src/views/publicLab/publicLab/index.vue rename to src/views/publicLab/publicLab/reservation/index.vue index 91fe1416d..54ab803f4 100644 --- a/src/views/publicLab/publicLab/index.vue +++ b/src/views/publicLab/publicLab/reservation/index.vue @@ -8,7 +8,7 @@ :inline="true" label-width="100px" > - + - + + + + @@ -115,6 +146,8 @@
+ +