diff --git a/web-api/src/main/java/com/jeesite/modules/biz/dao/BizMeetingInfoDao.java b/web-api/src/main/java/com/jeesite/modules/biz/dao/BizMeetingInfoDao.java new file mode 100644 index 00000000..dd822e4d --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/biz/dao/BizMeetingInfoDao.java @@ -0,0 +1,15 @@ +package com.jeesite.modules.biz.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.biz.entity.BizMeetingInfo; + +/** + * 会议主表DAO接口 + * @author gaoxq + * @version 2026-01-02 + */ +@MyBatisDao(dataSourceName="work") +public interface BizMeetingInfoDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMeetingInfo.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMeetingInfo.java new file mode 100644 index 00000000..ffe828e9 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMeetingInfo.java @@ -0,0 +1,119 @@ +package com.jeesite.modules.biz.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; +import com.jeesite.common.utils.excel.annotation.ExcelField; +import com.jeesite.common.utils.excel.annotation.ExcelField.Align; +import com.jeesite.common.utils.excel.annotation.ExcelFields; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 会议主表Entity + * + * @author gaoxq + * @version 2026-01-02 + */ +@EqualsAndHashCode(callSuper = true) +@Table(name = "biz_meeting_info", alias = "a", label = "会议信息信息", columns = { + @Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true), + @Column(name = "id", attrName = "id", label = "会议标识", isPK = true), + @Column(name = "title", attrName = "title", label = "会议标题", queryType = QueryType.LIKE), + @Column(name = "meeting_code", attrName = "meetingCode", label = "会议编号", isUpdate = false), + @Column(name = "meeting_content", attrName = "meetingContent", label = "会议内容", isQuery = false), + @Column(name = "meeting_user", attrName = "meetingUser", label = "参会人员", queryType = QueryType.LIKE), + @Column(name = "other_user", attrName = "otherUser", label = "其他人员", isQuery = false), + @Column(name = "meeting_type", attrName = "meetingType", label = "会议类型"), + @Column(name = "start_time", attrName = "startTime", label = "开始时间", isQuery = false), + @Column(name = "end_time", attrName = "endTime", label = "结束时间", isQuery = false), + @Column(name = "meeting_location", attrName = "meetingLocation", label = "会议地点", isQuery = false), + @Column(name = "ustatus", attrName = "ustatus", label = "会议状态"), + @Column(name = "remark", attrName = "remark", label = "补充说明", isQuery = false), + @Column(name = "create_user", attrName = "createUser", label = "创建人员", isUpdate = false), + @Column(name = "update_time", attrName = "updateTime", label = "更新时间", isQuery = false, isUpdateForce = true), + @Column(name = "f_tenant_id", attrName = "ftenantId", label = "租户id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_id", attrName = "fflowId", label = "流程id", isUpdate = false, isQuery = false), + @Column(name = "f_flow_task_id", attrName = "fflowTaskId", label = "流程任务主键", isUpdate = false, isQuery = false), + @Column(name = "f_flow_state", attrName = "fflowState", label = "流程任务状态", isUpdate = false, isQuery = false, isUpdateForce = true), +}, orderBy = "a.id DESC" +) +@Data +public class BizMeetingInfo extends DataEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 记录时间 + private String title; // 会议标题 + private String meetingCode; // 会议编号 + private String meetingContent; // 会议内容 + private String meetingUser; // 参会人员 + private String otherUser; // 其他人员 + private String meetingType; // 会议类型 + private Date startTime; // 开始时间 + private Date endTime; // 结束时间 + private String meetingLocation; // 会议地点 + private String ustatus; // 会议状态 + private String remark; // 补充说明 + private String createUser; // 创建人员 + private Date updateTime; // 更新时间 + private String ftenantId; // 租户id + private String fflowId; // 流程id + private String fflowTaskId; // 流程任务主键 + private Integer fflowState; // 流程任务状态 + + @ExcelFields({ + @ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "会议标识", attrName = "id", align = Align.CENTER, sort = 20), + @ExcelField(title = "会议标题", attrName = "title", align = Align.CENTER, sort = 30), + @ExcelField(title = "会议编号", attrName = "meetingCode", align = Align.CENTER, sort = 40), + @ExcelField(title = "会议内容", attrName = "meetingContent", align = Align.CENTER, sort = 50), + @ExcelField(title = "参会人员", attrName = "meetingUser", align = Align.CENTER, sort = 60), + @ExcelField(title = "其他人员", attrName = "otherUser", align = Align.CENTER, sort = 70), + @ExcelField(title = "会议类型", attrName = "meetingType", align = Align.CENTER, sort = 80), + @ExcelField(title = "开始时间", attrName = "startTime", align = Align.CENTER, sort = 90, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "结束时间", attrName = "endTime", align = Align.CENTER, sort = 100, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "会议地点", attrName = "meetingLocation", align = Align.CENTER, sort = 110), + @ExcelField(title = "会议状态", attrName = "ustatus", align = Align.CENTER, sort = 120), + @ExcelField(title = "补充说明", attrName = "remark", align = Align.CENTER, sort = 130), + @ExcelField(title = "创建人员", attrName = "createUser", align = Align.CENTER, sort = 140), + @ExcelField(title = "更新时间", attrName = "updateTime", align = Align.CENTER, sort = 150, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public BizMeetingInfo() { + this(null); + } + + public BizMeetingInfo(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/service/BizMeetingInfoService.java b/web-api/src/main/java/com/jeesite/modules/biz/service/BizMeetingInfoService.java new file mode 100644 index 00000000..50a77679 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/biz/service/BizMeetingInfoService.java @@ -0,0 +1,137 @@ +package com.jeesite.modules.biz.service; + +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.biz.entity.BizMeetingInfo; +import com.jeesite.modules.biz.dao.BizMeetingInfoDao; +import com.jeesite.common.service.ServiceException; +import com.jeesite.modules.file.utils.FileUploadUtils; +import com.jeesite.common.config.Global; +import com.jeesite.common.validator.ValidatorUtils; +import com.jeesite.common.utils.excel.ExcelImport; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; + +/** + * 会议主表Service + * @author gaoxq + * @version 2026-01-02 + */ +@Service +public class BizMeetingInfoService extends CrudService { + + /** + * 获取单条数据 + * @param bizMeetingInfo 主键 + */ + @Override + public BizMeetingInfo get(BizMeetingInfo bizMeetingInfo) { + return super.get(bizMeetingInfo); + } + + /** + * 查询分页数据 + * @param bizMeetingInfo 查询条件 + * @param bizMeetingInfo page 分页对象 + */ + @Override + public Page findPage(BizMeetingInfo bizMeetingInfo) { + return super.findPage(bizMeetingInfo); + } + + /** + * 查询列表数据 + * @param bizMeetingInfo 查询条件 + */ + @Override + public List findList(BizMeetingInfo bizMeetingInfo) { + return super.findList(bizMeetingInfo); + } + + /** + * 保存数据(插入或更新) + * @param bizMeetingInfo 数据对象 + */ + @Override + @Transactional + public void save(BizMeetingInfo bizMeetingInfo) { + super.save(bizMeetingInfo); + // 保存上传附件 + FileUploadUtils.saveFileUpload(bizMeetingInfo, bizMeetingInfo.getId(), "bizMeetingInfo_file"); + } + + /** + * 导入数据 + * @param file 导入的数据文件 + */ + @Transactional + public String importData(MultipartFile file) { + if (file == null){ + throw new ServiceException(text("请选择导入的数据文件!")); + } + int successNum = 0; int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + try(ExcelImport ei = new ExcelImport(file, 2, 0)){ + List list = ei.getDataList(BizMeetingInfo.class); + for (BizMeetingInfo bizMeetingInfo : list) { + try{ + ValidatorUtils.validateWithException(bizMeetingInfo); + this.save(bizMeetingInfo); + successNum++; + successMsg.append("
" + successNum + "、编号 " + bizMeetingInfo.getId() + " 导入成功"); + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、编号 " + bizMeetingInfo.getId() + " 导入失败:"; + if (e instanceof ConstraintViolationException){ + ConstraintViolationException cve = (ConstraintViolationException)e; + for (ConstraintViolation violation : cve.getConstraintViolations()) { + msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; + } + }else{ + msg += e.getMessage(); + } + failureMsg.append(msg); + logger.error(msg, e); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + failureMsg.append(e.getMessage()); + return failureMsg.toString(); + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + }else{ + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + /** + * 更新状态 + * @param bizMeetingInfo 数据对象 + */ + @Override + @Transactional + public void updateStatus(BizMeetingInfo bizMeetingInfo) { + super.updateStatus(bizMeetingInfo); + } + + /** + * 删除数据 + * @param bizMeetingInfo 数据对象 + */ + @Override + @Transactional + public void delete(BizMeetingInfo bizMeetingInfo) { + super.delete(bizMeetingInfo); + } + +} \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizMeetingInfoController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMeetingInfoController.java new file mode 100644 index 00000000..dd0e8ac3 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMeetingInfoController.java @@ -0,0 +1,146 @@ +package com.jeesite.modules.biz.web; + +import java.util.List; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.entity.Page; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.utils.excel.ExcelExport; +import com.jeesite.common.utils.excel.annotation.ExcelField.Type; +import org.springframework.web.multipart.MultipartFile; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.biz.entity.BizMeetingInfo; +import com.jeesite.modules.biz.service.BizMeetingInfoService; + +/** + * 会议主表Controller + * @author gaoxq + * @version 2026-01-02 + */ +@Controller +@RequestMapping(value = "${adminPath}/biz/meetingInfo") +public class BizMeetingInfoController extends BaseController { + + private final BizMeetingInfoService bizMeetingInfoService; + + public BizMeetingInfoController(BizMeetingInfoService bizMeetingInfoService) { + this.bizMeetingInfoService = bizMeetingInfoService; + } + + /** + * 获取数据 + */ + @ModelAttribute + public BizMeetingInfo get(String id, boolean isNewRecord) { + return bizMeetingInfoService.get(id, isNewRecord); + } + + /** + * 查询列表 + */ + @RequiresPermissions("biz:meetingInfo:view") + @RequestMapping(value = {"list", ""}) + public String list(BizMeetingInfo bizMeetingInfo, Model model) { + model.addAttribute("bizMeetingInfo", bizMeetingInfo); + return "modules/biz/bizMeetingInfoList"; + } + + /** + * 查询列表数据 + */ + @RequiresPermissions("biz:meetingInfo:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(BizMeetingInfo bizMeetingInfo, HttpServletRequest request, HttpServletResponse response) { + bizMeetingInfo.setPage(new Page<>(request, response)); + Page page = bizMeetingInfoService.findPage(bizMeetingInfo); + return page; + } + + /** + * 查看编辑表单 + */ + @RequiresPermissions("biz:meetingInfo:view") + @RequestMapping(value = "form") + public String form(BizMeetingInfo bizMeetingInfo, Model model) { + model.addAttribute("bizMeetingInfo", bizMeetingInfo); + return "modules/biz/bizMeetingInfoForm"; + } + + /** + * 保存数据 + */ + @RequiresPermissions("biz:meetingInfo:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated BizMeetingInfo bizMeetingInfo) { + bizMeetingInfoService.save(bizMeetingInfo); + return renderResult(Global.TRUE, text("保存会议信息成功!")); + } + + /** + * 导出数据 + */ + @RequiresPermissions("biz:meetingInfo:view") + @RequestMapping(value = "exportData") + public void exportData(BizMeetingInfo bizMeetingInfo, HttpServletResponse response) { + List list = bizMeetingInfoService.findList(bizMeetingInfo); + String fileName = "会议信息" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try(ExcelExport ee = new ExcelExport("会议信息", BizMeetingInfo.class)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 下载模板 + */ + @RequiresPermissions("biz:meetingInfo:view") + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + BizMeetingInfo bizMeetingInfo = new BizMeetingInfo(); + List list = ListUtils.newArrayList(bizMeetingInfo); + String fileName = "会议信息模板.xlsx"; + try(ExcelExport ee = new ExcelExport("会议信息", BizMeetingInfo.class, Type.IMPORT)){ + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 导入数据 + */ + @ResponseBody + @RequiresPermissions("biz:meetingInfo:edit") + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = bizMeetingInfoService.importData(file); + return renderResult(Global.TRUE, "posfull:"+message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); + } + } + + /** + * 删除数据 + */ + @RequiresPermissions("biz:meetingInfo:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(BizMeetingInfo bizMeetingInfo) { + bizMeetingInfoService.delete(bizMeetingInfo); + return renderResult(Global.TRUE, text("删除会议信息成功!")); + } + +} \ No newline at end of file diff --git a/web-api/src/main/resources/mappings/modules/biz/BizMeetingInfoDao.xml b/web-api/src/main/resources/mappings/modules/biz/BizMeetingInfoDao.xml new file mode 100644 index 00000000..67d88193 --- /dev/null +++ b/web-api/src/main/resources/mappings/modules/biz/BizMeetingInfoDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-vue/packages/biz/api/biz/meetingInfo.ts b/web-vue/packages/biz/api/biz/meetingInfo.ts new file mode 100644 index 00000000..ea569c27 --- /dev/null +++ b/web-vue/packages/biz/api/biz/meetingInfo.ts @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + * @author gaoxq + */ +import { defHttp } from '@jeesite/core/utils/http/axios'; +import { useGlobSetting } from '@jeesite/core/hooks/setting'; +import { BasicModel, Page } from '@jeesite/core/api/model/baseModel'; +import { UploadApiResult } from '@jeesite/core/api/sys/upload'; +import { UploadFileParams } from '@jeesite/types/axios'; +import { AxiosProgressEvent } from 'axios'; + +const { ctxPath, adminPath } = useGlobSetting(); + +export interface BizMeetingInfo extends BasicModel { + createTime?: string; // 记录时间 + title: string; // 会议标题 + meetingCode: string; // 会议编号 + meetingContent: string; // 会议内容 + meetingUser: string; // 参会人员 + otherUser?: string; // 其他人员 + meetingType: string; // 会议类型 + startTime: string; // 开始时间 + endTime: string; // 结束时间 + meetingLocation: string; // 会议地点 + ustatus: string; // 会议状态 + remark?: string; // 补充说明 + createUser: string; // 创建人员 + updateTime?: string; // 更新时间 + ftenantId?: string; // 租户id + fflowId?: string; // 流程id + fflowTaskId?: string; // 流程任务主键 + fflowState?: number; // 流程任务状态 +} + +export const bizMeetingInfoList = (params?: BizMeetingInfo | any) => + defHttp.get({ url: adminPath + '/biz/meetingInfo/list', params }); + +export const bizMeetingInfoListData = (params?: BizMeetingInfo | any) => + defHttp.post>({ url: adminPath + '/biz/meetingInfo/listData', params }); + +export const bizMeetingInfoForm = (params?: BizMeetingInfo | any) => + defHttp.get({ url: adminPath + '/biz/meetingInfo/form', params }); + +export const bizMeetingInfoSave = (params?: any, data?: BizMeetingInfo | any) => + defHttp.postJson({ url: adminPath + '/biz/meetingInfo/save', params, data }); + +export const bizMeetingInfoImportData = ( + params: UploadFileParams, + onUploadProgress: (progressEvent: AxiosProgressEvent) => void, +) => + defHttp.uploadFile( + { + url: ctxPath + adminPath + '/biz/meetingInfo/importData', + onUploadProgress, + }, + params, + ); + +export const bizMeetingInfoDelete = (params?: BizMeetingInfo | any) => + defHttp.get({ url: adminPath + '/biz/meetingInfo/delete', params }); diff --git a/web-vue/packages/biz/views/biz/dataInfo/index.vue b/web-vue/packages/biz/views/biz/dataInfo/index.vue index 3807f7e7..3df5c93b 100644 --- a/web-vue/packages/biz/views/biz/dataInfo/index.vue +++ b/web-vue/packages/biz/views/biz/dataInfo/index.vue @@ -1,30 +1,84 @@ - \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/dataReport/index.vue b/web-vue/packages/biz/views/biz/dataReport/index.vue index 86529b9e..bd6e1865 100644 --- a/web-vue/packages/biz/views/biz/dataReport/index.vue +++ b/web-vue/packages/biz/views/biz/dataReport/index.vue @@ -1,30 +1,84 @@ - \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/hostInfo/index.vue b/web-vue/packages/biz/views/biz/hostInfo/index.vue index cfe0052b..22ac6c2f 100644 --- a/web-vue/packages/biz/views/biz/hostInfo/index.vue +++ b/web-vue/packages/biz/views/biz/hostInfo/index.vue @@ -1,30 +1,84 @@ - \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/mailInfo/index.vue b/web-vue/packages/biz/views/biz/mailInfo/index.vue index 27380b67..beec6538 100644 --- a/web-vue/packages/biz/views/biz/mailInfo/index.vue +++ b/web-vue/packages/biz/views/biz/mailInfo/index.vue @@ -1,35 +1,88 @@ - \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/meetingInfo/form.vue b/web-vue/packages/biz/views/biz/meetingInfo/form.vue new file mode 100644 index 00000000..5b17b05a --- /dev/null +++ b/web-vue/packages/biz/views/biz/meetingInfo/form.vue @@ -0,0 +1,219 @@ + + + diff --git a/web-vue/packages/biz/views/biz/meetingInfo/formImport.vue b/web-vue/packages/biz/views/biz/meetingInfo/formImport.vue new file mode 100644 index 00000000..0f5526b1 --- /dev/null +++ b/web-vue/packages/biz/views/biz/meetingInfo/formImport.vue @@ -0,0 +1,103 @@ + + + diff --git a/web-vue/packages/biz/views/biz/meetingInfo/list.vue b/web-vue/packages/biz/views/biz/meetingInfo/list.vue new file mode 100644 index 00000000..4dca24d4 --- /dev/null +++ b/web-vue/packages/biz/views/biz/meetingInfo/list.vue @@ -0,0 +1,298 @@ + + + diff --git a/web-vue/packages/biz/views/biz/monitorInfo/index.vue b/web-vue/packages/biz/views/biz/monitorInfo/index.vue index 0f2f1d9f..8141e057 100644 --- a/web-vue/packages/biz/views/biz/monitorInfo/index.vue +++ b/web-vue/packages/biz/views/biz/monitorInfo/index.vue @@ -1,30 +1,84 @@ - \ No newline at end of file diff --git a/web-vue/packages/biz/views/biz/settingInfo/index.vue b/web-vue/packages/biz/views/biz/settingInfo/index.vue index ed6cad06..a9168d0a 100644 --- a/web-vue/packages/biz/views/biz/settingInfo/index.vue +++ b/web-vue/packages/biz/views/biz/settingInfo/index.vue @@ -1,32 +1,83 @@ - \ No newline at end of file diff --git a/web-vue/packages/core/views/sys/dictData/form.vue b/web-vue/packages/core/views/sys/dictData/form.vue index a3e1a431..0c83dcc0 100644 --- a/web-vue/packages/core/views/sys/dictData/form.vue +++ b/web-vue/packages/core/views/sys/dictData/form.vue @@ -54,15 +54,19 @@ component: 'TreeSelect', componentProps: { allowClear: true, - // style: 'width: calc(50% - 60px)', }, - // colProps: { md: 24, lg: 24 }, }, - { - field: 'none', - component: 'None', - }, - + { + label: t('排序号'), + field: 'treeSort', + helpMessage: '升序', + component: 'InputNumber', + componentProps: { + maxlength: 10, + }, + defaultValue: '30', + required: true, + }, { label: t('选项标签'), field: 'dictLabelRaw', @@ -81,18 +85,6 @@ }, required: true, }, - - { - label: t('排序号'), - field: 'treeSort', - helpMessage: '升序', - component: 'InputNumber', - componentProps: { - maxlength: 10, - }, - defaultValue: '30', - required: true, - }, { label: t('系统内置'), field: 'isSys', @@ -102,21 +94,20 @@ }, required: true, }, - - { - label: t('选项描述'), - field: 'description', - component: 'Input', - componentProps: { - maxlength: 500, - }, - }, { label: t('选项图标'), field: 'dictIcon', component: 'IconPicker', }, - + { + label: t('选项描述'), + field: 'description', + component: 'InputTextArea', + componentProps: { + maxlength: 500, + }, + colProps: { md: 24, lg: 24 }, + }, { label: t('其它信息'), field: 'otherInfo', @@ -132,9 +123,10 @@ 'tag error、tag success、tag warning、tag processing、tag default', 'badge error、badge success、badge warning、badge processing', ], - component: 'Input', + component: 'Select', componentProps: { - maxlength: 500, + dictType: 'css_type', + allowClear: true, }, }, { @@ -145,13 +137,6 @@ maxlength: 500, }, }, - - // { - // label: t('其它信息'), - // field: 'otherInfo', - // component: 'Divider', - // colProps: { md: 24, lg: 24 }, - // }, { label: t('备注信息'), field: 'remarks', diff --git a/web-vue/packages/erp/views/erp/accountTransfer/list.vue b/web-vue/packages/erp/views/erp/accountTransfer/list.vue index 4c7f16c1..4999842e 100644 --- a/web-vue/packages/erp/views/erp/accountTransfer/list.vue +++ b/web-vue/packages/erp/views/erp/accountTransfer/list.vue @@ -120,6 +120,7 @@ sorter: true, width: 180, align: 'left', + fixed:'left', }, { title: t('转账说明'), diff --git a/web-vue/packages/erp/views/erp/erpInc/index.vue b/web-vue/packages/erp/views/erp/erpInc/index.vue index 5c519e51..9a2e530a 100644 --- a/web-vue/packages/erp/views/erp/erpInc/index.vue +++ b/web-vue/packages/erp/views/erp/erpInc/index.vue @@ -1,33 +1,83 @@ - \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/s-mail.png b/web-vue/web/public/resource/img/icons/s-mail.png new file mode 100644 index 00000000..a0dc2398 Binary files /dev/null and b/web-vue/web/public/resource/img/icons/s-mail.png differ