diff --git a/package-lock.json b/package-lock.json index 02c29fa71..91734769c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "markmap-view": "^0.16.0", "min-dash": "^4.1.1", "mitt": "^3.0.1", + "moment": "^2.30.1", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", @@ -57,6 +58,7 @@ "vue-dompurify-html": "^4.1.4", "vue-i18n": "9.10.2", "vue-router": "4.4.5", + "vue-signature-pad": "^3.0.2", "vue-types": "^5.1.1", "vue3-signature": "^0.2.4", "vuedraggable": "^4.1.0", @@ -12844,6 +12846,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-images": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/merge-images/-/merge-images-1.2.0.tgz", + "integrity": "sha512-hEGvgnTdXr08uzGvEArxRsKpy7WmozM73YaSi4s5IYF4LxrhANpqfHaz9CgBZ5+0+s2NsjPnPdStz3aCc0Yulw==", + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -13057,6 +13065,15 @@ "saxen": "^8.1.2" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/mpd-parser": { "version": "0.22.1", "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.22.1.tgz", @@ -16967,6 +16984,22 @@ "vue": "^3.2.0" } }, + "node_modules/vue-signature-pad": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/vue-signature-pad/-/vue-signature-pad-3.0.2.tgz", + "integrity": "sha512-o25o+lROfCmzASS2+fU8ZV801kV+D4/02zkZ+ez3NKeiUmbxW7kwlUf5oKQkvA+l7Ou9xGsGLsirBLch3jyX8A==", + "license": "MIT", + "dependencies": { + "merge-images": "^1.1.0", + "signature_pad": "^3.0.0-beta.3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/vue-template-compiler": { "version": "2.7.16", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", diff --git a/package.json b/package.json index 307b915ec..a945aaf01 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "markmap-view": "^0.16.0", "min-dash": "^4.1.1", "mitt": "^3.0.1", + "moment": "^2.30.1", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", @@ -73,6 +74,7 @@ "vue-dompurify-html": "^4.1.4", "vue-i18n": "9.10.2", "vue-router": "4.4.5", + "vue-signature-pad": "^3.0.2", "vue-types": "^5.1.1", "vue3-signature": "^0.2.4", "vuedraggable": "^4.1.0", diff --git a/src/api/crm/capitalcost/index.ts b/src/api/crm/capitalcost/index.ts index a9fb2e3e6..3894fd3e2 100644 --- a/src/api/crm/capitalcost/index.ts +++ b/src/api/crm/capitalcost/index.ts @@ -1,49 +1,48 @@ -import request from '@/config/axios' - -// 资金成本 VO -export interface CapitalCostVO { - id: number // 主键 - projectCode: string // 项目编码 - paymentTerm: string // 结算账期 - creditMethod: number // 授信方式 - applicableProjects: number // 适用项目,全部产品、机票 - creditCalcCycle: number // 授信额度计算周期 - ticketIssuanceCycle: number // 出票周期 - settlementCycle: number // 结算周期 - usageDays: number // 实际资金使用天数 - annualInterestRate: number // 年利率 - remark: string // 备注 -} - -// 资金成本 API -export const CapitalCostApi = { - // 查询资金成本分页 - getCapitalCostPage: async (params: any) => { - return await request.get({ url: `/crm/capital-cost/page`, params }) - }, - - // 查询资金成本详情 - getCapitalCost: async (id: number) => { - return await request.get({ url: `/crm/capital-cost/get?id=` + id }) - }, - - // 新增资金成本 - createCapitalCost: async (data: CapitalCostVO) => { - return await request.post({ url: `/crm/capital-cost/create`, data }) - }, - - // 修改资金成本 - updateCapitalCost: async (data: CapitalCostVO) => { - return await request.put({ url: `/crm/capital-cost/update`, data }) - }, - - // 删除资金成本 - deleteCapitalCost: async (id: number) => { - return await request.delete({ url: `/crm/capital-cost/delete?id=` + id }) - }, - - // 导出资金成本 Excel - exportCapitalCost: async (params) => { - return await request.download({ url: `/crm/capital-cost/export-excel`, params }) - }, -} \ No newline at end of file +import request from '@/config/axios' + +// 资金成本 VO +export interface CapitalCostVO { + id: number // 主键 + projectCode: string // 项目编码 + paymentTerm: string // 结算账期 + creditMethod: number // 授信方式 + applicableProjects: number // 适用项目,全部产品、机票 + creditCalcCycle: number // 授信额度计算周期 + ticketIssuanceCycle: number // 出票周期 + settlementCycle: number // 结算周期 + usageDays: number // 实际资金使用天数 + annualInterestRate: number // 年利率 +} + +// 资金成本 API +export const CapitalCostApi = { + // 查询资金成本分页 + getCapitalCostPage: async (params: any) => { + return await request.get({ url: `/crm/capital-cost/page`, params }) + }, + + // 查询资金成本详情 + getCapitalCost: async (id: number) => { + return await request.get({ url: `/crm/capital-cost/get?id=` + id }) + }, + + // 新增资金成本 + createCapitalCost: async (data: CapitalCostVO) => { + return await request.post({ url: `/crm/capital-cost/create`, data }) + }, + + // 修改资金成本 + updateCapitalCost: async (data: CapitalCostVO) => { + return await request.put({ url: `/crm/capital-cost/update`, data }) + }, + + // 删除资金成本 + deleteCapitalCost: async (id: number) => { + return await request.delete({ url: `/crm/capital-cost/delete?id=` + id }) + }, + + // 导出资金成本 Excel + exportCapitalCost: async (params) => { + return await request.download({ url: `/crm/capital-cost/export-excel`, params }) + }, +} diff --git a/src/api/crm/contract/index.ts b/src/api/crm/contract/index.ts index 3f500505c..c8ab0e4d8 100644 --- a/src/api/crm/contract/index.ts +++ b/src/api/crm/contract/index.ts @@ -125,6 +125,12 @@ export const changeContract = async (data: TransferReqVO) => { return await request.put({ url: '/crm/contract/changeContract', data }) } +// 合同变更列表 +export const changeContractList = async (data: TransferReqVO) => { + return await request.get({ url: '/crm/contract-change-record/page', data }) +} + + // 获得待审核合同数量 export const getAuditContractCount = async () => { return await request.get({ url: '/crm/contract/audit-count' }) diff --git a/src/api/crm/customer/index.ts b/src/api/crm/customer/index.ts index 45e396098..200cc9ef7 100644 --- a/src/api/crm/customer/index.ts +++ b/src/api/crm/customer/index.ts @@ -112,6 +112,11 @@ export const getCustomer = async (id: number) => { return await request.get({ url: `/crm/customer/get?id=` + id }) } +// 查询客户详情带报价单 +export const getCustomerDetail = async (id: number) => { + return await request.get({ url: `/crm/customer/get-contract-customer-detail?id=` + id }) +} + // 新增客户 export const createCustomer = async (data: CustomerVO) => { return await request.post({ url: `/crm/customer/create`, data }) diff --git a/src/api/crm/projectdifficulty/index.ts b/src/api/crm/projectdifficulty/index.ts new file mode 100644 index 000000000..43c2b3ec4 --- /dev/null +++ b/src/api/crm/projectdifficulty/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +// 项目难度 VO +export interface ProjectDifficultyVO { + id: number // 主键ID + projectDifficulty: string // 项目难度 + dockingMode: string // 说明 + dockingHours: number // 对接工时(人天) +} + +// 项目难度 API +export const ProjectDifficultyApi = { + // 查询项目难度分页 + getProjectDifficultyPage: async (params: any) => { + return await request.get({ url: `/crm/project-difficulty/page`, params }) + }, + + // 查询项目难度详情 + getProjectDifficulty: async (id: number) => { + return await request.get({ url: `/crm/project-difficulty/get?id=` + id }) + }, + + // 新增项目难度 + createProjectDifficulty: async (data: ProjectDifficultyVO) => { + return await request.post({ url: `/crm/project-difficulty/create`, data }) + }, + + // 修改项目难度 + updateProjectDifficulty: async (data: ProjectDifficultyVO) => { + return await request.put({ url: `/crm/project-difficulty/update`, data }) + }, + + // 删除项目难度 + deleteProjectDifficulty: async (id: number) => { + return await request.delete({ url: `/crm/project-difficulty/delete?id=` + id }) + }, + + // 导出项目难度 Excel + exportProjectDifficulty: async (params) => { + return await request.download({ url: `/crm/project-difficulty/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/src/api/crm/quotation/index.ts b/src/api/crm/quotation/index.ts index 1192cfac1..41b6c6bb3 100644 --- a/src/api/crm/quotation/index.ts +++ b/src/api/crm/quotation/index.ts @@ -44,6 +44,11 @@ export const QuotationApi = { getSimpleQuotationList : async () => { return await request.get({ url: `/crm/quotation/simple-all-list` }) }, + // 获得 CRM 方案营收分析 + getRevenueList : async (data: any) => { + return await request.post({ url: `/crm/quotation/get-revenue-analysis`, + data }) + }, // 获得 CRM 方案列表(精简) getSelfSimpleQuotationList : async () => { @@ -75,6 +80,11 @@ export const QuotationApi = { return await request.put({ url: `/crm/quotation/submit?id=${id}` }) }, + // 客户确认 + enterQuotation: async (data: QuotationVO) => { + return await request.post({ url: `/crm/quotation/customer-confirm`, data }) + }, + // ==================== 子表(CRM 报价产品关联) ==================== // 获得CRM 报价产品关联列表 diff --git a/src/api/crm/servicefeecollectionmethod/index.ts b/src/api/crm/servicefeecollectionmethod/index.ts new file mode 100644 index 000000000..fbfeb4442 --- /dev/null +++ b/src/api/crm/servicefeecollectionmethod/index.ts @@ -0,0 +1,46 @@ +import request from '@/config/axios' + +// 服务费收取方式 VO +export interface ServiceFeeCollectionMethodVO { + id: number // 主键 + type: number // 类型 + productDetail: string // 产品明细 + customerPrice: number // 客单价 + unit: number // 单位 + procurementCost: number // 采购成本 + profit: number // 客单价 - 采购成本 + describe: string // 说明 +} + +// 服务费收取方式 API +export const ServiceFeeCollectionMethodApi = { + // 查询服务费收取方式分页 + getServiceFeeCollectionMethodPage: async (params: any) => { + return await request.get({ url: `/crm/service-fee-collection-method/page`, params }) + }, + + // 查询服务费收取方式详情 + getServiceFeeCollectionMethod: async (id: number) => { + return await request.get({ url: `/crm/service-fee-collection-method/get?id=` + id }) + }, + + // 新增服务费收取方式 + createServiceFeeCollectionMethod: async (data: ServiceFeeCollectionMethodVO) => { + return await request.post({ url: `/crm/service-fee-collection-method/create`, data }) + }, + + // 修改服务费收取方式 + updateServiceFeeCollectionMethod: async (data: ServiceFeeCollectionMethodVO) => { + return await request.put({ url: `/crm/service-fee-collection-method/update`, data }) + }, + + // 删除服务费收取方式 + deleteServiceFeeCollectionMethod: async (id: number) => { + return await request.delete({ url: `/crm/service-fee-collection-method/delete?id=` + id }) + }, + + // 导出服务费收取方式 Excel + exportServiceFeeCollectionMethod: async (params) => { + return await request.download({ url: `/crm/service-fee-collection-method/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/src/api/crm/technicaldockingchecklist/index.ts b/src/api/crm/technicaldockingchecklist/index.ts new file mode 100644 index 000000000..03476a814 --- /dev/null +++ b/src/api/crm/technicaldockingchecklist/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +// 技术对接清单 VO +export interface TechnicalDockingChecklistVO { + id: number // 主键ID + name: string // 平台名称 + dockingMode: number // 对接模式 + dockingHours: number // 技术对接人力(小时) + singleSignOn: number // 单点登录 + architectureSynchronization: number // 架构同步 + businessTripSynchronization: number // 出差单同步 + orderSynchronization: number // 订单同步 + billSynchronization: number // 账单同步 + approvalMessageSynchronization: number // 审批/消息同步 + dockingProductSynchronization: number // 对接产品类型 + progress: number // 进度 + notes: string // 备注 +} + +// 技术对接清单 API +export const TechnicalDockingChecklistApi = { + // 查询技术对接清单分页 + getTechnicalDockingChecklistPage: async (params: any) => { + return await request.get({ url: `/crm/technical-docking-checklist/page`, params }) + }, + + // 查询技术对接清单详情 + getTechnicalDockingChecklist: async (id: number) => { + return await request.get({ url: `/crm/technical-docking-checklist/get?id=` + id }) + }, + + // 新增技术对接清单 + createTechnicalDockingChecklist: async (data: TechnicalDockingChecklistVO) => { + return await request.post({ url: `/crm/technical-docking-checklist/create`, data }) + }, + + // 修改技术对接清单 + updateTechnicalDockingChecklist: async (data: TechnicalDockingChecklistVO) => { + return await request.put({ url: `/crm/technical-docking-checklist/update`, data }) + }, + + // 删除技术对接清单 + deleteTechnicalDockingChecklist: async (id: number) => { + return await request.delete({ url: `/crm/technical-docking-checklist/delete?id=` + id }) + }, + + // 导出技术对接清单 Excel + exportTechnicalDockingChecklist: async (params) => { + return await request.download({ url: `/crm/technical-docking-checklist/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/src/api/task/bonus/index.ts b/src/api/task/bonus/index.ts new file mode 100644 index 000000000..5302b9f2f --- /dev/null +++ b/src/api/task/bonus/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +// 项目奖金 VO +export interface ProjectBonusVO { + id: number // 唯一主键 + projectId: number // 项目ID + userId: number // 员工ID + bonusPercentage: number // 奖金百分比 + bonusAmount: number // 奖金金额 + bonusIssueDate: Date // 奖金发放日期 + bonusState: number // 奖金发放状态 +} + +// 项目奖金 API +export const ProjectBonusApi = { + // 查询项目奖金分页 + getProjectBonusPage: async (params: any) => { + return await request.get({ url: `/tts/project-bonus/page`, params }) + }, + + // 查询项目奖金详情 + getProjectBonus: async (id: number) => { + return await request.get({ url: `/tts/project-bonus/get?id=` + id }) + }, + + // 新增项目奖金 + createProjectBonus: async (data: ProjectBonusVO) => { + return await request.post({ url: `/tts/project-bonus/create`, data }) + }, + + // 修改项目奖金 + updateProjectBonus: async (data: ProjectBonusVO) => { + return await request.put({ url: `/tts/project-bonus/update`, data }) + }, + + // 删除项目奖金 + deleteProjectBonus: async (id: number) => { + return await request.delete({ url: `/tts/project-bonus/delete?id=` + id }) + }, + + // 导出项目奖金 Excel + exportProjectBonus: async (params) => { + return await request.download({ url: `/tts/project-bonus/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/briefWork/index.ts b/src/api/task/briefWork/index.ts new file mode 100644 index 000000000..0942b8635 --- /dev/null +++ b/src/api/task/briefWork/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +// 工作简报 VO +export interface BriefWorkVO { + id: number // 唯一主键 + briefType: number // 简报类型:1-日报,2-周报,3-月报 + briefCount: number // 周报为周数/月报为月数 + briefStartDate: Date // 简报开始日期 + briefEndDate: Date // 简报结束日期 + selectCustomer: boolean // 是否选择客户 + workComplate: string // 本周期完成工作 + workPlan: string // 下周期工作计划 + workAssistance: string // 工作困难及协助 + workExperience: string // 工作心得分享 + attachment: string // 附件 + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 +} + +// 工作简报 API +export const BriefWorkApi = { + // 查询工作简报分页 + getBriefWorkPage: async (params: any) => { + return await request.get({ url: `/tts/brief-work/page`, params }) + }, + + // 查询工作简报分页-根据周报查询 + getBriefWorkTimePage: async (params: any) => { + return await request.get({ url: `/tts/brief-work/page`, params }) + }, + + // 查询工作简报详情 + getBriefWork: async (params: any) => { + return await request.get({ url: `/tts/brief-work/get`, params}) + }, + + // 新增工作简报 + createBriefWork: async (data: BriefWorkVO) => { + return await request.post({ url: `/tts/brief-work/create`, data }) + }, + + // 修改工作简报 + updateBriefWork: async (data: BriefWorkVO) => { + return await request.put({ url: `/tts/brief-work/update`, data }) + }, + + // 删除工作简报 + deleteBriefWork: async (id: number) => { + return await request.delete({ url: `/tts/brief-work/delete?id=` + id }) + }, + + // 导出工作简报 Excel + exportBriefWork: async (params) => { + return await request.download({ url: `/tts/brief-work/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/briefWorkCustomer/index.ts b/src/api/task/briefWorkCustomer/index.ts new file mode 100644 index 000000000..c2dd93583 --- /dev/null +++ b/src/api/task/briefWorkCustomer/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +// 工作简报客户 VO +export interface BriefWorkCustomerVO { + briefId: number // 简报ID + customerId: number // 客户Id +} + +// 工作简报客户 API +export const BriefWorkCustomerApi = { + // 查询工作简报客户分页 + getBriefWorkCustomerPage: async (params: any) => { + return await request.get({ url: `/tts/brief-work-customer/page`, params }) + }, + + // 查询工作简报客户详情 + getBriefWorkCustomer: async (id: number) => { + return await request.get({ url: `/tts/brief-work-customer/get?id=` + id }) + }, + + // 新增工作简报客户 + createBriefWorkCustomer: async (data: BriefWorkCustomerVO) => { + return await request.post({ url: `/tts/brief-work-customer/create`, data }) + }, + + // 修改工作简报客户 + updateBriefWorkCustomer: async (data: BriefWorkCustomerVO) => { + return await request.put({ url: `/tts/brief-work-customer/update`, data }) + }, + + // 删除工作简报客户 + deleteBriefWorkCustomer: async (id: number) => { + return await request.delete({ url: `/tts/brief-work-customer/delete?id=` + id }) + }, + + // 导出工作简报客户 Excel + exportBriefWorkCustomer: async (params) => { + return await request.download({ url: `/tts/brief-work-customer/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/online/index.ts b/src/api/task/online/index.ts new file mode 100644 index 000000000..924cb08a7 --- /dev/null +++ b/src/api/task/online/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +// 上线申请 VO +export interface OnlineApplicationVO { + id: number // 唯一主键 + projectName: string // 产品名称 + projectType: number // 项目类型 + deptId: number // 申请部门 + userId: number // 申请人 + testCompletionDate: Date // 测试完成日期 + onlineDate: Date // 申请上线日期 + externalSystem: string // 上线系统是否涉及第三方系统(如:是/否) + precautions: string // 上线注意事项 + emergencyManagement: string // 失败应急处理 + applicantSign: string // 申请人签字 + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 +} + +// 上线申请 API +export const OnlineApplicationApi = { + // 查询上线申请分页 + getOnlineApplicationPage: async (params: any) => { + return await request.get({ url: `/tts/online-application/page`, params }) + }, + + // 查询上线申请详情 + getOnlineApplication: async (id: number) => { + return await request.get({ url: `/tts/online-application/get?id=` + id }) + }, + + // 新增上线申请 + createOnlineApplication: async (data: OnlineApplicationVO) => { + return await request.post({ url: `/tts/online-application/create`, data }) + }, + + // 修改上线申请 + updateOnlineApplication: async (data: OnlineApplicationVO) => { + return await request.put({ url: `/tts/online-application/update`, data }) + }, + + // 删除上线申请 + deleteOnlineApplication: async (id: number) => { + return await request.delete({ url: `/tts/online-application/delete?id=` + id }) + }, + + // 导出上线申请 Excel + exportOnlineApplication: async (params) => { + return await request.download({ url: `/tts/online-application/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/onlineModule/index.ts b/src/api/task/onlineModule/index.ts new file mode 100644 index 000000000..1a96851fd --- /dev/null +++ b/src/api/task/onlineModule/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +// 上线模块信息 VO +export interface OnlineModuleInfoVO { + id: number // 唯一主键 + onlineApplicationId: number // 上线申请ID + involvingModule: string // 涉及模块 + version: string // 版本 + moduleDescription: string // 模块说明 +} + +// 上线模块信息 API +export const OnlineModuleInfoApi = { + // 查询上线模块信息分页 + getOnlineModuleInfoPage: async (params: any) => { + return await request.get({ url: `/tts/online-module-info/page`, params }) + }, + + // 查询上线模块信息详情 + getOnlineModuleInfo: async (id: number) => { + return await request.get({ url: `/tts/online-module-info/get?id=` + id }) + }, + + // 新增上线模块信息 + createOnlineModuleInfo: async (data: OnlineModuleInfoVO) => { + return await request.post({ url: `/tts/online-module-info/create`, data }) + }, + + // 修改上线模块信息 + updateOnlineModuleInfo: async (data: OnlineModuleInfoVO) => { + return await request.put({ url: `/tts/online-module-info/update`, data }) + }, + + // 删除上线模块信息 + deleteOnlineModuleInfo: async (id: number) => { + return await request.delete({ url: `/tts/online-module-info/delete?id=` + id }) + }, + + // 导出上线模块信息 Excel + exportOnlineModuleInfo: async (params) => { + return await request.download({ url: `/tts/online-module-info/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/project/index.ts b/src/api/task/project/index.ts new file mode 100644 index 000000000..9cfc3ffd0 --- /dev/null +++ b/src/api/task/project/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +// 项目管理 VO +export interface ProjectVO { + id: number // 唯一主键 + projectCode: string // 项目编号 + name: string // 项目名称 + projectLevel: number // 项目级别,字典值:简单、一般、中等、困难、比较困难 + projectType: number // 项目类型,字典值 + userId: number // 项目负责人ID + startDate: Date // 项目开始日期 + endDate: Date // 项目结束日期 + attachment: string // 项目附件 + bonusEvaluation: boolean // 立项奖金评估,1: 是,2: 否 + bonusAmount: number // 立项奖金金额 + bonusIssueDate: Date // 奖金发放日期 + background: string // 项目背景 + introduction: string // 项目简介 + expectation: string // 项目预期成果 + progress: number // 项目进度 + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 +} + +// 项目管理 API +export const ProjectApi = { + // 查询项目管理分页 + getProjectPage: async (params: any) => { + return await request.get({ url: `/tts/project/page`, params }) + }, + + // 查询项目管理详情 + getProject: async (id: number) => { + return await request.get({ url: `/tts/project/get?id=` + id }) + }, + + // 新增项目管理 + createProject: async (data: ProjectVO) => { + return await request.post({ url: `/tts/project/create`, data }) + }, + + // 修改项目管理 + updateProject: async (data: ProjectVO) => { + return await request.put({ url: `/tts/project/update`, data }) + }, + + // 删除项目管理 + deleteProject: async (id: number) => { + return await request.delete({ url: `/tts/project/delete?id=` + id }) + }, + + // 导出项目管理 Excel + exportProject: async (params) => { + return await request.download({ url: `/tts/project/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/task/task/index.ts b/src/api/task/task/index.ts new file mode 100644 index 000000000..00b7a8fdb --- /dev/null +++ b/src/api/task/task/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +// 任务 VO +export interface ProjectTaskVO { + id: number // 唯一主键 + taskName: string // 任务名称 + userId: number // 任务负责人 + taskLevel: number // 任务优先级 + startDate: Date // 开始日期 + endDate: Date // 截止日期 + attachment: string // 任务附件 + taskDescribe: string // 任务描述 + taskProgress: number // 任务进度 + projectId: number // 项目Id + taskState: number // 任务状态 + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 +} + +// 任务 API +export const ProjectTaskApi = { + // 查询任务分页 + getProjectTaskPage: async (params: any) => { + return await request.get({ url: `/tts/project-task/page`, params }) + }, + + // 查询任务详情 + getProjectTask: async (id: number) => { + return await request.get({ url: `/tts/project-task/get?id=` + id }) + }, + + // 新增任务 + createProjectTask: async (data: ProjectTaskVO) => { + return await request.post({ url: `/tts/project-task/create`, data }) + }, + + // 修改任务 + updateProjectTask: async (data: ProjectTaskVO) => { + return await request.put({ url: `/tts/project-task/update`, data }) + }, + + // 删除任务 + deleteProjectTask: async (id: number) => { + return await request.delete({ url: `/tts/project-task/delete?id=` + id }) + }, + + // 导出任务 Excel + exportProjectTask: async (params) => { + return await request.download({ url: `/tts/project-task/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/components/IFrame/src/preview.vue b/src/components/IFrame/src/preview.vue new file mode 100644 index 000000000..faad24718 --- /dev/null +++ b/src/components/IFrame/src/preview.vue @@ -0,0 +1,20 @@ +