소스 검색

渠道家庭人员管理:点击设置,显示之前已选择的人员信息,通过增加勾选、取消勾选,设置填报人员和负责人。

wangguangping 3 년 전
부모
커밋
611ca2fb36
3개의 변경된 파일242개의 추가작업 그리고 15개의 파일을 삭제
  1. 155 0
      src/components/deptTreeUserNew.vue
  2. 70 13
      src/pages/main/memberFamily/haveInHand.vue
  3. 17 2
      src/pages/main/memberFamily/index.vue

+ 155 - 0
src/components/deptTreeUserNew.vue

@@ -0,0 +1,155 @@
+<template>
+    <div class="treebox" v-loading="loading">
+        <el-tree :highlight-current="true" :check-strictly="true" ref="tree" @check-change="handleCheckChange"
+            :data="treeList" node-key="id" :default-checked-keys="defaultListc" :default-expanded-keys="defaultListc"
+            @node-click="handleNodeClick">
+            <span class="custom-tree-node" slot-scope="{ node, data }" @click="cs(node)">
+                <em style="display: inline-block;width: 20px;" v-if="node.data.haveUserFlag == 'N'&& node.data.children.length == 0"></em>
+                <i class="el-icon-caret-right" v-if="node.data.haveUserFlag == 'Y' && node.data.children.length == 0"></i>
+                <el-checkbox style="margin-right: 10px" v-model="node.checked" v-if="node.data.type == 1"></el-checkbox>
+                <span>{{ node.label }}</span>
+            </span>
+        </el-tree>
+    </div>
+</template>
+
+<script>
+    export default {
+        props: ["defaultList", "type", "closeList","fillLists"],
+        data() {
+            return {
+                treeList: [],
+                opt: [],
+                defaultProps: {
+                    children: "children",
+                    label: "label",
+                },
+                defaultListc: [],
+                loading:false
+            };
+        },
+        methods: {
+            
+            cs(v){
+                // console.log(v)
+                
+            },
+            getTree(v) {
+                this.loading = true;
+                this.$http({
+                    url: "/sysmgr/csysdept/queryAllList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        parentorgid: v,
+                    },
+                }).then((res) => {
+                    this.treeList = res.data;
+                    this.loading = false;
+                });
+            },
+            handleCheckChange(v) {
+                let opt = [];
+                let list = this.$refs.tree.getCheckedNodes();
+                for (let i = 0; i < list.length; i++) {
+                    if (list[i].type == 1) {
+                        opt.push({
+                            receiveNo: list[i].loginNoStr,
+                            receiveName: list[i].label,
+                            deptName: list[i].displayname,
+                            deptCode: list[i].groupId,
+                            id: list[i].id,
+                            type: list[i].type,
+                            label: list[i].label
+                        });
+                    }
+                }
+                this.$emit("treeCheck", opt);
+            },
+           async handleNodeClick(v,node) {
+                let s = false;
+                if (v.children && v.children.length == 0) {
+                    s = true;
+                }
+                if (v.type) {
+                    return;
+                }
+                if (
+                    v.children &&
+                    v.children.length > 0 &&
+                    v.children[v.children.length - 1].type == 1
+                ) {
+                    return;
+                }
+                
+                await this.$http({
+                    url: "/sysmgr/sysuserinfo/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        groupId: v.o,
+                    },
+                }).then((res) => {
+                    res.data.forEach((item) => {
+                       v.children.push({
+                            id: item.id,
+                            label: item.loginNameStr,
+                            type: 1,
+                            displayname: v.displayname,
+                            groupId: item.groupId,
+                            loginNoStr: item.loginNoStr,
+                        });
+                       
+                    });
+                
+                    
+                });
+                 
+                    node.childNodes.forEach(m=>{
+                         this.fillLists.forEach(n=>{
+                            if(m.data.loginNoStr == n.fillNo){
+                                m.checked = true
+                            }
+                         })
+                     })
+                     
+                for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
+                    if (s && v.o == this.$refs.tree.store._getAllNodes()[i].data.o) {
+                        this.$refs.tree.store._getAllNodes()[i].expanded = true;
+                        return;
+                    }
+                }
+            },
+        },
+        created() {
+            this.getTree();
+            this.defaultListc = this.defaultList;
+        },
+        watch: {
+            type() {
+                this.defaultListc = this.defaultList;
+                this.$forceUpdate();
+            },
+            defaultList() {
+                this.$forceUpdate();
+            },
+            closeList() {
+                this.$refs.tree.setCheckedNodes(this.closeList);
+            },
+        },
+    };
+</script>
+
+<style scoped lang="scss">
+    .el-icon-caret-right{
+        color: #ccc;
+        margin:0 5px;
+    }
+    .treebox {
+        border: 1px solid #ddd;
+    }
+</style>

