From e4caa2005965a53cefb8a98c655bf17bdcf55688 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 25 Oct 2024 11:40:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B9=A6-=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E4=B9=A6=20=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=2010.?= =?UTF-8?q?25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/controller/ProjectController.java | 17 + .../demo/project/dto/ProjectShenBaoDto.java | 4 + .../modules/demo/project/entity/Project.java | 4 + .../service/impl/ProjectServiceImpl.java | 23 +- .../modules/demo/userext/entity/UserExt.java | 4 + .../kejigongguan/yusuanshu/FengMian.api.ts | 100 ++ .../kejigongguan/yusuanshu/FengMianDemo.vue | 95 ++ .../kejigongguan/yusuanshu/index.vue | 91 ++ .../yusuanshu/jeecgComponents.data.ts | 865 ++++++++++++++++++ .../project/ProjectList.vue | 2 +- 10 files changed, 1190 insertions(+), 15 deletions(-) create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMian.api.ts create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMianDemo.vue create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/jeecgComponents.data.ts 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 409ecd4..507dc10 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 @@ -108,6 +108,22 @@ public class ProjectController extends JeecgController return Result.OK(project); } + @ApiOperation(value = "预算书-获取预算书封面", notes = "预算书-获取预算书封面") + @GetMapping(value = "/getFengMian") + public Result getFengMian(Project param, HttpServletRequest req) { + Project project = projectService.getById(param.getId()); + ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); + project.setAnnualName(projectType.getAnnualName()); + project.setProjectTypeName(projectType.getTypeName()); + project.setAnnualName(projectType.getAnnualName()); + project.setProjectTypeName(projectType.getTypeName()); + SysDepart sysDepart = iSysDepartService.getById(project.getSysOrgCode()); + project.setDepartName(sysDepart.getDepartName()); + SysUser sysUser = iSysUserService.getById(project.getProjectCharger()); + project.setProjectCharger(sysUser.getRealname()); + return Result.OK(project); + } + @ApiOperation(value = "获取项目负责人信息", notes = "获取项目负责人信息") @GetMapping(value = "/getUserInfo") public Result getUserInfo(Project para, HttpServletRequest req) { @@ -120,6 +136,7 @@ public class ProjectController extends JeecgController ); userExt.setIdNO(sysUser.getId()); userExt.setPhone(sysUser.getPhone()); + userExt.setEmail(sysUser.getEmail()); return Result.OK(userExt); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java index 89beaf0..27a94e5 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java @@ -1,5 +1,6 @@ package org.jeecg.modules.demo.project.dto; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -366,4 +367,7 @@ public class ProjectShenBaoDto implements Serializable { @Excel(name = "用户表身份证号", width = 15) @ApiModelProperty(value = "用户表身份证号") private String idNO; + + @ApiModelProperty(value = "用户表负责人email") + private String email; } 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 index 3d97009..3a5ba08 100644 --- 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 @@ -242,6 +242,10 @@ public class Project implements Serializable { @TableField(exist = false) private String annualName; + @TableField(exist = false) + private String departName; + + /** * 批次 */ 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 index 9be171d..e6be6b2 100644 --- 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 @@ -1,7 +1,6 @@ package org.jeecg.modules.demo.project.service.impl; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -13,7 +12,6 @@ import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; 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.jeecg.modules.demo.projectType.entity.ProjectType; import org.jeecg.modules.demo.projectType.service.IProjectTypeService; import org.jeecg.modules.demo.userext.entity.UserExt; import org.jeecg.modules.demo.userext.service.IUserExtService; @@ -74,9 +72,6 @@ public class ProjectServiceImpl extends ServiceImpl impl // 预算书不存在 project.setBudgetStatus("10"); -// ProjectType projectType = iProjectTypeService.getById(project.getProjectTypeid()); -// project.setAnnualName(projectType.getAnnualName()); -// project.setProjectTypeName(projectType.getTypeName()); this.save(project); userExt.setUserId(loginUser.getId()); userExt.setProjectId(project.getId()); @@ -89,43 +84,43 @@ public class ProjectServiceImpl extends ServiceImpl impl updateDepart4ShenBao(sysDepart); } - void updateDepart4ShenBao(SysDepart depart){ + void updateDepart4ShenBao(SysDepart depart) { this.iSysDepartService.updateById(depart); } @Override public void update4shenbao(ProjectShenBaoDto dto) { - log.info(">>> the 修改项目书-文 reqParams:{}", JSON.toJSONString(dto)); + log.info(">>> the 修改项目书-正文 reqParams:{}", JSON.toJSONString(dto)); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - iUserExtService.remove(new LambdaQueryWrapper().eq(UserExt::getProjectId,dto.getId())); - iDepartExtService.remove(new LambdaQueryWrapper().eq(DepartExt::getProjectId,dto.getId())); + iUserExtService.remove(new LambdaQueryWrapper().eq(UserExt::getProjectId, dto.getId())); + iDepartExtService.remove(new LambdaQueryWrapper().eq(DepartExt::getProjectId, dto.getId())); SysDepart sysDepart = new SysDepart(); DepartExt departExt = new DepartExt(); -// SysUser sysUser = new SysUser(); + SysUser sysUser = new SysUser(); UserExt userExt = new UserExt(); Project project = new Project(); BeanUtils.copyProperties(dto, departExt); BeanUtils.copyProperties(dto, sysDepart); -// BeanUtils.copyProperties(dto, sysUser); BeanUtils.copyProperties(dto, userExt); BeanUtils.copyProperties(dto, project); project.setSysOrgCode(loginUser.getOrgId()); - //负责人 -// project.setProjectCharger(loginUser.getId()); this.updateById(project); userExt.setUserId(loginUser.getId()); userExt.setProjectId(project.getId()); this.iUserExtService.save(userExt); + sysUser.setId(loginUser.getId()); + sysUser.setEmail(dto.getEmail()); + this.iSysUserService.updateById(sysUser); + departExt.setDepartId(loginUser.getOrgId()); departExt.setProjectId(project.getId()); this.iDepartExtService.save(departExt); - sysDepart.setId(loginUser.getOrgId()); updateDepart4ShenBao(sysDepart); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java index e5688e6..cf45be3 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java @@ -122,5 +122,9 @@ public class UserExt implements Serializable { @ApiModelProperty(value = "用户表负责人手机号") private String phone; + @TableField(exist = false) + @ApiModelProperty(value = "用户表负责人email") + private String email; + } diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMian.api.ts b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMian.api.ts new file mode 100644 index 0000000..4df2289 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMian.api.ts @@ -0,0 +1,100 @@ +import {defHttp} from '/@/utils/http/axios'; +import {useMessage} from "/@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + fengMian = '/project/project/getFengMian', + userInfo = '/project/project/getUserInfo', + departInfo = '/project/project/getDepartInfo', + saveshenbao = '/project/project/save4shenbao', + updateshenbao = '/project/project/update4shenbao', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', + save = '/project/project/add', +} + +/** + * 导出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 getFengMian = (params) => + defHttp.get({url: Api.fengMian, params}); + +export const getUserByProjectId = (params) => + defHttp.get({url: Api.userInfo, params}); + +export const getDepartByProjectId = (params) => + defHttp.get({url: Api.departInfo, 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}); +} + +/** + * 保存 + * @param params + */ +export const save4shenbao = (params) => { + return defHttp.post({url: Api.saveshenbao, params}); +}; + + +/** + * 更新 + * @param params + */ +export const update4shenbao = (params) => { + return defHttp.post({url: Api.updateshenbao, params}); +}; diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMianDemo.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMianDemo.vue new file mode 100644 index 0000000..1c763f7 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/FengMianDemo.vue @@ -0,0 +1,95 @@ + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue new file mode 100644 index 0000000..3aa9c07 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue @@ -0,0 +1,91 @@ + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/jeecgComponents.data.ts b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/jeecgComponents.data.ts new file mode 100644 index 0000000..9f5a133 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/jeecgComponents.data.ts @@ -0,0 +1,865 @@ +import { FormSchema, JCronValidator } from '/@/components/Form'; +import { usePermission } from '/@/hooks/web/usePermission'; + +const { isDisabledAuth } = usePermission(); +export const schemas: FormSchema[] = [ + { + field: 'jdst', + component: 'JDictSelectTag', + label: '性别下拉', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sex', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'jdst1', + component: 'JDictSelectTag', + label: '性别选择', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sex', + type: 'radioButton', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst1', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'jdst2', + component: 'JDictSelectTag', + label: '字典表下拉', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sys_user,realname,id', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst2', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'jdst3', + component: 'JDictSelectTag', + label: '字典表下拉(带条件)', + helpMessage: ['component模式'], + componentProps: { + dictCode: "sys_user,realname,id,username!='admin' order by create_time", + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst3', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'jsst', + component: 'JSearchSelect', + label: '字典搜索(同步)', + colProps: { span: 12 }, + componentProps: { + //dict: "sys_depart,depart_name,id", + dictOptions: [ + { + text: '选项一', + value: '1', + }, + { + text: '选项二', + value: '2', + }, + { + text: '选项三', + value: '3', + }, + ], + }, + }, + { + field: 'jsst', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'jsst2', + component: 'JSearchSelect', + label: '字典搜索(异步)', + colProps: { span: 12 }, + componentProps: { + dict: 'sys_depart,depart_name,id', + pageSize: 6, + async: true, + }, + }, + { + field: 'jsst2', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'xldx', + component: 'JDictSelectTag', + label: '字典下拉多选', + colProps: { span: 12 }, + componentProps: { + dictCode: 'sex', + mode: 'multiple', + }, + }, + { + field: 'xldx', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'xldx2', + component: 'JSelectMultiple', + label: '字典下拉多选2', + colProps: { span: 12 }, + componentProps: { + dictCode: 'sex', + }, + }, + { + field: 'xldx2', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'dxxlk', + component: 'JDictSelectTag', + label: '字典下拉单选', + colProps: { span: 12 }, + componentProps: { + dictCode: 'sex', + }, + }, + { + field: 'dxxlk', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + label: '可输入下拉', + field: 'selectInput', + component: 'JSelectInput', + componentProps: { + options: [ + { label: '选项一', value: '1' }, + { label: '选项二', value: '2' }, + { label: '选项三', value: '3' }, + ], + }, + colProps: { span: 12 }, + }, + { + field: 'selectInput', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'depart3', + component: 'JSelectDept', + label: '选择部门—自定义值', + helpMessage: ['component模式'], + componentProps: { showButton: false, rowKey: 'orgCode', primaryKey: 'orgCode' }, + colProps: { + span: 12, + }, + }, + { + field: 'depart3', + component: 'JEllipsis', + label: '选中部门', + colProps: { span: 12 }, + }, + { + field: 'depart2', + component: 'JSelectDept', + label: '选择部门', + helpMessage: ['component模式'], + componentProps: { showButton: false }, + colProps: { + span: 12, + }, + }, + { + field: 'depart2', + component: 'JEllipsis', + label: '选中部门', + colProps: { span: 12 }, + }, + { + field: 'user2', + component: 'JSelectUser', + label: '用户选择组件', + helpMessage: ['component模式'], + componentProps: { + labelKey: 'realname', + rowKey: 'id', + showSelected: true, + }, + colProps: { + span: 12, + }, + }, + { + field: 'user2', + component: 'JEllipsis', + label: '选中用户', + colProps: { span: 12 }, + }, + { + field: 'user3', + component: 'JSelectUserByDept', + label: '部门选择用户', + helpMessage: ['component模式'], + componentProps: { + labelKey: 'realname', + rowKey: 'username', + }, + colProps: { + span: 12, + }, + }, + { + field: 'user3', + component: 'JEllipsis', + label: '选中用户', + colProps: { span: 12 }, + }, + { + field: 'role2', + component: 'JSelectRole', + label: '角色选择组件', + helpMessage: ['component模式'], + colProps: { + span: 12, + }, + }, + { + field: 'role2', + component: 'JEllipsis', + label: '选中角色', + colProps: { span: 12 }, + }, + { + field: 'position2', + component: 'JSelectPosition', + label: '职务选择组件', + helpMessage: ['component模式'], + colProps: { span: 12 }, + componentProps: { async: true, showSelectTable: true }, + }, + { + field: 'position2', + component: 'JEllipsis', + label: '选中职务', + colProps: { span: 12 }, + }, + { + field: 'checkbox1', + component: 'JCheckbox', + label: 'JCheckbox组件1', + helpMessage: ['component模式'], + defaultValue: '1,2', + componentProps: { + options: [ + { label: '男', value: '1' }, + { label: '女', value: '2' }, + ], + }, + colProps: { + span: 12, + }, + }, + { + field: 'checkbox1', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'checkbox2', + component: 'Input', + label: 'JCheckbox组件2', + defaultValue: '1', + helpMessage: ['插槽模式'], + slot: 'JCheckbox', + colProps: { + span: 12, + }, + }, + { + field: 'checkbox2', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'data1', + label: '日期选择', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + colProps: { + span: 12, + }, + }, + { + field: 'data1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'data2', + label: '年份范围选择', + component: 'RangePicker', + componentProps: { + picker: 'year', + valueFormat: 'YYYY', + }, + colProps: { + span: 12, + }, + }, + { + field: 'data2', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'hk', + component: 'Input', + label: '滑块验证码', + helpMessage: ['插槽模式'], + slot: 'dargVerify', + colProps: { + span: 12, + }, + }, + { + field: 'hk', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'JTreeDict', + component: 'JTreeDict', + label: '树字典', + helpMessage: ['component模式'], + colProps: { span: 12 }, + }, + { + field: 'JTreeDict', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'ts', + component: 'JTreeSelect', + label: '下拉树选择', + helpMessage: ['component模式'], + componentProps: { + dict: 'sys_permission,name,id', + pidField: 'parent_id', + hasChildField: 'is_leaf', + converIsLeafVal: 0, + }, + colProps: { + span: 12, + }, + }, + { + field: 'ts', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'ts1', + component: 'JTreeSelect', + label: '下拉树多选', + helpMessage: ['component模式'], + componentProps: { + dict: 'sys_permission,name,id', + pidField: 'parent_id', + hasChildField: 'is_leaf', + converIsLeafVal: 0, + multiple: true, + }, + colProps: { + span: 12, + }, + }, + { + field: 'ts1', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'category', + component: 'JCategorySelect', + label: '分类字典树', + helpMessage: ['component模式'], + defaultValue: '', + componentProps: { + pcode: 'B01', + multiple: true, + }, + colProps: { + span: 12, + }, + }, + { + field: 'category', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'JEasyCron', + component: 'JEasyCron', + label: 'JEasyCron', + helpMessage: ['component模式'], + colProps: { span: 12 }, + defaultValue: '* * * * * ? *', + rules: [{ validator: JCronValidator }], + }, + { + field: 'JEasyCron', + component: 'JEllipsis', + label: '选择值', + colProps: { span: 12 }, + }, + { + field: 'JInput', + component: 'JInput', + label: '特殊查询组件', + helpMessage: ['插槽模式'], + slot: 'JInput', + colProps: { + span: 12, + }, + }, + { + field: 'jinputtype', + component: 'Select', + label: '查询类型', + componentProps: { + options: [ + { value: 'like', label: '模糊(like)' }, + { value: 'ne', label: '不等于(ne)' }, + { value: 'ge', label: '大于等于(ge)' }, + { value: 'le', label: '小于等于(le)' }, + ], + }, + colProps: { + span: 6, + }, + }, + { + field: 'JInput', + component: 'JEllipsis', + label: '输入值', + colProps: { span: 6 }, + }, + { + field: 'field1', + component: 'Select', + label: '省市区选择', + helpMessage: ['插槽模式'], + slot: 'jAreaLinkage', + colProps: { + span: 12, + }, + defaultValue: ['130000', '130200'], + }, + { + field: 'field1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'field0', + component: 'Select', + label: '禁用组件(方式一)', + helpMessage: ['插槽模式'], + slot: 'jAreaLinkage1', + colProps: { + span: 12, + }, + defaultValue: ['130000', '130200'], + }, + + { + field: 'field0', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'field2', + component: 'JAreaLinkage', + label: '禁用组件(方式二)', + helpMessage: ['component模式'], + colProps: { + span: 12, + }, + dynamicDisabled: ({ values }) => { + console.log(values); + return isDisabledAuth(['demo.dbarray']); + }, + defaultValue: ['140000', '140300', '140302'], + }, + { + field: 'field2', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'pca1', + component: 'JAreaSelect', + label: '省市区级联', + helpMessage: ['component模式'], + defaultValue: '140302', + colProps: { + span: 12, + }, + }, + { + field: 'pca1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'pop1', + component: 'Input', + label: 'JPopup示例', + helpMessage: ['插槽模式'], + slot: 'JPopup', + colProps: { + span: 12, + }, + }, + { + field: 'pop1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'JInputPop', + component: 'JInputPop', + label: 'JInputPop', + helpMessage: ['component模式'], + colProps: { span: 12 }, + }, + { + field: 'JInputPop', + component: 'JEllipsis', + label: '输入值', + colProps: { span: 12 }, + }, + { + field: 'JTreeDictAsync', + component: 'JTreeDict', + label: '异步JTreeDict', + helpMessage: ['component模式'], + colProps: { span: 12 }, + componentProps: { async: true }, + }, + { + field: 'JTreeDictAsync', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'JSwitch', + component: 'JSwitch', + label: 'JSwitch', + helpMessage: ['component模式'], + colProps: { span: 12 }, + }, + { + field: 'JSwitch', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'JSwitchSelect', + component: 'JSwitch', + label: 'JSwitchSelect', + helpMessage: ['component模式'], + colProps: { span: 12 }, + componentProps: { query: true }, + }, + { + field: 'JSwitchSelect', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + + { + field: 'userSelect2', + component: 'UserSelect', + label: '高级用户选择', + helpMessage: ['component模式'], + colProps: { span: 12 }, + }, + { + field: 'userSelect2', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + + { + field: 'superQuery', + component: 'Input', + label: '高级查询', + helpMessage: ['插槽模式'], + slot: 'superQuery', + colProps: { span: 12 }, + }, + { + field: 'superQuery', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'superQuery1', + component: 'Input', + label: '高级查询', + helpMessage: ['插槽模式-自己保存查询条件'], + slot: 'superQuery1', + colProps: { span: 12 }, + }, + { + field: 'superQuery1', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'pop2', + component: 'JPopupDict', + label: 'JPopupDict示例', + colProps: { + span: 12, + }, + componentProps:{ + placeholder: '请选择', + dictCode: 'report_user,username,id', + multi: true, + }, + }, + { + field: 'pop2', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'sex', + component: 'JDictSelectTag', + label: '性别(控制下方课程options)', + helpMessage: ['component模式','性别不同,下方课程展示选项不同'], + componentProps: { + dictCode: 'sex', + type: 'radioButton', + onChange: (value) => { + console.log(value); + }, + }, + colProps: { + span: 12, + }, + }, + { + field: 'sex', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'course', + component: 'Select', + label: '课程', + dynamicPropskey: 'options', + dynamicPropsVal: ({ model }) => { + let options; + if (model.sex == 1) { + return [ + { value: '0', label: 'java - 男' }, + { value: '1', label: 'vue - 男' }, + ]; + } else if (model.sex == 2) { + return [ + { value: '2', label: '瑜伽 - 女' }, + { value: '3', label: '美甲 - 女' }, + ]; + } else { + return []; + } + }, + componentProps: { + disabled: false, + }, + colProps: { + span: 12, + }, + }, + { + field: 'course', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'field100', + component: 'JInputSelect', + label: 'JInputSelect', + helpMessage: ['component模式'], + componentProps: { + selectPlaceholder: '可选择系统变量', + inputPlaceholder: '请输入', + selectWidth:'200px', + options: [ + { + label: '登录用户账号', + value: '#{sys_user_code}', + }, + { + label: '登录用户名称', + value: '#{sys_user_name}', + }, + { + label: '当前日期', + value: '#{sys_date}', + }, + { + label: '当前时间', + value: '#{sys_time}', + }, + { + label: '登录用户部门', + value: '#{sys_org_code}', + }, + { + label: '用户拥有部门', + value: '#{sys_multi_org_code}', + }, + { + label: '登录用户租户', + value: '#{tenant_id}', + }, + ], + }, + colProps: { + span: 12, + }, + }, + { + field: 'field100', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + { + field: 'JAreaLinkage', + component: 'JAreaLinkage', + label: '省市区选择', + colProps: { + span: 12, + }, + }, + { + field: 'JAreaLinkage', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + + { + field: 'orderAuth', + component: 'Input', + label: '指令权限', + helpMessage: ['有权限右侧的"选中值"可见,否则不可见'], + colProps: { + span: 12, + }, + }, + { + field: 'orderAuth', + auth: 'demo:order:auth', + component: 'JEllipsis', + label: '选中值', + colProps: { span: 12 }, + }, + +]; diff --git a/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue index 7d586ff..6bed0c2 100644 --- a/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue +++ b/jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue @@ -170,7 +170,7 @@ function go_xiangmushu(record) { //跳转到预算书页面 function go_yusuanshu(record) { // go('/comp/jeecg/basic?id=' +'666'); - go('/projectApplication/kejigongguan/xiangmushu?id='+record.id); + go('/projectApplication/kejigongguan/yusuanshu?id='+record.id); } From 2dcdf50e55f193f4c193d04959488185ca15ad1f Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 25 Oct 2024 11:42:19 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B9=A6-=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E4=B9=A6=20=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=2010.?= =?UTF-8?q?25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/projectFile/zhengwen/ProjectFile4ZhengWen.data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jeecgboot-vue3/src/views/projectFile/zhengwen/ProjectFile4ZhengWen.data.ts b/jeecgboot-vue3/src/views/projectFile/zhengwen/ProjectFile4ZhengWen.data.ts index eac21f7..2420cbb 100644 --- a/jeecgboot-vue3/src/views/projectFile/zhengwen/ProjectFile4ZhengWen.data.ts +++ b/jeecgboot-vue3/src/views/projectFile/zhengwen/ProjectFile4ZhengWen.data.ts @@ -22,11 +22,11 @@ export const searchFormSchema: FormSchema[] = [ ]; //表单数据 export const formSchema: FormSchema[] = [ - { + /*{ label: '项目表id', field: 'projectId', component: 'Input', - }, + },*/ { label: '上传附件', field: 'fileUrl', From a7d810230b882e3b26fc609731b3ebfc1480a21a Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 25 Oct 2024 14:56:21 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B9=A6-=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E4=B9=A6=20=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=2010.?= =?UTF-8?q?25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiangmushu/TianBaoShuMingDemo.vue | 9 +- .../yusuanshu/TianBaoShuMingDemo.vue | 97 +++++++++++++++++++ .../kejigongguan/yusuanshu/index.vue | 7 +- 3 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/TianBaoShuMingDemo.vue diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/TianBaoShuMingDemo.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/TianBaoShuMingDemo.vue index 61a6eea..d8a041d 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/TianBaoShuMingDemo.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/xiangmushu/TianBaoShuMingDemo.vue @@ -87,14 +87,7 @@ function setValues() { setFieldsValue({ - tinymce: '填 报 说 明\n' + - '\n' + - ' 1.根据《河南省科技计划项目管理办法(试行)》,申报省科技攻关计划项目必须填报《河南省重点研发与推广专项申请书(科技攻关)》。\n' + - ' 2.“申请书”的各项内容应认真填写,表述准确,实事求是。其中引用的名称、数据等内容均应标明出处,外来语要同时用原文和中文表达,第一次出现的缩写词须注明全称。\n' + - ' 3.申请书第二、三、四、五部分不得出现项目负责人、申请单位等相关信息,否则按无效申报处理。\n' + - ' 4.若项目申报者有合作单位,请填合作单位概况,且必须在“申请书”后附合作协议(合同)。\n' + - ' 5.“申请书”中未列但需说明的内容可加附页,相关技术文献等材料应作为附件一并报送。\n' + - ' 6.每个项目申请省财政经费预算统一为10万元(原则上企业以自筹经费为主),项目实施周期不超过两年,即截止到2026年12月31日以前。', + tinymce: "

填 报 说 明

\n

    1.根据《河南省科技计划项目管理办法(试行)》,申报省科技攻关计划项目必须填报《河南省重点研发与推广专项申请书(科技攻关)》。
    2.“申请书”的各项内容应认真填写,表述准确,实事求是。其中引用的名称、数据等内容均应标明出处,外来语要同时用原文和中文表达,第一次出现的缩写词须注明全称。
    3.申请书第二、三、四、五部分不得出现项目负责人、申请单位等相关信息,否则按无效申报处理。
    4.若项目申报者有合作单位,请填合作单位概况,且必须在“申请书”后附合作协议(合同)。
    5.“申请书”中未列但需说明的内容可加附页,相关技术文献等材料应作为附件一并报送。
    6.每个项目申请省财政经费预算统一为10万元(原则上企业以自筹经费为主),项目实施周期不超过两年,即截止到2026年12月31日以前。

", }); } function goBack(){ diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/TianBaoShuMingDemo.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/TianBaoShuMingDemo.vue new file mode 100644 index 0000000..47ee224 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/TianBaoShuMingDemo.vue @@ -0,0 +1,97 @@ + + + + + + + diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue index 3aa9c07..68578d7 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/index.vue @@ -26,8 +26,7 @@ import FengMianDemo from './FengMianDemo.vue'; - - import TianBaoShuMingDemo from '../xiangmushu/TianBaoShuMingDemo.vue'; + import TianBaoShuMingDemo from './TianBaoShuMingDemo.vue'; import JiBenXinXiDemo from '../xiangmushu/JiBenXinXiDemo.vue'; import XiangMuJiXiaoMuBiaoDemo from '../xiangmushu/XiangMuJiXiaoMuBiaoDemo.vue'; import YiJianDemo from '../xiangmushu/YiJianDemo.vue'; @@ -44,11 +43,11 @@ setup() { const route = useRouter(); const projectId = ref(route.currentRoute.value.query); - const activeKey = ref('TianBaoShuMingDemo'); + const activeKey = ref('FengMianDemo'); const currentComponent = computed(() => { const componentType = { - FengMianDemo: FengMianDemo, TianBaoShuMingDemo: TianBaoShuMingDemo, + FengMianDemo: FengMianDemo, JiBenXinXiDemo: JiBenXinXiDemo, ZhengWenDemo: ZhengWenDemo, XiangMuHeZuoKaiFaDemo: XiangMuHeZuoKaiFaDemo, From f46571ad09e4b4693529d85e6f0e6e258ba21ef6 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 25 Oct 2024 17:16:28 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=A2=84=E7=AE=97=E4=B9=A6-=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E6=83=85=E5=86=B5=E8=A1=A8=20=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=2010.25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/monitor/trace/index.vue | 2 +- .../yusuanshu/ProjectBaseInfoDemo.vue | 80 +++++++++++++++++++ .../kejigongguan/yusuanshu/index.vue | 7 +- 3 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/yusuanshu/ProjectBaseInfoDemo.vue diff --git a/jeecgboot-vue3/src/views/monitor/trace/index.vue b/jeecgboot-vue3/src/views/monitor/trace/index.vue index ce1e601..313ebeb 100644 --- a/jeecgboot-vue3/src/views/monitor/trace/index.vue +++ b/jeecgboot-vue3/src/views/monitor/trace/index.vue @@ -3,7 +3,7 @@