pengwei
2025-03-24 f90fbbc76d23340e4568dd4dadbab5f7f02a030f
ÏîÄ¿´úÂë/client/src/views/tts/UserManagement/Usermanagement.vue
@@ -17,7 +17,7 @@
      </div>
      <div class="serch">
        <div class="time_box">
          <div class="time">派工日期</div>
          <div class="time">创建日期</div>
          <el-date-picker
            v-model="queryForm.selectTime"
            prefix-icon="none"
@@ -40,20 +40,37 @@
          />
        </div>
        <div class="serch_box">
          <div class="serchb">全局搜索</div>
          <div class="serchb">
            <el-select
              v-model="queryForm.selectType"
              placeholder="请选择"
              size="small"
              style="width: 100%; height: 100%; font-size: 0.15rem"
            >
              <el-option
                v-for="item in selectoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </div>
          <input
            v-model="queryForm.selectName"
            v-model="queryForm.selectInput"
            placeholder="请输入关键词搜索"
            style="border-left: 0.06rem solid #e2e2e2"
          />
        </div>
        <el-button
          @click="handleQuery"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >查询</el-button
        >
        <el-button size="small" style="height: 2rem">重置</el-button>
        <el-button size="small" style="height: 2rem" @click="resetQuery"
          >重置</el-button
        >
      </div>
      <div class="btns">
        <div style="display: flex; align-items: center">
@@ -70,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
          >
          <!-- ç”¨æˆ·è§’色新建 -->
@@ -78,7 +95,7 @@
            v-if="isactive == 2"
            type="primary"
            size="small"
            @click="dialogVisible2 = true"
            @click="AddRole"
            style="
              width: 5.5rem;
              height: 2rem;
@@ -86,15 +103,17 @@
              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
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
            >批量导出</el-button
          >
          <el-button
            @click="deleteAll"
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            >批量删除</el-button
@@ -104,6 +123,8 @@
      <div style="margin-top: 1rem; height: 100%">
        <!-- ç”¨æˆ·åˆ—表 -->
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 1"
          :data="tableData"
          style="width: 100%"
@@ -119,20 +140,92 @@
            fontSize: '0.88rem',
            height: '3rem',
          }"
          @select="UserSelectionChange"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="address" label="登录账号" align="center" />
          <el-table-column prop="name" label="真实姓名" align="center" />
          <el-table-column prop="address" label="联系方式" align="center" />
          <el-table-column prop="address" label="用户分组" align="center" />
          <el-table-column prop="address" label="用户角色" align="center" />
          <el-table-column prop="address" label="人脸照片" align="center" />
          <el-table-column prop="address" label="是否启用" align="center" />
          <el-table-column prop="address" label="创建日期" align="center" />
          <el-table-column prop="address" label="操作" align="center">
            <template #default="">
              <el-button size="small" type="text" @click="Edit">编辑</el-button>
              <el-button size="small" type="text" @click="Editpassword"
          <el-table-column type="selection" align="center" min-width="1%" />
          <el-table-column
            prop="userName"
            label="登录账号"
            align="center"
            min-width="2%"
          />
          <el-table-column
            prop="userTrueName"
            label="真实姓名"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="phoneNo"
            label="联系方式"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="role_Id"
            label="用户分组"
            align="center"
            min-width="2%"
          />
          <el-table-column
            prop="roleName"
            label="用户角色"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="address"
            label="人脸照片"
            align="center"
            min-width="3%"
          >
            <template #default="scope">
              <el-image
                style="width: 70px; height: 70px"
                :src="'http://115.159.85.185:9098' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </template>
          </el-table-column>
          <el-table-column label="是否启用" align="center" min-width="2%">
            <template #default="scope">
              <el-switch
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                "
                v-model="scope.row.enable"
                :active-value="1"
                :inactive-value="0"
                @change="changeSwitch(scope.row)"
              />
            </template>
          </el-table-column>
          <el-table-column
            prop="createDate"
            label="创建日期"
            align="center"
            min-width="3%"
          />
          <el-table-column label="操作" align="center" min-width="3%">
            <template #default="scope">
              <el-button
                size="small"
                type="text"
                @click="Edit(scope.row)"
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                "
                >编辑</el-button
              >
              <el-button
                size="small"
                type="text"
                :disabled="
                  scope.row.userName == 'admin' || scope.row.user_Id == '1'
                "
                @click="Editpassword(scope.row)"
                >修改密码</el-button
              >
            </template>
