From 8460d91255f5ff11a6c9a8199c313226b21f815a Mon Sep 17 00:00:00 2001
From: lxl <lixuliang_hd@126.com>
Date: 星期四, 13 十月 2022 18:03:57 +0800
Subject: [PATCH] 11

---
 src/views/userManage/userInfoManage.vue |  441 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 340 insertions(+), 101 deletions(-)

diff --git a/src/views/userManage/userInfoManage.vue b/src/views/userManage/userInfoManage.vue
index 3d3de5d..4ba9546 100644
--- a/src/views/userManage/userInfoManage.vue
+++ b/src/views/userManage/userInfoManage.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="logLog_box">
+  <div class="userInfo_box">
     <My-bread
       :list="[
         `${$t('userManage.userManage')}`,
@@ -15,37 +15,6 @@
             :placeholder="$t('operatManage.ELM.usernameInfo')"
           />
         </el-form-item>
-        <!-- <el-form-item
-          :label="$t('userManage.userInfoObj.userStatus')"
-          prop="userStatus"
-        >
-          <el-select
-            v-model="form.userStatus"
-            :placeholder="$t('userManage.userInfoObj.userStatus')"
-          >
-            <el-option :label="$t('userManage.userInfoObj.all')" value="all" />
-            <el-option
-              :label="$t('userManage.userInfoObj.normal')"
-              value="normal"
-            />
-            <el-option
-              :label="$t('userManage.userInfoObj.disable')"
-              value="disable"
-            />
-            <el-option
-              :label="$t('userManage.userInfoObj.delete')"
-              value="delete"
-            />
-            <el-option
-              :label="$t('userManage.userInfoObj.apply')"
-              value="apply"
-            />
-            <el-option
-              :label="$t('userManage.userInfoObj.rejection')"
-              value="rejection"
-            />
-          </el-select>
-        </el-form-item> -->
         <el-form-item
           :label="$t('userManage.userInfoObj.depName')"
           prop="depName"
@@ -53,7 +22,20 @@
           <el-input
             v-model="form.depName"
             :placeholder="$t('common.pleaseInput')"
-          />
+          /> </el-form-item
+        ><el-form-item>
+          <el-button @click="onSubmit"
+            ><i class="el-icon-search"></i> &nbsp;{{
+              $t("operatManage.ELM.search")
+            }}</el-button
+          >
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="resetForm('ruleForm')"
+            ><i class="el-icon-delete"></i>&nbsp;{{
+              $t("operatManage.ELM.reset")
+            }}</el-button
+          >
         </el-form-item>
         <br />
         <el-form-item>
@@ -63,17 +45,10 @@
             }}</el-button
           >
         </el-form-item>
-        <el-form-item style="margin-left: 60%">
-          <el-button @click="onSubmit" size="mini"
-            ><i class="el-icon-search"></i> &nbsp;{{
-              $t("operatManage.ELM.search")
-            }}</el-button
-          >
-        </el-form-item>
         <el-form-item>
-          <el-button @click="resetForm('ruleForm')" size="mini"
+          <el-button type="danger" size="small" @click="showAddDialog"
             ><i class="el-icon-delete"></i>&nbsp;{{
-              $t("operatManage.ELM.reset")
+              $t("common.delete")
             }}</el-button
           >
         </el-form-item>
@@ -85,29 +60,27 @@
         stripe
         border
         style="width: 100%"
-        max-height="99%"
+        height="99%"
       >
         <el-table-column
           align="center"
           type="index"
           :label="$t('common.index')"
+          width="70px"
           fixed
         />
         <el-table-column
           align="center"
           prop="uname"
+          width="150px"
           :label="$t('userManage.userInfoObj.uname')"
           fixed
-        />
-        <el-table-column
-          align="center"
-          prop="pwd"
-          :label="$t('userManage.userInfoObj.pwd')"
         />
 
         <el-table-column
           align="center"
           prop="sex"
+          width="80px"
           :label="$t('userManage.userInfoObj.sex')"
         >
           <template slot-scope="scope">
@@ -119,40 +92,48 @@
         <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')"
         />
 
@@ -172,22 +153,30 @@
         <el-table-column
           align="center"
           prop="bak"
+          width="200px"
           :label="$t('userManage.userInfoObj.bak')"
         />
-        <el-table-column :label="$t('common.operate')" fixed="right">
-          <template #default>
+        <el-table-column
+          :label="$t('common.operate')"
+          width="200px"
+          fixed="right"
+        >
+          <template slot-scope="scope">
             <!-- <el-button type="primary" size="small">淇敼</el-button> -->
 
-            <el-button type="warning" size="mini">{{
-              $t("common.edit")
-            }}</el-button>
-            <el-button type="danger" size="mini">{{
-              $t("common.delete")
-            }}</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>
-      <div style="margin-top: 40px" class="pagination_box">
+      <div style="margin-top: 25px" class="pagination_box">
         <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
@@ -195,17 +184,133 @@
           :page-sizes="[10, 20, 30, 40]"
           :page-size="10"
           layout="total, sizes, prev, pager, next, jumper"
-          :total="1"
+          :total="count"
         >
         </el-pagination>
       </div>
     </div>
