Browse Source

add:通知列表

Tang 3 years ago
parent
commit
8da556520e

+ 8 - 0
src/newApi/order.js

@@ -55,4 +55,12 @@ export default {
             params: data
         })
     },
+    //查询购买商品的用户列表
+    inquireOrderGoodsBuyGoodsUserList(data) {
+        return request({
+            url: '/order/goods/buyGoodsUserList',
+            method: 'get',
+            params: data
+        })
+    },
 }

+ 75 - 13
src/views/education/notificationManageMent/notificationList/add/index.vue

@@ -20,15 +20,27 @@
           <el-form-item label="收件人:" prop="userId">
             <el-button size="mini" type="primary" @click="checkUser"
               >选择学员</el-button
+            ><el-button
+              v-if="listData.userId.length"
+              size="mini"
+              type="danger"
+              @click="listData.userId = []"
+              >清空学员</el-button
             >
-            <ul>
-              <li
-                style="float: left; margin-right: 6px"
-                v-for="(item, index) in listData.userId"
-                :key="index"
-              >
-                {{ filterUserName(item) }}
-              </li>
+            <ul class="ul_styHide">
+              <transition-group name="list-complete" tag="p">
+                <li
+                  class="liStyle_people"
+                  v-for="(item, index) in listData.userId"
+                  :key="index"
+                >
+                  {{ filterUserName(item) }}
+                  <i
+                    class="iconStyle el-icon-error"
+                    @click="listData.userId.splice(index, 1)"
+                  ></i>
+                </li>
+              </transition-group>
               <div style="clear: both"></div>
             </ul>
           </el-form-item>
@@ -401,7 +413,7 @@ export default {
         userId: [],
         informCourseAddBo: [],
         informExamAddBo: [],
-        userFrom:"",
+        userFrom: "",
       },
       arrays: [],
       loadingBox: true,
