pengwei
2025-04-27 366612bd8e8b88d02a98edf508f96d7add23ff9f
ÏîÄ¿´úÂë/client/src/views/tts/UserManagement/Usermanagement.vue
@@ -39,7 +39,7 @@
            size="small"
          />
        </div>
        <!-- <div class="serch_box">
        <div class="serch_box">
          <div class="serchb">
            <el-select
              v-model="queryForm.selectType"
@@ -56,11 +56,11 @@
            </el-select>
          </div>
          <input
            v-model="queryForm.selectName"
            v-model="queryForm.selectInput"
            placeholder="请输入关键词搜索"
            style="border-left: 0.06rem solid #e2e2e2"
          />
        </div> -->
        </div>
        <el-button
          @click="handleQuery"
          type="primary"
@@ -87,7 +87,7 @@
              display: flex;
              align-items: center;
            "
            ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon
            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
            >新建</el-button
          >
          <!-- ç”¨æˆ·è§’色新建 -->
@@ -103,10 +103,11 @@
              display: flex;
              align-items: center;
            "
            ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon
            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
            >新建</el-button
          >
          <el-button
            v-if="isactive != 3"
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
@@ -123,6 +124,7 @@
      <div style="margin-top: 1rem; height: 100%">
        <!-- ç”¨æˆ·åˆ—表 -->
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 1"
          :data="tableData"
@@ -139,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
@@ -181,16 +183,29 @@
            <template #default="scope">
              <el-image
                style="width: 70px; height: 70px"
                :src="scope.row.headImageUrl"
                :src="'http://115.159.85.185:9098' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </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="
                  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"
                :inactive-value="0"
@@ -206,14 +221,26 @@
          />
          <el-table-column label="操作" align="center" min-width="3%">
            <template #default="scope">
              <el-button size="small" type="text" @click="Edit(scope.row)"
              <el-button
                size="small"
                type="text"
                @click="Edit(scope.row)"
                :disabled="scope.row.isdisabled"
                >编辑</el-button
              >
              <el-button
                size="small"
                type="text"
                :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>
@@ -221,6 +248,7 @@
        <!-- ç”¨æˆ·è§’色 -->
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 2"
          :data="grideData"
