xgwangman 4 lat temu
rodzic
commit
8a0be7dc41

+ 1 - 1
src/assets/js/time.js

@@ -25,7 +25,7 @@ export function ChangeDate1 (val){
             text: '年'
         }, {
             time: mo,
-            text: '月'
+            text: '月'
         }, {
             time: d,
             text: '天'

+ 33 - 25
src/views/bus/components/antistop.vue

@@ -36,13 +36,13 @@
                     </div>
                 </el-form-item>
             </el-form>
-            <!-- <div class="key_data" v-for="(item,index) in keyDatas.data" :key="index" v-if="keyDatas.data[0]">
+            <div class="key_data" v-for="(item,index) in keyDatas.data" :key="index" v-if="keyDatas.data[0]">
                 <h2>{{item.s_item}}
                     <img src="@/assets/images/bianji.png" @click="editKey(item.s_item)">
                     <img src="@/assets/images/del.png" @click="delKey(item.s_item)">
                 </h2>
                 <div class="word_card">
-                    <div class="lis_card" v-for="(ite,index) in item.a_key" :key="index">
+                    <div class="lis_card" v-for="(ite,indx) in item.a_key" :key="indx">
                         <p>关键词:{{String(ite.key)?String(ite.key):'--'}}</p>
                         <p>附加词:{{String(ite.appendkey)?String(ite.appendkey.join(",").replace(/,/g, "、")):'--'}}</p>
                         <p>排除词:{{String(ite.notkey) ? String(ite.notkey.join(",").replace(/,/g, "、")) : '--'}}</p>
@@ -50,7 +50,7 @@
                         <div class="top_edit" @click="toop(item.s_item,String(ite.key),String(ite.appendkey),String(ite.notkey))">编辑<i class="tri-down"></i></div>
                     </div>
                 </div>
-            </div> -->
+            </div>
         </div>
         <!-- 修改关键词弹框 -->
         <el-dialog
@@ -190,7 +190,16 @@ export default {
                         message: '保存成功',
                         type: 'success'
                     });
-                    this.bookForm = '';
+                    this.bookForm = {
+                        keyType: '',
+                        words: '',
+                        additions: [{
+                            values: ''
+                        }],
+                        eliminates: [{
+                            values: ''
+                        }]
+                    };
                     this.scKeys();
                 }
             })
@@ -199,12 +208,12 @@ export default {
             if (this.bookForm.words == '') {
                 this.$message({
                     message: '关键词是必填项',
-                    type: 'success'
+                    type: 'warning'
                 });
                 return;
             }
             const adds = [], excludes = [];
-            this.bookForm.additions.forEach(v => {
+            this.bookForm.additions.forEach((v,i) => {
                 adds.push(v.values);
             });
             this.bookForm.eliminates.forEach(v => {
@@ -216,30 +225,24 @@ export default {
                     s_item: this.bookForm.keyType,
                     a_key:[
                         {
-                            key: new Array(this.bookForm.words),
-                            appendkey: adds,
-                            notkey: excludes
+                            key: Object(this.bookForm.words),
+                            appendkey: Object(adds),
+                            notkey: Object(excludes)
                         }
                     ]
                 }
             ]
-            // console.log(this.keyDatas.data)
             this.keyDatas.data.forEach(v => {
-                arr1.push(
-                    {
-                        s_item: v.s_item,
-                        a_key:[
-                            {
-                                key: v.key,
-                                appendkey: v.appendkey,
-                                notkey: v.notkey
-                            }
-                        ]
-                    }
-                )
+                arr1.push(v);
+                if (this.bookForm.keyType == v.s_item) {
+                    this.$message({
+                        message: '所填关键词分类名已存在',
+                        type: 'warning'
+                    });
+                    return;
+                }
             })
-            console.log(arr1)
-            // this.updated({a_items:arr1})
+            this.updated({a_items:arr1})
         },
         saveEdit() {
             this.editVisible = false;
@@ -255,9 +258,14 @@ export default {
             })
             console.log(this.keyDatas.data)
             let obj = {
+                delete_item: '',
+                update_item: {
+                    before: '',
+                    after: ''
+                },
                 a_items:[this.keyDatas.data]
             }
-            this.updated(obj)
+            // this.updated(obj)
         }
     }
 }

