Compare commits
2 Commits
815e830e30
...
94a0c70313
Author | SHA1 | Date |
---|---|---|
|
94a0c70313 | |
|
b44bfe838c |
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 根据文件路径上传
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
// 人员入场信息
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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("所属单位选择异常,必须选择子公司及下属单位");
|
||||
|
|
|
@ -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">
|
||||
劳务人员
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import {
|
||||
getToken
|
||||
getToken,
|
||||
getUserInfo
|
||||
} from '../../utils/auth'
|
||||
import {
|
||||
findUserMenuList
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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));
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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" }],
|
||||
|
|
Loading…
Reference in New Issue