From 3fde6efd0326e547d9d5cfdc6e534813cccb52ff Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 17 十月 2022 22:58:52 +0800
Subject: [PATCH] 部门bug修改

---
 src/views/systemSetting/baseSetting/department/updateUser/index.vue |  602 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 406 insertions(+), 196 deletions(-)

diff --git a/src/views/systemSetting/baseSetting/department/updateUser/index.vue b/src/views/systemSetting/baseSetting/department/updateUser/index.vue
index fecebad..c234613 100644
--- a/src/views/systemSetting/baseSetting/department/updateUser/index.vue
+++ b/src/views/systemSetting/baseSetting/department/updateUser/index.vue
@@ -1,228 +1,438 @@
 <template>
-    <div class="updateUser">
-        <!-- <header>
+  <div class="updateUser">
+    <!-- <header>
              <div class="headerTitle">{{updateFlag ? '淇敼鐢ㄦ埛閮ㄩ棬淇℃伅' :'鏌ョ湅鐢ㄦ埛淇℃伅'}}</div>
         </header> -->
-        <main>
-            <div class="mainContent">
-                <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules"
-                    label-position="right">
-                    <!-- 閮ㄩ棬id
+    <main>
+      <div class="mainContent">
+        <el-form
+          ref="user"
+          label-width="140px"
+          autoComplete="on"
+          :model="user"
+          :rules="createUserRules"
+          label-position="right"
+        >
+          <!-- 閮ㄩ棬id
                     <el-form-item class="optionItem" label="閮ㄩ棬id:" prop="id">
                         <el-input v-model="user.id" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" :disabled="!updateFlag"></el-input>
                     </el-form-item> -->
-                    <!-- 閮ㄩ棬鍚嶇О -->
-                    <el-form-item class="optionItem" label="閮ㄩ棬鍚嶇О:" prop="departName">
-                        <el-input v-model="user.departName" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" :disabled="!updateFlag"></el-input>
-                    </el-form-item>
-                    <!-- 涓婄骇閮ㄩ棬 -->
-                    <el-form-item class="optionItems" label="涓婄骇閮ㄩ棬:" prop="parentId">
-                        <el-select v-model="user.parentId" placeholder="璇烽�夋嫨涓婄骇閮ㄩ棬" disabled>
-                            <el-option v-for="item in departList" :key="item.departName" :label="item.departName"
-                                :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <!-- 閮ㄩ棬绫诲瀷 -->
-                    <el-form-item class="optionItem" label="閮ㄩ棬绫诲瀷:" prop="departType">
-                        <el-select v-model="user.departType" placeholder="璇烽�夋嫨閮ㄩ棬绫诲瀷" :disabled="!updateFlag">
-                            <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <!-- 閮ㄩ棬鎻忚堪 -->
-                    <el-form-item class="optionItem" label="閮ㄩ棬鎻忚堪:" prop="departDes">
-                        <el-input v-model="user.departDes" placeholder="璇疯緭鍏ラ儴闂ㄦ弿杩�" :disabled="!updateFlag"></el-input>
-                    </el-form-item>
-                    <el-form-item v-if="updateFlag">
-                        <div class="optionBtn">
-                            <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">鎻愪氦
-                            </el-button>
-                        </div>
-                    </el-form-item>
-                </el-form>
-
+          <!-- 閮ㄩ棬鍚嶇О -->
+          <el-form-item class="optionItem" label="閮ㄩ棬鍚嶇О:" prop="departName">
+            <el-input
+              v-model="user.departName"
+              placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+              :disabled="!updateFlag"
+            ></el-input>
+          </el-form-item>
+          <!-- 涓婄骇閮ㄩ棬 -->
+          <el-form-item class="optionItems" label="涓婄骇閮ㄩ棬:" prop="parentId">
+            <el-select v-model="user.parentId" placeholder="璇烽�夋嫨涓婄骇閮ㄩ棬">
+              <el-option
+                v-for="item in departList"
+                :key="item.departName"
+                :label="item.departName"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- 閮ㄩ棬绫诲瀷 -->
+          <el-form-item class="optionItem" label="閮ㄩ棬绫诲瀷:" prop="departType">
+            <el-select
+              v-model="user.departType"
+              placeholder="璇烽�夋嫨閮ㄩ棬绫诲瀷"
+              :disabled="!updateFlag"
+            >
+              <el-option
+                v-for="item in typeList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!--娣诲姞浜哄憳  -->
+          <el-form-item class="optionItem add" label="娣诲姞浜哄憳:">
+            <ul class="addPerson">
+              <li
+                v-for="(item, index) in checkedList"
+                :key="index"
+                @click="setLeader(index)"
+              >
+                <div class="li-item">
+                  <div class="li-icon">
+                    <i
+                      :class="[
+                        'el-icon-user-solid',
+                        item.leader ? 'leader' : '',
+                      ]"
+                    ></i>
+                  </div>
+                  <label
+                    style="font-size: 12px"
+                    :class="[item.leader ? 'leader' : '']"
+                    >{{ item.username }}</label
+                  >
+                </div>
+              </li>
+              <li class="li-btn" v-if="updateFlag">
+                <i class="el-icon-plus" @click="openUser = true"></i>
+              </li>
+            </ul>
+            <div class="card" v-if="openUser">
+              <el-card class="box-card">
+                <div slot="header" class="myclear">
+                  <span>宸ヤ綔浜哄憳</span>
+                  <div @click="addUser">纭</div>
+                </div>
+                <div class="scrollWrap">
+                  <el-checkbox-group v-model="checkedUser">
+                    <el-checkbox
+                      v-for="user in userList"
+                      :label="user.id"
+                      :key="user.id"
+                    >
+                      {{ user.username }}
+                    </el-checkbox>
+                  </el-checkbox-group>
+                </div>
+                <div class="hidebar"></div>
+              </el-card>
             </div>
