深海科学与工程研究所安全巡检系统
祖安之光
2026-03-18 53a4a074f3e59efb05b2e5ca76d364f53939d957
src/views/system/user/index.vue
@@ -29,6 +29,15 @@
         <!--用户数据-->
         <el-col :span="20" :xs="24">
            <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
              <el-form-item label="姓名" prop="nickName">
                <el-input
                    v-model="queryParams.nickName"
                    placeholder="请输入用户姓名"
                    clearable
                    style="width: 240px"
                    @keyup.enter="handleQuery"
                />
              </el-form-item>
               <el-form-item label="用户名称" prop="userName">
                  <el-input
                     v-model="queryParams.userName"
@@ -133,8 +142,12 @@
               <el-table-column type="selection" width="50" align="center" />
               <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
               <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
               <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
               <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
               <el-table-column label="姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
               <el-table-column label="部门" align="center" key="deptName" prop="depts.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" >
                  <template #default="scope">
                     {{ scope.row.depts?scope.row.depts.map(i=>i.deptName).join('/'): '' }}
                  </template>
               </el-table-column>
               <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
               <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
                  <template #default="scope">
@@ -183,19 +196,21 @@
         <el-form :model="form" :rules="rules" ref="userRef" label-width="80px">
            <el-row>
               <el-col :span="12">
                  <el-form-item label="用户昵称" prop="nickName">
                     <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
                  <el-form-item label="姓名" prop="nickName">
                     <el-input v-model="form.nickName" placeholder="请输入姓名" maxlength="30" />
                  </el-form-item>
               </el-col>
               <el-col :span="12">
                  <el-form-item label="归属部门" prop="deptId">
                  <el-form-item label="归属部门" prop="deptIds">
                     <el-tree-select
                        v-model="form.deptId"
                        v-model="form.deptIds"
                        :data="deptOptions"
                        :props="{ value: 'id', label: 'label', children: 'children' }"
                        value-key="id"
                        placeholder="请选择归属部门"
                        check-strictly
                        multiple
                        clearable
                     />
                  </el-form-item>
               </el-col>
@@ -264,7 +279,7 @@
                  </el-form-item>
               </el-col>
               <el-col :span="12">
                  <el-form-item label="角色">
                  <el-form-item label="角色" prop="roleIds">
                     <el-select v-model="form.roleIds" multiple placeholder="请选择">
                        <el-option
                           v-for="item in roleOptions"
@@ -371,7 +386,7 @@
const columns = ref([
  { key: 0, label: `用户编号`, visible: true },
  { key: 1, label: `用户名称`, visible: true },
  { key: 2, label: `用户昵称`, visible: true },
  { key: 2, label: `姓名`, visible: true },
  { key: 3, label: `部门`, visible: true },
  { key: 4, label: `手机号码`, visible: true },
  { key: 5, label: `状态`, visible: true },
@@ -383,6 +398,7 @@
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    nickName: undefined,
    userName: undefined,
    phonenumber: undefined,
    status: undefined,
@@ -390,10 +406,11 @@
  },
  rules: {
    userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
    nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
    nickName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
    password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
    email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
    phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
    phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
    roleIds: [{ required: true, message: "用户角色不能为空", trigger: "blur" }]
  }
});
@@ -546,7 +563,8 @@
    status: "0",
    remark: undefined,
    postIds: [],
    roleIds: []
    roleIds: [],
    deptIds: []
  };
  proxy.resetForm("userRef");
};
@@ -564,6 +582,7 @@
    open.value = true;
    title.value = "添加用户";
    form.value.password = initPassword.value;
    form.value.deptId = queryParams.value.deptId || null
  });
};
/** 修改按钮操作 */
@@ -576,6 +595,7 @@
    roleOptions.value = response.roles;
    form.value.postIds = response.postIds;
    form.value.roleIds = response.roleIds;
    form.value.deptIds = response.data.depts?.map(i=>i.deptId)
    open.value = true;
    title.value = "修改用户";
    form.password = "";