pengwei
2025-04-27 366612bd8e8b88d02a98edf508f96d7add23ff9f
ÏîÄ¿´úÂë/client/src/views/tts/UserManagement/Usermanagement.vue
@@ -107,6 +107,7 @@
            >新建</el-button
          >
          <el-button
            v-if="isactive != 3"
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
@@ -140,7 +141,7 @@
            fontSize: '0.88rem',
            height: '3rem',
          }"
          @select="UserSelectionChange"
          @selection-change="UserSelectionChange"
        >
          <el-table-column type="selection" align="center" min-width="1%" />
          <el-table-column
@@ -189,11 +190,21 @@
              />
            </template>
          </el-table-column>
          <el-table-column
            prop="groupID"
            label="百度云分组"
            align="center"
            min-width="3%"
          />
          <el-table-column label="是否启用" align="center" min-width="2%">
            <template #default="scope">
              <el-switch
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                  userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName
                "
                v-model="scope.row.enable"
                :active-value="1"
@@ -214,19 +225,22 @@
                size="small"
                type="text"
                @click="Edit(scope.row)"
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                "
                :disabled="scope.row.isdisabled"
                >编辑</el-button
              >
              <el-button
                size="small"
                type="text"
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                "
                :disabled="scope.row.isdisabled"
                @click="Editpassword(scope.row)"
                >修改密码</el-button
              >
              <el-button
                size="small"
                type="text"
                @click="deletUser(scope.row)"
                :disabled="scope.row.isdisabled"
                >删除</el-button
              >
            </template>
          </el-table-column>
@@ -251,7 +265,7 @@
            fontSize: '0.88rem',
            height: '3rem',
          }"
          @select="RoleSelectionChange"
          @selection-change="RoleSelectionChange"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="roleName" label="角色名称" align="center" />
@@ -259,7 +273,11 @@
            <template #default="scope">
              <span
                v-if="
                  scope.row.roleName != '超级管理员' || scope.row.roleId != '1'
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName)
                "
                @click="toDetail(scope.row)"
                style="color: #4386ff; cursor: pointer"
@@ -272,7 +290,7 @@
            <template #default="scope">
              <el-switch
                :disabled="
                  scope.row.roleName == '超级管理员' || scope.row.roleId == '1'
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1')
                "
                v-model="scope.row.enable"
                :active-value="1"
@@ -286,7 +304,11 @@
            <template #default="scope">
              <span
                v-if="
                  scope.row.roleName != '超级管理员' || scope.row.roleId != '1'
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName)
                "
                style="color: blue; font-size: 0.88rem; cursor: pointer"
                @click="EditRole(scope.row)"
@@ -313,6 +335,17 @@
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
        <el-pagination
          v-if="isactive == 2"
          size="small"
          background
          layout="prev, pager, next"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal1"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
@@ -353,7 +386,7 @@
      >
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item prop="userName">
            <el-form-item prop="username">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -365,13 +398,13 @@
              </template>
              <el-input
                size="small"
                v-model="formUser.userName"
                v-model="formUser.username"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item prop="userTrueName">
            <el-form-item prop="usertruename">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -383,13 +416,13 @@
              </template>
              <el-input
                size="small"
                v-model="formUser.userTrueName"
                v-model="formUser.usertruename"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item prop="phoneNo">
            <el-form-item prop="phoneno">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -401,7 +434,7 @@
              </template>
              <el-input
                size="small"
                v-model="formUser.phoneNo"
                v-model="formUser.phoneno"
                placeholder="请输入"
              />
            </el-form-item>
@@ -409,7 +442,7 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item prop="role_Id">
            <el-form-item prop="roleid">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -420,22 +453,22 @@
                </div>
              </template>
              <el-select
                v-model="formUser.role_Id"
                v-model="formUser.roleid"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  :disabled="item.value == 20"
                  :disabled="item.roleId == 1"
                  v-for="item in groupOptions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  :key="item.roleId"
                  :label="item.roleName"
                  :value="item.roleId"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item prop="roleName">
            <el-form-item prop="rolename">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -446,7 +479,7 @@
                </div>
              </template>
              <el-select
                v-model="formUser.roleName"
                v-model="formUser.rolename"
                placeholder="请选择"
                size="small"
              >
@@ -516,6 +549,7 @@
                @before-upload="beforeAvatarUpload"
                :on-success="handleAvatarSuccess"
                :file-list="fileList != [] ? fileList : []"
                :class="{ hide: showUpload }"
              >
                <el-icon>
                  <Plus />
