gx
queenwuli
2021-01-11 7113b4f2dd47a313c6fbc85c21f4756da42b212a
hive-app/pages/workbench/followRecords/index.vue
@@ -1,6 +1,6 @@
<template>
   <!-- 跟进记录 -->
   <view>
   <view class="container" @click="isShowComments = false">
      <view>
         <h-tabs
            class="tab"
@@ -13,60 +13,65 @@
               fontSize: '28',
               underLineWidth: 60,
            }"
            @tabClick="tabClick($event)"
            @tabClick="changeType"
         />
      </view>
      <view class="content-row font-14" v-for="item in 2">
      <view class="content-row font-14" v-for="item in list">
         <view class="flex align-center">
            <image class="header-img" src="../../../static/images/default-avatar.png"></image>
            <view class="flex flex-v ml-10">
               <text>杨明</text>
               <text>2020-12 12:34</text>
               <text>{{item.staffName}}</text>
               <text class="gray font-12">{{item.createTime}}</text>
            </view>
         </view>
         <view class="mt-10">
            <text>截图服务了杨姐,她的面部比较干燥暗沉色斑较多,约下次来做一个面部护理</text>
            <text>{{item.content}}</text>
         </view>
         <view class="mt-10 flex" :start="num">
            <image v-for="(item,index) in imgList" @click="previewImg(index)" class="content-img mr-10" :src="item"></image>
         <view class="mt-10 mb-10 flex" :start="imgIndex">
            <image v-for="(op,index) in item.albums" @click="previewImg(item.albums,index)" class="content-img mr-10" :src="op.img"></image>
         </view>
         <view class="flex align-center justify-between mt-5">
            <text>客户:杨依依</text>
            <view class="flex align-center">
         <view class="flex align-center justify-between mt-5 gray font-13">
            <text>客户: {{item.vipName}}</text>
            <view class="flex align-center" v-if="item.nextNotifyTime">
               <text class="iconfont iconzhong mr-5"></text>
               <text>2020-12-31 12:34</text>
               <text>{{item.nextNotifyTime}}</text>
            </view>
         </view>
         <view class="mt-5">
            <text>订单:面部护理等</text>
         <view class="mt-5 gray font-13">
            <text>订单:{{item.orderAbstract}}</text>
         </view>
         <view class="right mt-5">
            <text class="iconfont iconxin"></text>
            <text class="iconfont iconliuyan1 ml-20" @click="showMessage"></text>
            <text class="iconfont" :class="item.zans && item.zans.indexOf(userInfo.id)>-1?'red iconxin1':'iconxin2'" @click="thumbsUp(item)"></text>
            <text class="iconfont iconliuyan1 ml-15"  @click.stop="showComment(item.id)"></text>
         </view>
         <view class="content-row-notes flex align-center blue">
            <text class="iconfont iconxin mr-10"></text>
            <text>李贝,拉拉</text>
         <view class="content-row-notes flex align-center blue" v-if="item.zanUsers && item.zanUsers.length">
            <text class="iconfont iconxin2 mr-10"></text>
            <text v-for="(op, i) in item.zanUsers">{{op.suName}}<text v-if="i!=item.zanUsers.length-1">,</text></text>
         </view>
         <view class="content-row-notes flex align-center blue">
            <text>李贝: 好的,继续跟进</text>
         <view class="content-row-notes blue" v-if="item.followupComments && item.followupComments.length">
            <view v-for="op in item.followupComments">{{op.createBy}}: {{op.content}}</view>
         </view>
      </view>
      <fillter :isShow="isShowFilter" @change="changeFilter"></fillter>
      <view v-show="messageShow" class="message-row">
         <input type="text" cursor-spacing="10" :focus="messageShow" class="message-input" placeholder="评论" placeholder-class="placeholder"/>
         <button class="green-btn message-btn">发送</button>
      <view v-if="list.length">
         <uni-load-more :status="loadStatus" color="#a5abaf"></uni-load-more>
      </view>
      <view v-if="isShowComments" class="message-row" @click.stop="">
         <input type="text" v-model="comment" cursor-spacing="10" :focus="isShowComments" class="message-input" placeholder="评论" placeholder-class="placeholder"/>
         <button class="green-btn message-btn" :disabled="!comment" @click="addFollowupComment">发送</button>
      </view>
      <fillter :isShow="isShowFilter" :staffList="staffList" :vipList="vipList" @reset="resetFilter" @change="changeFilter"></fillter>
   </view>
