#
whycq
2023-10-10 155f2b80f2a9b6f900c73f6e4461e9cebb7cd028
pages/business/cstmr/cstmrDetails.vue
@@ -1,8 +1,312 @@
<template>
   <view>
      <scroll-view scroll-y="true" >
         <view class="header">
            <view class="cstmr-name">
               <image src="../../../static/image/jiafangdanwei.png" mode="aspectFit"></image>
               <view>{{cstmr.name}}</view>
            </view>
            <view class="cstmr-tel">{{cstmr.tel}} | {{cstmr.addr}} | {{cstmr.director$}}</view>
         </view>
         <view class="container">
            <view><y-title title="基本信息"></y-title></view><view></view>
            <view class="list-item1">客户名称</view><view class="list-item2">{{cstmr.name}}</view>
            <view class="list-item1">客户类别</view><view class="list-item2">{{cstmr.cstmrType$}}</view>
            <view class="list-item1">省市区</view><view class="list-item2">{{cstmr.pcd$}}</view>
            <view class="list-item1">客户联系人</view><view class="list-item2">{{cstmr.contacts}}</view>
            <view class="list-item1">备注</view><view class="list-item2">{{cstmr.remarks  ? cstmr.remarks : '--'}}</view>
            <view class="list-item1">负责人</view><view class="list-item2 color-main">{{cstmr.director$}}</view>
            <view class="list-item1">区分</view><view class="list-item2">{{cstmr.type$}}</view>
            <view class="list-item1">客户关系</view><view class="list-item2">{{cstmr.rela  ? cstmr.rela : '--'}}</view>
            <view class="list-item1">详细地址</view><view class="list-item2">{{cstmr.addr}}</view>
            <view class="list-item1">电话</view><view class="list-item2 color-main">{{cstmr.tel}}</view>
            <view class="list-item1">客户代号</view><view class="list-item2">{{cstmr.uuid}}</view>
         </view>
         <view class="container">
            <view><y-title title="其他信息"></y-title></view><view></view>
            <view class="list-item1">添加人员</view><view class="list-item2 color-main">{{cstmr.createBy$}}</view>
            <view class="list-item1">添加时间</view><view class="list-item2">{{cstmr.createTime$}}</view>
            <view class="list-item1">修改人员</view><view class="list-item2">{{cstmr.updateBy$}}</view>
            <view class="list-item1">修改时间</view><view class="list-item2 color-main">{{cstmr.updateTime$}}</view>
         </view>
         <view class="container">
            <view><y-title title="跟进人"></y-title></view><view></view><view><uni-icons @click="addPerson()" type="plus" size="20" color="#55aaff"></uni-icons></view>
            <view class="list" v-for="(item,index) in followers" :key="index">
               <view class="list-left">{{item.userName}}</view>
               <view class="list-right"><button size="mini" style="float: right;" type="warn" @click="removeFollowers(item.userId)">移除</button></view>
            </view>
            <view class="list-none" v-show="followers.length == 0">
               <text>暂无跟进人</text>
            </view>
         </view>
      </scroll-view>
      <view class="foot">
         <button  size="mini" type="warn" @click="del(id)">删除</button>
      </view>
      <view>
         <!-- 输入框示例 -->
         <uni-popup ref="inputDialog" type="dialog">
            <uni-popup-dialog ref="inputClose" mode="input" title="添加跟进人" value="对话框预置提示内容!"
               placeholder="请输入内容" @confirm="confirm">
                  <uni-combox :candidates="addFollower.followers" placeholder="请选择"
                  v-model="addFollower.follower" @input="autoLoad('follower',addFollower.follower)"></uni-combox>
            </uni-popup-dialog>
         </uni-popup>
      </view>
   </view>