@@ -141,8 +234,10 @@
        <!-- ç”¨æˆ·è§’色 -->
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 2"
          :data="tableData"
          :data="grideData"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
@@ -156,18 +251,45 @@
            fontSize: '0.88rem',
            height: '3rem',
          }"
          @select="RoleSelectionChange"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="address" label="角色名称" align="center" />
          <el-table-column prop="name" label="角色权限" align="center" />
          <el-table-column prop="address" label="备注" align="center" />
          <el-table-column prop="address" label="是否启用" align="center" />
          <el-table-column prop="address" label="创建日期" align="center" />
          <el-table-column prop="address" label="操作" align="center">
            <template #default="">
          <el-table-column prop="roleName" label="角色名称" align="center" />
          <el-table-column prop="name" label="角色权限" align="center">
            <template #default="scope">
              <span
                v-if="
                  scope.row.roleName != '超级管理员' || scope.row.roleId != '1'
                "
                @click="toDetail(scope.row)"
                style="color: #4386ff; cursor: pointer"
                >管理</span
              >
            </template>
          </el-table-column>
          <el-table-column prop="deptName" label="备注" align="center" />
          <el-table-column label="是否启用" align="center">
            <template #default="scope">
              <el-switch
                :disabled="
                  scope.row.roleName == '超级管理员' || scope.row.roleId == '1'
                "
                v-model="scope.row.enable"
                :active-value="1"
                :inactive-value="0"
                @change="changeRoleSwitch(scope.row)"
              />
            </template>
          </el-table-column>
          <el-table-column prop="createDate" label="创建日期" align="center" />
          <el-table-column label="操作" align="center">
            <template #default="scope">
              <span
                v-if="
                  scope.row.roleName != '超级管理员' || scope.row.roleId != '1'
                "
                style="color: blue; font-size: 0.88rem; cursor: pointer"
                @click="Findtorque"
                @click="EditRole(scope.row)"
                >编辑</span
              >
            </template></el-table-column
@@ -184,10 +306,15 @@
        "
      >
        <el-pagination
          v-if="isactive == 1"
          size="small"
          background
          layout="prev, pager, next"
          :total="1"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
@@ -200,6 +327,7 @@
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm(formUserRef)"
    >
      <template #title>
        <div
@@ -215,10 +343,17 @@
          >
        </div>
      </template>
      <el-form :model="form" label-width="auto" label-position="top">
      <el-form
        :model="formUser"
        label-width="auto"
        label-position="top"
        :rules="rules"
        ref="formUserRef"
        :hide-required-asterisk="true"
      >
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="userName">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -228,11 +363,15 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.userName"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="userTrueName">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -242,11 +381,15 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.userTrueName"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="phoneNo">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
@@ -256,25 +399,34 @@
                  >
                </div>
              </template>
              <el-input size="small" v-model="form.name" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.phoneNo"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item>
            <el-form-item prop="role_Id">
              <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="value" placeholder="请选择" size="small">
              <el-select
                v-model="formUser.role_Id"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  :disabled="item.value == 20"
                  v-for="item in groupOptions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
@@ -283,19 +435,23 @@
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
            <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
                  >
                    >用户类型
                  </span>
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="formUser.roleName"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  v-for="item in roleNameList"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
@@ -304,7 +460,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>
@@ -314,9 +470,13 @@
                  >
                </div>
              </template>
              <el-select v-model="value" placeholder="请选择" size="small">
              <el-select
                v-model="formUser.enable"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in options"
                  v-for="item in isoptins"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
@@ -334,24 +494,32 @@
                  <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-success="handleAvatarSuccess"
                :file-list="fileList != [] ? fileList : []"
              >
                <el-icon><Plus /></el-icon>
                <el-icon>
                  <Plus />
                </el-icon>
                <template #file="{ file }">
                  <div>
                    <img
@@ -371,14 +539,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>
@@ -400,7 +572,7 @@
          <el-button
            size="small"
            type="primary"
            @click="dialogVisible = false"
            @click="saveObj(formUserRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
@@ -432,7 +604,13 @@
          >
        </div>
      </template>
      <el-form :model="form" label-width="auto" label-position="top">
      <el-form
        :model="formUser"
        label-width="auto"
        label-position="top"
        ref="formpasswordRef"
        :rules="passwordrules"
      >
        <el-row>
          <el-col>
            <div
