From e955e0e34f52d3a8f66354f2a75b762791f918b1 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 16 十一月 2022 17:24:30 +0800
Subject: [PATCH] 頁面更改

---
 src/views/maintenance/userManagement.vue | 1251 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 1,132 insertions(+), 119 deletions(-)

diff --git a/src/views/maintenance/userManagement.vue b/src/views/maintenance/userManagement.vue
index 35152c3..516c75d 100644
--- a/src/views/maintenance/userManagement.vue
+++ b/src/views/maintenance/userManagement.vue
@@ -1,190 +1,1130 @@
 <template>
-  <div class="userManagement_box">
-    <My-bread :list="['杩愮淮绠$悊', '鐢ㄦ埛绠$悊']"></My-bread>
+  <div class="userInfo_box">
+    <My-bread
+      :list="[
+        `${$t('operatManage.operatManage')}`,
+        `${$t('userManage.userManage')}`,
+      ]"
+    ></My-bread>
     <el-divider />
     <div class="inquire">
-      <el-form ref="formData1" :model="form" :inline="true">
-        <el-form-item label="瑙掕壊鍚嶇О" prop="name">
-          <el-input v-model="form.name" placeholder="璇疯緭鍏�" />
+      <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 label="鏉冮檺瀛楃" prop="jurisdiction">
-          <el-input v-model="form.jurisdiction" placeholder="璇疯緭鍏�" />
+        <el-form-item
+          prop="depid"
+          :label="$t('userManage.userInfoObj.depName')"
+        >
+          <el-cascader
+            v-model="queryForm.depid"
+            :options="treeOptions"
+            filterable
+            @change="handleChange"
+            :show-all-levels="false"
+            :props="{
+              label: 'name',
+              value: 'id',
+              children: 'children',
+              checkStrictly: true,
+              emitPath: false,
+            }"
+          >
+          </el-cascader>
         </el-form-item>
-        <el-form-item label="瑙掕壊鐘舵��" prop="region">
-          <el-select v-model="form.region" placeholder="璇烽�夋嫨">
-            <el-option label="Zone one" value="shanghai" />
-            <el-option label="Zone two" value="beijing" />
-          </el-select>
-        </el-form-item>
-
         <el-form-item>
-          <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
-          <el-button @click="resetForm()">閲嶇疆</el-button>
+          <el-button
+            size="small"
+            type="primary"
+            @click="queryInfo()"
+            icon="el-icon-search"
+            style="background: #1890ff"
+            >{{ $t('operatManage.ELM.search') }}
+          </el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            size="small"
+            @click="resetInfo('queryForm')"
+            icon="el-icon-refresh"
+          >
+            {{ $t('operatManage.ELM.reset') }}
+          </el-button>
+        </el-form-item>
+        <br />
+        <el-form-item>
+          <el-button
+            type="success"
+            size="small"
+            @click="showAddDialog"
+            icon="el-icon-plus"
+          >
+            {{ $t('common.append') }}
+          </el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="danger"
+            size="small"
+            @click="deleteUserInfo"
+            icon="el-icon-delete"
+          >
+            {{ $t('common.delete') }}
+          </el-button>
+        </el-form-item>
+        <el-form-item v-show="setbatchFlag">
+          <el-button
+            type="primary"
+            size="small"
+            @click="editPwd"
+            style="background: #1890ff"
+            icon="el-icon-unlock"
+            >{{ $t('common.changepassWord') }}
+          </el-button>
         </el-form-item>
       </el-form>
-      <div class="btn_box">
-        <el-button>娣诲姞</el-button>
-        <el-button>淇敼</el-button>
-        <el-button>瀵煎嚭</el-button>
-        <el-button>鍒犻櫎</el-button>
-      </div>
     </div>
     <div class="table_box">
-      <el-table :data="tableData" style="width: 100%">
+      <el-table
+        :data="tableData"
+        border
+        style="width: 100%"
+        height="99%"
+        @selection-change="handleSelectionChange"
+      >
         <el-table-column type="selection" width="55" />
