From 226de684b04ae50ea17677744251882e910182f6 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期四, 04 五月 2023 15:13:34 +0800 Subject: [PATCH] 专家库 --- src/api/systemManage/user/index.ts | 9 src/views/analyse/applyReview/components/reportDialog.vue | 2 src/views/system/experts/index.vue | 278 +++++++++++++++++++++++++ src/api/systemManage/role/index.ts | 6 src/views/analyse/identify/index.vue | 2 src/views/system/user/component/userDialog.vue | 36 +++ src/views/analyse/evaluate/index.vue | 2 src/views/analyse/plan/index.vue | 2 src/views/system/user/index.vue | 20 + src/views/analyse/assessApply/components/reportDialog.vue | 2 src/views/analyse/assessApply/components/riskDialog.vue | 24 - src/views/experiment/developing/components/developDialog.vue | 2 src/views/analyse/assessApply/components/riskUnitDialog.vue | 6 src/views/experiment/project/components/projectDialog.vue | 2 src/views/system/experts/component/userDialog.vue | 234 +++++++++++++++++++++ 15 files changed, 595 insertions(+), 32 deletions(-) diff --git a/src/api/systemManage/role/index.ts b/src/api/systemManage/role/index.ts index 6d86ecc..30590f0 100644 --- a/src/api/systemManage/role/index.ts +++ b/src/api/systemManage/role/index.ts @@ -9,6 +9,12 @@ method: 'get' }); }, + getExpList: () => { + return request({ + url: import.meta.env.VITE_API_URL + `/account/user/identity/list`, + method: 'post' + }); + }, // v2 addRole: (data: object) => { return request({ diff --git a/src/api/systemManage/user/index.ts b/src/api/systemManage/user/index.ts index a9012a2..17c5453 100644 --- a/src/api/systemManage/user/index.ts +++ b/src/api/systemManage/user/index.ts @@ -17,6 +17,15 @@ data: data }); }, + + getExpertsList: (data: any) => { + return request({ + url: import.meta.env.VITE_API_URL + `/account/user/find/expert/list`, + method: 'post', + data: data + }); + }, + // v1 addUser: (data: object) => { return request({ diff --git a/src/views/analyse/applyReview/components/reportDialog.vue b/src/views/analyse/applyReview/components/reportDialog.vue index db66f52..a675922 100644 --- a/src/views/analyse/applyReview/components/reportDialog.vue +++ b/src/views/analyse/applyReview/components/reportDialog.vue @@ -383,7 +383,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ reportDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/analyse/assessApply/components/reportDialog.vue b/src/views/analyse/assessApply/components/reportDialog.vue index d009c62..f8cca9e 100644 --- a/src/views/analyse/assessApply/components/reportDialog.vue +++ b/src/views/analyse/assessApply/components/reportDialog.vue @@ -410,7 +410,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ reportDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/analyse/assessApply/components/riskDialog.vue b/src/views/analyse/assessApply/components/riskDialog.vue index acaf520..9c38d2f 100644 --- a/src/views/analyse/assessApply/components/riskDialog.vue +++ b/src/views/analyse/assessApply/components/riskDialog.vue @@ -2,7 +2,7 @@ <div class="system-menu-dialog-container"> <el-dialog title="管理实验现实风险" v-model="assessApplyDialogState.assessApplyDialogVisible" width="60%"> <div> - <el-button @click="openUnitDialog('新增','', assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)" type="primary" style="margin-bottom: 20px" size="default">增加风险分析单元</el-button> + <el-button @click="openUnitDialog('新增','', assessApplyDialogState.id)" type="primary" style="margin-bottom: 20px" size="default">增加风险分析单元</el-button> </div> <el-table ref="multipleTableRef" :data="assessApplyDialogState.riskUnitData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }"> <el-table-column prop="riskCode" label="风险单元编号"/> @@ -15,7 +15,7 @@ <el-table-column prop="riskUnitType" label="风险单元类型"/> <el-table-column prop="riskUnitType" label="负责人"> <template #default="scope"> - <span>{{`${assessApplyDialogState.allPersonList.find(item =>item.id === scope.row.liabilityUserId)?.realName || ''}`}}</span> + <span>{{`${assessApplyDialogState.allPersonList.find(item =>item.id === scope.row.liabilityUserId)?.personName || ''}`}}</span> </template> </el-table-column> <el-table-column prop="evaluateStatus" label="是否评价"> @@ -25,8 +25,8 @@ </el-table-column> <el-table-column label="操作" width="150" align="center"> <template #default="scope"> - <el-button size="default" text type="primary" @click="openUnitDialog('查看', scope.row, assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)">查看</el-button> - <el-button size="default" text type="primary" @click="openUnitDialog('编辑', scope.row, assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)">编辑</el-button> + <el-button size="default" text type="primary" @click="openUnitDialog('查看', scope.row, assessApplyDialogState.id)">查看</el-button> + <el-button size="default" text type="primary" @click="openUnitDialog('编辑', scope.row, assessApplyDialogState.id)">编辑</el-button> <el-button size="default" text type="danger" @click="deleteUnit(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> @@ -77,8 +77,8 @@ getRiskData() }; -const openUnitDialog = (title: string, val, id: number, userId: number) => { - riskUnitDialogRef.value.showRiskUnitDialog(title, val, id, userId, assessApplyDialogState.basicUnitList, assessApplyDialogState.allPersonList, assessApplyDialogState.allRiskTypeList); +const openUnitDialog = (title: string, val, id: number) => { + riskUnitDialogRef.value.showRiskUnitDialog(title, val, id, assessApplyDialogState.basicUnitList, assessApplyDialogState.allPersonList, assessApplyDialogState.allRiskTypeList); }; const getRiskData = async () => { @@ -106,16 +106,8 @@ }; const getAllPersonList = async () => { - let res = await userApi().getUserList({ - pageIndex: 1, - pageSize: 99999, - searchParams:{ - roleId: null, - name: '', - realName: '' - } - }); - if(res.data.code === 200){ + let res = await personApi().getAllPerson(); + if(res.data.code === 100){ assessApplyDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/analyse/assessApply/components/riskUnitDialog.vue b/src/views/analyse/assessApply/components/riskUnitDialog.vue index 851d50b..edf1305 100644 --- a/src/views/analyse/assessApply/components/riskUnitDialog.vue +++ b/src/views/analyse/assessApply/components/riskUnitDialog.vue @@ -23,7 +23,7 @@ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="负责人" prop="liabilityUserId"> <el-select v-model="riskUnitDialogState.riskUnitForm.liabilityUserId" :disabled="riskUnitDialogState.disabled" placeholder="负责人" clearable class="input-length"> - <el-option v-for="item in riskUnitDialogState.allPersonList" :key="item.id" :label="item.realName" :value="item.id"></el-option> + <el-option v-for="item in riskUnitDialogState.allPersonList" :key="item.id" :label="item.personName" :value="item.id"></el-option> </el-select> </el-form-item> </el-col> @@ -103,7 +103,7 @@ ], }) -const showRiskUnitDialog = (title: string, val, id: number, userId: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => { +const showRiskUnitDialog = (title: string, val, id: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => { riskUnitDialogState.riskUnitDialogVisible = true; riskUnitDialogState.basicUnitList = basicUnitList riskUnitDialogState.allPersonList = allPersonList @@ -120,7 +120,7 @@ riskCode: '', riskName: '', riskUnitTypeId: null, - liabilityUserId: userId, + liabilityUserId: null, liabilityDep: '', description: '', basicRiskUnitId: null, diff --git a/src/views/analyse/evaluate/index.vue b/src/views/analyse/evaluate/index.vue index 07a11ac..81363c1 100644 --- a/src/views/analyse/evaluate/index.vue +++ b/src/views/analyse/evaluate/index.vue @@ -259,7 +259,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ evaluateState.personList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/analyse/identify/index.vue b/src/views/analyse/identify/index.vue index d5f3e03..c6128d4 100644 --- a/src/views/analyse/identify/index.vue +++ b/src/views/analyse/identify/index.vue @@ -169,7 +169,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ identifyState.personList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/analyse/plan/index.vue b/src/views/analyse/plan/index.vue index b6208ab..0ec5b78 100644 --- a/src/views/analyse/plan/index.vue +++ b/src/views/analyse/plan/index.vue @@ -206,7 +206,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ planState.personList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/experiment/developing/components/developDialog.vue b/src/views/experiment/developing/components/developDialog.vue index 7edbbe1..ffc8c69 100644 --- a/src/views/experiment/developing/components/developDialog.vue +++ b/src/views/experiment/developing/components/developDialog.vue @@ -591,7 +591,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ projectDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/experiment/project/components/projectDialog.vue b/src/views/experiment/project/components/projectDialog.vue index e9fa759..1292685 100644 --- a/src/views/experiment/project/components/projectDialog.vue +++ b/src/views/experiment/project/components/projectDialog.vue @@ -573,7 +573,7 @@ realName: '' } }); - if(res.data.code === 200){ + if(res.data.code === 100){ projectDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data)); }else{ ElMessage({ diff --git a/src/views/system/experts/component/userDialog.vue b/src/views/system/experts/component/userDialog.vue new file mode 100644 index 0000000..b5ce486 --- /dev/null +++ b/src/views/system/experts/component/userDialog.vue @@ -0,0 +1,234 @@ +<template> + <div class="system-add-user-container"> + <el-dialog :title="title" v-model="isShowUserDialog" width="769px"> + <el-form :model="userForm" size="default" ref="userRef" :rules="userFormRules" label-width="90px"> + <el-row :gutter="35"> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="用户名" prop="name"> + <el-input v-model.trim="userForm.name" placeholder="用户名" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="真实姓名" prop="realName"> + <el-input v-model.trim="userForm.realName" placeholder="真实姓名" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="isAdd"> + <el-form-item label="账户密码" prop="pwd"> + <el-input v-model.trim="userForm.pwd" placeholder="账户密码" type="password" show-password> + </el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="关联角色" prop="roleIds"> + <el-select v-model="userForm.roleIds" placeholder="关联角色" clearable class="w100" multiple> + <el-option v-for="item in roleData" :key="item.id" :label="item.name" :value="item.id"> </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="部门" prop="depId"> + <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'depName' }" placeholder="部门" clearable class="w100" v-model="userForm.depId"> </el-cascader> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="手机号" prop="phone"> + <el-input v-model.trim="userForm.phone" placeholder="手机号" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="证件类型" prop="idType"> + <el-select v-model="userForm.idType" placeholder="证件类型" clearable class="w100"> + <el-option :key="1" label="身份证" :value="1"> </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="证件号码" prop="idSerial"> + <el-input v-model.trim="userForm.idSerial" placeholder="证件号码" clearable></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button> + <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button> + </span> + </template> + </el-dialog> + </div> +</template> + +<script lang="ts"> +import { reactive, toRefs, onMounted, defineComponent, ref } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import { userApi } from '/@/api/systemManage/user'; +import {checkChineseName, verifyFullName, verifyIdCard, verifyPhone} from "/@/utils/toolsValidate"; + +// 定义接口来定义对象的类型 +interface DeptData {} +interface roleData {} +interface UserState { + title: string; + isShowUserDialog: boolean; + userForm: { + name: string; + realName: string; + roleIds: Array<any> + depId: number | null; + phone: string; + pwd: string; + idType: number | null; + idSerial: string; + }; + userFormRules:{ + + }, + departmentData: Array<DeptData>; + roleData: Array<roleData>; + isAdd:boolean +} + +export default defineComponent({ + name: 'userDialog', + setup(props, context) { + const userRef = ref() + const state = reactive<UserState>({ + title: '', + isShowUserDialog: false, + userForm: { + name: '', // 账户名称 + realName: '', // 用户昵称 + pwd: '', // 账户密码 + roleIds: [], // 关联角色 + depId: null, // 部门 + phone: '', // 手机号 + idType: 1, + idSerial: '', + }, + userFormRules:{ + name: [{ required: true, message: '请填写用户名', trigger: 'blur' }], + realName: [{ required: true, message: '请填写真实姓名', trigger: 'blur' }], + roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }], + depId: [{ required: true, message: '请选择部门', trigger: 'change' }], + phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }], + idType: [{ required: true, message: '请选择证件类型', trigger: 'blur' }], + pwd: [{ required: true, message: '请输入账户密码', trigger: 'blur' }], + }, + departmentData: [], // 部门数据 + roleData: [], //角色数据 + isAdd: true + }); + // 打开弹窗 + const openDialog = (type: string, value: any, departmentList: [], roleList: []) => { + state.isShowUserDialog = true; + state.departmentData = departmentList; + state.roleData = roleList; + if (type === '新增') { + state.title = '新增用户'; + state.isAdd = true + state.userForm = { + name: '', + realName: '', + roleIds: [], + depId: null, + phone: '', + idType: 1, + idSerial: '', + pwd: '' + }; + } else { + state.title = '修改用户'; + state.isAdd = false + state.userForm = JSON.parse(JSON.stringify(value)); + state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles.map(i=>i.roleId) + } + }; + + // 新增修改 + const onSubmit = async () => { + userRef.value.validate(async (valid:Boolean) => { + if(valid){ + if(checkChineseName(state.userForm.realName) == false){ + ElMessage({ + type: 'warning', + message: '真实姓名格式有误', + duration: 2000 + }); + return + } + if(verifyPhone(state.userForm.phone) == false){ + ElMessage({ + type: 'warning', + message: '请输入正确的手机号', + duration: 2000 + }); + return + } + if(state.userForm.idSerial!=='' && verifyIdCard(state.userForm.idSerial) == false){ + ElMessage({ + type: 'warning', + message: '请输入正确的证件号码', + duration: 2000 + }); + return + } + if (state.title === '新增用户') { + let res = await userApi().addUser(state.userForm); + if (res.data.code === 100) { + ElMessage({ + type: 'success', + message: '用户新增成功', + duration: 2000 + }); + state.isShowUserDialog = false; + context.emit('getUserList'); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } else { + const {name, realName, roleIds, depId, phone, idType, idSerial,id } = state.userForm + const data = {name, realName, roleIds, depId, phone, idType, idSerial,id} + let res = await userApi().modUser(data); + if (res.data.code === 100) { + ElMessage({ + type: 'success', + message: '用户修改成功', + duration: 2000 + }); + state.isShowUserDialog = false; + context.emit('getUserList'); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } + }else{ + ElMessage({ + type:'warning', + message:'请完善基本信息' + }) + } + }) + + }; + + // 页面加载时 + onMounted(() => { + + }); + return { + userRef, + openDialog, + onSubmit, + ...toRefs(state) + }; + } +}); +</script> diff --git a/src/views/system/experts/index.vue b/src/views/system/experts/index.vue new file mode 100644 index 0000000..163f222 --- /dev/null +++ b/src/views/system/experts/index.vue @@ -0,0 +1,278 @@ +<template> + <div class="system-user-container"> + <el-card shadow="hover"> + <div class="system-user-search mb15"> + <el-select v-model="userTableData.listQuery.searchParams.userIndentityId" placeholder="专家类型" clearable class="w100" style="max-width: 180px"> + <el-option v-for="item in expList" :key="item.id" :label="item.identity" :value="item.id"> </el-option> + </el-select> + <el-button size="default" type="primary" class="ml10" @click="searchByName()"> + <el-icon> + <ele-Search /> + </el-icon> + 查询 + </el-button> + <el-button size="default" class="ml10" @click="reset()"> + <el-icon> + <RefreshLeft /> + </el-icon> + 重置 + </el-button> +<!-- <el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增', '')">--> +<!-- <el-icon>--> +<!-- <ele-FolderAdd />--> +<!-- </el-icon>--> +<!-- 新增专家--> +<!-- </el-button>--> + </div> + <el-table :data="userTableData.data" style="width: 100%"> + <el-table-column type="index" label="序号" width="60" /> + <el-table-column prop="name" label="用户名"/> + <el-table-column prop="realName" label="真实姓名"/> + <el-table-column prop="phone" label="手机号"/> + <el-table-column prop="depName" label="部门"></el-table-column> + <el-table-column prop="roles" label="关联角色"> + <template #default="scope"> + <span>{{ scope.row.roles.map(obj => obj.roleName).join('、') }}</span> + </template> + </el-table-column> + <el-table-column prop="userIdentities" label="专家类型"> + <template #default="scope"> + <span>{{ scope.row.userIdentities.map(obj => obj.userIdentity).join('、') }}</span> + </template> + </el-table-column> + <el-table-column prop="idType" label="证件类型"> + <template #default="scope"> + <span>{{idTypeList.find(item=>item.id == scope.row.idType)?.name}}</span> + </template> + </el-table-column> + <el-table-column prop="idSerial" label="证件号码"></el-table-column> +<!-- <el-table-column label="操作" width="100">--> +<!-- <template #default="scope">--> +<!-- <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('修改', scope.row)">修改</el-button>--> +<!-- <el-button style="color: red" :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">删除</el-button>--> +<!-- </template>--> +<!-- </el-table-column>--> + </el-table> + <br /> + <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="userTableData.listQuery.pageIndex" background v-model:page-size="userTableData.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="userTableData.total"> </el-pagination> + <br /> + <br /> + </el-card> + <userDialog ref="userRef" @getUserList="initUserTableData"/> + </div> +</template> + +<script lang="ts"> +import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import userDialog from '/@/views/system/user/component/userDialog.vue'; +import { userApi } from '/@/api/systemManage/user'; +import { departmentApi } from '/@/api/systemManage/department'; +import { useRoleApi } from '/@/api/systemManage/role'; + +// 定义接口来定义对象的类型 +interface TableDataRow { + userName: string; + userNickname: string; + roleSign: string; + department: string[]; + phone: string; + email: string; + sex: string; + password: string; + overdueTime: Date; + status: boolean; + describe: string; + createTime: string; +} +interface idType{ + id: number, + name: string +} + +interface TableDataState { + userTableData: { + data: Array<TableDataRow>; + total: number; + loading: boolean; + listQuery: { + pageIndex: number; + pageSize: number; + searchParams:{ + userIndentityId: number | null + } + }; + }; + idTypeList: Array<idType> + depList: []; + roleList: []; + expList: []; + searchName:string +} + +export default defineComponent({ + name: 'experts', + components: { userDialog }, + setup() { + const userRef = ref(); + const state = reactive<TableDataState>({ + userTableData: { + data: [], + total: 0, + loading: false, + listQuery: { + pageIndex: 1, + pageSize: 10, + searchParams:{ + userIndentityId: null + } + } + }, + idTypeList:[ + { + id: 1, + name: '身份证' + } + ], + depList: [], + roleList: [], + expList: [], + searchName: '' + }); + // 初始化表格数据 + const initUserTableData = async () => { + let res = await userApi().getExpertsList(state.userTableData.listQuery); + if (res.data.code === 100) { + state.userTableData.data = res.data.data; + state.userTableData.total = res.data.total; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + const searchByName = () =>{ + initUserTableData() + } + + const reset = () =>{ + state.userTableData.listQuery={ + pageIndex: 1, + pageSize: 10, + searchParams:{ + userIndentityId: null + } + } + initUserTableData() + } + + const getDepList = async () => { + let res = await departmentApi().getDepartmentList() + if (res.data.code === 100) { + state.depList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + const getRoleData = async () => { + let res = await useRoleApi().getRoleList(); + if (res.data.code === 100) { + state.roleList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + const getExpertsData = async () => { + let res = await useRoleApi().getExpList(); + if (res.data.code === 100) { + state.expList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + + // 打开新增修改用户弹窗 + // const onOpenUserDialog = (type: string, value: any) => { + // console.log('打开',state.depList, state.roleList) + // userRef.value.openDialog(type, value, state.depList, state.roleList); + // }; + + // 删除用户 + // const onRowDel = (row: TableDataRow) => { + // ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.name}”,是否继续?`, '提示', { + // confirmButtonText: '确认', + // cancelButtonText: '取消', + // type: 'warning' + // }) + // .then(async () => { + // let res = await userApi().deleteUser(row.id); + // if (res.data.code === 100) { + // ElMessage({ + // type: 'success', + // duration: 2000, + // message: '删除成功' + // }); + // await initUserTableData(); + // } else { + // ElMessage({ + // type: 'warning', + // message: res.data.msg + // }); + // } + // }) + // .catch(() => {}); + // }; + // 分页改变 + const onHandleSizeChange = (val: number) => { + state.userTableData.listQuery.pageSize = val; + initUserTableData(); + }; + // 分页改变 + const onHandleCurrentChange = (val: number) => { + state.userTableData.listQuery.pageIndex = val; + initUserTableData(); + }; + // 页面加载时 + onMounted(() => { + initUserTableData(); + getRoleData(); + getDepList(); + getExpertsData() + }); + return { + userRef, + reset, + onHandleSizeChange, + initUserTableData, + searchByName, + onHandleCurrentChange, + ...toRefs(state) + }; + } +}); +</script> +<style scoped> +:deep(.el-textarea.is-disabled .el-textarea__inner) { + background-color: var(--el-card-bg-color); + color: var(--el-input-text-color, var(--el-text-color-regular)); +} +:deep(.el-input.is-disabled .el-input__inner) { + color: var(--el-input-text-color, var(--el-text-color-regular)); +} +:deep(.el-input.is-disabled .el-input__wrapper) { + background-color: var(--el-card-bg-color); +} +</style> diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue index b5ce486..9139a12 100644 --- a/src/views/system/user/component/userDialog.vue +++ b/src/views/system/user/component/userDialog.vue @@ -36,6 +36,21 @@ <el-input v-model.trim="userForm.phone" placeholder="手机号" clearable></el-input> </el-form-item> </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="是否专家" prop="identityStatus"> + <el-radio-group v-model="userForm.identityStatus"> + <el-radio :label="0">是</el-radio> + <el-radio :label="1">否</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="userForm.identityStatus == 0"> + <el-form-item label="专家类型" prop="identityIds"> + <el-select v-model="userForm.identityIds" placeholder="专家类型" clearable class="w100" multiple> + <el-option v-for="item in expData" :key="item.id" :label="item.identity" :value="item.id"> </el-option> + </el-select> + </el-form-item> + </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="证件类型" prop="idType"> <el-select v-model="userForm.idType" placeholder="证件类型" clearable class="w100"> @@ -78,6 +93,8 @@ roleIds: Array<any> depId: number | null; phone: string; + identityStatus:number|null; + identityIds: Array<any> pwd: string; idType: number | null; idSerial: string; @@ -87,6 +104,7 @@ }, departmentData: Array<DeptData>; roleData: Array<roleData>; + expData: Array<roleData>; isAdd:boolean } @@ -104,6 +122,8 @@ roleIds: [], // 关联角色 depId: null, // 部门 phone: '', // 手机号 + identityStatus: null, + identityIds: [], idType: 1, idSerial: '', }, @@ -113,18 +133,22 @@ roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }], depId: [{ required: true, message: '请选择部门', trigger: 'change' }], phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }], + identityStatus: [{ required: true, message: '请选择是否为专家', trigger: 'change' }], + identityIds: [{ required: true, message: '请选择专家类型', trigger: 'change' }], idType: [{ required: true, message: '请选择证件类型', trigger: 'blur' }], pwd: [{ required: true, message: '请输入账户密码', trigger: 'blur' }], }, departmentData: [], // 部门数据 roleData: [], //角色数据 + expData: [], isAdd: true }); // 打开弹窗 - const openDialog = (type: string, value: any, departmentList: [], roleList: []) => { + const openDialog = (type: string, value: any, departmentList: [], roleList: [],expList: []) => { state.isShowUserDialog = true; state.departmentData = departmentList; state.roleData = roleList; + state.expData = expList if (type === '新增') { state.title = '新增用户'; state.isAdd = true @@ -134,6 +158,8 @@ roleIds: [], depId: null, phone: '', + identityStatus: null, + identityIds: [], idType: 1, idSerial: '', pwd: '' @@ -143,6 +169,7 @@ state.isAdd = false state.userForm = JSON.parse(JSON.stringify(value)); state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles.map(i=>i.roleId) + state.userForm.identityIds = JSON.parse(JSON.stringify(value)).userIdentities.map(i=>i.userIdentityId) } }; @@ -174,6 +201,9 @@ }); return } + if(state.userForm.identityStatus == 1){ + state.userForm.identityIds = [] + } if (state.title === '新增用户') { let res = await userApi().addUser(state.userForm); if (res.data.code === 100) { @@ -191,8 +221,8 @@ }); } } else { - const {name, realName, roleIds, depId, phone, idType, idSerial,id } = state.userForm - const data = {name, realName, roleIds, depId, phone, idType, idSerial,id} + const {name, realName, roleIds, depId, phone, idType, idSerial, id, identityStatus, identityIds } = state.userForm + const data = {name, realName, roleIds, depId, phone, idType, idSerial,id, identityStatus, identityIds} let res = await userApi().modUser(data); if (res.data.code === 100) { ElMessage({ diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index fe0ea7e..ec5954b 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -101,6 +101,7 @@ idTypeList: Array<idType> depList: []; roleList: []; + expList: []; searchName:string } @@ -132,12 +133,13 @@ ], depList: [], roleList: [], + expList: [], searchName: '' }); // 初始化表格数据 const initUserTableData = async () => { let res = await userApi().getUserList(state.userTableData.listQuery); - if (res.data.code === 200) { + if (res.data.code === 100) { state.userTableData.data = res.data.data; state.userTableData.total = res.data.total; } else { @@ -196,10 +198,21 @@ } }; + const getExpertsData = async () => { + let res = await useRoleApi().getExpList(); + if (res.data.code === 100) { + state.expList = res.data.data; + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; + // 打开新增修改用户弹窗 const onOpenUserDialog = (type: string, value: any) => { - console.log('打开',state.depList, state.roleList) - userRef.value.openDialog(type, value, state.depList, state.roleList); + userRef.value.openDialog(type, value, state.depList, state.roleList, state.expList); }; // 删除用户 @@ -241,6 +254,7 @@ onMounted(() => { initUserTableData(); getRoleData(); + getExpertsData(); getDepList() }); return { -- Gitblit v1.9.2