@@ -237,19 +265,21 @@
            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" />
          <el-table-column prop="name" label="角色权限" align="center">
            <template #default="scope">
              <span
                @click="
                  router.replace({
                    path: `/permission`,
                    state: { info: JSON.stringify(scope.row) },
                  })
                v-if="
                  !(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"
                >管理</span
              >
@@ -259,6 +289,9 @@
          <el-table-column label="是否启用" align="center">
            <template #default="scope">
              <el-switch
                :disabled="
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1')
                "
                v-model="scope.row.enable"
                :active-value="1"
                :inactive-value="0"
@@ -270,6 +303,13 @@
          <el-table-column label="操作" align="center">
            <template #default="scope">
              <span
                v-if="
                  !(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)"
                >编辑</span
@@ -305,9 +345,9 @@
          layout="prev, pager, next"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="RoleSizeChange"
          @current-change="RoleCurrentChange"
          :total="pageTotal1"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
@@ -320,6 +360,7 @@
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm(formUserRef)"
    >
      <template #title>
        <div
@@ -339,11 +380,13 @@
        :model="formUser"
        label-width="auto"
        label-position="top"
        ref="formRef"
        :rules="rules"
        ref="formUserRef"
        :hide-required-asterisk="true"
      >
        <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>
@@ -355,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>
@@ -373,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>
@@ -391,7 +434,7 @@
              </template>
              <el-input
                size="small"
                v-model="formUser.phoneNo"
                v-model="formUser.phoneno"
                placeholder="请输入"
              />
            </el-form-item>
@@ -399,23 +442,49 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="roleid">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >用户角色</span
                  >
                    >用户角色
                  </span>
                </div>
              </template>
              <el-select
                v-model="formUser.role_Id"
                v-model="formUser.roleid"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  :disabled="item.roleId == 1"
                  v-for="item in groupOptions"
                  :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">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >用户类型
                  </span>
                </div>
              </template>
              <el-select
                v-model="formUser.rolename"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in roleNameList"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
@@ -424,7 +493,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="enable">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -458,25 +527,33 @@
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >人脸图片</span
                  ><span
                  >
                  <!-- <span
                    style="
                      color: rgba(255, 0, 0, 1);
                      font-size: 0.75rem;
                      margin-left: 0.5rem;
                    "
                    >注:最多可上传三张,图片需要正规的人像证件照</span
                  >
                  > -->
                </div>
              </template>
              <el-upload
                ref="uploadRef"
                name="files"
                class="avatar-uploader"
                action="#"
                action="http://115.159.85.185:9098/api/User/SaveFiles"
                list-type="picture-card"
                :auto-upload="false"
                limit="1"
                :auto-upload="true"
                @before-upload="beforeAvatarUpload"
                :on-change="handleAvatarSuccess"
                :on-success="handleAvatarSuccess"
                :file-list="fileList != [] ? fileList : []"
                :class="{ hide: showUpload }"
              >
                <el-icon><Plus /></el-icon>
                <el-icon>
                  <Plus />
                </el-icon>
                <template #file="{ file }">
                  <div>
                    <img
@@ -496,14 +573,18 @@
                        class="el-upload-list__item-delete"
                        @click="handleDownload(file)"
                      >
                        <el-icon size="15"><Download /></el-icon>
                        <el-icon size="15">
                          <Download />
                        </el-icon>
                      </span>
                      <span
                        v-if="!disabled"
                        class="el-upload-list__item-delete"
                        @click="handleRemove(file)"
                      >
                        <el-icon size="15"><Delete /></el-icon>
                        <el-icon size="15">
                          <Delete />
                        </el-icon>
                      </span>
                    </span>
                  </div>
@@ -525,7 +606,7 @@
          <el-button
            size="small"
            type="primary"
            @click="saveObj"
            @click="saveObj(formUserRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
@@ -558,7 +639,7 @@
        </div>
      </template>
      <el-form
        :model="formpassword"
        :model="newobj"
        label-width="auto"
        label-position="top"
        ref="formpasswordRef"
@@ -585,11 +666,11 @@
            </div>
          </el-col>
        </el-row>
        <el-form-item prop="password">
        <el-form-item prop="newPwd">
          <el-input
            style="margin-top: 1rem"
            size="large"
            v-model="formpassword.password"
            v-model="newobj.newPwd"
            placeholder="请输入"
          />
        </el-form-item>
@@ -623,6 +704,7 @@
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm1(formRoleRef)"
    >
      <template #title>
        <div
@@ -700,7 +782,6 @@
    </el-dialog>
    <!-- æƒé™ç®¡ç†å¼¹å‡ºæ¡† -->
    <el-dialog v-model="imgdialogVisible">
      <div
        style="
@@ -717,15 +798,20 @@
  </div>
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { ref, reactive, onMounted, toRef } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import {
  GetUserList,
  AddUser,
  UpdateUser,
  DelApi,
  ExportApi,
  ExportApi1,
  UpdatePwd,
  NewGetUserList,
  AdduserData,
  NewUpdateUser,
  DeleteUserData,
  FaceGetPageData,
} from "@/api/user";
import { useRouter } from "vue-router";
import { formatTime } from "@/utils/index.js";
@@ -736,17 +822,20 @@
  UpdateRoleApi,
  DeleteRoleApi,
} from "@/api/role";
const queryForm = reactive({
let obj = {
  selectName: "",
  selectTime: [], // æ—¶é—´èŒƒå›´
  selectType: "",
  selectInput: "",
});
};
const queryForm = toRef({ ...obj });
const router = useRouter();
const tableData = ref([]);
const grideData = ref([{ id: 1 }]);
const formRef = ref();
const grideData = ref([]);
const faceData = ref([]);
//新建用户ref
const formUserRef = ref();
const options = ref([]);
const props = { multiple: true };
const isoptins = ref([
@@ -756,70 +845,73 @@
  },
  { value: 1, label: "是" },
]);
const showUpload = ref(false);
//分组
const groupOptions = ref([
  { value: 1, label: "超级管理员" },
  { value: 2, label: "质检组" },
  { value: 3, label: "电气组" },
  { value: 4, label: "机械组" },
  { value: 5, label: "地沟组" },
]);
const table = ref(false);
const groupOptions = ref([]);
const groupIDOptions = ref([]);
const formUser = ref({
  user_Id: undefined,
  userName: "",
  role_Id: 2,
  roleName: "",
  phoneNo: "",
  remark: "",
  userPwd: "123456",
  userTrueName: "",
  dept_Id: 0,
  id: undefined,
  username: "",
  phoneno: "",
  roleid: 2,
  rolename: "",
  enable: 1,
  headImageUrl: "",
  path: "",
  usertruename: "",
});
const userform = reactive({
  userName: "",
  description: "",
const rules = reactive({
  username: {
    required: true,
    message: "请输入用户名",
    trigger: "blur",
  },
  roleid: {
    required: true,
    message: "请选择角色",
    trigger: "change",
  },
  newPwd: [
    {
      required: true,
      message: "请输入密码",
      trigger: "blur",
    },
  ],
  realName: {
    required: true,
    message: "请输入姓名",
    trigger: "blur",
  },
  phoneno: {
    required: true,
    message: "请输入手机号",
    trigger: "blur",
  },
  usertruename: {
    required: true,
    message: "请输入真实姓名",
    trigger: "blur",
  },
});
const formpasswordRef = ref();
const isactive = ref(1);
const claimdialogVisible = ref(false);
const dialogVisible = ref(false);
const imgdialogVisible = ref(false);
const dialogImageUrl = ref("");
const userInfo = ref();
//用户信息修改密码弹出框
const dialogVisible1 = ref(false);
//用户角色新建
const dialogVisible2 = ref(false);
const TorquedialogVisible = ref(false);
//分页请求参数
const pageQuery = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "createDate", //排序字段
  wheres: "", //条件查询
});
const changeactive = (index) => {
  isactive.value = index;
  if (isactive.value == 1) {
    selectoptions.value = userOptions;
    initData();
  } else {
    selectoptions.value = roleOptions;
    getRole();
  }
};
//筛选条件
const userOptions = [
  {
    value: "userName",
    value: "username",
    label: "登录账号",
  },
  {
    value: "userTrueName",
    value: "usertruename",
    label: "真实姓名",
  },
  {
@@ -827,7 +919,18 @@
    label: "联系方式",
  },
];
const fileList = ref([]);
const roleNameList = ref([
  { value: "电气质检", label: "电气质检" },
  { value: "机械质检", label: "机械质检" },
  { value: "地沟质检", label: "地沟质检" },
  { value: "电气力矩", label: "电气力矩" },
  { value: "电气辅助", label: "电气辅助" },
  { value: "机械力矩", label: "机械力矩" },
  { value: "机械辅助", label: "机械辅助" },
  { value: "地沟力矩", label: "地沟力矩" },
  { value: "地沟辅助", label: "地沟辅助" },
]);
const roleOptions = [
  {
    value: "roleName",
@@ -836,116 +939,239 @@
];
const selectoptions = ref([]);
selectoptions.value = userOptions;
//用户修改密码
const formpassword = ref({
  password: "",
  oldPwd: "",
  newPwd: "",
});
const passwordrules = reactive({
  password: {
    required: true,
    message: "请输入密码",
    trigger: "blur",
  },
  newPwd: [
    {
      required: true,
      message: "请输入密码",
      trigger: "blur",
    },
    {
      min: 6,
      max: 12,
      message: "密码长度在 6 åˆ° 12 ä¸ªå­—符",
      trigger: "blur",
    },
  ],
});
const uploadRef = ref();
const pageTotal = ref(0);
//登录记录
const pageTotal1 = ref(0);
const pageTotal2 = ref(0);
//用户列表
const initData = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.selectTime[0]);
  const endTime = formatTime(queryForm.selectTime[1]);
  const startTime = formatTime(queryForm.value.selectTime[0]);
  const endTime = formatTime(queryForm.value.selectTime[1]);
  const filter = [
    {
      name: "",
      value: queryForm.selectType,
      displayType: "int",
      name: queryForm.value.selectType,
      value: queryForm.value.selectInput,
      displayType: "like",
    },
    { 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;
  });
};
//分页请求参数
const pageQuery = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "", //排序字段
  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;
  initData();
  if (isactive.value == 1) {
    pageQuery.value.page = 1;
    initData();
  } else if (isactive.value == 2) {
    pageQuery1.value.page = 1;
    getRole();
  } else {
    pageQuery2.value.page = 1;
    GetFacePageData();
  }
};
//重置查询条件
const resetQuery = () => {
  queryForm.selectName = "";
  queryForm.selectInput = "";
  queryForm.selectTime = [];
  queryForm.selectType = "";
  pageQuery.value.page = 1;
  initData();
  queryForm.value = Object.assign({}, obj);
  if (isactive.value == 1) {
    pageQuery.value.page = 1;
    initData();
  } else if (isactive.value == 2) {
    pageQuery1.value.page = 1;
    getRole();
  } else {
    pageQuery2.value.page = 1;
    GetFacePageData();
  }
};
//分页页面大小改变
const handleSizeChange = (val) => {
  pageQuery.value.rows = val;
  initData();
  if (isactive.value == 1) {
    initData();
  } else if (isactive.value == 2) {
    getRole();
  } else {
    GetFacePageData();
  }
};
//分页页面改变
const handleCurrentChange = (val) => {
  pageQuery.value.page = val;
  initData();
  if (isactive.value == 1) {
    initData();
  } else if (isactive.value == 2) {
    getRole();
  } else {
    GetFacePageData();
  }
};
//分页页面大小改变
const RoleSizeChange = (val) => {
  pageQuery.value.rows = val;
  getRole();
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 = {
    username: "",
    phoneno: "",
    roleid: 2,
    rolename: "",
    enable: 1,
    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 = {
    roleName: "",
    description: "",
  };
};
//分页页面改变
const RoleCurrentChange = (val) => {
  pageQuery.value.page = val;
  getRole();
};
const handlePictureCardPreview = (uploadFile) => {
  dialogImageUrl.value = uploadFile.url;
  imgdialogVisible.value = true;
};
const handleAvatarSuccess = (val) => {
  console.log(val);
const handleRemove = (file, fileList1) => {
  fileList.value = [];
  //移除已上传的图片
  formUser.value.path = "";
  if (fileList.value.length < 1) {
    showUpload.value = false;
  }
};
const beforeAvatarUpload = (val) => {
  console.log(val);
};
//新建用户账号
const saveObj = () => {
  formRef.value.validate((valid) => {
const saveObj = async (formEl) => {
  // submitUpload();
  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();
        });
      }
    } else {
      console.log("error submit!", fields);
    }
  });
};
//是否启用
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) => {
@@ -958,26 +1184,51 @@
};
//编辑用户账号
const Edit = (val) => {
  console.log(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.path != "") {
    fileList.value = [
      {
        name: "1",
        url: "http://115.159.85.185:9098" + obj.path,
      },
    ];
  }
  dialogVisible.value = true;
  formUser.value = obj;
};
const newobj = ref({});
//修改密码
const Editpassword = (val) => {
  let obj = Object.assign({}, val);
  formUser.value = obj;
  formpassword.value = val;
  newobj.value = val;
  newobj.value = Object.assign({}, val);
  dialogVisible1.value = true;
};
//保存修改密码
const savePassword = async (formEl) => {
  let obj = Object.assign({}, newobj);
  obj.password = formpassword.value.password;
  let obj = Object.assign({}, newobj.value);
  let formdata = {
    id: obj.user_Id,
    oldPwd: obj.userPwd,
    newPwd: obj.newPwd,
  };
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      UpdateUser(obj).then((res) => {
      UpdatePwd(formdata).then((res) => {
        ElMessage({ message: "修改密码成功", type: "success" });
        dialogVisible1.value = false;
        initData();
@@ -1003,7 +1254,10 @@
const formRole = ref({
  roleName: "",
  description: "",
  createDate: formatTime(new Date()), //创建时间
  creater: JSON.parse(localStorage.getItem("user")).userName, //创建人
});
//新建角色
const AddRole = () => {
  Roletype.value = "新建";
@@ -1040,42 +1294,66 @@
  formRole.value = obj;
  dialogVisible2.value = true;
};
//获取角色
const getRole = () => {
  GetPageDataApi({
    page: 1,
    rows: 10,
    total: 100,
    tableName: "",
    sort: "",
    order: "",
    wheres: "",
    export: true,
    value: "",
    filter: [
      {
        name: "string",
        value: "string",
        displayType: "string",
      },
    ],
  }).then((res) => {
    grideData.value = res.rows;
    pageTotal.value = res.total;
  });
};
const printExcel = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.selectTime[0]);
  const endTime = formatTime(queryForm.selectTime[1]);
  const startTime = formatTime(queryForm.value.selectTime[0]);
  const endTime = formatTime(queryForm.value.selectTime[1]);
  const filter = [
    {
      name: queryForm.selectType,
      value: queryForm.selectInput,
      displayType: "String",
      name: queryForm.value.selectType,
      value: queryForm.value.selectInput,
      displayType: "like",
    },
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => {
    grideData.value = res.rows;
    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 = () => {
  // æŸ¥è¯¢æ¡ä»¶
  const startTime = formatTime(queryForm.value.selectTime[0]);
  const endTime = formatTime(queryForm.value.selectTime[1]);
  const filter = [
    {
      name: queryForm.value.selectType,
      value: queryForm.value.selectInput,
      displayType: "like",
    },
    {
      name: "pustatus",
      value: queryForm.selectName,
      value: queryForm.value.selectName,
      displayType: "String",
    },
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
@@ -1094,6 +1372,19 @@
    });
  }
};
//切换页面
const changeactive = (index) => {
  isactive.value = index;
  if (isactive.value == 1) {
    selectoptions.value = userOptions;
    initData();
  } else if (isactive.value == 2) {
    selectoptions.value = roleOptions;
    getRole();
  } else {
    GetFacePageData();
  }
};
//批量删除
const ids = ref([]);
@@ -1106,6 +1397,10 @@
  ids.value = val.map((item) => item.roleId);
};
const deleteAll = () => {
  if (ids.value.includes(1)) {
    ElMessage({ message: "超级管理员不能删除", type: "error" });
    return;
  }
  if (ids.value.length == 0) {
    ElMessage({ message: "请选择要删除的数据", type: "error" });
    return;
@@ -1123,24 +1418,35 @@
  }
};
//管理
//路由跳转
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 {
    width: 100%;
    display: flex;
    flex-direction: column;
    .checkbox {
      width: 11rem;
      display: flex;
      justify-content: space-between;
      margin-top: 1rem;
      margin-left: 1.31rem;
      .item {
        width: 5rem;
        height: 1.88rem;
@@ -1152,20 +1458,24 @@
        line-height: 1.88rem;
        cursor: pointer;
      }
      .isactive {
        background-color: rgba(16, 16, 16, 1);
        color: rgba(255, 255, 255, 1);
      }
    }
    .serch {
      display: flex;
      margin-top: 1.31rem;
      align-items: center;
      .time_box {
        display: flex;
        align-items: center;
        text-align: center;
        margin-left: 0.98rem;
        .time {
          box-sizing: border-box;
          width: 6.88rem;
@@ -1179,12 +1489,14 @@
          justify-content: center;
        }
      }
      .serch_box {
        display: flex;
        align-items: center;
        text-align: center;
        margin-left: 0.98rem;
        border-radius: 0.38rem;
        .serchb {
          box-sizing: border-box;
          width: 6.88rem;
@@ -1195,6 +1507,7 @@
          align-items: center;
          justify-content: center;
        }
        input {
          box-sizing: border-box;
          outline: none;
@@ -1207,6 +1520,7 @@
        }
      }
    }
    .btns {
      display: flex;
      justify-content: space-between;
@@ -1217,17 +1531,20 @@
      box-sizing: border-box;
    }
  }
  .my-header {
    height: 3.84rem;
    display: flex;
    justify-content: space-between;
    border-bottom: 0.06rem solid rgba(233, 233, 233, 1);
  }
  .avatar-uploader .avatar {
    width: 7rem;
    height: 7rem;
    display: block;
  }
  :deep(.avatar-uploader .el-upload) {
    width: 7rem;
    height: 7rem;
@@ -1238,10 +1555,12 @@
    overflow: hidden;
    transition: var(--el-transition-duration-fast);
  }
  :deep(.el-upload-list__item) {
    width: 7rem;
    height: 7rem;
  }
  .avatar-uploader .el-upload:hover {
    border-color: var(--el-color-primary);
  }
@@ -1254,13 +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>