马宇豪
2023-05-04 226de684b04ae50ea17677744251882e910182f6
专家库
已修改13个文件
已添加2个文件
627 ■■■■■ 文件已修改
src/api/systemManage/role/index.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/systemManage/user/index.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/applyReview/components/reportDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/assessApply/components/reportDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/assessApply/components/riskDialog.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/assessApply/components/riskUnitDialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/evaluate/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/identify/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/plan/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/developing/components/developDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/project/components/projectDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/experts/component/userDialog.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/experts/index.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/component/userDialog.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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({
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({
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({
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({
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({
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,
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({
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({
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({
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({
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({
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>
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>
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({
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 {