+ 70 - 13
src/pages/main/memberFamily/haveInHand.vue

@@ -73,7 +73,7 @@
 
                 <el-form-item class="info-line online" v-if="!disableStatus">
                     <span>填报人</span>
-                    <deptTree :closeList="closeList" class="tree" @treeCheck="treeCheck">
+                    <deptTree :closeList="closeList" class="tree" @treeCheck="treeCheck" :defaultList="defaultList" :fillLists="fillLists">
                     </deptTree>
                     <div class="tree treeUser">
                         <p v-for="(item,index) in treeList" :key="index">{{item.receiveName}}
@@ -127,7 +127,7 @@
     import mySearch from "../../../components/search.vue";
     import myMessage from "../../../components/myMessage.vue"
     import toolList from '../../../components/toolList'
-    import deptTree from "../../../components/deptTreeUser.vue"
+    import deptTree from "../../../components/deptTreeUserNew.vue"
     import deptTreep from "../../../components/deptTreeP.vue"
 
     export default {
@@ -186,7 +186,8 @@
                 deptList: [],
                 companyFlag: '',
                 dialogStatusp: false,
-                choone: {}
+                choone: {},
+                fillLists:[]
             }
         },
         methods: {
@@ -219,9 +220,10 @@
                             fillName: this.treeList[i].label,
                         })
                     }
+
+                    JSON.parse(JSON.stringify(param.fillList))
                     // for (let i = 0; i < this.treeList.length; i++) {
                     //     for (let ii = 0; ii < this.treeListp.length; ii++) {
-                    //         console.log(this.treeList);
                     //         if (this.treeListp[i].loginNoStr == this.treeList[ii].receiveNo) {
                     //             this.$message({
                     //                 message: '负责人和填报人重复!',
@@ -275,16 +277,16 @@
                                 type: 'success'
                             });
                             _this.infolist = {};
-                            _this.treeList = [];
-                            _this.treeListp = [];
+                            // _this.treeList = [];
+                            // _this.treeListp = [];
                             _this.dialogStatus = false;
                             _this.getList({}, 1);
                         }
                     });
                 } else if (v === 2) {
                     this.infolist = {};
-                    this.treeList = [];
-                    this.treeListp = [];
+                    // this.treeList = [];
+                    // this.treeListp = [];
                     this.dialogStatus = false;
                 }
             },
