diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java index 6c4ee57..95101e9 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java @@ -166,6 +166,11 @@ public class ProjectController extends JeecgController //('财政主管理部门待审核', '9'); //('财政主管理部门审核通过', '10'); + //申请人数据 + if ("shenbaoren_role".equals(loginUser.getRoleCode())) { + queryWrapper.eq("create_by", loginUser.getUsername()); + } + //申请单位数据 if ("faren_admin".equals(loginUser.getRoleCode())) { queryWrapper.eq("sys_org_code", loginUser.getOrgCode()); @@ -187,6 +192,133 @@ public class ProjectController extends JeecgController return Result.OK(pageList); } + + @ApiOperation(value = "项目立项-分页列表查询", notes = "项目表-项目立项") + @GetMapping(value = "/list4LiXiang") +// @PermissionData(pageComponent = "projectApplication/productAudit/project4AuditList") + public Result> list4LiXiang(Project project, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('科技主管部门待提交(区/县管理员)', '1'); + + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + //('财政主管理部门待审核', '9'); + //('财政主管理部门审核通过', '10'); + + // 11 已立项 + // 12 已验收 + //13 已结项 + + //财政管理员看到要立项的数据 + if ("caizheng_admin".equals(loginUser.getRoleCode())) { + queryWrapper.in("budget_status", 10,11); + }else { + queryWrapper.in("project_status", 11); + } + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + @ApiOperation(value = "项目验收-分页列表查询", notes = "项目表-项目验收") + @GetMapping(value = "/list4YanShou") +// @PermissionData(pageComponent = "projectApplication/productAudit/project4AuditList") + public Result> list4YanShou(Project project, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + + //('不受理', '3'); + //('已受理', '4'); + //('申请人待提交', '5'); + //('申请单位待提交', '6'); + //('科技主管部门待提交(区/县管理员)', '1'); + + //('市科技局待提交', '7'); + //('市科技局已提交', '8'); + //('财政主管理部门待审核', '9'); + //('财政主管理部门审核通过', '10'); + + // 11 已立项 + // 12 已验收 + //13 已结项 + + //财政管理可以看到要验收的数据 + if ("caizheng_admin".equals(loginUser.getRoleCode())) { + queryWrapper.in("project_status", 11,12); + }else { + queryWrapper.in("project_status", 12); + } + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + + @ApiOperation(value = "项目结项-分页列表查询", notes = "项目表-项目结项") + @GetMapping(value = "/list4JieXiang") +// @PermissionData(pageComponent = "projectApplication/productAudit/project4AuditList") + public Result> list4JieXiang(Project project, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + + // 11 已立项 + // 12 已验收 + //13 已结项 + + //财政管理可以看到要验收的数据 + if ("caizheng_admin".equals(loginUser.getRoleCode())) { + queryWrapper.in("project_status", 12,13); + }else { + queryWrapper.in("project_status", 13); + } + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + + @ApiOperation(value = "项目表-更新状态", notes = "项目表-更新状态") + @PostMapping(value = "/updateStatus") + public Result updateStatus(@RequestBody Project param, HttpServletRequest req) { + projectService.updateById(param); + return Result.OK("操作成功"); + } + @ApiOperation(value = "项目表-根据id查询", notes = "项目表-根据id查询") @GetMapping(value = "/getById") public Result getById(Project param, HttpServletRequest req) { diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.api.ts b/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.api.ts new file mode 100644 index 0000000..4cebff9 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.api.ts @@ -0,0 +1,119 @@ +import {defHttp} from '@/utils/http/axios'; +import {useMessage} from "@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + list4Audit = '/project/project/list4Audit', + list4LiXiang = '/project/project/list4LiXiang', + list4jieXiang = '/project/project/list4JieXiang', + projectType = '/projectType/getProjectTypeList', + departDtoInfo = '/project/project/getDepartDtoInfo', + save = '/project/project/add', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + submitOne = '/project/project/submitApply', + updateStatus = '/project/project/updateStatus', + rollbackOne = '/project/project/rollbackProject', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', +} + +export const getDepartDtoByProjectId = (params) => + defHttp.get({url: Api.departDtoInfo, params}); + +export const list4jieXiang = (params) => + defHttp.get({url: Api.list4jieXiang, params}); + + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + + +export const list4Audit = (params) => + defHttp.get({url: Api.list4Audit, params}); + + +export const list4LiXiang = (params) => + defHttp.get({url: Api.list4LiXiang, params}); + + +export const getProjectTypeList = (params) => + defHttp.get({url: Api.projectType, params}); + + +export const getDepartBaseInfo = (params) => + defHttp.get({url: Api.departBaseInfo, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const submitOne = (params, handleSuccess) => { + return defHttp.post({url: Api.submitOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const updateStatus = (params, handleSuccess) => { + return defHttp.post({url: Api.updateStatus, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const rollbackOne = (params, handleSuccess) => { + return defHttp.post({url: Api.rollbackOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + + +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ + url: Api.deleteBatch, + data: params + }, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.data.ts b/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.data.ts new file mode 100644 index 0000000..0902e47 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/Project.data.ts @@ -0,0 +1,421 @@ +import {BasicColumn, FormSchema} from '@/components/Table'; +import {render} from '@/utils/common/renderUtils'; +import { useUserStore } from '@/store/modules/user'; +import {computed, unref, onMounted, nextTick, ref, onBeforeMount} from 'vue'; +import {useTimeoutFn} from "@/hooks/core/useTimeout"; +import step from "@/views/demo/page/form/step/index.vue"; +import {getMenus} from "@/router/menus"; +import {cloneDeep} from "lodash-es"; +import {forEach} from "@/utils/helper/treeHelper"; + + +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '项目名称', + align: "center", + dataIndex: 'projectName' + }, + { + title: '项目类别', + align: "center", + // dataIndex: 'projectTypeid_dictText' + dataIndex: 'projectTypeid_dictText' + }, + { + title: '申请单位', + align: "center", + dataIndex: 'sysOrgCode_dictText' + }, + { + title: '负责人', + align: "center", + dataIndex: 'projectCharger_dictText' + }, + { + title: '项目书状态', + align: "center", + dataIndex: 'projectStatus_dictText' + }, + { + title: '预算书状态', + align: "center", + dataIndex: 'budgetStatus_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "所属部门", + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "负责人", + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "项目名称", + field: "projectName", + component: 'Input', //TODO 范围查询 + //colProps: {span: 6}, + }, + { + label: "项目领域", + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain" + }, + //colProps: {span: 6}, + }, + { + label: "项目类别", + field: 'projectTypeid', + component: 'JDictSelectTag', + componentProps: { + // dictCode: "sys_user,realname,id,username!='admin' order by create_time", + dictCode: 'project_type,type_name,id,status ="1" order by create_time desc ', + }, + }, + { + label: "项目书状态", + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + //colProps: {span: 6}, + }, + /*{ + label: "预算书状态", + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + //colProps: {span: 6}, + },*/ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '所属部门', + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.orgCode, + + }, + { + label: '负责人', + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.username, + }, + { + label: '项目类别', + field: 'projectTypeid', + component: 'Input', + dynamicDisabled: true + }, + { + label: '批次', + field: 'batchNo', + defaultValue: "1", + component: 'Input', + dynamicDisabled: true + }, + { + label: '项目名称', + field: 'projectName', + component: 'Input', + dynamicRules: ({model, schema}) => { + return [ + {required: true, message: '请输入项目名称!'}, + ]; + }, + }, + { + label: '项目领域', + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain", + type: "radio" + }, + }, + { + label: '新兴产业', + field: 'emergingIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "emerging_industry", + type: "radio" + }, + }, + { + label: '传统产业', + field: 'traditionalIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "traditional_industry", + type: "radio" + }, + }, + { + label: '技术来源', + field: 'technicalSource', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_source", + type: "radio" + }, + }, + { + label: '技术水平', + field: 'technicalLevel', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_level", + type: "radio" + }, + }, + { + label: '预期主要成果形式', + field: 'resultForm', + component: 'JCheckbox', + componentProps: { + dictCode: "result_form" + }, + }, + { + label: '经费投入(万元)', + field: 'fundInput', + component: 'InputNumber', + }, + { + label: '申请省财政拨款(万元)', + field: 'applyFund', + component: 'InputNumber', + }, + { + label: '所属实验室&研究中心', + field: 'laboratory', + component: 'Input', + }, + { + label: '地方投入(万元)', + field: 'localInput', + component: 'InputNumber', + }, + { + label: '银行贷款(万元)', + field: 'bankLoan', + component: 'InputNumber', + }, + { + label: '自筹(万元)', + field: 'selfRaise', + component: 'InputNumber', + }, + { + label: '项目开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '项目结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '年生产能力(万元)', + field: 'yearlyCapacity', + component: 'InputNumber', + }, + { + label: '就业人数', + field: 'employmentFigure', + component: 'Input', + }, + { + label: '年销售收入(万元)', + field: 'annualSalesRevenue', + component: 'InputNumber', + }, + { + label: '年出口创汇(万元)', + field: 'annualExportEarnings', + component: 'InputNumber', + }, + { + label: '年纳税总额(万元)', + field: 'totalAnnualTaxPayment', + component: 'InputNumber', + }, + { + label: '年净利润(万元)', + field: 'annualProfit', + component: 'InputNumber', + }, + { + label: '申请专利数', + field: 'applyPatentNumber', + component: 'Input', + }, + { + label: '发明专利数', + field: 'invevtionPatentNumber', + component: 'Input', + }, + { + label: '授权专利数', + field: 'creditPatentNumber', + component: 'Input', + }, + { + label: '项目书状态', + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + defaultValue: "5", //申请人待提交 + // dynamicDisabled: true, + ifShow: false, + }, + { + label: '预算书状态', + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + defaultValue: "10", //默认 预算书不存在 + // dynamicDisabled: true, + ifShow: false, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + sysOrgCode: {title: '所属部门', order: 0, view: 'sel_depart', type: 'string',}, + projectName: {title: '项目名称', order: 1, view: 'text', type: 'string',}, + projectDomain: { + title: '项目领域', + order: 2, + view: 'radio', + type: 'string', + dictCode: 'project_domain', + }, + emergingIndustry: { + title: '新兴产业', + order: 3, + view: 'radio', + type: 'string', + dictCode: 'emerging_industry', + }, + traditionalIndustry: { + title: '传统产业', + order: 4, + view: 'radio', + type: 'string', + dictCode: 'traditional_industry', + }, + technicalSource: { + title: '技术来源', + order: 5, + view: 'radio', + type: 'string', + dictCode: 'technical_source', + }, + technicalLevel: { + title: '技术水平', + order: 6, + view: 'radio', + type: 'string', + dictCode: 'technical_level', + }, + resultForm: { + title: '预期主要成果形式', + order: 7, + view: 'checkbox', + type: 'string', + dictCode: 'result_form', + }, + fundInput: {title: '经费投入(万元)', order: 8, view: 'number', type: 'number',}, + applyFund: {title: '申请省财政拨款(万元)', order: 9, view: 'number', type: 'number',}, + /* isAcceptInitProject: { + title: '如无经费支持是否接受指导项目立项', + order: 10, + view: 'switch', + type: 'string', + },*/ + laboratory: {title: '所属实验室、研究中心', order: 11, view: 'text', type: 'string',}, + localInput: {title: '地方投入', order: 12, view: 'number', type: 'number',}, + bankLoan: {title: '银行贷款', order: 13, view: 'number', type: 'number',}, + selfRaise: {title: '自筹', order: 14, view: 'number', type: 'number',}, + startTime: {title: '项目开始时间', order: 15, view: 'date', type: 'string',}, + endTime: {title: '项目结束时间', order: 16, view: 'date', type: 'string',}, + yearlyCapacity: {title: '年生产能力', order: 17, view: 'number', type: 'number',}, + employmentFigure: {title: '就业人数', order: 18, view: 'text', type: 'string',}, + annualSalesRevenue: {title: '年销售收入', order: 19, view: 'number', type: 'number',}, + annualExportEarnings: {title: '年出口创汇', order: 20, view: 'number', type: 'number',}, + totalAnnualTaxPayment: {title: '年纳税总额', order: 21, view: 'number', type: 'number',}, + annualProfit: {title: '年净利润', order: 22, view: 'number', type: 'number',}, + applyPatentNumber: {title: '申请专利数', order: 23, view: 'text', type: 'string',}, + invevtionPatentNumber: {title: '发明专利数', order: 24, view: 'text', type: 'string',}, + creditPatentNumber: {title: '授权专利数', order: 25, view: 'text', type: 'string',}, + projectTypeid: {title: '项目类别', order: 26, view: 'text', type: 'string',}, + batchNo: {title: '批次', order: 27, view: 'text', type: 'string',}, + projectStatus: { + title: '项目书状态', + order: 28, + view: 'list', + type: 'string', + dictCode: 'project_status', + }, + budgetStatus: { + title: '预算书状态', + order: 29, + view: 'list', + type: 'string', + dictCode: 'budget_status', + }, + projectCharger: {title: '负责人', order: 30, view: 'sel_user', type: 'string',}, +}; + +// (function (){ +// alert('1111111'); +// +// })(); + +/** + * 流程表单调用这个方法获取formSchema + * @param param + */ +export function getBpmFormSchema(_formData): FormSchema[] { + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} + diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectForm.vue b/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectForm.vue new file mode 100644 index 0000000..02bcb0c --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectForm.vue @@ -0,0 +1,70 @@ + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectModal.vue b/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectModal.vue new file mode 100644 index 0000000..68c1232 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/components/ProjectModal.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/jiexiangList.vue b/jeecgboot-vue3/src/views/projectApplication/jiexiang/jiexiangList.vue new file mode 100644 index 0000000..547c5f9 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/jiexiangList.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/jiexiang/jixiang4CaiZhengList.vue b/jeecgboot-vue3/src/views/projectApplication/jiexiang/jixiang4CaiZhengList.vue new file mode 100644 index 0000000..ede7fa6 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/jiexiang/jixiang4CaiZhengList.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.api.ts b/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.api.ts new file mode 100644 index 0000000..be5f85f --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.api.ts @@ -0,0 +1,115 @@ +import {defHttp} from '@/utils/http/axios'; +import {useMessage} from "@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + list4Audit = '/project/project/list4Audit', + list4LiXiang = '/project/project/list4LiXiang', + projectType = '/projectType/getProjectTypeList', + departDtoInfo = '/project/project/getDepartDtoInfo', + save = '/project/project/add', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + submitOne = '/project/project/submitApply', + updateStatus = '/project/project/updateStatus', + rollbackOne = '/project/project/rollbackProject', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', +} + +export const getDepartDtoByProjectId = (params) => + defHttp.get({url: Api.departDtoInfo, params}); + + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + + +export const list4Audit = (params) => + defHttp.get({url: Api.list4Audit, params}); + + +export const list4LiXiang = (params) => + defHttp.get({url: Api.list4LiXiang, params}); + + +export const getProjectTypeList = (params) => + defHttp.get({url: Api.projectType, params}); + + +export const getDepartBaseInfo = (params) => + defHttp.get({url: Api.departBaseInfo, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const submitOne = (params, handleSuccess) => { + return defHttp.post({url: Api.submitOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const updateStatus = (params, handleSuccess) => { + return defHttp.post({url: Api.updateStatus, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const rollbackOne = (params, handleSuccess) => { + return defHttp.post({url: Api.rollbackOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + + +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ + url: Api.deleteBatch, + data: params + }, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.data.ts b/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.data.ts new file mode 100644 index 0000000..0902e47 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/Project.data.ts @@ -0,0 +1,421 @@ +import {BasicColumn, FormSchema} from '@/components/Table'; +import {render} from '@/utils/common/renderUtils'; +import { useUserStore } from '@/store/modules/user'; +import {computed, unref, onMounted, nextTick, ref, onBeforeMount} from 'vue'; +import {useTimeoutFn} from "@/hooks/core/useTimeout"; +import step from "@/views/demo/page/form/step/index.vue"; +import {getMenus} from "@/router/menus"; +import {cloneDeep} from "lodash-es"; +import {forEach} from "@/utils/helper/treeHelper"; + + +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '项目名称', + align: "center", + dataIndex: 'projectName' + }, + { + title: '项目类别', + align: "center", + // dataIndex: 'projectTypeid_dictText' + dataIndex: 'projectTypeid_dictText' + }, + { + title: '申请单位', + align: "center", + dataIndex: 'sysOrgCode_dictText' + }, + { + title: '负责人', + align: "center", + dataIndex: 'projectCharger_dictText' + }, + { + title: '项目书状态', + align: "center", + dataIndex: 'projectStatus_dictText' + }, + { + title: '预算书状态', + align: "center", + dataIndex: 'budgetStatus_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "所属部门", + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "负责人", + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "项目名称", + field: "projectName", + component: 'Input', //TODO 范围查询 + //colProps: {span: 6}, + }, + { + label: "项目领域", + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain" + }, + //colProps: {span: 6}, + }, + { + label: "项目类别", + field: 'projectTypeid', + component: 'JDictSelectTag', + componentProps: { + // dictCode: "sys_user,realname,id,username!='admin' order by create_time", + dictCode: 'project_type,type_name,id,status ="1" order by create_time desc ', + }, + }, + { + label: "项目书状态", + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + //colProps: {span: 6}, + }, + /*{ + label: "预算书状态", + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + //colProps: {span: 6}, + },*/ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '所属部门', + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.orgCode, + + }, + { + label: '负责人', + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.username, + }, + { + label: '项目类别', + field: 'projectTypeid', + component: 'Input', + dynamicDisabled: true + }, + { + label: '批次', + field: 'batchNo', + defaultValue: "1", + component: 'Input', + dynamicDisabled: true + }, + { + label: '项目名称', + field: 'projectName', + component: 'Input', + dynamicRules: ({model, schema}) => { + return [ + {required: true, message: '请输入项目名称!'}, + ]; + }, + }, + { + label: '项目领域', + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain", + type: "radio" + }, + }, + { + label: '新兴产业', + field: 'emergingIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "emerging_industry", + type: "radio" + }, + }, + { + label: '传统产业', + field: 'traditionalIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "traditional_industry", + type: "radio" + }, + }, + { + label: '技术来源', + field: 'technicalSource', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_source", + type: "radio" + }, + }, + { + label: '技术水平', + field: 'technicalLevel', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_level", + type: "radio" + }, + }, + { + label: '预期主要成果形式', + field: 'resultForm', + component: 'JCheckbox', + componentProps: { + dictCode: "result_form" + }, + }, + { + label: '经费投入(万元)', + field: 'fundInput', + component: 'InputNumber', + }, + { + label: '申请省财政拨款(万元)', + field: 'applyFund', + component: 'InputNumber', + }, + { + label: '所属实验室&研究中心', + field: 'laboratory', + component: 'Input', + }, + { + label: '地方投入(万元)', + field: 'localInput', + component: 'InputNumber', + }, + { + label: '银行贷款(万元)', + field: 'bankLoan', + component: 'InputNumber', + }, + { + label: '自筹(万元)', + field: 'selfRaise', + component: 'InputNumber', + }, + { + label: '项目开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '项目结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '年生产能力(万元)', + field: 'yearlyCapacity', + component: 'InputNumber', + }, + { + label: '就业人数', + field: 'employmentFigure', + component: 'Input', + }, + { + label: '年销售收入(万元)', + field: 'annualSalesRevenue', + component: 'InputNumber', + }, + { + label: '年出口创汇(万元)', + field: 'annualExportEarnings', + component: 'InputNumber', + }, + { + label: '年纳税总额(万元)', + field: 'totalAnnualTaxPayment', + component: 'InputNumber', + }, + { + label: '年净利润(万元)', + field: 'annualProfit', + component: 'InputNumber', + }, + { + label: '申请专利数', + field: 'applyPatentNumber', + component: 'Input', + }, + { + label: '发明专利数', + field: 'invevtionPatentNumber', + component: 'Input', + }, + { + label: '授权专利数', + field: 'creditPatentNumber', + component: 'Input', + }, + { + label: '项目书状态', + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + defaultValue: "5", //申请人待提交 + // dynamicDisabled: true, + ifShow: false, + }, + { + label: '预算书状态', + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + defaultValue: "10", //默认 预算书不存在 + // dynamicDisabled: true, + ifShow: false, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + sysOrgCode: {title: '所属部门', order: 0, view: 'sel_depart', type: 'string',}, + projectName: {title: '项目名称', order: 1, view: 'text', type: 'string',}, + projectDomain: { + title: '项目领域', + order: 2, + view: 'radio', + type: 'string', + dictCode: 'project_domain', + }, + emergingIndustry: { + title: '新兴产业', + order: 3, + view: 'radio', + type: 'string', + dictCode: 'emerging_industry', + }, + traditionalIndustry: { + title: '传统产业', + order: 4, + view: 'radio', + type: 'string', + dictCode: 'traditional_industry', + }, + technicalSource: { + title: '技术来源', + order: 5, + view: 'radio', + type: 'string', + dictCode: 'technical_source', + }, + technicalLevel: { + title: '技术水平', + order: 6, + view: 'radio', + type: 'string', + dictCode: 'technical_level', + }, + resultForm: { + title: '预期主要成果形式', + order: 7, + view: 'checkbox', + type: 'string', + dictCode: 'result_form', + }, + fundInput: {title: '经费投入(万元)', order: 8, view: 'number', type: 'number',}, + applyFund: {title: '申请省财政拨款(万元)', order: 9, view: 'number', type: 'number',}, + /* isAcceptInitProject: { + title: '如无经费支持是否接受指导项目立项', + order: 10, + view: 'switch', + type: 'string', + },*/ + laboratory: {title: '所属实验室、研究中心', order: 11, view: 'text', type: 'string',}, + localInput: {title: '地方投入', order: 12, view: 'number', type: 'number',}, + bankLoan: {title: '银行贷款', order: 13, view: 'number', type: 'number',}, + selfRaise: {title: '自筹', order: 14, view: 'number', type: 'number',}, + startTime: {title: '项目开始时间', order: 15, view: 'date', type: 'string',}, + endTime: {title: '项目结束时间', order: 16, view: 'date', type: 'string',}, + yearlyCapacity: {title: '年生产能力', order: 17, view: 'number', type: 'number',}, + employmentFigure: {title: '就业人数', order: 18, view: 'text', type: 'string',}, + annualSalesRevenue: {title: '年销售收入', order: 19, view: 'number', type: 'number',}, + annualExportEarnings: {title: '年出口创汇', order: 20, view: 'number', type: 'number',}, + totalAnnualTaxPayment: {title: '年纳税总额', order: 21, view: 'number', type: 'number',}, + annualProfit: {title: '年净利润', order: 22, view: 'number', type: 'number',}, + applyPatentNumber: {title: '申请专利数', order: 23, view: 'text', type: 'string',}, + invevtionPatentNumber: {title: '发明专利数', order: 24, view: 'text', type: 'string',}, + creditPatentNumber: {title: '授权专利数', order: 25, view: 'text', type: 'string',}, + projectTypeid: {title: '项目类别', order: 26, view: 'text', type: 'string',}, + batchNo: {title: '批次', order: 27, view: 'text', type: 'string',}, + projectStatus: { + title: '项目书状态', + order: 28, + view: 'list', + type: 'string', + dictCode: 'project_status', + }, + budgetStatus: { + title: '预算书状态', + order: 29, + view: 'list', + type: 'string', + dictCode: 'budget_status', + }, + projectCharger: {title: '负责人', order: 30, view: 'sel_user', type: 'string',}, +}; + +// (function (){ +// alert('1111111'); +// +// })(); + +/** + * 流程表单调用这个方法获取formSchema + * @param param + */ +export function getBpmFormSchema(_formData): FormSchema[] { + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} + diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectForm.vue b/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectForm.vue new file mode 100644 index 0000000..02bcb0c --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectForm.vue @@ -0,0 +1,70 @@ + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectModal.vue b/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectModal.vue new file mode 100644 index 0000000..68c1232 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/components/ProjectModal.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiang4CaiZhengList.vue b/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiang4CaiZhengList.vue new file mode 100644 index 0000000..c3afdc4 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiang4CaiZhengList.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiangList.vue b/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiangList.vue new file mode 100644 index 0000000..7d4f5ad --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/lixiang/lixiangList.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.api.ts b/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.api.ts new file mode 100644 index 0000000..cc2f0ae --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.api.ts @@ -0,0 +1,119 @@ +import {defHttp} from '@/utils/http/axios'; +import {useMessage} from "@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + list4Audit = '/project/project/list4Audit', + list4LiXiang = '/project/project/list4LiXiang', + list4YanShou = '/project/project/list4YanShou', + projectType = '/projectType/getProjectTypeList', + departDtoInfo = '/project/project/getDepartDtoInfo', + save = '/project/project/add', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + submitOne = '/project/project/submitApply', + updateStatus = '/project/project/updateStatus', + rollbackOne = '/project/project/rollbackProject', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', +} + +export const getDepartDtoByProjectId = (params) => + defHttp.get({url: Api.departDtoInfo, params}); + +export const list4YanShou = (params) => + defHttp.get({url: Api.list4YanShou, params}); + + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + + +export const list4Audit = (params) => + defHttp.get({url: Api.list4Audit, params}); + + +export const list4LiXiang = (params) => + defHttp.get({url: Api.list4LiXiang, params}); + + +export const getProjectTypeList = (params) => + defHttp.get({url: Api.projectType, params}); + + +export const getDepartBaseInfo = (params) => + defHttp.get({url: Api.departBaseInfo, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const submitOne = (params, handleSuccess) => { + return defHttp.post({url: Api.submitOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const updateStatus = (params, handleSuccess) => { + return defHttp.post({url: Api.updateStatus, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +export const rollbackOne = (params, handleSuccess) => { + return defHttp.post({url: Api.rollbackOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + + +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ + url: Api.deleteBatch, + data: params + }, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.data.ts b/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.data.ts new file mode 100644 index 0000000..0902e47 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/Project.data.ts @@ -0,0 +1,421 @@ +import {BasicColumn, FormSchema} from '@/components/Table'; +import {render} from '@/utils/common/renderUtils'; +import { useUserStore } from '@/store/modules/user'; +import {computed, unref, onMounted, nextTick, ref, onBeforeMount} from 'vue'; +import {useTimeoutFn} from "@/hooks/core/useTimeout"; +import step from "@/views/demo/page/form/step/index.vue"; +import {getMenus} from "@/router/menus"; +import {cloneDeep} from "lodash-es"; +import {forEach} from "@/utils/helper/treeHelper"; + + +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '项目名称', + align: "center", + dataIndex: 'projectName' + }, + { + title: '项目类别', + align: "center", + // dataIndex: 'projectTypeid_dictText' + dataIndex: 'projectTypeid_dictText' + }, + { + title: '申请单位', + align: "center", + dataIndex: 'sysOrgCode_dictText' + }, + { + title: '负责人', + align: "center", + dataIndex: 'projectCharger_dictText' + }, + { + title: '项目书状态', + align: "center", + dataIndex: 'projectStatus_dictText' + }, + { + title: '预算书状态', + align: "center", + dataIndex: 'budgetStatus_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "所属部门", + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "负责人", + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + //colProps: {span: 6}, + }, + { + label: "项目名称", + field: "projectName", + component: 'Input', //TODO 范围查询 + //colProps: {span: 6}, + }, + { + label: "项目领域", + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain" + }, + //colProps: {span: 6}, + }, + { + label: "项目类别", + field: 'projectTypeid', + component: 'JDictSelectTag', + componentProps: { + // dictCode: "sys_user,realname,id,username!='admin' order by create_time", + dictCode: 'project_type,type_name,id,status ="1" order by create_time desc ', + }, + }, + { + label: "项目书状态", + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + //colProps: {span: 6}, + }, + /*{ + label: "预算书状态", + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + //colProps: {span: 6}, + },*/ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '所属部门', + field: 'sysOrgCode', + component: 'JSelectDept', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.orgCode, + + }, + { + label: '负责人', + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + defaultValue: useUserStore().getUserInfo?.username, + }, + { + label: '项目类别', + field: 'projectTypeid', + component: 'Input', + dynamicDisabled: true + }, + { + label: '批次', + field: 'batchNo', + defaultValue: "1", + component: 'Input', + dynamicDisabled: true + }, + { + label: '项目名称', + field: 'projectName', + component: 'Input', + dynamicRules: ({model, schema}) => { + return [ + {required: true, message: '请输入项目名称!'}, + ]; + }, + }, + { + label: '项目领域', + field: 'projectDomain', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_domain", + type: "radio" + }, + }, + { + label: '新兴产业', + field: 'emergingIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "emerging_industry", + type: "radio" + }, + }, + { + label: '传统产业', + field: 'traditionalIndustry', + component: 'JDictSelectTag', + componentProps: { + dictCode: "traditional_industry", + type: "radio" + }, + }, + { + label: '技术来源', + field: 'technicalSource', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_source", + type: "radio" + }, + }, + { + label: '技术水平', + field: 'technicalLevel', + component: 'JDictSelectTag', + componentProps: { + dictCode: "technical_level", + type: "radio" + }, + }, + { + label: '预期主要成果形式', + field: 'resultForm', + component: 'JCheckbox', + componentProps: { + dictCode: "result_form" + }, + }, + { + label: '经费投入(万元)', + field: 'fundInput', + component: 'InputNumber', + }, + { + label: '申请省财政拨款(万元)', + field: 'applyFund', + component: 'InputNumber', + }, + { + label: '所属实验室&研究中心', + field: 'laboratory', + component: 'Input', + }, + { + label: '地方投入(万元)', + field: 'localInput', + component: 'InputNumber', + }, + { + label: '银行贷款(万元)', + field: 'bankLoan', + component: 'InputNumber', + }, + { + label: '自筹(万元)', + field: 'selfRaise', + component: 'InputNumber', + }, + { + label: '项目开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '项目结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '年生产能力(万元)', + field: 'yearlyCapacity', + component: 'InputNumber', + }, + { + label: '就业人数', + field: 'employmentFigure', + component: 'Input', + }, + { + label: '年销售收入(万元)', + field: 'annualSalesRevenue', + component: 'InputNumber', + }, + { + label: '年出口创汇(万元)', + field: 'annualExportEarnings', + component: 'InputNumber', + }, + { + label: '年纳税总额(万元)', + field: 'totalAnnualTaxPayment', + component: 'InputNumber', + }, + { + label: '年净利润(万元)', + field: 'annualProfit', + component: 'InputNumber', + }, + { + label: '申请专利数', + field: 'applyPatentNumber', + component: 'Input', + }, + { + label: '发明专利数', + field: 'invevtionPatentNumber', + component: 'Input', + }, + { + label: '授权专利数', + field: 'creditPatentNumber', + component: 'Input', + }, + { + label: '项目书状态', + field: 'projectStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "project_status" + }, + defaultValue: "5", //申请人待提交 + // dynamicDisabled: true, + ifShow: false, + }, + { + label: '预算书状态', + field: 'budgetStatus', + component: 'JDictSelectTag', + componentProps: { + dictCode: "budget_status" + }, + defaultValue: "10", //默认 预算书不存在 + // dynamicDisabled: true, + ifShow: false, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + sysOrgCode: {title: '所属部门', order: 0, view: 'sel_depart', type: 'string',}, + projectName: {title: '项目名称', order: 1, view: 'text', type: 'string',}, + projectDomain: { + title: '项目领域', + order: 2, + view: 'radio', + type: 'string', + dictCode: 'project_domain', + }, + emergingIndustry: { + title: '新兴产业', + order: 3, + view: 'radio', + type: 'string', + dictCode: 'emerging_industry', + }, + traditionalIndustry: { + title: '传统产业', + order: 4, + view: 'radio', + type: 'string', + dictCode: 'traditional_industry', + }, + technicalSource: { + title: '技术来源', + order: 5, + view: 'radio', + type: 'string', + dictCode: 'technical_source', + }, + technicalLevel: { + title: '技术水平', + order: 6, + view: 'radio', + type: 'string', + dictCode: 'technical_level', + }, + resultForm: { + title: '预期主要成果形式', + order: 7, + view: 'checkbox', + type: 'string', + dictCode: 'result_form', + }, + fundInput: {title: '经费投入(万元)', order: 8, view: 'number', type: 'number',}, + applyFund: {title: '申请省财政拨款(万元)', order: 9, view: 'number', type: 'number',}, + /* isAcceptInitProject: { + title: '如无经费支持是否接受指导项目立项', + order: 10, + view: 'switch', + type: 'string', + },*/ + laboratory: {title: '所属实验室、研究中心', order: 11, view: 'text', type: 'string',}, + localInput: {title: '地方投入', order: 12, view: 'number', type: 'number',}, + bankLoan: {title: '银行贷款', order: 13, view: 'number', type: 'number',}, + selfRaise: {title: '自筹', order: 14, view: 'number', type: 'number',}, + startTime: {title: '项目开始时间', order: 15, view: 'date', type: 'string',}, + endTime: {title: '项目结束时间', order: 16, view: 'date', type: 'string',}, + yearlyCapacity: {title: '年生产能力', order: 17, view: 'number', type: 'number',}, + employmentFigure: {title: '就业人数', order: 18, view: 'text', type: 'string',}, + annualSalesRevenue: {title: '年销售收入', order: 19, view: 'number', type: 'number',}, + annualExportEarnings: {title: '年出口创汇', order: 20, view: 'number', type: 'number',}, + totalAnnualTaxPayment: {title: '年纳税总额', order: 21, view: 'number', type: 'number',}, + annualProfit: {title: '年净利润', order: 22, view: 'number', type: 'number',}, + applyPatentNumber: {title: '申请专利数', order: 23, view: 'text', type: 'string',}, + invevtionPatentNumber: {title: '发明专利数', order: 24, view: 'text', type: 'string',}, + creditPatentNumber: {title: '授权专利数', order: 25, view: 'text', type: 'string',}, + projectTypeid: {title: '项目类别', order: 26, view: 'text', type: 'string',}, + batchNo: {title: '批次', order: 27, view: 'text', type: 'string',}, + projectStatus: { + title: '项目书状态', + order: 28, + view: 'list', + type: 'string', + dictCode: 'project_status', + }, + budgetStatus: { + title: '预算书状态', + order: 29, + view: 'list', + type: 'string', + dictCode: 'budget_status', + }, + projectCharger: {title: '负责人', order: 30, view: 'sel_user', type: 'string',}, +}; + +// (function (){ +// alert('1111111'); +// +// })(); + +/** + * 流程表单调用这个方法获取formSchema + * @param param + */ +export function getBpmFormSchema(_formData): FormSchema[] { + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} + diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectForm.vue b/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectForm.vue new file mode 100644 index 0000000..02bcb0c --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectForm.vue @@ -0,0 +1,70 @@ + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectModal.vue b/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectModal.vue new file mode 100644 index 0000000..68c1232 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/components/ProjectModal.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshou4CaiZhengList.vue b/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshou4CaiZhengList.vue new file mode 100644 index 0000000..0fa6e8d --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshou4CaiZhengList.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshouList.vue b/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshouList.vue new file mode 100644 index 0000000..3fbb03b --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/yanshao/yanshouList.vue @@ -0,0 +1,233 @@ + + + + +