diff --git a/.env b/.env index 424b022bc0040ac5d08d164b3ce54c40f017b87e..691468789ddcf00b0eba8ec9c3364709d73e1b70 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ # 标题 -VITE_APP_TITLE=芋道管理系统 +VITE_APP_TITLE=科研管理系统 # 项目本地运行端口号 VITE_PORT=80 diff --git a/.vscode/settings.json b/.vscode/settings.json index 54be7d8c0fefc004bfc289693efd51744a709e78..e4ec7cd1efb0cbc2e8fa6d16dba271b04aeccdba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -86,7 +86,7 @@ "source.fixAll.eslint": "explicit" }, "[vue]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + "editor.defaultFormatter": "Vue.volar" }, "i18n-ally.localesPaths": ["src/locales"], "i18n-ally.keystyle": "nested", diff --git a/index.html b/index.html index 8cfcbefa693e099f54d2a6a39c2f97ef9c49d920..f6b2b6d2aadbc69edbdee6d10b30ba89a98a4d5b 100644 --- a/index.html +++ b/index.html @@ -18,6 +18,109 @@
+ +
+
+
+
%VITE_APP_TITLE%
+
+
diff --git a/src/api/acceptance/acceptance/index.ts b/src/api/acceptance/acceptance/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0921cf924650974d6b1b4b701629186d38487f2 --- /dev/null +++ b/src/api/acceptance/acceptance/index.ts @@ -0,0 +1,121 @@ +import request from '@/config/axios' + +// 验收 VO +export interface MainVO { + id: number // 主键Id + contractId: number // 合同Id + projectCode: string // 任务书编号 + projectName: string // 任务书名称 + projectLeader: string // 项目负责人 + projectLeaderId: number // 项目负责人ID + undertakingUnitName: string // 承担单位名称 + undertakingUnitId: number // 承担单位ID + beginDate: Date // 开始时间 + endDate: Date // 结束时间 + accYear: string // 验收年度 + accDate: Date // 验收时间 + competentDeptId: number // 主管部门ID + competentDeptName: string // 主管部门 + managerId: number // 主管工程师ID + managerName: string // 主管工程师 + maintenanceUnitName: string // 维护单位名称 + maintenanceUnitId: number // 维护单位ID + reviewUnitName: string // 审核单位名称 + reviewUnitId: number // 审核单位ID + accMode: string // 验收形式 + accResult: string // 验收结果 + state: string // 状态 +} + +// 验收 API +export const MainApi = { + // 查询验收分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/acceptance/main/page`, params }) + }, + + // 查询验收详情 + getMain: async (id: number) => { + return await request.get({ url: `/acceptance/main/get?id=` + id }) + }, + + // 新增验收 + createMain: async (data: MainVO) => { + return await request.post({ url: `/acceptance/main/create`, data }) + }, + + // 修改验收 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/acceptance/main/update`, data }) + }, + + // 删除验收 + deleteMain: async (id: number) => { + return await request.delete({ url: `/acceptance/main/delete?id=` + id }) + }, + + // 导出验收 Excel + exportMain: async (params) => { + return await request.download({ url: `/acceptance/main/export-excel`, params }) + }, + // 导入立项 + getListPage: async (params) => { + return await request.get({ url: `/acceptance/main/contractPage`, params }) + }, + + generateAcceptance: async (params: any) => { + return await request.post({ url: `/acceptance/main/generateAcceptance`, params }) + }, + //审核 + auditAcceptance: async (data: MainVO) => { + return await request.post({ url: `/acceptance/main/auditAcceptance`, data }) + }, + //提报 + presentingAcceptance: async (params: any) => { + return await request.post({ url: `/acceptance/main/presentingAcceptance`, params }) + }, + getAuditList: async (params) => { + return await request.get({ url: `/contract/main/getAuditList`, params }) + }, +// ==================== 子表(验收详细) ==================== + + // 获得验收详细 + getInfoByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/info/get-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, + +// ==================== 子表(验收项目目标) ==================== + + // 获得验收项目目标列表 + getTargetListByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/target/list-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, + +// ==================== 子表(验收考核指标) ==================== + + // 获得验收考核指标列表 + getCheckListByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/check/list-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, + +// ==================== 子表(验收项目论文成果) ==================== + + // 获得验收项目论文成果列表 + getPublicationsListByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/publications/list-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, + +// ==================== 子表(验收其他成果) ==================== + + // 获得验收其他成果列表 + getAchieListByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/achie/list-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, + +// ==================== 子表(验收经费-新) ==================== + + // 获得验收经费-新列表 + getFundsListByAcceptanceId: async (acceptanceId) => { + return await request.get({ url: `/acceptance/main/funds/list-by-acceptance-id?acceptanceId=` + acceptanceId }) + }, +} diff --git a/src/api/apply/apply/index.ts b/src/api/apply/apply/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..17215dec7516ecb2f6ab056bd8a610ba1e34da1c --- /dev/null +++ b/src/api/apply/apply/index.ts @@ -0,0 +1,87 @@ +import request from '@/config/axios' +import {params} from "vite-plugin-top-level-await"; + +// 立项 VO +export interface MainVO { + id: number // 主键id + projectName: string // 项目名称 + projectLeader: String // 负责人 + projectLeaderId: number // 负责人Id + year: string // 立项年度 + undertakingUnitName: string // 牵头单位 + undertakingUnitId: number // 牵头单位ID + mainUnits: string // 主要完成单位 + coopUnits: string // 合作单位 + briefObjectives: string // 项目简介—项目目标 + briefContents: string // 项目简介—研究内容 + briefInnovate: string // 项目简介—创新点 + briefAchievement: string // 项目简介—科技及产业化成果 + briefBenefit: string // 项目简介—经济、社会效益 + developmentCycle: string // 研发周期 + totalFee: string // 总经费 + applyFee: string // 拨款 + sefeFee: string // 自筹 + competentDeptId: number // 主管部门ID + competentDeptName: string // 主管部门 + managerId: number // 主管工程师ID + managerName: string // 主管工程师 + maintenanceUnitName: string // 维护单位名称 + maintenanceUnitId: number // 维护单位ID + reviewUnitName: string // 审核单位名称 + reviewUnitId: number // 审核单位ID + state: string // 审核状态 +} + +// 立项 API +export const MainApi = { + // 查询立项分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/apply/main/page`, params }) + }, + + // 查询立项详情 + getMain: async (id: number) => { + return await request.get({ url: `/apply/main/get?id=` + id }) + }, + + // 新增立项 + createMain: async (data: MainVO) => { + return await request.post({ url: `/apply/main/create`, data }) + }, + + // 修改立项 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/apply/main/update`, data }) + }, + + // 删除立项 + deleteMain: async (id: number) => { + return await request.delete({ url: `/apply/main/delete?id=` + id }) + }, + + // 导出立项 Excel + exportMain: async (params) => { + return await request.download({ url: `/apply/main/export-excel`, params }) + }, + // 成文 + generateDoc: async (id: number)=>{ + return await request.download({ url: `/apply/main/generate-doc?id=` + id }) + }, + // 汇总表成文 + generateHZDoc: async (id: number)=>{ + return await request.download({ url: `/apply/main/generate-hzdoc`}) + }, + + //提报 + presentingContract: async (params: any) => { + return await request.post({ url: `/apply/main/presentingApply`, params }) + }, + // 审核 + auditContract: async (data: MainVO) => { + return await request.post({ url: `/apply/main/auditApply`, data }) + }, + // 审核记录 + getAuditList: async (params) => { + return await request.get({ url: `/apply/main/getAuditList`, params }) + }, +} diff --git a/src/api/change/change/index.ts b/src/api/change/change/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..fdf7b0a65785efdde05ae8787bc40e5ad778858f --- /dev/null +++ b/src/api/change/change/index.ts @@ -0,0 +1,70 @@ +import request from '@/config/axios' + +// 变更申请 VO +export interface MainVO { + id: number // 主键Id + contractId: number // 任务书Id + projectName: string // 项目名称 + projectLeader: string // 项目负责人 + projectLeaderId: string // 项目负责人Id + projectCode: string // 项目编号 + bfChange: string // 变更前 + afChange: string // 变更后 + detailReasons: string // 详细原因及具体举措 + year: string // 变更年度 + changeType: [] // 变更类型;1:延长期限;2:调整经费;3:调整负责人;4:调整设备;5:其他 + competentDeptId: string // 主管部门ID + competentDeptName: string // 主管部门 + managerId: string // 主管工程师ID + managerName: string // 主管工程师 + maintenanceUnitName: string // 维护单位名称 + maintenanceUnitId: string // 维护单位ID + undertakingUnitName: string // 承担单位名称 + undertakingUnitId: string // 承担单位ID + reviewUnitName: string // 审核单位名称 + reviewUnitId: string // 审核单位ID + state: string // 状态 + +} + +// 变更申请 API +export const MainApi = { + // 查询变更申请分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/change/main/page`, params }) + }, + + // 查询变更申请详情 + getMain: async (id: number) => { + return await request.get({ url: `/change/main/get?id=` + id }) + }, + + // 新增变更申请 + createMain: async (data: MainVO) => { + return await request.post({ url: `/change/main/create`, data }) + }, + + // 修改变更申请 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/change/main/update`, data }) + }, + + // 删除变更申请 + deleteMain: async (id: number) => { + return await request.delete({ url: `/change/main/delete?id=` + id }) + }, + + // 导出变更申请 Excel + exportMain: async (params) => { + return await request.download({ url: `/change/main/export-excel`, params }) + }, + + // 选择在研任务书 + getListPage: async (params) => { + return await request.get({ url: `/contract/main/page`, params }) + }, + + generateChange: async (params: any) => { + return await request.post({ url: `/change/main/create`, params }) + }, +} diff --git a/src/api/contract/contract/index.ts b/src/api/contract/contract/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..af8aeaa8dc960ebd714c0249294ad050b77d14a2 --- /dev/null +++ b/src/api/contract/contract/index.ts @@ -0,0 +1,147 @@ +import request from '@/config/axios' + +// 任务书主 VO +export interface MainVO { + id: number // 主键id + projectName: string // 项目名称 + projectLeader: string // 项目负责人 + projectLeaderId: number // 项目负责人Id + projectCode: string // 项目编号 + technicalField: string // 所属技术领域 + year: string // 年度 + beginDate: Date // 开始时间 + endDate: Date // 结束时间 + planName: string // 计划类型 + planId: string // 计划Id + supportingCondition: string // 课题实施所需的其他配套条件 + gender: number // 性别 + age: string // 年龄 + education: string // 学历 + major: string // 所学专业 + engagMajor: string // 从事专业 + position: string // 职务(职称) + phoneNo: string // 电话 + email: string // 邮箱 + fax: string // 传真 + postalCode: string // 邮编 + address: string // 通讯地址 + achievement: string // 主要业绩 + competentDeptId: number // 主管部门ID + competentDeptName: string // 主管部门 + managerId: number // 主管工程师ID + managerName: string // 主管工程师 + maintenanceUnitName: string // 维护单位名称 + maintenanceUnitId: number // 维护单位ID + undertakingUnitName: string // 承担单位名称 + undertakingUnitId: number // 承担单位ID + reviewUnitName: string // 审核单位名称 + reviewUnitId: number // 审核单位ID + state: string // 状态 +} + +// 任务书主 API +export const MainApi = { + // 查询任务书主分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/contract/main/page`, params }) + }, + + // 查询任务书主详情 + getMain: async (id: number) => { + return await request.get({ url: `/contract/main/get?id=` + id }) + }, + + // 新增任务书主 + createMain: async (data: MainVO) => { + return await request.post({ url: `/contract/main/create`, data }) + }, + + // 修改任务书主 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/contract/main/update`, data }) + }, + + // 删除任务书主 + deleteMain: async (id: number) => { + return await request.delete({ url: `/contract/main/delete?id=` + id }) + }, + + // 导出任务书主 Excel + exportMain: async (params) => { + return await request.download({ url: `/contract/main/export-excel`, params }) + }, + // 导入立项 + getListPage: async (params) => { + return await request.get({ url: `/apply/main/page`, params }) + }, + + generateContract: async (params: any) => { + return await request.post({ url: `/contract/main/generateContract`, params }) + }, + //审核 + auditContract: async (data: MainVO) => { + return await request.post({ url: `/contract/main/auditContract`, data }) + }, + //提报 + presentingContract: async (params: any) => { + return await request.post({ url: `/contract/main/presentingContract`, params }) + }, + getAuditList: async (params) => { + return await request.get({ url: `/contract/main/getAuditList`, params }) + }, +// ==================== 子表(任务书详细信息) ==================== + + // 获得任务书详细信息 + getInfoByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/info/get-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(任务书项目目标) ==================== + + // 获得任务书项目目标列表 + getTargetListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/target/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(任务书考核指标) ==================== + + // 获得任务书考核指标列表 + getCheckListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/check/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(项目实施计划) ==================== + + // 获得项目实施计划列表 + getPlanListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/plan/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(任务书经费) ==================== + + // 获得任务书经费列表 + getFundsListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/funds/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(参加单位) ==================== + + // 获得参加单位列表 + getUnitListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/unit/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(项目所需设备) ==================== + + // 获得项目所需设备列表 + getDeviceListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/device/list-by-contract-id?contractId=` + contractId }) + }, + +// ==================== 子表(主要参加人员) ==================== + + // 获得主要参加人员列表 + getParticipantListByContractId: async (contractId) => { + return await request.get({ url: `/contract/main/participant/list-by-contract-id?contractId=` + contractId }) + }, +} diff --git a/src/api/infra/module/index.ts b/src/api/infra/module/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..21b53aa73a9882664cc8d8dc43b088ef9372b4a3 --- /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 0000000000000000000000000000000000000000..6d4e33cd24c219192ddd02a62c95b885212c61c2 --- /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 new file mode 100644 index 0000000000000000000000000000000000000000..68f54072580d600af6887dd96d277cf1cb4d5521 --- /dev/null +++ b/src/api/patents/patents/index.ts @@ -0,0 +1,76 @@ +import request from '@/config/axios' + +// 专利信息 VO +export interface MainVO { + id: number // id + contractId: number // 合同id + contractCode: string // 合同编号 + name: string // 专利名称 + number: string // 专利号 + inventorName: string // 发明人姓名 + filingDate: string // 申请日期 + publicationDate: string // 公开日期 + grantDate: string // 授权日期 + patentType: string // 专利类型(如发明、实用新型、外观设计等) + patenteeName: string // 专利权人姓名或公司名称 + relatedTechArea: string // 相关技术领域 + technicalEffect: string // 技术效果 + legalStatus: string // 法律状态(如审查中、已授权、无效等) +} + +// 专利信息 API +export const MainApi = { + // 查询专利信息分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/patents/main/page`, params }) + }, + + // 查询专利信息详情 + getMain: async (id: number) => { + return await request.get({ url: `/patents/main/get?id=` + id }) + }, + + // 新增专利信息 + createMain: async (data: MainVO) => { + return await request.post({ url: `/patents/main/create`, data }) + }, + + // 修改专利信息 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/patents/main/update`, data }) + }, + + // 删除专利信息 + deleteMain: async (id: number) => { + return await request.delete({ url: `/patents/main/delete?id=` + id }) + }, + + // 导出专利信息 Excel + exportMain: async (params) => { + 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 }) + }, +} diff --git a/src/api/process/process/index.ts b/src/api/process/process/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..49d75689a7c4f3020933c1dce03dac699a1b3479 --- /dev/null +++ b/src/api/process/process/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +// 执行 VO +export interface MainVO { + id: number // 主键id + contractId: number // 任务书Id + projectCode: string // 任务书编号 + projectName: string // 任务书名称 + projectLeader: string // 项目负责人 + projectLeaderId: string // 项目负责人ID + undertakingUnitName: string // 承担单位名称 + undertakingUnitId: string // 承担单位ID + projectObjectives: string // 项目目标 + projectEvaluation: string // 考核指标 + processDate: string // 执行时间区段 + deviation: string // 是否偏差 + reason: string // 偏差原因 + schedule: string // 实际进度 + futurePlan: string // 下一步工作计划 +} + +// 执行 API +export const MainApi = { + // 查询执行分页 + getMainPage: async (params: any) => { + return await request.get({ url: `/process/main/page`, params }) + }, + + // 查询执行详情 + getMain: async (id: number) => { + return await request.get({ url: `/process/main/get?id=` + id }) + }, + + // 新增执行 + createMain: async (data: MainVO) => { + return await request.post({ url: `/process/main/create`, data }) + }, + + // 修改执行 + updateMain: async (data: MainVO) => { + return await request.put({ url: `/process/main/update`, data }) + }, + + // 删除执行 + deleteMain: async (id: number) => { + return await request.delete({ url: `/process/main/delete?id=` + id }) + }, + + // 导出执行 Excel + exportMain: async (params) => { + return await request.download({ url: `/process/main/export-excel`, params }) + }, +} diff --git a/src/api/publicLab/equip/index.ts b/src/api/publicLab/equip/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..fe69b095702f3a1a856f3414c6f97085efcaf980 --- /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 0000000000000000000000000000000000000000..b49852d89ab6d647613f969c842ce5dc260fd6b0 --- /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 new file mode 100644 index 0000000000000000000000000000000000000000..c3ddaa7ea555afcded07a25dc957762585c17cb1 --- /dev/null +++ b/src/api/publicLab/publicLab/index.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' + +// 公共实验室信 VO +export interface VO { + id: number // 主键ID + userName: string // 用户姓名 + userContact: string // 用户联系方式 + reservationDate: string // 预约日期 + reservationTime: string // 预约时间 + labName: string // 实验室名称 + joinPeople: string // 参与人员 + equipment: string // 实验内容及设备 + reservationNotes: string // 备注 + deptId: number // 单位ID + deptName: string // 单位名称 + revision: number // 乐观锁 + checkout: string // 归还 + state: number // 归还状态 +} + +// 公共实验室信 API +export const Api = { + // 查询公共实验室信分页 + getPage: async (params: any) => { + return await request.get({ url: '/publicLab/page', params }) + }, + + // 查询公共实验室信详情 + get: async (id: number) => { + return await request.get({ url: '/publicLab/get?id=' + id }) + }, + + // 新增公共实验室信 + create: async (data: VO) => { + return await request.post({ url: '/publicLab/create', data }) + }, + + // 修改公共实验室信 + update: async (data: VO) => { + return await request.put({ url: '/publicLab/update', data }) + }, + + // 删除公共实验室信 + delete: async (id: number) => { + return await request.delete({ url: '/publicLab/delete?id=' + id }) + }, + + // 导出公共实验室信 Excel + export: async (params) => { + return await request.download({ url: '/publicLab/export-excel', params }) + }, +} diff --git a/src/assets/imgs/icon_bg.png b/src/assets/imgs/icon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8fa18f474ed1f0ab65172905d9969334ddefd4 Binary files /dev/null and b/src/assets/imgs/icon_bg.png differ diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png index 7e1043f21e57ead95f41354f0f1b7d1166c07ebd..8205801ff46950d7330872e4dbb19ed1de52beae 100644 Binary files a/src/assets/imgs/logo.png and b/src/assets/imgs/logo.png differ diff --git a/src/components/Dialog/src/Dialog.vue b/src/components/Dialog/src/Dialog.vue index a1eb550c8f58768d1b8d734323e75848706506fe..a2f1270bce0a388013b3e5148c43341a22019b14 100644 --- a/src/components/Dialog/src/Dialog.vue +++ b/src/components/Dialog/src/Dialog.vue @@ -7,8 +7,9 @@ const slots = useSlots() const props = defineProps({ modelValue: propTypes.bool.def(false), + Fullscreen:propTypes.bool.def(true), title: propTypes.string.def('Dialog'), - fullscreen: propTypes.bool.def(true), + fullscreen: propTypes.bool.def(false), width: propTypes.oneOfType([String, Number]).def('40%'), scroll: propTypes.bool.def(false), // 是否开启滚动条。如果是的话,按照 maxHeight 设置最大高度 maxHeight: propTypes.oneOfType([String, Number]).def('400px') @@ -26,7 +27,7 @@ const getBindValue = computed(() => { return obj }) -const isFullscreen = ref(false) + const isFullscreen = ref(props.Fullscreen) const toggleFull = () => { isFullscreen.value = !unref(isFullscreen) @@ -70,12 +71,12 @@ const dialogStyle = computed(() => { :show-close="false" > diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 0721651d8ade35825f5c124a0971622f88492cc8..79a51c3b82d730f6d03f47023d900b1c1063e8b1 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: '锁定屏幕', @@ -114,7 +115,7 @@ export default { }, login: { welcome: '欢迎使用本系统', - message: '开箱即用的中后台管理系统', + message: '北京金隅集团科研管理系统', tenantname: '租户名称', username: '用户名', password: '密码', @@ -197,7 +198,7 @@ export default { happyDay: '祝你开心每一天!', toady: '今日晴', notice: '通知公告', - project: '项目数', + project: '站内通知', access: '项目访问', toDo: '待办', introduction: '一个正经的简介', @@ -368,7 +369,7 @@ export default { qrSignInFormTitle: '二维码登录', signUpFormTitle: '注册', forgetFormTitle: '重置密码', - signInTitle: '开箱即用的中后台管理系统', + signInTitle: '北京金隅集团科研管理系统', signInDesc: '输入您的个人详细信息开始使用!', policy: '我同意xxx隐私政策', scanSign: `扫码后点击"确认",即可完成登录`, diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index f63bee6e49d726addde2f59c7833207ceed8a645..a77fdc27642a5dc5985c99f84bf0ab803b481a1e 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/styles/index.scss b/src/styles/index.scss index 0952bd07e1d767a31a0230101438619c7fda39ab..56ebd7eaa073025cea2e55753e75462c27cd5b9d 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -33,3 +33,41 @@ border-left-color: var(--el-color-primary); } } +fieldset{ + padding: 5px 20px 5px 5px; + background: #f5f8fe; + margin-bottom: 5px; + position: relative; + border: 1px solid rgba(75, 141, 241, .35); +} +legend { + margin-left: 10px; + background: #fff; + border-radius: 3px; + padding: 2px 5px; + color: #2d8cf0; + border: 1px solid #2d8cf0; +} +.el-table th.el-table__cell, +.el-table .el-table__cell.is-center, +.el-table.is-scrolling-none th.el-table-fixed-column--right{ + background-color: #fafafc; + color:#1f2225; + font-weight: normal; +} +// .el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column::before{ +// box-shadow: none; +// } +.el-form-item__label{ + color:#1f2225; +} +.login-form .el-input__wrapper{ + border-radius: 10px; + line-height: 50px; + height: 50px; +} +.line{ + background: #1e4dad; + height: 8px; + width: 52px; +} diff --git a/src/styles/var.css b/src/styles/var.css index 63459ba63bccbc106894bd18092eb01324a580ac..b8207ff6cfe57afaced2ea242838bcdfc9bef3b3 100644 --- a/src/styles/var.css +++ b/src/styles/var.css @@ -1,4 +1,6 @@ :root { + --el-button-text-color:#1f2225; + --login-bg-color: #293146; --left-menu-max-width: 200px; @@ -52,7 +54,7 @@ --app-footer-height: 50px; - --transition-time-02: 0.2s; + --transition-time-02: 0.2s } .dark { diff --git a/src/utils/dict.ts b/src/utils/dict.ts index cc1774b32c0eacdf33f9bffb8bfe9ecf515060dc..8e3d9feb11e28fada2b980129fc9792387650ff7 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -123,7 +123,20 @@ export enum DICT_TYPE { SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', SYSTEM_SOCIAL_TYPE = 'system_social_type', - + SYSTEM_EDUCATION = "education", // 学历 + PLAN_ID="plan_id",//计划类型 + SYSTEM_MAJOR = "major", //专业 + + // ========== 所属技术领域 ========== + TECHNICAL_FIELD = "technical_field", + APPLY_UNIT_TYPE = "apply_unit_type", //立项-单位类型 + DEVIATION = 'deviation',//执行-完成情况 + CHANGE_TYPE = 'change_type', //变更-变更类型 + PATENT_TYPE = 'patent_type',//知识产权-专利类型 + LEGAL_STATUS = 'legal_status',//知识产权-法律状态 + LAB_NAME = 'lab_name', //实验室 + EQUIPMENT = 'equipment', //设备 + ACC_MODE = 'acc_mode', //验收形式 // ========== INFRA 模块 ========== INFRA_BOOLEAN_STRING = 'infra_boolean_string', INFRA_JOB_STATUS = 'infra_job_status', @@ -135,7 +148,7 @@ export enum DICT_TYPE { INFRA_CODEGEN_SCENE = 'infra_codegen_scene', INFRA_FILE_STORAGE = 'infra_file_storage', - // ========== BPM 模块 ========== + /* // ========== BPM 模块 ========== BPM_MODEL_CATEGORY = 'bpm_model_category', BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', BPM_TASK_ASSIGN_RULE_TYPE = 'bpm_task_assign_rule_type', @@ -207,5 +220,8 @@ export enum DICT_TYPE { // ========== ERP - 企业资源计划模块 ========== ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态 - ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type' // 库存明细的业务类型 + ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type', // 库存明细的业务类型*/ + + + } diff --git a/src/utils/formatTime.ts b/src/utils/formatTime.ts index ed434cb05ef5bd01985b26cbe4b4cf2c02827c29..8814a1d35c4b2cb804d9dd25937002ac6d433152 100644 --- a/src/utils/formatTime.ts +++ b/src/utils/formatTime.ts @@ -211,7 +211,16 @@ export function dateFormatter(_row: any, _column: TableColumnCtx, cellValue export function dateFormatter2(_row: any, _column: TableColumnCtx, cellValue: any): string { return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' } - +/** + * element plus 的时间 Formatter 实现,使用 YYYY 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter3(cellValue: any): string { + return cellValue ? formatDate(cellValue, 'YYYY') : '' +} /** * 设置起始日期,时间为00:00:00 * @param param 传入日期 diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue index cef6e8e2df1c1b19e6cba5bd85665de4065fe373..6fa638f0761a259bee52e9d4779eb20addc80f76 100644 --- a/src/views/Home/Index.vue +++ b/src/views/Home/Index.vue @@ -1,57 +1,31 @@ diff --git a/src/views/acceptance/acceptance/components/AchieForm.vue b/src/views/acceptance/acceptance/components/AchieForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..2233c36695fc21a1521921899e3a1a4baa345fdc --- /dev/null +++ b/src/views/acceptance/acceptance/components/AchieForm.vue @@ -0,0 +1,99 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/CheckForm.vue b/src/views/acceptance/acceptance/components/CheckForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..59a6c23bf37414aa3b613f8a82e7d9e86fa05d26 --- /dev/null +++ b/src/views/acceptance/acceptance/components/CheckForm.vue @@ -0,0 +1,127 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/FundsForm copy.vue b/src/views/acceptance/acceptance/components/FundsForm copy.vue new file mode 100644 index 0000000000000000000000000000000000000000..16f4cb066dd5dc7ab7c413985a99c9b580b52a2f --- /dev/null +++ b/src/views/acceptance/acceptance/components/FundsForm copy.vue @@ -0,0 +1,129 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/FundsForm.vue b/src/views/acceptance/acceptance/components/FundsForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..a06d38a1c0ba242d36a57aa9cd54b21c865dd1de --- /dev/null +++ b/src/views/acceptance/acceptance/components/FundsForm.vue @@ -0,0 +1,113 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/InfoForm.vue b/src/views/acceptance/acceptance/components/InfoForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..cfdf323f61f58e6970fb11ab345cd419aaf54654 --- /dev/null +++ b/src/views/acceptance/acceptance/components/InfoForm.vue @@ -0,0 +1,105 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/PublicationsForm.vue b/src/views/acceptance/acceptance/components/PublicationsForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..f63e8d7dff9c69303323021fe6154e60769e9146 --- /dev/null +++ b/src/views/acceptance/acceptance/components/PublicationsForm.vue @@ -0,0 +1,149 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/components/TargetForm.vue b/src/views/acceptance/acceptance/components/TargetForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..e4d9984343e6f2ae1ea55c41da8d3a46e96a8f3d --- /dev/null +++ b/src/views/acceptance/acceptance/components/TargetForm.vue @@ -0,0 +1,121 @@ + + \ No newline at end of file diff --git a/src/views/acceptance/acceptance/index.vue b/src/views/acceptance/acceptance/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..26cac63582fbd33125f05f3d16c2b93410ef65d5 --- /dev/null +++ b/src/views/acceptance/acceptance/index.vue @@ -0,0 +1,585 @@ + + + diff --git a/src/views/apply/apply/MainForm.vue b/src/views/apply/apply/MainForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..45b4ded88a9627aca8bebb00d7246cf068e65a06 --- /dev/null +++ b/src/views/apply/apply/MainForm.vue @@ -0,0 +1,255 @@ + + diff --git a/src/views/apply/apply/index.vue b/src/views/apply/apply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..18baedf5320fde90b07e4af1f6c0589589b94f27 --- /dev/null +++ b/src/views/apply/apply/index.vue @@ -0,0 +1,341 @@ + + + diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/definition/index.vue index 31ed8413c6def31038323e78759755c654167448..f60ee09fa5eac15fc02b42fd0fc85aa4bde542a6 100644 --- a/src/views/bpm/definition/index.vue +++ b/src/views/bpm/definition/index.vue @@ -1,5 +1,5 @@