Przeglądaj źródła

客户暂存,暂时还剩功能没做

xiaohaizhao 2 miesięcy temu
rodzic
commit
38fee9b677

+ 25 - 2
CRM/customer/detail.js

@@ -32,9 +32,9 @@ Page({
     this.setData({
       sa_customersid: options.id
     });
-    this.getCustomerDetail();
+    this.getDetail();
   },
-  getCustomerDetail(id) {
+  getDetail() {
     this.setData({
       loading: true
     });
@@ -58,6 +58,7 @@ Page({
           title: '获取客户详情失败',
           icon: 'none'
         });
+        this.partialRenewal(true)
       }
     }).catch(err => {
       console.error("获取客户详情失败", err);
@@ -75,5 +76,27 @@ Page({
     this.setData({
       tabsActive: e.detail
     });
+    this.partialRenewal();
+  },
+  partialRenewal(init = false) {
+    let model = this.data.tabsList[this.data.tabsActive].model;
+    if (model) {
+      let Component = this.selectComponent(model),
+        {
+          total,
+          pageNumber,
+          pageTotal
+        } = Component.data.content,
+        id = this.data.sa_customersid;
+      if (total == null || init) {
+        Component.getList(id, init);
+      } else if (pageNumber <= pageTotal) {
+        Component.getList(id, false);
+      }
+    }
+  }, //tabs 切换
+  /* 页面触底 */
+  onReachBottom() {
+    this.partialRenewal();
   }
 });

+ 4 - 4
CRM/customer/detail.wxml

@@ -41,10 +41,10 @@
 
 <view style="height: 20rpx;" />
 <Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
-  <FollowRecord slot='跟进记录' id='FollowRecord' />
-  <Order slot='订单' id='Order' />
-  <WorkOrder slot='工单' id='WorkOrder' />
-  <WarrantyCard slot='保修卡' id='WarrantyCard' />
+  <FollowRecord slot='跟进记录' id='FollowRecord' customer-id="{{detail.sa_customersid}}" />
+  <Order slot='订单' id='Order' customer-id="{{detail.sa_customersid}}" />
+  <WorkOrder slot='工单' id='WorkOrder' customer-id="{{detail.sa_customersid}}" />
+  <WarrantyCard slot='保修卡' id='WarrantyCard' customer-id="{{detail.sa_customersid}}" />
 </Yl_FunTabs>
 
 <view style="height: 130rpx;" />

+ 101 - 2
CRM/customer/modules/followRecord/index.js

@@ -1,8 +1,107 @@
+const _Http = getApp().globalData.http;
+
 Component({
   data: {
     // 跟进记录数据
+    followRecords: [],
+    loading: false,
+    pageNumber: 1,
+    pageSize: 10,
+    hasMore: true,
+    total: null,
+    pageTotal: 0
+  },
+  properties: {
+    customerId: {
+      type: String,
+      value: '',
+      observer: function(newVal) {
+        if (newVal) {
+          this.resetData();
+          this.getList(newVal, true);
+        }
+      }
+    }
   },
   methods: {
-    // 跟进记录相关方法
+    // 重置数据
+    resetData() {
+      this.setData({
+        followRecords: [],
+        pageNumber: 1,
+        hasMore: true,
+        loading: false,
+        total: null,
+        pageTotal: 0
+      });
+    },
+    // 获取列表数据(用于页面触底调用)
+    getList(id, init = false) {
+      if (this.data.loading || (!init && !this.data.hasMore)) return;
+      
+      if (init) {
+        this.resetData();
+      }
+      
+      this.setData({ loading: true });
+      
+      // 这里需要根据实际的跟进记录API进行修改
+      const params = {
+        id: 2026030916272601, // 假设的API ID,需要根据实际情况修改
+        content: {
+          sa_customersid: id,
+          pageNumber: this.data.pageNumber,
+          pageSize: this.data.pageSize
+        },
+        accesstoken: '070e3fc9d8534630a4ccc323cd1e461b',
+        systemappid: 126
+      };
+      
+      _Http.basic(params, res => {
+        this.setData({ loading: false });
+        if (res.code == 1) {
+          const newData = res.data.list || [];
+          const followRecords = init ? newData : [...this.data.followRecords, ...newData];
+          const total = res.data.total || 0;
+          const pageTotal = Math.ceil(total / this.data.pageSize);
+          
+          this.setData({
+            followRecords,
+            total,
+            pageTotal,
+            pageNumber: this.data.pageNumber + 1,
+            hasMore: newData.length >= this.data.pageSize
+          });
+        } else {
+          wx.showToast({
+            title: res.msg || '获取跟进记录失败',
+            icon: 'none'
+          });
+        }
+      }, err => {
+        this.setData({ loading: false });
+        wx.showToast({
+          title: '网络错误',
+          icon: 'none'
+        });
+      });
+    },
+    // 下拉刷新
+    onPullDownRefresh() {
+      this.getList(this.properties.customerId, true);
+      wx.stopPullDownRefresh();
+    },
+    // 上拉加载
+    onReachBottom() {
+      this.getList(this.properties.customerId, false);
+    }
+  },
+  lifetimes: {
+    attached() {
+      // 组件初始化时获取数据
+      if (this.properties.customerId) {
+        this.getList(this.properties.customerId, true);
+      }
+    }
   }
-});
+});