@@ -446,18 +624,19 @@
                border-radius: 0.25rem;
              "
            >
              <span style="color: #51b820; font-size: 1rem">账号:adimin</span
              <span style="color: #51b820; font-size: 1rem"
                >账号:{{ formpassword.userName }}</span
              ><span style="color: #51b820; font-size: 1rem; margin-left: 2rem"
                >用户:超级管理员</span
                >用户:{{ formpassword.roleName }}</span
              >
            </div>
          </el-col>
        </el-row>
        <el-form-item>
        <el-form-item prop="newPwd">
          <el-input
            style="margin-top: 1rem"
            size="large"
            v-model="form.name"
            v-model="formUser.newPwd"
            placeholder="请输入"
          />
        </el-form-item>
@@ -474,7 +653,7 @@
          <el-button
            size="small"
            type="primary"
            @click="dialogVisible1 = false"
            @click="savePassword(formpasswordRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
@@ -491,6 +670,7 @@
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm1(formRoleRef)"
    >
      <template #title>
        <div
@@ -506,8 +686,15 @@
          >
        </div>
      </template>
      <el-form :model="form" label-width="auto" label-position="top">
        <el-form-item>
      <el-form
        :model="formRole"
        label-width="auto"
        label-position="top"
        ref="formRoleRef"
        :rules="roleRules"
        :hide-required-asterisk="true"
      >
        <el-form-item prop="roleName">
          <template #label>
            <div style="display: flex; align-items: flex-end">
              <span style="color: red; margin-right: 0.2rem">*</span>
@@ -519,7 +706,7 @@
          <el-input
            style="height: 2rem"
            size="small"
            v-model="userform.userName"
            v-model="formRole.roleName"
            placeholder="请输入"
          />
        </el-form-item>
@@ -534,7 +721,7 @@
          <el-input
            style="height: 2rem"
            size="small"
            v-model="userform.description"
            v-model="formRole.description"
            placeholder="请输入"
          />
        </el-form-item>
@@ -551,7 +738,7 @@
          <el-button
            size="small"
            type="primary"
            @click="dialogVisible2 = false"
            @click="saveRole(formRoleRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
@@ -561,114 +748,620 @@
    </el-dialog>
    <!-- æƒé™ç®¡ç†å¼¹å‡ºæ¡† -->
    <el-dialog v-model="imgdialogVisible">
      <div
        style="
          width: 100%;
          height: 100%;
          display: flex;
          justify-content: center;
          align-items: center;
        "
      >
        <img w-full :src="dialogImageUrl" alt="Preview Image" />
      </div>
    </el-dialog>
  </div>
