于继渤 1 år sedan
förälder
incheckning
eb45d5b00d

+ 1 - 1
api/pages/mst/customer.js

@@ -38,7 +38,7 @@ module.exports = {
       choosecusFrom: { key: 'choosecusFrom', url: '/package-base-select/pages/select-data/select-data', type: 'customerFrom' },
       chooseStaff: { key: 'chooseStaff', url: '/package-base-select/pages/select-data/select-data',type:'staff'  },
       chooseOrg: { key: 'chooseOrg',url: '/package-base-select/pages/select-data/select-data',type:'org' }, 
-      collection:{ key: 'collection', url: '/package-sales/pages/customer-collection/customer-collection', formMode: 'index', idKey: 'cusId' } //跳转客户收款
+      collection:{ key: 'collection', url: '/package-sales/pages/customer-collection/customer-collection', formMode: 'index', idKey: 'cusId', image:'btn-customer-collection.png' } //跳转客户收款
     }
   }
 };

+ 1 - 0
i18n/zh-CN.js

@@ -288,6 +288,7 @@ const columns = {
   null: '',
   test: '测试',
   followCount: '跟进次数',
+  followType: '跟进方式',
   nextFollowTime: '跟进提醒',
   follow: '客户跟进',
   customerName: '客户名称',

+ 63 - 32
package-basic-data/pages/customer-follow-up/customer-follow-up.js

@@ -21,7 +21,7 @@ Page({
     routeObjName: 'cusFollow',
     cardList: ['main'],
     buttonSaveList: [{ code: 'add', title: mixins.$t('save'), width: '120rpx' }],
-    id:'10112024-0407-0000-0000-0000296189a7',
+    id: '10112024-0407-0000-0000-0000296189a7',
     contentObj: {
       main: [
         { code: 'cusName', type: 'str', required: true, title: mixins.$t('customerName') },
@@ -29,12 +29,39 @@ Page({
         { code: 'addressFull', type: 'address', title: mixins.$t('addressFull'), required: false },
         { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo') },
         { code: 'intention', name: 'intentionName', type: 'drop', required: true, dropType: 'customerIntention', title: mixins.$t('intention') },
+        { code: 'followType', name: 'followTypeName', type: 'textarea', dropType: 'followType', type: 'drop', required: true, title: mixins.$t('followType') },
         { code: 'followData', type: 'textarea', required: true, title: mixins.$t('followData') },
         { code: 'nextFollowTime', type: 'dateTime', required: true, title: mixins.$t('nextFollowTime') },
         { code: 'stayTimeLen', name: 'stayTimeLenName', required: true, title: mixins.$t('stayTimeLen'), dropType: 'storeRetentionTime', type: 'drop', },
       ],
     },
   },
+  chooseData(e) {
+
+    let code = e.detail.code
+    if (code == 'followType') {
+      let formData = JSON.parse(this.data.formData)
+      let contentObj = this.data.contentObj
+      //电话、微信时留店时长是非必输
+      if (formData.followType == '跟进方式-电话' || formData.followType == '跟进方式-微信') {
+        contentObj.main.forEach(res => {
+          if (res.code == 'stayTimeLen') {
+            res.required = false
+          }
+        })
+      } else {
+        contentObj.main.forEach(res => {
+          if (res.code == 'stayTimeLen') {
+            res.required = true
+          }
+        })
+      }
+
+      this.setData({
+        contentObj:contentObj
+      })
+    }
+  },
   /**
   * @desc : 设置保存参数
   * @date : 2024/2/1 15:49
@@ -210,21 +237,22 @@ Page({
       { code: 'addressFull', type: 'address', title: mixins.$t('addressFull'), required: false },
       { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo') },
       { code: 'intention', name: 'intentionName', type: 'drop', required: true, dropType: 'customerIntention', title: mixins.$t('intention') },
-
+      { code: 'followType', name: 'followTypeName', type: 'textarea', dropType: 'followType', type: 'drop', required: true, title: mixins.$t('followType') },
       { code: 'followData', type: 'textarea', required: true, title: mixins.$t('followData') },
       { code: 'nextFollowTime', type: 'dateTime', required: true, title: mixins.$t('nextFollowTime') },
       { code: 'stayTimeLen', name: 'stayTimeLenName', required: true, title: mixins.$t('stayTimeLen'), dropType: 'storeRetentionTime', type: 'drop', },
     ]
 
     let radioFollowUpList11 = [
-      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'),readonly:true },
-      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone') ,readonly:true },
-      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'),readonly:true  },
-      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'),readonly:true  },
-      { code: 'intentionName', type: 'str', required: false, title: mixins.$t('intention'),readonly:true  },
-      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'),readonly:true  },
-      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'),readonly:true  },
-      { code: 'stayTimeLenName', type: 'str', required: false, title: mixins.$t('stayTimeLen'),readonly:true  },
+      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'), readonly: true },
+      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone'), readonly: true },
+      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'), readonly: true },
+      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'), readonly: true },
+      { code: 'intentionName', type: 'str', required: false, title: mixins.$t('intention'), readonly: true },
+      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'), readonly: true },
+      { code: 'followName', type: 'textarea', required: false, title: mixins.$t('followType'), readonly: true },
+      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'), readonly: true },
+      { code: 'stayTimeLenName', type: 'str', required: false, title: mixins.$t('stayTimeLen'), readonly: true },
     ]
     let radioFollowUpList2 = [
       { code: 'cusName', type: 'str', required: true, title: mixins.$t('customerName') },
@@ -234,19 +262,22 @@ Page({
       { code: 'inviteResult', name: 'inviteResultName', type: 'drop', required: true, dropType: 'inviteResult', title: mixins.$t('inviteResult') },
       { code: 'inviteTime', type: 'dateTime', required: true, title: mixins.$t('inviteResult') },
       { code: 'intention', name: 'intentionName', type: 'drop', required: true, dropType: 'customerIntention', title: mixins.$t('intention') },
+      { code: 'followType', name: 'followTypeName', type: 'textarea', dropType: 'followType', type: 'drop', required: true, title: mixins.$t('followType') },
       { code: 'followData', type: 'textarea', required: true, title: mixins.$t('followData') },
       { code: 'nextFollowTime', type: 'dateTime', required: true, title: mixins.$t('nextFollowTime') },
     ]
     let radioFollowUpList22 = [
-      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'),readonly:true },
-      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone') ,readonly:true },
-      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'),readonly:true  },
-      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'),readonly:true  },
-      { code: 'inviteResult', type: 'str', required: false, title: mixins.$t('inviteResult'),readonly:true  },
-      { code: 'inviteTime', type: 'str', required: false, title: mixins.$t('inviteTime'),readonly:true  },
-      { code: 'intentionName', type: 'str', required: false, title: mixins.$t('intention'),readonly:true  },
-      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'),readonly:true  },
-      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'),readonly:true  },
+      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'), readonly: true },
+      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone'), readonly: true },
+      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'), readonly: true },
+      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'), readonly: true },
+      { code: 'inviteResult', type: 'str', required: false, title: mixins.$t('inviteResult'), readonly: true },
+      { code: 'inviteTime', type: 'str', required: false, title: mixins.$t('inviteTime'), readonly: true },
+      { code: 'intentionName', type: 'str', required: false, title: mixins.$t('intention'), readonly: true },
+      { code: 'followName', type: 'textarea', required: false, title: mixins.$t('followType'), readonly: true },
+      
+      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'), readonly: true },
+      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'), readonly: true },
     ]
     let radioFollowUpList3 = [
       { code: 'cusName', type: 'str', required: true, title: mixins.$t('customerName') },
@@ -261,29 +292,29 @@ Page({
 
     ]
     let radioFollowUpList33 = [
-      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'),readonly:true },
-      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone') ,readonly:true },
-      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'),readonly:true  },
-      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'),readonly:true  },
-      { code: 'designStaffName', type: 'str', required: false, title: mixins.$t('designStaff'),readonly:true  },
-   
-      { code: 'inviteResultName', type: 'str', required: false, title: mixins.$t('inviteResult'),readonly:true  },
+      { code: 'cusName', type: 'str', required: false, title: mixins.$t('customerName'), readonly: true },
+      { code: 'cusPhone', type: 'str', required: false, title: mixins.$t('cusPhone'), readonly: true },
+      { code: 'addressFull', type: 'str', required: false, title: mixins.$t('addressFull'), readonly: true },
+      { code: 'addressNo', type: 'str', required: false, title: mixins.$t('addressNo'), readonly: true },
+      { code: 'designStaffName', type: 'str', required: false, title: mixins.$t('designStaff'), readonly: true },
+
+      { code: 'inviteResultName', type: 'str', required: false, title: mixins.$t('inviteResult'), readonly: true },
 
-      { code: 'followTime', type: 'str', required: false, title: mixins.$t('nextFollowTimeS'),readonly:true  },
-      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'),readonly:true  },
-      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'),readonly:true  },
+      { code: 'followTime', type: 'str', required: false, title: mixins.$t('nextFollowTimeS'), readonly: true },
+      { code: 'followData', type: 'textarea', required: false, title: mixins.$t('followData'), readonly: true },
+      { code: 'nextFollowTime', type: 'str', required: false, title: mixins.$t('nextFollowTime'), readonly: true },
 
     ]
     let contentObj = this.data.contentObj
     // let radioFollowUp = this.data.radioFollowUp
     if (radioFollowUp == '1') {
-      contentObj.main = this.data.formType == 'detail' ? radioFollowUpList11:radioFollowUpList1 
+      contentObj.main = this.data.formType == 'detail' ? radioFollowUpList11 : radioFollowUpList1
     }
     if (radioFollowUp == '2') {
-      contentObj.main =  this.data.formType == 'detail' ? radioFollowUpList22:radioFollowUpList2
+      contentObj.main = this.data.formType == 'detail' ? radioFollowUpList22 : radioFollowUpList2
     }
     if (radioFollowUp == '3') {
-      contentObj.main =  this.data.formType == 'detail' ? radioFollowUpList33:radioFollowUpList3
+      contentObj.main = this.data.formType == 'detail' ? radioFollowUpList33 : radioFollowUpList3
     }
     this.setData({
       contentObj: contentObj

+ 47 - 14
package-basic-data/pages/customer-list/add/add.js

@@ -17,6 +17,7 @@ Page({
    */
   data: {
     routeObjName: 'customer',
+    saleChannelService: app.globalData['saleChannelService'],
     cardList: ['main', 'center', 'remarks'],
     buttonSaveList: [{ code: 'add', title: mixins.$t('save'), width: '120rpx' }],
     contentObj: {
@@ -32,10 +33,10 @@ Page({
       center: [
         { code: 'channelId', name: 'channelName', required: true, title: mixins.$t('saleChannel'), type: 'choose', urlKey: 'chooseChannel' },
 
-       
+
         { code: 'staffId', name: 'staffName', type: 'choose', required: true, title: mixins.$t('saleStaff'), urlKey: 'chooseStaff' },
         { code: 'orgId', name: 'orgName', type: 'choose', required: true, title: mixins.$t('saleOrg'), urlKey: 'chooseOrg' },
-        { code: 'initialDebt', type: 'number', required: false, title:'初始欠款' },
+        { code: 'initialDebt', type: 'number', required: false, title: '初始欠款' },
 
 
       ],
@@ -63,18 +64,18 @@ Page({
       formData.orgId = data.id
       formData.orgName = data.name
     }
-      //销售渠道
-      if (code == 'channelId') {
-        formData.channelId = data.id
-        formData.channelCode = data.code
-        formData.channelName = data.name
-      }
-      //客户来源
-      if (code == 'cusFrom') {
-        formData.cusFrom = data.id
-        formData.cusFromCode = data.code
-        formData.cusFromName = data.name
-      }
+    //销售渠道
+    if (code == 'channelId') {
+      formData.channelId = data.id
+      formData.channelCode = data.code
+      formData.channelName = data.name
+    }
+    //客户来源
+    if (code == 'cusFrom') {
+      formData.cusFrom = data.id
+      formData.cusFromCode = data.code
+      formData.cusFromName = data.name
+    }
     this.setData({
       formData: JSON.stringify(formData)
     })
@@ -112,6 +113,35 @@ Page({
       formData: JSON.stringify(data)
     })
   },
+
+  /**
+  * @desc : 设置销售渠道/人员/业务部门
+  * @date : 2024/2/1 15:49
+  * @author : 于继渤
+  */
+  getDefChannel() {
+    this.excute(this.data.saleChannelService, this.data.saleChannelService.selectByCond, {
+      flgDefault: true
+    }).then(res => {
+      if (res.data.code == 200) {
+        let formData = JSON.parse(this.data.formData)
+        if (res.data.data.list && res.data.data.list.length > 0) {
+          formData.channelId = res.data.data.list[0].channelId
+          formData.channelName = res.data.data.list[0].channelName
+          formData.channelCode = res.data.data.list[0].channelCode
+        }
+        formData.staffId = app.globalData.user.staffId
+        formData.staffName = app.globalData.user.staffName
+        formData.orgId = app.globalData.user.orgId
+        formData.orgName = app.globalData.user.orgName
+        //设置默认值
+        this.setData({
+          formData: JSON.stringify(formData)
+        })
+      }
+    })
+  },
+
   /**
    * 生命周期函数--监听页面加载
    */
@@ -121,6 +151,9 @@ Page({
       wx.setNavigationBarTitle({
         title: mixins.$t('editCus'),
       })
+    } else {
+      //设置默认值
+      this.getDefChannel()
     }
   },
 

+ 2 - 2
package-basic-data/pages/customer-list/detail/detail.wxml

@@ -41,7 +41,7 @@
     <view style="display: flex;">
       <view class="number">
         <view class="order-summary">
-          <dk-cell center="center" height="46rpx" spaceWidth="1rpx" left="0" fontSize="17" contentColor="#1B365D" fontWeight="600" title="" content="{{item.orderAmount}}"></dk-cell>
+          <dk-cell center="center" height="46rpx" spaceWidth="1rpx" left="0" fontSize="17" contentColor="#1B365D" fontWeight="600" title="" content="{{item.orderAmount ? item.orderAmount : 0}}"></dk-cell>
         </view>
         <view class="oreder-summary-detail">
           订单({{item.orderQuantity}}单)
@@ -50,7 +50,7 @@
 
       <view class="number">
         <view class="order-summary">
-          <dk-cell center="center" height="46rpx" spaceWidth="1rpx" left="0" fontSize="17" contentColor="#1B365D" fontWeight="600" title="" content="{{item.outboundAmount}}"></dk-cell>
+          <dk-cell center="center" height="46rpx" spaceWidth="1rpx" left="0" fontSize="17" contentColor="#1B365D" fontWeight="600" title="" content="{{item.outboundAmount ? item.outboundAmount : 0}}"></dk-cell>
         </view>
         <view class="oreder-summary-detail">
           出库({{item.outboundQuantity}}单)

+ 2 - 1
package-basic-data/pages/customer-reception/add/add.js

@@ -47,6 +47,7 @@ Page({
    */
   setParams(params) {
     params.followStatus = this.data.followStatus
+    params.followType = '跟进方式-进店'
     params.followOrg = app.globalData.user.orgId
     return params
   },
@@ -232,7 +233,7 @@ Page({
       { code: 'file', type: 'uploader', title: mixins.$t("uploader") }
     ]
     let radioFollowUpTwolist = [
-      { code: 'intention', name: 'intentionName', type: 'drop', required: true, dropType: 'customerIntention', title: mixins.$t('intention') },
+      // { code: 'intention', name: 'intentionName', type: 'drop', required: true, dropType: 'customerIntention', title: mixins.$t('intention') },
       { code: 'remarks', type: 'textarea', rows: '5', required: true, showWordLimit: true, title: mixins.$t('followData') },
       { code: 'stayTimeLen', name: 'stayTimeLenName', required: true, title: mixins.$t('stayTimeLen'), dropType: 'storeRetentionTime', type: 'drop', },
       { code: 'file', type: 'uploader', title: mixins.$t("uploader") }