</template>
<script>
   export default {
      data() {
         return {
            id: 0,
            cstmr: {
               id: '',
               name: '',
               tel: '',
               addr: '',
               cstman: ''
            },
            addFollower: {
               follower: '',
               followers: '',
               followerList: []
            },
            followers: [],
            cstmrId: ''
         }
      },
      onLoad(option) {
         this.id = option.id
         this.init()
         this.autoLoad('follower','')
         setTimeout(()=>{
            this.getFollowers()
         },500)
      },
      methods: {
         init() {
            let that = this
            uni.request({
               url: that.baseUrl + '/cstmr/' + that.id +'/auth',
               header: {'token' : uni.getStorageSync('token')},
               method: 'GET',
               success(res) {
                  res = res.data
                  that.cstmr = res.data
                  that.cstmrId = that.cstmr.id
               }
            })
         },
         del(e) {
            let that = this
            e = Number(e)
            uni.request({
               url: that.baseUrl + '/cstmr/delete/one/' + e,
               header: {'token' : uni.getStorageSync('token'),
               },
               method: 'GET',
               success(res) {
                  console.log(res);
                  res = res.data
                  if (res.code === 200) {
                     uni.navigateBack()
                  } else if (res.code === 403) {
                     uni.showToast({title: res.msg, icon: "none", position: 'top'})
                     setTimeout(() => {
                        uni.reLaunch({
                           url: '../../login/login'
                        });
                     }, 1000);
                  } else {
                     uni.showToast({title: res.msg, icon: "none",position: 'top'})
                  }
               }
            })
         },
         addPerson() {
            this.$refs.inputDialog.open()
         },
         // 确认选择工作人
         confirm() {
            let that = this
            var followerId
            var followerList = that.addFollower.followerList
            for (var i = 0;i < followerList.length; i++) {
               if (followerList[i].name == this.addFollower.follower) {
                  followerId =followerList[i].value
               }
            }
            uni.request({
               url: that.baseUrl + '/cstmr/followers/add/json',
               header:{'token':uni.getStorageSync('token'),
                  // 'content-type':'application/x-www-form-urlencoded',
                  },
               data: {
                  cstmrId: that.cstmrId,
                  followerIds:followerId},
               method: 'POST',
               success(result) {
                  var res = result.data
                  that.getFollowers()
               }
            })
            this.addFollower.follower = ''
         },
         // 工作人列表
         autoLoad(type,condition) {
            let that = this
            that.addFollower.followers = []
            that.addFollower.followerList = []
            uni.request({
               url: that.baseUrl + '/user/all/get/kv',
               header:{'token':uni.getStorageSync('token')},
               data: {condition:condition},
               method: 'POST',
               success(result) {
                  var res = result.data
                  if (res.code === 200) {
                     var element;
                     if (type == 'follower') {
                        for(element of res.data) {
                           that.addFollower.followers.push(element.name)
                           that.addFollower.followerList.push(element)
                        }
                        return
                     }
                  }
               }
            })
         },
         getFollowers() {
            let that = this
            uni.request({
               url: that.baseUrl + '/cstmr/followers/table/auth',
               header:{'token':uni.getStorageSync('token')},
               data: {cstmrId:that.cstmrId},
               method:'GET',
               success(res) {
                  res = res.data
                  that.followers = res.data
               }
            })
         },
         removeFollowers(userId) {
            let that = this
            uni.request({
               url: that.baseUrl + '/cstmr/followers/remove/auth',
               header:{
                  'token':uni.getStorageSync('token'),
                  'content-type': 'application/x-www-form-urlencoded'
               },
               data: {
                  cstmrId:that.cstmrId,
                  userId: userId
                  },
               method:'POST',
               success(res) {
                  res = res.data
                  that.getFollowers()
               }
            })
         }
      }
   }
</script>
<style>
   .header {
      width: auto;
      min-height: 110rpx;
      background-color: #fff;
      padding: 30px 20px 10px 20px;
   }
   .cstmr-name {
      display: flex;
      height: 35rpx;
      line-height: 35rpx;
      text-indent: 10rpx;
      font-size: 36rpx;
      color: #606266;
   }
   .cstmr-name image {
      width: 35rpx;
      height: 35rpx;
   }
   .cstmr-tel {
      min-height: 60rpx;
      line-height: 60rpx;
      font-size: 24rpx;
      color: #303133;
   }
   .container {
      margin-top: 10px;
      padding: 10rpx 20rpx 0 20rpx;
      background-color: #fff;
      display: grid;
      grid-template-columns: 1fr 3fr;
   }
   .container:last-child {
      grid-template-columns: 5fr 5fr 2fr;
      margin-bottom: 120rpx;
   }
   .list-item1 {
      min-height: 45rpx;
      line-height: 45rpx;
      color: #909399;
      text-indent: 30rpx;
   }
   .list-item2 {
      min-height: 45rpx;
      line-height: 45rpx;
      color: black;
   }
   .color-main {
      color: #55aaff
   }
   .foot {
      position: fixed;
      width: 100%;
      min-height: 100rpx;
      bottom: 0;
      margin-bottom: 0;
      background-color: #fff;
      border-top: 1px solid #efefef;
      display: flex;
      align-items: center;
   }
   .list {
      min-height: 60rpx;
      margin-top: 20rpx;
      grid-column: 1 / 10;
      display: grid;
      grid-template-columns: 1fr 1fr;
      position: relative;
   }
   .list-left {
      min-height: 60rpx;
      line-height: 60rpx;
      padding-left: 20rpx;
      color: #55aaff
   }
   .list-right {
      min-height: 60rpx;
      line-height: 60rpx;
      /* background-color: #222; */
      padding-right: 30rpx;
   }
   .list-none {
      min-height: 60rpx;
      margin-top: 20rpx;
      text-align: center;
      /* background-color: #303133; */
      color: #b1b3b8;
      grid-column: 1 / 10;
      display: grid;
      position: relative;
   }
</style>