-        <el-table-column prop="user" label="鐢ㄦ埛鍚�" />
-        <el-table-column prop="name" label="濮撳悕" />
-        <el-table-column prop="email" label="閭" />
-        <el-table-column prop="phone" label="鑱旂郴鏂瑰紡" />
-        <el-table-column fixed="right" prop="permission" label="鏉冮檺" />
-        <!-- <el-table-column label="鎿嶄綔" width="280">
-          <template #default>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('common.index')"
+          width="70px"
+          fixed
+        />
 
-            <el-button type="primary" size="small">鍒犻櫎</el-button>
+        <el-table-column
+          align="center"
+          prop="uname"
+          width="150px"
+          :label="$t('userManage.userInfoObj.uname')"
+          fixed
+        />
+        <el-table-column
+          align="center"
+          prop="uid"
+          width="150px"
+          :label="$t('userManage.userInfoObj.uid')"
+        />
+        <el-table-column
+          align="center"
+          prop="sex"
+          width="80px"
+          :label="$t('userManage.userInfoObj.sex')"
+        >
+          <template slot-scope="scope">
+            <span v-if="scope.row.sex == 1"> 鐢� </span>
+            <span v-else-if="scope.row.sex == 0">濂�</span>
+            <span v-else>鏈煡</span>
           </template>
-        </el-table-column> -->
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="natives"
+          width="100px"
+          :label="$t('userManage.userInfoObj.natives')"
+        />
+        <el-table-column
+          align="center"
+          prop="depName"
+          width="200px"
+          :label="$t('userManage.userInfoObj.depName')"
+        />
+        <el-table-column
+          align="center"
+          prop="idcard"
+          width="200px"
+          :label="$t('userManage.userInfoObj.idcard')"
+        /><el-table-column
+          align="center"
+          prop="job"
+          width="200px"
+          :label="$t('userManage.userInfoObj.job')"
+        />
+        <el-table-column
+          align="center"
+          prop="edu"
+          width="200px"
+          :label="$t('userManage.userInfoObj.edu')"
+        />
+        <el-table-column
+          align="center"
+          prop="addr"
+          width="200px"
+          :label="$t('userManage.userInfoObj.addr')"
+        />
+        <el-table-column
+          align="center"
+          prop="email"
+          width="200px"
+          :label="$t('userManage.userInfoObj.email')"
+        />
+        <el-table-column
+          align="center"
+          prop="contact"
+          width="200px"
+          :label="$t('userManage.userInfoObj.contact')"
+        />
+
+        <el-table-column
+          align="center"
+          prop="largeModuleName"
+          :label="$t('userManage.userInfoObj.status')"
+        >
+          <template slot-scope="scope">
+            <el-tag v-if="scope.row.status == 0" type="success">姝e父</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>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="bak"
+          width="200px"
+          :label="$t('userManage.userInfoObj.bak')"
+        />
+        <el-table-column
+          :label="$t('common.operate')"
+          width="80px"
+          fixed="right"
+          v-if="menuStatus.update"
+        >
+          <template slot-scope="scope">
+            <!-- <el-button type="primary" size="small">淇敼</el-button> -->
+            <el-button
+              type="warning"
+              @click="editInfo(scope.row)"
+              size="mini"
+              >{{ $t('common.edit') }}</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
-      <div style="margin-top: 40px" class="pagination_box">
+      <div style="margin-top: 25px" class="pagination_box">
         <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
-          :current-page="currentPage4"
-          :page-sizes="[10, 20, 30, 40]"
-          :page-size="10"
+          :current-page="currentPage"
+          :page-sizes="[1, 2, 5, 10]"
+          :page-size="pageSize"
           layout="total, sizes, prev, pager, next, jumper"
-          :total="5"
+          :total="count"
         >
         </el-pagination>
       </div>
     </div>
