This commit is contained in:
那些花儿
2025-06-11 15:26:32 +08:00
parent e6764f8333
commit db1cb78152
14 changed files with 102 additions and 497 deletions
@@ -1,9 +1,5 @@
package com.budwk.app.base.utils; package com.budwk.app.base.utils;
import com.antherd.smcrypto.sm2.Sm2;
import com.antherd.smcrypto.sm3.Sm3;
import com.antherd.smcrypto.sm4.Sm4;
import com.antherd.smcrypto.sm4.Sm4Options;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.lang.Lang; import org.nutz.lang.Lang;
@@ -17,15 +13,6 @@ import java.security.MessageDigest;
@Slf4j @Slf4j
public class PwdUtil { public class PwdUtil {
/** 公钥 */
private static final String PUBLIC_KEY = "04298364ec840088475eae92a591e01284d1abefcda348b47eb324bb521bb03b0b2a5bc393f6b71dabb8f15c99a0050818b56b23f31743b93df9cf8948f15ddb54";
/** 私钥 */
private static final String PRIVATE_KEY = "3037723d47292171677ec8bd7dc9af696c7472bc5f251b2cec07e65fdef22e25";
/** SM4的对称秘钥(生产环境需要改成自己使用的) 16 进制字符串,要求为 128 比特 */
private static final String KEY = "0123456789abcdeffedcba9876543210";
public static String getPassword(String passowrd, String salt) { public static String getPassword(String passowrd, String salt) {
byte[] bytes = hash(passowrd.getBytes(), salt.getBytes(), 1024); byte[] bytes = hash(passowrd.getBytes(), salt.getBytes(), 1024);
if (bytes != null) { if (bytes != null) {
@@ -56,78 +43,4 @@ public class PwdUtil {
return null; return null;
} }
/**
* 解密方法
* 如果采用加密机的方法,用try catch 捕捉异常,返回原文值即可
* @param str 密文
* @return 解密后的明文
*/
public static String doSm2Decrypt(String str) {
// 解密
return Sm2.doDecrypt(str, PRIVATE_KEY);
}
/**
* 加密方法
* @param str 待加密数据
* @return 加密后的密文
*/
public static String doSm4CbcEncrypt(String str) {
// SM4 加密 cbc模式
Sm4Options sm4Options4 = new Sm4Options();
sm4Options4.setMode("cbc");
sm4Options4.setIv("fedcba98765432100123456789abcdef");
return Sm4.encrypt(str, KEY, sm4Options4);
}
/**
* 解密方法
* 如果采用加密机的方法,用try catch 捕捉异常,返回原文值即可
* @param str 密文
* @return 解密后的明文
*/
public static String doSm4CbcDecrypt(String str) {
// 解密,cbc 模式,输出 utf8 字符串
Sm4Options sm4Options8 = new Sm4Options();
sm4Options8.setMode("cbc");
sm4Options8.setIv("fedcba98765432100123456789abcdef");
String docString = Sm4.decrypt(str, KEY, sm4Options8);
if ("".equals(docString)) {
log.warn(">>> 字段解密失败,返回原文值:{}", str);
return str;
} else {
return docString;
}
}
/**
* 纯签名
* @param str 待签名数据
* @return 签名结果
*/
public static String doSignature(String str) {
return Sm2.doSignature(str, PRIVATE_KEY);
}
/**
* 通过杂凑算法取得hash值,用于做数据完整性保护
*
* @param str 字符串
* @return hash 值
*/
public static String doHashValue(String str) {
return Sm3.sm3(str);
}
public static void main(String[] args) {
// String pwd = "123456";
// String dbPwd = PwdUtil.doHashValue(pwd);
// String s = PwdUtil.doHashValue(PwdUtil.doSm2Decrypt("156d833f4340cf365045c11f99c71e99d0dc96339ed1824ea44115d15369120b906ff1a4dda2c5a5cdb5d23590e422945e2802bd9240a78fd53423b2a56f6c7d5ace50a7ecbbd42eda116efbd7d805d15714d1454812aeef4370c1f37092649211d598ffef38"));
// System.out.println(dbPwd);
// System.out.println(s);
String pwd = "dd3s@#2022";
String dbPwd = PwdUtil.doHashValue(pwd);
System.out.println(dbPwd);
}
} }
@@ -77,10 +77,9 @@ public class SysUserController {
return Result.error("密码必须包含大写字母、小写字母和数字,并且长度在8-20之间!"); return Result.error("密码必须包含大写字母、小写字母和数字,并且长度在8-20之间!");
} }
// String salt = R.UU32(); String salt = R.UU32();
// user.setSalt(salt); user.setSalt(salt);
// user.setPassword(PwdUtil.getPassword(user.getPassword(), salt)); user.setPassword(PwdUtil.getPassword(user.getPassword(), salt));
user.setPassword(PwdUtil.doHashValue(user.getPassword()));
user.setLoginCount(0); user.setLoginCount(0);
user.setUnitPath(sysUnitService.fetch(user.getUnitId()).getPath()); user.setUnitPath(sysUnitService.fetch(user.getUnitId()).getPath());
sysUserService.insert(user); sysUserService.insert(user);
@@ -140,9 +139,9 @@ public class SysUserController {
try { try {
Sys_user user = sysUserService.fetch(id); Sys_user user = sysUserService.fetch(id);
String pwd = R.captchaNumber(6); String pwd = R.captchaNumber(6);
String hashedPasswordBase64 = PwdUtil.doHashValue(user.getPassword()); String salt = R.UU32();
// String hashedPasswordBase64 = PwdUtil.getPassword(pwd, salt); String encryptPwd = PwdUtil.getPassword(pwd, salt);
sysUserService.update(Chain.make("password", hashedPasswordBase64), Cnd.where("id", "=", id)); sysUserService.update(Chain.make("password", encryptPwd).add("salt", salt), Cnd.where("id", "=", id));
sysUserService.deleteCache(user.getId()); sysUserService.deleteCache(user.getId());
req.setAttribute("loginname", user.getLoginname()); req.setAttribute("loginname", user.getLoginname());
return Result.success().addData(pwd); return Result.success().addData(pwd);
@@ -295,45 +294,6 @@ public class SysUserController {
} }
@At
@Ok("beetl:/platform/sys/user/info.html")
@SaCheckLogin
public void info(HttpServletRequest req) {
Sys_user user = sysUserService.fetch(SecurityUtil.getUserId());
req.setAttribute("user", user);
}
@At
@Ok("beetl:/platform/sys/user/custom.html")
@SaCheckLogin
public void custom() {
}
@At
@Ok("beetl:/platform/sys/user/mode.html")
@SaCheckLogin
public void mode() {
}
@At
@Ok("json")
@SaCheckLogin
public Object modeDo(@Param("mode") String mode, HttpServletRequest req) {
try {
if ("superadmin".equals(SecurityUtil.getUserUsername()) && Globals.MyConfig.getBoolean("AppDemoEnv")) {
return Result.error("演示环境,不予操作");
}
sysUserService.update(Chain.make("loginPjax", "true".equals(mode)), Cnd.where("id", "=", SecurityUtil.getUserId()));
Sys_user user = sysUserService.getUserById(SecurityUtil.getUserId());
sysUserService.deleteCache(user.getId());
return Result.success();
} catch (Exception e) {
return Result.error();
}
}
@At @At
@Ok("json") @Ok("json")
@SaCheckLogin @SaCheckLogin
@@ -341,19 +301,20 @@ public class SysUserController {
if ("superadmin".equals(SecurityUtil.getUserLoginname()) && Globals.MyConfig.getBoolean("AppDemoEnv")) { if ("superadmin".equals(SecurityUtil.getUserLoginname()) && Globals.MyConfig.getBoolean("AppDemoEnv")) {
return Result.error("演示环境,不予操作"); return Result.error("演示环境,不予操作");
} }
Sys_user user = sysUserService.getUserById(SecurityUtil.getUserId()); // Sys_user user = sysUserService.getUserById(SecurityUtil.getUserId());
String old = PwdUtil.getPassword(oldPassword, user.getSalt()); // String old = PwdUtil.getPassword(oldPassword, user.getSalt());
if (old.equals(user.getPassword())) { // if (old.equals(user.getPassword())) {
String salt = R.UU32(); // String salt = R.UU32();
String hashedPasswordBase64 = PwdUtil.getPassword(newPassword, salt); // String hashedPasswordBase64 = PwdUtil.getPassword(newPassword, salt);
user.setSalt(salt); // user.setSalt(salt);
user.setPassword(hashedPasswordBase64); // user.setPassword(hashedPasswordBase64);
sysUserService.update(Chain.make("salt", salt).add("password", hashedPasswordBase64), Cnd.where("id", "=", user.getId())); // sysUserService.update(Chain.make("salt", salt).add("password", hashedPasswordBase64), Cnd.where("id", "=", user.getId()));
sysUserService.deleteCache(user.getId()); // sysUserService.deleteCache(user.getId());
// return Result.success();
// } else {
// return Result.error();
// }
return Result.success(); return Result.success();
} else {
return Result.error();
}
} }
@At @At
@@ -171,32 +171,6 @@ public interface SysUserService extends BaseService<Sys_user> {
*/ */
Sys_user getUserAndMenuById(String userId); Sys_user getUserAndMenuById(String userId);
/**
* 通过用户名重置密码
*
* @param loginname 用户名
* @param password 新密码
* @throws BaseException
*/
void setPwdByLoginname(String loginname, String password) throws BaseException;
/**
* 通过用户ID重置密码
*
* @param id 用户ID
* @param password 新密码
* @throws BaseException
*/
void setPwdById(String id, String password) throws BaseException;
/**
* 设置用户自定义样式
*
* @param id 用户ID
* @param themeConfig 样式内容
*/
void setThemeConfig(String id, String themeConfig);
/** /**
* 更新用户登录信息 * 更新用户登录信息
* *
@@ -142,7 +142,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
// 新增教工,去初始化数据 // 新增教工,去初始化数据
String salt = R.UU32(); String salt = R.UU32();
u.setSalt(salt); u.setSalt(salt);
u.setPassword(PwdUtil.getPassword(R.UU32(), salt)); // 随机密码
String pwd = R.captchaNumber(6);
u.setPassword(PwdUtil.getPassword(pwd, salt));
u.setLoginCount(0); u.setLoginCount(0);
} else if (user != null) { } else if (user != null) {
// 修改数据 // 修改数据
@@ -212,6 +214,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
/** /**
* 构建变更的历史数据 * 构建变更的历史数据
*
* @param source * @param source
* @param user * @param user
* @param dictMap * @param dictMap
@@ -259,6 +262,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
/** /**
* 比较变更类型公共方法 * 比较变更类型公共方法
*
* @param source * @param source
* @param user * @param user
* @param changeTypes * @param changeTypes
@@ -290,6 +294,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
/** /**
* 判断是否是会员 * 判断是否是会员
*
* @param source * @param source
* @param user * @param user
*/ */
@@ -339,6 +344,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
/** /**
* 数据大批量更新 * 数据大批量更新
*
* @param needDoUpdateList 需要更新的数据 * @param needDoUpdateList 需要更新的数据
*/ */
private void massUpdatesAsync(List<Sys_user> needDoUpdateList) { private void massUpdatesAsync(List<Sys_user> needDoUpdateList) {
@@ -54,11 +54,11 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
for (Sys_user sysUser : sysUsers) { for (Sys_user sysUser : sysUsers) {
//重新设置 //重新设置
sysUser.setId(R.UU32()); sysUser.setId(R.UU32());
//密码设置 都走单点登录
sysUser.setPassword(R.UU32());
String salt = R.UU32(); String salt = R.UU32();
sysUser.setSalt(salt); sysUser.setSalt(salt);
sysUser.setPassword(PwdUtil.getPassword(sysUser.getPassword(), salt)); // 随机密码
String pwd = R.captchaNumber(6);
sysUser.setPassword(PwdUtil.getPassword(pwd, salt));
sysUser.setLoginCount(0); sysUser.setLoginCount(0);
} }
@@ -1,8 +1,11 @@
package com.budwk.app.sys.services.impl; package com.budwk.app.sys.services.impl;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.budwk.app.base.constant.RedisConstant; import com.budwk.app.base.constant.RedisConstant;
import com.budwk.app.base.enums.LoginType; import com.budwk.app.base.enums.LoginType;
import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.exception.BaseException;
@@ -297,9 +300,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
if (user == null) { if (user == null) {
throw new BaseException("用户不存在"); throw new BaseException("用户不存在");
} }
String hashedPassword = PwdUtil.doHashValue(PwdUtil.doSm2Decrypt(passowrd)); // base64解码密码
String decodePwd = Base64Decoder.decodeStr(passowrd);
String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt());
if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) { if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) {
// throw new BaseException("密码不正确"); throw new BaseException("密码不正确");
} }
user = this.fetchLinks(user, "unit"); user = this.fetchLinks(user, "unit");
if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) { if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) {
@@ -368,36 +373,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
return user; return user;
} }
@Override
public void setPwdByLoginname(String loginname, String password) throws BaseException {
Sys_user user = this.fetch(Cnd.where("loginname", "=", loginname));
if (user == null) {
throw new BaseException("用户不存在");
}
String salt = R.UU32();
this.update(Chain.make("salt", salt).add("password", PwdUtil.getPassword(password, salt)),
Cnd.where("loginname", "=", loginname));
this.deleteCache(user.getId());
}
@Override
public void setPwdById(String id, String password) throws BaseException {
Sys_user user = this.fetch(id);
if (user == null) {
throw new BaseException("用户不存在");
}
String salt = R.UU32();
this.update(Chain.make("salt", salt).add("password", PwdUtil.getPassword(password, salt)),
Cnd.where("id", "=", id));
this.deleteCache(user.getId());
}
@Override
public void setThemeConfig(String id, String themeConfig) {
this.update(Chain.make("themeConfig", themeConfig), Cnd.where("id", "=", id));
this.deleteCache(id);// 清一下缓存
}
@Override @Override
public void setLoginInfo(String userId, String ip) { public void setLoginInfo(String userId, String ip) {
this.update(Chain.make("loginIp", ip).add("loginAt", System.currentTimeMillis()).addSpecial("loginCount", "+1"), Cnd.where("id", "=", userId)); this.update(Chain.make("loginIp", ip).add("loginAt", System.currentTimeMillis()).addSpecial("loginCount", "+1"), Cnd.where("id", "=", userId));
@@ -415,7 +390,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
.set("unitId", Strings.sNull(user.getUnitId())) .set("unitId", Strings.sNull(user.getUnitId()))
.set("unitPath", Strings.sNull(user.getUnitPath())) .set("unitPath", Strings.sNull(user.getUnitPath()))
.set("unionId", ObjectUtil.isEmpty(user.getUnion()) ? "" : user.getUnion().getId()); .set("unionId", ObjectUtil.isEmpty(user.getUnion()) ? "" : user.getUnion().getId());
// setLoginInfo(user.getId(), Lang.getIP(request));
Sys_log sysLog = new Sys_log(); Sys_log sysLog = new Sys_log();
sysLog.setType("info"); sysLog.setType("info");
sysLog.setTag("用户登陆"); sysLog.setTag("用户登陆");
@@ -435,7 +409,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
dao().update(Sys_user.class, Chain.make("wxOpenId", wxOpenId), Cnd.where("id", "=", user.getId())); dao().update(Sys_user.class, Chain.make("wxOpenId", wxOpenId), Cnd.where("id", "=", user.getId()));
} }
String redirect = request.getParameter("redirect"); String redirect = request.getParameter("redirect");
if (StrUtil.isNotBlank(redirect)) { if (StrUtil.isNotBlank(redirect)) {
return Globals.AppDomain + redirect; return Globals.AppDomain + redirect;
@@ -329,8 +329,8 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
user = new Sys_user(); user = new Sys_user();
//重新设置 //重新设置
user.setId(R.UU32()); user.setId(R.UU32());
//密码设置 都走单点登录 user.setSalt(R.UU32());
user.setPassword(PwdUtil.doHashValue(R.UU16())); user.setPassword(PwdUtil.getPassword(R.captchaNumber(6),user.getSalt()));
user.setLoginCount(0); user.setLoginCount(0);
needInsertUser.add(user.getLoginname()); needInsertUser.add(user.getLoginname());
} }
@@ -349,7 +349,7 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
user.setUserState(v.getUserState()); user.setUserState(v.getUserState());
} }
if (StrUtil.isNotBlank(v.getPersonType())) { if (StrUtil.isNotBlank(v.getPersonType())) {
// user.setPersonType(v.getPersonType()); user.setPersonType(v.getPersonType());
} }
user.setUnitId(unitId); user.setUnitId(unitId);
// user.setThreeUnitId(threeUnitId); // user.setThreeUnitId(threeUnitId);
@@ -32,6 +32,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json; import org.nutz.json.Json;
import org.nutz.lang.Lang; import org.nutz.lang.Lang;
@@ -420,26 +421,31 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
public Pagination notWelfareUserPageData(WelfareFilterUserPageForm pageForm) { public Pagination notWelfareUserPageData(WelfareFilterUserPageForm pageForm) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
id, u.id,
loginname, u.loginname,
username, u.username,
sex, u.sex,
birthday, u.birthday,
personType, u.personType,
preparedBy, u.preparedBy,
userState, u.userState,
unitId, u.unitId,
unitName, u.unitName,
unionId, u.unionId,
unionName, u.unionName,
member u.member
FROM FROM
vw_user vw_user u
LEFT JOIN welfare_list w ON u.id = w.userId AND w.projectId = @projectId
$condition $condition
"""); """);
sql.setParam("projectId", pageForm.getProjectId());
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.and("w.userId", "is", null);
if (StrUtil.isNotBlank(pageForm.getUserName())) { if (StrUtil.isNotBlank(pageForm.getUserName())) {
cnd.where().andLike("username", pageForm.getUserName()); cnd.where().andLike("u.username", pageForm.getUserName());
} }
if (StrUtil.isNotBlank(pageForm.getLoginName())) { if (StrUtil.isNotBlank(pageForm.getLoginName())) {
cnd.where().andLike("loginname", pageForm.getLoginName()); cnd.where().andLike("loginname", pageForm.getLoginName());
@@ -463,8 +469,6 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
cnd.and("id", "not in", Sqls.create("select userId from `welfare_list` where projectId = @projectId").setParam("projectId", pageForm.getProjectId()));
sql.setCondition(cnd); sql.setCondition(cnd);
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
} }
@@ -129,12 +129,11 @@
handleLogin() { handleLogin() {
this.$refs.loginForm.validate((valid) => { this.$refs.loginForm.validate((valid) => {
if (valid) { if (valid) {
const password = commonUtil.smCrypto().doSm2Encrypt(this.loginForm.password)
axios axios
.post("/platform/login/doLogin", null, { .post("/platform/login/doLogin", null, {
params: { params: {
...this.loginForm, ...this.loginForm,
password password: window.btoa(this.loginForm.password)
} }
}) })
.then((resp) => { .then((resp) => {
@@ -189,6 +188,7 @@
grid-template-columns: 1fr !important; grid-template-columns: 1fr !important;
padding: 0 !important; padding: 0 !important;
} }
.login-container .img { .login-container .img {
display: none !important; display: none !important;
} }
@@ -274,6 +274,7 @@
.login-container > div.img { .login-container > div.img {
display: none; display: none;
} }
.login-container .login-box .login-form { .login-container .login-box .login-form {
width: 100vw !important; width: 100vw !important;
} }
@@ -1,90 +0,0 @@
<div class="el-dialog__header">
<button type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close" class="el-dialog__headerbtn"><i
class="el-dialog__close el-icon el-icon-close"></i></button>
<h4 class="modal-title">${msg['index.custommenu']}</h4>
</div>
<div class="modal-body">
<div class="list-group" style="text-align: center;">
<table width="88%" id="menuTable">
<!--#
var firstMenus=@auth.getPrincipalProperty('firstMenus');
var secondMenus=@auth.getPrincipalProperty('secondMenus');
var customMenu=@auth.getPrincipalProperty('customMenu');
#-->
<!--#for(firstMenu in firstMenus){#-->
<tr>
<td width="20%" align="left"><strong><!--#if(lang=="zh_CN"){#-->${firstMenu.name}<!--#}else{#-->${firstMenu.aliasName}<!--#}#--></strong></td>
<td width="80%" align="left">
</td>
</tr>
<!--# if(!isEmpty(@secondMenus.get(firstMenu.path))){
for(secondMenu in @secondMenus.get(firstMenu.path)){
#-->
<tr>
<td width="20%" align="left" style="padding-left: 20px;"><!--#if(lang=="zh_CN"){#-->${secondMenu.name}<!--#}else{#-->${secondMenu.aliasName}<!--#}#--></td>
<td width="80%" align="left">
<!--# if(!isEmpty(@secondMenus.get(secondMenu.path))){
for(thMenu in @secondMenus.get(secondMenu.path)){ #-->
<input type="checkbox" value="${thMenu.id}" onclick="chk()" <!--#if(customMenu!=null&&@customMenu.indexOf(thMenu.id)>-1){#-->checked<!--#}#-->>
<!--#if(lang=="zh_CN"){#-->${thMenu.name}<!--#}else{#-->${thMenu.aliasName}<!--#}#-->
<!--#}}#-->
</td>
</tr>
<!--#}}#-->
<!--#}#-->
</table>
</div>
</div>
<div class="el-dialog__footer">
<span class="dialog-footer">
<button type="button" class="el-button el-button--default" data-dismiss="modal">
<span>${msg['system.cancel']}</span>
</button>
<button type="button" class="el-button el-button--primary" id="okCustom">
<span>${msg['system.confirm']}</span>
</button>
</span>
</div>
<script type="text/javascript">
function chk(){
var ids=[];
$("#menuTable").find("input[type=checkbox]").each(function(){
if($(this).prop("checked")){
ids.push($(this).val());
}
});
if(ids.length>5){
this.$message({
message: "最多可选择5个菜单",
type: 'error'
});
return ids;
}
return ids;
}
$(function () {
$("#okCustom").on("click",function(){
var ids =chk();
if (ids.length<6) {
$('#homeDetail').modal('hide');
$.post("${base}/platform/sys/user/customDo", {ids: ids.toString()}, function (data) {
if (data.code == 0) {
this.$message({
message: data.msg,
type: 'success'
});
setTimeout(function () {
window.location.reload();
},520);
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
}
});
});
</script>
@@ -1,87 +0,0 @@
<div id="infoApp">
<div class="el-dialog__header">
<button type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close" class="el-dialog__headerbtn">
<i class="el-dialog__close el-icon el-icon-close"></i>
</button>
<h4 class="modal-title">个人资料</h4>
</div>
<div class="modal-body">
<el-form :model="infoForm" ref="infoForm" :rules="infoRules" label-width="100px">
<el-row style="padding-bottom: 2px">
<el-alert title="请完善个人资料" type="warning"></el-alert>
</el-row>
<el-form-item label="姓名" prop="username">
<el-input size="small" maxlength="20" placeholder="姓名" v-model="infoForm.username" auto-complete="off" tabindex="1"></el-input>
</el-form-item>
<el-form-item label="手机号码" prop="mobile">
<el-input size="small" maxlength="11" placeholder="手机号码" v-model="infoForm.mobile" auto-complete="off" tabindex="2"></el-input>
</el-form-item>
<el-form-item label="电子邮箱" prop="email">
<el-input size="small" maxlength="50" placeholder="Email" v-model="infoForm.email" auto-complete="off" tabindex="3"></el-input>
</el-form-item>
</el-form>
</div>
<div class="el-dialog__footer">
<span class="dialog-footer">
<button type="button" class="el-button el-button--default" data-dismiss="modal">
<span>${msg['system.cancel']}</span>
</button>
<button type="button" class="el-button el-button--primary" @click="doInfo">
<span>${msg['system.confirm']}</span>
</button>
</span>
</div>
</div>
<script type="text/javascript">
new Vue({
el: "#infoApp",
data: function () {
return {
infoForm: {
username: "<!--#if(user.username!=user.mobile){#-->${user.username!}<!--#}#-->",
mobile: "${user.mobile!}",
email: "${user.email!}"
},
infoRules: {
username: [{ required: true, message: "请输入姓名", trigger: ["blur", "change"] }],
mobile: [
{ required: true, message: "请输入手机号码", trigger: ["blur", "change"] },
{ pattern: /^1[3456789]\d{9}$/, message: "请输入正确的手机号码" }
],
email: [
{ required: true, message: "请输入Email", trigger: ["blur", "change"] },
{ type: "email", message: "请输入正确的Email" }
]
}
}
},
methods: {
doInfo: function () {
var self = this
self.$refs["infoForm"].validate(function (valid) {
if (valid) {
$.post(
base + "/platform/sys/user/doChangeInfo",
self.infoForm,
function (data) {
if (data.code == 0) {
$("#homeDetail").modal("hide")
self.$message({
message: data.msg,
type: "success"
})
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}
})
}
}
})
</script>
@@ -1,60 +0,0 @@
<div class="el-dialog__header">
<button type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close" class="el-dialog__headerbtn"><i
class="el-dialog__close el-icon el-icon-close"></i></button>
<h4 class="modal-title">${msg['index.user.mode']}</h4>
</div>
<div class="modal-body">
<form id="modeForm" role="form" class="form-horizontal parsley-form" method="post">
<div class="row" style="padding-top: 10px;">
<div class="col-lg-12">
<div class="form">
<div class="col-sm-8">
<input name="mode" value="true" type="radio"
<!--#if(@auth.getPrincipalProperty('loginPjax')){#-->checked<!--#}#--> > PJAX加载方式<br>优点:占用带宽少,加载速度快;<br>缺点:不能使用前进、后退功能。
</div>
</div>
</div>
</div>
<div class="row" style="padding-top: 10px;">
<div class="col-lg-12">
<div class="form">
<div class="col-sm-8">
<input name="mode" value="false" type="radio"
<!--#if(!@auth.getPrincipalProperty('loginPjax')){#-->checked<!--#}#--> > 传统加载方式<br>优点:可以使用前进、后退功能;<br>缺点:页面会重载、刷新,占用带宽大。
</div>
</div>
</div>
</div>
</form>
</div>
<div class="el-dialog__footer">
<span class="dialog-footer">
<button type="button" class="el-button el-button--default" data-dismiss="modal">
<span>${msg['system.cancel']}</span>
</button>
<button type="button" class="el-button el-button--primary" id="okMode">
<span>${msg['system.confirm']}</span>
</button>
</span>
</div>
<script type="text/javascript">
$(function () {
$("#okMode").on("click", function () {
$.post("${base}/platform/sys/user/modeDo", {mode: $("input[type='radio'][name='mode']:checked").val()}, function (data) {
if (data.code == 0) {
$('#homeDetail').modal('hide');
this.$message({
message: data.msg,
type: 'success'
});
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
});
});
</script>
@@ -115,6 +115,7 @@ const filterUser = {
@sort-change="pageOrder" @sort-change="pageOrder"
ref="tableRef" ref="tableRef"
row-key="id" row-key="id"
v-loading="tableLoading"
style="width: 100%"> style="width: 100%">
<el-table-column <el-table-column
:index="indexMethod" :index="indexMethod"
@@ -185,20 +186,21 @@ const filterUser = {
}, },
resetPageForm() { resetPageForm() {
this.pageForm.userName = null this.$set(this.pageForm, "userName", null)
this.pageForm.loginName = null this.$set(this.pageForm, "loginName", null)
this.pageForm.sex = null this.$set(this.pageForm, "sex", null)
this.pageForm.birthday = null this.$set(this.pageForm, "birthday", null)
this.pageForm.birthMonths = [] this.$set(this.pageForm, "birthMonths", [])
this.pageForm.unionId = null this.$set(this.pageForm, "unionId", null)
this.pageForm.unitId = null this.$set(this.pageForm, "unitId", null)
this.pageForm.personTypes = [] this.$set(this.pageForm, "personTypes", [])
this.pageForm.preparedBys = [] this.$set(this.pageForm, "preparedBys", [])
this.pageForm.userStates = [] this.$set(this.pageForm, "userStates", [])
this.pageForm.isMember = null this.$set(this.pageForm, "isMember", null)
}, },
pageData() { pageData() {
this.tableLoading = true
this.$axios this.$axios
.post("/platform/welfare/project/mange/filterUserPageData", { .post("/platform/welfare/project/mange/filterUserPageData", {
pageForm: JSON.stringify(this.pageForm) pageForm: JSON.stringify(this.pageForm)
@@ -211,6 +213,9 @@ const filterUser = {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
}) })
.finally(() => {
this.tableLoading = false
})
}, },
onSubmit() { onSubmit() {
this.$confirm("当前筛选出" + this.pageForm.totalCount + "条数据,您确认添加到福利名单吗?", "提示", { this.$confirm("当前筛选出" + this.pageForm.totalCount + "条数据,您确认添加到福利名单吗?", "提示", {
@@ -118,6 +118,7 @@ const addUser = {
@sort-change="pageOrder" @sort-change="pageOrder"
ref="tableRef" ref="tableRef"
row-key="id" row-key="id"
v-loading="tableLoading"
style="width: 100%"> style="width: 100%">
<el-table-column <el-table-column
:index="indexMethod" :index="indexMethod"
@@ -192,17 +193,17 @@ const addUser = {
}, },
resetPageForm() { resetPageForm() {
this.pageForm.userName = null this.$set(this.pageForm, "userName", null)
this.pageForm.loginName = null this.$set(this.pageForm, "loginName", null)
this.pageForm.sex = null this.$set(this.pageForm, "sex", null)
this.pageForm.birthday = null this.$set(this.pageForm, "birthday", null)
this.pageForm.birthMonths = [] this.$set(this.pageForm, "birthMonths", [])
this.pageForm.unionId = null this.$set(this.pageForm, "unionId", null)
this.pageForm.unitIds = [] this.$set(this.pageForm, "unitId", null)
this.pageForm.personTypes = [] this.$set(this.pageForm, "personTypes", [])
this.pageForm.preparedBys = [] this.$set(this.pageForm, "preparedBys", [])
this.pageForm.userStates = [] this.$set(this.pageForm, "userStates", [])
this.pageForm.isMember = null this.$set(this.pageForm, "isMember", null)
}, },
async unionIdChange(val) { async unionIdChange(val) {
@@ -214,6 +215,7 @@ const addUser = {
}, },
pageData() { pageData() {
this.tableLoading = true
this.$axios this.$axios
.post("/platform/welfare/list/mange/notWelfareUserPageData", { .post("/platform/welfare/list/mange/notWelfareUserPageData", {
pageForm: JSON.stringify(this.pageForm) pageForm: JSON.stringify(this.pageForm)
@@ -226,6 +228,9 @@ const addUser = {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
}) })
.finally(() => {
this.tableLoading = false
})
}, },
onSubmit() { onSubmit() {
this.$confirm("当前筛选出" + this.pageForm.totalCount + "条数据,您确认添加到福利名单吗?", "提示", { this.$confirm("当前筛选出" + this.pageForm.totalCount + "条数据,您确认添加到福利名单吗?", "提示", {