</template>
<script>
   import HTabs from "@/components/liuyuno-tabs/liuyuno-tabs.vue";
   import fillter from './filter'
   import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
   export default {
      components: {
          HTabs,
         fillter
         fillter,
         uniLoadMore
      },
      data() {
        return {
@@ -84,40 +89,162 @@
               name: '我的团队'
            }
         ],
         imgList:[
            '../../../static/images/banner.jpg',
            '../../../static/images/product.jpg'
         ],
         messageShow:false,
         type: 1,
         list: [],
         imgIndex: 0,
         isShowComments:false,
         isShowFilter: false,
         num:0
         pageNum: 0,
         loadStatus: 'more',
         userInfo: {},
         comment: '',
         follId: '',
         staffList: [],
         vipList: [],
         startTime: '',
         endTime: ''
        }  
      },
      onNavigationBarButtonTap(e){
         if(e.index==0){
            uni.navigateTo({
               url:"./addRecord"
            })
         }
         if(e.index==1){
            this.isShowFilter = !this.isShowFilter;
         }
      },
      onLoad() {
         this.getUserInfo()
         this.reloadList()
      },
      onPullDownRefresh(){
         this.reloadData();
         let timer = setTimeout(function () {
            uni.startPullDownRefresh();
            clearTimeout(timer);
            timer = null;
         }, 800);
      },
      onReachBottom(){
         this.loadList()
      },
      methods:{
         getUserInfo(){
            let roleInfo = this.$httpUtils.getRoleInfo();
            if(roleInfo){
               this.userInfo = roleInfo;
            }
         },
         reloadList(){
            this.pageNum = 0;
            this.loadStatus = 'more';
            this.loadList(true)
         },
         loadList(isRest){
            if(this.loadStatus!=='more'){
               return;
            }
            let staffIds = this.staffList.map((item) => {
               return item.id;
            });
            let vipIds = this.vipList.map((item) => {
               return item.id;
            });
            this.$httpUtils.request('/api/followup/findFollowup', {
               startTime: this.startTime,
               endTime: this.endTime,
               limit: 10,
               offset: this.pageNum,
               queryType: this.type,
               staffIds: staffIds,
               vipIds: vipIds
            }, 'POST').then((res) => {
               if(res.status == 200){
                  let result = res.rows;
                  if(result.length < 10){
                     this.loadStatus = 'noMore';
                  } else {
                     this.pageNum ++ ;
                     this.loadStatus = 'more';
                  }
                  if(isRest){
                     this.list = result
                  }else{
                     this.list = this.list.concat(result);
                  }
               }
            })
         },
         changeType(index){
            this.type = index+1;
            this.reloadList()
         },
         // 预览图片
         previewImg(index) {
            // let imgArr=[]
            // imgArr.push(image)
            //预览图片
         previewImg(imgList, index) {
            if(!imgList.length){
               return;
            }
            this.imgIndex = index;
            imgList = imgList.map((item) => {
               return item.img;
            });
            uni.previewImage({
               urls: this.imgList,
               indicator:'default',
               urls: imgList,
               indicator: 'default',
               loop:true
            })
         },
         onNavigationBarButtonTap(e){
            if(e.index==0){
               uni.navigateTo({
                  url:"./addRecord"
               })
            }
            if(e.width && e.index==1){
               this.isShowFilter = !this.isShowFilter;
         // 点赞
         thumbsUp(item){
            this.$httpUtils.request('/api/followup/zanFollowup/'+item.id).then((res) => {
               if(res.status == 200){
                  this.reloadList()
               }
            })
         },
         // 评论
         addFollowupComment(){
            this.$httpUtils.request('/api/followup/addFollowupComment', {
               follId: this.follId,
               content: this.comment
            }, 'POST').then((res) => {
               if(res.status == 200){
                  this.reloadList();
                  this.isShowComments = false;
                  this.comment = '';
               }else{
                  this.$toast.info(res.info)
               }
            })
         },
         showComment(id){
            this.follId = id;
            this.isShowComments=true;
         },
         setData(selectItem){
            let pages = getCurrentPages();
            let prevPage = pages[ pages.length - 1 ];
            if(prevPage.route.indexOf('selectCustomer') > -1){
               this.vipList = selectItem;
            }else{
               this.staffList = selectItem;
            }
         },
         showMessage(){
            this.messageShow=!this.messageShow
         // 重置筛选条件
         resetFilter(){
            this.startTime = '';
            this.endTime = '';
            this.staffList = [];
            this.vipList = [];
            this.reloadList();
         },
         changeFilter(data){
            this.startTime = data.startTime;
            this.endTime = data.endTime;
            this.reloadList();
         }
      }
   }
</script>
@@ -125,6 +252,10 @@
<style>
   page{
      background: #F6F6F8;
      height: 100%;
   }
   .container{
      height: 100%;
   }
   .tab{
      background: #FFFFFF;
@@ -144,10 +275,11 @@
      height: 80px;
   }
   .content-row-notes{
      line-height: 20px;
      line-height: 22px;
      background: #F6F6F8;
      padding: 5px;
      margin-top: 10px;
      margin-top: 5px;
      font-size: 13px;
   }
   .message-row{
      display: flex;
@@ -161,10 +293,18 @@
      background: #FFFFFF;
      height: 30px;
      margin-right: 5px;
      padding-left: 5px;
      padding-right: 5px;
   }
   .message-btn{
      margin: 0;
      line-height: 30px;
      border-radius: 0;
      font-size: 14px;
   }
   uni-button[disabled]:not([type]), uni-button[disabled][type=default]{
      color: #FFFFFF;
      background-color: rgb(31 183 19 / 0.4);
      border: 0;
   }
</style>