+    <el-dialog
+      width="500px"
+      top="7vh"
+      title="淇敼淇℃伅"
+      :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-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
+              >
+            </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"
+              >
+                <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 label="澶囨敞" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.bak" autocomplete="off"></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"
+          type="primary"
+          @click="sendEdit('ruleForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >鎻愪氦</el-button
+        >
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import MyBread from "../../components/MyBread.vue";
-import { queryPageUser } from "../../api/api";
+import {
+  queryDepTree,
+  queryPageUser,
+  insertUser,
+  deleteUser,
+  updateUser,
+  updateUserPwd,
+} from "../../api/api";
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
@@ -213,32 +318,86 @@
   },
   data() {
     let validName = (rule, value, callback) => {
-      if (value === "") {
-        return callback(new Error("鐩綍鍚嶇О涓嶈兘涓虹┖"));
+      if (value === "" || value === null || value === undefined) {
+        return callback(new Error("鍚嶇О涓嶈兘涓虹┖"));
       } else {
         callback();
       }
     };
     return {
       currentPage: 1,
+      defaultProps: {
+        children: "children",
+        label: "name",
+      },
       form: {
         username: "",
-        userStatus: "all",
-        requestIp: "",
+        // userStatus: "all",
+        depName: "",
       },
+      showDepTree: true,
       tableData: [],
       fullscreenLoading: false,
-      itemdetail: {},
-      formLabelWidth: "170px",
+      newDep: {
+        name: "",
+        id: null,
+      },
+      count: 0,
+      formLabelWidth: "100px",
       dialogFormVisible: false,
       ruleForm: {
-        level: null,
-        orderNum: null,
-        pid: null,
-        name: "",
-        descr: "",
+        uname: "",
+        pwd: "",
+        sex: "",
+        natives: "",
+        depName: "",
+        idcard: "",
+        job: "",
+        edu: "",
+        addr: "",
+        email: "",
+        contact: "",
+        status: "",
         bak: "",
+        depid: null,
       },
+      statusOpt: [
+        {
+          value: 0,
+          label: "姝e父",
+        },
+        {
+          value: 1,
+          label: "绂佺敤",
+        },
+        {
+          value: 2,
+          label: "鍒犻櫎",
+        },
+        {
+          value: 3,
+          label: "鐢宠",
+        },
+        {
+          value: 4,
+          label: "鎷掓壒",
+        },
+      ],
+      depList: [],
+      sexOpt: [
+        {
+          value: 0,
+          label: "濂�",
+        },
+        {
+          value: 1,
+          label: "鐢�",
+        },
+        {
+          value: -1,
+          label: "鏈煡",
+        },
+      ],
       rules: {
         name: [{ validator: validName, trigger: "blur" }],
       },
@@ -249,33 +408,44 @@
       // 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: "鏃犳硶鑾峰彇鍗曚綅鍒楄〃",
+          });
+        }
+      });
       queryPageUser({
         pageIndex: 1,
         pageSize: 10,
       }).then((res) => {
         if (res.code == 200) {
           this.tableData = res.result;
+          this.count = res.count;
         } else {
           console.log("鎺ュ彛鎶ラ敊");
         }
       });
     },
-    // getUserInfo() {
-    //   //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
-    //   // queryMaxId().then((res) => {
-    //   //   this.id = res.data;
-    //   // });
-    //   queryDepTree().then((res) => {
-    //     if (res.status == 200) {
-    //       this.depList = this.treeData(res.data.result);
-    //       this.oriData = res.data.result;
-    //       this.newData = res.data.result;
-    //     } else {
-    //       console.log("鎺ュ彛鎶ラ敊");
-    //     }
-    //   });
-    // },
-
+    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; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    showDep() {
+      this.showDepTree = true;
+    },
+    handleNodeClick(data) {
+      this.newDep.name = data.name;
+      this.newDep.id = data.id;
+    },
     handleSizeChange(val) {
       console.log(`姣忛〉 ${val} 鏉);
     },
@@ -287,6 +457,30 @@
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
+    },
+    editInfo(row) {
+      delete row.updateTime;
+      delete row.updateUser;
+      this.ruleForm = row;
+      this.dialogFormVisible = true;
+    },
+    editPwd(row) {
+      console.log(row.id + "---" + row.pwd);
+    },
+    sendNode() {
+      this.showDepTree = false;
+      this.ruleForm.depName = this.newDep.name;
+      this.ruleForm.depid = this.newDep.id;
+    },
+    handleClose(done) {
+      this.$confirm("纭鍏抽棴锛�")
+        .then((_) => {
+          done();
+        })
+        .catch((_) => {});
+    },
+    sendEdit(){
+      
     },
     showAddDialog() {
       this.dialogTableVisible = true;
@@ -304,7 +498,7 @@
 </style>
 <style lang="less" scoped>
 //@import url(); 寮曞叆鍏叡css绫�
-.logLog_box {
+.userInfo_box {
   background: rgb(240, 242, 245);
   border-radius: 10px;
   height: 100%;
@@ -327,26 +521,71 @@
     }
   }
   .table_box {
-    height: 65%;
+    height: 70%;
     padding: 10px;
     background: #fff;
     border-radius: 5px;
     border: 1px solid rgb(202, 201, 204);
   }
-  .text-center {
-    text-align: center;
+  .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;
+      }
+
+      // 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;
+        }
+        /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;
+          }
+        }
+      }
+    }
   }
-  .select {
-    width: 300px;
+  /deep/ .el-dialog__body {
+    padding: 30px 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;
-}
+
+// /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