From 2813ea20120a1ce6f5ab6625783140d9c2cdc578 Mon Sep 17 00:00:00 2001
From: lxl <lixuliang_hd@126.com>
Date: 星期三, 19 十月 2022 14:41:24 +0800
Subject: [PATCH] 控制

---
 src/views/userManage/userInfoManage.vue |  924 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 698 insertions(+), 226 deletions(-)

diff --git a/src/views/userManage/userInfoManage.vue b/src/views/userManage/userInfoManage.vue
index 4ba9546..21a9559 100644
--- a/src/views/userManage/userInfoManage.vue
+++ b/src/views/userManage/userInfoManage.vue
@@ -8,30 +8,39 @@
     ></My-bread>
     <el-divider />
     <div class="inquire">
-      <el-form ref="ruleForm" :model="form" :inline="true">
-        <el-form-item :label="$t('operatManage.ELM.username')" prop="name">
-          <el-input
-            v-model="form.name"
-            :placeholder="$t('operatManage.ELM.usernameInfo')"
-          />
+      <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
+          prop="depid"
           :label="$t('userManage.userInfoObj.depName')"
-          prop="depName"
         >
-          <el-input
-            v-model="form.depName"
-            :placeholder="$t('common.pleaseInput')"
-          /> </el-form-item
-        ><el-form-item>
-          <el-button @click="onSubmit"
+          <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>
+          <el-button @click="queryInfo()"
             ><i class="el-icon-search"></i> &nbsp;{{
               $t("operatManage.ELM.search")
             }}</el-button
           >
         </el-form-item>
         <el-form-item>
-          <el-button @click="resetForm('ruleForm')"
+          <el-button @click="resetInfo('queryForm')"
             ><i class="el-icon-delete"></i>&nbsp;{{
               $t("operatManage.ELM.reset")
             }}</el-button
@@ -46,10 +55,15 @@
           >
         </el-form-item>
         <el-form-item>
-          <el-button type="danger" size="small" @click="showAddDialog"
+          <el-button type="danger" size="small" @click="deleteUserInfo"
             ><i class="el-icon-delete"></i>&nbsp;{{
               $t("common.delete")
             }}</el-button
+          >
+        </el-form-item>
+        <el-form-item>
+          <el-button type="danger" size="small" @click="editPwd"
+            ><i class="el-icon-unlock"></i>&nbsp;閲嶇疆瀵嗙爜</el-button
           >
         </el-form-item>
       </el-form>
@@ -61,7 +75,9 @@
         border
         style="width: 100%"
         height="99%"
+        @selection-change="handleSelectionChange"
       >
+        <el-table-column type="selection" width="55" />
         <el-table-column
           align="center"
           type="index"
@@ -69,6 +85,7 @@
           width="70px"
           fixed
         />
+
         <el-table-column
           align="center"
           prop="uname"
@@ -76,7 +93,12 @@
           :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"
@@ -158,21 +180,17 @@
         />
         <el-table-column
           :label="$t('common.operate')"
-          width="200px"
+          width="80px"
           fixed="right"
         >
           <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
             >
-            <el-button type="danger" @click="editPwd(scope.row)" size="mini">
-              閲嶇疆瀵嗙爜
-            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -181,8 +199,8 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 40]"
-          :page-size="10"
+          :page-sizes="[1, 2, 5, 10]"
+          :page-size="pageSize"
           layout="total, sizes, prev, pager, next, jumper"
           :total="count"
         >
@@ -190,109 +208,236 @@
       </div>
     </div>
     <el-dialog
-      width="500px"
-      top="7vh"
-      title="淇敼淇℃伅"
+      width="910px"
+      top="15vh"
+      :title="behavior"
       :visible.sync="dialogFormVisible"
       :before-close="handleClose"
     >
