Commit cec223e3 by 宋祥

Merge branch 'dev-sx' of http://git.pseer.com:8800/platform/hg-smart into dev

parents 3f2d3b28 b2f97e6b
......@@ -4,13 +4,13 @@ import com.baosight.hggp.core.security.UserSessionUtils;
import com.baosight.hggp.util.AssertUtils;
import com.baosight.hggp.util.DateUtils;
import com.baosight.hggp.util.ObjectUtils;
import com.baosight.hggp.util.StringUtils;
import com.baosight.iplat4j.core.data.DaoEPBase;
import com.baosight.iplat4j.core.exception.PlatException;
import com.baosight.iplat4j.core.web.threadlocal.UserSession;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import java.util.Collection;
import java.util.HashMap;
......@@ -206,6 +206,12 @@ public class DaoUtils {
} catch (Exception e) {
log.error("写入创建时刻失败:{}", e.getMessage(), e);
}
// 内码(UUID)
try {
BeanUtils.setProperty(bean, "internalCode", StringUtils.uuid());
} catch (Exception e) {
log.warn("error", e);
}
}
/**
......@@ -267,6 +273,12 @@ public class DaoUtils {
} catch (PlatException e) {
log.warn("写入创建时刻失败", e);
}
// 内码(UUID)
try {
map.put("internalCode", StringUtils.uuid());
} catch (PlatException e) {
log.warn("error", e);
}
}
/**
......
package com.baosight.hggp.hg.ct.constant;
/**
* @author:songx
* @date:2024/9/24,17:53
*/
public class HgCtConst {
/**
* HPCT01 定义
*
* @author:songx
* @date:2024/9/24,17:54
*/
public static class HgCt01 {
/**
* 状态
*
* @author:songx
* @date:2024/5/15,15:18
*/
public static class Status {
// 未关闭
public static final String OPEN = "open";
// 已关闭
public static final String CLOSE = "close";
}
}
}
package com.baosight.hggp.hg.ct.constant;
/**
* @author:songx
* @date:2024/9/24,18:09
*/
public class HgCtSqlConst {
/**
* @author:songx
* @date:2024/8/29,15:54
*/
public static class HgCt01 {
// 确认
public static final String CONFIRM = "HGCT01.confirm";
}
}
package com.baosight.hggp.hg.ct.service;
import com.baosight.hggp.core.dao.DaoUtils;
import com.baosight.hggp.hg.ct.constant.HgCtConst;
import com.baosight.hggp.hg.ct.constant.HgCtSqlConst;
import com.baosight.hggp.hg.ct.domain.HGCT01;
import com.baosight.hggp.util.DateUtils;
import com.baosight.hggp.util.EiInfoUtils;
import com.baosight.hggp.util.LogUtils;
import com.baosight.hggp.util.ObjectUtils;
import com.baosight.iplat4j.core.ei.EiConstant;
import com.baosight.iplat4j.core.ei.EiInfo;
import com.baosight.iplat4j.core.service.impl.ServiceEPBase;
import com.baosight.iplat4j.core.web.threadlocal.UserSession;
import org.apache.commons.collections.CollectionUtils;
import java.util.List;
import java.util.Map;
/**
* 通知信息
*
* @author:songx
* @date:2021/10/15,16:46
*/
public class ServiceHGCT01 extends ServiceEPBase {
/**
* 页面加载调用.
*
* @param inInfo
*/
public EiInfo initLoad(EiInfo inInfo) {
try {
inInfo.addBlock(EiConstant.resultBlock).addBlockMeta(new HGCT01().eiMetadata);
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "初始化失败");
}
return inInfo;
}
/**
* 页面查询调用入口.
*
* @param inInfo
*/
public EiInfo query(EiInfo inInfo) {
try {
Map queryMap = EiInfoUtils.getFirstRow(inInfo);
// 只看自己的通知
queryMap.put(HGCT01.FIELD_USER_ENAME, UserSession.getLoginName());
inInfo = super.query(inInfo, HGCT01.QUERY);
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "查询失败");
}
return inInfo;
}
/**
* 查询待办
*
* @param inInfo
* @return
*/
public EiInfo queryTodo(EiInfo inInfo) {
try {
Map queryMap = EiInfoUtils.getFirstRow(inInfo);
queryMap.put(HGCT01.FIELD_STATUS, HgCtConst.HgCt01.Status.OPEN);
queryMap.put(HGCT01.FIELD_USER_ENAME, UserSession.getLoginName());
inInfo = super.query(inInfo, HGCT01.QUERY, new HGCT01());
// 查询总数量
List<Integer> counts = dao.query(HGCT01.COUNT, queryMap);
inInfo.set(EiConstant.countStr, CollectionUtils.isEmpty(counts) ? 0 : counts.get(0));
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "查询待办信息");
}
return inInfo;
}
/**
* 查询已办
*
* @param inInfo
* @return
*/
public EiInfo queryRecord(EiInfo inInfo) {
try {
Map queryMap = EiInfoUtils.getFirstRow(inInfo);
queryMap.put(HGCT01.FIELD_STATUS, HgCtConst.HgCt01.Status.CLOSE);
queryMap.put(HGCT01.FIELD_USER_ENAME, UserSession.getLoginName());
inInfo = super.query(inInfo, HGCT01.QUERY, new HGCT01());
// 查询总数量
List<Integer> counts = dao.query(HGCT01.COUNT, queryMap);
inInfo.set(EiConstant.countStr, CollectionUtils.isEmpty(counts) ? 0 : counts.get(0));
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "查询已办信息");
}
return inInfo;
}
/**
* 已读
*
* @param inInfo
* @return
*/
public EiInfo confirm(EiInfo inInfo) {
try {
Map resultRow = EiInfoUtils.getFirstRow(inInfo, EiConstant.resultBlock);
if (ObjectUtils.isEmpty(resultRow.get(HGCT01.FIELD_INTERNAL_CODE))) {
inInfo.setMsg("无效的待办消息");
return inInfo;
}
resultRow.put(HGCT01.FIELD_STATUS, HgCtConst.HgCt01.Status.CLOSE);
resultRow.put(HGCT01.FIELD_CLOSE_TIME, DateUtils.shortDateTime());
DaoUtils.update(HgCtSqlConst.HgCt01.CONFIRM, resultRow);
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "确认已办失败");
}
return inInfo;
}
/**
* 批量已读
*
* @param inInfo
* @return
*/
public EiInfo batchConfirm(EiInfo inInfo) {
try {
int successCount = 0;
List<Map> resultRows = inInfo.getBlock(EiConstant.resultBlock).getRows();
for (Map resultRow : resultRows) {
resultRow.put(HGCT01.FIELD_STATUS, HgCtConst.HgCt01.Status.CLOSE);
resultRow.put(HGCT01.FIELD_CLOSE_TIME, DateUtils.shortDateTime());
int result = DaoUtils.update(HgCtSqlConst.HgCt01.CONFIRM, resultRow);
if (result > 0) {
successCount++;
}
}
inInfo = this.query(inInfo);
inInfo.setMsg("操作成功!本次对[" + successCount + "]条数据确认已办成功!");
} catch (Exception e) {
LogUtils.setMsg(inInfo, e, "已办失败");
}
return inInfo;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="HGCT01">
<sql id="column">
CREATED_BY as "createdBy", <!-- 记录创建者 -->
CREATED_NAME as "createdName", <!-- 记录创建名称 -->
CREATED_TIME as "createdTime", <!-- 记录创建时间 -->
UPDATED_BY as "updatedBy", <!-- 记录修改者 -->
UPDATED_NAME as "updatedName", <!-- 记录修改名称 -->
UPDATED_TIME as "updatedTime", <!-- 记录修改时间 -->
DELETE_FLAG as "deleteFlag", <!-- 0-未删除,1-已删除 -->
STATUS as "status", <!-- 状态 -->
INTERNAL_CODE as "internalCode", <!-- 内码 -->
TITLE as "title", <!-- 标题 -->
CONTENT as "content", <!-- 内容 -->
USER_ENAME as "userEname", <!-- 用户ID -->
USER_CNAME as "userCname", <!-- 用户姓名 -->
FORM_ENAME as "formEname", <!-- 画面英文名 -->
FORM_PARAM as "formParam", <!-- 画面参数 -->
CLOSE_TIME as "closeTime" <!-- 关闭时间 -->
</sql>
<sql id="condition">
<isNotEmpty prepend=" AND " property="deleteFlag">
DELETE_FLAG = #deleteFlag#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="status">
STATUS = #status#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="internalCode">
INTERNAL_CODE = #internalCode#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="title">
TITLE LIKE CONCAT('%', #title#, '%')
</isNotEmpty>
<isNotEmpty prepend=" AND " property="content">
CONTENT LIKE CONCAT('%', #content#, '%')
</isNotEmpty>
<isNotEmpty prepend=" AND " property="userEname">
USER_ENAME = #userEname#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="userCname">
USER_CNAME = #userCname#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="formEname">
FORM_ENAME = #formEname#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="formParam">
FORM_PARAM = #formParam#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="closeTime">
CLOSE_TIME = #closeTime#
</isNotEmpty>
</sql>
<sql id="customCondition">
<include refid="condition"/>
<isNotEmpty prepend=" AND " property="createTimeFrom">
CREATED_TIME &gt;= REPLACE(REPLACE(REPLACE(#createTimeFrom#, '-', ''), ':', ''), ' ', '')
</isNotEmpty>
<isNotEmpty prepend=" AND " property="createTimeTo">
CREATED_TIME &lt;= REPLACE(REPLACE(REPLACE(#createTimeTo#, '-', ''), ':', ''), ' ', '')
</isNotEmpty>
<isNotEmpty prepend=" AND " property="closeTimeFrom">
CLOSE_TIME &gt;= REPLACE(REPLACE(REPLACE(#closeTimeFrom#, '-', ''), ':', ''), ' ', '')
</isNotEmpty>
<isNotEmpty prepend=" AND " property="closeTimeTo">
CLOSE_TIME &lt;= REPLACE(REPLACE(REPLACE(#closeTimeTo#, '-', ''), ':', ''), ' ', '')
</isNotEmpty>
</sql>
<sql id="orderBy">
<dynamic prepend="ORDER BY">
<isNotEmpty property="orderBy">
$orderBy$
</isNotEmpty>
<isEmpty property="orderBy">
STATUS ASC, CREATED_TIME DESC
</isEmpty>
</dynamic>
</sql>
<select id="query" resultClass="com.baosight.hggp.hg.ct.domain.HGCT01">
SELECT
<include refid="column"/>
FROM ${hggpSchema}.HGCT01
WHERE 1=1
<include refid="customCondition"/>
<include refid="orderBy"/>
</select>
<select id="count" resultClass="int">
SELECT COUNT(*) FROM ${hggpSchema}.HGCT01
WHERE 1=1
<include refid="customCondition"/>
</select>
<insert id="insert">
INSERT INTO ${hggpSchema}.HGCT01 (
CREATED_BY, <!-- 记录创建者 -->
CREATED_NAME, <!-- 记录创建名称 -->
CREATED_TIME, <!-- 记录创建时间 -->
UPDATED_BY, <!-- 记录修改者 -->
UPDATED_NAME, <!-- 记录修改名称 -->
UPDATED_TIME, <!-- 记录修改时间 -->
DELETE_FLAG, <!-- 0-未删除,1-已删除 -->
STATUS, <!-- 状态 -->
INTERNAL_CODE, <!-- 内码 -->
TITLE, <!-- 标题 -->
CONTENT, <!-- 内容 -->
USER_ENAME, <!-- 用户ID -->
USER_CNAME, <!-- 用户姓名 -->
FORM_ENAME, <!-- 画面英文名 -->
FORM_PARAM, <!-- 画面参数 -->
CLOSE_TIME <!-- 关闭时间 -->
) VALUES (
#createdBy#, #createdName#, #createdTime#, #updatedBy#, #updatedName#, #updatedTime#, #deleteFlag#,
#status#, #internalCode#, #title#, #content#, #userEname#, #userCname#, #formEname#, #formParam#, #closeTime#)
</insert>
<!-- 确认 -->
<update id="confirm">
UPDATE ${hggpSchema}.HGCT01
SET
STATUS = #status#,
CLOSE_TIME = #closeTime#,
<include refid="SqlBase.updateRevise"/>
WHERE INTERNAL_CODE = #internalCode#
AND STATUS = 'open'
</update>
</sqlMap>
package com.baosight.hggp.hg.ct.tools;
import com.baosight.hggp.core.dao.DaoUtils;
import com.baosight.hggp.hg.ct.constant.HgCtConst;
import com.baosight.hggp.hg.ct.domain.HGCT01;
/**
* @author:songx
* @date:2024/3/25,20:44
*/
public class HgCtTools {
/**
* PMWF08 sql 定义
*
* @author:songx
* @date:2024/3/25,21:04
*/
public static class JaCt00 {
/**
* 写入数据库
*NotifyTools
* @param ct00
*/
public static void insertDb(HGCT01 ct00) {
ct00.setStatus(HgCtConst.HgCt01.Status.OPEN);
DaoUtils.insert(HGCT01.INSERT, ct00);
}
}
}
package com.baosight.hggp.hg.ct.utils;
import com.baosight.hggp.hg.ct.domain.HGCT01;
import com.baosight.hggp.hg.ct.tools.HgCtTools;
import com.baosight.hggp.hg.xs.domain.User;
import com.baosight.hggp.hg.xs.tools.HGXSTools;
import com.baosight.hggp.util.AssertUtils;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
/**
* @author:songx
* @date:2024/3/25,20:45
*/
@Slf4j
public class HgCtUtils {
/**
* @author:songx
* @date:2024/10/8,17:20
*/
public static class HgCt01 {
/**
* 发送通知
*
* @param ct00 消息体
*/
public static void send(HGCT01 ct00) {
AssertUtils.isNull(ct00, "待办内容不能为空");
AssertUtils.isEmpty(ct00.getTitle(), "待办标题不能为空");
AssertUtils.isEmpty(ct00.getContent(), "待办内容不能为空");
AssertUtils.isEmpty(ct00.getUserEname(), "待办对象不能为空");
// 设置通知对象名称
User user = HGXSTools.XsUser.getByLogin(ct00.getUserEname());
ct00.setUserCname(user.getUserName());
HgCtTools.JaCt00.insertDb(ct00);
}
/**
* 发送通知
*
* @param ct00 消息体
* @param loginNames loginNames
*/
public static void send(HGCT01 ct00, List<String> loginNames) {
AssertUtils.isNull(ct00, "待办内容不能为空");
AssertUtils.isEmpty(ct00.getTitle(), "待办标题不能为空");
AssertUtils.isEmpty(ct00.getContent(), "待办内容不能为空");
AssertUtils.isEmpty(loginNames, "待办对象不能为空");
try {
for (String loginName : loginNames) {
User user = HGXSTools.XsUser.getByLogin(loginName);
ct00.setUserCname(user.getUserName());
ct00.setUserEname(user.getLoginName());
HgCtTools.JaCt00.insertDb(ct00);
}
} catch (Exception e) {
log.error("发送通知消息失败:{}", e.getMessage(), e);
}
}
}
}
......@@ -35,8 +35,8 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
public List query(String name, Object parameters) {
try {
// 初始化参数
this.setAuthParam(name, parameters);
List ret = super.query(name, parameters);
Object params = this.setAuthParam(name, parameters);
List ret = super.query(name, params);
return ret;
} catch (RuntimeException var4) {
throw var4;
......@@ -46,8 +46,8 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
public List queryAll(String name, Object parameters) {
try {
// 初始化参数
this.setAuthParam(name, parameters);
List ret = super.queryAll(name, parameters);
Object params = this.setAuthParam(name, parameters);
List ret = super.queryAll(name, params);
return ret;
} catch (RuntimeException var4) {
throw var4;
......@@ -57,8 +57,8 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
public List query(String name, Object parameters, int offset, int limit) {
try {
// 初始化参数
this.setAuthParam(name, parameters);
List ret = super.query(name, parameters, offset, limit);
Object params = this.setAuthParam(name, parameters);
List ret = super.query(name, params, offset, limit);
return ret;
} catch (RuntimeException var6) {
throw var6;
......@@ -70,7 +70,9 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
int offset = pageStatus.getPageNumber() * pageStatus.getPageSize();
try {
List ret = super.query(name, parameters, offset, limit);
// 初始化参数
Object params = this.setAuthParam(name, parameters);
List ret = super.query(name, params, offset, limit);
return ret;
} catch (RuntimeException var7) {
ExceptionUtil.getRootCauseMessage(var7);
......@@ -83,8 +85,8 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
try {
// 初始化参数
this.setAuthParam(name, parameters);
int ret = super.count(name, parameters);
Object params = this.setAuthParam(name, parameters);
int ret = super.count(name, params);
return ret;
} catch (RuntimeException var5) {
throw var5;
......@@ -165,18 +167,20 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
* @param name
* @param parameters
*/
private void setAuthParam(String name, Object parameters) {
private Object setAuthParam(String name, Object parameters) {
// 需要过滤部分sql name,否则会形成死循环
if (!name.startsWith("HG") || !(parameters instanceof Map)) {
return;
return parameters;
}
if (parameters == null) {
parameters = new HashMap();
Map params = new HashMap();
if (parameters != null) {
params.putAll((Map) parameters);
}
// 设置企业信息
this.setAccountCode(name, parameters);
this.setAccountCode(name, params);
// 设置数据查询权限
this.setDataAuth(name, parameters);
this.setDataAuth(name, params);
return params;
}
/**
......@@ -185,7 +189,7 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
* @param name
* @param parameters
*/
private void setAccountCode(String name, Object parameters) {
private void setAccountCode(String name, Map parameters) {
// 需要过滤部分sql name,否则会形成死循环
String[] serviceFilter = {"HGXSUser", "HGPZ009.query"};
if (StringUtils.startsWithAny(name, serviceFilter)) {
......@@ -194,11 +198,11 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
// 本来是BUG,避免业务代码改动依然保持原逻辑ADMIN时依然置空
String accountCode = UserSessionUtils.getAccountCode();
if (CommonConstant.Field.ADMIN.equals(accountCode)) {
((Map) parameters).put("accountCode", null);
parameters.put("accountCode", null);
} else if (StringUtils.isBlank(accountCode)) {
((Map) parameters).put("accountCode", " ");
parameters.put("accountCode", " ");
} else {
((Map) parameters).put("accountCode", accountCode);
parameters.put("accountCode", accountCode);
}
}
......@@ -208,9 +212,9 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
* @param name
* @param parameters
*/
private void setDataAuth(String name, Object parameters) {
private void setDataAuth(String name, Map parameters) {
// 本次操作不做权限
boolean notAuth = MapUtils.getBooleanValue((Map) parameters, "notAuth");
boolean notAuth = MapUtils.getBooleanValue(parameters, "notAuth");
if (notAuth) {
return;
}
......@@ -241,7 +245,7 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
* @param userGroups
* @param parameters
*/
private void buildDataAuth(List<UserGroup> userGroups, Object parameters) {
private void buildDataAuth(List<UserGroup> userGroups, Map parameters) {
List<String> depCodes = new ArrayList<>();
boolean onlyPeople = false;
for (UserGroup userGroup : userGroups) {
......@@ -257,20 +261,20 @@ public class SqlMapDaoLogProxy extends SqlMapDao {
}
// 无权限
if (!onlyPeople && CollectionUtils.isEmpty(depCodes)) {
((Map) parameters).put("authDepCode", DataAuthTypeEnum.NO_AUTH.getCode());
parameters.put("authDepCode", DataAuthTypeEnum.NO_AUTH.getCode());
return;
}
// 组合权限
if (onlyPeople && CollectionUtils.isNotEmpty(depCodes)) {
((Map) parameters).put("authCombination", CommonConstant.YesNo.YES_1);
parameters.put("authCombination", CommonConstant.YesNo.YES_1);
}
// 仅本人
if (onlyPeople) {
((Map) parameters).put("authOnlyPeople", UserSessionUtils.getLoginName());
parameters.put("authOnlyPeople", UserSessionUtils.getLoginName());
}
// 去除重复数据
if (CollectionUtils.isNotEmpty(depCodes)) {
((Map) parameters).put("authDepCodes", depCodes.stream().distinct().collect(Collectors.toList()));
parameters.put("authDepCodes", depCodes.stream().distinct().collect(Collectors.toList()));
}
}
......
......@@ -169,7 +169,7 @@
<%@include file="/WEB-INF/fragments/kendo-ui-css.tagf" %>
<link rel="shortcut icon" href="${iPlatStaticURL}/iplat.ico" type="image/x-icon">
<%-- <link href="${iPlatStaticURL}/iPlatV7-index.css" rel="stylesheet" type="text/css"/>--%>
<link href="${iPlatStaticURL}/iPlatV7-index.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="${iPlatStaticURL}/iplatui/assets/js/plugins/slick/slick.min.css">
<link rel="stylesheet" href="${iPlatStaticURL}/iplatui/assets/js/plugins/slick/slick-theme.min.css" onload="this.rel='stylesheet'" rel="preload" as="style" >
......
......@@ -27,6 +27,7 @@
<!-- 工具 -->
<sqlMap resource="com/baosight/hggp/hg/dm/sql/HGDM099.xml"/>
<sqlMap resource="com/baosight/hggp/hg/ct/sql/HGCT01.xml"/>
<!-- 工艺 -->
<sqlMap resource="com/baosight/hggp/hg/sj/sql/HGSJ001.xml"/>
......
$(function () {
IPLATUI.EFGrid = {
"result": {
exportGrid: false,
pageable: {
pageSize: 15,
pageSizes: [15, 50, 100, 200]
},
columns: [{
field: "operate",
template: function (options) {
let formEname = options.formEname;
if (isBlank(formEname)) {
return "";
}
let formParam = "todoInternalCode=" + options.internalCode
+ (isBlank(options.formParam) ? "" : "&" + options.formParam);
let params = '\'' + formEname + '\',\'' + formParam + '\'';
let template = '<a style="cursor: pointer;display: inline-flex;justify-content: center;margin:auto 5px" '
+ 'onclick="showDetail(' + params + ')">详情</a>';
return template;
}
}]
}
}
// 查询
$("#QUERY").on("click", query);
// 已读
$("#CONFIRM").on("click", confirm);
});
/**
* 页面加载时执行
*/
$(window).load(function () {
// 查询
query();
});
/**
* 查询
*/
let query = function () {
resultGrid.dataSource.page(1);
}
/**
* 已读
*/
let confirm = function () {
let rows = resultGrid.getCheckedRows();
if (rows.length < 1) {
message("请选择数据");
return;
}
JSUtils.confirm("确定对勾选中的[" + rows.length + "]条数据做\"确认已办\"操作? ", {
ok: function () {
JSUtils.submitGridsData("result", "HGCT01", "batchConfirm", true);
}
});
}
/**
* 展示详情
*
* @param formEname
* @param param
*/
let showDetail = function (formEname, param) {
IPLAT.openForm(formEname, param);
}
<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="EF" tagdir="/WEB-INF/tags/EF" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<EF:EFPage title="待办消息">
<EF:EFRegion id="inqu" title="条件区域">
<div class="row">
<EF:EFSelect cname="状态" blockId="inqu_status" ename="status" row="0" colWidth="3" optionLabel="全部">
<EF:EFCodeOption codeName="app.ct.status"/>
</EF:EFSelect>
<EF:EFInput cname="标题" blockId="inqu_status" ename="title" row="0" colWidth="3"/>
<EF:EFInput cname="内容" blockId="inqu_status" ename="content" row="0" colWidth="3"/>
</div>
<div class="row">
<EF:EFDateSpan startCname="创建日期(从)" endCname="至" blockId="inqu_status"
startName="createTimeFrom" endName="createTimeTo" row="0" role="datetime"
format="yyyy-MM-dd HH:mm:ss" ratio="3:3" satrtRatio="4:8" endRatio="4:8" readonly="true">
</EF:EFDateSpan>
<EF:EFDateSpan startCname="关闭日期(从)" endCname="至" blockId="inqu_status"
startName="closeTimeFrom" endName="closeTimeTo" row="0" role="datetime"
format="yyyy-MM-dd HH:mm:ss" ratio="3:3" satrtRatio="4:8" endRatio="4:8" readonly="true">
</EF:EFDateSpan>
</div>
</EF:EFRegion>
<EF:EFRegion id="result" title="明细数据">
<EF:EFGrid blockId="result" autoDraw="override" showCount="true" checkMode="row" height="69vh">
<EF:EFColumn ename="internalCode" cname="内码" hidden="true"/>
<EF:EFColumn ename="formEname" cname="表单英文名" hidden="true"/>
<EF:EFColumn ename="formParam" cname="表单参数" hidden="true"/>
<EF:EFColumn ename="operate" cname="操作" enable="false" width="80" align="center"/>
<EF:EFComboColumn ename="status" cname="状态" enable="false" width="100" align="center">
<EF:EFCodeOption codeName="app.ct.status"/>
</EF:EFComboColumn>
<EF:EFColumn ename="title" cname="标题" enable="false" width="140" align="center"/>
<EF:EFColumn ename="content" cname="内容" enable="false" width="500" align="left" sort="true"/>
<EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss','yyyy-MM-dd HH:mm:ss']"/>
<EF:EFColumn ename="closeTime" cname="关闭时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss','yyyy-MM-dd HH:mm:ss']"/>
</EF:EFGrid>
</EF:EFRegion>
</EF:EFPage>
......@@ -20,6 +20,9 @@
</EF:EFSelect>
<EF:EFInput ename="submitUserName" cname="发布人" blockId="inqu_status" row="0" colWidth="3"/>
</div>
<div class="row">
<EF:EFInput ename="noticeNo" cname="公告单号" blockId="inqu_status" row="0" colWidth="3"/>
</div>
</EF:EFRegion>
<EF:EFRegion id="result" title="明细信息" fitHeight="true">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment