From 226de684b04ae50ea17677744251882e910182f6 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Thu, 04 May 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