From 7113b4f2dd47a313c6fbc85c21f4756da42b212a Mon Sep 17 00:00:00 2001
From: queenwuli <942534046@qq.com>
Date: Mon, 11 Jan 2021 17:06:18 +0800
Subject: [PATCH] gx
---
hive-app/pages/workbench/followRecords/index.vue | 316 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 194 insertions(+), 122 deletions(-)
diff --git a/hive-app/pages/workbench/followRecords/index.vue b/hive-app/pages/workbench/followRecords/index.vue
index 298fed6..9ea4d6f 100644
--- a/hive-app/pages/workbench/followRecords/index.vue
+++ b/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,103 +13,65 @@
fontSize: '28',
underLineWidth: 60,
}"
- @tabClick="tabClick($event)"
+ @tabClick="changeType"
/>
</view>
- <view v-if="isShow" class="filter-content font-14">
- <view class="filter-content-time">
- <text>开始时间</text>
- <view class="gray flex align-center" @click="showTime()">
- <text>请选择</text>
- <text class="iconfont iconarrow-backimg"></text>
- </view>
- <date-time-picker ref='date-time' type='datetime' @change='dateTimeChange'></date-time-picker>
- </view>
- <view class="filter-content-time">
- <text>结束时间</text>
- <view class="gray flex align-center" @click="showTime()">
- <text>请选择</text>
- <text class="iconfont iconarrow-backimg"></text>
- </view>
- <date-time-picker ref='date-time' type='datetime' @change='dateTimeChange'></date-time-picker>
- </view>
- <view class="filter-content-row">
- <view>
- <text>客户</text>
- </view>
- <view class="img-box">
- <image class="header-img mr-20" src="../../../static/images/default-avatar.png"></image>
- <navigator url="../../member/selectCustomer" hover-class="none">
- <text class="iconfont iconjia gray-outline-btn-circle ml-5"></text>
- </navigator>
- </view>
- </view>
- <view class="filter-content-row">
- <view>
- <text>员工</text>
- </view>
- <view class="img-box">
- <image class="header-img mr-20" src="../../../static/images/default-avatar.png"></image>
- <navigator url="../../manager/selectEmployee" hover-class="none">
- <text class="iconfont iconjia gray-outline-btn-circle ml-5"></text>
- </navigator>
- </view>
- </view>
- <view class="flex sticky-footer">
- <button class="white-btn flex-1">重置</button>
- <button class="blue-btn flex-1 ml-10">确定</button>
- </view>
- </view>
- <view v-else 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">
- <image v-for="(item,index) in imgList" @click="previewImg(item.imgurl)" class="content-img mr-10" :src="item.imgurl"></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>
- <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 DateTimePicker from '../../../components/bory-dateTimePicker/bory-dateTimePicker.vue'
+ import fillter from './filter'
+ import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
export default {
components: {
HTabs,
- DateTimePicker
+ fillter,
+ uniLoadMore
},
data() {
return {
@@ -127,40 +89,162 @@
name: '我的团队'
}
],
- imgList:[
- {'imgurl':'../../../static/images/banner.jpg'},
- {'imgurl':'../../../static/images/product.jpg'}
- ],
- isShow:false,
- messageShow:false,
+ type: 1,
+ list: [],
+ imgIndex: 0,
+ isShowComments:false,
+ isShowFilter: false,
+ 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:{
- // 预览图片
- previewImg(image) {
- let imgArr=[]
- imgArr[0]=image
- //预览图片
- uni.previewImage({
- urls: imgArr
+ 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);
+ }
+ }
})
},
- onNavigationBarButtonTap(e){
- if(e.index==0){
- uni.navigateTo({
- url:"./addRecord"
- })
+ changeType(index){
+ this.type = index+1;
+ this.reloadList()
+ },
+ // 预览图片
+ previewImg(imgList, index) {
+ if(!imgList.length){
+ return;
}
- if(e.width && e.index==1){
- this.isShow=!this.isShow
+ this.imgIndex = index;
+ imgList = imgList.map((item) => {
+ return item.img;
+ });
+ uni.previewImage({
+ urls: imgList,
+ indicator: 'default',
+ loop:true
+ })
+ },
+ // 点赞
+ 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;
}
},
- showTime () {
- this.$refs['date-time'].show();
+ // 重置筛选条件
+ resetFilter(){
+ this.startTime = '';
+ this.endTime = '';
+ this.staffList = [];
+ this.vipList = [];
+ this.reloadList();
},
- showMessage(){
- this.messageShow=!this.messageShow
- },
+ changeFilter(data){
+ this.startTime = data.startTime;
+ this.endTime = data.endTime;
+ this.reloadList();
+ }
}
}
</script>
@@ -168,6 +252,10 @@
<style>
page{
background: #F6F6F8;
+ height: 100%;
+ }
+ .container{
+ height: 100%;
}
.tab{
background: #FFFFFF;
@@ -187,35 +275,11 @@
height: 80px;
}
.content-row-notes{
- line-height: 20px;
+ line-height: 22px;
background: #F6F6F8;
padding: 5px;
- margin-top: 10px;
- }
- .filter-content{
- position: fixed;
- left: 0;
- right: 0;
- height: 100%;
- background: #FFFFFF;
- padding: 0px 10px;
- }
- .filter-content-time{
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1px solid #EDEAF4;
- padding: 10px 0;
- }
- .filter-content-row{
- padding: 10px 0;
- border-bottom: 1px solid #EDEAF4;
- }
- .img-box{
- display: flex;
- align-items: center;
- padding: 0 10px;
- margin-top: 10px;
+ margin-top: 5px;
+ font-size: 13px;
}
.message-row{
display: flex;
@@ -229,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>
--
Gitblit v1.9.1