-        </main>
-    </div>
+          </el-form-item>
+          <el-form-item style="margin-top: -40px">
+            <label style="color: #ff0000ab"
+              >绾㈣壊浠h〃閮ㄩ棬棰嗗锛岀偣鍑诲ご鍍忓彲璁剧疆閮ㄩ棬棰嗗</label
+            >
+          </el-form-item>
+          <!-- 閮ㄩ棬鎻忚堪 -->
+          <el-form-item class="optionItem" label="閮ㄩ棬鎻忚堪:" prop="departDes">
+            <el-input
+              type="textarea"
+              :rows="4"
+              v-model="user.departDes"
+              placeholder="璇疯緭鍏ラ儴闂ㄦ弿杩�"
+              :disabled="!updateFlag"
+            ></el-input>
+          </el-form-item>
+          <el-form-item v-if="updateFlag">
+            <div class="optionBtn">
+              <el-button
+                type="primary"
+                class="btn submit"
+                @click.native.prevent="handleUser"
+                >鎻愪氦
+              </el-button>
+            </div>
+          </el-form-item>
+        </el-form>
+      </div>
+    </main>
+  </div>
 </template>
 <script>
-import {getTypeList} from '@/utils/helper'
+import { getTypeList } from "@/utils/helper";
 export default {
-    data() {
-        const validateNickname = (rule, value, callback) => {
-            if (!value) {
-                callback(new Error("璇峰~鍐欓儴闂ㄥ悕绉�"));
-            } else {
-                callback();
-            }
-        };
-        const validateId = (rule, value, callback) => {
-            if (!value) {
-                callback(new Error("璇峰~鍐欓儴闂╥d"));
-            } else {
-                callback();
-            }
-        }
-        const validatePass = (rule, value, callback) => {
-            if (!value) {
-                callback();
-            } else {
-                callback();
-                // const rep = /^\w+$/;
-                // if (!rep.test(value)) {
-                //     callback(new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆"));
-                // }
-            }
-        };
-        const validatePhone = (rule, value, callback) => {
-            if (!value) {
-                callback();
-            } else {
-                callback();
-                // const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/
-                // if (!rep.test(value)) {
-                //     callback("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜");
-                // }
-            }
-        };
-        return {
-            user: {
-                id: '',
-                departName: '',
-                parentId: '',
-                departDes: '',
-                departType: '',
-            },
-            createUserRules: {
-                id: [
-                    { required: true, trigger: "blur", validator: validateId },
-                ],
-                departName: [
-                    { required: true, trigger: "blur", validator: validateNickname },
-                ],
-                parentId: [
-                    { required: false, trigger: "blur", validator: validatePass },
-                ],
-                departDes: [
-                    { required: false, trigger: "blur" },
-                ],
-                departType: [
-                    { required: false, trigger: "blur" },
-                ],
-            },
-            departList: [
-                
-            ],
-            typeList: []
-        }
-    },
-    created() {
-        const that = this;
-        this.user = JSON.parse(JSON.stringify(that.userInfo));
-        this.$axios.get('sccg/depart/page').then(res => {
-            that.departList = res.data.records;
-        });
-        // 鑾峰彇閮ㄩ棬绫诲瀷
-        this.getDepartType();
-    },
-    methods: {
-        handleUser() {
-            this.$refs['user'].validate((valid) => {
-                if (valid) {
-                    const { user } = this;
-                    console.log(user)
-                    this.$axios.post('sccg/depart/update', {
-                        id: user.id,
-                        departName: user.departName,
-                        parentId: user.parentId,
-                        departDes: user.departDes
-                    }).then(res => {
-                        console.log(res);
-                        this.$message({
-                            message:res.message,
-                            type:res.code === 200 ? 'success' : 'warning',
-                        })
-                        this.$emit('changeDialog', { flag: false });
-                        this.getUserList();
-                    })
-                } else {
-                    return false;
-                }
+  data() {
+    const validateNickname = (rule, value, callback) => {
+      if (!value) {
+        callback(new Error("璇峰~鍐欓儴闂ㄥ悕绉�"));
+      } else {
+        callback();
+      }
+    };
+    const validateId = (rule, value, callback) => {
+      if (!value) {
+        callback(new Error("璇峰~鍐欓儴闂╥d"));
+      } else {
+        callback();
+      }
+    };
+    const validatePass = (rule, value, callback) => {
+      if (!value) {
+        callback();
+      } else {
+        callback();
+        // const rep = /^\w+$/;
+        // if (!rep.test(value)) {
+        //     callback(new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆"));
+        // }
+      }
+    };
+    const validatePhone = (rule, value, callback) => {
+      if (!value) {
+        callback();
+      } else {
+        callback();
+        // const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/
+        // if (!rep.test(value)) {
+        //     callback("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜");
+        // }
+      }
+    };
+    return {
+      user: {
+        id: "",
+        departName: "",
+        parentId: "",
+        departDes: "",
+        departType: "",
+      },
+      createUserRules: {
+        id: [{ required: true, trigger: "blur", validator: validateId }],
+        departName: [
+          { required: true, trigger: "blur", validator: validateNickname },
+        ],
+        parentId: [
+          { required: false, trigger: "blur", validator: validatePass },
+        ],
+        departDes: [{ required: false, trigger: "blur" }],
+        departType: [{ required: false, trigger: "blur" }],
+      },
+      userList: [],
+      departList: [],
+      typeList: [],
+      checkedUser: [],
+      checkedList: [],
+      openUser: false,
+    };
+  },
+  created() {
+    const that = this;
+    this.user = JSON.parse(JSON.stringify(that.userInfo));
+    this.checkedList = this.checkedUser = this.user.userInfoDTOS;
+    this.$axios({
+      method: "get",
+      url: "sccg/depart/tree",
+    }).then((res) => {
+      that.departList = res.data;
+    });
+    this.getUserList();
+    // 鑾峰彇閮ㄩ棬绫诲瀷
+    this.getDepartType();
+  },
+  methods: {
+    handleUser() {
+      this.$refs["user"].validate((valid) => {
+        if (valid) {
+          const { user } = this;
+          console.log(user);
+          this.$axios
+            .post("sccg/depart/update", {
+              id: user.id,
+              departName: user.departName,
+              parentId: user.parentId,
+              departDes: user.departDes,
             })
-        },
-        // 鑾峰彇閮ㄩ棬绫诲瀷
-        async getDepartType(){
-           this.typeList =   await getTypeList(1,'08')
+            .then((res) => {
+              console.log(res);
+              this.$message({
+                message: res.message,
+                type: res.code === 200 ? "success" : "warning",
+              });
+              this.$emit("changeDialog", { flag: false });
+              this.getUserList();
+            });
+        } else {
+          return false;
         }
+      });
     },
-    props: ['userInfo', 'updateFlag', 'getUserList', 'changeDialog']
-}
+    // 鑾峰彇閮ㄩ棬绫诲瀷
+    async getDepartType() {
+      this.typeList = await getTypeList(1, "08");
+    },
+
+    // 璁剧疆棰嗗
+    setLeader(idx) {
+      this.checkedList.forEach((item, index) => {
+        item.leader = index === idx;
+      });
+    },
+
+    // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭�
+    getUserList() {
+      // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭�佺敤鎴锋煡璇�(鏆傛椂鏀寔鐢佃瘽鍙风爜)
+      this.$axios.get(`sccg/admin/list`).then((res) => {
+        if (res.code === 200) {
+          this.userList = res.data.records;
+        }
+      });
+    },
+    addUser() {
+      console.log(this.checkedUser);
+      console.log(this.userList);
+      this.checkedList = [];
+      this.userList.forEach((item) => {
+        this.checkedUser.forEach((child) => {
+          if (item.id == child) {
+            this.checkedList.push({
+              id: item.id,
+              username: item.username,
+              isLeader: 0,
+              checked: false,
+            });
+          }
+        });
+      });
+      this.checkedList[0].isLeader = 1;
+      this.checkedList[0].checked = true;
+      this.openUser = false;
+    },
+  },
+  props: ["userInfo", "updateFlag", "changeDialog"],
+};
 </script>
 <style lang="scss" scoped>
 .updateUser {
-    border-radius: 1px;
+  border-radius: 1px;
+  background-color: #09152f;
+
+  main {
+    // border: 1px solid #fff;
+    text-align: left;
+    padding: 0 55px;
     background-color: #09152f;
+    padding-bottom: 50px;
 
-    main {
-        // border: 1px solid #fff;
-        text-align: left;
-        padding: 0 55px;
-        background-color: #09152f;
-        padding-bottom: 50px;
+    // .mainTitle {
+    //     color: #4b9bb7;
+    //     font-weight: 600;
+    //     line-height: 100px;
+    //     font-size: 14px;
+    // }
 
-        // .mainTitle {
-        //     color: #4b9bb7;
-        //     font-weight: 600;
-        //     line-height: 100px;
-        //     font-size: 14px;
-        // }
+    .mainContent {
+      display: flex;
+      justify-content: center;
+      padding-top: 50px;
 
-        .mainContent {
-            display: flex;
-            justify-content: center;
-            padding-top: 50px;
+      .el-form-item__content {
+        width: 400px;
 
-            .el-form-item__content {
-                width: 400px;
-
-                .el-select {
-                    width: 100%;
-                }
-            }
-
-            .optionHandleSp {
-                display: flex;
-
-                .areaNumber,
-                .moreNumber {
-                    flex: 1;
-                }
-
-                .telNumber {
-                    flex: 2;
-                }
-            }
-
-            .optionBtn {
-                display: flex;
-                margin-top: 20px;
-
-                .btn {
-                    padding: 12px 50px;
-                }
-            }
-
+        .el-select {
+          width: 100%;
         }
+      }
+
+      .optionHandleSp {
+        display: flex;
+
+        .areaNumber,
+        .moreNumber {
+          flex: 1;
+        }
+
+        .telNumber {
+          flex: 2;
+        }
+      }
+
+      .optionBtn {
+        display: flex;
+        margin-top: 20px;
+
+        .btn {
+          padding: 12px 50px;
+        }
+      }
     }
+  }
 }
 
 .updateUser::v-deep .el-form-item__label {
-    color: #4b9bb7;
+  color: #4b9bb7;
 }
 
 .updateUser::v-deep .el-input__inner {
+  background-color: #09152f;
+  border: 1px solid #17324c;
+}
+
+.addPerson {
+  display: flex;
+  list-style: none;
+  padding: 0;
+  flex-wrap: wrap;
+  max-width: 280px;
+  li {
+    color: #fff;
+    text-align: center;
+    font-size: 30px;
+    margin-left: 10px;
+  }
+}
+.li-icon {
+  background-color: #cccccc;
+  width: 36px;
+  height: 36px;
+  border-radius: 50%;
+  margin: 0 auto;
+}
+.li-btn {
+  background-color: #cccccc;
+  width: 36px;
+  height: 36px;
+  border-radius: 50%;
+}
+
+.card {
+  position: absolute;
+  z-index: 2000;
+  right: 0;
+
+  .box-card {
+    max-height: 200px;
+    overflow: hidden;
     background-color: #09152f;
-    border: 1px solid #17324c;
+    position: relative;
+    max-width: 220px;
+
+    .scrollWrap {
+      overflow: scroll;
+      height: 160px;
+      position: relative;
+      color: #4b9bb7;
+
+      .el-checkbox-group {
+        display: flex;
+        flex-direction: column;
+
+        .el-checkbox {
+          line-height: 20px;
+        }
+      }
+    }
+
+    .myclear {
+      width: 100%;
+      line-height: 20px;
+      color: #4b9bb7;
+      display: flex;
+      justify-content: space-between;
+    }
+
+    .hidebar {
+      position: absolute;
+      top: 77px;
+      right: 20px;
+      width: 20px;
+      height: 160px;
+      background-color: #09152f;
+    }
+
+    .item {
+      line-height: 40px;
+    }
+  }
+}
+
+.leader {
+  color: red;
+}
+.el-input {
+  width: 280px !important;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0