@@ -531,12 +543,15 @@ export default {
     });
   },
   methods: {
-    backUserList(int,arr){
-      this.listData.userFrom = int
-      this.listData.userId = arr
+    backUserList(int, arr) {
+      this.listData.userFrom = int;
+      this.listData.userId = arr;
     },
     checkUser() {
-      this.$refs.checkUser.diavosFun(this.listData.userFrom,this.listData.userId);
+      this.$refs.checkUser.diavosFun(
+        this.listData.userFrom,
+        this.listData.userId
+      );
     },
     seeBank(item) {
       this.$refs.bankInfo.$emit("childmethod", item);
@@ -916,6 +931,53 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.list-complete-enter, .list-complete-leave-to
+/* .list-complete-leave-active for below version 2.1.8 */ {
+  opacity: 0;
+  transform: translateY(30px);
+}
+.list-complete-leave-active {
+  position: absolute;
+}
+.ul_styHide {
+  max-height: 146px;
+  overflow: auto;
+  padding-right: 20px;
+}
+.liStyle_people {
+  background-color: #fff;
+  margin-right: 6px;
+  margin-bottom: 6px;
+  float: left;
+  border: 1px solid #999;
+  padding: 0px 10px;
+  font-size: 14px;
+  border-radius: 8px;
+  height: 30px;
+  color: #666;
+  line-height: 30px;
+  user-select: none;
+  transition: all 0.6s;
+  cursor: pointer;
+  overflow: hidden;
+  position: relative;
+  &:hover .iconStyle {
+    z-index: 1;
+    display: block;
+  }
+}
+.iconStyle {
+  display: none;
+  position: absolute;
+  top: 0;
+  right: 0;
+  text-align: center;
+  color: #f56c6c;
+  width: 100%;
+  line-height: 30px;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.6);
+}
 /deep/ .filter-tree {
   max-height: 600px;
   overflow-y: auto;

+ 326 - 25
src/views/education/notificationManageMent/notificationList/checkUser.vue

@@ -12,25 +12,111 @@
           <img src="@/assets/images/Close@2x.png" alt="" @click="clears" />
         </div>
       </div>
-      <div>
+      <div v-if="diavos">
         <div>
           <el-radio-group v-model="radio" @change="changeRadio">
             <el-radio :label="1">按学员</el-radio>
             <el-radio :label="2">按商品</el-radio>
             <el-radio :label="3">按班级</el-radio>
           </el-radio-group>
+          <span style="color: #999; float: right; font-size: 14px"
+            >注:切换选择类型将清空已选收件人</span
+          >
         </div>
-        <div class="max_height">
+        <div class="max_height" v-if="radio === 1">
           <el-tree
-            v-if="radio == 1"
+            :key="1"
             ref="tree1"
-            default-expand-all	
-            :props="props"
-            :load="loadNode"
+            default-expand-all
+            :props="props1"
+            :load="loadNode1"
             lazy
             node-key="userId"
             show-checkbox
-            @check-change="handleCheckChange"
+          >
+          </el-tree>
+        </div>
+        <div class="max_height" v-if="radio === 2">
+          <el-select
+            v-model="educationId"
+            placeholder="请选择教育类型"
+            size="small"
+            @change="changeEducationType"
+          >
+            <el-option
+              v-for="(items, indexs) in educationType"
+              :key="indexs"
+              :label="items.educationName"
+              :value="items.id"
+            ></el-option>
+          </el-select>
+          <el-select
+            v-if="educationId"
+            v-model="businessId"
+            placeholder="请选择业务层次"
+            size="small"
+            @change="changeBusinessId"
+          >
+            <el-option
+              v-for="(items, indexs) in newBusinessLevel"
+              :key="indexs"
+              :label="items.projectName + '-' + items.businessName"
+              :value="items.id"
+            ></el-option>
+          </el-select>
+          <el-tree
+            :key="2"
+            v-if="businessId && showBox"
+            ref="tree2"
+            :props="props2"
+            :load="loadNode2"
+            default-expand-all
+            lazy
+            node-key="costId"
+            show-checkbox
+            @check-change="activeChange"
+          >
+          </el-tree>
+        </div>
+        <div class="max_height" v-if="radio === 3">
+          <el-select
+            v-model="educationId"
+            placeholder="请选择教育类型"
+            size="small"
+            @change="changeEducationType"
+          >
+            <el-option
+              v-for="(items, indexs) in educationType"
+              :key="indexs"
+              :label="items.educationName"
+              :value="items.id"
+            ></el-option>
+          </el-select>
+          <el-select
+            v-if="educationId"
+            v-model="businessId"
+            placeholder="请选择业务层次"
+            size="small"
+            @change="changeBusinessId"
+          >
+            <el-option
+              v-for="(items, indexs) in newBusinessLevel"
+              :key="indexs"
+              :label="items.projectName + '-' + items.businessName"
+              :value="items.id"
+            ></el-option>
+          </el-select>
+          <el-tree
+            :key="3"
+            v-if="businessId && showBox"
+            ref="tree3"
+            :props="props2"
+            :load="loadNode3"
+            default-expand-all
+            lazy
+            node-key="costId"
+            show-checkbox
+            @check-change="activeChangeClass"
           >
           </el-tree>
         </div>
@@ -44,38 +130,70 @@
 </template>
 
 <script>
+import { mapGetters } from "vuex";
 export default {
   data() {
     return {
       diavos: false,
+      showBox: false,
+      educationId: "",
+      businessId: "",
+      newBusinessLevel: [],
       radio: "",
-      props: {
+      props1: {
         label: "realname",
         children: "children",
         isLeaf: "leaf",
       },
+      props2: {
+        label: "costomize",
+        children: "children",
+        isLeaf: "leaf",
+      },
       setKey: [],
     };
   },
-  watch: {},
+  computed: { ...mapGetters(["educationType"]) },
   methods: {
+    changeEducationType(id) {
+      this.businessId = "";
+      this.$api
+        .inquirebusinessList({ status: 1, educationId: id })
+        .then((res) => {
+          this.newBusinessLevel = res.rows;
+        });
+    },
+    changeBusinessId() {
+      this.showBox = false;
+      setTimeout(() => {
+        this.showBox = true;
+      }, 100);
+    },
     submit() {
-      let ary = this.$refs.tree1.getCheckedNodes(true);
-      let arrays = ary.map((item) => {
-        return item.userId;
-      });
-      this.$parent.backUserList(this.radio, arrays);
+      if (this.radio == 1) {
+        let ary = this.$refs.tree1.getCheckedNodes(true);
+        let arrays = ary.map((item) => {
+          return item.userId;
+        });
+        this.$parent.backUserList(this.radio, arrays);
+      }
+      if (this.radio == 2) {
+        this.$parent.backUserList(this.radio, this.setKey);
+      }
+      if (this.radio == 3) {
+        this.$parent.backUserList(this.radio, this.setKey);
+      }
       this.diavos = false;
-      // console.log(this.$refs.tree1.getCheckedNodes(true))
-      // this.$refs.tree1.setCheckedKeys([4,6])
     },
-    changeRadio(){
-        this.setKey = []
+    changeRadio() {
+      this.setKey = [];
+      this.educationId = "";
+      this.businessId = "";
     },
     /**
      * 按学员
      */
-    loadNode(node, resolve) {
+    loadNode1(node, resolve) {
       if (node.level === 0) {
         return resolve([{ realname: "所有人" }]);
       }
@@ -88,16 +206,198 @@ export default {
           resolve(res.rows);
         });
       }
-      if(node.level === 2){
-          resolve([])
+      if (node.level >= 2) {
+        resolve([]);
+      }
+    },
+    /**
+     * 按商品
+     */
+    loadNode2(node, resolve) {
+      if (node.level === 0) {
+        return resolve([
+          { costomize: "视频商品", type: 1, costId: -1 },
+          { costomize: "题库商品", type: 2, costId: -2 },
+        ]);
+      }
+      if (node.level === 1) {
+        if (node.data.type === 1) {
+          let arrays = [];
+          this.$api
+            .inquireGoods({
+              goodsType: 1,
+              status: 1,
+              businessId: this.businessId,
+            })
+            .then((res) => {
+              arrays = res.rows.map((item) => {
+                item.costomize = item.goodsName;
+                item.costId = item.goodsId;
+                return item;
+              });
+            })
+            .finally(() => {
+              resolve(arrays);
+            });
+        }
+        if (node.data.type === 2) {
+          let arrays = [];
+          this.$api
+            .inquireGoods({
+              goodsType: 2,
+              status: 1,
+              businessId: this.businessId,
+            })
+            .then((res) => {
+              arrays = res.rows.map((item) => {
+                item.costomize = item.goodsName;
+                item.costId = item.goodsId;
+                return item;
+              });
+            })
+            .finally(() => {
+              resolve(arrays);
+            });
+        }
+      }
+      if (node.level === 2) {
+        let arrays = [];
+        this.$api
+          .inquireOrderGoodsBuyGoodsUserList({ goodsId: node.data.goodsId })
+          .then((res) => {
+            console.log(res.rows);
+            arrays = res.rows.map((item) => {
+              console.log(item);
+              return {
+                userId: item.userId,
+                costomize: item.realname,
+                costId: `${node.data.goodsId}-${item.userId}`,
+                leaf: true,
+                getStatus: true,
+              };
+            });
+          })
+          .finally(() => {
+            arrays.forEach((item) => {
+              if (this.setKey.includes(item.userId)) {
+                this.$nextTick(() => {
+                  this.$refs.tree2.setChecked(item.costId, true);
+                });
+              }
+            });
+            resolve(arrays);
+          });
+      }
+      if (node.level > 2) {
+        resolve([]);
+      }
+    },
+    /**
+     * 按班级
+     */
+    loadNode3(node, resolve) {
+      if (node.level === 0) {
+        this.$api
+          .inquireGradegradeList({ status: 1, businessId: this.businessId })
+          .then((res) => {
+            let arrays = res.rows.map((item) => {
+              item.costomize = item.className;
+              item.costId = item.gradeId;
+              return item;
+            });
+            resolve(arrays);
+          });
+      }
+      if (node.level === 1) {
+        let arrays = [];
+        this.$api
+          .inquireGradegradelistGrade({ gradeId: node.data.gradeId })
+          .then((res) => {
+            console.log(res.rows);
+            arrays = res.rows.map((item) => {
+              return {
+                userId: item.userId,
+                costomize: item.realName,
+                costId: `${node.data.gradeId}-${item.userId}`,
+                leaf: true,
+                getStatus: true,
+              };
+            });
+          })
+          .finally(() => {
+            arrays.forEach((item) => {
+              if (this.setKey.includes(item.userId)) {
+                this.$nextTick(() => {
+                  this.$refs.tree3.setChecked(item.costId, true);
+                });
+              }
+            });
+            resolve(arrays);
+          });
+      }
+      if (node.level > 1) {
+        resolve([]);
+      }
+    },
+    /**
+     * 商品学员发生勾选变化触发
+     */
+    activeChange(data, status, bool) {
+      if (data.getStatus) {
+        this.changeDataList(data.userId, status);
+      }
+    },
+    changeDataList(userId, status) {
+      let newArrays = this.$refs.tree2.root.childNodes;
+      newArrays.forEach((item) => {
+        item.childNodes.forEach((items) => {
+          items.childNodes.forEach((it) => {
+            if (status && it.data.userId === userId) {
+              this.$refs.tree2.setChecked(it.data.costId, true);
+              if (!this.setKey.includes(it.data.userId)) {
+                this.setKey.push(it.data.userId);
+              }
+            }
+            if (!status && it.data.userId === userId) {
+              this.$refs.tree2.setChecked(it.data.costId, false);
+              this.setKey = this.setKey.filter((its) => {
+                return its !== it.data.userId;
+              });
+            }
+          });
+        });
+      });
+    },
+    /**
+     * 班级学员发生勾选变化触发
+     */
+    activeChangeClass(data, status, bool) {
+      if (data.getStatus) {
+        this.changeDataListClass(data.userId, status);
       }
     },
-    handleCheckChange(data, checked, indeterminate) {
-      console.log(data, checked, indeterminate);
+    changeDataListClass(userId, status) {
+      let newArrays = this.$refs.tree3.root.childNodes;
+      newArrays.forEach((item) => {
+        item.childNodes.forEach((it) => {
+          if (status && it.data.userId === userId) {
+            this.$refs.tree3.setChecked(it.data.costId, true);
+            if (!this.setKey.includes(it.data.userId)) {
+              this.setKey.push(it.data.userId);
+            }
+          }
+          if (!status && it.data.userId === userId) {
+            this.$refs.tree3.setChecked(it.data.costId, false);
+            this.setKey = this.setKey.filter((its) => {
+              return its !== it.data.userId;
+            });
+          }
+        });
+      });
     },
     diavosFun(int, item) {
       this.radio = int;
-      this.setKey = item;
+      this.setKey = JSON.parse(JSON.stringify(item));
       this.diavos = true;
     },
     clears() {
@@ -110,7 +410,8 @@ export default {
 <style lang="less" scoped>
 .max_height {
   margin-top: 14px;
-  max-height: 700px;
+  min-height: 100px;
+  max-height: 650px;
   overflow: auto;
 }
 /deep/.el-button {

+ 86 - 467
src/views/education/notificationManageMent/notificationList/edit/index.vue

@@ -18,14 +18,29 @@
             </el-select>
           </el-form-item>
           <el-form-item label="收件人:" prop="userId">
-            <ul>
-              <li
-                style="float: left; margin-right: 6px"
-                v-for="(item, index) in listData.userId"
-                :key="index"
-              >
-                {{ filterUserName(item) }}
-              </li>
+            <el-button size="mini" type="primary" @click="checkUser"
+              >选择学员</el-button
+            ><el-button
+              v-if="listData.userId.length"
+              size="mini"
+              type="danger"
+              @click="listData.userId = []"
+              >清空学员</el-button
+            >
+            <ul class="ul_styHide">
+              <transition-group name="list-complete" tag="p">
+                <li
+                  class="liStyle_people"
+                  v-for="(item, index) in listData.userId"
+                  :key="index"
+                >
+                  {{ filterUserName(item) }}
+                  <i
+                    class="iconStyle el-icon-error"
+                    @click="listData.userId.splice(index, 1)"
+                  ></i>
+                </li>
+              </transition-group>
               <div style="clear: both"></div>
             </ul>
           </el-form-item>
@@ -161,103 +176,6 @@
           </div>
         </div>
       </el-col>
-      <el-col :span="8">
-        <header>
-          收件人
-          <span style="color: red; font-size: 14px"
-            >已选择{{ listData.userId.length }}</span
-          >
-        </header>
-        <div>
-          <div style="margin: 12px 0px">
-            <el-button
-              size="mini"
-              :type="active == 1 ? 'primary' : ''"
-              @click="activeBtns(1)"
-              >班级选择</el-button
-            >
-            <el-button
-              size="mini"
-              :type="active == 2 ? 'primary' : ''"
-              @click="activeBtns(2)"
-              >未分班学员</el-button
-            >
-            <el-button
-              size="mini"
-              :type="active == 3 ? 'primary' : ''"
-              @click="activeBtns(3)"
-              >层级选择</el-button
-            >
-          </div>
-          <div v-if="active === 1">
-            <el-input
-              style="margin-bottom: 10px"
-              size="small"
-              placeholder="输入关键字进行过滤"
-              v-model="filterText"
-            >
-            </el-input>
-            <div v-if="loadingBox" style="text-align: center">
-              <i class="el-icon-loading"></i
-              ><span style="font-size: 13px; margin-left: 8px"
-                >数据量大,正在加载中...</span
-              >
-            </div>
-            <el-tree
-              v-else
-              class="filter-tree"
-              :data="data"
-              :props="defaultProps"
-              node-key="onlyId"
-              show-checkbox
-              :filter-node-method="filterNode"
-              ref="tree"
-              @check-change="activeChange"
-            >
-            </el-tree>
-          </div>
-          <div v-if="active === 2">
-            <el-input
-              style="margin-bottom: 10px"
-              size="small"
-              placeholder="输入关键字进行过滤"
-              v-model="filterTextTwo"
-            >
-            </el-input>
-            <el-tree
-              class="filter-tree"
-              :data="data1"
-              :props="defaultProps"
-              node-key="onlyId"
-              show-checkbox
-              :filter-node-method="filterNode"
-              ref="tree1"
-              @check-change="activeChangeTwo"
-            >
-            </el-tree>
-          </div>
-          <div v-if="active === 3">
-            <el-input
-              style="margin-bottom: 10px"
-              size="small"
-              placeholder="输入关键字进行过滤"
-              v-model="filterTextThree"
-            >
-            </el-input>
-            <el-tree
-              class="filter-tree"
-              :data="data2"
-              :props="defaultProps"
-              node-key="onlyId"
-              show-checkbox
-              :filter-node-method="filterNode"
-              ref="tree2"
-              @check-change="activeChangeThree"
-            >
-            </el-tree>
-          </div>
-        </div>
-      </el-col>
       <el-col :span="24" style="text-align: center; margin-top: 14px">
         <el-button @click="backPage">取消</el-button>
         <el-button type="primary" @click="submit('listData', 1)"
@@ -471,16 +389,18 @@
       </span>
     </el-dialog>
     <bankInfo ref="bankInfo" />
+    <check-user ref="checkUser" />
   </div>
 </template>
 
 <script>
+import checkUser from "../checkUser";
 import bankInfo from "@/components/bankInfo";
 import { mapGetters } from "vuex";
 import Editor from "@/components/Editor";
 export default {
   name: "NotificationEdit",
-  components: { bankInfo, Editor },
+  components: { bankInfo, Editor, checkUser },
   data() {
     return {
       dialogCG: false,
@@ -544,6 +464,7 @@ export default {
       data: [],
       data1: [],
       data2: [],
+      goodsList: [],
       dataCourse: [], //商品课程树形
       active: 1,
       defaultProps: {
@@ -588,9 +509,6 @@ export default {
     },
   },
   watch: {
-    filterText(val) {
-      this.$refs.tree.filter(val);
-    },
     "informCourseAdd.educationId"(v) {
       this.informCourseAdd = {
         educationId: v,
@@ -633,6 +551,16 @@ export default {
     });
   },
   methods: {
+    backUserList(int, arr) {
+      this.listData.userFrom = int;
+      this.listData.userId = arr;
+    },
+    checkUser() {
+      this.$refs.checkUser.diavosFun(
+        this.listData.userFrom,
+        this.listData.userId
+      );
+    },
     seeBank(item) {
       this.$refs.bankInfo.$emit("childmethod", item);
     },
@@ -646,14 +574,11 @@ export default {
           arys.informCourseAddBo = arys.informCourseVo;
           arys.informExamAddBo = arys.informExamVo;
           this.listData = arys;
-          setTimeout(() => {
-            this.activeOne();
-          }, 200);
         })
         .finally(() => {
-          this.$nextTick(()=>{
+          this.$nextTick(() => {
             this.$modal.closeLoading();
-          })
+          });
         });
     },
     delCourse(int) {
@@ -883,125 +808,6 @@ export default {
     closeFL() {
       this.dialogVisibleFL = false;
     },
-    activeBtns(int) {
-      this.active = int;
-      if (int === 1) {
-        this.activeOne();
-      }
-      if (int === 2) {
-        this.activeTwo();
-      }
-      if (int === 3) {
-        this.activeThree();
-      }
-    },
-    activeChange(a, isStatus) {
-      if (isNaN(a.onlyId)) {
-        if (isStatus) {
-          this.data[0].children.map((item) => {
-            item.children.map((items) => {
-              if (items.userId == a.onlyId.split("-").map(Number)[1]) {
-                this.$refs.tree.setChecked(items.onlyId, true);
-                if (
-                  this.listData.userId.indexOf(
-                    a.onlyId.split("-").map(Number)[1]
-                  ) == -1
-                ) {
-                  this.listData.userId.push(a.onlyId.split("-").map(Number)[1]);
-                }
-              }
-            });
-          });
-        } else {
-          this.data[0].children.map((item) => {
-            item.children.map((items) => {
-              if (items.userId == a.onlyId.split("-").map(Number)[1]) {
-                this.$refs.tree.setChecked(items.onlyId, false);
-                if (
-                  this.listData.userId.indexOf(
-                    a.onlyId.split("-").map(Number)[1]
-                  ) !== -1
-                ) {
-                  this.listData.userId.splice(
-                    this.listData.userId.indexOf(
-                      a.onlyId.split("-").map(Number)[1]
-                    ),
-                    1
-                  );
-                }
-              }
-            });
-          });
-        }
-      }
-    },
-    activeChangeTwo(a, isStatus) {
-      if (!isNaN(a.onlyId)) {
-        if (isStatus && this.listData.userId.indexOf(a.onlyId) == -1) {
-          this.listData.userId.push(a.onlyId);
-        }
-        if (!isStatus && this.listData.userId.indexOf(a.onlyId) !== -1) {
-          this.listData.userId.splice(
-            this.listData.userId.indexOf(a.onlyId),
-            1
-          );
-        }
-      }
-    },
-    activeChangeThree(a, isStatus) {
-      if (a.onlyId.split("-").map(Number).length === 4) {
-        if (isStatus) {
-          this.data2[0].children.map((item) => {
-            item.children.map((items) => {
-              items.children.map((itemsxs) => {
-                itemsxs.children.map((j) => {
-                  if (j.userId == a.onlyId.split("-").map(Number)[3]) {
-                    this.$refs.tree2.setChecked(j.onlyId, true);
-                    if (
-                      this.listData.userId.indexOf(
-                        a.onlyId.split("-").map(Number)[3]
-                      ) == -1
-                    ) {
-                      this.listData.userId.push(
-                        a.onlyId.split("-").map(Number)[3]
-                      );
-                    }
-                  }
-                });
-              });
-            });
-          });
-        } else {
-          this.data2[0].children.map((item) => {
-            item.children.map((items) => {
-              items.children.map((itemsxs) => {
-                itemsxs.children.map((j) => {
-                  if (j.userId == a.onlyId.split("-").map(Number)[3]) {
-                    this.$refs.tree2.setChecked(j.onlyId, false);
-                    if (
-                      this.listData.userId.indexOf(
-                        a.onlyId.split("-").map(Number)[3]
-                      ) !== -1
-                    ) {
-                      this.listData.userId.splice(
-                        this.listData.userId.indexOf(
-                          a.onlyId.split("-").map(Number)[3]
-                        ),
-                        1
-                      );
-                    }
-                  }
-                });
-              });
-            });
-          });
-        }
-      }
-    },
-    filterNode(value, data) {
-      if (!value) return true;
-      return data.onlyName.indexOf(value) !== -1;
-    },
     //返回上一页
     backPage() {
       this.$store.dispatch("tagsView/delView", this.$route).then((res) => {
@@ -1115,243 +921,9 @@ export default {
         this.$api.inquiresystemclassifylist({ status: 1 }).then((res) => {
           this.options = this.handleTree(res.rows, "classifyId", "parentId");
         });
-        await this.get1()
-        await this.get2();
-        await this.get3();
         resolve();
       });
     },
-    recurFunc(x, y, total) {
-      this.$api
-        .inquiresysteminformlistGrade({ status: 1, pageNum: x, pageSize: y })
-        .then((res) => {
-          res.rows.forEach((item) => {
-            item.onlyId = item.gradeId;
-            item.onlyName = item.className;
-            item.children = item.classGradeStudentVos;
-            item.children.forEach((items) => {
-              items.onlyId = items.gradeId + "-" + items.userId;
-              items.onlyName = items.realName;
-            });
-          });
-          this.arrays = this.arrays.concat(res.rows);
-          if (this.arrays.length == total) {
-            this.data = [
-              {
-                onlyId: 99999999,
-                onlyName: "所有班级",
-                children: this.arrays,
-              },
-            ];
-            this.activeOne();
-            this.loadingBox = false;
-          }
-        });
-    },
-    get1() {
-      return new Promise((resolve, reject) => {
-        this.$api
-          .inquiresysteminformlistGrade({ status: 1, pageNum: 1, pageSize: 1 })
-          .then((res) => {
-            let total = res.total;
-            let pagesize = 20; // 一页多少条
-            for (let i = 0; i < Math.ceil(total / pagesize); i++) {
-              this.$api
-                .inquiresysteminformlistGrade({
-                  status: 1,
-                  pageNum: i + 1,
-                  pageSize: pagesize,
-                })
-                .then((res) => {
-                  res.rows.forEach((item) => {
-                    item.onlyId = item.gradeId;
-                    item.onlyName = item.className;
-                    item.children = item.classGradeStudentVos;
-                    item.children.forEach((items) => {
-                      items.onlyId = items.gradeId + "-" + items.userId;
-                      items.onlyName = items.realName;
-                    });
-                  });
-                  this.arrays = this.arrays.concat(res.rows);
-                  if (this.arrays.length == total) {
-                    this.data = [
-                      {
-                        onlyId: 99999999,
-                        onlyName: "所有班级",
-                        children: this.arrays,
-                      },
-                    ];
-                    this.loadingBox = false;
-                    this.activeOne();
-                    resolve();
-                  }
-                });
-            }
-          });
-      });
-    },
-    get2() {
-      return new Promise((resolve, reject) => {
-        this.$api
-          .inquiresysteminformlistGradeStudy({ status: 1 })
-          .then((res) => {
-            for (let i = 0; i < res.rows.length; i++) {
-              res.rows[i].onlyId = res.rows[i].userId;
-              res.rows[i].onlyName = res.rows[i].realName;
-            }
-            // res.rows.forEach((item, index) => {
-            //   item.onlyId = item.userId;
-            //   item.onlyName = item.realName;
-            // });
-            this.data1 = [
-              {
-                onlyId: "1-1",
-                onlyName: "所有人",
-                children: res.rows,
-              },
-            ];
-            resolve();
-          });
-      });
-    },
-    get3() {
-      return new Promise((resolve, reject) => {
-        this.$api
-          .inquiresysteminformlistGradeService({ status: 1 })
-          .then((res) => {
-            for (let i = 0; i < res.rows.length; i++) {
-              res.rows[i].onlyId = res.rows[i].id + "";
-              res.rows[i].onlyName = res.rows[i].educationName;
-              res.rows[i].children = res.rows[i].courseUserProjectTypeVo;
-              for (let k = 0; k < res.rows[i].children.length; k++) {
-                res.rows[i].children[k].onlyName =
-                  res.rows[i].children[k].projectName;
-                res.rows[i].children[k].onlyId =
-                  res.rows[i].children[k].educationId +
-                  "-" +
-                  res.rows[i].children[k].id;
-                res.rows[i].children[k].children =
-                  res.rows[i].children[k].courseUserBusiness;
-                for (
-                  let j = 0;
-                  j < res.rows[i].children[k].children.length;
-                  j++
-                ) {
-                  res.rows[i].children[k].children[j].onlyId =
-                    res.rows[i].children[k].children[j].educationId +
-                    "-" +
-                    res.rows[i].children[k].children[j].projectId +
-                    "-" +
-                    res.rows[i].children[k].children[j].id;
-                  res.rows[i].children[k].children[j].onlyName =
-                    res.rows[i].children[k].children[j].businessName;
-                  res.rows[i].children[k].children[j].children =
-                    res.rows[i].children[k].children[j].classGradeStudentVos;
-                  for (
-                    let p = 0;
-                    p < res.rows[i].children[k].children[j].children.length;
-                    p++
-                  ) {
-                    res.rows[i].children[k].children[j].children[p].onlyName =
-                      res.rows[i].children[k].children[j].children[p].realName;
-                    res.rows[i].children[k].children[j].children[p].onlyId =
-                      res.rows[i].children[k].children[j].onlyId +
-                      "-" +
-                      res.rows[i].children[k].children[j].children[p].userId;
-                  }
-                }
-              }
-            }
-
-            // res.rows.forEach((item) => {
-            //   item.onlyId = item.id + "";
-            //   item.onlyName = item.educationName;
-            //   item.children = item.courseUserProjectTypeVo;
-            //   item.children.forEach((items) => {
-            //     items.onlyName = items.projectName;
-            //     items.onlyId = items.educationId + "-" + items.id;
-            //     items.children = items.courseUserBusiness;
-            //     items.children.forEach((itemsxs) => {
-            //       itemsxs.onlyId =
-            //         itemsxs.educationId +
-            //         "-" +
-            //         itemsxs.projectId +
-            //         "-" +
-            //         itemsxs.id;
-            //       itemsxs.onlyName = itemsxs.businessName;
-            //       itemsxs.children = itemsxs.classGradeStudentVos;
-            //       itemsxs.children.forEach((j) => {
-            //         j.onlyName = j.realName;
-            //         j.onlyId = itemsxs.onlyId + "-" + j.userId;
-            //       });
-            //     });
-            //   });
-            // });
-            this.data2 = [
-              {
-                onlyId: "999999999",
-                onlyName: "所有层级",
-                children: res.rows,
-              },
-            ];
-            resolve();
-          });
-      });
-    },
-
-    // int===1
-    activeOne() {
-      this.$nextTick(() => {
-        this.data[0].children.forEach((item, index) => {
-          item.children.forEach((items) => {
-            if (this.listData.userId.length) {
-              this.listData.userId.map((itemsxs) => {
-                if (itemsxs == items.userId) {
-                  this.$refs.tree.setChecked(items.onlyId, true);
-                }
-              });
-            }
-          });
-        });
-      });
-    },
-    // int===2
-    activeTwo() {
-      this.$nextTick(() => {
-        this.data1.forEach((item, index) => {
-          item.children.forEach((items) => {
-            if (this.listData.userId.length) {
-              this.listData.userId.map((itemsxs) => {
-                if (itemsxs == items.userId) {
-                  this.$refs.tree1.setChecked(items.onlyId, true);
-                }
-              });
-            }
-          });
-        });
-      });
-    },
-    // int===3
-    activeThree() {
-      var self = this;
-      self.$nextTick(() => {
-        self.data2[0].children.forEach((item, index) => {
-          item.children.forEach((items) => {
-            items.children.forEach((itemsxs) => {
-              itemsxs.children.forEach((j) => {
-                if (self.listData.userId.length) {
-                  self.listData.userId.map((k) => {
-                    if (k == j.userId) {
-                      self.$refs.tree2.setChecked(j.onlyId, true);
-                    }
-                  });
-                }
-              });
-            });
-          });
-        });
-      });
-    },
     //清空时间
     changeIssueStatus(v) {
       this.listData.issueTime = "";
@@ -1371,6 +943,53 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.list-complete-enter, .list-complete-leave-to
+/* .list-complete-leave-active for below version 2.1.8 */ {
+  opacity: 0;
+  transform: translateY(30px);
+}
+.list-complete-leave-active {
+  position: absolute;
+}
+.ul_styHide {
+  max-height: 146px;
+  overflow: auto;
+  padding-right: 20px;
+}
+.liStyle_people {
+  background-color: #fff;
+  margin-right: 6px;
+  margin-bottom: 6px;
+  float: left;
+  border: 1px solid #999;
+  padding: 0px 10px;
+  font-size: 14px;
+  border-radius: 8px;
+  height: 30px;
+  color: #666;
+  line-height: 30px;
+  user-select: none;
+  transition: all .6s;
+  cursor: pointer;
+  overflow: hidden;
+  position: relative;
+  &:hover .iconStyle {
+    z-index: 1;
+    display: block;
+  }
+}
+.iconStyle {
+  display: none;
+  position: absolute;
+  top: 0;
+  right: 0;
+  text-align: center;
+  color: #f56c6c;
+  width: 100%;
+  line-height: 30px;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.6);
+}
 /deep/ .filter-tree {
   max-height: 600px;
   overflow-y: auto;