-      <el-form :model="ruleForm" ref="ruleForm" :rules="rules">
-        <el-form-item prop="name" label="鐢ㄦ埛鍚�" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.uname" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鎬у埆" :label-width="formLabelWidth">
-          <!-- <el-input v-model="ruleForm.sex" autocomplete="off"></el-input> -->
-          <el-select v-model="ruleForm.sex" clearable placeholder="璇烽�夋嫨">
-            <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 label="绫嶈疮" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.natives" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鍗曚綅鍚嶇О" :label-width="formLabelWidth">
-          <el-input
-            v-model="ruleForm.depName"
-            disabled
-            autocomplete="off"
-          ></el-input>
-          &nbsp;
-          <el-button type="primary" size="mini" @click="showDep"
-            >閫夋嫨</el-button
+      <el-form
+        :model="editForm"
+        ref="editForm"
+        :rules="rules"
+        style="display: flex"
+      >
+        <div>
+          <el-form-item
+            prop="uid"
+            label="鐧诲綍璐﹀彿"
+            v-if="behavior == '鏂板鐢ㄦ埛'"
+            :label-width="formLabelWidth"
           >
-          <el-card v-if="showDepTree" shadow="hover" class="box-card">
-            <div slot="header" class="clearfix">
-              <span>璇烽�夋嫨閮ㄩ棬</span>
-              <el-button
-                style="float: right; padding: 3px 0"
-                type="text"
-                @click="sendNode"
-                >纭畾</el-button
-              >
+            <el-input v-model="editForm.uid" autocomplete="off"></el-input>
+            <div class="isNewUser" v-if="isNewUser">
+              <img src="../../assets/img/success.png" />
+              璐﹀彿鍙敤
             </div>
-            <div class="depTreeBox">
-              <el-tree
-                ref="tree"
-                :props="defaultProps"
-                node-key="id"
-                :data="depList"
-                :expand-on-click-node="false"
-                :default-expand-all="true"
-                @node-click="handleNodeClick"
+          </el-form-item>
+          <el-form-item
+            v-if="behavior == '淇敼淇℃伅'"
+            label="鐧诲綍璐﹀彿"
+            :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="鍘熷瘑鐮�"
+            :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="瀵嗙爜" :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="纭瀵嗙爜"
+            :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="鐢ㄦ埛鍚嶇О"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model="editForm.uname" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item prop="sex" label="鎬у埆" :label-width="formLabelWidth">
+            <el-select v-model="editForm.sex" clearable placeholder="璇烽�夋嫨">
+              <el-option
+                v-for="item in sexOpt"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
               >
-                <span class="custom-tree-node" slot-scope="{ node, data }">
-                  <span>{{ node.label }}</span>
-                </span>
-              </el-tree>
-            </div>
-          </el-card>
-        </el-form-item>
-        <el-form-item label="璇佷欢鍙�" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.idcard" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="宸ヤ綔" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.job" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鏁欒偛" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.edu" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鍦板潃" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.addr" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鐢靛瓙閭欢" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.email" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鑱旂郴鏂瑰紡" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.contact" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="鐘舵��" :label-width="formLabelWidth">
-          <el-select v-model="ruleForm.status" clearable placeholder="璇烽�夋嫨">
-            <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="natives"
+            label="绫嶈疮"
+            :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-option>
-          </el-select>
+            </el-cascader>
+          </el-form-item>
+          <el-form-item
+            prop="idcard"
+            label="璇佷欢鍙�"
+            :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="宸ヤ綔" :label-width="formLabelWidth">
+            <el-input v-model="editForm.job" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item prop="edu" label="鏁欒偛" :label-width="formLabelWidth">
+            <el-input v-model="editForm.edu" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item prop="addr" label="鍦板潃" :label-width="formLabelWidth">
+            <el-input v-model="editForm.addr" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="email"
+            label="鐢靛瓙閭欢"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model="editForm.email" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="contact"
+            label="鑱旂郴鏂瑰紡"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model="editForm.contact" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            prop="status"
+            label="鐘舵��"
+            :label-width="formLabelWidth"
+          >
+            <el-select v-model="editForm.status" clearable placeholder="璇烽�夋嫨">
+              <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="澶囨敞" :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()">閲嶇疆</el-button>
+        <el-button
+          size="medium"
+          type="primary"
+          @click="sendEdit('editForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >鎻愪氦</el-button
+        >
+      </div>
+      <div v-else slot="footer" class="dialog-footer">
+        <el-button size="medium" @click="cancelAdd('editForm')">閲嶇疆</el-button>
+        <el-button
+          size="medium"
+          type="primary"
+          @click="sendAdd('editForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >鎻愪氦</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 label="澶囨敞" :label-width="formLabelWidth">
-          <el-input v-model="ruleForm.bak" autocomplete="off"></el-input>
+        <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="cancelEdit('ruleForm')"
-          >鍙栨秷</el-button
+        <el-button size="medium" @click="cancelReset - 'pwdForm'"
+          >閲嶇疆</el-button
         >
         <el-button
           size="medium"
           type="primary"