+ 127 - 0
CRM/customer/modules/order/details.js

@@ -0,0 +1,127 @@
+// CRM/customer/modules/order/details.js
+const _Http = getApp().globalData.http,
+  currency = require("../../../../utils/currency"),
+  CNY = value => currency(value, {
+    symbol: "¥",
+    precision: 2
+  }).format();
+
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    list: [],
+    loading: false,
+    sa_custorderid: '',
+    content: {
+      nocache: true,
+      pageNumber: 1,
+      pageSize: 20,
+      pageTotal: 1,
+      total: null
+    }
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    if (options.id) {
+      this.setData({ sa_custorderid: options.id });
+      this.getList(options.id, true);
+    }
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+    this.getList(this.data.sa_custorderid, true);
+    wx.stopPullDownRefresh();
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+    if (this.data.content.pageNumber <= this.data.content.pageTotal) {
+      this.getList(this.data.sa_custorderid, false);
+    }
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  },
+
+  /**
+   * 获取订单明细列表
+   */
+  getList(id, init) {
+    let content = this.data.content;
+    content.sa_custorderid = id || this.data.sa_custorderid;
+    if (init) {
+      content.pageNumber = 1;
+      this.setData({ loading: true });
+    }
+    _Http.basic({
+      "id": "2026031414243401",
+      content
+    }).then(res => {
+      this.setData({ loading: false });
+      console.log("订单明细列表", res)
+      if (res.code != 1) return wx.showToast({
+        title: res.msg,
+        icon: "none"
+      })
+      // 格式化金额数据
+      const formattedData = res.data.map(item => {
+        const amount = (item.price || 0) * (item.qty || 0);
+        return {
+          ...item,
+          showPrice: CNY(item.price || 0),
+          showAmount: CNY(amount)
+        };
+      })
+      this.setData({
+        list: res.pageNumber == 1 ? formattedData : this.data.list.concat(formattedData),
+        "content.pageNumber": res.pageNumber + 1,
+        "content.pageSize": res.pageSize,
+        "content.pageTotal": res.pageTotal,
+        "content.total": res.total
+      })
+    })
+  }
+})

+ 4 - 0
CRM/customer/modules/order/details.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {
+  }
+}

+ 44 - 0
CRM/customer/modules/order/details.scss

@@ -0,0 +1,44 @@
+.order-details {
+  background-color: #f5f5f5;
+  padding: 20rpx;
+
+  .text-red {
+    color: #ff0000;
+  }
+
+  .card-item {
+    background-color: #fff;
+    border-radius: 12rpx;
+    padding: 24rpx;
+    margin-bottom: 20rpx;
+
+    .card-header {
+      font-size: 32rpx;
+    }
+
+    .exp {
+      font-size: 26rpx;
+      color: #666;
+      line-height: 1.5;
+      margin-top: 8rpx;
+    }
+
+    .exp.full-width {
+      width: 100%;
+    }
+  }
+
+  .loading {
+    text-align: center;
+    color: #999;
+    padding: 20rpx 0;
+    font-size: 24rpx;
+  }
+
+  .no-more {
+    text-align: center;
+    color: #999;
+    padding: 20rpx 0;
+    font-size: 24rpx;
+  }
+}

