Bläddra i källkod

Merge branch 'master' of http://git.tjyourong.com.cn/ctop/adsp-vue

zhuxinbo 5 år sedan
förälder
incheckning
6bfab21df7

+ 21 - 7
src/views/modules/BatchCreate/MultiCheckBox.vue

@@ -95,6 +95,7 @@ import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
                     let num = this.checkedList.indexOf(element.value)
                     if (num > -1) {
                         this.checkedList.splice(num, 1)
+
                     }
                     let n=this.labelList.indexOf(element.name)
                     if (n > -1) {
@@ -103,10 +104,17 @@ import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
                 }
             });
            
-            console.log(this.checkedList.length,this.plainOptions.length)
-            console.log(this.checkedList,this.plainOptions.length)
+            // console.log(this.checkedList.length,this.plainOptions.length)
+            // console.log(this.checkedList,this.plainOptions.length)
+
             this.indeterminate = !!this.checkedList.length && this.checkedList.length < this.plainOptions.length
             this.checkAll = this.checkedList.length === this.plainOptions.length && this.plainOptions.length!=0
+
+            this.$emit('getCheckedList',{
+              curLayerNum:this.curLayerNum,
+              checkList:this.checkedList,
+              currentList:this.curLayerNum>1? this.listArr : []
+            })
           },
             deep: true
       },
@@ -128,9 +136,9 @@ import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
             })
           } else if (n == false) {
             this.checkAll = false
-            this.listArr.forEach((item, index) => {
-              item.checked = n
-            })
+            // this.listArr.forEach((item, index) => {
+            //   item.checked = n
+            // })
             this.checkedList = []
           }
         },
@@ -181,16 +189,22 @@ import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
         if (this.checkedList.length) {
           this.listArr.forEach(item => {
             this.$set(item, 'checked', true)
+            this.$set(item, 'indeterminates', false)
           })
         } else {
           this.listArr.forEach(item => {
             this.$set(item, 'checked', false)
+            this.$set(item, 'indeterminate', false)
           })
         }
       
 
         this.listItemClick(event,{
-            name:'全选',value:'all',checked:e.target.checked,indeterminates:false
+            name:'全选',
+            value:'all',
+            checked:e.target.checked,
+            indeterminates:false,
+            parentCode:this.listArr[0].parentCode
         })
       },
       
@@ -203,7 +217,7 @@ import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
           curLayerNum:this.curLayerNum,
           checkList:this.checkedList,
           plainOptions:this.plainOptions,
-          labelList:this.labelList
+          
         })
       },
      

+ 67 - 14
src/views/modules/BatchCreate/TouTiaoBatch.vue

@@ -17,23 +17,31 @@
         </keep-alive>
         <div class="topOptions">
             <span class="OptinItem">
-                <a-select  style="width: 120px" @change="statusChange" placeholder="请选择状态">
-                    <a-select-option value="open" >
-                        开
+                <Treeselect :appId.sync="accountID" :multiple="false" request="2,4" ref="treeSelect" style="margin-bottom:8px " />
+            </span>
+            <span class="OptinItem">
+                <a-select  style="width: 120px" v-model="statusValue" @change="statusChange" placeholder="请选择状态">
+                    <a-select-option value=" " >
+                        不限
+                    </a-select-option>
+                    <a-select-option value="CAMPAIGN_STATUS_ENABLE" >
+                        启用
                     </a-select-option>
-                    <a-select-option value="close">
-                        关
+                    <a-select-option value="CAMPAIGN_STATUS_DISABLE" >
+                        暂停
+                    </a-select-option>
+                    <a-select-option value="CAMPAIGN_STATUS_DELETE">
+                        删除
                     </a-select-option>
                 </a-select>
             </span>
+            
             <span class="OptinItem">