-          @click="sendEdit('ruleForm')"
+          @click="sendReset('pwdForm')"
           v-loading.fullscreen.lock="fullscreenLoading"
           >鎻愪氦</el-button
         >
@@ -302,6 +447,8 @@
 </template>
 
 <script>
+var encrypt = new JSEncrypt();
+import { mapActions } from "vuex";
 import MyBread from "../../components/MyBread.vue";
 import {
   queryDepTree,
@@ -309,7 +456,8 @@
   insertUser,
   deleteUser,
   updateUser,
-  updateUserPwd,
+  updatePwd,
+  selectByUserid,
 } from "../../api/api";
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
@@ -319,48 +467,78 @@
   data() {
     let validName = (rule, value, callback) => {
       if (value === "" || value === null || value === undefined) {
-        return callback(new Error("鍚嶇О涓嶈兘涓虹┖"));
+        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 {
+      isNewUser: false,
       currentPage: 1,
+      pageSize: 10,
+      pageIndex: 1,
       defaultProps: {
         children: "children",
         label: "name",
       },
-      form: {
-        username: "",
-        // userStatus: "all",
+      queryForm: {
+        uname: "",
+        depid: null,
         depName: "",
       },
-      showDepTree: true,
       tableData: [],
       fullscreenLoading: false,
-      newDep: {
-        name: "",
-        id: null,
-      },
       count: 0,
       formLabelWidth: "100px",
       dialogFormVisible: false,
-      ruleForm: {
+      initialForm: "",
+      behavior: "",
+      multipleSelection: [],
+      resetPwd: false,
+      editForm: {
+        uid: "",
         uname: "",
+        oldPwd: "",
         pwd: "",
-        sex: "",
+        checkPass: "",
+        sex: null,
         natives: "",
-        depName: "",
+        depid: null,
         idcard: "",
         job: "",
         edu: "",
         addr: "",
         email: "",
         contact: "",
-        status: "",
+        status: null,
         bak: "",
-        depid: null,
+        salt: "",
       },
+      pwdForm: {
+        adminPwd: "",
+        newPwd: "",
+        checkPwd: "",
+        ids: [],
+      },
+      treeOptions: [],
       statusOpt: [
         {
           value: 0,
@@ -399,36 +577,140 @@
         },
       ],
       rules: {
-        name: [{ validator: validName, trigger: "blur" }],
+        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(params) {
-      // queryMaxId().then((res) => {
-      //   this.id = res.data;
-      // });
-      queryDepTree().then((res) => {
-        if (res.code == 200) {
-          this.depList = this.treeData(res.result);
-        } else {
-          this.$notify.error({
-            title: res.code,
-            message: "鏃犳硶鑾峰彇鍗曚綅鍒楄〃",
-          });
-        }
-      });
+      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 {
-          console.log("鎺ュ彛鎶ラ敊");
-        }
-      });
+      })
+        .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)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
@@ -439,55 +721,280 @@
         return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
       });
     },
-    showDep() {
-      this.showDepTree = true;
+    //鏌ヨ閫夋嫨鍗曚綅
+    handleChange(value) {
+      this.queryForm.depid = value;
     },
-    handleNodeClick(data) {
-      this.newDep.name = data.name;
-      this.newDep.id = data.id;
+    //鎼滅储鎸夐挳
+    queryInfo() {
+      let searchData = {
+        uname: this.queryForm.uname,
+        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,
+          });
+        }
+      });
     },