+ 8 - 6
src/views/bus/components/bidMsg.vue

@@ -4,8 +4,8 @@
             {{entData.ent_name}}
             <span :class="{r_active:entData.ent_auth_status == 0}">{{entData.ent_auth_status == 1?'已认证':'未认证'}}</span>
             <div class="btn_change">
-                <el-button plain class="btns1" :class="{c_active:change == '0'}" @click="changed(0)">企业</el-button>
-                <el-button plain class="btns2" :class="{c_active:change == '1'}" @click="changed(1)">个人</el-button>
+                <el-button plain class="btns1" :class="{c_active:change }" @click="changed(true)">企业</el-button>
+                <el-button plain class="btns2" :class="{c_active:!change}" @click="changed(false)">个人</el-button>
             </div>
         </h3>
         <div class="filter_lis">
@@ -134,7 +134,7 @@ export default {
         return {
             subscriData: [],
             tips: false,
-            change: '0',
+            change: false,
             inpt1: '',
             inpt2: '',
             indusData: [],
@@ -203,10 +203,10 @@ export default {
                 return v
             });
         }
-        this.sendData();
+        this.sendData(false);
     },
     methods: {
-        sendData() {
+        sendData(val) {
             for (var i = 0; i < this.indusList.length; i++) {// 删除数组中的空字符串
                 if (this.indusList[i] == "") {
                     this.indusList.splice(i,1);
@@ -216,7 +216,8 @@ export default {
                 buyerclass: this.indusList.length == 0?'': String(this.indusList),
                 time: this.value1 || this.value2?(this.value1 + '_' + this.value2):this.proTime,
                 area: this.checkedVal?String(this.checkedVal) == '全国'?'':String(this.checkedVal):'',
-                pageNum: this.pageSize
+                pageNum: this.pageSize,
+                isEnt: val
             }).then(res => {
                 this.subscriData = res.data;
             })
@@ -227,6 +228,7 @@ export default {
         },
         changed(num) {
             this.change = num;
+            this.sendData(num);
         },
         quanBu(val) {
             this.caiIndex = ["-2"];

+ 17 - 13
src/views/bus/components/distribute.vue

@@ -22,30 +22,30 @@
             <li v-for="(item,index) in tableData" :class="{c_active:chose==index}">
                 <div class="cai_gou" style="width:190px">
                     <div style="width:170px">
-                        <span @click="cellClick(5,item.persons)" v-if="chose==index">{{item.persons}}</span>
+                        <span v-if="chose==index" @click="cellClick(5,index,item.persons)">{{item.persons}}</span>
                         <span v-else>{{item.persons}}</span>
-                        <i :class="chose==index?'el-icon-arrow-down':''"></i>
+                        <i :class="chose==index?'el-icon-arrow-down':''" v-if="item.persons"></i>
                     </div>
                 </div>
                 <div class="cai_gou" style="width:230px">
                     <div style="width:210px">
-                        <span @click="cellClick(6,item.items)" v-if="chose==index">{{item.items}}</span>
+                        <span v-if="chose==index" @click="cellClick(6,index,item.items)">{{item.items}}</span>
                         <span v-else>{{item.items}}</span>
-                        <i :class="chose==index?'el-icon-arrow-down':''"></i>
+                        <i :class="chose==index?'el-icon-arrow-down':''" v-if="item.items"></i>
                     </div>
                 </div>
                 <div class="cai_gou" style="width:230px">
                     <div style="width:210px">
-                        <span @click="cellClick(1,item.area)" v-if="chose==index">{{item.area}}</span>
+                        <span v-if="chose==index" @click="cellClick(1,index,item.area)">{{item.area}}</span>
                         <span v-else>{{item.area}}</span>
-                        <i :class="chose==index?'el-icon-arrow-down':''"></i>
+                        <i :class="chose==index?'el-icon-arrow-down':''" v-if="item.area"></i>
                     </div>
                 </div>
                 <div class="cai_gou" style="width:250px">
                     <div style="width:250px">
-                        <span @click="cellClick(2,index,item.buyerclass)" v-if="chose==index">{{item.buyerclass}}</span>
+                        <span v-if="chose==index" @click="cellClick(2,index,item.buyerclass)">{{item.buyerclass}}</span>
                         <span v-else>{{item.buyerclass}}</span>
-                        <i :class="chose==index?'el-icon-arrow-down':''"></i>
+                        <i :class="chose==index?'el-icon-arrow-down':''" v-if="item.buyerclass"></i>
                     </div>
                 </div>
                 <div class="cai_gou btns">
@@ -58,10 +58,10 @@
             </li>
             <li v-if="newFen">
                 <div class="xuan_ze">
-                    <span @click="cellClick(5)" style="width:190px">选择分发人员<i class="el-icon-arrow-down"></i></span>
-                    <span @click="cellClick(6)" style="width:230px">选择分类名称<i class="el-icon-arrow-down"></i></span>
-                    <span @click="cellClick(1)" style="width:230px">选择区域<i class="el-icon-arrow-down"></i></span>
-                    <span @click="cellClick(2)" style="width:250px">选择采购单位行业<i class="el-icon-arrow-down"></i></span>
+                    <span @click="cellClick(5,5)" style="width:190px">选择分发人员<i class="el-icon-arrow-down"></i></span>
+                    <span @click="cellClick(6,6)" style="width:230px">选择分类名称<i class="el-icon-arrow-down"></i></span>
+                    <span @click="cellClick(1,1)" style="width:230px">选择区域<i class="el-icon-arrow-down"></i></span>
+                    <span @click="cellClick(2,2)" style="width:250px">选择采购单位行业<i class="el-icon-arrow-down"></i></span>
                     <span style="width:120px;text-align:center">
                         <button type="primary" size="small" class="add_per" @click="addFen">添加</button>
                     </span>
@@ -99,7 +99,8 @@ export default {
             chose: -1,
             elBtn: false,
             digs: 1,
-            boxData: []
+            boxData: [],
+            cellIndex: 0
         }
     },
     created() {
@@ -143,10 +144,12 @@ export default {
         },
         cellClick(indx, index, arr) {
             this.digs = indx;
+            this.cellIndex = index;
             this.boxData = this.tableData1[index]?this.tableData1[index].buyerclass:[];
             // console.log(this.boxData)
             if (indx == 5) {
                 this.$refs.fenModel.centerDialogVisible = true;
+                // this.$refs.fenModel.selectedList = [];
             } else {
                 this.$refs.editModel.boxVisible = true;
             }
@@ -156,6 +159,7 @@ export default {
         },
         saveFen() {
             this.chose = -1;
+            console.log(this.tableData)
         },
         addFen() {
             this.newFen = false;

+ 1 - 1
src/views/bus/components/editBox.vue

@@ -30,7 +30,7 @@
                             <ul>
                                 <li v-for="item in groupData2" :key="item.id" class="li_data">
                                     <h3>{{item.letter}}</h3>
-                                    <el-checkbox-group v-model="boxData.buyerclass">
+                                    <el-checkbox-group v-model="boxData">
                                         <el-checkbox-button v-for="ite in item.list" :key="ite.id" :label="ite.name">{{ite.name}}</el-checkbox-button>
                                     </el-checkbox-group>
                                 </li>

+ 192 - 32
src/views/bus/components/fenBox.vue

@@ -1,7 +1,7 @@
 <template>
-  <div class="fen_box edit_box">
+  <div class="ent_powerPerson">
       <el-dialog
-          title="选择分发人员"
+          :title="titleMsg"
           :show-close="false"
           :visible.sync="centerDialogVisible"
           width="890px"
@@ -9,12 +9,16 @@
           <div class="content">
               <div class="content_left">
                   <h4>选择</h4>
-                  <el-input class="sear" v-model="searchVal" placeholder="搜索" prefix-icon="el-icon-search"></el-input>
+                  <div class="search">
+                    <el-input  v-model="searchVal" placeholder="搜索" >
+                      <template slot="prepend"><img src="../../../assets/images/search.jpg" alt=""></template>
+                    </el-input>
+                  </div>
                   <div class="allList">
-                    <div v-for="item in personList.list" :key="item.id">
-                      <h5><el-checkbox v-model="item.status"></el-checkbox> <span class="noselect"  @click="toggle(item)">{{ item.name }}</span> <i class="el-icon-arrow-down"></i></h5>
+                    <div v-for="(item,i) in deal_personList" :key="item.id">
+                      <h5><i class="seleced" @click="selectGroup(item,i)" :class="item.status"></i> <span class="noselect"  @click="toggle(item,i)">{{ item.name }}</span> <i class="el-icon-arrow-down"></i></h5>
                       <div class="itemList" :class="{toggle:!item.toggle}" >
-                         <div v-for="val in item.users" :key="val.user_id" @click="chooseUser(val)">
+                         <div v-for="val in item.users" :key="val.user_id" @click="chooseUser(val,'single')" :class="{active:val.checked}">
                             <span class="userName">{{ val.username }}</span> <span> {{ val.phone }}</span> 
                          </div>
                       </div>
@@ -30,7 +34,7 @@
                   </ul>
               </div>
           </div>
-          <p>已选择{{ personList.checked }}人共购买{{ personList.quota }}人</p>
+          <p v-if="currentIndex == 0">已选择{{ personList.checked }}人共购买{{ personList.quota }}人</p>
           <span slot="footer" class="dialog-footer btns">
               <button @click="saveDepart" class="save">保存</button>
               <button  @click="centerDialogVisible = false" class="cancle">取消</button>
@@ -41,7 +45,7 @@
 
 
 <script>
-import { user_sjPersonListInter } from "@/api/api";
+import { user_sjPersonListInter,add_sjPersonInter,user_recordpersonListInter,add_recordpersonListInter } from "@/api/api";
 export default {
    data(){
      return{
@@ -49,43 +53,172 @@ export default {
        searchVal:'',
        personList:{},
        selectedList:[],
-       checked:false
+       checked:false,
+       titleMsg:'',
+       currentIndex:'0'
      }
    },
    created(){
-      this.getData();
+      // this.$watch('searchVal', this.debounce((newValue, oldValue) => {
+        this.getData()
+      // }, 500))
+   },
+   computed:{
+      deal_personList:function(){
+         let arr = JSON.parse(JSON.stringify(this.personList));
+          arr.list && arr.list.forEach((items,x) =>{
+              let list = [];
+              items.users.forEach(item =>{
+                this.selectedList.forEach((val,i) =>{
+                  if(item.checked){ return; }
+                  if(item.user_id == val.user_id ){
+                    item.checked = true;
+                  }else{
+                    item.checked = false;
+                  }
+                })
+                if(item.checked){
+                  list.push("1")
+                }
+              }) 
+              if(list.length === items.users.length){
+                items.status = "selectAll";
+              }else if(list.length === 0){
+                items.status = "zero"
+              }else{
+                items.status = "selectHalf";
+              }
+          })
+          return  arr.list;
+      }
    },
    methods:{
+     debounce (fn, delay) {
+        let timer = null
+        return function () {
+            let arg = arguments
+            clearTimeout(timer)
+            timer = setTimeout(() => {
+                fn.apply(this, arg)
+            }, delay)
+        }
+      },
+     //获取人员列表
      getData(){
-        user_sjPersonListInter({name:this.searchVal}).then(res =>{
-          // console.log(res.data);
+       if(this.$parent.currentIndex == 0){
+          user_sjPersonListInter({name:this.searchVal}).then(res =>{
+            res.data.list.forEach(v =>{
+              v.toggle = true;
+              v.status = false;
+            })
+            this.personList = res.data;
+            this.selectedList = res.data.checkedList;
+          })
+          return;
+       }
+       user_recordpersonListInter({name:this.searchVal}).then(res =>{
           res.data.list.forEach(v =>{
             v.toggle = true;
             v.status = false;
           })
           this.personList = res.data;
           this.selectedList = res.data.checkedList;
-        })
+       })
+     },
+     //判断添加人员是否重复
+     judgeHeavy(val){
+       let arr = [];
+        val.users ? arr = val.users : arr.push(val);
+        let test = arr.reduce((pre,cur) => {
+              if(this.selectedList.every(item=>item.user_id!==cur.user_id)){
+                  pre.push(cur)
+              }
+              return pre;
+        },[]);
+        return test;
      },
      //选择人员
-     chooseUser(val){
-        this.selectedList.push(val)
+     chooseUser(val,status){
+        if(status === 'single'){
+          if(this.currentIndex == 0){
+              if(this.selectedList.length >= this.personList.quota){
+                this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+                return;
+              }
+          }
+          
+          let newArr = this.selectedList.filter(x => {
+              return val.user_id == x.user_id
+          })
+          if(newArr.length>0){
+            this.$message({ message: '该人员已添加',type: 'warning'});
+            return;
+          }else{
+            this.selectedList.push(val);
+          }
+        }else{
+            this.selectedList = this.selectedList.concat(val);
+        }
+     },
+     selectGroup(val,i){
+      //  val.status = true;
+      let newVal = this.judgeHeavy(val);
+      let newSelect = this.selectedList.concat(newVal);
+       if(this.currentIndex == 0){
+         if(val.status == "selectAll"){
+            this.$message({ message: '该人员已添加',type: 'warning'});
+            return;
+         }
+          if(this.selectedList.length >= this.personList.quota){
+            this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+            return;
+          }
+          
+          if(newSelect.length > this.personList.quota){
+            if(newVal.length>1){
+              this.$message({ message: '大于可添加的人数,请单个添加',type: 'warning'});
+            }else{
+              this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+            }
+            return;
+          }
+       }
+        this.personList.list.splice(i,1,val)
+        this.chooseUser(newVal)
      },
      //删除人员
      delChooseUser(i){
         this.selectedList.splice(i,1);
      },
-     saveDepart(){},
-     toggle(val){
+     //添加人员
+     saveDepart(){
+       let delId = '';
+       this.selectedList.forEach((v,i) =>{
+          if(v.user_id){
+            i === 0 ? delId += `${v.user_id}` : delId += `,${v.user_id}`
+          }
+       })
+      let arr = [];
+      this.selectedList.forEach(v => {
+        arr.push(v.username);
+      })
+      let i = this.$parent.cellIndex;
+      if (arr.length) {
+        this.$parent.tableData[i].persons = String(arr.join(",").replace(/,/g, "、"));
+      }
+      this.centerDialogVisible = false;
+     },
+     toggle(val,i){
        val.toggle = !val.toggle;
+      this.personList.list.splice(i,1,val)
 
      }
    }
 }
 </script>
 
-<style lang="scss" scoped>
-  .fen_box{
+<style lang="scss">
+  .ent_powerPerson{
       .el-dialog__header{
           font-size: 26px;
           color: $weight_color;
@@ -108,10 +241,31 @@ export default {
               font-size: 14px;
               color: $weight_color;
             }
-            .sear {
+            .search{
+                margin-left: 20px;
                 width: 360px;
-                height: 40px;
-                margin: 0 20px 0 20px!important;
+                .el-input-group{
+                    width: 100%;
+                    border: 1px solid $border_color;
+                    border-radius: 18px;
+                    .el-input-group__prepend{
+                        border-radius: 18px 0 0 18px;
+                        background: #fff;
+                        border:none;
+                        padding: 0 12px;
+                        img{
+                            width: 24px;
+                            margin-top: 6px;
+                            cursor: pointer;
+                        }
+                    }
+                    .el-input__inner{
+                        border: none;
+                        height: 36px;
+                        border-radius: 0px  18px 18px 0;
+                        padding: 0 4px 0 0;
+                    }
+                }
             }
             .allList{
               flex: 1;
@@ -123,28 +277,34 @@ export default {
                    box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
                 }
                 h5{
-                  margin-top: 10px;
+                  margin-top: 16px;
                   color: $weight_color;
                   display: flex;
+                  align-items: center;
                   >span{
                     flex: 1;
                     margin-left: 10px;
                     cursor: pointer;
                   }
-                  align-items: center;
-                  .el-checkbox__inner,.el-checkbox__input.is-checked .el-checkbox__inner{
+                  .seleced{
                     width: 20px;
                     height: 20px;
                     border-radius: 50%;
-                    font-size: 30px;
+                    border: 1px solid #e0e0e0;
+                    cursor: pointer;
+                    position: relative;
                   }
-                  .el-checkbox__input.is-checked .el-checkbox__inner::after {
-                      transform: rotate(45deg) scaleY(1.4) translate(5px, 0px);
+                  .selectAll{
+                     border:none;
+                     background: url(../../../assets/images/checked.png) no-repeat center center;
+                     background-size: 20px;
                   }
-                  .el-checkbox__input.is-checked + .el-checkbox__label{
-                    color: $weight_color;
+                  .selectHalf{
+                    border:none;
+                     background: url(../../../assets/images/half.png) no-repeat center center;
+                     background-size: 20px;
                   }
-                  i{
+                  .el-icon-arrow-down{
                     font-size: 16px;
                      color: #aaa;
                   }
@@ -152,7 +312,7 @@ export default {
                 .itemList{
                   transition: all  0.5s ;
                   opacity: 1;
-                  max-height:400px;
+                  max-height:4000px;
                   >div{
                     cursor: pointer;
                     color: $normal_color;

+ 3 - 3
src/views/bus/components/subMage.vue

@@ -19,7 +19,7 @@
                 <el-card class="left_card right_card" :class="{c_active:apper == 1}" shadow="hover" @click.native="booked(1)">
                     <h3>个人订阅模式</h3>
                     <p>员工个人自行订阅,不可进行商机追踪。</p>
-                    <span v-if="apper == 1">推荐</span>
+                    <!-- <span v-if="apper == 1">推荐</span> -->
                     <div class="card_icons">
                         <i class="el-icon-check" v-if="apper == 1"></i>
                     </div>
@@ -165,7 +165,7 @@ export default {
         scribeData().then(res => {
             this.viewDatas = res.data;
             this.bookForm.dispense = res.data.subdis == '1' ? true : false;
-            this.boxData = res.data.subscribe;
+            this.boxData = res.data.subscribe.buyerclass;
             this.bookForm.tuiRadio = res.data.subscribe.ratemode;
             this.bookForm.proPei = res.data.subscribe.projectmatch == '1' ? true : false;
         })
@@ -178,7 +178,7 @@ export default {
     },
     methods: {
         booked(num) {
-            // this.apper = num;
+            this.apper = num;
         },
         dispensed() {// 订阅与分发
             subdis({

+ 6 - 7
vue.config.js

@@ -17,10 +17,9 @@ module.exports = {
     proxy: {
       "/entbase": {
         // target: "https://app2-jytest.jianyu360.cn",
-        // target: "http://127.0.0.1:812",
-        // target: "http://127.0.0.1:812",
+        target: "http://127.0.0.1:815",
         // target:'http://192.168.20.51:815',
-        target:'http://192.168.20.241:815',
+        // target:'http://192.168.20.241:815',
         changeOrigin: true,
         ws: true,
         pathRewrite: {
@@ -29,8 +28,8 @@ module.exports = {
       },
       "/entniche": {
         // target: "https://app2-jytest.jianyu360.cn",
-        target: "http://192.168.20.241:812",
-        // target: "http://127.0.0.1:812",
+        // target: "http://192.168.20.241:812",
+        target: "http://127.0.0.1:812",
         // target:'http://192.168.20.214:813',
         changeOrigin: true,
         ws: true,
@@ -42,10 +41,10 @@ module.exports = {
         // target: "http://ent-xzh.jianyu360.cn",
         // target: "https://app2-jytest.jianyu360.cn",
         // target: "http://192.168.20.241:813/entniche",
-        // target: "http://127.0.0.1:813",
+        target: "http://127.0.0.1:813",
         // target:'http://192.168.20.51:815/entbase',
         // target:'http://192.168.20.51:813/entdataexport',
-        target:'http://192.168.20.241:813',
+        // target:'http://192.168.20.241:813',
         // target:'http://192.168.20.241:812',
         changeOrigin: true,
         ws: true,