Compare commits

...

2 Commits

Author SHA1 Message Date
姜玉琦 94a0c70313 Merge branch 'dev_xd' of http://62.234.3.186:3000/jiangyq/YZProjectCloud into dev_xd 2025-02-19 22:22:55 +08:00
姜玉琦 b44bfe838c 提交代码 2025-02-19 22:22:47 +08:00
20 changed files with 120 additions and 61 deletions

View File

@ -159,7 +159,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<update id="updateUseStatusByParams" parameterType="Long">
update pro_project_info_subdepts_group set use_status = 2 where id sub_dept_id = #{subDeptId}
update pro_project_info_subdepts_group set use_status = 2 where sub_dept_id = #{subDeptId}
</update>
</mapper>

View File

@ -96,6 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userPhone != null and userPhone != ''"> and psu.user_phone = #{userPhone}</if>
<if test='activeTags == "finished"'> and psu.approve_status <![CDATA[ >= ]]> 100 </if>
<if test="isDel != null "> and psu.is_del = #{isDel}</if>
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and date(psu.use_date) between #{params.beginTime} and #{params.endTime}</if>
and psu.is_del != 2
</where>
</select>

View File

@ -101,7 +101,15 @@ public class SecurityUtils
*/
public static boolean isGSAdmin()
{
return Objects.nonNull(getLoginUser().getRoles()) && getLoginUser().getRoles().contains("gsAdmin");
Set<String> roles = getLoginUser().getRoles();
if(Objects.nonNull(roles)){
for(String role:roles){
if(role.startsWith("gsAdmin")){
return true;
}
}
}
return false;
}
/**

View File

@ -37,12 +37,12 @@ public class FileUploadUtils
/**
* 50M
*/
public static final long DEFAULT_MAX_SIZE = 500 * 1024 * 1024;
public static final long DEFAULT_MAX_SIZE = 5000 * 1024 * 1024;
/**
* 100
*/
public static final int DEFAULT_FILE_NAME_LENGTH = 100;
public static final int DEFAULT_FILE_NAME_LENGTH = 800;
/**
*

View File

@ -9,6 +9,7 @@ import com.yanzhu.manage.enums.SubDeptsEnums;
import com.yanzhu.manage.enums.UserPostEnums;
import com.yanzhu.manage.service.*;
import com.yanzhu.security.utils.DictUtils;
import com.yanzhu.system.api.domain.SysUser;
import com.yanzhu.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -106,7 +107,7 @@ public class WxController extends BaseController {
public AjaxResult findProSubDeptsUserInfo(@PathVariable("proId") Long proId)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
if(SecurityUtils.isGSAdmin()){
if(SysUser.isAdmin(loginUser.getUserid()) ||SecurityUtils.isGSAdmin()){
ProProjectInfo projectInfo = proProjectInfoService.selectProProjectInfoById(proId);
ProProjectInfoSubdeptsUsers adminUser = new ProProjectInfoSubdeptsUsers();
adminUser.setId(0L);

View File

@ -102,6 +102,9 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
@Override
public List<ProProjectInfoSubdeptsUsers> selectProProjectInfoSubdeptsUsersList(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers)
{
if(Objects.nonNull(proProjectInfoSubdeptsUsers.getUseStatus()) && Objects.equals(proProjectInfoSubdeptsUsers.getUseStatus(),"-1")){
proProjectInfoSubdeptsUsers.setUseStatus(null);
}
return proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(proProjectInfoSubdeptsUsers);
}
@ -901,7 +904,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(),UserPostEnums.WTDL.getCode())){
ProProjectInfoSubdepts proProjectInfoSubdepts = proProjectInfoSubdeptsMapper.selectProProjectInfoSubdeptsById(proProjectInfoSubdeptsUsers.getSubDeptId());
proProjectInfoSubdepts.setApproveStatus(ApproveStatus.exempt.getCode());
if(Objects.nonNull(proProjectInfoSubdepts.getUseStatus()) && Objects.equals(proProjectInfoSubdepts.getUseStatus(),UseStateEnums.AW.getCode())){
if(Objects.isNull(proProjectInfoSubdepts.getUseStatus()) || Objects.equals(proProjectInfoSubdepts.getUseStatus(),UseStateEnums.AW.getCode())){
proProjectInfoSubdepts.setUseStatus(UseStateEnums.IN.getCode());
}
// 生成二维码
@ -931,7 +934,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
if(Objects.nonNull(groups) && groups.size()>0){
ProProjectInfoSubdeptsGroup specialGroup = groups.get(0);
specialGroup.setApproveStatus(ApproveStatus.exempt.getCode());
if(Objects.nonNull(specialGroup.getUseStatus()) && Objects.equals(specialGroup.getUseStatus(),UseStateEnums.AW.getCode())){
if(Objects.isNull(specialGroup.getUseStatus()) || Objects.equals(specialGroup.getUseStatus(),UseStateEnums.AW.getCode())){
specialGroup.setUseStatus(UseStateEnums.IN.getCode());
}
proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(specialGroup);
@ -952,7 +955,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
}else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(),UserPostEnums.BZZ.getCode())){
ProProjectInfoSubdeptsGroup proProjectInfoSubdeptsGroup = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupById(proProjectInfoSubdeptsUsers.getSubDeptGroup());
proProjectInfoSubdeptsGroup.setApproveStatus(ApproveStatus.exempt.getCode());
if(Objects.nonNull(proProjectInfoSubdeptsGroup.getUseStatus()) && Objects.equals(proProjectInfoSubdeptsGroup.getUseStatus(),UseStateEnums.AW.getCode())){
if(Objects.isNull(proProjectInfoSubdeptsGroup.getUseStatus()) || Objects.equals(proProjectInfoSubdeptsGroup.getUseStatus(),UseStateEnums.AW.getCode())){
proProjectInfoSubdeptsGroup.setUseStatus(UseStateEnums.IN.getCode());
}
proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(proProjectInfoSubdeptsGroup);
@ -972,6 +975,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
}
proProjectInfoSubdeptsUsers.setUseStatus(UseStateEnums.IN.getCode());
proProjectInfoSubdeptsUsers.setUseDate(DateUtils.getNowDate());
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.exempt.getCode());
proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
// 人员入场信息

View File

@ -103,10 +103,11 @@ public class SysRoleController extends BaseController
{
return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
}
/**else if (!roleService.checkRoleKeyUnique(role))
else if (!roleService.checkRoleKeyUnique(role))
{
return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}*/
role.setRoleKey(role.getRoleKey()+"_"+role.getDeptId());
//return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setCreateBy(SecurityUtils.getUsername());
return toAjax(roleService.insertRole(role));