-    handleSizeChange(val) {
-      console.log(`姣忛〉 ${val} 鏉);
-    },
-    handleCurrentChange(val) {
-      console.log(`褰撳墠椤�: ${val}`);
-    },
-    onSubmit() {
-      console.log("submit!");
-    },
-    resetForm(formName) {
+    //閲嶇疆鎸夐挳
+    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(1, 10);
+                  this.$message({
+                    message: "娣诲姞鎴愬姛",
+                    type: "success",
+                  });
+                  this.editForm = {};
+                  this.dialogFormVisible = false;
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              alert("淇敼澶辫触锛岃閲嶈瘯锛�");
+              this.fullscreenLoading = false;
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    //鍒犻櫎鎸夐挳
+    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(1, 10);
+              } 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(1, 10);
+                  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;
-      this.ruleForm = row;
+      row.pwd = "";
+      this.initialForm = JSON.stringify(row);
+      this.behavior = "淇敼淇℃伅";
+      this.editForm = JSON.parse(JSON.stringify(row));
       this.dialogFormVisible = true;
     },
-    editPwd(row) {
-      console.log(row.id + "---" + row.pwd);
+    //缂栬緫閫夋嫨鍗曚綅
+    editChange(value) {
+      this.editForm.depid = value;
     },
-    sendNode() {
-      this.showDepTree = false;
-      this.ruleForm.depName = this.newDep.name;
-      this.ruleForm.depid = this.newDep.id;
-    },
+    //鍏抽棴寮瑰嚭妗�
     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(){
-      
+    //鎻愪氦缂栬緫
+    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(1, 10);
+                  this.$message({
+                    message: "淇敼鎴愬姛",
+                    type: "success",
+                  });
+                  this.editForm = {};
+                  this.dialogFormVisible = false;
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              alert("淇敼澶辫触锛岃閲嶈瘯锛�");
+              this.fullscreenLoading = false;
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
     },
-    showAddDialog() {
-      this.dialogTableVisible = true;
+    cancelEdit() {
+      this.$nextTick(() => {
+        this.editForm = JSON.parse(this.initialForm);
+      });
+    },
+    //澶氶��
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleSizeChange(val) {
+      // console.log(`姣忛〉 ${val} 鏉);
+      this.pageSize = val;
+      this.queryInfo();
+    },
+    handleCurrentChange(val) {
+      // console.log(`褰撳墠椤�: ${val}`);
+      this.pageIndex = val;
+      this.currentPage = val;
+      this.queryInfo();
     },
   },
   mounted() {
     this.getUserInfo(1, 10);
+    this.getpublickey();
   },
 };
 </script>
@@ -508,6 +1015,7 @@
     width: 300px;
   }
   .inquire {
+    position: relative;
     height: 110px;
     overflow: auto;
     padding: 8px;
@@ -529,63 +1037,27 @@
   }
   .el-dialog {
     .el-form-item {
-      margin-bottom: 12px;
-      width: 100%;
-    }
-    .box-card {
-      position: absolute;
-      z-index: 100;
-      top: -243px;
-      left: 450px;
-      height: 800px;
-      width: 350px;
-      /deep/ .el-card__body {
-        height: 85%;
-        overflow: auto;
+      margin-bottom: 20px;
+      // width: 48%;
+      /deep/.el-form-item__error {
+        width: 300px;
       }
-
-      // background-color: #bfa;
-    }
-    .depTreeBox {
-      overflow: hidden;
-
-      .el-tree {
-        background: transparent;
-        font-size: 15px;
-        font-family: Microsoft YaHei;
-        font-weight: 400;
-        color: #000000;
-        /deep/ .el-tree-node {
-          padding-top: 10px;
-          // padding-bottom: 10px;
+      .isNewUser {
+        display: inline-block;
+        width: 75px;
+        margin-left: 5px;
+        img {
+          width: 1em;
         }
-        /deep/ .el-tree-node:focus > .el-tree-node__content {
-          background-color: #b9b9b9;
-        }
-        /deep/ .el-tree-node__content:hover {
-          background-color: rgb(153, 153, 153);
-        }
-        .btnBox {
-          margin: 0 10px 0 5px;
-          .el-button + .el-button {
-            margin-left: 5px;
-          }
-        }
+      }
+      .el-cascader,
+      .el-select {
+        width: 300px;
       }
     }
   }
   /deep/ .el-dialog__body {
-    padding: 30px 0 0 0;
+    padding: 10px 0 0 0;
   }
 }
-
-// /deep/ .el-card__header {
-//   padding: 10px 10px !important;
-// }
-// /deep/ .el-dialog {
-//   margin-top: 2vh !important;
-// }
-// /deep/ .el-dialog__wrapper {
-//   overflow: hidden !important;
-// }
 </style>

--
Gitblit v1.9.3