</template>
<script setup>
import { ref, reactive } from "vue";
import { ref, reactive, onMounted, toRef } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
const queryForm = reactive({
import {
  GetUserList,
  AddUser,
  UpdateUser,
  DelApi,
  ExportApi,
  ExportApi1,
  UpdatePassword,
  UpdatePwd,
  AddUserApi,
  EditUserApi,
} from "@/api/user";
import { useRouter } from "vue-router";
import { formatTime } from "@/utils/index.js";
import {
  GetPageDataApi,
  StatusChangeApiApi,
  AddRoleApi,
  UpdateRoleApi,
  DeleteRoleApi,
} from "@/api/role";
let obj = {
  selectName: "",
  selectTime: [], // æ—¶é—´èŒƒå›´
});
  selectType: "",
  selectInput: "",
};
const queryForm = toRef({ ...obj });
const router = useRouter();
const tableData = ref([]);
const grideData = ref([]);
//新建用户ref
const formUserRef = ref();
const options = ref([]);
const props = { multiple: true };
const table = ref(false);
const form = reactive({});
const userform = reactive({
const isoptins = ref([
  {
    value: 0,
    label: "否",
  },
  { value: 1, label: "是" },
]);
//分组
const groupOptions = ref([
  { value: 20, label: "超级管理员" },
  { value: 21, label: "质检组" },
  { value: 22, label: "电气组" },
  { value: 23, label: "机械组" },
  { value: 24, label: "地沟组" },
]);
const formUser = ref({
  user_Id: undefined,
  userName: "",
  description: "",
  role_Id: 21,
  roleName: "",
  phoneNo: "",
  remark: "",
  userPwd: "123456",
  userTrueName: "",
  dept_Id: 0,
  enable: 1,
  headImageUrl: "",
  createDate: formatTime(new Date()), //创建时间
  creater: JSON.parse(localStorage.getItem("user")).userName, //创建人
  newPwd: "",
});
const rules = reactive({
  userName: {
    required: true,
    message: "请输入用户名",
    trigger: "blur",
  },
  role_Id: {
    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 dialogVisible1 = ref(false);
//用户角色新建
const dialogVisible2 = ref(false);
const TorquedialogVisible = ref(false);
const activities = [
//筛选条件
const userOptions = [
  {
    content: "1.1工前准备",
    timestamp: "2018-04-15",
    value: "userName",
    label: "登录账号",
  },
  {
    content: "2.1牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-13",
    value: "userTrueName",
    label: "真实姓名",
  },
  {
    content: "2.2牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.3牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
  },
  {
    content: "2.4牵引电机电缆安装(仅动车转向架)",
    timestamp: "2018-04-11",
    value: "phoneNo",
    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",
    label: "角色名称",
  },
];
const selectoptions = ref([]);
selectoptions.value = userOptions;
//用户修改密码
const formpassword = ref({
  oldPwd: "",
  newPwd: "",
});
const passwordrules = reactive({
  newPwd: [
    {
      required: true,
      message: "请输入密码",
      trigger: "blur",
    },
    {
      min: 6,
      max: 12,
      message: "密码长度在 6 åˆ° 12 ä¸ªå­—符",
      trigger: "blur",
    },
  ],
});
const changeactive = (index) => {
  isactive.value = index;
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 initData = () => {
  // æŸ¥è¯¢æ¡ä»¶
  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: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetUserList({
    ...pageQuery.value,
    filter,
  }).then((res) => {
    tableData.value = res.rows;
    pageTotal.value = res.total;
  });
};
function cancelClick() {
  table.value = false;
}
function confirmClick() {
  table.value = false;
}
// æŸ¥çœ‹è¯¦æƒ…
const Findmore = () => {
//分页请求参数
const pageQuery = ref({
  page: 1, //当前页面
  rows: 10, //每页显示条数
  order: "desc", //排序方式
  sort: "", //排序字段
  wheres: "", //条件查询
});
//数据检索事件
const handleQuery = () => {
  pageQuery.value.page = 1;
  if (isactive.value == 1) {
    initData();
  } else {
    getRole();
  }
};
//重置查询条件
const resetQuery = () => {
  queryForm.value = Object.assign({}, obj);
  pageQuery.value.page = 1;
  if (isactive.value == 1) {
    initData();
  } else {
    getRole();
  }
};
//分页页面大小改变
const handleSizeChange = (val) => {
  pageQuery.value.rows = val;
  if (isactive.value == 1) {
    initData();
  } else {
    getRole();
  }
};
//分页页面改变
const handleCurrentChange = (val) => {
  pageQuery.value.page = val;
  if (isactive.value == 1) {
    initData();
  } else {
    getRole();
  }
};
const handleAvatarSuccess = (val) => {
  formUser.value.headImageUrl = "/image/" + val.data;
};
//重置表单
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,
    enable: 1,
    headImageUrl: "",
    newPwd: "",
  };
  fileList.value = [];
};
const resetForm1 = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
  formRole.value = {
    roleName: "",
    description: "",
  };
};
const handlePictureCardPreview = (uploadFile) => {
  dialogImageUrl.value = uploadFile.url;
  imgdialogVisible.value = true;
};
const handleRemove = (val) => {
  fileList.value = [];
  //移除已上传的图片
  formUser.value.headImageUrl = "";
};
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) => {
  // submitUpload();
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      if (formUser.value.user_Id != undefined) {
        UpdateUser(formUser.value).then((res) => {
          ElMessage({ message: "修改成功", type: "success" });
          dialogVisible.value = false;
          initData();
        });
      } else {
        AddUser(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) => {
    ElMessage({ message: "修改成功", type: "success" });
    dialogVisible.value = false;
    initData();
  });
  console.log(val);
};
// ç”¨æˆ·è§’色是否启用
const changeRoleSwitch = (val) => {
  let data = Object.assign({}, val);
  StatusChangeApiApi(data).then((res) => {
    ElMessage({ message: "修改成功", type: "success" });
    dialogVisible.value = false;
    initData();
  });
};
//编辑用户账号
const Edit = (val) => {
  let obj = Object.assign({}, val);
  formUser.value = {
    ...obj,
  };
  if (obj.headImageUrl != "") {
    fileList.value = [
      {
        name: "1",
        url: "http://115.159.85.185:9098" + obj.headImageUrl,
      },
    ];
  }
  dialogVisible.value = true;
};
// æŸ¥çœ‹åŠ›çŸ©
const Findtorque = () => {
  TorquedialogVisible.value = true;
const newobj = ref({});
//修改密码
const Editpassword = (val) => {
  let obj = Object.assign({}, val);
  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 formdata = {
    id: formUser.value.user_Id,
    oldPwd: formUser.value.userPwd,
    newPwd: formUser.value.newPwd,
  };
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      UpdatePwd(formdata).then((res) => {
        ElMessage({ message: "修改密码成功", type: "success" });
        dialogVisible1.value = false;
        initData();
      });
    } else {
      console.log("error submit!", fields);
    }
  });
};
const formRoleRef = ref();
const roleRules = reactive({
  roleName: {
    required: true,
    message: "请输入角色名称",
    trigger: "blur",
  },
  description: {
    required: true,
    message: "请输入角色描述",
    trigger: "blur",
  },
});
const formRole = ref({
  roleName: "",
  description: "",
  createDate: formatTime(new Date()), //创建时间
  creater: JSON.parse(localStorage.getItem("user")).userName, //创建人
});
//新建角色
const AddRole = () => {
  Roletype.value = "新建";
  dialogVisible2.value = true;
};
const Roletype = ref("新建");
//保存角色
const saveRole = async (formEl) => {
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      if (Roletype.value == "修改") {
        UpdateRoleApi(formRole.value).then((res) => {
          ElMessage({ message: "修改成功", type: "success" });
          dialogVisible2.value = false;
          getRole();
        });
      } else {
        AddRoleApi(formRole.value).then((res) => {
          ElMessage({ message: "添加成功", type: "success" });
          dialogVisible2.value = false;
          getRole();
        });
      }
    } else {
      console.log("error submit!", fields);
    }
  });
};
//编辑角色
const EditRole = (val) => {
  Roletype.value = "修改";
  let obj = Object.assign({}, val);
  formRole.value = obj;
  dialogVisible2.value = true;
};
//获取角色
const getRole = () => {
  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: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  GetPageDataApi({ ...pageQuery.value, filter }).then((res) => {
    grideData.value = res.rows;
    pageTotal.value = res.total;
  });
};
//打印数据
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.value.selectName,
      displayType: "String",
    },
    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
  ];
  if (isactive.value == 1) {
    ExportApi({
      ...pageQuery.value,
      filter,
    });
  }
  if (isactive.value == 2) {
    ExportApi1({
      ...pageQuery.value,
      filter,
    });
  }
};
//切换页面
const changeactive = (index) => {
  isactive.value = index;
  if (isactive.value == 1) {
    selectoptions.value = userOptions;
    initData();
  } else {
    selectoptions.value = roleOptions;
    getRole();
  }
};
//批量删除
const ids = ref([]);
const UserSelectionChange = (val) => {
  ids.value = [];
  ids.value = val.map((item) => item.user_Id);
};
const RoleSelectionChange = (val) => {
  ids.value = [];
  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;
  }
  if (isactive.value == 1) {
    DelApi(ids.value).then((res) => {
      ElMessage({ message: "删除成功", type: "success" });
      initData();
    });
  } else {
    DeleteRoleApi(ids.value).then((res) => {
      ElMessage({ message: "删除成功", type: "success" });
      getRole();
    });
  }
};
//管理
//路由跳转
const toDetail = (row) => {
  router.push({ name: "permission", state: { info: JSON.stringify(row) } });
};
onMounted(() => {
  initData();
});
</script>
<style lang="scss" scoped>
.Usermanagement {
  display: flex;
  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;
@@ -680,20 +1373,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;
@@ -707,24 +1404,25 @@
          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;
          height: 2rem;
          text-align: center;
          border: 0.06rem solid rgba(222, 222, 222, 1);
          border-radius: 0.25rem 0 0 0.25rem;
          font-size: 0.75rem;
          display: flex;
          align-items: center;
          justify-content: center;
        }
        input {
          box-sizing: border-box;
          outline: none;
@@ -737,6 +1435,7 @@
        }
      }
    }
    .btns {
      display: flex;
      justify-content: space-between;
@@ -747,17 +1446,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;
@@ -768,10 +1470,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);
  }
@@ -789,6 +1493,7 @@
.confirmButtonClass {
  margin-right: 10px;
}
.el-message-box .el-message-box__btns {
  flex-direction: row-reverse !important;
  justify-content: normal !important;