+ 22 - 0
CRM/customer/modules/order/details.wxml

@@ -0,0 +1,22 @@
+<view class="order-details">
+  <view class="card-item" wx:for="{{list}}" wx:key="index">
+    <view class="card-header">
+      商品名称:{{item.itemname || '--'}}
+    </view>
+    <view class="exp">商品编码:{{item.itemno || '--'}}</view>
+    <view class="exp">商品型号:{{item.model || '--'}}</view>
+    <view class="exp">单位:{{item.unitname || '--'}}</view>
+    <view class="exp">数量:{{item.qty || '--'}}</view>
+    <view class="exp">折扣:{{item.discountrate || '--'}}</view>
+    <view class="exp">单价:{{item.showPrice || '--'}}</view>
+    <view class="exp">金额:{{item.showAmount || '--'}}</view>
+    <view class="exp">已出库数量:{{item.outqty || '--'}}</view>
+    <view class="exp full-width">备注:{{item.remarks || '--'}}</view>
+    <view class="exp full-width">序列号:{{item.sku || '--'}}</view>
+  </view>
+
+  <view wx:if="{{loading}}" class="loading">
+    加载中...
+  </view>
+  <Yl_Empty wx:if="{{list.length==0}}" />
+</view>

+ 59 - 3
CRM/customer/modules/order/index.js

@@ -1,8 +1,64 @@
+const _Http = getApp().globalData.http,
+  currency = require("../../../../utils/currency"),
+  CNY = value => currency(value, {
+    symbol: "¥",
+    precision: 2
+  }).format();
+
 Component({
+  properties: {
+    id: {
+      type: String,
+      value: ''
+    }
+  },
   data: {
-    // 订单数据
+    list: [],
+    loading: false,
+    content: {
+      nocache: true,
+      pageNumber: 1,
+      pageSize: 10,
+      pageTotal: 1,
+      total: null
+    },
+    loading: false
   },
   methods: {
-    // 订单相关方法
+    /* 获取订单列表 */
+    getList(id, init) {
+      if (this.data.loading) return;
+      let content = this.data.content;
+      content.sa_customersid = id || this.data.id || this.data.sa_customersid;
+      if (init) {
+        content.pageNumber = 1;
+        this.setData({ loading: true });
+      }
+      _Http.basic({
+        "id": "2026030916334801",
+        content
+      }).then(res => {
+        this.setData({ loading: false });
+        console.log("客户订单列表", res)
+        if (res.code != 1) return wx.showToast({
+          title: res.msg,
+          icon: "none"
+        })
+        // 格式化金额数据
+        const formattedData = res.data.map(item => ({
+          ...item,
+          showAmount: CNY(item.amount || 0),
+          showUnpaidAmount: CNY((item.amount || 0) - (item.payamount || 0))
+        }))
+        this.setData({
+          list: res.pageNumber == 1 ? formattedData : this.data.list.concat(formattedData),
+          "content.pageNumber": res.pageNumber + 1,
+          "content.pageSize": res.pageSize,
+          "content.pageTotal": res.pageTotal,
+          "content.total": res.total,
+          "sa_customersid": content.sa_customersid
+        })
+      })
+    }
   }
-});
+})

+ 38 - 3
CRM/customer/modules/order/index.scss