View File

@ -352,7 +352,9 @@ public class SysUserServiceImpl implements ISysUserService
e.printStackTrace();
}
// 新增用户信息
user.setUserName(userNameAndCout(user.getNickName()));
if(StringUtils.isEmpty(user.getUserName())){
user.setUserName(userNameAndCout(user.getNickName()));
}
SysDept dept = deptMapper.selectDeptById(user.getDeptId());
if(Objects.isNull(dept)){
throw new ServiceException("所属单位选择异常,必须选择子公司及下属单位");

View File

@ -77,7 +77,9 @@
</van-collapse-item>
</van-collapse>
</view>
<view class="echarts_max" wx:if="{{(subDeptUserInfo.subDeptType=='1' || subDeptUserInfo.subDeptType=='4' || subDeptUserInfo.subDeptType=='5') && subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='6' && subDeptUserInfo.userPost!='8'}}">
<video id="myVideo" src="https://xiangguan.sxyanzhu.com/statics/2025/2-建筑施工安全生产标准化系列视频—附着式升降脚手架.wmv" autoplay="{{true}}" bindended="onClickAfterVideo" show-bottom-progress="{{false}}" vslide-gesture="{{true}}" enable-progress-gesture="{{false}}" style="width: 100%;height: 280px;" />
<view class="echarts_min">
<view class="eharts_title module_title_flex">
劳务人员

View File

@ -1,5 +1,6 @@
import {
getToken
getToken,
getUserInfo
} from '../../utils/auth'
import {
findUserMenuList

View File

@ -32,7 +32,6 @@
</van-row>
</view>
</view>
<van-tabbar wx:if="{{subDeptUserInfo.userPost!='3' && subDeptUserInfo.userPost!='4' && subDeptUserInfo.userPost!='5'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
<van-tabbar-item bindtap="XMGK">
<image

View File

@ -18,7 +18,7 @@
/>
</el-form-item>
<el-form-item label="工种类型" prop="craftType">
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable>
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" @change="changeQueryCraftType" clearable>
<el-option
v-for="dict in pro_craft_type"
:key="dict.value"
@ -31,7 +31,7 @@
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-option
v-for="dict in pro_craft_post"
v-show="dict.elTagClass == queryParams.craftType"
v-show="dict.elTagClass == queryParams.craftType && dict.remark && dict.remark.indexOf('4,5')>-1"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -165,7 +165,7 @@
<el-select v-model="form.craftPost" multiple placeholder="请选择工种岗位" style="width:100%">
<el-option
v-for="dict in pro_craft_post"
v-show="dict.elTagClass == form.craftType"
v-show="dict.elTagClass == form.craftType && dict.remark && dict.remark.indexOf('4,5')>-1"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -199,13 +199,13 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="单选题数量" prop="estimateNum">
<el-input v-model.number="form.estimateNum" placeholder="请输入单选题数量" />
<el-form-item label="判断题数量" prop="estimateNum">
<el-input v-model.number="form.estimateNum" placeholder="请输入判断题数量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单选题分数" prop="estimateMark">
<el-input v-model.number="form.estimateMark" placeholder="请输入单选题分数" />
<el-form-item label="判断题分数" prop="estimateMark">
<el-input v-model.number="form.estimateMark" placeholder="请输入判断题分数" />
</el-form-item>
</el-col>
</el-row>
@ -423,6 +423,11 @@ function setStatus(val, row) {
});
}
/** 岗位类型改变 */
function changeQueryCraftType() {
queryParams.value.craftPost = null;
}
/** 岗位类型改变 */
function changeCraftType() {
form.value.craftPost = null;

View File

@ -31,6 +31,7 @@
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" filterable clearable>
<el-option
v-for="dict in pro_craft_post"
v-show="dict.remark && dict.remark.indexOf('4,5')>-1"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -251,7 +252,7 @@
</el-radio-group>
</el-form-item>
<el-form-item label="试题描述" prop="questionDesc">
<el-input v-model="form.questionDesc" placeholder="请输入试题描述" type="textarea" rows="2" maxlength="64" show-word-limit/>
<el-input v-model="form.questionDesc" placeholder="请输入试题描述" type="textarea" rows="2" maxlength="128" show-word-limit/>
</el-form-item>
<el-divider content-position="center">试题答案信息</el-divider>
<el-row :gutter="10" class="mb8">
@ -352,9 +353,6 @@ const casProps = {
/** 查询基础题库列表 */
function getList() {
loading.value = true;
if(!queryParams.value.craftType && queryParams.value.craftPost){
queryParams.value.craftPost = null;
}
listBusExamQuestion(queryParams.value).then(response => {
response.rows.forEach(item => {
item.disabledState = initRowDisabled(item);
@ -631,9 +629,8 @@ function initPost() {
let craftTypeDatas=pro_craft_type._object.pro_craft_type;
let craftPostDatas=pro_craft_post._object.pro_craft_post;
craftTypeDatas.forEach(item =>{
item.children = craftPostDatas.filter(deatil=>deatil.elTagClass==item.value);
item.children = craftPostDatas.filter(deatil=>deatil.elTagClass==item.value && deatil.remark && deatil.remark.indexOf('4,5')>-1);
});
console.log("DEFAULT" , craftTypeDatas);
craftPostOptions.value = craftTypeDatas;
}

View File

@ -39,7 +39,7 @@
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-option
v-for="dict in pro_craft_post"
v-show="dict.elTagClass == queryParams.craftType"
v-show="dict.elTagClass == queryParams.craftType && dict.remark && dict.remark.indexOf('4,5')>-1"
:key="dict.value"
:label="dict.label"
:value="dict.value"

View File

@ -19,7 +19,12 @@
</el-form-item>
<el-form-item label="工种岗位" prop="craftPost">
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-option v-for="dict in pro_craft_post" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-option v-for="dict in pro_craft_post" v-show="dict.remark && dict.remark.indexOf('4,5')>-1" :key="dict.value" :label="dict.label" :value="dict.value" >
<span style="float: left">{{ dict.label }}</span>
<span style="float: right;color: var(--el-text-color-secondary);font-size: 13px;">
{{ findCraftPost(dict.elTagClass) }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
@ -192,7 +197,7 @@
</el-dialog>
<!--培训视频播放对话框 -->
<el-dialog :title="videoTitle" v-model="videoOpen" width="680px" append-to-body modal-class="video-play-dlg">
<el-dialog :title="videoTitle" v-model="videoOpen" width="680px" destroy-on-close append-to-body modal-class="video-play-dlg">
<video
ref="videoRef"
:src="videoSrc"
@ -377,6 +382,17 @@ function handleUpdate(row) {
});
}
//
function findCraftPost(value) {
let craftTypeDatas=pro_craft_type._object.pro_craft_type;
for(let i=0;i<craftTypeDatas.length;i++){
if(craftTypeDatas[i].value == value){
return craftTypeDatas[i].label;
}
}
return "-";
}
/** 培训级别操作 */
function trainLevelChange(){
if(form.value.trainLevel){
@ -498,7 +514,7 @@ function initPost() {
let craftTypeDatas=pro_craft_type._object.pro_craft_type;
let craftPostDatas=pro_craft_post._object.pro_craft_post;
craftTypeDatas.forEach(item =>{
item.children = craftPostDatas.filter(deatil=>deatil.elTagClass==item.value);
item.children = craftPostDatas.filter(deatil=>deatil.elTagClass==item.value && deatil.remark && deatil.remark.indexOf('4,5')>-1);
});
console.log("DEFAULT" , craftTypeDatas);
craftPostOptions.value = craftTypeDatas;

View File

@ -142,7 +142,7 @@
</el-dialog>
<!--培训视频播放对话框 -->
<el-dialog :title="videoTitle" v-model="videoOpen" width="680px" append-to-body modal-class="video-play-user-dlg">
<el-dialog :title="videoTitle" v-model="videoOpen" width="680px" destroy-on-close append-to-body modal-class="video-play-user-dlg">
<video
ref="videoRef"
:src="videoSrc"

View File

@ -85,9 +85,9 @@
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdepts:edit']">修改</el-button>
<el-button v-if="scope.row.useStatus == '1'" link type="primary" icon="Setting"
<el-button v-if="scope.row.useStatus == '0'" link type="primary" icon="Setting"
@click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:edit']">离场</el-button>
<el-button v-if="scope.row.useStatus == '2'" link type="primary" icon="Setting"
<el-button v-if="scope.row.useStatus == '1'" link type="primary" icon="Setting"
@click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:edit']">进场</el-button>
</template>
</el-table-column>
@ -251,7 +251,7 @@ const data = reactive({
subDeptType: null,
subDeptName: null,
subDeptCode: null,
useStatus: '1',
activeTags: "finished",
approveStatus: null,
},
rules: {

View File

@ -77,7 +77,7 @@
<el-button link v-if="scope.row.groupLeaderName" type="primary" icon="UserFilled"
@click="handleUpdateGroupLeader(scope.row)">{{scope.row.groupLeaderName}}</el-button>
<el-button link v-if="!scope.row.groupLeaderName" type="warning" icon="UserFilled"
@click="handleUpdateGroupLeader(scope.row)"> - </el-button>
@click="handleUpdateGroupLeader(scope.row)"> 设置 </el-button>
</template>
</el-table-column>
<el-table-column label="进场状态" align="center" prop="useStatus" width="80">
@ -416,7 +416,7 @@ function handleExport() {
/** 初始化 */
function initSubDeptOptions(value) {
findAllProjectInfoSubdepts({ 'projectId': value }).then(res => {
findAllProjectInfoSubdepts({ 'projectId': value, 'activeTags':"finished" }).then(res => {
subDeptOptions.value = (res.data||[]).filter(d=>["4","5"].includes( d.subDeptType));
})
}

View File

@ -7,13 +7,13 @@
<el-option v-for="(it) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
</el-select>
</el-form-item>
<el-form-item label="班组" prop="subDeptName">
<el-select v-model="queryParams.subDeptGroup" placeholder="请选择班组" @change="doDeptGroupChange" clearable>
<el-form-item label="所属班组" prop="subDeptName">
<el-select v-model="queryParams.subDeptGroup" placeholder="请选择所属班组" @change="doDeptGroupChange" clearable>
<el-option v-for="(it, idx) in data.queryDeptGroups" :key="idx" :label="it.groupName" :value="it.id" />
</el-select>
</el-form-item>
<el-form-item label="姓名" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入姓名" clearable @keyup.enter="handleQuery" />
<el-form-item label="人员姓名" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入人员姓名" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="联系电话" prop="userId">
<el-input v-model="queryParams.userPhone" placeholder="请输入联系电话" clearable @keyup.enter="handleQuery" />
@ -30,6 +30,16 @@
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="进场时间" style="width: 308px">
<el-date-picker
v-model="dateRange"
value-format="YYYY-MM-DD"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
@ -64,6 +74,16 @@
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-tabs
v-model="queryParams.useStatus"
type="card"
class="demo-tabs"
@tab-change="getList"
>
<el-tab-pane label="全部" name="-1"></el-tab-pane>
<el-tab-pane label="进场" name="0"></el-tab-pane>
<el-tab-pane label="离场" name="1"></el-tab-pane>
</el-tabs>
<el-table v-loading="loading" :data="proProjectInfoSubdeptsUsersList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="头像" align="center">
@ -119,8 +139,11 @@
<span v-else style="color: red">离场</span>
</template>
</el-table-column>
<!-- <el-table-column label="出生日期" align="center" prop="info.birthDayStr" v-if="false" />
<el-table-column label="籍贯" align="center" prop="info.nativePlace" v-if="false" /> -->
<el-table-column label="入场时间" align="center" prop="useDate" width="100">
<template #default="scope">
<span>{{ parseTime(scope.row.useDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -326,6 +349,7 @@ const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const dateRange = ref([]);
const validatePhone = (rule, value, callback) => {
if (!/^1\d{10}$/.test(value)) {
@ -354,13 +378,14 @@ const data = reactive({
eduSignPath: null,
eduDate: null,
approveStatus: null,
useStatus: null,
useStatus: "0",
subStep: null,
illnessStatus: null,
supIllnessStatus: null,
isDel: null,
userWorkType: null,
workType: null,
activeTags:"finished"
},
rules: {
subDeptId: [{ required: true, trigger: ['blur', 'change'], message: "请选择所属单位" }],
@ -502,8 +527,7 @@ function getList() {
loading.value = true;
queryParams.value.comId = userStore.currentComId;
queryParams.value.projectId = userStore.currentPrjId;
queryParams.value.activeTags = "finished";
listProProjectInfoSubdeptsUsers(queryParams.value).then(response => {
listProProjectInfoSubdeptsUsers(proxy.addDateRange(queryParams.value, dateRange.value)).then(response => {
proProjectInfoSubdeptsUsersList.value = (response.rows || []).map(d => {
d.info = tryToJson(d.userInfos || "{}")
d.user = d.user || {};
@ -653,6 +677,7 @@ function handleQuery() {
/** 重置按钮操作 */
function resetQuery() {
dateRange.value = [];
proxy.resetForm("queryRef");
handleQuery();
}

View File

@ -137,7 +137,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="用户姓名" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户" maxlength="30" style="width: 150px;" />
<el-input v-model="form.nickName" placeholder="请输入用户名" maxlength="30" style="width: 150px;" />
<!--
<el-button v-if="data.mode == 'add' && !data.editUser" type="primary" style="margin-left: 10px;"
@click="doQueryUserByName">查询</el-button>
@ -334,7 +334,7 @@ const data = reactive({
},
rules: {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
userName: [{ required: false, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户姓名不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
@ -343,8 +343,6 @@ const data = reactive({
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
},
editUser: null,
mode: '',
@ -423,21 +421,21 @@ function doRoleChange() {
if (form.value.userType == 99) {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户不能为空", trigger: "blur" }],
userName: [{ required: false, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
}
} else {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户不能为空", trigger: "blur" }],
userName: [{ required: false, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
@ -450,21 +448,20 @@ function doRoleChange() {
else {
if (form.value.userType == 99) {
data.rules = {
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userName: [{ required: false, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户姓名不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
cardCode: [{ required: true, message: "证件号码不能为空", trigger: "blur" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
}
} else {
data.rules = {
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户不能为空", trigger: "blur" }],
userName: [{ required: false, message: "登录账号不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
workType: [{ required: true, message: "用户岗位不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],