-                <a-input-search  placeholder="请选择媒体账户" style="width: 200px" v-model="account" />
+                <!-- <a-date-picker @change="dateChange" /> -->
+                 <a-range-picker v-model="dateValue" :disabled-date="disabledDate"  style="width: 250px;" format="YYYY-MM-DD" @change="dateChange" />
             </span>
             <span class="OptinItem">
-                <a-date-picker @change="dateChange" />
-            </span>
-            <span class="OptinItem">
-                <a-input-search placeholder="请输入ID或名称关键词" v-model="optionId" style="width: 200px" @search="onSearch" />
+                <a-input-search placeholder="请输入ID或名称关键词" v-model="optionId" style="width: 200px"  />
             </span>
             <span class="optionBtn">
                 <a-button type='primary' @click="search" class="searchBtn">查询</a-button>
@@ -105,6 +113,9 @@
                 :data-source="data"
                 :row-selection="rowSelection"
                 bordered
+                :pagination="ipagination"
+                :loading="loading"
+                @change="sort"
                 >
                     <template slot="name" slot-scope="text,record">
                         <editableCell :text="text" slotName='campaignName' @change="onCellChange(record.key, 'campaignName', $event)" />
@@ -197,7 +208,9 @@
 <script>
 import moment from 'moment';
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
+import { JeecgListMixin } from '@/mixins/ipagination'
 import editableCell from './editableCell'