@@ -1,9 +1,44 @@
 .order {
+  background-color: #f5f5f5;
   padding: 20rpx;
-  
-  .placeholder {
+
+  .text-red {
+    color: #ff0000;
+  }
+
+  .card-item {
+    background-color: #fff;
+    border-radius: 12rpx;
+    padding: 24rpx;
+    margin-bottom: 20rpx;
+
+    .card-header {
+      font-size: 32rpx;
+    }
+
+    .exp {
+      font-size: 26rpx;
+      color: #666;
+      line-height: 1.5;
+      margin-top: 8rpx;
+    }
+
+    .exp.full-width {
+      width: 100%;
+    }
+  }
+
+  .loading {
+    text-align: center;
+    color: #999;
+    padding: 20rpx 0;
+    font-size: 24rpx;
+  }
+
+  .no-more {
     text-align: center;
     color: #999;
-    padding: 100rpx 0;
+    padding: 20rpx 0;
+    font-size: 24rpx;
   }
 }

+ 17 - 1
CRM/customer/modules/order/index.wxml

@@ -1,3 +1,19 @@
 <view class="order">
-  <view class="placeholder">订单内容</view>
+  <navigator url="/CRM/customer/modules/order/details?id={{item.sa_custorderid}}" class="card-item" hover-class="navigator-hover" wx:for="{{list}}" wx:key="sa_custorderid">
+    <view class="card-header">
+      {{item.sonum || '--'}}
+    </view>
+    <view class="exp">订单状态:{{item.status || '--'}}</view>
+    <view class="exp">数量:{{item.qty || '--'}}</view>
+    <view class="exp">金额:{{item.showAmount || '--'}}</view>
+    <view class="exp">未收款金额:{{item.showUnpaidAmount || '--'}}</view>
+    <view class="exp">录入人:{{item.createby || '--'}}</view>
+    <view class="exp">录入时间:{{item.createdate || '--'}}</view>
+    <view class="exp full-width">备注:{{item.remarks || '--'}}</view>
+  </navigator>
+
+  <view wx:if="{{loading}}" class="loading">
+    加载中...
+  </view>
+  <Yl_Empty wx:if="{{list.length==0}}" />
 </view>

+ 35 - 3
CRM/customer/modules/warrantyCard/index.js

@@ -1,8 +1,40 @@
+const _Http = getApp().globalData.http;
+
 Component({
+  properties: {
+  },
   data: {
-    // 保修卡数据
+    content: {
+      nocache: true,
+      pageNumber: 1,
+      pageTotal: 1,
+      total: null
+    }
   },
   methods: {
-    // 保修卡相关方法
+    /* 获取产品列表 */
+    getList(id, init) {
+      let content = this.data.content;
+      content.sa_customersid = id || this.data.sa_customersid;
+      if (init) content.pageNumber = 1;
+      _Http.basic({
+        "id": "2026030916344401",
+        content
+      }).then(res => {
+        console.log("客户保修卡列表", res)
+        if (res.msg != '成功') return wx.showToast({
+          title: res.msg,
+          icon: "none"
+        })
+        this.setData({
+          list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+          "content.pageNumber": res.pageNumber + 1,
+          "content.pageSize": res.pageSize,
+          "content.pageTotal": res.pageTotal,
+          "content.total": res.total,
+          "sa_customersid": content.sa_customersid
+        })
+      })
+    }
   }
-});
+})

+ 34 - 3
CRM/customer/modules/warrantyCard/index.scss

