From 4aa6086f449b45afb961f22cf4a738a89289894f Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Thu, 17 Oct 2024 11:42:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=94=B3=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=B7=BB=E5=8A=A0=2010.17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/controller/ProjectController.java | 171 ++++++++ .../modules/demo/project/entity/Project.java | 263 ++++++++++++ .../demo/project/mapper/ProjectMapper.java | 17 + .../demo/project/mapper/xml/ProjectMapper.xml | 5 + .../demo/project/service/IProjectService.java | 14 + .../service/impl/ProjectServiceImpl.java | 19 + .../projectApplication/project/Project.api.ts | 68 +++ .../project/Project.data.ts | 401 ++++++++++++++++++ .../project/ProjectList.vue | 215 ++++++++++ .../project/components/ProjectForm.vue | 70 +++ .../project/components/ProjectModal.vue | 76 ++++ 11 files changed, 1319 insertions(+) create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/ProjectMapper.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/xml/ProjectMapper.xml create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java create mode 100644 jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts create mode 100644 jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts create mode 100644 jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue create mode 100644 jeecgboot-vue3/src/views/projectApplication/project/components/ProjectForm.vue create mode 100644 jeecgboot-vue3/src/views/projectApplication/project/components/ProjectModal.vue 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 new file mode 100644 index 0000000..5487a0f --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.demo.project.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.modules.demo.project.entity.Project; +import org.jeecg.modules.demo.project.service.IProjectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * @Description: 项目表 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Api(tags = "项目表") +@RestController +@RequestMapping("/project/project") +@Slf4j +public class ProjectController extends JeecgController { + @Autowired + private IProjectService projectService; + + /** + * 分页列表查询 + * + * @param project + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "项目表-分页列表查询") + @ApiOperation(value = "项目表-分页列表查询", notes = "项目表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(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); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param project + * @return + */ + @AutoLog(value = "项目表-添加") + @ApiOperation(value = "项目表-添加", notes = "项目表-添加") +// @RequiresPermissions("project:project:add") + @PostMapping(value = "/add") + public Result add(@RequestBody Project project) { + projectService.save(project); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param project + * @return + */ + @AutoLog(value = "项目表-编辑") + @ApiOperation(value = "项目表-编辑", notes = "项目表-编辑") +// @RequiresPermissions("project:project:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody Project project) { + projectService.updateById(project); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "项目表-通过id删除") + @ApiOperation(value = "项目表-通过id删除", notes = "项目表-通过id删除") +// @RequiresPermissions("project:project:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + projectService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "项目表-批量删除") + @ApiOperation(value = "项目表-批量删除", notes = "项目表-批量删除") + @RequiresPermissions("project:project:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.projectService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "项目表-通过id查询") + @ApiOperation(value = "项目表-通过id查询", notes = "项目表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + Project project = projectService.getById(id); + if (project == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(project); + } + + /** + * 导出excel + * + * @param request + * @param project + */ +// @RequiresPermissions("project:project:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, Project project) { + return super.exportXls(request, project, Project.class, "项目表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("project:project:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, Project.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java new file mode 100644 index 0000000..204dfcb --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/entity/Project.java @@ -0,0 +1,263 @@ +package org.jeecg.modules.demo.project.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 项目表 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Data +@TableName("project") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "project对象", description = "项目表") +public class Project implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /** + * 所属部门 + */ + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /** + * 项目名称 + */ + @Excel(name = "项目名称", width = 15) + @ApiModelProperty(value = "项目名称") + private String projectName; + /** + * 项目领域 + */ + @Excel(name = "项目领域", width = 15, dicCode = "project_domain") + @Dict(dicCode = "project_domain") + @ApiModelProperty(value = "项目领域") + private String projectDomain; + /** + * 新兴产业 + */ + @Excel(name = "新兴产业", width = 15, dicCode = "emerging_industry") + @Dict(dicCode = "emerging_industry") + @ApiModelProperty(value = "新兴产业") + private String emergingIndustry; + /** + * 传统产业 + */ + @Excel(name = "传统产业", width = 15, dicCode = "traditional_industry") + @Dict(dicCode = "traditional_industry") + @ApiModelProperty(value = "传统产业") + private String traditionalIndustry; + /** + * 技术来源 + */ + @Excel(name = "技术来源", width = 15, dicCode = "technical_source") + @Dict(dicCode = "technical_source") + @ApiModelProperty(value = "技术来源") + private String technicalSource; + /** + * 技术水平 + */ + @Excel(name = "技术水平", width = 15, dicCode = "technical_level") + @Dict(dicCode = "technical_level") + @ApiModelProperty(value = "技术水平") + private String technicalLevel; + /** + * 预期主要成果形式 + */ + @Excel(name = "预期主要成果形式", width = 15, dicCode = "result_form") + @Dict(dicCode = "result_form") + @ApiModelProperty(value = "预期主要成果形式") + private String resultForm; + /** + * 经费投入(万元) + */ + @Excel(name = "经费投入(万元)", width = 15) + @ApiModelProperty(value = "经费投入(万元)") + private BigDecimal fundInput; + /** + * 申请省财政拨款(万元) + */ + @Excel(name = "申请省财政拨款(万元)", width = 15) + @ApiModelProperty(value = "申请省财政拨款(万元)") + private BigDecimal applyFund; + /** + * 如无经费支持是否接受指导项目立项 + */ + @Excel(name = "如无经费支持是否接受指导项目立项", width = 15, replace = {"是_Y", "否_N"}) + @ApiModelProperty(value = "如无经费支持是否接受指导项目立项") + private String isAcceptInitProject; + /** + * 所属实验室、研究中心 + */ + @Excel(name = "所属实验室、研究中心", width = 15) + @ApiModelProperty(value = "所属实验室、研究中心") + private String laboratory; + /** + * 地方投入 + */ + @Excel(name = "地方投入", width = 15) + @ApiModelProperty(value = "地方投入") + private BigDecimal localInput; + /** + * 银行贷款 + */ + @Excel(name = "银行贷款", width = 15) + @ApiModelProperty(value = "银行贷款") + private BigDecimal bankLoan; + /** + * 自筹 + */ + @Excel(name = "自筹", width = 15) + @ApiModelProperty(value = "自筹") + private BigDecimal selfRaise; + /** + * 项目开始时间 + */ + @Excel(name = "项目开始时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "项目开始时间") + private Date startTime; + /** + * 项目结束时间 + */ + @Excel(name = "项目结束时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "项目结束时间") + private Date endTime; + /** + * 年生产能力 + */ + @Excel(name = "年生产能力", width = 15) + @ApiModelProperty(value = "年生产能力") + private BigDecimal yearlyCapacity; + /** + * 就业人数 + */ + @Excel(name = "就业人数", width = 15) + @ApiModelProperty(value = "就业人数") + private String employmentFigure; + /** + * 年销售收入 + */ + @Excel(name = "年销售收入", width = 15) + @ApiModelProperty(value = "年销售收入") + private BigDecimal annualSalesRevenue; + /** + * 年出口创汇 + */ + @Excel(name = "年出口创汇", width = 15) + @ApiModelProperty(value = "年出口创汇") + private BigDecimal annualExportEarnings; + /** + * 年纳税总额 + */ + @Excel(name = "年纳税总额", width = 15) + @ApiModelProperty(value = "年纳税总额") + private BigDecimal totalAnnualTaxPayment; + /** + * 年净利润 + */ + @Excel(name = "年净利润", width = 15) + @ApiModelProperty(value = "年净利润") + private BigDecimal annualProfit; + /** + * 申请专利数 + */ + @Excel(name = "申请专利数", width = 15) + @ApiModelProperty(value = "申请专利数") + private String applyPatentNumber; + /** + * 发明专利数 + */ + @Excel(name = "发明专利数", width = 15) + @ApiModelProperty(value = "发明专利数") + private String invevtionPatentNumber; + /** + * 授权专利数 + */ + @Excel(name = "授权专利数", width = 15) + @ApiModelProperty(value = "授权专利数") + private String creditPatentNumber; + /** + * 项目类别表id + */ + @Excel(name = "项目类别表id", width = 15) + @ApiModelProperty(value = "项目类别表id") + private String projectTypeid; + /** + * 批次 + */ + @Excel(name = "批次", width = 15) + @ApiModelProperty(value = "批次") + private String batchNo; + /** + * 项目书状态 + */ + @Excel(name = "项目书状态", width = 15, dicCode = "project_status") + @Dict(dicCode = "project_status") + @ApiModelProperty(value = "项目书状态") + private String projectStatus; + /** + * 预算书状态 + */ + @Excel(name = "预算书状态", width = 15, dicCode = "budget_status") + @Dict(dicCode = "budget_status") + @ApiModelProperty(value = "预算书状态") + private String budgetStatus; + /** + * 负责人 + */ + @Excel(name = "负责人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @ApiModelProperty(value = "负责人") + private String projectCharger; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/ProjectMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/ProjectMapper.java new file mode 100644 index 0000000..2874de4 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/ProjectMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.project.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.project.entity.Project; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 项目表 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +public interface ProjectMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/xml/ProjectMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/xml/ProjectMapper.xml new file mode 100644 index 0000000..9699781 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/mapper/xml/ProjectMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java new file mode 100644 index 0000000..c950733 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.project.service; + +import org.jeecg.modules.demo.project.entity.Project; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 项目表 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +public interface IProjectService extends IService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java new file mode 100644 index 0000000..e4be285 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.project.service.impl; + +import org.jeecg.modules.demo.project.entity.Project; +import org.jeecg.modules.demo.project.mapper.ProjectMapper; +import org.jeecg.modules.demo.project.service.IProjectService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 项目表 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Service +public class ProjectServiceImpl extends ServiceImpl implements IProjectService { + +} diff --git a/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts b/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts new file mode 100644 index 0000000..09be436 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/project/Project.api.ts @@ -0,0 +1,68 @@ +import {defHttp} from '/@/utils/http/axios'; +import {useMessage} from "/@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + save = '/project/project/add', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', +} + +/** + * 导出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 deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, 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/project/Project.data.ts b/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts new file mode 100644 index 0000000..6b16e59 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/project/Project.data.ts @@ -0,0 +1,401 @@ +import {BasicColumn, FormSchema} from '/@/components/Table'; +import {render} from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '所属部门', + align: "center", + dataIndex: 'sysOrgCode_dictText' + }, + { + title: '负责人', + align: "center", + dataIndex: 'projectCharger_dictText' + }, + { + title: '项目名称', + align: "center", + dataIndex: 'projectName' + }, + { + title: '项目类别', + align: "center", + dataIndex: 'projectTypeid' + }, + { + 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: {}, + }, + { + label: '负责人', + field: 'projectCharger', + component: 'JSelectUser', + componentProps: {}, + }, + { + label: '项目类别', + field: 'projectTypeid', + component: 'Input', + }, + { + 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',}, +}; + +/** + * 流程表单调用这个方法获取formSchema + * @param param + */ +export function getBpmFormSchema(_formData): FormSchema[] { + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} diff --git a/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue new file mode 100644 index 0000000..1d0f485 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectForm.vue b/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectForm.vue new file mode 100644 index 0000000..656b969 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectModal.vue b/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectModal.vue new file mode 100644 index 0000000..205ffd3 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/project/components/ProjectModal.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file