@@ -605,7 +639,7 @@
        </div>
      </template>
      <el-form
        :model="formUser"
        :model="newobj"
        label-width="auto"
        label-position="top"
        ref="formpasswordRef"
@@ -636,7 +670,7 @@
          <el-input
            style="margin-top: 1rem"
            size="large"
            v-model="formUser.newPwd"
            v-model="newobj.newPwd"
            placeholder="请输入"
          />
        </el-form-item>
@@ -748,7 +782,6 @@
    </el-dialog>
    <!-- æƒé™ç®¡ç†å¼¹å‡ºæ¡† -->
    <el-dialog v-model="imgdialogVisible">
      <div
        style="
@@ -768,16 +801,17 @@
import { ref, reactive, onMounted, toRef } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import {
  GetUserList,
  AddUser,
  UpdateUser,
  DelApi,
  ExportApi,
  ExportApi1,
  UpdatePassword,
  UpdatePwd,
  AddUserApi,
  EditUserApi,
  NewGetUserList,
  AdduserData,
  NewUpdateUser,
  DeleteUserData,
  FaceGetPageData,
} from "@/api/user";
import { useRouter } from "vue-router";
import { formatTime } from "@/utils/index.js";
@@ -799,6 +833,7 @@
const tableData = ref([]);
const grideData = ref([]);
const faceData = ref([]);
//新建用户ref
const formUserRef = ref();
const options = ref([]);
@@ -810,37 +845,27 @@
  },
  { value: 1, label: "是" },
]);
const showUpload = ref(false);
//分组
const groupOptions = ref([
  { value: 20, label: "超级管理员" },
  { value: 21, label: "质检组" },
  { value: 22, label: "电气组" },
  { value: 23, label: "机械组" },
  { value: 24, label: "地沟组" },
]);
const groupOptions = ref([]);
const groupIDOptions = ref([]);
const formUser = ref({
  user_Id: undefined,
  userName: "",
  role_Id: 21,
  roleName: "",
  phoneNo: "",
  remark: "",
  userPwd: "123456",
  userTrueName: "",
  dept_Id: 0,
  id: undefined,
  username: "",
  phoneno: "",
  roleid: 2,
  rolename: "",
  enable: 1,
  headImageUrl: "",
  createDate: formatTime(new Date()), //创建时间
  creater: JSON.parse(localStorage.getItem("user")).userName, //创建人
  newPwd: "",
  path: "",
  usertruename: "",
});
const rules = reactive({
  userName: {
  username: {
    required: true,
    message: "请输入用户名",
    trigger: "blur",
  },
  role_Id: {
  roleid: {
    required: true,
    message: "请选择角色",
    trigger: "change",
@@ -857,12 +882,12 @@
    message: "请输入姓名",
    trigger: "blur",
  },
  phoneNo: {
  phoneno: {
    required: true,
    message: "请输入手机号",
    trigger: "blur",
  },
  userTrueName: {
  usertruename: {
    required: true,
    message: "请输入真实姓名",
    trigger: "blur",
@@ -874,6 +899,7 @@
const dialogVisible = ref(false);
const imgdialogVisible = ref(false);
const dialogImageUrl = ref("");
const userInfo = ref();
//用户信息修改密码弹出框
const dialogVisible1 = ref(false);
//用户角色新建
@@ -881,11 +907,11 @@
//筛选条件
const userOptions = [
  {
    value: "userName",
    value: "username",
    label: "登录账号",
  },
  {
    value: "userTrueName",
    value: "usertruename",
    label: "真实姓名",
  },
  {
@@ -935,39 +961,11 @@
});
const uploadRef = ref();
// //用户修改密码
// const handleUpdatePassword = (row) => {
//   dialogVisible1.value = true;
//   formUser.value = Object.assign({}, row);
// };
// const UpdatePassword = () => {
//   formpasswordRef.value.validate((valid) => {
//     if (valid) {
//       UpdatePassword({
//         user_Id: formUser.value.user_Id,
//         oldPwd: formpassword.value.oldPwd,
//         newPwd: formpassword.value.newPwd,
//       }).then((res) => {
//         if (res.code == 200) {
//           ElMessage({
//             message: "修改成功",
//             type: "success",
//           });
//           dialogVisible1.value = false;
//           initData();
//         } else {
//           ElMessage({
//             message: res.msg,
//             type: "error",
//           });
//         }
//       });
//     }
//   });
// };
const pageTotal = ref(0);
//登录记录
const pageTotal1 = ref(0);
const pageTotal2 = ref(0);
//用户列表
const initData = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.value.selectTime[0]);
@@ -981,12 +979,25 @@
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetUserList({
    ...pageQuery.value,
    filter,
  NewGetUserList({
    pageIndex: pageQuery.value.page,
    pageSize: pageQuery.value.rows,
    searchKeyword: queryForm.value.selectInput,
    startDate: startTime,
    endDate: endTime,
  }).then((res) => {
    tableData.value = res.rows;
    pageTotal.value = res.total;
    tableData.value = res.data.items.map((item) => {
      return {
        ...item,
        isdisabled:
          userInfo.value.userName == "admin" || userInfo.value.roleId == "1"
            ? item.userName == "admin" || item.user_Id == "1"
            : item.userName == "admin" ||
              item.user_Id == "1" ||
              item.userName != userInfo.value.userName,
      };
    });
    pageTotal.value = res.data.totalCount;
  });
};
//分页请求参数
@@ -998,23 +1009,48 @@
  wheres: "", //条件查询
});
//分页请求参数
const pageQuery1 = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "", //排序字段
  wheres: "", //条件查询
});
//分页请求参数
const pageQuery2 = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "", //排序字段
  wheres: "", //条件查询
});
//数据检索事件
const handleQuery = () => {
  pageQuery.value.page = 1;
  if (isactive.value == 1) {
    pageQuery.value.page = 1;
    initData();
  } else {
  } else if (isactive.value == 2) {
    pageQuery1.value.page = 1;
    getRole();
  } else {
    pageQuery2.value.page = 1;
    GetFacePageData();
  }
};
//重置查询条件
const resetQuery = () => {
  queryForm.value = Object.assign({}, obj);
  pageQuery.value.page = 1;
  if (isactive.value == 1) {
    pageQuery.value.page = 1;
    initData();
  } else {
  } else if (isactive.value == 2) {
    pageQuery1.value.page = 1;
    getRole();
  } else {
    pageQuery2.value.page = 1;
    GetFacePageData();
  }
};
//分页页面大小改变
@@ -1022,8 +1058,10 @@
  pageQuery.value.rows = val;
  if (isactive.value == 1) {
    initData();
  } else {
  } else if (isactive.value == 2) {
    getRole();
  } else {
    GetFacePageData();
  }
};
@@ -1032,34 +1070,42 @@
  pageQuery.value.page = val;
  if (isactive.value == 1) {
    initData();
  } else {
  } else if (isactive.value == 2) {
    getRole();
  } else {
    GetFacePageData();
  }
};
const handleAvatarSuccess = (val) => {
  formUser.value.headImageUrl = "/image/" + val.data;
const handleAvatarSuccess = (response, file, fileList) => {
  formUser.value.path = response.data;
  if (fileList.length >= 1) {
    showUpload.value = true;
  }
};
//重置表单
const resetForm = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
  formUser.value = {
    user_Id: undefined,
    userName: "",
    role_Id: 21,
    roleName: "",
    phoneNo: "",
    remark: "",
    userPwd: "123456",
    userTrueName: "",
    dept_Id: 0,
    username: "",
    phoneno: "",
    roleid: 2,
    rolename: "",
    enable: 1,
    headImageUrl: "",
    newPwd: "",
    path: "",
    user_Id: undefined,
  };
  fileList.value = [];
};
const resetForm1 = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
  formRole.value = {
    roleName: "",
    description: "",
  };
};
const resetForm2 = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
  formRole.value = {
@@ -1072,23 +1118,18 @@
  dialogImageUrl.value = uploadFile.url;
  imgdialogVisible.value = true;
};
const handleRemove = (val) => {
const handleRemove = (file, fileList1) => {
  fileList.value = [];
  //移除已上传的图片
  formUser.value.headImageUrl = "";
  formUser.value.path = "";
  if (fileList.value.length < 1) {
    showUpload.value = false;
  }
};
const beforeAvatarUpload = (val) => {
  console.log(val);
};
// const submitUpload = () => {
//   let promise = new Promise((resolve, reject) => {
//     setTimeout(async () => {
//       await uploadRef.value.submit();
//       resolve("上传成功");
//     });
//   });
//   return promise;
// };
//新建用户账号
const saveObj = async (formEl) => {
@@ -1096,14 +1137,14 @@
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      if (formUser.value.user_Id != undefined) {
        UpdateUser(formUser.value).then((res) => {
      if (formUser.value.id != undefined) {
        NewUpdateUser(formUser.value).then((res) => {
          ElMessage({ message: "修改成功", type: "success" });
          dialogVisible.value = false;
          initData();
        });
      } else {
        AddUser(formUser.value).then((res) => {
        AdduserData(formUser.value).then((res) => {
          ElMessage({ message: "提交成功", type: "success" });
          dialogVisible.value = false;
          initData();
@@ -1116,14 +1157,21 @@
};
//是否启用
const changeSwitch = (val) => {
  let data = Object.assign({}, val);
  console.log(data);
  UpdateUser(data).then((res) => {
  let data = {
    id: val.user_Id,
    username: val.userName,
    phoneno: val.phoneNo,
    roleid: val.role_Id,
    rolename: val.roleName,
    enable: val.enable,
    path: val.headImageUrl,
    usertruename: val.userTrueName,
  };
  NewUpdateUser(data).then((res) => {
    ElMessage({ message: "修改成功", type: "success" });
    dialogVisible.value = false;
    initData();
  });
  console.log(val);
};
// ç”¨æˆ·è§’色是否启用
const changeRoleSwitch = (val) => {
@@ -1136,15 +1184,24 @@
};
//编辑用户账号
const Edit = (val) => {
  let obj = Object.assign({}, val);
  let obj = {
    id: val.user_Id,
    username: val.userName,
    phoneno: val.phoneNo,
    roleid: val.role_Id,
    rolename: val.roleName,
    enable: val.enable,
    path: val.headImageUrl,
    usertruename: val.userTrueName,
  };
  formUser.value = {
    ...obj,
  };
  if (obj.headImageUrl != "") {
  if (obj.path != "") {
    fileList.value = [
      {
        name: "1",
        url: "http://115.159.85.185:9098" + obj.headImageUrl,
        url: "http://115.159.85.185:9098" + obj.path,
      },
    ];
  }
@@ -1158,20 +1215,15 @@
  formUser.value = obj;
  formpassword.value = val;
  newobj.value = Object.assign({}, val);
  console.log(newobj.value);
  dialogVisible1.value = true;
};
//保存修改密码
const savePassword = async (formEl) => {
  let obj = Object.assign({}, newobj);
  // obj.password = formpassword.value.password;
  console.log(formUser.value);
  let obj = Object.assign({}, newobj.value);
  let formdata = {
    id: formUser.value.user_Id,
    oldPwd: formUser.value.userPwd,
    newPwd: formUser.value.newPwd,
    id: obj.user_Id,
    oldPwd: obj.userPwd,
    newPwd: obj.newPwd,
  };
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
@@ -1255,11 +1307,39 @@
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetPageDataApi({ ...pageQuery.value, filter }).then((res) => {
  GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => {
    grideData.value = res.rows;
    pageTotal.value = res.total;
    pageTotal1.value = res.total;
    groupOptions.value = res.rows;
  });
};
//删除用户
const deletUser = (val) => {
  ElMessageBox.confirm("确认删除该用户吗?", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
    .then(() => {
      DeleteUserData({
        userAccount: val.userName,
      }).then((res) => {
        ElMessage({
          type: "success",
          message: "删除成功",
        });
        initData();
      });
    })
    .catch(() => {
      ElMessage({
        type: "info",
        message: "取消删除",
      });
    });
};
//打印数据
const printExcel = () => {
  // æŸ¥è¯¢æ¡ä»¶
@@ -1298,9 +1378,11 @@
  if (isactive.value == 1) {
    selectoptions.value = userOptions;
    initData();
  } else {
  } else if (isactive.value == 2) {
    selectoptions.value = roleOptions;
    getRole();
  } else {
    GetFacePageData();
  }
};
@@ -1335,19 +1417,22 @@
    });
  }
};
//管理
//路由跳转
const toDetail = (row) => {
  router.push({ name: "permission", state: { info: JSON.stringify(row) } });
};
onMounted(() => {
  initData();
  getRole();
  userInfo.value = JSON.parse(localStorage.getItem("user"));
});
</script>
<style lang="scss" scoped>
.Usermanagement {
  display: flex;
  flex-direction: column;
  background-color: #fff;
  .content {
@@ -1488,14 +1573,17 @@
    text-align: center;
  }
}
:deep(.hide .el-upload--picture-card) {
  display: none;
}
</style>
<style>
.confirmButtonClass {
/* .confirmButtonClass {
  margin-right: 10px;
}
.el-message-box .el-message-box__btns {
  flex-direction: row-reverse !important;
  justify-content: normal !important;
}
} */
</style>