@@ -1,9 +1,40 @@
 .warranty-card {
+  background-color: #f5f5f5;
   padding: 20rpx;
-  
-  .placeholder {
+
+  .text-red {
+    color: #ff0000;
+  }
+
+  .card-item {
+    background-color: #fff;
+    border-radius: 12rpx;
+    padding: 24rpx;
+    margin-bottom: 20rpx;
+
+    .card-header {
+      font-size: 32rpx;
+    }
+
+    .exp {
+      font-size: 26rpx;
+      color: #666;
+      line-height: 1.5;
+      margin-top: 8rpx;
+    }
+  }
+
+  .loading {
+    text-align: center;
+    color: #999;
+    padding: 20rpx 0;
+    font-size: 24rpx;
+  }
+
+  .no-more {
     text-align: center;
     color: #999;
-    padding: 100rpx 0;
+    padding: 20rpx 0;
+    font-size: 24rpx;
   }
 }

+ 19 - 1
CRM/customer/modules/warrantyCard/index.wxml

@@ -1,3 +1,21 @@
 <view class="warranty-card">
-  <view class="placeholder">保修卡内容</view>
+  <view class="card-item" wx:for="{{list}}" wx:key="index">
+    <view class="card-header">
+      保修卡号:{{item.cardno || '--'}}
+    </view>
+    <view class="exp">序列号:{{item.sku || '--'}}</view>
+    <view class="exp">商品名称:{{item.productname || '--'}}</view>
+    <view class="exp">商品编码:{{item.sku || '--'}}</view>
+    <view class="exp">型号:{{item.model || '--'}}</view>
+    <view class="exp">是否作废:<text class="{{item.isvoid == 1 ? 'text-red' : ''}}">{{item.isvoid == 1 ? '是' : '否'}}</text></view>
+    <view class="exp">生效日期:{{item.begdate || '--'}}</view>
+    <view class="exp">截止日期:{{item.enddate || '--'}}</view>
+    <view class="exp full-width">作废日期:{{item.voiddate || '--'}}</view>
+    <view class="exp full-width">作废原因:{{item.voidreason || '--'}}</view>
+  </view>
+
+  <view wx:if="{{loading}}" class="loading">
+    加载中...
+  </view>
+  <Yl_Empty wx:if="{{list.length==0}}" />
 </view>

+ 35 - 3
CRM/customer/modules/workOrder/index.js

@@ -1,8 +1,40 @@
+const _Http = getApp().globalData.http;
+
 Component({
+  properties: {
+  },
   data: {
-    // 工单数据
+    content: {
+      nocache: true,
+      pageNumber: 1,
+      pageTotal: 1,
+      total: null
+    }
   },
   methods: {
-    // 工单相关方法
+    /* 获取产品列表 */
+    getList(id, init) {
+      let content = this.data.content;
+      content.sa_customersid = id || this.data.sa_customersid;
+      if (init) content.pageNumber = 1;
+      _Http.basic({
+        "id": "2026030916342701",
+        content
+      }).then(res => {
+        console.log("客户工单列表", res)
+        if (res.msg != '成功') return wx.showToast({
+          title: res.msg,
+          icon: "none"
+        })
+        this.setData({
+          list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+          "content.pageNumber": res.pageNumber + 1,
+          "content.pageSize": res.pageSize,
+          "content.pageTotal": res.pageTotal,
+          "content.total": res.total,
+          "sa_customersid": content.sa_customersid
+        })
+      })
+    }
   }
-});
+})

+ 34 - 3
CRM/customer/modules/workOrder/index.scss

@@ -1,9 +1,40 @@
 .work-order {
+  background-color: #f5f5f5;
   padding: 20rpx;
-  
-  .placeholder {
+
+  .text-red {
+    color: #ff0000;
+  }
+
+  .card-item {
+    background-color: #fff;
+    border-radius: 12rpx;
+    padding: 24rpx;
+    margin-bottom: 20rpx;
+
+    .card-header {
+      font-size: 32rpx;
+    }
+
+    .exp {
+      font-size: 26rpx;
+      color: #666;
+      line-height: 1.5;
+      margin-top: 8rpx;
+    }
+  }
+
+  .loading {
+    text-align: center;
+    color: #999;
+    padding: 20rpx 0;
+    font-size: 24rpx;
+  }
+
+  .no-more {
     text-align: center;
     color: #999;
-    padding: 100rpx 0;
+    padding: 20rpx 0;
+    font-size: 24rpx;
   }
 }

+ 15 - 1
CRM/customer/modules/workOrder/index.wxml

@@ -1,3 +1,17 @@
 <view class="work-order">
-  <view class="placeholder">工单内容</view>
+  <view class="card-item" wx:for="{{list}}" wx:key="index">
+    <view class="card-header">
+      工单号:{{item.billno || '--'}}
+    </view>
+    <view class="exp">工单创建时间:{{item.createdate || '--'}}</view>
+    <view class="exp">工单状态:{{item.status || '--'}}</view>
+    <view class="exp">工单类型:{{item.servicetype || '--'}}</view>
+    <view class="exp">序列号:{{item.sku || '--'}}</view>
+    <view class="exp">负责人:{{item.submitby || item.allocationby || '--'}}</view>
+  </view>
+
+  <view wx:if="{{loading}}" class="loading">
+    加载中...
+  </view>
+  <Yl_Empty wx:if="{{list.length==0}}" />
 </view>

+ 2 - 1
app.json

@@ -121,7 +121,8 @@
         "warehouse/index",
         "warehouse/detail",
         "lead/index",
-        "lead/detail"
+        "lead/detail",
+        "customer/modules/order/details"
       ]
     }
   ],