+    <el-dialog
+      width="910px"
+      top="15vh"
+      :title="behavior"
+      :visible.sync="dialogFormVisible"
+      :before-close="handleClose"
+    >
+      <el-form
+        :model="editForm"
+        ref="editForm"
+        :rules="rules"
+        style="display: flex"
+      >
+        <div>
+          <el-form-item
+            prop="uid"
+            :label="$t('userManage.userInfoObj.uid')"
+            v-if="behavior == '鏂板鐢ㄦ埛'"
+            :label-width="formLabelWidth"
+          >
+            <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>
+          </el-form-item>
+          <el-form-item
+            v-if="behavior == '淇敼淇℃伅'"
+            :label="$t('userManage.userInfoObj.uid')"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="editForm.uid"
+              autocomplete="off"
+              disabled
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            v-if="behavior == '淇敼淇℃伅'"
+            prop="oldPwd"
+            :label="$t('userManage.userInfoObj.origpassword')"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              type="password"
+              v-model="editForm.oldPwd"
+              autocomplete="off"
+              show-password
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="pwd"
+            :label="$t('userManage.userInfoObj.pwd')"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              type="password"
+              v-model="editForm.pwd"
+              autocomplete="off"
+              show-password
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="checkPass"
+            :label="$t('userManage.userInfoObj.confirmPassword')"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              type="password"
+              show-password
+              v-model="editForm.checkPass"
+              autocomplete="off"
+            ></el-input>
+          </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-form-item>
+          <el-form-item
+            prop="sex"
+            :label="$t('userManage.userInfoObj.sex')"
+            :label-width="formLabelWidth"
+          >
+            <el-select
+              v-model="editForm.sex"
+              clearable
+              :placeholder="$t('userManage.userInfoObj.pleaseSelect')"
+            >
+              <el-option
+                v-for="item in sexOpt"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            prop="natives"
+            :label="$t('userManage.userInfoObj.nativePlace')"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model="editForm.natives" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="depid"
+            :label-width="formLabelWidth"
+            :label="$t('userManage.userInfoObj.depName')"
+          >
+            <el-cascader
+              v-model="editForm.depid"
+              :options="treeOptions"
+              filterable
+              clearable
+              @change="editChange"
+              :show-all-levels="false"
+              :props="{
+                label: 'name',
+                value: 'id',
+                children: 'children',
+                checkStrictly: true,
+                emitPath: false,
+              }"
+            >
+            </el-cascader>
+          </el-form-item>
+          <el-form-item
+            prop="idcard"
+            :label="$t('userManage.userInfoObj.identityCard')"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model="editForm.idcard" autocomplete="off"></el-input>
+          </el-form-item>
+        </div>
+        <div style="width: 45%">
+          <el-form-item
+            prop="job"
+            :label="$t('userManage.userInfoObj.job')"
+            :label-width="formLabelWidth"
+          >
+            <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-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-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-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-form-item>
+          <el-form-item
+            prop="status"
+            :label="$t('userManage.userInfoObj.status')"
+            :label-width="formLabelWidth"
+          >
+            <el-select
+              v-model="editForm.status"
+              clearable
+              :placeholder="$t('userManage.userInfoObj.pleaseSelect')"
+            >
+              <el-option
+                v-for="item in statusOpt"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            prop="bak"
+            :label="$t('userManage.userInfoObj.remarks')"
+            :label-width="formLabelWidth"
+          >
+            <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()">{{
+          $t('common.reset')
+        }}</el-button>
+        <el-button
+          size="medium"
+          type="primary"
+          @click="sendEdit('editForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >{{ $t('common.submit') }}</el-button
+        >
+      </div>
+      <div v-else slot="footer" class="dialog-footer">
+        <el-button size="medium" @click="cancelAdd('editForm')">{{
+          $t('common.reset')
+        }}</el-button>
+        <el-button
+          size="medium"
+          type="primary"
+          @click="sendAdd('editForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >{{ $t('common.submit') }}</el-button
+        >
+      </div>
+    </el-dialog>
+    <el-dialog
+      width="520px"
+      top="30vh"
+      title="鎵归噺閲嶇疆瀵嗙爜"
+      :visible.sync="resetPwd"
+      :before-close="handleClose"
+    >
+      <el-form :model="pwdForm" ref="pwdForm" :rules="rules">
+        <el-form-item prop="adminPwd" label="绠$悊鍛樺瘑鐮�" label-width="140px">
+          <el-input
+            type="password"
+            v-model="pwdForm.adminPwd"
+            autocomplete="off"
+            show-password
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="newPwd" label="鏂板瘑鐮�" label-width="140px">
+          <el-input
+            type="password"
+            v-model="pwdForm.newPwd"
+            autocomplete="off"
+            show-password
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="checkPwd" label="纭瀵嗙爜" label-width="140px">
+          <el-input
+            type="password"
+            v-model="pwdForm.checkPwd"
+            autocomplete="off"
+            show-password
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button size="medium" @click="cancelReset - 'pwdForm'"
+          >閲嶇疆</el-button
+        >
+        <el-button
+          size="medium"
+          type="primary"
+          @click="sendReset('pwdForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >鎻愪氦</el-button
+        >
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+var encrypt = new JSEncrypt();
+import { mapActions } from 'vuex';
 import MyBread from '../../components/MyBread.vue';