+import Treeselect from '@/views/modules/Statistics/components/Treeselect.vue'
 let typeValue='预算'
 let modifyTableCol=[
     {
@@ -458,12 +471,19 @@ let data=[
 export default {
     components: {
         editableCell,
+        Treeselect,
     },
+     mixins: [JeecgListMixin],
     data() {
         return {
-            account:'',//媒体账号
+            moment,
+            loading:false,
+            accountID:'',
+            // account:'',//媒体账号
             optionId:'',//input输入的id或关键词
-            dateValue:'',//日期选择框选择的事件--我赋值的是dateString
+            statusValue:undefined,
+            dateValue:[],//日期选择框选择
+            dateString:[],//--我赋值的是dateString
             tabkey:'group',//tab选中的页
             selectDisable:true,
             optValue:'',//操作设置的值 删除 暂停 开启
@@ -547,6 +567,11 @@ export default {
         //日期改变
         dateChange(date, dateString) {
             console.log(date, dateString);
+            this.dateString=dateString;
+        },
+        disabledDate(current) {
+            // console.log(current)
+            return current && current > moment().subtract(1, 'day')
         },
         //输入框查询事件
         onSearch(value){
@@ -554,7 +579,31 @@ export default {
         },
         //查询按钮事件
         search(){
-
+            // console.log(this.accountID,this.dateString,this.statusValue,this.optionId);
+            this.refreshCampaignList({
+                accountId:this.accountID,
+                name:this.optionId,
+                status:this.statusValue,
+                startDate:this.dateString[0],
+                endDate:this.dateString[1],
+                pageNo:this.ipagination.current
+             })
+            // postAction('',{
+                
+            // }).then((res)=>{
+            //     console.log(res)
+            // })
+        },
+        //点击分页
+        sort(pagination, filters, sorter, { currentDataSource }){
+            console.log(pagination, filters, sorter)
+            // if(sorter.order == 'ascend'){
+            //     this.HttpPost(sorter.columnKey+'+')
+            // }else if(sorter.order == 'descend'){
+            //     this.HttpPost(sorter.columnKey+'-')
+            // }
+            this.ipagination.current=pagination.current;
+            this.search()
         },
         //重置按钮事件
         reset(){
@@ -706,10 +755,13 @@ export default {
             console.log(this.copyNum,'---',this.copyGroup)
         },
         refreshCampaignList(params){
+            this.loading=true
           getAction(this.url.campaignList, params).then(res => {
             console.log(res);
             if (res.success) {
-              this.data = res.result.records;
+                this.ipagination.total = res.result.total
+                this.loading = false
+                this.data = res.result.records;
 
             } else {
               console.log(res.message);
@@ -721,6 +773,7 @@ export default {
         console.log(this);
         this.data=data;
         let params = {}
+        // this.dateString=[moment().format("YYYY-MM-DD"),moment().format("YYYY-MM-DD")]
         //初始
         this.refreshCampaignList(params);
     },

+ 246 - 49
src/views/modules/BatchCreate/linkMultiSelect.vue

@@ -4,19 +4,19 @@
       <div class="bigBOX" ref="mycheckBox">
         <div class="big_item">
           <MultiCheckBox :title="title1" :listArr="listArr1" :curLayerNum="1" :parentChecked="false"
-            @getItemData="getItemData" />
+            @getItemData="getItemData" @getCheckedList='getCheckedList' />
         </div>
         <div class="big_item">
           <MultiCheckBox :title="title2" :listArr="listArr2" :curLayerNum="2"  :parentChecked="parentChecked1"
-            @getItemData="getItemData" v-if="listArr2.length>0" />
+            @getItemData="getItemData"  @getCheckedList='getCheckedList' v-if="listArr2.length>0" />
         </div>
         <div class="big_item">
           <MultiCheckBox :title="title3" :listArr="listArr3" :curLayerNum="3"  :parentChecked="parentChecked2"
-            @getItemData="getItemData" v-if="listArr3.length>0" />
+            @getItemData="getItemData"  @getCheckedList='getCheckedList' v-if="listArr3.length>0" />
         </div>
         <div class="big_item">
           <MultiCheckBox :title="title4" :listArr="listArr4" :curLayerNum="4"  :parentChecked="parentChecked3"
-            @getItemData="getItemData" v-if="listArr4.length>0" />
+            @getItemData="getItemData"  @getCheckedList='getCheckedList' v-if="listArr4.length>0" />
         </div>
       </div>
     </div>
@@ -25,7 +25,7 @@
       <div class="title">已选<a-button class="clear" type="link" @click="clearAll">清空</a-button></div>
       <div class="linkMulti_list">
           <div class="selectBox1">
-            <span class="selectListitem" v-for="(item,index) in checkedShowList" :key='index'>{{item}}<a-icon type="close" id="close" @click="deleteItem(item)" /></span>
+            <span class="selectListitem" v-for="(item,index) in checkedShowList" :key='index'>{{item.name}}<a-icon type="close" id="close" @click="deleteItem(item)" /></span>
           </div>
       </div>
     </div>
@@ -66,13 +66,14 @@
     methods: {
       getItemData(val) {
         this.$nextTick(() => {
-          this.clickKey = val.clickObj.dataset.layers
-          let index = parseInt(val.clickObj.dataset.layers) || val.curLayerNum
+          // this.clickKey = val.clickObj.dataset.layers
+          // let index = parseInt(val.clickObj.dataset.layers) || val.curLayerNum
+          let index = val.curLayerNum
           this.currentData = val.data
           
           let childrensArr = Array.from(this.$refs.mycheckBox.children)
           setTimeout(() => {
-            console.log(val, val.clickObj.dataset.layers)
+            console.log(val, index)
             // console.log(val.data.checked)
             if (index == 1 || this.clickKey == 1) {
                 this.$refs.mycheckBox.style.width = '100%'
@@ -85,10 +86,20 @@
                         if(res.success){
                             if(res.data.length>0){
                                 res.data.forEach((item,index)=>{
+                                    
                                     item.value=item.code
                                     item.checked=val.data.checked;
                                     item.indeterminates=false;
-                                
+                                })
+                                console.log(this.checkedShowList)
+                                this.checkedShowList.forEach((ele)=>{
+                                  res.data.forEach((item)=>{
+                                      if(ele.code==item.code){
+                                            item.checked=true;
+                                            return
+                                        }
+                                  })
+                                        
                                 })
                                 this.listArr3 = []
                                 this.title3 = ''
@@ -115,7 +126,8 @@
                     this.title2 = ''
                     this.resetStyle(childrensArr, index)
                 }  
-                 this.checkedShowList=val.checkList     
+                
+                //  this.checkedShowList=val.checkList     
             } else if (index == 2 || this.clickKey == 2) {
                 if(val.data.hasChild){
                     getAction(this.listUrl,{
@@ -131,6 +143,14 @@
                                     item.indeterminates=false;
                                 
                                 })
+                                this.checkedShowList.forEach((ele)=>{
+                                  res.data.forEach((item)=>{
+                                      if(ele.code==item.code){
+                                            item.checked=true;
+                                        }
+                                  })
+                                        
+                                })
                                 this.listArr4 = []
                                 this.title4 = ''
                                 
@@ -167,6 +187,7 @@
                 }
                 
             } else if (index == 3 || this.clickKey == 3) {
+
                 if(val.data.hasChild){
                     getAction(this.listUrl,{
                         parentCode:val.data.code,
@@ -181,6 +202,14 @@
                                     item.indeterminates=false;
                                 
                                 })
+                                this.checkedShowList.forEach((ele)=>{
+                                  res.data.forEach((item)=>{
+                                      if(ele.code==item.code){
+                                            item.checked=true;
+                                        }
+                                  })
+                                        
+                                })
                                 this.listArr4 = res.data
                                 this.title4 = val.data.name
                                 this.$refs.mycheckBox.style.width = '200%'
@@ -196,45 +225,36 @@
                     this.resetStyle(childrensArr, index)
                 }  
 
-             
+                let ind=-1;
                 if(this.listArr2){
-                    console.log(this.listArr2)
-                    let ind=-1;
-                    
+                    // console.log(this.listArr2)                                      
                     this.listArr2.forEach((ele,i)=>{                       
-                            if(ele.code==val.data.parentCode){
-                                ind=i
-                                // console.log(ind)
-                            }                                           
+                      if(ele.code==val.data.parentCode){
+                          ind=i
+                          console.log(ind)
+                      }                                           
                     })      
                     if(ind>-1){
                         this.listArr2[ind].indeterminates = !!val.checkList.length && val.checkList.length <val.plainOptions.length
                         this.listArr2[ind].checked = val.checkList.length === val.plainOptions.length && val.plainOptions.length!=0
                     }           
-                
-              }
-              
-                  
-                    this.listArr1.forEach((element,num)=>{
-                        
-                        if(element.code==this.listArr2[ind].parentCode){
-                            ind=num
-                            console.log(ind)
-                        }
+                }
+                     let z=-1          
+                    this.listArr1.forEach((element,num)=>{                        
+                      if(element.code==this.listArr2[ind].parentCode){
+                          z=num
+                          console.log(ind)
+                      }
                         
                     })      
                     let checklist=this.listArr2.filter((item,index)=>{
-                        return  item.checked
+                        return  item.checked || item.indeterminates
                     })    
                     // console.log(checklist)
-                    if(ind>-1){
-                            this.listArr1[ind].indeterminates = !!checklist.length && checklist.length < this.listArr2.length
-                            this.listArr1[ind].checked = checklist.length === this.listArr2.length && this.listArr2.length!=0
+                    if(z>-1){
+                            this.listArr1[z].indeterminates = !!checklist.length && checklist.length < this.listArr2.length
+                            this.listArr1[z].checked = checklist.length === this.listArr2.length && this.listArr2.length!=0
                     }
-                   
-               
-              
-
             }else if (index == 4 || this.clickKey == 4){
                 if(this.listArr3){
                     // console.log(this.listArr3)
@@ -273,7 +293,7 @@
                     if(ind>-1){
                   
                         let checklist3=this.listArr3.filter((item,index)=>{
-                            return  item.checked
+                            return  item.checked || item.indeterminates
                         })    
                         // console.log(checklist)
                    
@@ -289,7 +309,7 @@
                             
                         })      
                         let checklist2=this.listArr1.filter((item,index)=>{
-                            return  item.checked
+                            return  item.checked || item.indeterminates
                         })  
                         if(z>-1){
                             this.listArr1[z].indeterminates = !!checklist2.length && checklist2.length < this.listArr2.length
@@ -329,39 +349,216 @@
       deleteItem(item){
           console.log(item);
           let val='';
-          this.plainOptions.forEach((ele,index)=>{
-              if(ele.label==item){
+          this.checkedShowList.forEach((ele,index)=>{
+              if(ele.code==item.code){
                   val=ele.value
               }
           })
-          this.checkedList=this.checkedList.filter((element,index) => {
-              return element!=val
-          });
+          
           this.checkedShowList=this.checkedShowList.filter((element,index) => {
-              return element!=item
+              return element.code!=val;
           });
-          if(this.checkedList.length==0){
-              this.indeterminate=false
-              this.checkAll=false
+          if(item.level==1){
+              this.listArr1.forEach((ele)=>{
+                  if(ele.code==val){
+                     ele.checked=false
+                  }
+              })  
+          }
+          if(item.level==2){
+              console.log('------------------------------------');
+              let childList=this.checkedShowList.filter((element,index) => {
+                  return element.parentCode==item.parentCode;
+              });
+              let data=[]
+              let checkList=[];
+              let plainOptions=[]
+              this.listArr1.forEach((ele)=>{
+                  if(ele.code==item.parentCode){
+                      data=ele;
+                  }
+                  if(ele.checked){
+                    checkList.push(ele.code)
+                  }
+                  plainOptions.push(ele.code)
+              })
+              if(childList.length==0){
+                  data.indeterminates=false
+              }
+              
+              
+              this.getItemData({
+                clickObj:{},
+                data: data,
+                curLayerNum:1,
+                checkList,
+                plainOptions,
+              })
+              
+
+          }
+          if(item.level==3){
+
           }
       },
 
       clearAll(){
           this.listArr1.forEach((item)=>{
-              item.checked=false
+              item.checked=false;
+              item.indeterminates=false;
           })
           this.listArr2.forEach((item)=>{
-              item.checked=false
+              item.checked=false;
+              item.indeterminates=false;
           })
           this.listArr3.forEach((item)=>{
               item.checked=false
+              item.indeterminates=false
           })
           this.listArr4.forEach((item)=>{
               item.checked=false
+              item.indeterminates=false
           })
           this.checkedShowList=[]
       },
 
+      getCheckedList(val){
+        console.log(val);
+        if(val.curLayerNum==1){
+          if(val.checkList.length>0){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.level!=1
+            })
+            // console.log(this.checkedShowList)
+            if(val.checkList.length==this.listArr1.length){
+                this.checkedShowList=[];
+                val.checkList.forEach((ele)=>{
+                  var result = this.checkedShowList.some(item => {
+                    if(item.code == ele){
+                        return true 
+                    } 
+                  })
+                  if(!result){
+                    this.listArr1.forEach((item)=>{
+                      if(ele==item.code){
+                          this.checkedShowList.push(item)
+                      }
+                    })
+                  }
+                
+                })
+            }else if(val.checkList.length<this.listArr1.length){
+              val.checkList.forEach((ele)=>{
+                var result = this.checkedShowList.some(item => {
+                    if(item.code == ele){
+                        return true 
+                    } 
+                })
+                if(!result){
+                  this.listArr1.forEach((item)=>{
+                    if(ele==item.code){
+                        this.checkedShowList.push(item)
+                    }
+                  })
+                }
+              
+              })
+            }
+            
+            // console.log(this.checkedShowList)
+          }else{
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.level!=1
+            })
+          }
+          
+        }else if(val.curLayerNum==2){
+          this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.code!=val.currentList[0].parentCode
+          })
+          
+          if(val.checkList.length>0&&val.checkList.length<val.currentList.length){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+            })
+            // console.log(this.checkedShowList)
+            val.checkList.forEach((ele)=>{
+              var result = this.checkedShowList.some(item => {
+                if(item.code == ele){
+                    return true 
+                } 
+              })
+              if(!result){
+                val.currentList.forEach((item)=>{
+                  if(ele==item.code){
+                      this.checkedShowList.push(item)
+                  }
+                })
+              }
+             
+            })
+            // console.log(this.checkedShowList)
+          }else if(val.checkList.length==0){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+
+            })
+          }else if(val.checkList.length==val.currentList.length){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+            })
+            this.listArr1.forEach((item)=>{
+                if(item.code==val.currentList[0].parentCode){
+                    this.checkedShowList.push(item)
+                }
+            })
+          }
+        }else if(val.curLayerNum==3){
+          this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.code!=val.currentList[0].parentCode
+          })
+          
+          if(val.checkList.length>0&&val.checkList.length<val.currentList.length){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+            })
+            console.log(this.checkedShowList)
+            val.checkList.forEach((ele)=>{
+              var result = this.checkedShowList.some(item => {
+                if(item.code == ele){
+                    return true 
+                } 
+              })
+              if(!result){
+                val.currentList.forEach((item)=>{
+                  if(ele==item.code){
+                      this.checkedShowList.push(item)
+                  }
+                })
+              }
+             
+            })
+            console.log(this.checkedShowList)
+          }else if(val.checkList.length==0){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+              
+            })
+          }else if(val.checkList.length==val.currentList.length){
+            this.checkedShowList=this.checkedShowList.filter((item)=>{
+              return item.parentCode!=val.currentList[0].parentCode
+            })
+            this.listArr2.forEach((item)=>{
+                if(item.code==val.currentList[0].parentCode){
+                    this.checkedShowList.push(item)
+                }
+            })
+          }
+        }else if(val.curLayerNum==4){
+
+        }
+      },
+
 
     },
     mounted() {

+ 4 - 4
src/views/modules/BatchCreate/newDirectedPackage.vue

@@ -436,7 +436,7 @@
                                                 <linkMultiSelect title='省份' :listArr='[]' :maxLayers='2' :listUrl='regionCityListUrl' @getSelectedArr='getSelectedCityArr'/>
                                             </a-tab-pane>
                                             <a-tab-pane key="development" tab="发展划分" >
-                                                <linkMultiSelect title='等级' :listArr='[]' url='' :maxLayers='3'  @getSelectedArr='getSelectedCityArr'/>
+                                                <linkMultiSelect title='等级' :listArr='[]' url='' :maxLayers='3' :listUrl='regionCityListUrl'  @getSelectedArr='getSelectedCityArr'/>
                                             </a-tab-pane>
                                         </a-tabs>
                                     </div>
@@ -444,10 +444,10 @@
                             </div>
                             <!-- 区县 -->
                             <div class="district" v-else-if="regionValue=='REGION_LEVEL_DISTRICT'">
-                                <linkMultiSelect title='省份' :listArr='[]' @getSelectedArr='getSelectedCityArr'/>
+                                <linkMultiSelect title='省份' :listArr='[]' :maxLayers='3' :listUrl='regionCityListUrl'  @getSelectedArr='getSelectedCityArr'/>
                             </div>
                             <!-- 商圈 -->
-                            <div class="businessCircle" v-else>
+                            <!-- <div class="businessCircle" v-else>
                                 <div class="tabChange">
                                     <div class="tabBox">
                                         <a-tabs v-model="businessTab" @change="businessTabChange">
@@ -465,7 +465,7 @@
                                         </a-tabs>
                                     </div>
                                 </div>
-                            </div>
+                            </div> -->
                             <div class="region_people">
                                 <a-radio-group v-model="regionPeopleValue" @change="regionPeopleChange">
                                     <a-radio value="HOME">居住在该地区的用户</a-radio>