+ 38 - 38
pages/login/modules/account.js

@@ -110,25 +110,25 @@ Component({
 					"imagecaptcha": this.data.imagecaptcha || '',
 					"systemclient": "wechatsaletool"
 				});
-				if (res.remindchangepassword) return wx.showModal({
-					title: '提示',
-					content: '当前密码为系统初始化密码,请修改后重新登录',
-					showCancel: false,
-					confirmText: "前去修改",
-					complete: () => {
-						wx.navigateTo({
-							url: '/pages/index/userCenter/changePassword/index?token=' + res.account_list[0].token
-						})
-						_Http.claerPassword = function () {
-							this.setData({
-								password: ""
-							})
-						}.bind(this);
-						getCurrentPages()[0].setData({
-							loading: false
-						})
-					}
-				})
+				// if (res.remindchangepassword) return wx.showModal({
+				// 	title: '提示',
+				// 	content: '当前密码为系统初始化密码,请修改后重新登录',
+				// 	showCancel: false,
+				// 	confirmText: "前去修改",
+				// 	complete: () => {
+				// 		wx.navigateTo({
+				// 			url: '/pages/index/userCenter/changePassword/index?token=' + res.account_list[0].token
+				// 		})
+				// 		_Http.claerPassword = function () {
+				// 			this.setData({
+				// 				password: ""
+				// 			})
+				// 		}.bind(this);
+				// 		getCurrentPages()[0].setData({
+				// 			loading: false
+				// 		})
+				// 	}
+				// })
 				getCurrentPages()[0].setData({
 					loading: false
 				})
@@ -152,25 +152,25 @@ Component({
 					"imagecaptcha": this.data.imagecaptcha || '',
 					"systemclient": "wechatsaletool"
 				});
-				if (res.remindchangepassword) return wx.showModal({
-					title: '提示',
-					content: '当前密码为系统初始化密码,请修改后重新登录',
-					showCancel: false,
-					confirmText: "前去修改",
-					complete: () => {
-						wx.navigateTo({
-							url: '/pages/index/userCenter/changePassword/index?token=' + res.account_list[0].token
-						})
-						_Http.claerPassword = function () {
-							this.setData({
-								password: ""
-							})
-						}.bind(this);
-						getCurrentPages()[0].setData({
-							loading: false
-						})
-					}
-				})
+				// if (res.remindchangepassword) return wx.showModal({
+				// 	title: '提示',
+				// 	content: '当前密码为系统初始化密码,请修改后重新登录',
+				// 	showCancel: false,
+				// 	confirmText: "前去修改",
+				// 	complete: () => {
+				// 		wx.navigateTo({
+				// 			url: '/pages/index/userCenter/changePassword/index?token=' + res.account_list[0].token
+				// 		})
+				// 		_Http.claerPassword = function () {
+				// 			this.setData({
+				// 				password: ""
+				// 			})
+				// 		}.bind(this);
+				// 		getCurrentPages()[0].setData({
+				// 			loading: false
+				// 		})
+				// 	}
+				// })
 				getCurrentPages()[0].setData({
 					loading: false
 				})

+ 15 - 1
project.private.config.json

@@ -25,12 +25,26 @@
     "miniprogram": {
       "list": [
         {
-          "name": "客户详情",
+          "name": "CRM/customer/detail",
           "pathName": "CRM/customer/detail",
           "query": "id=-12170327",
           "scene": null,
           "launchMode": "default"
         },
+        {
+          "name": "CRM/customer/detail",
+          "pathName": "CRM/customer/detail",
+          "query": "id=-12170327",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "客户详情",
+          "pathName": "CRM/customer/detail",
+          "query": "id=-12170327",
+          "launchMode": "default",
+          "scene": null
+        },
         {
           "name": "客户列表",
           "pathName": "CRM/customer/index",