pref#ncu_commit
This commit is contained in:
@@ -68,7 +68,7 @@ public class SysLoginController {
|
||||
@Ok("re")
|
||||
@ApiOperation("用户本地登录页面")
|
||||
@Filters
|
||||
// @SaCheckLogin
|
||||
@SaCheckLogin
|
||||
public String login(HttpServletRequest req, HttpSession session) {
|
||||
return "beetl:/platform/sys/login.html";
|
||||
}
|
||||
@@ -76,7 +76,7 @@ public class SysLoginController {
|
||||
@At
|
||||
@Ok("re")
|
||||
@Filters
|
||||
// @SaCheckLogin
|
||||
@SaCheckLogin
|
||||
public String h5() {
|
||||
return "beetl:/platform/sys/login.html";
|
||||
}
|
||||
@@ -92,7 +92,7 @@ public class SysLoginController {
|
||||
@At("/doLogin")
|
||||
@Ok("json")
|
||||
@ApiOperation("用户本地账号密码登录")
|
||||
// @SaCheckLogin
|
||||
@SaCheckLogin
|
||||
public Object doLogin(@Param("username") String username,
|
||||
@Param("password") String password,
|
||||
@Param("platformKey") String captchaKey,
|
||||
|
||||
@@ -48,8 +48,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
* Created by wizzer on 2016/6/24.
|
||||
*/
|
||||
@@ -300,7 +298,7 @@ public class SysUnitController {
|
||||
)
|
||||
));
|
||||
}
|
||||
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0000"));
|
||||
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0"));
|
||||
|
||||
// NutMap menuMap = NutMap.NEW();
|
||||
// for (Sys_unit unit : list) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.budwk.app.sys.services.SysUserService;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
||||
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
@@ -174,6 +175,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
List<Sys_user> sysUsers = dao.query(Sys_user.class, Cnd.NEW().groupBy("loginname"));
|
||||
Map<String, Sys_user> userMap = sysUsers.stream().collect(Collectors.toMap(Sys_user::getLoginname, sysUser -> sysUser));
|
||||
|
||||
// 特殊人员,忽略更新
|
||||
List<String> specialStaffList = dao.query(SpecialStaff.class, Cnd.NEW()).stream().map(SpecialStaff::getUserId).toList();
|
||||
|
||||
|
||||
// 准备数据集合
|
||||
List<Sys_user> needDoUpdateList = new CopyOnWriteArrayList<>();
|
||||
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
|
||||
@@ -183,6 +188,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
|
||||
// 处理每条数据
|
||||
for (Sys_user_source source : sources) {
|
||||
|
||||
Sys_user user = userMap.get(source.getLoginname());
|
||||
|
||||
// 创建用户对象
|
||||
@@ -203,6 +209,11 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
// }
|
||||
needInitUserList.add(u);
|
||||
} else {
|
||||
|
||||
if (specialStaffList.contains(u.getId())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 修改现有用户
|
||||
u.setId(user.getId());
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
|
||||
String decodePwd = Base64Decoder.decodeStr(passowrd);
|
||||
String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt());
|
||||
if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) {
|
||||
// throw new BaseException("用户名或者密码不正确");
|
||||
throw new BaseException("用户名或者密码不正确");
|
||||
}
|
||||
user = this.fetchLinks(user, "unit");
|
||||
if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) {
|
||||
|
||||
+5
-8
@@ -109,19 +109,16 @@ public class SpecialStaffManageController {
|
||||
BeanUtil.copyProperties(specialStaffVo, staff);
|
||||
if (specialStaffVo.getIsManyUnit()!=null && specialStaffVo.getIsManyUnit()) {
|
||||
// 如果是多单位人员, 更改单位为工会关系
|
||||
user.setUnitId(specialStaffVo.getUnionRelationUnitId());
|
||||
// user.setThreeUnitId(specialStaffVo.getUnionRelationThreeUnitId());
|
||||
// user.setIsManyUnit(true);
|
||||
dao.updateIgnoreNull(user);
|
||||
dao.update(
|
||||
Sys_user.class,
|
||||
Chain.make("unitId", specialStaffVo.getUnionRelationUnitId()),
|
||||
Cnd.where(Sys_user::getId, "=", user.getId())
|
||||
);
|
||||
|
||||
staff.setPersonnelRelationUnitId(viewUser.getUnitId());
|
||||
staff.setPersonnelRelationUnitName(viewUser.getUnitName());
|
||||
staff.setPersonnelRelationUnionId(viewUser.getUnionId());
|
||||
staff.setPersonnelRelationUnionName(viewUser.getUnionName());
|
||||
// staff.setPersonnelRelationThreeUnitId(viewUser.getThreeUnitId());
|
||||
// staff.setPersonnelRelationThreeUnitName(viewUser.getThreeUnitName());
|
||||
// staff.setPersonnelRelationUnionGroupId(viewUser.getUnionGroupId());
|
||||
// staff.setPersonnelRelationUnionGroupName(viewUser.getUnionGroupName());
|
||||
}
|
||||
staff.setUserId(user.getId());
|
||||
dao.insertOrUpdate(staff);
|
||||
|
||||
-1
@@ -72,7 +72,6 @@ public class SpecialStaffManageServiceImpl extends BaseServiceImpl<SpecialStaff>
|
||||
|
||||
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("u.unitId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("u.userState", "=", pageForm.getUserState());
|
||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("s.specialStaffType", "=", pageForm.getSpecialStaffType());
|
||||
|
||||
@@ -1,34 +1,101 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style></style>
|
||||
<style scoped>
|
||||
.custom-tree {
|
||||
background: transparent;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
/* 节点行高调整 */
|
||||
.custom-tree .el-tree-node {
|
||||
margin: 2px 0;
|
||||
border-radius: 6px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
|
||||
/* 选中状态 */
|
||||
.custom-tree .el-tree-node.is-current > .el-tree-node__content {
|
||||
background: #e8f4ff;
|
||||
border-left: 3px solid #409eff;
|
||||
}
|
||||
|
||||
/* 节点内容区域 */
|
||||
.custom-tree .el-tree-node__content {
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
padding: 0 8px;
|
||||
border-radius: 6px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
/* 自定义节点内容 */
|
||||
.custom-tree-node {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
|
||||
/* 文件夹图标颜色优化 */
|
||||
.el-icon-folder {
|
||||
color: #909399;
|
||||
}
|
||||
.el-icon-folder-opened {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
/* 展开时图标旋转动画 */
|
||||
.custom-tree .el-tree-node__expand-icon {
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
.custom-tree .el-tree-node__expand-icon.expanded {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
/* 节点标签 */
|
||||
.node-label {
|
||||
flex: 1;
|
||||
font-size: 13px;
|
||||
color: #303133;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 禁用展开图标(当无子节点时) */
|
||||
.custom-tree .el-tree-node__expand-icon.is-leaf {
|
||||
color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-row type="flex" :gutter="20" style="height: calc(100vh - 126px)">
|
||||
<el-col :span="5">
|
||||
<el-card shadow="never">
|
||||
<el-input placeholder="输入关键字进行查找" v-model="filterText" clearable></el-input>
|
||||
<div style="max-height: calc(100vh - 200px); overflow-y: auto">
|
||||
<el-tree
|
||||
:data="treeData"
|
||||
ref="treeRef"
|
||||
:expand-on-click-node="false"
|
||||
:props="{
|
||||
children: 'children',
|
||||
label: 'name'
|
||||
}"
|
||||
node-key="id"
|
||||
@node-click="treeNodeClick"
|
||||
:filter-node-method="filterNode"
|
||||
highlight-current
|
||||
>
|
||||
<template slot-scope="{ node, data }">
|
||||
<span class="el-tree-node__label">
|
||||
<i class="el-icon-folder-opened" v-if="node.level===1"></i>
|
||||
<i class="el-icon-folder" v-else></i>
|
||||
{{node.label}}
|
||||
</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
<el-tree
|
||||
:data="treeData"
|
||||
ref="treeRef"
|
||||
:expand-on-click-node="false"
|
||||
:props="{ children: 'children', label: 'name' }"
|
||||
node-key="id"
|
||||
default-expand-all
|
||||
@node-click="treeNodeClick"
|
||||
:filter-node-method="filterNode"
|
||||
highlight-current
|
||||
class="custom-tree"
|
||||
>
|
||||
<template slot-scope="{ node, data }">
|
||||
<span class="custom-tree-node">
|
||||
<i class="el-icon-folder-opened" v-if="node.level===1"></i>
|
||||
<i class="el-icon-folder" v-else></i>
|
||||
<span class="node-label">{{ node.label }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const UNIT_MANAGE_TEMPLATE = {
|
||||
template: `
|
||||
template: /*language=HTML*/ `
|
||||
<div>
|
||||
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);">
|
||||
<el-row :gutter="10" type="flex">
|
||||
@@ -30,27 +30,37 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
|
||||
<el-dialog title="设置单位" :visible.sync="dialogVisible" :close-on-click-modal="false" width="40%" top="2%">
|
||||
<el-form :model="formData" ref="form" :rules="formRules" size="small" label-width="80px">
|
||||
<el-form-item v-if="formData.id === '' || formData.id === null || currentNode === 1" prop="parentId" label="上级单位" label-width="80px">
|
||||
<el-cascader :props="props" :options="options" v-model="parentUnit" placeholder="请选择上次单位,不选择则为顶级" style="width: 100%"></el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item v-else label="上级单位">
|
||||
<el-form-item label="上级单位">
|
||||
<el-input maxlength="100" disabled :value="currentData?.name" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="name" label="单位名称">
|
||||
<el-input maxlength="100" placeholder="请输入单位名称" v-model="formData.name" auto-complete="off" tabindex="2" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="name" label="单位名称">
|
||||
<el-input maxlength="100" placeholder="请输入单位名称" v-model="formData.name" auto-complete="off" tabindex="2" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item prop="aliasName" label="单位别名">-->
|
||||
<!-- <el-input maxlength="100" placeholder="请输入单位别名" v-model="formData.aliasName" auto-complete="off" tabindex="3" type="text"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item prop="unitcode" label="单位编码">
|
||||
<el-input maxlength="100" placeholder="请输入单位编码" v-model="formData.unitcode" auto-complete="off" tabindex="4" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="unitLevel" label="单位等级">
|
||||
<el-form-item prop="unitLevel" label="单位等级">
|
||||
<el-select v-model="formData.unitLevel" placeholder="请输入单位等级" style="width: 100%">
|
||||
<el-option v-if="unitLevel === 1" label="一级单位" :value="1"></el-option>
|
||||
<el-option v-if="unitLevel === 2" label="二级单位" :value="2"></el-option>
|
||||
<el-option v-if="unitLevel === 3" label="三级单位" :value="3"></el-option>
|
||||
<el-option v-if="unitLevel === 4" label="四级单位" :value="4"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="unionId" label="所属工会">
|
||||
<el-select v-model="formData.unionId" placeholder="请选择所属工会" style="width: 100%">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item prop="address" label="单位地址">-->
|
||||
<!-- <el-input maxlength="100" placeholder="请输入单位地址" v-model="formData.address" auto-complete="off" tabindex="5" type="text"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
@@ -88,6 +98,7 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
required: true
|
||||
}
|
||||
},
|
||||
store,
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
@@ -107,7 +118,7 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
formRules: {
|
||||
name: [{ required: true, message: "必填", trigger: "blur" }],
|
||||
unitcode: [{ required: true, message: "必填", trigger: "blur" }],
|
||||
unitLevel: [{ required: true, message: "必填", trigger: "blur" }],
|
||||
unitLevel: [{ required: false, message: "必填", trigger: "blur" }],
|
||||
email: [
|
||||
{ required: false, message: "单位邮箱", trigger: "blur" },
|
||||
{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }
|
||||
@@ -115,24 +126,8 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
},
|
||||
options: [],
|
||||
parentUnit: [],
|
||||
props: {
|
||||
lazy: true,
|
||||
checkStrictly: true,
|
||||
multiple: false,
|
||||
lazyLoad: function (node, resolve) {
|
||||
var url = base + "/platform/sys/unit/cascaderData"
|
||||
$.post(
|
||||
url,
|
||||
{ pid: node.value },
|
||||
function (data) {
|
||||
if (data.code === 0) {
|
||||
resolve(data.data)
|
||||
}
|
||||
},
|
||||
"json"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
unions: [],
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
@@ -148,26 +143,29 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
this.options = []
|
||||
},
|
||||
doHandle() {
|
||||
const self = this
|
||||
const url = this.formData.id ? "/platform/sys/unit/editDo" : "/platform/sys/unit/addDo"
|
||||
this.$refs["form"].validate(async function (valid) {
|
||||
if (valid) {
|
||||
if (!self.formData.id) {
|
||||
self.formData.parentId = self.parentUnit[self.parentUnit.length - 1] || ""
|
||||
this.$confirm("确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const self = this
|
||||
const url = this.formData.id ? "/platform/sys/unit/editDo" : "/platform/sys/unit/addDo"
|
||||
this.$refs["form"].validate(async function (valid) {
|
||||
if (valid) {
|
||||
if (self.currentNode) {
|
||||
self.formData.parentId = self.currentData.id
|
||||
}
|
||||
const resp = await self.$axios.post(url, self.formData)
|
||||
if (resp.code === 0) {
|
||||
self.$message.success(resp.msg)
|
||||
self.doSearch()
|
||||
self.dialogVisible = false
|
||||
self.$emit("refresh", null)
|
||||
} else {
|
||||
self.$message.warning(resp.msg)
|
||||
}
|
||||
}
|
||||
if (self.currentNode !== 1) {
|
||||
self.formData.parentId = self.currentData.id
|
||||
}
|
||||
const resp = await self.$axios.post(url, self.formData)
|
||||
if (resp.code === 0) {
|
||||
self.$message.success(resp.msg)
|
||||
self.doSearch()
|
||||
self.dialogVisible = false
|
||||
self.$emit("refresh", null)
|
||||
} else {
|
||||
self.$message.warning(resp.msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
async openEdit(id) {
|
||||
@@ -216,7 +214,13 @@ const UNIT_MANAGE_TEMPLATE = {
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
async created() {
|
||||
this.pageData()
|
||||
|
||||
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
||||
this.unions = await this.$businessTool.listUnion()
|
||||
} else {
|
||||
this.unions = await this.$businessTool.listUnion(this.store.state.user.union.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 第 3 行 -->
|
||||
<el-descriptions-item label="证件类型">{{ viewData.idCardType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号码">{{ viewData.idcard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号码">{{ viewData.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
||||
|
||||
<!-- 第 4 行 -->
|
||||
@@ -39,7 +39,7 @@
|
||||
<!-- 仅本人可见 -->
|
||||
<template v-if="viewData.loginname === $store.state.user.loginname">
|
||||
<el-descriptions-item label="家庭主要成员" :span="3">
|
||||
<el-table v-if="viewData.families && viewData.families.length" :data="viewData.families" size="mini" border :header-cell-style="{background:'#eff3f6'}" style="width: 100%">
|
||||
<el-table v-if="viewData.families && viewData.families.length > 0" :data="viewData.families" size="mini" border :header-cell-style="{background:'#eff3f6'}" style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center"/>
|
||||
<el-table-column prop="name" label="姓名" align="center"/>
|
||||
<el-table-column prop="unit" label="单位" align="center"/>
|
||||
|
||||
@@ -45,25 +45,17 @@ layout("/layouts/platform.html"){
|
||||
<el-table ref="table" :data="tableData" :size="tableSize" row-key="id"
|
||||
style="width: 100%" @sort-change="pageOrder">
|
||||
<el-table-column :index="indexMethod" header-align="center" label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column v-for="column in tableColumns"
|
||||
:key="column.prop"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
header-align="center"
|
||||
show-overflow-tooltip>
|
||||
<template scope="{row}" v-if="column.prop==='personnelRelationUnionName'">
|
||||
<el-tag effect="plain">
|
||||
{{row.personnelRelationUnionName || '无工会'}}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template scope="{row}" v-else-if="column.prop==='unionRelationUnionName'">
|
||||
<el-tag>
|
||||
{{row.unionRelationUnionName || '无工会'}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-for="column in tableColumns"
|
||||
:key="column.prop"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
header-align="center"
|
||||
show-overflow-tooltip>
|
||||
<template v-if="column.prop==='specialStaffType'" scope="{row:{specialStaffType}}">
|
||||
<dict-tag :options="dict.type.SPECIAL_STAFF_TYPE" :value="specialStaffType"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作">
|
||||
<template scope="scope">
|
||||
@@ -217,12 +209,14 @@ layout("/layouts/platform.html"){
|
||||
{ prop: 'username', label: '姓名' },
|
||||
{ prop: 'sex', label: '性别' },
|
||||
{ prop: 'mobile', label: '联系电话' },
|
||||
{ prop: 'personType', label: '教职工类别', sortable: true },
|
||||
{ prop: 'personType', label: '人员类型', sortable: true },
|
||||
{ prop: 'userState', label: '在职状态', sortable: true },
|
||||
{ prop: 'distSpecialStaffType', label: '特别人员类型', sortable: true },
|
||||
{ prop: 'personnelRelationUnionName', label: '人事关系工会', sortable: true, width: 180 },
|
||||
{ prop: 'personnelRelationUnionName', label: '人事关系工会', sortable: true},
|
||||
{ prop: 'personnelRelationUnitName', label: '人事关系单位', sortable: true },
|
||||
{ prop: 'unionRelationUnionName', label: '工会关系工会', sortable: true, width: 180 },
|
||||
{ prop: 'unionRelationUnionName', label: '工会关系工会', sortable: true},
|
||||
|
||||
{ prop: 'unionRelationUnitName', label: '工会关系单位', sortable: true },
|
||||
{ prop: 'distSpecialStaffType', label: '特别人员类型', sortable: true },
|
||||
// { prop: 'specialStaffRemark', label: '多单位人员备注', sortable: true, checked: 0 }
|
||||
],
|
||||
unions: [],
|
||||
|
||||
Reference in New Issue
Block a user