Compare commits
15
Commits
ebffbab428
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d584b66f7 | ||
|
|
a20c632093 | ||
|
|
443e76e7a1 | ||
|
|
d24fba03da | ||
|
|
16ea56524e | ||
|
|
3b5cde7bb1 | ||
|
|
f0cd566d31 | ||
|
|
b2ffc17032 | ||
|
|
2b72da43f4 | ||
|
|
2e83b7b90c | ||
|
|
3f6228b493 | ||
|
|
502e73c81e | ||
|
|
faac94c6e2 | ||
|
|
3080eaa2cb | ||
|
|
ba3a985c40 |
+28
@@ -0,0 +1,28 @@
|
||||
# Compiled class file
|
||||
*.class
|
||||
*.iml
|
||||
*.idea
|
||||
target/
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
|
||||
src/main/resources/application.yaml
|
||||
src/main/resources/application-dev.yaml
|
||||
Generated
+15
@@ -31,11 +31,26 @@
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="nutz-snapshots" />
|
||||
<option name="name" value="nutz-snapshots" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="nutz" />
|
||||
<option name="name" value="nutz" />
|
||||
<option name="url" value="https://maven.aliyun.com/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
|
||||
Generated
+2
-15
@@ -8,18 +8,5 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_15" default="true" project-jdk-name="adopt-15" project-jdk-type="JavaSDK" />
|
||||
<component name="SvnBranchConfigurationManager">
|
||||
<option name="myConfigurationMap">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$">
|
||||
<value>
|
||||
<SvnBranchConfiguration>
|
||||
<option name="trunkUrl" value="http://192.168.21.203:8443/svn/UNION_NSI" />
|
||||
</SvnBranchConfiguration>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_15" project-jdk-name="15" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
|
||||
Generated
-8
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/mini.iml" filepath="$PROJECT_DIR$/mini.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="svn" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="AdditionalModuleElements">
|
||||
<content url="file://$MODULE_DIR$" dumb="true">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
|
||||
</content>
|
||||
</component>
|
||||
</module>
|
||||
@@ -133,7 +133,7 @@ public class SiteUnionProcessController {
|
||||
String dyHomeReserve = "9020230075";
|
||||
// String dyHomeReserve = "2007080352";
|
||||
//校工会审核人(邓研,苏新荣)
|
||||
String schoolReserve = "2007080352,1996070092";
|
||||
String schoolReserve = "1996070092";
|
||||
// String schoolReserve = "2007080352";
|
||||
|
||||
if (isPass){
|
||||
@@ -151,7 +151,7 @@ public class SiteUnionProcessController {
|
||||
// msgApi.sendQiyeMsgTemplate(sendUserLoginName,schoolReserve,"场地预约审核",auditUrl,schoolContent);
|
||||
msgApi.sendMsg(schoolReserve,msgContent);
|
||||
}
|
||||
List<String> list = Lang.list("2007080352", "1996070092");
|
||||
List<String> list = Lang.list("1996070092");
|
||||
list.forEach(item -> {
|
||||
msgApi.sendMsg(item,msgContent);
|
||||
});
|
||||
|
||||
@@ -190,6 +190,11 @@ public interface Roles {
|
||||
*/
|
||||
String XGHKJ = "4f72d9259837486a8092c19897fa9dd6";
|
||||
|
||||
/**
|
||||
* 校工会办公室审核员
|
||||
*/
|
||||
String CONDOLENCE_OFFICE = "c8d7e6f5a4b34c2291d0e8f7a6b5c4d3";
|
||||
|
||||
/**
|
||||
* 校工会管理员
|
||||
*/
|
||||
|
||||
@@ -186,14 +186,24 @@ public class MainPageNeedItemsController {
|
||||
//查询数据库中的待办事项
|
||||
List<NeedItems> needItemsList = dao.queryByJoin(NeedItems.class, "^needItemsSource$", Cnd.NEW());
|
||||
|
||||
// 普通系统管理员不参与校工会办公室审核,超级管理员账号保留兜底权限。
|
||||
boolean superadmin = "superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"));
|
||||
if (!superadmin && ShiroUtil.hasRole("sysadmin") && !ShiroUtil.hasRole("condolence_office")) {
|
||||
needItemsList.removeIf(item -> ("condolence".equals(item.getQueryTable())
|
||||
&& "state_id".equals(item.getQueryColumn())
|
||||
&& Integer.valueOf(2020).equals(item.getStateId()))
|
||||
|| "/platform/fw/condolence/vcr".equals(item.getHref())
|
||||
|| "/platform/fw/condolence/vcr/school".equals(item.getHref()));
|
||||
}
|
||||
|
||||
//根据当前登录用户的角色查询可以看到哪些菜单
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!ShiroUtil.hasRole("sysadmin")) {
|
||||
if (!superadmin && !ShiroUtil.hasRole("sysadmin")) {
|
||||
Sql sql = Sqls.create("""
|
||||
select menuId from sys_role_menu where roleId in (select roleId from sys_user_role where userId = @userId)
|
||||
""").setParam("userId", ShiroUtil.getPlatformUid());
|
||||
List<NutMap> menuIds = baseService.listMap(sql);
|
||||
List<String> menuId = menuIds.stream().map(o -> o.getString("menuId")).collect(Collectors.toList());
|
||||
List<String> menuId = menuIds.stream().map(o -> o.getString("menuid")).collect(Collectors.toList());
|
||||
cnd.and("id", "in", menuId);
|
||||
}
|
||||
List<Sys_menu> menus = dao.query(Sys_menu.class, cnd);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.v.nutz.mobile.condolence;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
@@ -44,6 +45,9 @@ public class CondolenceAuditControll {
|
||||
@Param(value = "searchKeyword", required = false) String searchKeyword, int pageNumber, int pageSize,
|
||||
@Param(value = "pageOrderName", required = false) String pageOrderName,
|
||||
@Param(value = "pageOrderBy", required = false) String pageOrderBy) {
|
||||
if (!hasAuditPermission()) {
|
||||
return Result.error("您没有慰问审核权限!");
|
||||
}
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
con.*,
|
||||
@@ -65,20 +69,28 @@ public class CondolenceAuditControll {
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin")) {
|
||||
if (!"superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
if (ShiroUtil.hasAnyRoles("A06")) {
|
||||
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2020).or("con.state_id", isAudit ? ">" : "=", 2000));
|
||||
// cnd.and("con.state_id", isAudit ? ">" : "=", 2020);
|
||||
boolean hasAuditRole = false;
|
||||
if (ShiroUtil.hasAnyRoles("gh01,sp01")) {
|
||||
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2000)
|
||||
.and("sqr.unionid", "=", Vi.getUnionId()));
|
||||
hasAuditRole = true;
|
||||
}
|
||||
if (ShiroUtil.hasAnyRoles("H04")) {
|
||||
group.and("con.state_id", isAudit ? ">" : "=", 2000);
|
||||
group.and("be.unionid", "=", Vi.getUnionId());
|
||||
if (ShiroUtil.hasAnyRoles("condolence_office")) {
|
||||
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2020));
|
||||
hasAuditRole = true;
|
||||
}
|
||||
if (ShiroUtil.hasAnyRoles("xghkj")) {
|
||||
group.and("con.state_id", isAudit ? ">" : "=", 2012);
|
||||
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2012));
|
||||
hasAuditRole = true;
|
||||
}
|
||||
if (hasAuditRole) {
|
||||
cnd.and(group);
|
||||
} else {
|
||||
// 非慰问审核角色不允许查看手机端慰问审核数据。
|
||||
cnd.and("1", "=", 0);
|
||||
}
|
||||
cnd.and(group);
|
||||
} else {
|
||||
cnd.and("con.state_id", "in", isAudit ? "1990,2010,2014,2030,2040" : "2000,2012,2020");
|
||||
}
|
||||
@@ -104,15 +116,24 @@ public class CondolenceAuditControll {
|
||||
return condolenceService.listPage(pageNumber, pageSize, sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验手机端慰问审核权限,超级管理员账号保留兜底权限。
|
||||
*/
|
||||
private boolean hasAuditPermission() {
|
||||
return "superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))
|
||||
|| ShiroUtil.hasAnyRoles("gh01,sp01,condolence_office,xghkj");
|
||||
}
|
||||
|
||||
|
||||
@At("/auditHtml")
|
||||
@Ok("re")
|
||||
public String auditHtml(Integer state_id) {
|
||||
if (state_id == 2000 && ShiroUtil.hasAnyRoles("H04,A06,sysadmin")) {
|
||||
boolean superadmin = "superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"));
|
||||
if (state_id == 2000 && (superadmin || ShiroUtil.hasAnyRoles("gh01,sp01"))) {
|
||||
return "beetl:/mobile/condolence/union_Audit.html";
|
||||
} else if (state_id == 2012 && ShiroUtil.hasAnyRoles("gh03,xghkj,sysadmin")) {
|
||||
} else if (state_id == 2012 && (superadmin || ShiroUtil.hasAnyRoles("gh03,xghkj"))) {
|
||||
return "beetl:/mobile/condolence/fr_Audit.html";
|
||||
} else if (state_id == 2020 && ShiroUtil.hasAnyRoles("A06,sysadmin")) {
|
||||
} else if (state_id == 2020 && (superadmin || ShiroUtil.hasAnyRoles("condolence_office"))) {
|
||||
return "beetl:/mobile/condolence/school_Audit.html";
|
||||
}
|
||||
return "beetl:/mobile/condolence/apply_info.html";
|
||||
|
||||
+6
-4
@@ -92,10 +92,12 @@ public class WelfareMemberEscalationController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("unionId", "=", Vi.getUnionId());
|
||||
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.and("member","=",1);
|
||||
seg.or(Cnd.exps("userState","=","退休").and(Cnd.exps("retiredTime",">=","2024-06-01").and("retiredTime","<","2024-12-30")));
|
||||
cnd.and(seg);
|
||||
// SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
// seg.and("member","=",1);
|
||||
// seg.or(Cnd.exps("userState","=","退休").and(Cnd.exps("retiredTime",">=","2024-06-01").and("retiredTime","<","2024-12-30")));
|
||||
// cnd.and(seg);
|
||||
|
||||
cnd.and("member", "=", 1);
|
||||
|
||||
cnd.asc("userState").asc("unitname").asc("unionname");
|
||||
// cnd.and("userState", "=", "在职");
|
||||
|
||||
@@ -55,7 +55,7 @@ public class CondolenceAgentController {
|
||||
|
||||
result.add(new NutMap().setv("title", title).setv("url", UCR).setv("iconClass", vi.getIconByPath(UCR)).setv("label", "待院级工会审核").setv("number", getUcrCount()));
|
||||
result.add(new NutMap().setv("title", title).setv("url", FR).setv("iconClass", vi.getIconByPath(FR)).setv("label", "待二级党组织审核").setv("number", getFrCount()));
|
||||
result.add(new NutMap().setv("title", title).setv("url", VCR).setv("iconClass", vi.getIconByPath(VCR)).setv("label", "待校工会审核").setv("number", getVcrCount()));
|
||||
result.add(new NutMap().setv("title", title).setv("url", VCR).setv("iconClass", vi.getIconByPath(VCR)).setv("label", "待校工会办公室审核").setv("number", getVcrCount()));
|
||||
result.add(new NutMap().setv("title", title).setv("url", ECR).setv("iconClass", vi.getIconByPath(ECR)).setv("label", "待工会常务副主席审核").setv("number", getEcrCount()));
|
||||
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
|
||||
List<Sys_menu> menus = Optional.ofNullable(user).orElse(new Sys_user()).getMenus();
|
||||
@@ -92,7 +92,7 @@ public class CondolenceAgentController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 待校工会主席审核
|
||||
* 待校工会办公室审核
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@@ -113,7 +113,8 @@ public class CondolenceReadCon {
|
||||
be.unionname be_unionname,
|
||||
state.state_name,
|
||||
state.state_color,
|
||||
type.`code`
|
||||
type.`code`,
|
||||
type.hasReceipt AS has_receipt
|
||||
FROM
|
||||
condolence con
|
||||
LEFT JOIN `user` be ON con.be_user = be.id
|
||||
@@ -375,6 +376,7 @@ public class CondolenceReadCon {
|
||||
type.`name` AS type_name,
|
||||
type.money,
|
||||
type.`code` typeCode,
|
||||
type.hasReceipt AS has_receipt,
|
||||
c.remark,
|
||||
c.deadImmediateFamily,
|
||||
c.inpatientSurgicalName,
|
||||
@@ -402,6 +404,10 @@ public class CondolenceReadCon {
|
||||
sql.setParam("id", id);
|
||||
NutMap nutMap = condolenceService.fetch(sql);
|
||||
|
||||
if (nutMap.get("has_receipt") != null && !nutMap.getBoolean("has_receipt")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(nutMap.getString("lkrSignData"))) {
|
||||
try {
|
||||
nutMap.put("lkr", ViTool.poiBase64Image7030(nutMap.getString("lkrSignData")));
|
||||
@@ -451,6 +457,8 @@ public class CondolenceReadCon {
|
||||
nutMap.put("detail", username + "其它慰问");
|
||||
} else if (typeCode.equals("J")) {
|
||||
nutMap.put("detail", username + "取环慰问");
|
||||
} else {
|
||||
nutMap.put("detail", username + nutMap.getString("type_name"));
|
||||
}
|
||||
double m = nutMap.getDouble("money");
|
||||
String cm = Convert.digitToChinese(m);
|
||||
@@ -461,7 +469,8 @@ public class CondolenceReadCon {
|
||||
try {
|
||||
String fileName = nutMap.getString("unionname") + nutMap.getString("detail") + "领据";
|
||||
response.addHeader("Content-Type", "application/octet-stream");
|
||||
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
|
||||
response.addHeader("Content-Disposition", "attachment;filename="
|
||||
+ URLEncoder.encode(fileName + ".docx", StandardCharsets.UTF_8));
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
Configure config = Configure.newBuilder().build();
|
||||
XWPFTemplate.compile(officeTemplateUtil.getPath("condolenceDocument2"), config).render(nutMap).writeAndClose(response.getOutputStream());
|
||||
@@ -574,6 +583,7 @@ public class CondolenceReadCon {
|
||||
bwwr.username AS bwwrname,
|
||||
bwwr.unionname,
|
||||
type.`name` AS type_name,
|
||||
type.hasReceipt AS has_receipt,
|
||||
c.files
|
||||
FROM
|
||||
`condolence` c
|
||||
@@ -602,9 +612,13 @@ public class CondolenceReadCon {
|
||||
zipOutputStream.write(bytes, 0, bytes.length);
|
||||
zipOutputStream.closeEntry();
|
||||
}
|
||||
zipOutputStream.finish();
|
||||
response.flushBuffer();
|
||||
}
|
||||
|
||||
zipOutputStream.finish();
|
||||
if (condolence.get("has_receipt") != null && !condolence.getBoolean("has_receipt")) {
|
||||
condolenceService.update(Chain.make("isExport", 1), Cnd.where("id", "=", id));
|
||||
}
|
||||
response.flushBuffer();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.v.nutz.zgfw.controller.condolence;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.DateUtil;
|
||||
import io.v.nutz.base.utils.MsgApi;
|
||||
@@ -89,8 +90,13 @@ public class CondolenceUcrCon {
|
||||
|
||||
cnd.and("con.state_id", isAudit ? ">" : "=", 2000);
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin")) {
|
||||
cnd.and("sqr.unionid", "=", vi.getUnionId());
|
||||
if (!"superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
|
||||
if (ShiroUtil.hasAnyRoles("gh01,sp01")) {
|
||||
cnd.and("sqr.unionid", "=", vi.getUnionId());
|
||||
} else {
|
||||
// 非分工会主席、职工慰问审批员角色(包括sysadmin)不允许查看分工会审核数据。
|
||||
cnd.and("1", "=", 0);
|
||||
}
|
||||
}
|
||||
|
||||
Vi.cndPlus(cnd, "YEAR(con.apply_time)", "=", year);
|
||||
@@ -125,6 +131,10 @@ public class CondolenceUcrCon {
|
||||
@ViReturn
|
||||
@RequiresPermissions("fw.condolence.ucr")
|
||||
public Object doEdit(String id) {
|
||||
Condolence condolence = condolenceService.fetch(id);
|
||||
if (!hasReviewPermission(condolence)) {
|
||||
return Result.error("您没有分工会审核权限!");
|
||||
}
|
||||
condolenceService.update(Chain.make("state_id", 2000), Cnd.where("id", "=", id));
|
||||
return null;
|
||||
}
|
||||
@@ -133,11 +143,14 @@ public class CondolenceUcrCon {
|
||||
@ViReturn
|
||||
@RequiresPermissions("fw.condolence.ucr")
|
||||
public Object doReview(String id, Integer pass, Review review) {
|
||||
Condolence condolence = condolenceService.fetch(id);
|
||||
if (!hasReviewPermission(condolence)) {
|
||||
return Result.error("您没有分工会审核权限!");
|
||||
}
|
||||
review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString());
|
||||
review.setUsername(ShiroUtil.getPrincipalProperty("username").toString());
|
||||
review.setTime(DateUtil.getDate());
|
||||
review = reviewService.insert(review);
|
||||
Condolence condolence = condolenceService.fetch(id);
|
||||
condolence.setUnion_chairman_review(review.getId());
|
||||
if (pass == 1) {
|
||||
condolence.setState_id("2010");
|
||||
@@ -167,5 +180,21 @@ public class CondolenceUcrCon {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验分工会审核权限:superadmin可审核全部,分工会主席和职工慰问审批员只能审核本分工会数据。
|
||||
*/
|
||||
private boolean hasReviewPermission(Condolence condolence) {
|
||||
if ("superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
|
||||
return true;
|
||||
}
|
||||
if (condolence == null || !ShiroUtil.hasAnyRoles("gh01,sp01")) {
|
||||
return false;
|
||||
}
|
||||
Sql sql = Sqls.fetchString(Sqls.create("select unionid from `user` where id = @id")
|
||||
.setParam("id", condolence.getManager()).toString());
|
||||
condolenceService.dao().execute(sql);
|
||||
return vi.getUnionId().equals(sql.getString());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.v.nutz.zgfw.controller.condolence;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.DateUtil;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
@@ -17,6 +18,7 @@ import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
@@ -25,7 +27,7 @@ import org.nutz.mvc.annotation.Param;
|
||||
/**
|
||||
* @Author: 1V
|
||||
* @DateTime: 2020/11/20 11:49
|
||||
* @Description: 校工会审核
|
||||
* @Description: 校工会办公室审核
|
||||
*/
|
||||
@At({"/platform/fw/condolence/vcr","/platform/fw/condolence/vcr/school"})
|
||||
@IocBean
|
||||
@@ -112,9 +114,19 @@ public class CondolenceVcrCon {
|
||||
@ViReturn
|
||||
@RequiresPermissions("fw.condolence.vcr")
|
||||
public Object doReview(String id, Integer pass, Review review) {
|
||||
if (!Integer.valueOf(1).equals(pass) && !Integer.valueOf(2).equals(pass)
|
||||
&& !Integer.valueOf(3).equals(pass)) {
|
||||
return Result.error("请选择审批意见!");
|
||||
}
|
||||
String sign = review == null ? null : review.getSign();
|
||||
if (Strings.isBlank(sign) || !sign.startsWith("data:image/") || !sign.contains(";base64,")) {
|
||||
return Result.error("签字数据异常,请重新签字!");
|
||||
}
|
||||
review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString());
|
||||
review.setUsername(ShiroUtil.getPrincipalProperty("username").toString());
|
||||
review.setTime(DateUtil.getDate());
|
||||
review.setOpinion(Integer.valueOf(3).equals(pass) ? "同意"
|
||||
: Integer.valueOf(1).equals(pass) ? "不同意" : "返回修改");
|
||||
review = reviewService.insert(review);
|
||||
Condolence condolence = condolenceService.fetch(id);
|
||||
condolence.setVice_chairman_review(review.getId());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.v.nutz.zgfw.handler.condolence;
|
||||
|
||||
import io.v.nutz.base.utils.MsgApi;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.util.ViResource;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
@@ -11,7 +12,6 @@ import lombok.Getter;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
@@ -32,7 +32,7 @@ public enum CondolenceMsgHandler {
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.loginname,
|
||||
type.`name` as typeName
|
||||
type.`name` as typename
|
||||
FROM
|
||||
condolence c
|
||||
LEFT JOIN `user` u ON u.id = c.manager
|
||||
@@ -42,9 +42,8 @@ public enum CondolenceMsgHandler {
|
||||
sql.setParam("id", id);
|
||||
NutMap nutMap = condolenceService.fetch(sql);
|
||||
String msg = "您好!" + nutMap.getString("unionname") + "的" + nutMap.getString("username") + "申请的"
|
||||
+ nutMap.getString("typeName") + "慰问已经提交,请您登录到智慧工会系统职工服务>职工慰问下进行审核。";
|
||||
List<String> schoolLoginNames = Lang.list("2007080352", "1996070092", "1987070031");
|
||||
for (String loginname : schoolLoginNames) {
|
||||
+ nutMap.getString("typename") + "慰问已经提交,请您登录到智慧工会系统职工服务>职工慰问下进行审核。";
|
||||
for (String loginname : getRoleLoginNames(Roles.CONDOLENCE_OFFICE)) {
|
||||
msgApi.sendMsg(loginname, msg);
|
||||
}
|
||||
} else {
|
||||
@@ -83,7 +82,7 @@ public enum CondolenceMsgHandler {
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.loginname,
|
||||
type.`name` as typeName
|
||||
type.`name` as typename
|
||||
FROM
|
||||
condolence c
|
||||
LEFT JOIN `user` u ON u.id = c.manager
|
||||
@@ -93,9 +92,8 @@ public enum CondolenceMsgHandler {
|
||||
sql.setParam("id", id);
|
||||
NutMap nutMap = condolenceService.fetch(sql);
|
||||
String msg = "您好!" + nutMap.getString("unionname") + "的" + nutMap.getString("username") + "申请的"
|
||||
+ nutMap.getString("typeName") + "慰问分工会主席已经审批通过,请您登录到智慧工会系统职工服务>职工慰问下进行审核。";
|
||||
List<String> schoolLoginNames = Lang.list("1986110082", "1996070092", "1987070031");
|
||||
for (String loginname : schoolLoginNames) {
|
||||
+ nutMap.getString("typename") + "慰问分工会主席已经审批通过,请您登录到智慧工会系统职工服务>职工慰问下进行审核。";
|
||||
for (String loginname : getRoleLoginNames(Roles.CONDOLENCE_OFFICE)) {
|
||||
msgApi.sendMsg(loginname, msg);
|
||||
}
|
||||
}
|
||||
@@ -112,7 +110,7 @@ public enum CondolenceMsgHandler {
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.loginname,
|
||||
type.`name` as typeName
|
||||
type.`name` as typename
|
||||
FROM
|
||||
condolence c
|
||||
LEFT JOIN `user` u ON u.id = c.manager
|
||||
@@ -126,7 +124,7 @@ public enum CondolenceMsgHandler {
|
||||
if (opinion == null) {
|
||||
opinion = "";
|
||||
}
|
||||
String msg = "您好!您申请的" + nutMap.getString("typeName") + "慰问分工会主席拒绝了您的申请,拒绝理由:" +
|
||||
String msg = "您好!您申请的" + nutMap.getString("typename") + "慰问分工会主席拒绝了您的申请,拒绝理由:" +
|
||||
opinion + "请您登录到智慧工会系统重新修改提交!";
|
||||
msgApi.sendMsg(nutMap.getString("loginname"), msg);
|
||||
System.out.println(msg);
|
||||
@@ -144,7 +142,7 @@ public enum CondolenceMsgHandler {
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.loginname,
|
||||
type.`name` as typeName,
|
||||
type.`name` as typename,
|
||||
c.way
|
||||
FROM
|
||||
condolence c
|
||||
@@ -154,7 +152,7 @@ public enum CondolenceMsgHandler {
|
||||
""");
|
||||
sql.setParam("id", id);
|
||||
NutMap nutMap = condolenceService.fetch(sql);
|
||||
String msg = "您好!您申请的" + nutMap.getString("typeName") + "的慰问校工会已经审批通过!";
|
||||
String msg = "您好!您申请的" + nutMap.getString("typename") + "的慰问校工会办公室已经审批通过!";
|
||||
// 慰问品审核通过后,提醒申请人等待礼品备好并按短信通知领取。
|
||||
if ("慰问品 (C)".equals(nutMap.getString("way"))) {
|
||||
msg += "礼品备好后会发短信通知您前来领取。";
|
||||
@@ -175,7 +173,7 @@ public enum CondolenceMsgHandler {
|
||||
u.username,
|
||||
u.unionname,
|
||||
u.loginname,
|
||||
type.`name` as typeName
|
||||
type.`name` as typename
|
||||
FROM
|
||||
condolence c
|
||||
LEFT JOIN `user` u ON u.id = c.manager
|
||||
@@ -184,7 +182,7 @@ public enum CondolenceMsgHandler {
|
||||
""");
|
||||
sql.setParam("id", id);
|
||||
NutMap nutMap = condolenceService.fetch(sql);
|
||||
String msg = "您好!您申请的" + nutMap.getString("typeName") + "的慰问校工会审批拒绝了,请您登录智慧工会系统查看详情!";
|
||||
String msg = "您好!您申请的" + nutMap.getString("typename") + "的慰问校工会办公室审批拒绝了,请您登录智慧工会系统查看详情!";
|
||||
String loginname = nutMap.getString("loginname");
|
||||
msgApi.sendMsg(loginname, msg);
|
||||
}
|
||||
@@ -192,6 +190,26 @@ public enum CondolenceMsgHandler {
|
||||
|
||||
public abstract void exec(String id, NutMap extra);
|
||||
|
||||
/**
|
||||
* 查询指定角色下的用户工号。
|
||||
*/
|
||||
public List<String> getRoleLoginNames(String roleId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.loginname
|
||||
FROM
|
||||
sys_user_role sur
|
||||
LEFT JOIN `user` u ON u.id = sur.userid
|
||||
WHERE
|
||||
sur.roleId = @roleId
|
||||
GROUP BY
|
||||
sur.userId
|
||||
""").setParam("roleId", roleId);
|
||||
sql.setCallback(Sqls.callback.strs());
|
||||
dao.execute(sql);
|
||||
return sql.getList(String.class);
|
||||
}
|
||||
|
||||
public Dao dao = ViResource.dao;
|
||||
public MsgApi msgApi = ViResource.ioc.get(MsgApi.class);
|
||||
public CondolenceService condolenceService = ViResource.ioc.get(CondolenceServiceImpl.class);
|
||||
|
||||
@@ -14,7 +14,6 @@ import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
@@ -100,7 +99,7 @@ public enum CondolenceToDoHandler {
|
||||
GROUP BY
|
||||
sur.userId
|
||||
""").setParam("roleId", Roles.UNION_MANGER).setParam("userId", condolence.getManager());
|
||||
Sqls.queryString(sql.toString());
|
||||
sql.setCallback(Sqls.callback.strs());
|
||||
dao.execute(sql);
|
||||
List<String> loginNames = sql.getList(String.class);
|
||||
localProcessService.createTask(
|
||||
@@ -135,16 +134,29 @@ public enum CondolenceToDoHandler {
|
||||
},
|
||||
|
||||
/**
|
||||
* 创建校工会任务
|
||||
* 创建校工会办公室审核任务
|
||||
*/
|
||||
CREATE_SCHOOL_TASK() {
|
||||
@Override
|
||||
public void exec(Condolence condolence, String option) {
|
||||
List<String> schoolLoginNames = Lang.list("2007080352", "1996070092", "1987070031");
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.loginname
|
||||
FROM
|
||||
sys_user_role sur
|
||||
LEFT JOIN `user` u ON u.id = sur.userid
|
||||
WHERE
|
||||
sur.roleId = @roleId
|
||||
GROUP BY
|
||||
sur.userId
|
||||
""").setParam("roleId", Roles.CONDOLENCE_OFFICE);
|
||||
sql.setCallback(Sqls.callback.strs());
|
||||
dao.execute(sql);
|
||||
List<String> schoolLoginNames = sql.getList(String.class);
|
||||
localProcessService.createTask(
|
||||
"condolence@" + condolence.getId(),
|
||||
"vice_chairman_review",
|
||||
"校工会审核",
|
||||
"校工会办公室审核",
|
||||
(String) ShiroUtil.getPrincipalProperty("id"),
|
||||
schoolLoginNames,
|
||||
"/platform/fw/condolence/vcr/school",
|
||||
@@ -153,12 +165,12 @@ public enum CondolenceToDoHandler {
|
||||
"/platform/fw/condolence/vcr/school"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("condolence@" + condolence.getId(), "校工会审核");
|
||||
localProcessService.updateProcessNodeName("condolence@" + condolence.getId(), "校工会办公室审核");
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 校工会完成
|
||||
* 校工会办公室审核完成
|
||||
*/
|
||||
COMPLETE_SCHOOL_TASK() {
|
||||
@Override
|
||||
|
||||
@@ -57,6 +57,11 @@ public class CondolenceType {
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isUploadFile;
|
||||
|
||||
@Column
|
||||
@Comment("是否有领据")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean hasReceipt;
|
||||
|
||||
@Column
|
||||
@Comment("上传附件说明")
|
||||
@ColDefine(type = ColType.VARCHAR,width = 200)
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
-- 慰问申请:将原校工会审核改名为校工会办公室审核,并创建独立审核角色
|
||||
-- 执行环境:MySQL
|
||||
|
||||
SET @condolence_office_role_fixed_id := 'c8d7e6f5a4b34c2291d0e8f7a6b5c4d3';
|
||||
|
||||
-- 创建校工会办公室审核员角色。
|
||||
INSERT INTO `sys_role`
|
||||
(`id`, `name`, `code`, `aliasName`, `disabled`, `unitid`, `system_name`, `note`, `serialNumber`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT
|
||||
@condolence_office_role_fixed_id,
|
||||
'校工会办公室审核员',
|
||||
'condolence_office',
|
||||
'CondolenceOfficeReviewer',
|
||||
0,
|
||||
'',
|
||||
'',
|
||||
'负责慰问申请的校工会办公室审核',
|
||||
(SELECT IFNULL(MAX(r.`serialNumber`), 0) + 1 FROM (SELECT `serialNumber` FROM `sys_role`) r),
|
||||
'',
|
||||
UNIX_TIMESTAMP() * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP() * 1000,
|
||||
0
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role` WHERE `code` = 'condolence_office'
|
||||
);
|
||||
|
||||
SET @condolence_office_role_id := (
|
||||
SELECT `id` FROM `sys_role` WHERE `code` = 'condolence_office' LIMIT 1
|
||||
);
|
||||
|
||||
-- 复用原校工会审核菜单,不增加新的流程菜单。
|
||||
SET @condolence_office_menu_id := (
|
||||
SELECT `id`
|
||||
FROM `sys_menu`
|
||||
WHERE `permission` = 'fw.condolence.vcr'
|
||||
OR `href` IN ('/platform/fw/condolence/vcr', '/platform/fw/condolence/vcr/school')
|
||||
ORDER BY CASE WHEN `permission` = 'fw.condolence.vcr' THEN 1 ELSE 2 END
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET `name` = '校工会办公室审核',
|
||||
`aliasName` = 'CondolenceOfficeReview',
|
||||
`note` = '慰问申请校工会办公室审核',
|
||||
`href` = '/platform/fw/condolence/vcr/school',
|
||||
`showit` = 1,
|
||||
`disabled` = 0,
|
||||
`updatedAt` = UNIX_TIMESTAMP() * 1000,
|
||||
`delFlag` = 0
|
||||
WHERE `id` = @condolence_office_menu_id;
|
||||
|
||||
-- 首页待办按菜单地址精确匹配,同步原待办配置并补充手机端入口。
|
||||
SET @condolence_office_need_item_id := (
|
||||
SELECT `id`
|
||||
FROM `need_items`
|
||||
WHERE `menuId` = @condolence_office_menu_id
|
||||
OR `href` IN ('/platform/fw/condolence/vcr', '/platform/fw/condolence/vcr/school')
|
||||
OR (`queryTable` = 'condolence' AND `queryColumn` = 'state_id' AND `stateId` = 2020)
|
||||
LIMIT 1
|
||||
);
|
||||
SET @condolence_office_need_item_new_id := REPLACE(UUID(), '-', '');
|
||||
|
||||
INSERT INTO `need_items`
|
||||
(`id`, `menuId`, `title`, `name`, `code`, `href`, `mobileHref`, `iconClass`, `color`,
|
||||
`creatUser`, `creatTime`, `queryTable`, `queryColumn`, `stateId`, `userIdColumn`, `queryType`)
|
||||
SELECT
|
||||
@condolence_office_need_item_new_id,
|
||||
@condolence_office_menu_id,
|
||||
'【职工慰问】',
|
||||
'待校工会办公室审核',
|
||||
'condolence_office',
|
||||
'/platform/fw/condolence/vcr/school',
|
||||
'/mobile/condolence/audit',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'),
|
||||
'condolence',
|
||||
'state_id',
|
||||
2020,
|
||||
'',
|
||||
''
|
||||
WHERE @condolence_office_need_item_id IS NULL
|
||||
AND @condolence_office_menu_id IS NOT NULL;
|
||||
|
||||
SET @condolence_office_need_item_id := COALESCE(
|
||||
@condolence_office_need_item_id,
|
||||
@condolence_office_need_item_new_id
|
||||
);
|
||||
|
||||
UPDATE `need_items`
|
||||
SET `menuId` = @condolence_office_menu_id,
|
||||
`name` = '待校工会办公室审核',
|
||||
`href` = '/platform/fw/condolence/vcr/school',
|
||||
`mobileHref` = '/mobile/condolence/audit',
|
||||
`queryTable` = 'condolence',
|
||||
`queryColumn` = 'state_id',
|
||||
`stateId` = 2020,
|
||||
`userIdColumn` = '',
|
||||
`queryType` = ''
|
||||
WHERE `id` = @condolence_office_need_item_id;
|
||||
|
||||
-- 同步原审核节点的状态名称,不新增状态。
|
||||
UPDATE `state`
|
||||
SET `state_name` = CASE `state_id`
|
||||
WHEN 1995 THEN '校工会办公室返回修改'
|
||||
WHEN 2020 THEN '待校工会办公室审核'
|
||||
WHEN 2030 THEN '校工会办公室审核不通过'
|
||||
WHEN 2040 THEN '校工会办公室审核通过'
|
||||
ELSE `state_name`
|
||||
END
|
||||
WHERE `state_id` IN (1995, 2020, 2030, 2040);
|
||||
|
||||
-- 给新角色授权原审核菜单及其全部上级菜单,保证菜单树正常显示。
|
||||
INSERT INTO `sys_role_menu` (`roleId`, `menuId`)
|
||||
SELECT @condolence_office_role_id, ancestor.`id`
|
||||
FROM `sys_menu` target
|
||||
JOIN `sys_menu` ancestor ON target.`path` LIKE CONCAT(ancestor.`path`, '%')
|
||||
WHERE target.`id` = @condolence_office_menu_id
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM `sys_role_menu` rm
|
||||
WHERE rm.`roleId` = @condolence_office_role_id
|
||||
AND rm.`menuId` = ancestor.`id`
|
||||
);
|
||||
|
||||
-- 将工号为1986110082、姓名为路海松的人员分配为校工会办公室审核员。
|
||||
INSERT INTO `sys_user_role` (`userId`, `roleId`)
|
||||
SELECT u.`id`, @condolence_office_role_id
|
||||
FROM `sys_user` u
|
||||
WHERE u.`loginname` = '1986110082'
|
||||
AND u.`username` = '路海松'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM `sys_user_role` ur
|
||||
WHERE ur.`userId` = u.`id`
|
||||
AND ur.`roleId` = @condolence_office_role_id
|
||||
);
|
||||
|
||||
SELECT @condolence_office_role_id AS `roleId`,
|
||||
@condolence_office_menu_id AS `menuId`;
|
||||
@@ -19,7 +19,8 @@
|
||||
<th>联系电话</th>
|
||||
<td>{{ viewData.mobile || '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- 结婚、退休离岗慰问不涉及收款信息,查看及审核时不展示对应字段。 -->
|
||||
<tr v-if="showPayeeFields">
|
||||
<th>收款人</th>
|
||||
<td>{{ viewData.payee_username }}</td>
|
||||
<th>收款人银行卡</th>
|
||||
@@ -315,7 +316,7 @@
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会主席审核信息" name="5" v-if="viewData.vcr">
|
||||
<el-tab-pane label="校工会办公室审核信息" name="5" v-if="viewData.vcr">
|
||||
<el-form label-width="130px" label-suffix=":" style="padding: 20px 0">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-row gutter="20">
|
||||
@@ -380,6 +381,12 @@ module.exports = {
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
showPayeeFields() {
|
||||
const hiddenTypeNames = ['会员结婚慰问', '会员退休离岗慰问']
|
||||
return !hiddenTypeNames.includes(this.viewData.typename)
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<template v-if="viewData.vcr">
|
||||
<div class="van-cell-group__title mt20">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
校工会办公室审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
|
||||
@@ -51,7 +51,7 @@ layout("/mobile/platform.html"){
|
||||
|
||||
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
|
||||
image="/none.svg"
|
||||
description="暂无数据">
|
||||
:description="permissionDenied ? '您没有慰问审核权限' : '暂无数据'">
|
||||
</van-empty>
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ layout("/mobile/platform.html"){
|
||||
{text: '已审核', value: true},
|
||||
],
|
||||
handle: true,
|
||||
permissionDenied: false,
|
||||
pageForm: {
|
||||
year: new Date().getFullYear(),
|
||||
isAudit: false,
|
||||
@@ -90,6 +91,11 @@ layout("/mobile/platform.html"){
|
||||
this.flushUnits()
|
||||
},
|
||||
pageData() {
|
||||
if (this.permissionDenied) {
|
||||
this.finished = true
|
||||
this.mLoading = false
|
||||
return
|
||||
}
|
||||
this.mLoading = true
|
||||
$.get(loc() + '/pageData', this.pageForm, (res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -99,14 +105,18 @@ layout("/mobile/platform.html"){
|
||||
} else {
|
||||
this.pageForm.pageNumber++
|
||||
}
|
||||
} else {
|
||||
this.permissionDenied = true
|
||||
this.finished = true
|
||||
vant.Toast(res.msg || '您没有慰问审核权限!')
|
||||
}
|
||||
this.mLoading = false
|
||||
})
|
||||
this.mLoading = false
|
||||
|
||||
},
|
||||
async flushUnits() {
|
||||
//this.$set(this.pageForm, "unitId", "")
|
||||
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
||||
if ("${@shiro.getPrincipalProperty('loginname')}" === 'superadmin' ||
|
||||
"${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
||||
await mCommon.getUnitList(this.pageForm.unionId)
|
||||
} else {
|
||||
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
|
||||
|
||||
@@ -7,11 +7,11 @@ layout("/mobile/platform.html"){
|
||||
@click-left="history.back()"></van-nav-bar>
|
||||
|
||||
|
||||
<condolence-info ref="info" :id.sync="id" title="校工会审核" :handle="handle">
|
||||
<condolence-info ref="info" :id.sync="id" title="校工会办公室审核" :handle="handle">
|
||||
<template #handle>
|
||||
<div class="van-cell-group__title mt10">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核
|
||||
校工会办公室审核
|
||||
</div>
|
||||
</div>
|
||||
<van-form>
|
||||
@@ -26,15 +26,14 @@ layout("/mobile/platform.html"){
|
||||
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
|
||||
<van-field v-model="formData.opinion"
|
||||
rows="1"
|
||||
required
|
||||
left-icon="chat-o"
|
||||
autosize
|
||||
label="审核意见"
|
||||
type="textarea"
|
||||
placeholder="请输入审核意见"
|
||||
></van-field>
|
||||
<van-field label="审批意见" required>
|
||||
<template #input>
|
||||
<van-radio-group v-model="formData.pass" direction="horizontal">
|
||||
<van-radio :name="3" shape="square">同意</van-radio>
|
||||
<van-radio :name="1" shape="square">不同意</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="签字" required style="flex-flow: column">
|
||||
<template #label>
|
||||
@@ -47,17 +46,12 @@ layout("/mobile/platform.html"){
|
||||
|
||||
|
||||
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
|
||||
<van-col span="8">
|
||||
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
|
||||
</van-button>
|
||||
</van-col>
|
||||
|
||||
<van-col span="8">
|
||||
<van-col span="12">
|
||||
<van-button color="red" block plain @click="doAudit(2)">返回修改
|
||||
</van-button>
|
||||
</van-col>
|
||||
<van-col span="8">
|
||||
<van-button :color="themeColor" block @click="doAudit(3)">通 过
|
||||
<van-col span="12">
|
||||
<van-button :color="themeColor" block @click="doAudit">提交
|
||||
</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
@@ -89,8 +83,11 @@ layout("/mobile/platform.html"){
|
||||
methods: {
|
||||
|
||||
async doAudit(pass) {
|
||||
if (!this.formData.opinion) {
|
||||
this.$toast.fail('请填写审核意见');
|
||||
if (pass === 2) {
|
||||
this.formData.pass = pass
|
||||
}
|
||||
if (this.formData.pass === null) {
|
||||
this.$toast.fail('请选择审批意见');
|
||||
return
|
||||
}
|
||||
// 审核签字由独立画布维护,不能只依赖 van-field 的 required 属性。
|
||||
@@ -104,9 +101,9 @@ layout("/mobile/platform.html"){
|
||||
return
|
||||
}*/
|
||||
await this.$refs.signature.updateSign()
|
||||
this.formData.pass = pass
|
||||
const resp = await $.post("/platform/fw/condolence/vcr/doReview", this.formData)
|
||||
if (resp.code === 0) {
|
||||
await doCompletes();
|
||||
this.$toast.success('审核成功');
|
||||
setTimeout(() => {
|
||||
history.back()
|
||||
@@ -122,7 +119,7 @@ layout("/mobile/platform.html"){
|
||||
id: this.id,
|
||||
username: "${@shiro.getPrincipalProperty('username')}",
|
||||
time: moment().format('YYYY-MM-DD'),
|
||||
opinion: null,
|
||||
pass: null,
|
||||
sign: ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,15 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="是否有领据"
|
||||
show-overflow-tooltip
|
||||
prop="hasReceipt">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.hasReceipt != false" class="text-success">是</span>
|
||||
<span v-else class="text-danger">否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="是否禁用" prop="isDisabled" header-align="center"
|
||||
align="center">
|
||||
<template scope="{row}">
|
||||
@@ -152,6 +161,13 @@ layout("/layouts/platform.html"){
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否有领据" prop="hasReceipt">
|
||||
<el-radio-group v-model="formData.hasReceipt">
|
||||
<el-radio-button :label="true">是</el-radio-button>
|
||||
<el-radio-button :label="false">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="上传附件说明" prop="uploadFileDesc" v-if="formData.isUploadFile">
|
||||
<el-input v-model="formData.uploadFileDesc" type="textarea" :rows="3" maxlength="200"
|
||||
show-word-limit clearable></el-input>
|
||||
@@ -239,6 +255,7 @@ layout("/layouts/platform.html"){
|
||||
openAdd() {
|
||||
this.formData = {
|
||||
isUploadFile: true,
|
||||
hasReceipt: true,
|
||||
goodsAlbum: []
|
||||
}
|
||||
this.dialogVisible = true
|
||||
@@ -315,6 +332,9 @@ layout("/layouts/platform.html"){
|
||||
if (code == 0) {
|
||||
this.formData = data
|
||||
this.$set(this.formData, 'goodsAlbum', data.goodsAlbum || [])
|
||||
if (data.hasReceipt == null) {
|
||||
this.$set(this.formData, 'hasReceipt', true)
|
||||
}
|
||||
this.dialogVisible = true
|
||||
if (this.$refs['form']) {
|
||||
this.$refs['form'].resetFields()
|
||||
|
||||
@@ -23,7 +23,7 @@ layout("/layouts/platform.html"){
|
||||
<span slot="label">
|
||||
校工会直接慰问
|
||||
<el-tooltip class="item" effect="dark"
|
||||
content="直接慰问,由校工会直接慰问,无需经过分工会审核,直接由校工会主席审核。"
|
||||
content="直接慰问,由校工会直接慰问,无需经过分工会审核,直接由校工会办公室审核。"
|
||||
placement="top-start">
|
||||
<i class="el-icon-question"></i>
|
||||
</el-tooltip>
|
||||
@@ -102,42 +102,44 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-row gutter="60">-->
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee" label="收款人">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="formData.payee"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查找"
|
||||
:remote-method="userPayee"
|
||||
:loading="userLoading"
|
||||
@change="payeeChange">
|
||||
<el-option
|
||||
v-for="item in userPayees"
|
||||
:key="item.id"
|
||||
:label="item.username+'('+item.loginname+')'+'('+item.unitname+')'"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee_bank_number" label="收款人银行卡">
|
||||
<el-input placeholder="请填写银行卡号" v-model="formData.payee_bank_number"
|
||||
maxlength="30"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee_bank_name" label="收款人开户行">
|
||||
<el-input placeholder="请填写开户行" v-model="formData.payee_bank_name" maxlength="30"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- 结婚、退休离岗慰问无需填写收款信息;不渲染表单项可同时避免触发对应必填校验。 -->
|
||||
<template v-if="showPayeeFields">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee" label="收款人">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="formData.payee"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查找"
|
||||
:remote-method="userPayee"
|
||||
:loading="userLoading"
|
||||
@change="payeeChange">
|
||||
<el-option
|
||||
v-for="item in userPayees"
|
||||
:key="item.id"
|
||||
:label="item.username+'('+item.loginname+')'+'('+item.unitname+')'"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee_bank_number" label="收款人银行卡">
|
||||
<el-input placeholder="请填写银行卡号" v-model="formData.payee_bank_number"
|
||||
maxlength="30"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="payee_bank_name" label="收款人开户行">
|
||||
<el-input placeholder="请填写开户行" v-model="formData.payee_bank_name" maxlength="30"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
</el-row>
|
||||
<el-row gutter="60">
|
||||
@@ -403,7 +405,7 @@ layout("/layouts/platform.html"){
|
||||
occur_time: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
jtzz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
poszdw: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
files: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
// files: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
goods_desc: [{required: true, message: '请输入慰问品名称、编号、规格等', trigger: ['blur', 'change']}],
|
||||
mobile: [
|
||||
{required: true, message: '请输入慰问对象联系电话', trigger: ['blur', 'change']},
|
||||
@@ -412,7 +414,7 @@ layout("/layouts/platform.html"){
|
||||
birthday: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
// job_title: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
birth_child_num: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
sign: [{required: true, message: '请扫码签字', trigger: ['blur', 'change']}],
|
||||
// sign: [{required: true, message: '请扫码签字', trigger: ['blur', 'change']}],
|
||||
payee: [{required: true, message: '请选择收款人', trigger: ['blur', 'change']}],
|
||||
payee_bank_number: [{required: true, message: '请填写收款人银行卡', trigger: ['blur', 'change']}],
|
||||
payee_bank_name: [{required: true, message: '请填写收款人开户行', trigger: ['blur', 'change']}],
|
||||
@@ -444,6 +446,11 @@ layout("/layouts/platform.html"){
|
||||
}*/
|
||||
},
|
||||
computed: {
|
||||
showPayeeFields() {
|
||||
const condolenceType = this.typeOptions.find(item => item.id === this.formData.type)
|
||||
const hiddenTypeNames = ['会员结婚慰问', '会员退休离岗慰问']
|
||||
return !condolenceType || !hiddenTypeNames.includes(condolenceType.name)
|
||||
},
|
||||
goodsAlbumFile() {
|
||||
const goodsAlbum = this.formData.goodsAlbum
|
||||
return goodsAlbum && goodsAlbum.length ? goodsAlbum[0] : null
|
||||
@@ -550,10 +557,10 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
async doAdd() {
|
||||
// 签字由自定义组件回写,提交前单独判断,避免 Element 表单漏过空签字。
|
||||
if (!this.formData.sign) {
|
||||
/*if (!this.formData.sign) {
|
||||
this.$message.warning('请扫码签字')
|
||||
return
|
||||
}
|
||||
}*/
|
||||
this.$refs["form"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
const formData = JSON.parse(JSON.stringify(this.formData))
|
||||
|
||||
@@ -492,7 +492,7 @@ layout("/layouts/platform.html"){
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.1'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.2'),
|
||||
},
|
||||
methods: {
|
||||
async payeeChange() {
|
||||
|
||||
@@ -142,7 +142,8 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column align="center" prop="state_id" header-align="center"
|
||||
label="是否导出" sortable>
|
||||
<template scope="scope">
|
||||
<span v-if="scope.row.exportdocumentno" class="text-success">
|
||||
<span v-if="scope.row.exportdocumentno || (scope.row.has_receipt == false && scope.row.isexport)"
|
||||
class="text-success">
|
||||
是
|
||||
</span>
|
||||
<span v-else class="text-danger">否</span>
|
||||
@@ -162,7 +163,8 @@ layout("/layouts/platform.html"){
|
||||
<el-dropdown-item :command="{type:'view',data:row}">
|
||||
查看
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'exportReceipt',data:row}">
|
||||
<el-dropdown-item v-if="row.has_receipt != false"
|
||||
:command="{type:'exportReceipt',data:row}">
|
||||
导出领据
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'exportFiles',data:row}">
|
||||
@@ -216,7 +218,7 @@ layout("/layouts/platform.html"){
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.1'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.2'),
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
@@ -230,13 +232,44 @@ layout("/layouts/platform.html"){
|
||||
} else if (type == 'Print') {
|
||||
condolence.doPrint(data.id)
|
||||
} else if (type == 'exportReceipt') {
|
||||
if (!['D', 'E', 'F', 'G', 'H', 'I', 'J'].includes(data.code)) {
|
||||
this.notifyWarning('只有住院和去世类型才可导出领据')
|
||||
if (data.has_receipt == false) {
|
||||
this.notifyWarning('该慰问类型没有领据')
|
||||
return
|
||||
}
|
||||
window.open(loc() + '/exportReceipt?id=' + data.id)
|
||||
this.downloadAndRefresh(loc() + '/exportReceipt?id=' + data.id, '慰问领据.docx')
|
||||
} else if (type == 'exportFiles') {
|
||||
window.open(loc() + '/exportFiles?id=' + data.id)
|
||||
this.downloadAndRefresh(loc() + '/exportFiles?id=' + data.id, '申请附件.zip')
|
||||
}
|
||||
},
|
||||
async downloadAndRefresh(url, defaultFileName) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在导出,请稍候',
|
||||
spinner: 'el-icon-loading'
|
||||
})
|
||||
try {
|
||||
const response = await axios.get(url, {responseType: 'blob'})
|
||||
const disposition = response.headers['content-disposition'] || ''
|
||||
let fileName = disposition.includes('filename=')
|
||||
? disposition.substring(disposition.indexOf('filename=') + 9).replace(/"/g, '')
|
||||
: defaultFileName
|
||||
fileName = decodeURIComponent(fileName.replace(/\+/g, ' '))
|
||||
|
||||
const downloadUrl = window.URL.createObjectURL(response.data)
|
||||
const link = document.createElement('a')
|
||||
link.href = downloadUrl
|
||||
link.download = fileName
|
||||
link.style.display = 'none'
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
window.URL.revokeObjectURL(downloadUrl)
|
||||
|
||||
this.pageData()
|
||||
} catch (e) {
|
||||
this.notifyError('导出失败')
|
||||
} finally {
|
||||
loading.close()
|
||||
}
|
||||
},
|
||||
doExportSummary() {
|
||||
|
||||
@@ -256,7 +256,7 @@ layout("/layouts/platform.html"){
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.1'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.2'),
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
|
||||
@@ -151,7 +151,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
</template>
|
||||
<template #edit>
|
||||
<info ref="info2" handle label="校工会审核">
|
||||
<info ref="info2" handle label="校工会办公室审核">
|
||||
<template #handle>
|
||||
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
|
||||
style="padding: 20px 0"
|
||||
@@ -171,10 +171,11 @@ layout("/layouts/platform.html"){
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="opinion" label="审核意见">
|
||||
<el-input type="textarea" v-model="formData.opinion" rows="4"
|
||||
maxlength="500"
|
||||
placeholder="请填写您的审核意见"></el-input>
|
||||
<el-form-item prop="pass" label="审批意见">
|
||||
<el-radio-group v-model="formData.pass">
|
||||
<el-radio :label="3">同意</el-radio>
|
||||
<el-radio :label="1">不同意</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="sign" label="签  字">
|
||||
@@ -184,15 +185,11 @@ layout("/layouts/platform.html"){
|
||||
</el-form>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button @click="doReview(1)" :disabled="subDis" :loading="subLoading1">拒
|
||||
绝
|
||||
</el-button>
|
||||
<el-button type="danger" @click="doReview(2)" :disabled="subDis"
|
||||
:loading="subLoading2">返回修改
|
||||
</el-button>
|
||||
<el-button type="primary" @click="doReview(3)" :disabled="subDis"
|
||||
:loading="subLoading3">通
|
||||
过
|
||||
<el-button type="primary" @click="doReview" :disabled="subDis"
|
||||
:loading="subLoading3">提交
|
||||
</el-button>
|
||||
|
||||
</div>
|
||||
@@ -223,7 +220,7 @@ layout("/layouts/platform.html"){
|
||||
year: new Date().getFullYear() + ""
|
||||
},
|
||||
formRules: {
|
||||
opinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
pass: [{required: true, message: '请选择审批意见', trigger: 'change'}],
|
||||
sign: [{required: true, message: '请签字', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
@@ -237,9 +234,12 @@ layout("/layouts/platform.html"){
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.1'),
|
||||
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.2'),
|
||||
},
|
||||
methods: {
|
||||
isValidSign(sign) {
|
||||
return typeof sign === 'string' && /^data:image\/(png|jpeg|jpg);base64,/i.test(sign)
|
||||
},
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type == 'view') {
|
||||
@@ -250,11 +250,18 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
async openReview(row) {
|
||||
const {id} = row
|
||||
const cachedSign = localStorage.getItem('signature')
|
||||
if (cachedSign && !this.isValidSign(cachedSign)) {
|
||||
// 仅清理当前浏览器中的异常签字缓存,避免 [object Object] 再次提交。
|
||||
localStorage.removeItem('signature')
|
||||
}
|
||||
|
||||
this.formData = {
|
||||
id,
|
||||
username: "${@shiro.getPrincipalProperty('username')}",
|
||||
time: moment().format('YYYY-MM-DD'),
|
||||
pass: null,
|
||||
sign: '',
|
||||
}
|
||||
this.subLoading1 = false
|
||||
this.subLoading2 = false
|
||||
@@ -265,29 +272,27 @@ layout("/layouts/platform.html"){
|
||||
this.$refs['form'].resetFields()
|
||||
}
|
||||
},
|
||||
async doReview(flag) {
|
||||
async doReview(pass) {
|
||||
if (pass === 2) {
|
||||
this.formData.pass = pass
|
||||
}
|
||||
// 签字由自定义组件回写,审核提交前单独判断,避免 Element 表单漏过空签字。
|
||||
if (!this.formData.sign) {
|
||||
this.$message.warning('请签字')
|
||||
if (!this.isValidSign(this.formData.sign)) {
|
||||
localStorage.removeItem('signature')
|
||||
this.$set(this.formData, 'sign', '')
|
||||
this.$message.warning('签字数据异常,请重新签字')
|
||||
return
|
||||
}
|
||||
this.$refs["form"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.formData.pass = flag
|
||||
|
||||
this.subDis = true
|
||||
if (flag == 1) {
|
||||
this.subLoading1 = true
|
||||
} else if (flag == 2) {
|
||||
this.subLoading2 = true
|
||||
} else {
|
||||
this.subLoading3 = true
|
||||
}
|
||||
pass === 2 ? this.subLoading2 = true : this.subLoading3 = true
|
||||
|
||||
const resp = await $.post(loc() + "/doReview", this.formData)
|
||||
this.subDis = false
|
||||
this.subLoading1 = false
|
||||
this.subLoading2 = false
|
||||
this.subLoading3 = false
|
||||
if (resp.code === 0) {
|
||||
this.pageData()
|
||||
this.$refs.guava.index()
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
nutz.application.name=UNION_BASIC
|
||||
server.port=80
|
||||
server.host=0.0.0.0
|
||||
jetty.contextPath=/
|
||||
jetty.threadpool.idleTimeout=60000
|
||||
jetty.threadpool.minThreads=10
|
||||
jetty.threadpool.maxThreads=500
|
||||
jetty.page.403=/error/403.html
|
||||
jetty.page.404=/error/404.html
|
||||
jetty.page.500=/error/500.html
|
||||
#结合ftp使用,或用nginx代理ftp路径
|
||||
jetty.staticPath=D://files
|
||||
#开发模式静态资源
|
||||
jetty.staticPathLocal=D:/gsProject/UNION_NSI/src/main/resources/static
|
||||
nutz.mvc.ignore=^(.+[.])(jsp|png|gif|jpg|js|css|jspx|jpeg|html|mp3|mp4|ico|svg)$
|
||||
nutz.mvc.exclusions=/favicon/*,/assets/*,/druid/*,/upload/*
|
||||
ftp.enabled=true
|
||||
ftp.host=192.168.21.203
|
||||
ftp.port=9090
|
||||
ftp.username=ftpuser
|
||||
ftp.password=123456
|
||||
ftp.timeout=100
|
||||
redis.host=127.0.0.1
|
||||
redis.port=6379
|
||||
redis.timeout=2000
|
||||
redis.max_redir=10
|
||||
redis.database=0
|
||||
redis.maxTotal=150
|
||||
redis.pool.maxTotal=150
|
||||
redis.pool.maxIdle=50
|
||||
redis.pool.minIdle=10
|
||||
#redis.password=zxy123
|
||||
#redis集群模式设置
|
||||
#redis.mode=cluster
|
||||
redis.mode=normal
|
||||
#redis.nodes=192.168.6.31:6377,192.168.6.31:6378,192.168.6.28:6377,192.168.6.28:6378,192.168.6.34:6377,192.168.6.34:6378
|
||||
jdbc.url=jdbc:mysql://192.168.21.203:3306/union_nsi?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
jdbc.username=root
|
||||
jdbc.password=root
|
||||
jdbc.validationQuery=select 1
|
||||
jdbc.maxActive=500
|
||||
jdbc.testWhileIdle=true
|
||||
jdbc.connectionProperties=druid.stat.slowSqlMillis=2000
|
||||
jdbc.defaultAutoCommit=true
|
||||
xsssql.ignore.urls=/platform/cms/content/article/addDo,/platform/sys/app/conf/addDo,/platform/sys/app/conf/editDo,/platform/member/change/mange/userPageData,/platform/welfare/member/mange/userPageData
|
||||
#环境 dev/prod
|
||||
v.environment=dev
|
||||
v.loginUrl=/sso/login
|
||||
v.loginUrlMobile=/mobile/cas/login
|
||||
v.ip=192.168.21.207
|
||||
#shiro.ini.path=shiro.ini
|
||||
shiro.objects=platformAuthc,AuthenticationFilter,Cas20ProxyReceivingTicketValidationFilter,platformRealm,authenticationStrategy
|
||||
#end
|
||||
shiro.ini.urls:
|
||||
/sso/**=Cas20ProxyReceivingTicketValidationFilter
|
||||
/mobile/login=anon
|
||||
/platform/jsz/login=anon
|
||||
/assets/**=anon
|
||||
/**=anon
|
||||
/signature/**=anon
|
||||
/platform/**=AuthenticationFilter
|
||||
#end
|
||||
#设置session会话超时时间(单位:毫秒)
|
||||
shiro.session.manager.globalSessionTimeout=2000000000
|
||||
#设置redis缓存时间(单位:秒)与上面的毫秒数保持一致
|
||||
shiro.session.cache.redis.ttl=2000000
|
||||
#缓存名和 RedisConstant.PLATFORM_REDIS_PREFIX 常量保持一致
|
||||
shiro.session.dao.activeSessionsCacheName=budwk5mini:shiro:activeSessionCache
|
||||
#使用redis二级缓存
|
||||
shiro.session.cache.type=lcache
|
||||
shiro.session.enable=true
|
||||
shiro.url.login=/platform
|
||||
shiro.url.logout_redirect=/platform
|
||||
shiro.url.unauth=/platform
|
||||
#开发时设置本地路径,便于调试
|
||||
beetl.RESOURCE.rootLocal=D:/gsProject/UNION_NSI/src/main/resources/views/
|
||||
beetl.RESOURCE.root=views/
|
||||
beetl.DELIMITER_STATEMENT_START=<!--#
|
||||
beetl.DELIMITER_STATEMENT_END=#-->
|
||||
beetl.FT.escape=io.v.nutz.web.commons.ext.beetl.HtmlEscapeFormat
|
||||
#用法: ${"wizzer",escape}
|
||||
beetl.FT.filesize=io.v.nutz.web.commons.ext.beetl.FileSizeFormat
|
||||
#用法: ${10241024,filesize}
|
||||
beetl.FT.html2txt=io.v.nutz.web.commons.ext.beetl.Html2TxtFormat
|
||||
#用法: ${"",html2txt="100"} 截取100字符
|
||||
beetl.FT.strlen=io.v.nutz.web.commons.ext.beetl.StrlenFormat
|
||||
#用法: ${"",strlen="100"} 截取100字符
|
||||
#获取系统参数
|
||||
beetl.FN.getSysConfig=io.v.nutz.web.commons.ext.beetl.GetSysConfig
|
||||
#==============================================================
|
||||
#Configure Main Scheduler Properties
|
||||
#==============================================================
|
||||
#quartz延迟启动秒数
|
||||
quartz.startupDelay=10
|
||||
quartz.scheduler.instanceName=defaultScheduler
|
||||
quartz.scheduler.instanceId=AUTO
|
||||
#==============================================================
|
||||
#Configure JobStore isClustered=启用集群模式
|
||||
#==============================================================
|
||||
quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
|
||||
quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||||
#quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
|
||||
#quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
|
||||
#Other delegates can see: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-09.html
|
||||
quartz.jobStore.dataSource=myDS
|
||||
quartz.jobStore.tablePrefix=SYS_QRTZ_
|
||||
quartz.jobStore.isClustered=true
|
||||
quartz.jobStore.clusterCheckinInterval=20000
|
||||
quartz.jobStore.maxMisfiresToHandleAtATime=120
|
||||
quartz.jobStore.misfireThreshold=120000
|
||||
quartz.jobStore.txIsolationLevelSerializable=false
|
||||
#==============================================================
|
||||
#Configure ThreadPool
|
||||
#==============================================================
|
||||
quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
|
||||
quartz.threadPool.threadCount=2
|
||||
quartz.threadPool.threadPriority=5
|
||||
quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
|
||||
#==============================================================
|
||||
#Skip Check Update
|
||||
#update:true
|
||||
#not update:false
|
||||
#==============================================================
|
||||
quartz.scheduler.skipUpdateCheck=true
|
||||
#============================================================================
|
||||
# Configure Plugins
|
||||
#============================================================================
|
||||
quartz.plugin.triggHistory.class=org.quartz.plugins.history.LoggingJobHistoryPlugin
|
||||
quartz.plugin.shutdownhook.class=org.quartz.plugins.management.ShutdownHookPlugin
|
||||
quartz.plugin.shutdownhook.cleanShutdown=true
|
||||
#============================================================================
|
||||
# NutDao dataSource
|
||||
#============================================================================
|
||||
quartz.dataSource.myDS.connectionProvider.class=io.v.nutz.task.conn.NutConnectionProvider
|
||||
logback.exts.loglevel.cache.prefix=budwk5mini:logback:loglevel:
|
||||
#动态修改日志等级
|
||||
logback.exts.loglevel.enabled=true
|
||||
#心跳间隔(单位:秒)
|
||||
logback.exts.loglevel.heartbeat=15
|
||||
#为应用管理提供支持,启用获取部署版本号,结合守护进程使用
|
||||
# 详见 https://github.com/Wizzercn/PythonWk
|
||||
logback.exts.deploy.enabled=false
|
||||
#为应用管理提供支持,部署根路径
|
||||
logback.exts.deploy.root=/data/budwk5mini
|
||||
#应用管理通信接口签名,正式环境务必更改
|
||||
deploy.appid=
|
||||
deploy.appkey=
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
____ ___ ___ __ _______ __ __ _ _
|
||||
| _ \ | \ \ / / | \ \ / / ____| | \/ (_) (_)
|
||||
| |_) |_ _ __| |\ \ /\ / /| | _______\ \ / /| |__ | \ / |_ _ __ _
|
||||
| _ <| | | |/ _` | \ \/ \/ / | |/ /______\ \/ / |___ \ | |\/| | | '_ \| |
|
||||
| |_) | |_| | (_| | \ /\ / | < \ / ___) | | | | | | | | | |
|
||||
|____/ \__,_|\__,_| \/ \/ |_|\_\ \/ |____/ |_| |_|_|_| |_|_|
|
||||
|
||||
:: Built with BudWk.com [wizzer@qq.com]
|
||||
@@ -1,18 +0,0 @@
|
||||
var chain={
|
||||
"default" : {
|
||||
"ps" : [
|
||||
"io.v.nutz.web.commons.proc.LogTimeProcessor",
|
||||
"io.v.nutz.web.commons.proc.GlobalsSettingProcessor",
|
||||
"org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor",
|
||||
"org.nutz.mvc.impl.processor.EncodingProcessor",
|
||||
"org.nutz.mvc.impl.processor.ModuleProcessor",
|
||||
"org.nutz.mvc.impl.processor.ActionFiltersProcessor",
|
||||
"io.v.nutz.web.commons.proc.XssSqlFilterProcessor",
|
||||
"io.v.nutz.web.commons.proc.NutShiroProcessor",
|
||||
"org.nutz.mvc.impl.processor.AdaptorProcessor",
|
||||
"org.nutz.mvc.impl.processor.MethodInvokeProcessor",
|
||||
"org.nutz.mvc.impl.processor.ViewProcessor"
|
||||
],
|
||||
"error" : 'io.v.nutz.web.commons.proc.WkFailProcessor'
|
||||
}
|
||||
};
|
||||
@@ -1,50 +0,0 @@
|
||||
/* cms_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* cms_menu_02 */
|
||||
update sys_menu set location=8 where path='0002'
|
||||
/* cms_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('02e86a61e99746bea34236ea73dd52a5','','0003','CMS','CMS','menu','','','ti-world','1','0','cms',NULL,'9','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895671','0')
|
||||
/* cms_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('077cb6be4c7c41cc8955ee045a4f0286','68cdbf694f71445c8587a20234d6fe31','0003000300020001','添加链接','Add','data','','','','0','0','cms.link.link.add',NULL,'47','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897043','0')
|
||||
/* cms_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('17500ef3a9e44b4fabb240162a164fcb','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020003','删除文章','Delete','data','','','','0','0','cms.content.article.delete',NULL,'40','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896170','0')
|
||||
/* cms_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('31ed2243077c44448cce26abfd5ae574','9822bafbe3454dfd8e8b974ebc304d03','0003000300010002','修改分类','Edit','data','','','','0','0','cms.link.class.edit',NULL,'44','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896957','0')
|
||||
/* cms_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('33aed9298643424783116e0cf0f7fcbe','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020001','添加文章','Add','data','','','','0','0','cms.content.article.add',NULL,'38','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896151','0')
|
||||
/* cms_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('36e0faf5062b4f6b95d4167cbb1f8fea','68cdbf694f71445c8587a20234d6fe31','0003000300020002','修改链接','Edit','data','','','','0','0','cms.link.link.edit',NULL,'48','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897051','0')
|
||||
/* cms_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3c24111091ad4a70ad2d9cc361311d2f','68cdbf694f71445c8587a20234d6fe31','0003000300020003','删除链接','Delete','data','','','','0','0','cms.link.link.delete',NULL,'49','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897060','0')
|
||||
/* cms_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3f330d729ca34dc9825c46122be1bfae','02e86a61e99746bea34236ea73dd52a5','00030003','广告链接','AD','menu','','','ti-link','1','0','cms.link',NULL,'41','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468896230','0')
|
||||
/* cms_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4781372b00bb4d52b429b58e72b80c68','b2631bbdbf824cc4b74d819c87962c0d','0003000200010001','添加栏目','Add','data','','','','0','0','cms.content.channel.add',NULL,'33','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896049','0')
|
||||
/* cms_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('50ba60ee650e4c739e6abc3ab71e4960','b2631bbdbf824cc4b74d819c87962c0d','0003000200010004','栏目排序','Sort','data','','','','0','0','cms.content.channel.sort',NULL,'36','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896092','0')
|
||||
/* cms_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6075fc0cf0ef441b9d93cc3cab3445bf','6b6de8c720c645a1808e1c3e9ccbfc90','000300020002','文章管理','Article','menu','/platform/cms/article','data-pjax','','1','0','cms.content.article',NULL,'37','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896141','0')
|
||||
/* cms_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('68cdbf694f71445c8587a20234d6fe31','3f330d729ca34dc9825c46122be1bfae','000300030002','链接管理','Link','menu','/platform/cms/link/link','data-pjax','','1','0','cms.link.link',NULL,'46','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897031','0')
|
||||
/* cms_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6b6de8c720c645a1808e1c3e9ccbfc90','02e86a61e99746bea34236ea73dd52a5','00030002','内容管理','Content','menu','','','ti-pencil-alt','1','0','cms.content',NULL,'31','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895990','0')
|
||||
/* cms_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7125a72beee34b21ab3df9bf01b7bce6','9822bafbe3454dfd8e8b974ebc304d03','0003000300010003','删除分类','Delete','data','','','','0','0','cms.link.class.delete',NULL,'45','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896968','0')
|
||||
/* cms_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('73a29d3f99224426b5a87c92da122275','d1e991ad38a8424daf9f7eb000ee27f4','0003000100010001','保存配置','Save','data','','','','0','0','cms.site.settings.save',NULL,'30','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895899','0')
|
||||
/* cms_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7db6207d0dab4d6e95a7eee4f2efe875','9822bafbe3454dfd8e8b974ebc304d03','0003000300010001','添加分类','Add','data','','','','0','0','cms.link.class.add',NULL,'43','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896947','0')
|
||||
/* cms_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9822bafbe3454dfd8e8b974ebc304d03','3f330d729ca34dc9825c46122be1bfae','000300030001','链接分类','Class','menu','/platform/cms/link/class','data-pjax','','1','0','cms.link.class',NULL,'42','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896932','0')
|
||||
/* cms_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b2631bbdbf824cc4b74d819c87962c0d','6b6de8c720c645a1808e1c3e9ccbfc90','000300020001','栏目管理','Channel','menu','/platform/cms/channel','data-pjax','','1','0','cms.content.channel',NULL,'32','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896018','0')
|
||||
/* cms_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d1e991ad38a8424daf9f7eb000ee27f4','d920314e925c451da6d881e7a29743b7','000300010001','网站配置','Settings','menu','/platform/cms/site','data-pjax','','1','0','cms.site.settings',NULL,'29','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895881','0')
|
||||
/* cms_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d920314e925c451da6d881e7a29743b7','02e86a61e99746bea34236ea73dd52a5','00030001','站点管理','Site','menu','','','ti-world','1','0','cms.site',NULL,'28','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895821','0')
|
||||
/* cms_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e461c62a1d5441619cd35612f3b40691','b2631bbdbf824cc4b74d819c87962c0d','0003000200010002','修改栏目','Edit','data','','','','0','0','cms.content.channel.edit',NULL,'34','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896060','0')
|
||||
/* cms_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ef9f436c61654ec09efbfa79a40061cf','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020002','修改文章','Edit','data','','','','0','0','cms.content.article.edit',NULL,'39','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896159','0')
|
||||
/* cms_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('f6fba69c3b704d79834b8bd2cc753729','b2631bbdbf824cc4b74d819c87962c0d','0003000200010003','删除栏目','Delete','data','','','','0','0','cms.content.channel.delete',NULL,'35','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896072','0')
|
||||
@@ -1,103 +0,0 @@
|
||||
/* wx_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* wx_menu_02 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b0edc6861a494b79b97990dc05f0a524','','0002','微信','Wechat','menu','','','fa fa-weixin','1','0','wx',NULL,'8','1','','1467471229','0')
|
||||
/* wx_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e4256d7b0ffc4a02906cf900322b6213','b0edc6861a494b79b97990dc05f0a524','00020001','微信会员','Member','menu','','','fa fa-user','1','0','wx.user',NULL,'1','1','','1467471292','0')
|
||||
/* wx_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b19b23b0459a4754bf1fb8cb234450f2','e4256d7b0ffc4a02906cf900322b6213','000200010001','会员列表','List','menu','/platform/wx/user/index','data-pjax','','1','0','wx.user.list',NULL,'2','0','','1467471357','0')
|
||||
/* wx_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4dc997fef71e4862b9db22de8e99a618','b19b23b0459a4754bf1fb8cb234450f2','0002000100010001','同步会员信息','Sync','data','','','','0','0','wx.user.list.sync',NULL,'0','0','','1467473044','0')
|
||||
/* wx_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9f20a757a6bc40ddbb650c70debbf660','b0edc6861a494b79b97990dc05f0a524','00020002','消息管理','Message','menu','','','ti-pencil-alt','1','0','wx.msg',NULL,'3','1','','1467471415','0')
|
||||
/* wx_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('f426468abf714b1599729f8c36ebbb0d','9f20a757a6bc40ddbb650c70debbf660','000200020001','会员消息','Msg','menu','/platform/wx/msg/user','data-pjax','','1','0','wx.msg.user',NULL,'4','1','','1467471478','0')
|
||||
/* wx_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('1734e586e96941268a4c5248b593cef9','f426468abf714b1599729f8c36ebbb0d','0002000200010001','回复消息','Reply','data','','','','0','0','wx.msg.user.reply',NULL,'0','0','','1467473127','0')
|
||||
/* wx_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6bb17a41f6394ed0a8a6faf5ff781354','9f20a757a6bc40ddbb650c70debbf660','000200020002','群发消息','Mass','menu','/platform/wx/msg/mass','data-pjax','','1','0','wx.msg.mass',NULL,'5','0','','1467471561','0')
|
||||
/* wx_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('56d0658c5a8848818ac05e8ffa5c0570','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020001','添加图文','Add','data','','','','0','0','wx.msg.mass.addNews',NULL,'0','0','','1467473338','0')
|
||||
/* wx_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ce709456e867425297955b3c40406d7e','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020002','删除图文','Delete','data','','','','0','0','wx.msg.mass.delNews',NULL,'0','0','','1467473363','0')
|
||||
/* wx_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3099f497480c4b1987bce3f3a26c3fb4','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020003','群发消息','Push','data','','','','0','0','wx.msg.mass.pushNews',NULL,'0','0','','1467473400','0')
|
||||
/* wx_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4cd8e4e9519e4cff95465194fdcc8d88','b0edc6861a494b79b97990dc05f0a524','00020003','自动回复','AutoReply','menu','','','ti-back-left','1','0','wx.reply',NULL,'6','1','','1467471610','0')
|
||||
/* wx_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36fd6','4cd8e4e9519e4cff95465194fdcc8d88','000200030001','文本内容','Txt','menu','/platform/wx/reply/txt','data-pjax','','1','0','wx.reply.txt',NULL,'7','0','','1467471884','0')
|
||||
/* wx_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc2b6','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010001','添加文本','Add','data','','','','0','0','wx.reply.txt.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b9d5','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010002','修改文本','Edit','data','','','','0','0','wx.reply.txt.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7c040dfd8db347e5956a3bc1764653dc','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010003','删除文本','Delete','data','','','','0','0','wx.reply.txt.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36f99','4cd8e4e9519e4cff95465194fdcc8d88','000200030005','图片内容','Img','menu','/platform/wx/reply/img','data-pjax','','1','0','wx.reply.img',NULL,'8','0','','1467471884','0')
|
||||
/* wx_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc216','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050001','添加图片','Add','data','','','','0','0','wx.reply.img.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b925','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050002','修改图片','Edit','data','','','','0','0','wx.reply.img.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7c040dfd8db347e5956a3bc17646533c','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050003','删除图片','Delete','data','','','','0','0','wx.reply.img.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('17e1ee23ca1443f1bc886c2f5eb7c24b','4cd8e4e9519e4cff95465194fdcc8d88','000200030002','图文内容','News','menu','/platform/wx/reply/news','data-pjax','','1','0','wx.reply.news',NULL,'9','0','','1467471926','0')
|
||||
/* wx_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2275cb125710414e91b617dd7c62f12c','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020001','添加图文','add','data','','','','0','0','wx.reply.news.add',NULL,'0','0','','1467473585','0')
|
||||
/* wx_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0a972ce655cb4c84809d58668b655900','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020002','修改图文','Edit','data','','','','0','0','wx.reply.news.edit',NULL,'0','0','','1467473596','0')
|
||||
/* wx_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fc52d5284b8f4522802383c1ef732242','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020003','删除图文','Delete','data','','','','0','0','wx.reply.news.delete',NULL,'0','0','','1467473606','0')
|
||||
/* wx_menu_26 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2cb327ad59b140828fd26eb2a46cb948','4cd8e4e9519e4cff95465194fdcc8d88','000200030003','关注自动回复','Follow','menu','/platform/wx/reply/conf/follow','data-pjax','','1','0','wx.reply.follow',NULL,'10','0','','1467472280','0')
|
||||
/* wx_menu_27 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('dd965b2c1dfd493fb5efc7e4bcac99d4','2cb327ad59b140828fd26eb2a46cb948','0002000300030001','添加绑定','Add','data','','','','0','0','wx.reply.follow.add',NULL,'0','0','','1467474026','0')
|
||||
/* wx_menu_28 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('30a5e70a1456447ebf90b5546e9bc321','2cb327ad59b140828fd26eb2a46cb948','0002000300030002','修改绑定','Edit','data','','','','0','0','wx.reply.follow.edit',NULL,'0','0','','1467474056','0')
|
||||
/* wx_menu_29 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2a63040409094f1e9dc535dd78ce15b7','2cb327ad59b140828fd26eb2a46cb948','0002000300030003','删除绑定','Delete','data','','','','0','0','wx.reply.follow.delete',NULL,'0','0','','1467474080','0')
|
||||
/* wx_menu_30 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0706112ff5dc46e388064a99bcdb0561','4cd8e4e9519e4cff95465194fdcc8d88','000200030004','关键词回复','Keyword','menu','/platform/wx/reply/conf/keyword','data-pjax','','1','0','wx.reply.keyword',NULL,'11','0','','1467472362','0')
|
||||
/* wx_menu_31 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e864c78aba63448892cbcb6a3a7f4da7','0706112ff5dc46e388064a99bcdb0561','0002000300040001','添加绑定','Add','data','','','','0','0','wx.reply.keyword.add',NULL,'0','0','','1467474113','0')
|
||||
/* wx_menu_32 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ff6cd243a77c4ae98dacf6149c816c75','0706112ff5dc46e388064a99bcdb0561','0002000300040002','修改绑定','Edit','data','','','','0','0','wx.reply.keyword.edit',NULL,'0','0','','1467474125','0')
|
||||
/* wx_menu_33 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('733d3f35d49f45af99ca9220048583ba','0706112ff5dc46e388064a99bcdb0561','0002000300040003','删除绑定','Delete','data','','','','0','0','wx.reply.keyword.delete',NULL,'0','0','','1467474136','0')
|
||||
/* wx_menu_34 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('bcf64d623fdd4519ae345b7a08c071a1','b0edc6861a494b79b97990dc05f0a524','00020004','微信配置','Config','menu','','','fa fa-weixin','1','0','wx.conf',NULL,'12','1','','1467472498','0')
|
||||
/* wx_menu_35 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('66cc21d7ce104dd6877cbce114c59fb3','bcf64d623fdd4519ae345b7a08c071a1','000200040001','帐号配置','Account','menu','/platform/wx/conf/account','data-pjax','','1','0','wx.conf.account',NULL,'13','0','','1467472624','0')
|
||||
/* wx_menu_36 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('309dc29ad3c34408a68df8f867a5c9ff','66cc21d7ce104dd6877cbce114c59fb3','0002000400010001','添加帐号','Add','data','','','','0','0','wx.conf.account.add',NULL,'0','0','','1467474187','0')
|
||||
/* wx_menu_37 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('96554b09a2dd4f82bab7546fa59acd35','66cc21d7ce104dd6877cbce114c59fb3','0002000400010002','修改帐号','Edit','data','','','','0','0','wx.conf.account.edit',NULL,'0','0','','1467474197','0')
|
||||
/* wx_menu_38 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d568f4c2b687404e8aec7b9edcae5767','66cc21d7ce104dd6877cbce114c59fb3','0002000400010003','删除帐号','Delete','data','','','','0','0','wx.conf.account.delete',NULL,'0','0','','1467474209','0')
|
||||
/* wx_menu_39 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2fab774f8b6d40cb9d7e187babab2d91','bcf64d623fdd4519ae345b7a08c071a1','000200040002','菜单配置','Menu','menu','/platform/wx/conf/menu','data-pjax','','1','0','wx.conf.menu',NULL,'14','0','','1467472649','0')
|
||||
/* wx_menu_40 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('45d958ca78304f25b51f6c71cf66f6d8','2fab774f8b6d40cb9d7e187babab2d91','0002000400020001','添加菜单','Add','data','','','','0','0','wx.conf.menu.add',NULL,'0','0','','1467474283','0')
|
||||
/* wx_menu_41 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('44da90bc76a5419a841f4924333f7a66','2fab774f8b6d40cb9d7e187babab2d91','0002000400020002','修改菜单','Edit','data','','','','0','0','wx.conf.menu.edit',NULL,'0','0','','1467474294','0')
|
||||
/* wx_menu_42 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9a9557177d334c209cf73c3817fe3b63','2fab774f8b6d40cb9d7e187babab2d91','0002000400020003','删除菜单','Delete','data','','','','0','0','wx.conf.menu.delete',NULL,'0','0','','1467474304','0')
|
||||
/* wx_menu_43 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0a43d291e0c94ad88c8b690009279e34','2fab774f8b6d40cb9d7e187babab2d91','0002000400020004','保存排序','Save','data','','','','0','0','wx.conf.menu.sort',NULL,'0','0','','1467474314','0')
|
||||
/* wx_menu_44 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('5244f5c38eb24b918e9ad64d456daa38','2fab774f8b6d40cb9d7e187babab2d91','0002000400020005','推送到微信','Push','data','','','','0','0','wx.conf.menu.push',NULL,'0','0','','1467474330','0')
|
||||
/* wx_menu_45 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6afc5075913d4df4b44a6476080e35a0','b0edc6861a494b79b97990dc05f0a524','00020005','模板消息','Template','menu','','','ti-notepad','1','0','wx.tpl',NULL,'50','1','','1470406797','0')
|
||||
/* wx_menu_46 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('1385ae887e5c4b8aa33fbf228be7f907','6afc5075913d4df4b44a6476080e35a0','000200050001','模板编号','Id','menu','/platform/wx/tpl/id','data-pjax','','1','0','wx.tpl.id',NULL,'51','0','','1470406854','0')
|
||||
/* wx_menu_47 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e6b6224617b04090a76e46a4b048fb96','1385ae887e5c4b8aa33fbf228be7f907','0002000500010001','添加编号','Add','data','','','','0','0','wx.tpl.id.add',NULL,'54','0','','1470407055','0')
|
||||
/* wx_menu_48 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3888f05aa4064f788ba7ec51c495ce7c','1385ae887e5c4b8aa33fbf228be7f907','0002000500010002','删除编号','Delete','data','','','','0','0','wx.tpl.id.delete',NULL,'55','0','','1470407068','0')
|
||||
/* wx_menu_49 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('cabbe834a7474675b899e8442b5c2604','6afc5075913d4df4b44a6476080e35a0','000200050002','模板列表','List','menu','/platform/wx/tpl/list','data-pjax','','1','0','wx.tpl.list',NULL,'52','0','','1470406883','0')
|
||||
/* wx_menu_50 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('a11163584dfe456cbfd6fb2d4b74391b','cabbe834a7474675b899e8442b5c2604','0002000500020001','获取列表','Get','data','','','','0','0','wx.tpl.list.get',NULL,'56','0','','1470407390','0')
|
||||
/* wx_menu_51 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c76a84f871d047db955dd1465c845ac1','6afc5075913d4df4b44a6476080e35a0','000200050003','发送记录','Log','menu','/platform/wx/tpl/log','data-pjax','','1','0','wx.tpl.log',NULL,'53','0','','1470406926','0')
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
-- 生日祝福模块初始化脚本
|
||||
-- 适用数据库:MySQL
|
||||
-- 说明:
|
||||
-- 1. 后台筛选项复用系统已有字典:UserState、UserType,避免覆盖现有人员口径。
|
||||
-- 2. 菜单和角色授权采用幂等写法,可重复执行。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `blessing` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'id',
|
||||
`blessingName` varchar(32) DEFAULT NULL COMMENT '祝福名称',
|
||||
`activityGroupId` varchar(32) DEFAULT NULL COMMENT '发送范围',
|
||||
`blessingMode` varchar(32) DEFAULT NULL COMMENT '祝福模式',
|
||||
`isSend` varchar(2) DEFAULT NULL COMMENT '是否发送,0未开启,1进行中,2,已完成',
|
||||
`sendTypes` json DEFAULT NULL COMMENT '发送方式',
|
||||
`blessingContent` text COMMENT '祝福内容',
|
||||
`blessingCron` text COMMENT 'cron表达式',
|
||||
`applyDate` varchar(30) DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福计划表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `blessing_user` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'id',
|
||||
`userId` varchar(32) DEFAULT NULL COMMENT '接收人ID',
|
||||
`blessingId` varchar(32) DEFAULT NULL COMMENT '祝福ID',
|
||||
`applyDate` varchar(32) DEFAULT NULL COMMENT '发送时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_blessing_user_userId` (`userId`),
|
||||
KEY `idx_blessing_user_blessingId` (`blessingId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福发送人员表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `blessing_gift` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`giftName` varchar(50) DEFAULT NULL COMMENT '礼物名称',
|
||||
`fileName` varchar(50) DEFAULT NULL COMMENT '礼物文件名称',
|
||||
`files` json DEFAULT NULL COMMENT '礼物图片',
|
||||
`sortField` varchar(10) DEFAULT NULL COMMENT '排序字段',
|
||||
`createBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createDate` varchar(50) DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='祝福礼物表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `greeting` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`birthday` varchar(4) DEFAULT NULL COMMENT '职工生日',
|
||||
`userId` varchar(32) DEFAULT NULL COMMENT '职工ID',
|
||||
`username` varchar(32) DEFAULT NULL COMMENT '职工姓名',
|
||||
`loginname` varchar(32) DEFAULT NULL COMMENT '职工编号',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_greeting_userId` (`userId`),
|
||||
KEY `idx_greeting_birthday` (`birthday`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福中间表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `greeting_info` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`presenter` varchar(32) DEFAULT NULL COMMENT '赠送者ID',
|
||||
`received` varchar(32) DEFAULT NULL COMMENT '收到者ID',
|
||||
`giftId` varchar(32) DEFAULT NULL COMMENT '礼物ID',
|
||||
`giftTime` varchar(32) DEFAULT NULL COMMENT '送礼时间',
|
||||
`message` varchar(255) DEFAULT NULL COMMENT '祝福语',
|
||||
`isSend` tinyint(1) DEFAULT '0' COMMENT '是否发送贺卡',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_greeting_info_received` (`received`),
|
||||
KEY `idx_greeting_info_presenter` (`presenter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日礼物记录表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_birthday_config` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'id',
|
||||
`picUrl` varchar(100) DEFAULT NULL COMMENT '图片地址',
|
||||
`birthdayUrl` varchar(100) DEFAULT NULL COMMENT '生日贺卡地址',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
|
||||
`opBy` varchar(255) DEFAULT NULL COMMENT 'opBy',
|
||||
`opAt` varchar(255) DEFAULT NULL COMMENT 'opAt',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福配置表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_birthday_msg_log` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'id',
|
||||
`pushTime` varchar(50) DEFAULT NULL COMMENT '推送时间',
|
||||
`msgTitle` varchar(100) DEFAULT NULL COMMENT '消息标题',
|
||||
`msgContent` text COMMENT '消息内容',
|
||||
`receiveBy` varchar(50) DEFAULT NULL COMMENT '接收人',
|
||||
`receiveName` varchar(50) DEFAULT NULL COMMENT '接收人姓名',
|
||||
`pushBy` varchar(50) DEFAULT NULL COMMENT '推送人',
|
||||
`pushByName` varchar(50) DEFAULT NULL COMMENT '推送人姓名',
|
||||
`pushType` varchar(50) DEFAULT NULL COMMENT '推送人类型',
|
||||
`link` varchar(500) DEFAULT NULL COMMENT '卡片链接',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
|
||||
`opBy` varchar(255) DEFAULT NULL COMMENT 'opBy',
|
||||
`opAt` varchar(255) DEFAULT NULL COMMENT 'opAt',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_birthday_msg_log_receiveBy` (`receiveBy`),
|
||||
KEY `idx_user_birthday_msg_log_pushTime` (`pushTime`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生日祝福消息日志表';
|
||||
|
||||
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'GreetingTime', '15', '生日祝福查询时间范围:当天起未来N天', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'GreetingTime');
|
||||
|
||||
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'BirthdayAutoSendEnabled', '1', '生日祝福是否自动发送', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendEnabled');
|
||||
|
||||
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'BirthdayAutoSendTitle', '请点击查收您的生日福利', '生日祝福自动发送标题', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendTitle');
|
||||
|
||||
INSERT INTO `sys_config` (`configKey`, `configValue`, `note`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'BirthdayAutoSendContent', '校工会祝您:生日快乐!幸福安康', '生日祝福自动发送内容', '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey` = 'BirthdayAutoSendContent');
|
||||
|
||||
INSERT INTO `sys_task` (`id`, `name`, `jobClass`, `note`, `cron`, `data`, `exeAt`, `exeResult`, `disabled`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'bd000000000000000000000000000101', 'UserBirthdayJob', 'io.v.nutz.task.job.staffmanage.UserBirthdayJob', '生日当天自动发送生日福利通知', '0 0 9 * * ?', NULL, NULL, NULL, 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_task` WHERE `name` = 'UserBirthdayJob');
|
||||
|
||||
INSERT INTO `sys_task` (`id`, `name`, `jobClass`, `note`, `cron`, `data`, `exeAt`, `exeResult`, `disabled`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT 'bd000000000000000000000000000102', 'GreetingJob', 'io.v.nutz.task.job.brithday.GreetingJob', '生成生日祝福中间表数据', '0 0 1 * * ?', NULL, NULL, NULL, 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_task` WHERE `name` = 'GreetingJob');
|
||||
|
||||
SET @birthday_root_id := 'bd000000000000000000000000000201';
|
||||
SET @birthday_manage_id := 'bd000000000000000000000000000202';
|
||||
SET @birthday_msglog_id := 'bd000000000000000000000000000203';
|
||||
SET @birthday_config_id := 'bd000000000000000000000000000204';
|
||||
SET @birthday_autosend_id := 'bd000000000000000000000000000205';
|
||||
SET @birthday_export_id := 'bd000000000000000000000000000206';
|
||||
SET @birthday_root_id := IFNULL((SELECT `id` FROM `sys_menu` WHERE `permission` = 'staffManage.birthday' LIMIT 1), @birthday_root_id);
|
||||
SET @birthday_root_path := (SELECT `path` FROM `sys_menu` WHERE `id` = @birthday_root_id LIMIT 1);
|
||||
SET @birthday_root_path := IFNULL(@birthday_root_path, LPAD((SELECT IFNULL(MAX(CAST(`path` AS UNSIGNED)), 0) + 1 FROM `sys_menu` WHERE IFNULL(`parentId`, '') = '' AND LENGTH(`path`) = 4), 4, '0'));
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_root_id, '', @birthday_root_path, '生日祝福', 'BirthdayBlessing', 'menu', '', '', 'fa fa-birthday-cake', 1, 0, 'staffManage.birthday', '生日祝福模块', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 1, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_root_id OR `permission` = 'staffManage.birthday');
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_manage_id, @birthday_root_id, CONCAT(@birthday_root_path, '0001'), '生日管理', 'BirthdayManage', 'menu', '/platform/staffManage/birthday/manage', 'data-pjax', '', 1, 0, 'staffManage.birthday.manage', '生日人员查询、贺卡配置和通知发送', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_manage_id OR `permission` = 'staffManage.birthday.manage');
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_msglog_id, @birthday_root_id, CONCAT(@birthday_root_path, '0002'), '发送记录', 'BirthdayMsgLog', 'menu', '/platform/staffManage/birthday/msgLog', 'data-pjax', '', 1, 0, 'staffManage.birthday.msgLog', '生日祝福通知发送记录', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_msglog_id OR `permission` = 'staffManage.birthday.msgLog');
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_config_id, @birthday_root_id, CONCAT(@birthday_root_path, '0003'), '系统配置', 'BirthdayConfig', 'menu', '/platform/staffManage/birthday/config', 'data-pjax', '', 1, 0, 'staffManage.birthday.config', '生日祝福背景图、贺卡、倒计时和自动发送开关配置', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_config_id OR `permission` = 'staffManage.birthday.config');
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_autosend_id, @birthday_root_id, CONCAT(@birthday_root_path, '0004'), '自动发送祝福', 'BirthdayAutoSend', 'menu', '/platform/staffManage/birthday/autoSend', 'data-pjax', '', 1, 0, 'staffManage.birthday.autoSend', '生日祝福自动发送任务配置', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_autosend_id OR `permission` = 'staffManage.birthday.autoSend');
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||
SELECT @birthday_export_id, @birthday_root_id, CONCAT(@birthday_root_path, '0005'), '数据导出', 'BirthdayExport', 'menu', '/platform/staffManage/birthday/export', 'data-pjax', '', 1, 0, 'staffManage.birthday.export', '生日祝福人员名单和签名表导出', (SELECT IFNULL(MAX(`location`), 0) + 1 FROM (SELECT `location` FROM `sys_menu`) m), 0, '', UNIX_TIMESTAMP() * 1000, '', UNIX_TIMESTAMP() * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = @birthday_export_id OR `permission` = 'staffManage.birthday.export');
|
||||
|
||||
INSERT INTO `sys_role_menu` (`roleId`, `menuId`)
|
||||
SELECT r.`id`, m.`id`
|
||||
FROM `sys_role` r
|
||||
JOIN `sys_menu` m ON m.`permission` IN (
|
||||
'staffManage.birthday',
|
||||
'staffManage.birthday.manage',
|
||||
'staffManage.birthday.config',
|
||||
'staffManage.birthday.autoSend',
|
||||
'staffManage.birthday.msgLog',
|
||||
'staffManage.birthday.export'
|
||||
)
|
||||
WHERE r.`code` = 'sysadmin'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role_menu` rm
|
||||
WHERE rm.`roleId` = r.`id`
|
||||
AND rm.`menuId` = m.`id`
|
||||
);
|
||||
@@ -1,128 +0,0 @@
|
||||
|
||||
#user nobody;
|
||||
worker_processes auto;
|
||||
worker_rlimit_nofile 100000;
|
||||
|
||||
error_log logs/error.log warn;
|
||||
pid logs/nginx.pid;
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
client_max_body_size 10m;
|
||||
|
||||
log_format main '$remote_addr $remote_user [$time_local] "$request" '
|
||||
'"$http_host" $status $upstream_status '
|
||||
'$body_bytes_sent "$http_referer" '
|
||||
'"$http_cookie" "$http_x_forwarded_for" '
|
||||
'"$upstream_addr" $request_time $upstream_response_time';
|
||||
|
||||
#配置按天生成日志文件
|
||||
map $time_iso8601 $logdate {
|
||||
'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
|
||||
default 'date-not-found';
|
||||
}
|
||||
|
||||
access_log logs/access-$logdate.log main;
|
||||
error_log logs/error.log;
|
||||
|
||||
server_tokens off;
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
tcp_nodelay on;
|
||||
keepalive_timeout 60;
|
||||
client_header_timeout 10;
|
||||
client_body_timeout 10;
|
||||
reset_timedout_connection on;
|
||||
send_timeout 30;
|
||||
proxy_connect_timeout 60;
|
||||
proxy_read_timeout 60;
|
||||
proxy_send_timeout 60;
|
||||
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
gzip_comp_level 6;
|
||||
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
||||
gzip_min_length 1000;
|
||||
gzip_proxied any;
|
||||
gzip_vary on;
|
||||
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
|
||||
#设置访问的web应用列表
|
||||
upstream app{
|
||||
server 127.0.0.1:8080;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name zhgh.nsi.edu.cn;
|
||||
#rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
|
||||
|
||||
location /{
|
||||
proxy_pass http://app;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection keep-alive;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
|
||||
location /csrf.html{
|
||||
root html;
|
||||
}
|
||||
|
||||
#access_log logs/host.access.log main;
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#HTTPS server
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name zhgh.nsi.edu.cn;
|
||||
|
||||
ssl_certificate C:/env/ssl/_.nsi.edu.cn_bundle.crt;
|
||||
ssl_certificate_key C:/env/ssl/_.nsi.edu.cn.key;
|
||||
|
||||
ssl_session_cache shared:SSL:1m;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
location /{
|
||||
proxy_pass http://app;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection keep-alive;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
|
||||
location /csrf.html{
|
||||
root html;
|
||||
}
|
||||
|
||||
#access_log logs/host.access.log main;
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root html;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,193 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<?mso-application progid="Excel.Sheet"?>
|
||||
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
>
|
||||
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<Author>Administrator</Author>
|
||||
<LastAuthor>11386</LastAuthor>
|
||||
<Created>2019-11-13T03:15:50Z</Created>
|
||||
<LastSaved>2019-12-15T12:17:40Z</LastSaved>
|
||||
<Company>Microsoft</Company>
|
||||
<Version>16.00</Version>
|
||||
</DocumentProperties>
|
||||
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<AllowPNG/>
|
||||
</OfficeDocumentSettings>
|
||||
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<WindowHeight>5532</WindowHeight>
|
||||
<WindowWidth>16212</WindowWidth>
|
||||
<WindowTopX>32767</WindowTopX>
|
||||
<WindowTopY>32767</WindowTopY>
|
||||
<ProtectStructure>False</ProtectStructure>
|
||||
<ProtectWindows>False</ProtectWindows>
|
||||
</ExcelWorkbook>
|
||||
<Styles>
|
||||
<Style ss:ID="Default" ss:Name="Normal">
|
||||
<Alignment ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
<NumberFormat/>
|
||||
<Protection/>
|
||||
</Style>
|
||||
<Style ss:ID="s62">
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s64">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Font ss:FontName="方正小标宋简体" x:CharSet="134" ss:Size="16" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s66">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s68">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s70">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s71">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s72">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
</Styles>
|
||||
<Worksheet ss:Name="Sheet1">
|
||||
<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="999" x:FullColumns="1"
|
||||
x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="328.20000000000005"
|
||||
ss:DefaultRowHeight="14.55">
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="34.199999999999996"/>
|
||||
<Column ss:StyleID="s62" ss:Width="329.40000000000003"/>
|
||||
<Column ss:StyleID="s62" ss:Width="93"/>
|
||||
<Column ss:StyleID="s62" ss:Width="115.2"/>
|
||||
<Column ss:StyleID="s62" ss:Width="317.39999999999998"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="85.2"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="68.399999999999991"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="76.8"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="87.6"/>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="20.549999999999997">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s64"><Data ss:Type="String">${meetingName}提案承办分单位表</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s66"><Data ss:Type="String">${unitName}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s68"><Data ss:Type="String">${principal}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="43.199999999999996">
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">序号</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案案名</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">承办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">协办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人是否已签署反馈意见</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">备注</Data></Cell>
|
||||
</Row>
|
||||
<#list pros as xx>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:StyleID="s71"><Data ss:Type="Number">${xx_index+1}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.proposalName!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.username!}(${xx.unitname!})</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruMaster!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruSlave!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String"><#if xx.feedback??>已签署<#else>未签署</#if></Data></Cell>
|
||||
<Cell ss:StyleID="s70"/>
|
||||
</Row>
|
||||
</#list>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Selected/>
|
||||
<Panes>
|
||||
<Pane>
|
||||
<Number>3</Number>
|
||||
<ActiveRow>4</ActiveRow>
|
||||
<ActiveCol>7</ActiveCol>
|
||||
</Pane>
|
||||
</Panes>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet2">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet3">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Print>
|
||||
<ValidPrinterInfo/>
|
||||
<PaperSizeIndex>9</PaperSizeIndex>
|
||||
<HorizontalResolution>600</HorizontalResolution>
|
||||
<VerticalResolution>600</VerticalResolution>
|
||||
</Print>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
</Workbook>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,194 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<?mso-application progid="Excel.Sheet"?>
|
||||
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office"
|
||||
xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:html="http://www.w3.org/TR/REC-html40">
|
||||
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<Author>Administrator</Author>
|
||||
<LastAuthor>11386</LastAuthor>
|
||||
<Created>2019-11-13T03:15:50Z</Created>
|
||||
<LastSaved>2019-12-15T12:17:40Z</LastSaved>
|
||||
<Company>Microsoft</Company>
|
||||
<Version>16.00</Version>
|
||||
</DocumentProperties>
|
||||
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<AllowPNG/>
|
||||
</OfficeDocumentSettings>
|
||||
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<WindowHeight>5532</WindowHeight>
|
||||
<WindowWidth>16212</WindowWidth>
|
||||
<WindowTopX>32767</WindowTopX>
|
||||
<WindowTopY>32767</WindowTopY>
|
||||
<ProtectStructure>False</ProtectStructure>
|
||||
<ProtectWindows>False</ProtectWindows>
|
||||
</ExcelWorkbook>
|
||||
<Styles>
|
||||
<Style ss:ID="Default" ss:Name="Normal">
|
||||
<Alignment ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
<NumberFormat/>
|
||||
<Protection/>
|
||||
</Style>
|
||||
<Style ss:ID="s62">
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s64">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Font ss:FontName="方正小标宋简体" x:CharSet="134" ss:Size="16" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s66">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s68">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s70">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s71">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s72">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
</Styles>
|
||||
<Worksheet ss:Name="Sheet1">
|
||||
<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="999" x:FullColumns="1"
|
||||
x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="328.20000000000005"
|
||||
ss:DefaultRowHeight="14.55">
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="34.199999999999996"/>
|
||||
<Column ss:StyleID="s62" ss:Width="329.40000000000003"/>
|
||||
<Column ss:StyleID="s62" ss:Width="93"/>
|
||||
<Column ss:StyleID="s62" ss:Width="115.2"/>
|
||||
<Column ss:StyleID="s62" ss:Width="317.39999999999998"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="85.2"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="68.399999999999991"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="76.8"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="87.6"/>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="20.549999999999997">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s64"><Data ss:Type="String">${meetingName}提案承办分单位表</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s66"><Data ss:Type="String">${unitName}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s68"><Data ss:Type="String">${principal}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="43.199999999999996">
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">序号</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案案名</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">承办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">协办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人是否已签署反馈意见</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">备注</Data></Cell>
|
||||
</Row>
|
||||
<#list pros as xx>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:StyleID="s71"><Data ss:Type="Number">${xx_index+1}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.proposalName!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.username!}(${xx.unitname!})</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruMaster!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruSlave!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String"><#if xx.feedback??>已签署<#else>未签署</#if></Data></Cell>
|
||||
<Cell ss:StyleID="s70"/>
|
||||
</Row>
|
||||
</#list>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Selected/>
|
||||
<Panes>
|
||||
<Pane>
|
||||
<Number>3</Number>
|
||||
<ActiveRow>4</ActiveRow>
|
||||
<ActiveCol>7</ActiveCol>
|
||||
</Pane>
|
||||
</Panes>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet2">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet3">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Print>
|
||||
<ValidPrinterInfo/>
|
||||
<PaperSizeIndex>9</PaperSizeIndex>
|
||||
<HorizontalResolution>600</HorizontalResolution>
|
||||
<VerticalResolution>600</VerticalResolution>
|
||||
</Print>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
</Workbook>
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user