+import {
+  queryDepTree,
+  queryPageUser,
+  insertUser,
+  deleteUser,
+  updateUser,
+  updatePwd,
+  selectByUserid,
+  userSelectForIsAdmin,
+} from '../../api/api';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
     MyBread,
   },
-
   data() {
+    let validName = (rule, value, callback) => {
+      if (value === '' || value === null || value === undefined) {
+        return callback(new Error('璇疯緭鍏ュ瘑鐮�'));
+      } else {
+        callback();
+      }
+    };
+    let validatePass = (rule, value, callback) => {
+      if (value === '' || value === undefined) {
+        callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�'));
+      } else if (value !== this.editForm.pwd) {
+        callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+      } else {
+        callback();
+      }
+    };
+    let resetPass = (rule, value, callback) => {
+      if (value === '' || value === undefined) {
+        callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�'));
+      } else if (value !== this.pwdForm.newPwd) {
+        callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+      } else {
+        callback();
+      }
+    };
     return {
-      currentPage4: 1,
-      form: {
-        name: '',
-        region: '',
-        jurisdiction: '',
+      setbatchFlag: false,
+      menuStatus: {
+        delete: false,
+        insert: false,
+        update: false,
       },
-      tableData: [
+      isNewUser: false,
+      currentPage: 1,
+      pageSize: 10,
+      pageIndex: 1,
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+      },
+      queryForm: {
+        uname: '',
+        depid: null,
+        depName: '',
+      },
+      tableData: [],
+      fullscreenLoading: false,
+      count: 0,
+      formLabelWidth: '100px',
+      dialogFormVisible: false,
+      initialForm: '',
+      behavior: '',
+      multipleSelection: [],
+      resetPwd: false,
+      editForm: {
+        uid: '',
+        uname: '',
+        oldPwd: '',
+        pwd: '',
+        checkPass: '',
+        sex: null,
+        natives: '',
+        depid: null,
+        idcard: '',
+        job: '',
+        edu: '',
+        addr: '',
+        email: '',
+        contact: '',
+        status: null,
+        bak: '',
+        salt: '',
+      },
+      pwdForm: {
+        adminPwd: '',
+        newPwd: '',
+        checkPwd: '',
+        ids: [],
+      },
+      treeOptions: [],
+      statusOpt: [
         {
-          name: '寮犱笁',
-          user: 'admin',
-          email: 'admin@daa.com',
-          phone: '182111199328',
-          permission: '绠$悊鍛�',
+          value: 0,
+          label: '姝e父',
         },
         {
-          name: '鏉庡洓',
-          user: 'admin',
-          email: 'admin@daa.com',
-          phone: '182111199328',
-          permission: '绠$悊鍛�',
+          value: 1,
+          label: '绂佺敤',
         },
         {
-          name: '鐜嬩簲',
-          user: 'admin',
-          email: 'admin@daa.com',
-          phone: '182111199328',
-          permission: '绠$悊鍛�',
+          value: 2,
+          label: '鍒犻櫎',
         },
         {
-          name: '璧垫皬',
-          user: 'admin',
-          email: 'admin@daa.com',
-          phone: '182111199328',
-          permission: '绠$悊鍛�',
+          value: 3,
+          label: '鐢宠',
         },
-
         {
-          name: '寮犱笁',
-          user: 'admin',
-          email: 'admin@daa.com',
-          phone: '182111199328',
-          permission: '绠$悊鍛�',
+          value: 4,
+          label: '鎷掓壒',
         },
       ],
+      depList: [],
+      sexOpt: [
+        {
+          value: 0,
+          label: '濂�',
+        },
+        {
+          value: 1,
+          label: '鐢�',
+        },
+        {
+          value: -1,
+          label: '鏈煡',
+        },
+      ],
+      rules: {
+        uid: [
+          { required: true, validator: validName, trigger: 'blur' },
+          {
+            trigger: 'blur',
+            validator: (rule, value, callback) => {
+              var reg = new RegExp(/^[a-zA-Z0-9_]{0,15}$/); //瀛楃涓叉鍒欒〃杈惧紡 4鍒�14浣嶏紙瀛楁瘝锛屾暟瀛楋紝涓嬪垝绾匡紝鍑忓彿锛�
+              if (!reg.test(value)) {
+                callback(
+                  new Error('璐﹀彿蹇呴』鐢卞瓧姣嶏紝鏁板瓧鎴栦笅鍒掔嚎,闀垮害涓嶅緱瓒呰繃16浣�')
+                );
+              } else {
+                selectByUserid({ uid: value }).then((res) => {
+                  if (res.result != null) {
+                    this.isNewUser = false;
+                    callback(new Error('璐﹀彿宸插瓨鍦�'));
+                  } else {
+                    this.isNewUser = true;
+                    callback();
+                  }
+                });
+              }
+            },
+          },
+        ],
+        pwd: [
+          {
+            required: true,
+            message: '璇疯緭鍏ュ瘑鐮�',
+            transform: (value) => value,
+            trigger: 'blur',
+          },
+          {
+            type: 'string',
+            message: '璇疯緭鍏ヤ笉鍖呭惈绌烘牸鐨勫瓧绗�',
+            trigger: 'blur',
+            transform(value) {
+              if (value && value.indexOf(' ') === -1) {
+                return value;
+              } else {
+                return false;
+              }
+            },
+          },
+          {
+            trigger: 'blur',
+            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}$/;
+              if (!passwordreg.test(value)) {
+                callback(
+                  new Error('瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�8-20浣�')
+                );
+              } else {
+                callback();
+              }
+            },
+          },
+        ],
+        checkPass: [
+          { required: true, validator: validatePass, trigger: 'blur' },
+        ],
+        adminPwd: [{ validator: validName, trigger: 'blur' }],
+        newPwd: [
+          {
+            message: '璇疯緭鍏ュ瘑鐮�',
+            transform: (value) => value,
+            trigger: 'blur',
+          },
+          {
+            type: 'string',
+            message: '璇疯緭鍏ヤ笉鍖呭惈绌烘牸鐨勫瓧绗�',
+            trigger: 'blur',
+            transform(value) {
+              if (value && value.indexOf(' ') === -1) {
+                return value;
+              } else {
+                return false;
+              }
+            },
+          },
+          {
+            trigger: 'blur',
+            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}$/;
+              if (!passwordreg.test(value)) {
+                callback(
+                  new Error('瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�8-20浣�')
+                );
+              } else {
+                callback();
+              }
+            },
+          },
+        ],
+        checkPwd: [{ validator: resetPass, trigger: 'blur' }],
+      },
     };
   },
   methods: {
+    ...mapActions(['login', 'getpublickey']),
+    getUserInfo() {
+      queryDepTree()
+        .then((res) => {
+          if (res.code == 200) {
+            this.depList = this.treeData(res.result);
+            this.treeOptions = this.treeData(res.result);
+          } else {
+            this.$notify.error({
+              title: res.code,
+              message: res.result,
+            });
+          }
+        })
+        .catch((res) => {});
+
+      queryPageUser({
+        pageIndex: 1,
+        pageSize: 10,
+      })
+        .then((res) => {
+          if (res.code == 200) {
+            this.tableData = res.result;
+            this.count = res.count;
+          } else {
+            this.$notify.error({
+              title: res.code,
+              message: res.result,
+            });
+          }
+        })
+        .catch((res) => {});
+    },
+    treeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    //鏌ヨ閫夋嫨鍗曚綅
+    handleChange(value) {
+      this.queryForm.depid = value;
+    },
+    //鎼滅储鎸夐挳
+    queryInfo() {
+      let searchData = {
+        uname: this.queryForm.uname.trim(),
+        depid: this.queryForm.depid,
+        pageIndex: this.pageIndex,
+        pageSize: this.pageSize,
+      };
+      queryPageUser(searchData).then((res) => {
+        if (res.code == 200) {
+          this.tableData = res.result;
+          this.count = res.count;
+        } else {
+          console.log('鏌ヨ鎺ュ彛鎶ラ敊');
+          this.$notify.error({
+            title: res.code,
+            message: res.result,
+          });
+        }
+      });
+    },
+    //閲嶇疆鎸夐挳
+    resetInfo(formName) {
+      this.$refs[formName].resetFields();
+    },
+    //鏂板鎸夐挳
+    showAddDialog() {
+      this.behavior = '鏂板鐢ㄦ埛';
+      this.editForm = {};
+      this.dialogFormVisible = true;
+    },
+    cancelAdd(formName) {
+      this.editForm = {};
+      this.isNewUser = false;
+      this.$refs[formName].resetFields();
+    },
+    sendAdd(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          // console.log(this.$store.state.key);
+          encrypt.setPublicKey(this.$store.state.key);
+          this.editForm.uid = encrypt.encrypt(this.editForm.uid);
+          this.editForm.pwd = encrypt.encrypt(this.editForm.pwd);
+          this.fullscreenLoading = true;
+          delete this.editForm.checkPass;
+          delete this.editForm.oldPwd;
+          insertUser(this.editForm)
+            .then((res) => {
+              setTimeout(() => {
+                this.fullscreenLoading = false;
+                if (res.code == 200) {
+                  this.getUserInfo();
+                  this.$message({
+                    message: '娣诲姞鎴愬姛',
+                    type: 'success',
+                  });
+                  this.editForm = {};
+                  this.dialogFormVisible = false;
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              alert('淇敼澶辫触锛岃閲嶈瘯锛�');
+              this.fullscreenLoading = false;
+            });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    //澶氶��
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    //鍒犻櫎鎸夐挳
+    deleteUserInfo() {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎宸查�変腑鐨勭敤鎴�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(() => {
+          var std = [];
+          for (var i in this.multipleSelection) {
+            std.push(this.multipleSelection[i].id);
+          }
+          deleteUser({ ids: std.toString() })
+            .then((res) => {
+              if (res.code == 200) {
+                this.$message({
+                  type: 'success',
+                  message: '鍒犻櫎鎴愬姛!',
+                });
+                this.multipleSelection = [];
+                this.getUserInfo();
+              } else {
+                this.$message.error('鍒犻櫎澶辫触');
+              }
+            })
+            .catch(() => {
+              this.$message.error('鍒犻櫎澶辫触');
+              this.multipleSelection = [];
+            });
+        })
+        .catch(() => {
+          this.$message('宸插彇娑堝垹闄�');
+        });
+    },
+    //閲嶇疆瀵嗙爜
+    editPwd() {
+      var std = [];
+      for (var i in this.multipleSelection) {
+        std.push(this.multipleSelection[i].id);
+      }
+      if (std.length == 0) {
+        alert('璇峰厛閫夋嫨鐢ㄦ埛');
+        return;
+      }
+      this.pwdForm.ids = std;
+      this.resetPwd = true;
+    },
+    cancelReset(formName) {
+      this.$refs[formName].resetFields();
+      this.pwdForm.ids = [];
+    },
+    sendReset(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          encrypt.setPublicKey(this.$store.state.key);
+          var data = {
+            adminPwd: encrypt.encrypt(this.pwdForm.adminPwd),
+            newPwd: encrypt.encrypt(this.pwdForm.newPwd),
+            ids: this.pwdForm.ids,
+          };
+          this.fullscreenLoading = true;
+          updatePwd(data)
+            .then((res) => {
+              setTimeout(() => {
+                this.fullscreenLoading = false;
+                if (res.code == 200) {
+                  this.getUserInfo();
+                  this.$message({
+                    message: '淇敼鎴愬姛',
+                    type: 'success',
+                  });
+                  this.pwdForm = {
+                    adminPwd: '',
+                    newPwd: '',
+                    checkPwd: '',
+                    ids: [],
+                  };
+                  this.multipleSelection = [];
+                  this.resetPwd = false;
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              alert('淇敼澶辫触锛岃閲嶈瘯锛�');
+              this.fullscreenLoading = false;
+            });
+        } else {
+          return false;
+        }
+      });
+    },
+    //缂栬緫鎸夐挳
+    editInfo(row) {
+      delete row.updateTime;
+      delete row.updateUser;
+      row.pwd = '';
+      this.initialForm = JSON.stringify(row);
+      this.behavior = '淇敼淇℃伅';
+      this.editForm = JSON.parse(JSON.stringify(row));
+      this.dialogFormVisible = true;
+    },
+    //缂栬緫閫夋嫨鍗曚綅
+    editChange(value) {
+      this.editForm.depid = value;
+    },
+    //鍏抽棴寮瑰嚭妗�
+    handleClose(done) {
+      this.$confirm('纭鍏抽棴锛�')
+        .then((_) => {
+          this.editForm = {
+            uid: '',
+            uname: '',
+            oldPwd: '',
+            pwd: '',
+            checkPass: '',
+            sex: null,
+            natives: '',
+            depid: null,
+            idcard: '',
+            job: '',
+            edu: '',
+            addr: '',
+            email: '',
+            contact: '',
+            status: null,
+            bak: '',
+            salt: '',
+          };
+          this.pwdForm = {
+            adminPwd: '',
+            newPwd: '',
+            checkPwd: '',
+            ids: [],
+          };
+
+          done();
+        })
+        .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;
+          updateUser(this.editForm)
+            .then((res) => {
+              setTimeout(() => {
+                this.fullscreenLoading = false;
+                if (res.code == 200) {
+                  this.getUserInfo();
+                  this.$message({
+                    message: '淇敼鎴愬姛',
+                    type: 'success',
+                  });
+                  this.editForm = {};
+                  this.dialogFormVisible = false;
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              alert('淇敼澶辫触锛岃閲嶈瘯锛�');
+              this.fullscreenLoading = false;
+            });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    cancelEdit() {
+      this.$nextTick(() => {
+        this.editForm = JSON.parse(this.initialForm);
+      });
+    },
+
     handleSizeChange(val) {
-      console.log(`姣忛〉 ${val} 鏉);
+      // console.log(`姣忛〉 ${val} 鏉);
+      this.pageSize = val;
+      this.queryInfo();
     },
     handleCurrentChange(val) {
-      console.log(`褰撳墠椤�: ${val}`);
+      // console.log(`褰撳墠椤�: ${val}`);
+      this.pageIndex = val;
+      this.currentPage = val;
+      this.queryInfo();
     },
-    onSubmit() {
-      console.log('submit!');
+    showPermsMenu(res) {
+      switch (res.tag) {
+        case '/delete':
+          this.menuStatus.delete = true;
+          break;
+        case '/insert':
+          this.menuStatus.insert = true;
+          break;
+        case '/update':
+          this.menuStatus.update = true;
+          break;
+      }
     },
-    resetForm() {},
+    async getIsAdmin() {
+      const data = await userSelectForIsAdmin();
+      if (data.code != 200) {
+        this.setbatchFlag = false;
+        return;
+      }
+      this.setbatchFlag = data.result;
+    },
   },
-  created() {},
+
+  mounted() {
+    this.getIsAdmin();
+    this.getUserInfo();
+    this.getpublickey();
+  },
+  created() {
+    var val = this.$store.state.currentPerms;
+    var permsEntity = this.$store.state.permsEntity;
+    for (var i = 0; i < permsEntity.length; i++) {
+      if (permsEntity[i].perms == val) {
+        this.showPermsMenu(permsEntity[i]);
+      }
+    }
+  },
 };
 </script>
+<style>
+/deep/ .el-table__fixed-right {
+  height: 100% !important;
+}
+</style>
 <style lang="less" scoped>
 //@import url(); 寮曞叆鍏叡css绫�
-.userManagement_box {
+.userInfo_box {
+  border-radius: 10px;
+  height: 100%;
+
+  box-sizing: border-box;
+  .el-input {
+    width: 300px;
+  }
   .inquire {
-    padding: 10px;
+    position: relative;
+    height: 110px;
+    overflow: auto;
+    padding: 8px;
+    margin-top: 20px;
+
     border-radius: 5px;
     border: 1px solid rgb(202, 201, 204);
     margin-bottom: 20px;
-    /deep/ .el-input__inner {
-      background-color: transparent !important;
-      border: 1px solid;
-      color: white;
-    }
-    /deep/ .el-button {
-      background: linear-gradient(180deg, #002992, #080472);
-      border: 1px solid #000000;
-      border-radius: 3px;
-      color: white;
-    }
-    /deep/.el-form-item__label {
-      color: white;
+    .el-form-item {
+      margin: 5px;
     }
   }
   .table_box {
+    height: 470px;
     padding: 10px;
     border-radius: 5px;
     border: 1px solid rgb(202, 201, 204);
-    /deep/.el-input__inner {
-      background-color: transparent !important;
-      border: 1px solid;
-      color: white;
-    }
-    /deep/.el-pagination__total {
-      color: white;
-    }
-    /deep/.el-pagination__jump {
-      color: white;
-    }
-    /deep/.el-pager li.active {
-      color: #1890ff;
-    }
-    /deep/.el-pager li {
-      color: white;
-      background: transparent;
-    }
-    /deep/.el-pager li {
-      color: white;
-    }
-    /deep/.btn-prev {
-      background: transparent;
-    }
-    /deep/.btn-next {
-      background: transparent;
-    }
+
     /*淇敼table 琛ㄤ綋鐨勮儗鏅鑹插拰鏂囧瓧棰滆壊*/
     /deep/ .el-table {
       background-color: transparent;
@@ -226,7 +1166,7 @@
       .el-table__body-wrapper::-webkit-scrollbar {
         width: 5px;
         /*婊氬姩鏉″搴�*/
-        height: 10px;
+        height: 5px;
         /*婊氬姩鏉¢珮搴�*/
       }
       /*瀹氫箟婊氬姩鏉¤建閬� 鍐呴槾褰�+鍦嗚*/
@@ -244,6 +1184,79 @@
       }
     }
   }
+  .el-dialog {
+    .el-form-item {
+      margin-bottom: 20px;
+      // width: 48%;
+      /deep/.el-form-item__error {
+        width: 300px;
+      }
+      .isNewUser {
+        display: inline-block;
+        width: 75px;
+        margin-left: 5px;
+        img {
+          width: 1em;
+        }
+      }
+      .el-cascader,
+      .el-select {
+        width: 300px;
+      }
+    }
+  }
+  /deep/.el-form-item__label {
+    color: white;
+  }
+  /deep/.el-input__inner {
+    background-color: transparent !important;
+    border: 1px solid;
+    color: white;
+  }
+  /deep/ .el-dialog {
+    background: #303030;
+  }
+  /deep/.el-range-editor.is-active,
+  .el-range-editor.is-active:hover,
+  .el-select .el-input.is-focus .el-input__inner {
+    border: 1px solid;
+  }
+  /deep/.el-dialog__title {
+    color: white;
+  }
+  /deep/ .el-dialog__body {
+    padding: 10px 0 0 0;
+  }
+  .pagination_box {
+    margin-top: 20px;
+    /deep/.el-input__inner {
+      background-color: transparent !important;
+      border: 1px solid;
+      color: white;
+    }
+    /deep/.el-pagination__total {
+      color: white;
+    }
+    /deep/.el-pagination__jump {
+      color: white;
+    }
+    /deep/.el-pager li.active {
+      color: #1890ff;
+    }
+    /deep/.el-pager li {
+      color: white;
+      background: transparent;
+    }
+    /deep/.el-pager li {
+      color: white;
+    }
+    /deep/.btn-prev {
+      background: transparent;
+    }
+    /deep/.btn-next {
+      background: transparent;
+    }
+  }
 }
 </style>
 <style>

--
Gitblit v1.9.3