管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-01-16 3c0bcd367dbc9aff25202d1a8ec2eb143f3e8261
src/views/maintenance/userManagement.vue
@@ -1,15 +1,20 @@
<template>
  <div class="userInfo_box">
    <My-bread
      :list="[
    <My-bread :list="[
        `${$t('operatManage.operatManage')}`,
        `${$t('userManage.userManage')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="inquire">
      <el-form ref="queryForm" :model="queryForm" :inline="true">
        <el-form-item prop="uname" :label="$t('userManage.userInfoObj.uname')">
      <el-form
        ref="queryForm"
        :model="queryForm"
        :inline="true"
      >
        <el-form-item
          prop="uname"
          :label="$t('userManage.userInfoObj.uname')"
        >
          <el-input v-model="queryForm.uname" />
        </el-form-item>
        <el-form-item
@@ -20,6 +25,7 @@
            v-model="queryForm.depid"
            :options="treeOptions"
            filterable
            ref="cascaderHandle"
            @change="handleChange"
            :show-all-levels="false"
            :props="{
@@ -35,15 +41,15 @@
        <el-form-item>
          <el-button
            size="small"
            type="primary"
            @click="queryInfo()"
            icon="el-icon-search"
            style="background: #1890ff"
            >{{ $t('operatManage.ELM.search') }}
            type="primary"
          >{{ $t('operatManage.ELM.search') }}
          </el-button>
        </el-form-item>
        <el-form-item>
          <el-button
            type="info"
            size="small"
            @click="resetInfo('queryForm')"
            icon="el-icon-refresh"
@@ -74,12 +80,11 @@
        </el-form-item>
        <el-form-item v-show="setbatchFlag">
          <el-button
            type="primary"
            size="small"
            @click="editPwd"
            style="background: #1890ff"
            type="warning"
            icon="el-icon-unlock"
            >{{ $t('common.changepassWord') }}
          >{{ $t('common.changepassWord') }}
          </el-button>
        </el-form-item>
      </el-form>
@@ -89,10 +94,12 @@
        :data="tableData"
        border
        style="width: 100%"
        height="99%"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55" />
        <el-table-column
          type="selection"
          width="55"
        />
        <el-table-column
          align="center"
          type="index"
@@ -143,7 +150,8 @@
          prop="idcard"
          width="200px"
          :label="$t('userManage.userInfoObj.idcard')"
        /><el-table-column
        />
        <el-table-column
          align="center"
          prop="job"
          width="200px"
@@ -180,11 +188,23 @@
          :label="$t('userManage.userInfoObj.status')"
        >
          <template slot-scope="scope">
            <el-tag v-if="scope.row.status == 0" type="success">正常</el-tag>
            <el-tag v-if="scope.row.status == 1" type="info">禁用</el-tag>
            <el-tag v-if="scope.row.status == 2" type="warning">删除</el-tag>
            <el-tag
              v-if="scope.row.status == 0"
              type="success"
            >正常</el-tag>
            <el-tag
              v-if="scope.row.status == 1"
              type="info"
            >禁用</el-tag>
            <el-tag
              v-if="scope.row.status == 2"
              type="warning"
            >删除</el-tag>
            <el-tag v-if="scope.row.status == 3">申请</el-tag>
            <el-tag v-if="scope.row.status == 4" type="danger">拒批</el-tag>
            <el-tag
              v-if="scope.row.status == 4"
              type="danger"
            >拒批</el-tag>
          </template>
        </el-table-column>
        <el-table-column
@@ -203,14 +223,17 @@
            <!-- <el-button type="primary" size="small">修改</el-button> -->
            <el-button
              type="warning"
              plain
              @click="editInfo(scope.row)"
              size="mini"
              >{{ $t('common.edit') }}</el-button
            >
              size="small"
            >{{ $t('common.edit') }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div style="margin-top: 25px" class="pagination_box">
      <div
        style="margin-top: 25px"
        class="pagination_box"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -226,7 +249,11 @@
    <el-dialog
      width="910px"
      top="15vh"
      :title="behavior"
      :title="
        behavior == '新增用户'
          ? `${$t('common.append')}`
          : `${$t('common.update')}`
      "
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
@@ -243,8 +270,14 @@
            v-if="behavior == '新增用户'"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.uid" autocomplete="off"></el-input>
            <div class="isNewUser" v-if="isNewUser">
            <el-input
              v-model="editForm.uid"
              autocomplete="off"
            ></el-input>
            <div
              class="isNewUser"
              v-if="isNewUser"
            >
              <img src="../../assets/img/success.png" />
              {{ $t('userManage.userInfoObj.uid') }}
            </div>
@@ -260,7 +293,7 @@
              disabled
            ></el-input>
          </el-form-item>
          <el-form-item
          <!-- <el-form-item
            v-if="behavior == '修改信息'"
            prop="oldPwd"
            :label="$t('userManage.userInfoObj.origpassword')"
@@ -272,9 +305,10 @@
              autocomplete="off"
              show-password
            ></el-input>
          </el-form-item>
          <el-form-item
          </el-form-item> -->
          <!-- <el-form-item
            prop="pwd"
            v-if="behavior == '新增用户'"
            :label="$t('userManage.userInfoObj.pwd')"
            :label-width="formLabelWidth"
          >
@@ -284,9 +318,10 @@
              autocomplete="off"
              show-password
            ></el-input>
          </el-form-item>
          <el-form-item
          </el-form-item> -->
          <!-- <el-form-item
            prop="checkPass"
            v-if="behavior == '新增用户'"
            :label="$t('userManage.userInfoObj.confirmPassword')"
            :label-width="formLabelWidth"
          >
@@ -296,13 +331,16 @@
              v-model="editForm.checkPass"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          </el-form-item> -->
          <el-form-item
            prop="uname"
            :label="$t('userManage.userInfoObj.username')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.uname" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.uname"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="sex"
@@ -328,7 +366,10 @@
            :label="$t('userManage.userInfoObj.nativePlace')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.natives" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.natives"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="depid"
@@ -340,6 +381,7 @@
              :options="treeOptions"
              filterable
              clearable
              ref="editcaderHandle"
              @change="editChange"
              :show-all-levels="false"
              :props="{
@@ -357,7 +399,10 @@
            :label="$t('userManage.userInfoObj.identityCard')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.idcard" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.idcard"
              autocomplete="off"
            ></el-input>
          </el-form-item>
        </div>
        <div style="width: 45%">
@@ -366,35 +411,50 @@
            :label="$t('userManage.userInfoObj.job')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.job" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.job"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="edu"
            :label="$t('userManage.userInfoObj.edu')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.edu" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.edu"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="addr"
            :label="$t('userManage.userInfoObj.addr')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.addr" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.addr"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="email"
            :label="$t('userManage.userInfoObj.email')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.email" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.email"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="contact"
            :label="$t('userManage.userInfoObj.contact')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.contact" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.contact"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            prop="status"
@@ -420,44 +480,69 @@
            :label="$t('userManage.userInfoObj.remarks')"
            :label-width="formLabelWidth"
          >
            <el-input v-model="editForm.bak" autocomplete="off"></el-input>
            <el-input
              v-model="editForm.bak"
              autocomplete="off"
            ></el-input>
          </el-form-item>
        </div>
      </el-form>
      <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer">
        <el-button size="medium" @click="cancelEdit()">{{
      <div
        v-if="behavior == '修改信息'"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          type="info"
          @click="cancelEdit()"
        >{{
          $t('common.reset')
        }}</el-button>
        <el-button
          size="medium"
          size="small"
          type="primary"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t('common.submit') }}</el-button
        >
        >{{ $t('common.submit') }}</el-button>
      </div>
      <div v-else slot="footer" class="dialog-footer">
        <el-button size="medium" @click="cancelAdd('editForm')">{{
      <div
        v-else
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          type="info"
          @click="cancelAdd('editForm')"
        >{{
          $t('common.reset')
        }}</el-button>
        <el-button
          size="medium"
          size="small"
          type="primary"
          @click="sendAdd('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t('common.submit') }}</el-button
        >
        >{{ $t('common.submit') }}</el-button>
      </div>
    </el-dialog>
    <el-dialog
      width="520px"
      top="30vh"
      title="批量重置密码"
      :title="$t('common.changepassWord')"
      :visible.sync="resetPwd"
      :before-close="handleClose"
    >
      <el-form :model="pwdForm" ref="pwdForm" :rules="rules">
        <el-form-item prop="adminPwd" label="管理员密码" label-width="140px">
      <el-form
        :model="pwdForm"
        ref="pwdForm"
        :rules="rules"
      >
        <el-form-item
          prop="adminPwd"
          :label="$t('common.AdminPassword')"
          label-width="140px"
        >
          <el-input
            type="password"
            v-model="pwdForm.adminPwd"
@@ -465,7 +550,11 @@
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item prop="newPwd" label="新密码" label-width="140px">
        <el-form-item
          prop="newPwd"
          :label="$t('common.NPassword')"
          label-width="140px"
        >
          <el-input
            type="password"
            v-model="pwdForm.newPwd"
@@ -473,7 +562,11 @@
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item prop="checkPwd" label="确认密码" label-width="140px">
        <el-form-item
          prop="checkPwd"
          :label="$t('common.SPassword')"
          label-width="140px"
        >
          <el-input
            type="password"
            v-model="pwdForm.checkPwd"
@@ -482,17 +575,23 @@
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button size="medium" @click="cancelReset - 'pwdForm'"
          >重置</el-button
        >
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="medium"
          size="small"
          type="info"
          @click="cancelReset - 'pwdForm'"
        >{{
          $t('common.reset')
        }}</el-button>
        <el-button
          size="small"
          type="primary"
          @click="sendReset('pwdForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >提交</el-button
        >
        >{{ $t('common.submit') }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -684,10 +783,10 @@
            validator: (rule, value, callback) => {
              var regex = new RegExp('');
              var passwordreg =
                /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{8,20}$/;
                /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{13,20}$/;
              if (!passwordreg.test(value)) {
                callback(
                  new Error('密码必须由数字、字母、特殊字符组合,请输入8-20位')
                  new Error('密码必须由数字、字母、特殊字符组合,请输入13-20位')
                );
              } else {
                callback();
@@ -752,7 +851,7 @@
            });
          }
        })
        .catch((res) => {});
        .catch((res) => { });
      queryPageUser({
        pageIndex: 1,
@@ -769,7 +868,7 @@
            });
          }
        })
        .catch((res) => {});
        .catch((res) => { });
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
@@ -783,6 +882,8 @@
    //查询选择单位
    handleChange(value) {
      this.queryForm.depid = value;
      this.$refs.cascaderHandle.dropDownVisible = false
    },
    //搜索按钮
    queryInfo() {
@@ -925,7 +1026,7 @@
              setTimeout(() => {
                this.fullscreenLoading = false;
                if (res.code == 200) {
                  this.getUserInfo();
                  this.$message({
                    message: '修改成功',
                    type: 'success',
@@ -938,6 +1039,7 @@
                  };
                  this.multipleSelection = [];
                  this.resetPwd = false;
                  this.getUserInfo();
                }
              }, 500);
            })
@@ -954,7 +1056,7 @@
    editInfo(row) {
      delete row.updateTime;
      delete row.updateUser;
      row.pwd = '';
      this.initialForm = JSON.stringify(row);
      this.behavior = '修改信息';
      this.editForm = JSON.parse(JSON.stringify(row));
@@ -963,6 +1065,7 @@
    //编辑选择单位
    editChange(value) {
      this.editForm.depid = value;
      this.$refs.editcaderHandle.dropDownVisible = false
    },
    //关闭弹出框
    handleClose(done) {
@@ -996,19 +1099,23 @@
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    //提交编辑
    sendEdit(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          encrypt.setPublicKey(this.$store.state.key);
          this.editForm.uid = encrypt.encrypt(this.editForm.uid);
          this.editForm.salt = encrypt.encrypt(this.editForm.pwd);
          this.editForm.pwd = encrypt.encrypt(this.editForm.oldPwd);
          this.fullscreenLoading = true;
          delete this.editForm.checkPass;
          delete this.editForm.oldPwd;
          // encrypt.setPublicKey(this.$store.state.key);
          // this.editForm.uid = this.editForm.uid;
          // this.editForm.salt = null;
          // this.editForm.pwd = null;
          // this.editForm.salt = encrypt.encrypt(this.editForm.pwd);
          // // this.editForm.pwd = encrypt.encrypt(this.editForm.oldPwd);
          // this.fullscreenLoading = true;
          // delete this.editForm.checkPass;
          // delete this.editForm.oldPwd;
          // this.editForm.salt = this.editForm.pwd;
          updateUser(this.editForm)
            .then((res) => {
              setTimeout(() => {
@@ -1098,16 +1205,17 @@
<style lang="less" scoped>
//@import url(); 引入公共css类
.userInfo_box {
  border-radius: 10px;
  height: 100%;
  height: 98%;
  width: 98%;
  padding: 1%;
  position: absolute;
  box-sizing: border-box;
  .el-input {
    width: 300px;
  }
  .inquire {
    position: relative;
    height: 110px;
    height: auto;
    overflow: auto;
    padding: 8px;
    margin-top: 20px;
@@ -1120,10 +1228,11 @@
    }
  }
  .table_box {
    height: 470px;
    height: 60%;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    overflow: auto;
    /*修改table 表体的背景颜色和文字颜色*/
    /deep/ .el-table {
@@ -1241,7 +1350,7 @@
      color: white;
    }
    /deep/.el-pager li.active {
      color: #1890ff;
      color: #409eff;
    }
    /deep/.el-pager li {
      color: white;
@@ -1257,6 +1366,9 @@
      background: transparent;
    }
  }
  /deep/.userInfo_box .pagination_box .btn-next {
    background: white;
  }
}
</style>
<style>