@@ -360,7 +362,6 @@
                     this.treeListp.splice(x, 1)
                 } else {
                     this.treeListp.push(v);
-                    // console.log(this.treeListp)
                 }
             },
             jumpfw(v) {
@@ -373,7 +374,7 @@
                 this.setabList("填报进度跟踪", "/reportProgress?woNo=" + v.woNo);
             },
             jumpjd(v) {
-                console.log(v.receiverGroupName)
+                // console.log(v.receiverGroupName)
                 this.$router.push({
                     path: "/speedOfProgress",
                     query: {
@@ -444,7 +445,7 @@
                 this.getList(this.params, this.pageSize);
             },
             //申请
-            dialogCheck(v, n) {
+             dialogCheck(v, n) {
                 this.choone = n;
                 if (v === 1) {
                     this.titname = '查看';
@@ -454,6 +455,7 @@
                     this.disableStatus = false;
                 }
                 this.dialogStatus = true;
+                
                 this.$http({
                     url: "/market/cMemberWo/queryMemeberWoInfo",
                     method: "post",
@@ -468,11 +470,35 @@
                     this.infolist.time = [res.data.startTime, res.data.endTime];
                     this.infolist.opNo = this.userInfo.loginNo;
                     this.infolist.opName = this.userInfo.loginName;
-
+                    // this.defaultList = []
+                    // this.defaultList.push({
+                    //     deptCode: "00440089005200000000",
+                    //     deptName: "中国移动通信集团黑龙江有限公司\\哈尔滨分公司\\综合部",
+                    //     id: "694817329862230016",
+                    //     label: "郭有为",
+                    //     receiveName: "郭有为",
+                    //     receiveNo: "guoyouwei",
+                    //     type: 1,
+                    // })
+
+                    // this.treeList = this.defaultList
+                    this.fillLists = []
+                    this.infolist.fillList.forEach(item=>{
+                        this.fillLists.push({
+                            fillName: item.fillName,
+                            fillNo: item.fillNo,
+                            receiveNo: item.fillNo,
+                            receiveName:item.fillName,
+                            label: item.fillName
+                        })
+                        
+                    })
+                    this.treeList = this.fillLists
                     //地市范围
                     if (this.companyFlag == '0') {
                         this.$http({
                             url: "/sysmgr/csysdept/queryRegionDeptList",
+                            async:false,
                             method: "post",
                             headers: {
                                 "Content-Type": "application/json",
@@ -480,11 +506,21 @@
                             data: {},
                         }).then((res) => {
                             this.deptList = res.data[0].children;
+                            this.deptList.forEach(item=>{
+                                this.infolist.dutyList.forEach(m=>{
+                                    if(m.groupId == item.o){
+                                        
+                                        item = Object.assign(item,{loginNoStr: m.dutyNo, loginNameStr: m.dutyName})
+                                        this.treeListp.push(item);
+                                    }
+                                })
+                            })
                         });
                     } else {
-                        this.$http({
+                         this.$http({
                             url: "/sysmgr/csysdept/queryListByParent",
                             method: "post",
+                            async:false,
                             headers: {
                                 "Content-Type": "application/json",
                             },
@@ -493,8 +529,19 @@
                             },
                         }).then((res) => {
                             this.deptList = res.data;
+                            this.deptList.forEach(item=>{
+                                this.infolist.dutyList.forEach(m=>{
+                                    if(m.groupId == item.o){
+                                        item = Object.assign(item,{loginNoStr: m.dutyNo, loginNameStr: m.dutyName})
+                                        this.treeListp.push(item);
+                                    }
+                                })
+                            })
+
+                            
                         });
                     }
+                    
                     //区县进入查人
                     // if(this.companyFlag == '2'){
                     //     this.$http({
@@ -579,6 +626,16 @@
         },
         mounted() {
             this.getUser();
+            // this.defaultList.push({
+            //             deptCode: "",
+            //             deptName: "",
+            //             id: "",
+            //             label: "",
+            //             receiveName: "",
+            //             receiveNo: "",
+            //             type: 1,
+            //             checked:true
+            //         })
         },
         created() {
 

+ 17 - 2
src/pages/main/memberFamily/index.vue

@@ -3,12 +3,25 @@
 		<div class="container">
 			<div class="container-box">
 				<div class="adv-type">
-					<div v-for="item in typeList" :key="item.dataCode" @click="advmaterial(item)">
+					<!-- <div v-for="item in typeList" :key="item.dataCode" @click="advmaterial(item)" >
 						<div v-if="(roleStatus <= 1 && item.dataName=='信息汇总') || (roleStatus < 4 && item.dataName=='信息填报')">
 							<span><i class="el-icon-folder-opened"></i></span>
 							<span>{{item.dataName}}</span>
 						</div>
 
+					</div> -->
+					<div @click="advmaterial(typeList[0])" v-if="roleStatus < 4">
+						
+							<span><i class="el-icon-folder-opened"></i></span>
+							<span>信息填报</span>
+						
+
+					</div>
+					<div @click="advmaterial(typeList[1])" v-if="roleStatus <= 1">
+						
+							<span><i class="el-icon-folder-opened"></i></span>
+							<span>信息汇总</span>
+					
 					</div>
 				</div>
 				<div class="adv-box">
@@ -173,7 +186,7 @@
 						})
 					}
 					param.fillList = [];
-                    console.log(this.treeList)
+                    // console.log(this.treeList)
 					for (let i = 0; i < this.treeList.length; i++) {
 						param.fillList.push({
 							fillNo:this.treeList[i].receiveNo,
@@ -410,6 +423,7 @@
 							sts: 0
 						},
 					}).then((res) => {
+						console.log(res.data.body);
 						res.data.body.forEach(item=>{
 							newArr.push(...item.dutyNo.split(","));
 						})
@@ -435,6 +449,7 @@
 							sts: 0
 						},
 					}).then((res) => {
+						
 						res.data.body.forEach(item=>{
 							newArr.push(...item.dutyNo.split(","));
 						})