Compare commits
376 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 70f2218f22 | |||
| 89dd5b800b | |||
| 9dd8f5e358 | |||
| e989f664a5 | |||
| 3c43344c7b | |||
| 9f23becd48 | |||
| 66ff4f7c73 | |||
| 42d23dbccd | |||
| a526a46a16 | |||
| abf0adfcf6 | |||
| 8fc072d52a | |||
| ce6ac9238c | |||
| 7d2d85ba97 | |||
| 419726a2e8 | |||
| ad6c7389c8 | |||
| 251e2eafdb | |||
| d51c29cb70 | |||
| bad5de9426 | |||
| 0d6b345477 | |||
| d822c959cb | |||
| 8fc6e4cec6 | |||
| d66d7a5bb8 | |||
| 65bd9e2b55 | |||
| 2a4596f249 | |||
| 5020402f10 | |||
| 0c259d0119 | |||
| ddc84a9551 | |||
| 4372744ca2 | |||
| cf8ea16dc2 | |||
| 838b468418 | |||
| 9a5a0d056f | |||
| 5b54793690 | |||
| 9a996d1fd2 | |||
| 6dcdcd9e05 | |||
| 4774dd42b4 | |||
| 59d4f0fd9f | |||
| 062235ba68 | |||
| aa23608aa5 | |||
| 89c27cb9e0 | |||
| 289a764026 | |||
| 4810f052cf | |||
| c94a19d968 | |||
| dce2233be8 | |||
| b260e7f18e | |||
| 85ed33ba8c | |||
| 43f60e87b6 | |||
| 0ed812ff7d | |||
| 8ec245f457 | |||
| db88dd4141 | |||
| 00f5190c5f | |||
| 0a638cd516 | |||
| 916700c3d7 | |||
| 5389cbe802 | |||
| 547a0d7a1d | |||
| 9b6fc9d972 | |||
| 5dfd7ffc30 | |||
| 509bd02299 | |||
| 71267c64e3 | |||
| bec388ab40 | |||
| 6c724ac21d | |||
| 7bf43deb33 | |||
| 6f80b130c8 | |||
| 63910b257b | |||
| 706c7f00fc | |||
| 6b7388719b | |||
| 4cca0525fc | |||
| 380dadbfa5 | |||
| 5c250d53de | |||
| 41dd758bff | |||
| b4c1100a13 | |||
| 10c680eff9 | |||
| 17876858d4 | |||
| a8e68bff32 | |||
| 5730cfea22 | |||
| e75cf13e85 | |||
| 4261b03e82 | |||
| ba06adb6a7 | |||
| e8e142d51a | |||
| bc0d42c08c | |||
| 63f479d72c | |||
| 406f0cf7e8 | |||
| 6765776ad9 | |||
| 2d0234e3aa | |||
| e3877ab86a | |||
| 8c7bd3985e | |||
| 3e40bd1d04 | |||
| bcdc92bd7d | |||
| 827048f2c4 | |||
| 178ab1ea72 | |||
| 706cf3a087 | |||
| b843c47ff7 | |||
| 93f0cf046a | |||
| 3147791b6b | |||
| 308b9008d1 | |||
| 321be4abac | |||
| 7e8892cfbf | |||
| ead124d8a4 | |||
| fdaa89d42a | |||
| f2d5e79464 | |||
| 6e412b88b7 | |||
| 67bf2bbbbe | |||
| b9cf0be6df | |||
| d5cc6898bd | |||
| 5ca9c9b9a7 | |||
| a43c6a6a4c | |||
| 6f713ffcf3 | |||
| 83023a5b50 | |||
| 6a20f801d5 | |||
| 5157016eac | |||
| 7a3673efd9 | |||
| dbf02638ed | |||
| 978d67eac1 | |||
| 3c62dab9d0 | |||
| d97c06a053 | |||
| e2fe0296ad | |||
| 890ab93010 | |||
| 7434edda76 | |||
| 8fb56e6aab | |||
| 5d9a46d12a | |||
| 22d52a2da7 | |||
| f45fc5893f | |||
| c843abb7bf | |||
| 0207310823 | |||
| a81e615f48 | |||
| c3a40e5bf5 | |||
| a6aa7063e8 | |||
| 533c448dcd | |||
| 4bd9d11c32 | |||
| 5dab9c70f4 | |||
| c04dda7a17 | |||
| d39b9213bb | |||
| 16bdc15eee | |||
| dc4596bdc7 | |||
| 95bfc1f075 | |||
| d85b9863a6 | |||
| 4508ebe87a | |||
| 217394e525 | |||
| 0d853d4cd1 | |||
| 59e71cfce6 | |||
| fcfb911273 | |||
| 2ae74d0aa5 | |||
| e7640860b4 | |||
| a644f0802d | |||
| ff375b0d8f | |||
| df18d36223 | |||
| 3d3530f074 | |||
| f0e621e056 | |||
| 80bb5427f9 | |||
| 548d47a8f4 | |||
| f7b5d039f0 | |||
| 51e8f70480 | |||
| 569a32d5ae | |||
| 939ae79a42 | |||
| 578632742e | |||
| 394614b3c0 | |||
| 3d3d756585 | |||
| 0c2963deb3 | |||
| 3db27c3444 | |||
| 74d89cb630 | |||
| fa4a9ef679 | |||
| a2028a2fac | |||
| aa6b83430a | |||
| 92092a482c | |||
| 0b5e431893 | |||
| fda266508a | |||
| 565bf3c053 | |||
| 08bf91b202 | |||
| 8749858003 | |||
| 7dcbc0c6e6 | |||
| 33ec78436a | |||
| 9074059858 | |||
| 0b065b05bc | |||
| 9cd9d83bea | |||
| aa9bf5fb36 | |||
| 952d45b41b | |||
| 2212e682ff | |||
| 1543632b23 | |||
| 715f8c9816 | |||
| e38eba359c | |||
| a0d379cb18 | |||
| 940d6829b4 | |||
| 90e7a641b7 | |||
| 6f5fa61de0 | |||
| 970fa4ae64 | |||
| 31f3d5f63f | |||
| f31d348134 | |||
| 6c63b74afc | |||
| f77676a5c7 | |||
| 420fd64c06 | |||
| 4219f745b4 | |||
| d694f57dc8 | |||
| cdb409796b | |||
| c2cfb7a295 | |||
| 6d3fe307b2 | |||
| b452fccee1 | |||
| 4e67e362b2 | |||
| 3beb630357 | |||
| bfc64dd8cc | |||
| b5c729260a | |||
| 7efedb3e7a | |||
| 5e04eb4f35 | |||
| 777a4d81c5 | |||
| 86b2543d84 | |||
| b6548ae0d7 | |||
| 637627b80f | |||
| 0e5716edab | |||
| f1a03674e1 | |||
| f90c077767 | |||
| 29650d44c7 | |||
| bb95bf51d6 | |||
| 4aa477e842 | |||
| 33c6d3490a | |||
| a1797c09e5 | |||
| 3ec6c4c8a7 | |||
| df67ab05c1 | |||
| 4096d72bfc | |||
| d030e780d7 | |||
| 989db45e1f | |||
| 82b095c669 | |||
| c55ea9a4c5 | |||
| f111f9e267 | |||
| f112b2e631 | |||
| 83e4b59d72 | |||
| a8b8bef367 | |||
| 9f44b2e859 | |||
| 8af1ee4825 | |||
| 47e6bc5e4a | |||
| b6c7d0d31a | |||
| 2a7808f97c | |||
| 2837a99036 | |||
| 03c877ce0d | |||
| 517d487122 | |||
| 8b972a119a | |||
| f26417e4ea | |||
| 3914fd56cc | |||
| bdaa1931c1 | |||
| 3c2e376819 | |||
| 5102ee13c3 | |||
| 7ac003a353 | |||
| a629279504 | |||
| 4f4373e0c1 | |||
| 81c4e094c3 | |||
| ba83d73a4f | |||
| 5f3be8c3cd | |||
| 7ada03565c | |||
| b2a4167a95 | |||
| 25d006d3c6 | |||
| 8b2f95acc4 | |||
| 77e3241ee4 | |||
| 46b0dad571 | |||
| b07d77d72f | |||
| 83ac70f362 | |||
| b361a97ba2 | |||
| 4721f99f26 | |||
| 963b5b057d | |||
| 99aad8fa71 | |||
| b5d4022b29 | |||
| 15c3848ea3 | |||
| ed33505d75 | |||
| abe52f5140 | |||
| 381f6c53ef | |||
| 9608977d91 | |||
| 30eff0c60c | |||
| 2da40ba5d0 | |||
| dbc25ea37f | |||
| 7b11b0df0b | |||
| 3f4974a911 | |||
| 4def645552 | |||
| ceaed58886 | |||
| ea0246e65d | |||
| df33af98a0 | |||
| 20be8974c0 | |||
| 0a0b048678 | |||
| 7efb6220e6 | |||
| 20c31b2355 | |||
| 1618eb617c | |||
| f1cf644902 | |||
| 09539dbaa3 | |||
| bc020085ab | |||
| 701d94929b | |||
| 5017067902 | |||
| dcbb8311a4 | |||
| c5d89dc2fd | |||
| 63557aa3c3 | |||
| 5715dce9f8 | |||
| 89be62c9c7 | |||
| 6bfef2db4f | |||
| ad78074528 | |||
| 33d5d98002 | |||
| 27caa39798 | |||
| 39d45666ed | |||
| 11379c9947 | |||
| 7a3253fec3 | |||
| 5ad8832c3f | |||
| 4463c4bdeb | |||
| 605718568a | |||
| 9900068d5c | |||
| ae439f366b | |||
| 3b5d0ac818 | |||
| c21b3fa86d | |||
| c33d5b5de1 | |||
| 8e72b0c90e | |||
| 4aeed270cc | |||
| 8a33d55ba5 | |||
| 0443dda64f | |||
| f0aa4bc063 | |||
| ac19fdae29 | |||
| 6f197fe44e | |||
| 734c0a7c4f | |||
| 131ac1c801 | |||
| 2fe08f09fd | |||
| d93d3f6ad5 | |||
| 7f90476e1a | |||
| 229a3e6b71 | |||
| 95e137e903 | |||
| 113c14ea6e | |||
| 83de499465 | |||
| 1ae56ab426 | |||
| a1f7481af7 | |||
| 6d63e8dba1 | |||
| 44a186bab6 | |||
| f25a361f9a | |||
| a3098e2577 | |||
| 3c3b33c7a8 | |||
| b72ebe3fd1 | |||
| e9dd082fb4 | |||
| 7fc7114fc1 | |||
| 462812af6d | |||
| 010d260320 | |||
| 9327a9f1e9 | |||
| 74e18c4e50 | |||
| 9c95996316 | |||
| 173df5abaf | |||
| 726ea79abb | |||
| c8eb8c8229 | |||
| 9528e3fcbe | |||
| e73e5a45f6 | |||
| 0952e132f3 | |||
| b191518de8 | |||
| 3807777954 | |||
| cd09c9e5c4 | |||
| 00e1ec998e | |||
| a59972df1b | |||
| 7c6a144f6a | |||
| 837a31cb22 | |||
| 5bbba9001b | |||
| 8ecfaac95b | |||
| 4d6a1afbc7 | |||
| ef0d955515 | |||
| ec8b098607 | |||
| d81c8e1dc5 | |||
| 85f0bd91be | |||
| f1b1b15bfb | |||
| e52b238dde | |||
| ce288aaa64 | |||
| 9dab70e8e9 | |||
| 707db13bca | |||
| a57e4e6cca | |||
| 13ae50b1d2 | |||
| 6f238c978b | |||
| 9625bd3d64 | |||
| eed2b6650c | |||
| 96393b39f6 | |||
| a98b96f03e | |||
| 27ae79de64 | |||
| a59f50a49c | |||
| 47df56e683 | |||
| 31e2aae4a6 | |||
| 27f27fdb49 | |||
| 947bdce3ff | |||
| d552ecea8e | |||
| c90837fede | |||
| 1bf9e379f7 | |||
| feb1f976e2 | |||
| 424c642d32 | |||
| 15b9cba7c1 |
@@ -5,6 +5,10 @@ App({
|
||||
this.updateVersion()
|
||||
wx.getSystemInfo({
|
||||
success(res) {
|
||||
console.log(res)
|
||||
if(!!res.environment&&res.environment=='wxwork'){
|
||||
console.log('当前企业微信')
|
||||
}
|
||||
that.globalData.statusBarHeight = res.statusBarHeight;
|
||||
that.globalData.screenHeight = res.screenHeight;
|
||||
that.globalData.screenWidth = res.screenWidth;
|
||||
@@ -133,10 +137,11 @@ App({
|
||||
updateManager.onCheckForUpdate(function (res) {
|
||||
// 请求完新版本信息的回调
|
||||
})
|
||||
|
||||
updateManager.onUpdateReady(function () {
|
||||
wx.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已经准备好,是否重启应用?',
|
||||
content: '新版本已经准备好,\n是否重启应用?',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||
|
||||
@@ -21,7 +21,48 @@
|
||||
"pages/distribute/reward/index",
|
||||
"pages/distribute/statistics/index",
|
||||
"pages/distribute/assets/index",
|
||||
"pages/customer/editCard/index"
|
||||
"pages/customer/editCard/index",
|
||||
"pages/channel/index",
|
||||
"pages/dataAnalysis/index",
|
||||
"pages/distribute/special/index",
|
||||
"pages/customer/optDefeat/index",
|
||||
"pages/order/edit/index",
|
||||
"pages/distribute/storePoster/index",
|
||||
"pages/distribute/storePoster/modelList/index",
|
||||
"pages/allot/detail/index",
|
||||
"pages/allot/list/index",
|
||||
"pages/audioPlay/index",
|
||||
"pages/recommend/index",
|
||||
"pages/allot/index",
|
||||
"pages/storeInfo/index",
|
||||
"pages/order/detail/index2",
|
||||
"pages/order/edit/index2",
|
||||
"pages/order/editOwner/index",
|
||||
"pages/order/filterList/index2",
|
||||
"pages/siyutong/index",
|
||||
"pages/siyutong/activityDetail/index",
|
||||
"pages/siyutong/activityRanking/index",
|
||||
"pages/inventory/detail/index",
|
||||
"pages/inventory/list/index",
|
||||
"pages/inventory/warning/index",
|
||||
"pages/order/editFinance/index",
|
||||
"pages/statement/registration/index",
|
||||
"pages/statement/privacy/index",
|
||||
"pages/order/editCardid/index",
|
||||
"pages/order/editBusinessBicence/index",
|
||||
"pages/order/editLicenseImg/index",
|
||||
"pages/order/editInsImg/index",
|
||||
"pages/order/editOtherImg/index",
|
||||
"pages/storeData/index",
|
||||
"pages/storeData/customerData/index",
|
||||
"pages/storeData/wechatData/index",
|
||||
"pages/storeData/orderData/index",
|
||||
"pages/order/editDeliveryckimg/index",
|
||||
"pages/order/editQVImg/index",
|
||||
"pages/order/editVoucherImg/index",
|
||||
"pages/dataAnalysis/detail/index",
|
||||
"pages/order/editBuyer/index",
|
||||
"pages/storeData/subData/index"
|
||||
],
|
||||
"echarts": [
|
||||
{
|
||||
@@ -37,42 +78,6 @@
|
||||
"navigationBarTitleText": "狸车宝",
|
||||
"navigationBarTextStyle": "black"
|
||||
},
|
||||
"tabBar": {
|
||||
"color": "#999999",
|
||||
"selectedColor": "#000000",
|
||||
"borderStyle": "black",
|
||||
"backgroundColor": "#ffffff",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"iconPath": "commons/images/tab-home.png",
|
||||
"selectedIconPath": "commons/images/tab-home-ac.png",
|
||||
"badge": false,
|
||||
"text": "首页"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/customer/index",
|
||||
"iconPath": "commons/images/tab-customer.png",
|
||||
"selectedIconPath": "commons/images/tab-customer-ac.png",
|
||||
"badge": false,
|
||||
"text": "客户"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/order/index",
|
||||
"iconPath": "commons/images/tab-order.png",
|
||||
"selectedIconPath": "commons/images/tab-order-ac.png",
|
||||
"badge": false,
|
||||
"text": "订单"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/mine/index",
|
||||
"iconPath": "commons/images/tab-mine.png",
|
||||
"selectedIconPath": "commons/images/tab-mine-ac.png",
|
||||
"badge": false,
|
||||
"text": "我的"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sitemapLocation": "sitemap.json",
|
||||
"usingComponents": {
|
||||
"lcb-msg": "/components/msg/index",
|
||||
@@ -80,6 +85,9 @@
|
||||
"lcb-navBar": "/components/navBar/navBar",
|
||||
"lcb-footer": "/components/footer/footer",
|
||||
"lcb-listmore": "/components/listMore/index",
|
||||
"lcb-channelTabBarNav": "/components/channel-tab-bar/index",
|
||||
"lcb-shopTabBarNav": "/components/shop-tab-bar/index",
|
||||
"lcb-backChannel": "/components/backChannel/index",
|
||||
"QYWXcontact": "plugin://contactPlugin/cell",
|
||||
"kefuSuccess": "/components/kefuSuccess/index"
|
||||
},
|
||||
@@ -88,5 +96,8 @@
|
||||
"version": "1.4.1",
|
||||
"provider": "wx104a1a20c3f81ec2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"navigateToMiniProgramAppIdList": [
|
||||
"wx98e64c11aac45966"
|
||||
]
|
||||
}
|
||||
@@ -5,9 +5,12 @@
|
||||
.bg-e4{background-color:#e4e4e4;}
|
||||
.bg-ccc{background-color:#ccc;}
|
||||
.bg-666{background-color:#666;}
|
||||
.bg-999{background-color:#999;}
|
||||
.bg-333{background-color:#333;}
|
||||
.bg-1a{background-color: #1a1a1a;}
|
||||
.bg-36afa2{background-color:#36afa2;}
|
||||
.bg-f9394d{background-color:#f9394d;}
|
||||
.bg-3f4047{background-color:#3f4047;}
|
||||
|
||||
.bg-000-op30{background-color:rgba(0,0,0,.3);}
|
||||
.bg-000-op50{background-color:rgba(0,0,0,.5);}
|
||||
@@ -19,13 +22,21 @@
|
||||
.bg-fff-op50{background-color:rgba(255,255,255,.5);}
|
||||
.bg-fff-op80{background-color:rgba(255,255,255,.8);}
|
||||
.bg-fff-op90{background-color:rgba(255,255,255,.9);}
|
||||
.bg-fff-op95{background-color:rgba(255,255,255,.95);}
|
||||
.bg-000-gradual-30-60{background-image:linear-gradient(rgba(0,0,0,.3),rgba(0,0,0,.6));}
|
||||
|
||||
.bg-2f3346-1a1c26{background-image:linear-gradient(#2f3346,#1a1c26);}
|
||||
|
||||
.bg-f6-fff{background-image:linear-gradient(#f6f6f6,#fff);}
|
||||
|
||||
.bg-f3f6fc{background-color:#f3f6fc;}
|
||||
.bg-fffaeb{background-color:#fffaeb;}
|
||||
.bg-f1f9f8{background-color:#f1f9f8;}
|
||||
.bg-fff6f8{background-color:#fff6f8;}
|
||||
|
||||
.bg-e3f5f3{background-color:#e3f5f3;}
|
||||
.bg-e3f5f3{background-color:#e3f5f3;}
|
||||
.bg-2e3246{background-color:#2e3246;}
|
||||
.bg-ffedeb{background-color:#ffedeb;}
|
||||
|
||||
.bg-f0f4ff{background-color:#f0f4ff;}
|
||||
.bg-fffaf3{background-color:#fffaf3;}
|
||||
@@ -9,7 +9,19 @@
|
||||
.bds-1-eb{border:#ebebeb 1rpx solid; box-sizing:border-box;}
|
||||
.btd-1-eb{border-top:#ebebeb 1rpx dashed;box-sizing:border-box;}
|
||||
|
||||
.bds-2-eb{border:#ebebeb 2rpx solid; box-sizing:border-box;}
|
||||
|
||||
.bds-2-fff{border:#fff 2rpx solid; box-sizing:border-box;}
|
||||
|
||||
.bds-7dbeeb{border:#7dbeeb 1rpx solid;box-sizing:border-box;}
|
||||
.bds-2-36afa2{border:#36afa2 2rpx solid;box-sizing:border-box;}
|
||||
.bts-2-36afa2{border-top:#36afa2 2rpx solid;box-sizing:border-box;}
|
||||
.bls-2-36afa2{border-left:#36afa2 2rpx solid;box-sizing:border-box;}
|
||||
.brs-2-36afa2{border-right:#36afa2 2rpx solid;box-sizing:border-box;}
|
||||
.bbs-2-36afa2{border-bottom:#36afa2 2rpx solid;box-sizing:border-box;}
|
||||
.bds-2-f9394d{border:#f9394d 2rpx solid;box-sizing:border-box;}
|
||||
|
||||
.bts-1-474a65{border-top:#474a65 1rpx solid; box-sizing:border-box;}
|
||||
.bbs-1-474a65{border-bottom:#474a65 1rpx solid; box-sizing:border-box;}
|
||||
|
||||
.last-b-none:last-child{border-bottom:none;}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
.color-fff{color:#fff;}
|
||||
.color-f8{color:#f8f8f8;}
|
||||
.color-e4e4e4{color:#e4e4e4;}
|
||||
.color-1a{color:#1a1a1a;}
|
||||
.color-333{color:#333;}
|
||||
.color-666{color:#666;}
|
||||
.color-777{color:#777;}
|
||||
@@ -10,5 +11,7 @@
|
||||
.color-bbb{color:#bbb;}
|
||||
.color-ccc{color:#ccc;}
|
||||
.color-f9394d{color:#f9394d;}
|
||||
.color-fe4109{color:#fe4109;}
|
||||
.color-36afa2{color:#36afa2;}
|
||||
.color-00c800{color:#00c800;}
|
||||
.color-00c800{color:#00c800;}
|
||||
.color-575b6a{color:#575b6a;}
|
||||
@@ -20,9 +20,11 @@
|
||||
.font-54{font-size:54rpx;}
|
||||
.font-56{font-size:56rpx;}
|
||||
.font-60{font-size:60rpx;}
|
||||
.font-64{font-size:64rpx;}
|
||||
.font-66{font-size:66rpx;}
|
||||
.font-72{font-size:72rpx;}
|
||||
.font-75{font-size:75rpx;}
|
||||
.font-80{font-size:80rpx;}
|
||||
.font-90{font-size:90rpx;}
|
||||
.font-120{font-size:120rpx;}
|
||||
.font-120{font-size:120rpx;}
|
||||
.font-180{font-size:180rpx;}
|
||||
@@ -1,4 +1,4 @@
|
||||
.img-24x24{width:32rpx;height:32rpx;box-sizing:border-box;}
|
||||
.img-24x24{width:24rpx;height:24rpx;box-sizing:border-box;}
|
||||
.img-45x45{width:45rpx;height:45rpx;box-sizing:border-box;}
|
||||
.img-50x50{width:50rpx;height:50rpx;box-sizing:border-box;}
|
||||
.img-55x55{width:55rpx;height:55rpx;box-sizing:border-box;}
|
||||
@@ -12,14 +12,23 @@
|
||||
.img-100x100{width:100rpx;height:100rpx;box-sizing:border-box;}
|
||||
.img-120x120{width:120rpx;height:120rpx;box-sizing:border-box;}
|
||||
.img-125x75{width:125rpx;height:75rpx;box-sizing:border-box;}
|
||||
.img-130x130{width:130rpx;height:130rpx;box-sizing:border-box;}
|
||||
.img-135x135{width:135rpx;height:135rpx;box-sizing:border-box;}
|
||||
.img-140x140{width:140rpx;height:140rpx;box-sizing:border-box;}
|
||||
.img-160x160{width:160rpx;height:160rpx;box-sizing:border-box;}
|
||||
.img-190x175{width:190rpx;height:175rpx;box-sizing:border-box;}
|
||||
.img-200x180{width:200rpx;height:180rpx;box-sizing:border-box;}
|
||||
.img-208x170{width:208rpx;height:170rpx;box-sizing:border-box;}
|
||||
.img-220x200{width:220rpx;height:200rpx;box-sizing:border-box;}
|
||||
.img-250x150{width:250rpx;height:150rpx;box-sizing:border-box;}
|
||||
.img-250x250{width:250rpx;height:250rpx;box-sizing:border-box;}
|
||||
.img-250x445{width:250rpx;height:445rpx;box-sizing:border-box;}
|
||||
.img-300x200{width:300rpx;height:200rpx;box-sizing:border-box;}
|
||||
.img-300x230{width:300rpx;height:230rpx;box-sizing:border-box;}
|
||||
.img-750x250{width:750rpx;height:250rpx;box-sizing:border-box;}
|
||||
.img-750x422{width:100%;height:422rpx;box-sizing:border-box;}
|
||||
|
||||
.img-h-200{height:200rpx;box-sizing:border-box;}
|
||||
.img-w-260{width:260rpx;box-sizing:border-box;}
|
||||
.img-w-260{width:260rpx;box-sizing:border-box;}
|
||||
.img-w-280{width:280rpx;box-sizing:border-box;}
|
||||
.img-h-400{height:400rpx;box-sizing:border-box;}
|
||||
@@ -29,7 +29,6 @@
|
||||
|
||||
/*layout flex*/
|
||||
.fn-flex{display:flex;flex-flow:row;align-items:stretch;}
|
||||
.fn-flex-center{align-items:center;}
|
||||
.fn-flex-item{display:block;flex:1;}
|
||||
.fn-flex-item.flexsize2{flex:2;}
|
||||
.fn-flex-item.flexsize3{flex:3;}
|
||||
@@ -42,9 +41,12 @@
|
||||
.fn-flex-itemfixed{flex:0 0 auto;}
|
||||
.fn-flex-between{justify-content: space-between;}/*两端对齐*/
|
||||
.fn-flex-wrap{flex-wrap:wrap}/*多行*/
|
||||
.fn-flex-around{justify-content: space-around;}/*各项周围留有空白*/
|
||||
.fn-flex-middle{align-items:center;}/*交叉轴上上下居中对齐*/
|
||||
.fn-flex-center{justify-content: center;}/*居中对齐*/
|
||||
|
||||
.wp20{width:20%;box-sizing:border-box;}
|
||||
.wp25{width:25%;box-sizing:border-box;}
|
||||
.wp31{width:31%;box-sizing:border-box;}
|
||||
.wp33{width:33%;box-sizing:border-box;}
|
||||
.wp40{width:40%;box-sizing:border-box;}
|
||||
.wp45{width:45%;box-sizing:border-box;}
|
||||
@@ -66,6 +68,7 @@
|
||||
.img-center-middle-100{position:absolute;top:50%;left:50%;max-width:100%;max-height:100%;transform:translate(-50%,-50%);}
|
||||
.fiximg{max-width:100%;}
|
||||
|
||||
.box-shadow-000-3-5{box-shadow:0 0 3rpx rgba(0,0,0,.05);}
|
||||
.box-shadow-000-10-10{box-shadow:0 0 10rpx rgba(0,0,0,.10);}
|
||||
.box-shadow-000-10-15{box-shadow:0 0 10rpx rgba(0,0,0,.15);}
|
||||
.box-shadow-000-20-8{box-shadow:0 0 20rpx rgba(0,0,0,.08);}
|
||||
@@ -114,11 +117,20 @@
|
||||
.line-height-20{line-height:2;}
|
||||
.rich-text-img{display:bolck;max-width:100% !important;height:auto !important;margin:40rpx 0 20rpx 0 !important;}
|
||||
|
||||
.height-80{height:80rpx;box-sizing:border-box;}
|
||||
.height-90{height:90rpx;box-sizing:border-box;}
|
||||
.height-100{height:100rpx;box-sizing:border-box;}
|
||||
.height-120{height:120rpx;box-sizing:border-box;}
|
||||
.height-190{height:190rpx;box-sizing:border-box;}
|
||||
.height-240{height:240rpx;box-sizing:border-box;}
|
||||
.height-400{height:400rpx;box-sizing:border-box;}
|
||||
.height-500{height:500rpx;box-sizing:border-box;}
|
||||
.height-600{height:600rpx;box-sizing:border-box;}
|
||||
.height-800{height:800rpx;box-sizing:border-box;}
|
||||
.tabmenu{line-height:80rpx;}
|
||||
.tabmenu.active::before{display:block;position:absolute;bottom:0;left:50%;width:30rpx;height:4rpx;margin-left:-15rpx;content:"";background-color:#36afa2;}
|
||||
|
||||
.safe-pb{padding-bottom:calc(constant(safe-area-inset-bottom) - 15px );padding-bottom:calc(env(safe-area-inset-bottom) - 15px);}
|
||||
.safe-pb{padding-bottom:calc(constant(safe-area-inset-bottom) - 15px );padding-bottom:calc(env(safe-area-inset-bottom) - 15px);}
|
||||
|
||||
.datecell{width:14.28%;padding:30rpx 0;text-align:center;box-sizing:border-box;}
|
||||
.datecell.active{background-color:#36afa2;color:#fff;}
|
||||
@@ -19,9 +19,11 @@
|
||||
.mt90{margin-top:90rpx;}
|
||||
.mt110{margin-top:110rpx;}
|
||||
.mt120{margin-top:120rpx;}
|
||||
.mt130{margin-top:130rpx;}
|
||||
.mt150{margin-top:150rpx;}
|
||||
.mt190{margin-top:190rpx;}
|
||||
.ml-1{margin-left:-1rpx;}
|
||||
.ml1{margin-left:1rpx;}
|
||||
.ml5{margin-left:5rpx;}
|
||||
.ml10{margin-left:10rpx;}
|
||||
.ml15{margin-left:15rpx;}
|
||||
@@ -33,6 +35,7 @@
|
||||
.ml45{margin-left:45rpx;}
|
||||
.ml50{margin-left:50rpx;}
|
||||
.ml60{margin-left:60rpx;}
|
||||
.ml65{margin-left:65rpx;}
|
||||
.ml70{margin-left:70rpx;}
|
||||
.ml80{margin-left:80rpx;}
|
||||
.ml110{margin-left:110rpx;}
|
||||
@@ -43,6 +46,7 @@
|
||||
.ml200{margin-left:200rpx;}
|
||||
.mr-20{margin-right:-20rpx;}
|
||||
.mr-30{margin-right:-30rpx;}
|
||||
.mr1{margin-right:1rpx;}
|
||||
.mr5{margin-right:5rpx;}
|
||||
.mr10{margin-right:10rpx;}
|
||||
.mr11{margin-right:11rpx;}
|
||||
@@ -62,6 +66,7 @@
|
||||
.mr170{margin-right:170rpx;}
|
||||
.mr180{margin-right:180rpx;}
|
||||
.mr190{margin-right:190rpx;}
|
||||
.mb5{margin-bottom:5rpx;}
|
||||
.mb10{margin-bottom:10rpx;}
|
||||
.mb15{margin-bottom:15rpx;}
|
||||
.mb20{margin-bottom:20rpx;}
|
||||
@@ -71,4 +76,5 @@
|
||||
.mb60{margin-bottom:60rpx;}
|
||||
.mb100{margin-bottom:100rpx;}
|
||||
.mb120{margin-bottom:120rpx;}
|
||||
.mb180{margin-bottom:180rpx;}
|
||||
.mb200{margin-bottom:200rpx;}
|
||||
@@ -1,3 +1,4 @@
|
||||
.inner6{padding:6rpx;}
|
||||
.inner8{padding:8rpx;}
|
||||
.inner10{padding:10rpx;}
|
||||
.inner20{padding:20rpx;}
|
||||
@@ -8,6 +9,8 @@
|
||||
|
||||
.pt0{padding-top:0;}
|
||||
.pt2{padding-top:2rpx;}
|
||||
.pt3{padding-top:3rpx;}
|
||||
.pt4{padding-top:4rpx;}
|
||||
.pt5{padding-top:5rpx}
|
||||
.pt8{padding-top:8rpx;}
|
||||
.pt10{padding-top:10rpx;}
|
||||
@@ -30,6 +33,7 @@
|
||||
.pt160{padding-top:160rpx;}
|
||||
.pt180{padding-top:180rpx;}
|
||||
.pt200{padding-top:200rpx;}
|
||||
.pt300{padding-top:300rpx;}
|
||||
.pt400{padding-top:400rpx;}
|
||||
.pl0{padding-left:0;}
|
||||
.pl5{padding-left:5rpx;}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
.ulib-rt750{border-top-left-radius:750rpx;border-top-right-radius:750rpx;}
|
||||
.ulib-rl750{border-top-left-radius:750rpx;border-bottom-left-radius:750rpx;}
|
||||
.ulib-rr750{border-top-right-radius:750rpx;border-bottom-right-radius:750rpx;}
|
||||
.ulib-rlb750{border-bottom-left-radius:750rpx;}
|
||||
.ulib-rlt0{border-top-left-radius:0;}
|
||||
.ulib-rlt10{border-top-left-radius:10rpx;}
|
||||
.ulib-rlt0{border-top-left-radius:0;}
|
||||
|
||||
Vendored
+207
-3
File diff suppressed because one or more lines are too long
+122
-4
@@ -36,8 +36,7 @@ api = {
|
||||
appCustomerData: "app/customers/data", //获取客户详细信息
|
||||
appCusorder: "app/cusorder", //新建订单 /获取订单列表 /获取订单详情 /修改付款方式 /修改委托协议
|
||||
appCusorderTabs: "app/cusorder/tabs", //获取tab
|
||||
appEmployees: "app/employees", //获取客户详细信息 /获取店员列表 /更新店员信息 /删除店员
|
||||
appLoan: "app/loan", //获取贷款产品信息 /创建贷款信息 /修改贷款信息
|
||||
appEmployees: "app/employees", //获取客户详细信息 /获取店员列表 /更新店员信息 /删除店员
|
||||
appIdcard: "app/idcard", //创建申请开票信息
|
||||
appUserCal: "app/user/cal", //获取用户统计
|
||||
appCusorderCkcar: "app/cusorder/ckcar", //确认交付
|
||||
@@ -47,15 +46,128 @@ api = {
|
||||
appCustomerData: "app/customers/data", //修改客户基本信息
|
||||
appServicesPackage: "app/services/package", //获取代办包
|
||||
appSeriesInfo: "app/series/info", //获取车辆价格
|
||||
appBusiness: "app/business", //获取商务政策
|
||||
|
||||
appSeriesBrands: "app/series/brands", //获取车型品牌
|
||||
appSeries: "app/series", //获取车型车系
|
||||
appSeries: "app/series", //获取车系车型
|
||||
|
||||
appUserTel: "app/user/tel", //编辑拨打电话
|
||||
|
||||
appFinance: "app/finance", //获取金融产品列表
|
||||
appFinanceNums: "app/finance/nums", //获取金融分期期数
|
||||
appLoan: "app/loan", //修改贷款信息
|
||||
|
||||
appUserBizs: "app/user/bizs", //获取管理门店
|
||||
appStatisticsCust: "app/statistics/cust", //获取渠道客户统计
|
||||
appStatisticsOrders: "app/statistics/orders", //获取渠道订单统计
|
||||
appUserAdmins: "app/user/admins", //获取门店管理员
|
||||
appStatisticsScust: "app/statistics/scust", //数据分析-客户数据
|
||||
appStatisticsOcust: "app/statistics/ocust", //数据分析-订单数据
|
||||
appStatisticsHcust: "app/statistics/hcust", //首页-客户图标数据
|
||||
appStatisticsHorder: "app/statistics/horder", //首页-订单图表数据
|
||||
|
||||
appStatisticsStats: "app/statistics/stats", //获取渠道经理数据分析入口数据
|
||||
appStatisticsStats_days: "app/statistics/stats_days", //获取渠道经理数据分析数据
|
||||
appStatisticsStats_customer: "app/statistics/stats_customer", //获取渠道经理数据分析数据
|
||||
|
||||
|
||||
appUserResetbiz: "app/user/resetbiz", //更新用户店铺id
|
||||
appXzStat: "app/xz/stat", //获取电话统计数据
|
||||
appCity: "app/city", //获取系统配置城市
|
||||
|
||||
materialHomeTabs: "material/home/tabs", //推广素材_tab
|
||||
materialHomeLists: "material/home/lists", //推广素材_lists
|
||||
materialHomeTopic: "material/home/topic", //生成专题
|
||||
materialTopic: "material/topic", //专题首页
|
||||
materialHomeQrcode: "material/home/qrcode", //获取二维码
|
||||
materialStatistics: 'material/statistics', //数据分析_首页
|
||||
materialStatisticsCal: 'material/statistics/cal', //数据分析_累计数据
|
||||
materialStatisticsChart: 'material/statistics/chart', //数据分析_图表
|
||||
|
||||
appCusorder2: 'app/cusorder2', //新建订单(新)/修改订单信息
|
||||
|
||||
appCustomersDefeats: 'app/customers/defeats', //战败客户列表 /战败/再战申请
|
||||
|
||||
appServices:'app/services', //获取代办服务列表
|
||||
appFine:'app/fine', //获取精品赠送列表 /获取精品选装
|
||||
|
||||
materialHomeBiz:'material/home/biz', //店铺海报
|
||||
materialHomePosters:'material/home/posters', //保存店铺海报
|
||||
|
||||
appDelivery:'app/delivery', //获取车辆确定随车资料
|
||||
|
||||
materialHomeBiz_posters:'material/home/biz_posters', //店铺海报模版
|
||||
|
||||
appTransferLists:'app/transfer/lists', //调拨记录
|
||||
appTransfer:'app/transfer', //调拨详情 /确认发车/接车 /报备异常
|
||||
appTransferRemind:'app/transfer/remind', //调拨提醒
|
||||
|
||||
appCusorderCdata:'app/cusorder/cdata', //上传资料
|
||||
|
||||
appBrokerageOrders:'app/brokerage/orders', //转介绍列表
|
||||
appBrokerage:'app/brokerage', //获取佣金设置 /更新佣金设置 /创建佣金设置
|
||||
|
||||
appTransferTabs:'app/transfer/tabs', //调拨记录_tab
|
||||
appTransferTransport:'app/transfer/transport', //上传运输单
|
||||
|
||||
appBizSituation_tabs:'app/biz/situation_tabs', //店铺概况_tab
|
||||
appBizSituation:'app/biz/situation', //店铺概况 /店铺概况保存
|
||||
appBizStreet:'app/biz/street', //获取乡镇
|
||||
|
||||
appCusorderV2Inten:'app/cusorderV2/inten', //新增意向金订单
|
||||
appCusorderV2:'app/cusorderV2', //新建订单 /获取订单列表 /订单详情 /修改订单信息
|
||||
appCusorderV2Tabs:'app/cusorderV2/tabs', //获取订单列表tab
|
||||
appCusorderdata:'app/Cusorderdata', //获取订单图片 /上传编辑国补资料
|
||||
appCusorderV2Info:'app/cusorderV2/info', //修改订单基本信息
|
||||
appCusorderV2Status:'app/cusorderV2/status', //删除订单
|
||||
|
||||
appSytactivityTabs:'app/sytactivity/tabs', //私域通_tab
|
||||
appSytactivityList:'app/sytactivity/list', //活动列表
|
||||
appSytactivityDetail:'app/sytactivity/detail', //活动详情
|
||||
appSytactivityLog:'app/sytactivity/log', //实时战报
|
||||
appSytactivityRanking:'app/sytactivity/ranking', //活动排名
|
||||
|
||||
appInventoryTabs:'app/inventory/tabs', //盘点记录_tab
|
||||
appInventoryLists:'app/inventory/lists', //盘点记录
|
||||
appInventory:'app/inventory', //盘点详情 /盘点上传图片
|
||||
appInventoryRemind:'app/inventory/remind', //盘点提醒
|
||||
|
||||
appGoodsRemind:'app/goods/remind', //库存提醒/预警
|
||||
appGoodsLists:'app/goods/lists', //库存列表
|
||||
|
||||
appCustomersOffline_sources:'app/customers/offline_sources', //客户来源
|
||||
appCustomersTag:'app/customers/tag', //客户标签
|
||||
|
||||
appCityOncard:'app/city/oncard', //获取上牌城市
|
||||
appFinanceNums:'app/finance/nums', //获取金融分期期数
|
||||
|
||||
appCusorderV2Customer:'app/cusorderV2/customer', //获取客户订单
|
||||
|
||||
appCustomersVisit_tabs:'app/customers/visit_tabs', //回访待跟进tab
|
||||
|
||||
appIdcardInfo:'app/idcard/info', //识别身份证号码
|
||||
|
||||
appCustomersComments:'app/customers/comments', //用户评论
|
||||
|
||||
appCityArea:'app/city/area', //获取省/市/区/街道
|
||||
|
||||
appEmployeesLeave:'app/employees/leave', //获取离职 //提交离职
|
||||
|
||||
appCusorderV2Admins:'app/cusorderV2/admins', //分配订单
|
||||
|
||||
appCusorderdataInfo:'app/cusorderdata/info', //保单信息确认
|
||||
|
||||
appBizStats:'app/biz/stats', //数据看板首页
|
||||
appBizStats_customer:'app/biz/stats_customer', //客户数据
|
||||
appBizStats_wxqy:'app/biz/stats_wxqy', //企微数据
|
||||
appBizStats_order:'app/biz/stats_order', //订单数据
|
||||
appBizStats_days:'app/biz/stats_days', //客户/订单走势图
|
||||
appBizStats_customer_pid:'app/biz/stats_customer_pid', //客户数据二级
|
||||
appBizStats_order_series:'app/biz/stats_order_series', //品牌数据二级
|
||||
|
||||
appOptions:'app/options', //获取车辆选装包
|
||||
|
||||
appResetgroupid:'app/user/resetgroupid', //切换角色
|
||||
|
||||
}
|
||||
|
||||
@@ -99,6 +211,11 @@ var white401UrlList = {
|
||||
'app/home/qrcode':'app/home/qrcode'
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单id临界切换版本
|
||||
*/
|
||||
var v2OrderId = 10000
|
||||
|
||||
export default {
|
||||
env,
|
||||
api,
|
||||
@@ -111,5 +228,6 @@ export default {
|
||||
bookTmpId,
|
||||
getLotteryTmpId,
|
||||
subscribeTmpId,
|
||||
white401UrlList
|
||||
white401UrlList,
|
||||
v2OrderId,
|
||||
}
|
||||
@@ -7,8 +7,10 @@ let getDateLater = function(start=0,later=0) {
|
||||
let todate = date.getFullYear() + "-" + ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth()+1) + "-" + (date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate());
|
||||
date.setDate(date.getDate() - later);
|
||||
let laterdate = date.getFullYear() + "-" + ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth()+1) + "-" + (date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate());
|
||||
let laterMonth = date.getFullYear() + "-" + ((date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : date.getMonth()+1);
|
||||
dateArr.push(laterdate)
|
||||
dateArr.push(todate)
|
||||
dateArr.push(laterMonth)
|
||||
resolve(dateArr);
|
||||
})
|
||||
}
|
||||
|
||||
Vendored
-1
File diff suppressed because one or more lines are too long
+664
-53
@@ -5,7 +5,7 @@ let apiQuery = Object.assign({});
|
||||
|
||||
apiQuery.asyncLogin = asyncLogin;
|
||||
|
||||
apiQuery.getUserInfo = function (params,isLoading=true) {
|
||||
apiQuery.getUserInfo = function (params,isLoading=false) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(isLoading, Config.api.appUser, 2, params, "GET", function (res) {
|
||||
app.setStorage("userInfo", res.data);
|
||||
@@ -24,33 +24,6 @@ apiQuery.putUserInfo = function (params) {
|
||||
})
|
||||
}
|
||||
|
||||
//用户信息授权
|
||||
apiQuery.authUserInfo = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
wx.getSetting({
|
||||
success(res) {
|
||||
let userInfo = app.getStorageByKey("userInfo");
|
||||
console.log(res.authSetting)
|
||||
if (res.authSetting['scope.userInfo']) {
|
||||
if (!userInfo.nickname || !userInfo.headimg || (userInfo.headimg != JSON.parse(params.detail.rawData).avatarUrl)) {
|
||||
asyncLogin().then(res => {
|
||||
apiQuery.putUserInfo({
|
||||
encryptedData: params.detail.encryptedData,
|
||||
iv: params.detail.iv
|
||||
}).then(res => {
|
||||
//设置本地存储
|
||||
resolve(res)
|
||||
})
|
||||
})
|
||||
} else {
|
||||
resolve(userInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
//用户手机号码授权
|
||||
apiQuery.authUserPhone = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
@@ -229,7 +202,7 @@ apiQuery.postAppEmployees = function (params) {
|
||||
})
|
||||
}
|
||||
|
||||
//更新店员信息
|
||||
//更新店员信息 //提交离职
|
||||
apiQuery.putAppEmployees = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appEmployees, 2, params, "PUT", resolve, reject)
|
||||
@@ -243,27 +216,6 @@ apiQuery.deleteAppEmployees = function (params) {
|
||||
})
|
||||
}
|
||||
|
||||
//获取贷款产品信息
|
||||
apiQuery.getAppLoan = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appLoan, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//创建贷款信息
|
||||
apiQuery.postAppLoan = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appLoan, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//修改贷款信息
|
||||
apiQuery.putAppLoan = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appLoan, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//创建申请开票信息
|
||||
apiQuery.postAppIdcard = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
@@ -281,7 +233,7 @@ apiQuery.putAppIdcard = function (params) {
|
||||
//获取用户统计
|
||||
apiQuery.getAppUserCal = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appUserCal, 2, params, "GET", resolve, reject)
|
||||
HttpRequest(true, Config.api.appUserCal, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -306,7 +258,7 @@ apiQuery.getAppXz = function (params) {
|
||||
})
|
||||
}
|
||||
|
||||
//新增日志
|
||||
//新增日志 /作废
|
||||
apiQuery.postAppCustomerlogs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCustomerlogs, 2, params, "POST", resolve, reject)
|
||||
@@ -334,6 +286,13 @@ apiQuery.getAppSeriesInfo = function(params){
|
||||
})
|
||||
}
|
||||
|
||||
//获取商务政策
|
||||
apiQuery.getAppBusiness = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBusiness, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取车型品牌
|
||||
apiQuery.getAppSeriesBrands = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
@@ -341,7 +300,7 @@ apiQuery.getAppSeriesBrands = function(params){
|
||||
})
|
||||
}
|
||||
|
||||
//获取车型车系
|
||||
//获取车系车型
|
||||
apiQuery.getAppSeries = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSeries, 2, params, "GET", resolve, reject)
|
||||
@@ -369,4 +328,656 @@ apiQuery.getAppFinanceNums = function(params){
|
||||
})
|
||||
}
|
||||
|
||||
//获取管理门店
|
||||
apiQuery.getAppUserBizs = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appUserBizs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取渠道客户统计
|
||||
apiQuery.getAppStatisticsCust = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsCust, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取渠道订单统计
|
||||
apiQuery.getAppStatisticsOrders = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsOrders, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取门店管理员
|
||||
apiQuery.getAppUserAdmins = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appUserAdmins, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据分析-客户数据
|
||||
apiQuery.getAppStatisticsScust = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsScust, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据分析-订单数据
|
||||
apiQuery.getAppStatisticsOcust = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsOcust, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//首页-客户图标数据
|
||||
apiQuery.getAppStatisticsHcust = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsHcust, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//首页-订单图表数据
|
||||
apiQuery.getAppStatisticsHorder = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsHorder, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//更新用户店铺id
|
||||
apiQuery.putAppUserResetbiz = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appUserResetbiz, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取电话统计数据
|
||||
apiQuery.getAppXzStat = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appXzStat, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取系统配置城市
|
||||
apiQuery.getAppCity = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCity, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//推广素材_tab
|
||||
apiQuery.getMaterialHomeTabs = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeTabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//推广素材_lists
|
||||
apiQuery.getMaterialHomeLists = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeLists, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//生成专题
|
||||
apiQuery.putMaterialHomeTopic = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeTopic, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//专题首页
|
||||
apiQuery.getMaterialTopic = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialTopic, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取二维码
|
||||
apiQuery.getMaterialHomeQrcode = function(params){
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeQrcode, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据分析_首页
|
||||
apiQuery.getMaterialStatistics = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialStatistics, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据分析_累计数据
|
||||
apiQuery.getMaterialStatisticsCal = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialStatisticsCal, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据分析_图表
|
||||
apiQuery.getMaterialStatisticsChart = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialStatisticsChart, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//战败客户列表
|
||||
apiQuery.getAppCustomersDefeats = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCustomersDefeats, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//战败/再战申请
|
||||
apiQuery.putAppCustomersDefeats = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCustomersDefeats, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//新建订单(新)
|
||||
apiQuery.postAppCusorder2 = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorder2, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//修改订单信息
|
||||
apiQuery.putAppCusorder2 = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorder2, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取代办服务列表
|
||||
apiQuery.getAppServices = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appServices, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取精品赠送列表
|
||||
apiQuery.getAppFine = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appFine, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//店铺海报
|
||||
apiQuery.getMaterialHomeBiz = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeBiz, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//保存店铺海报
|
||||
apiQuery.putMaterialHomePosters = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomePosters, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取车辆确定随车资料
|
||||
apiQuery.getAppDelivery = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appDelivery, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//店铺海报模版
|
||||
apiQuery.getMaterialHomeBiz_posters = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.materialHomeBiz_posters, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//调拨记录
|
||||
apiQuery.getAppTransferLists = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appTransferLists, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//调拨详情
|
||||
apiQuery.getAppTransfer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appTransfer, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//确认发车/接车
|
||||
apiQuery.putAppTransfer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appTransfer, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//报备异常
|
||||
apiQuery.postAppTransfer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appTransfer, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//调拨提醒
|
||||
apiQuery.getAppTransferRemind = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appTransferRemind, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//上传资料
|
||||
apiQuery.putAppCusorderCdata = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderCdata, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取佣金设置
|
||||
apiQuery.getAppBrokerage = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBrokerage, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//创建佣金设置
|
||||
apiQuery.postAppBrokerage = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appBrokerage, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//更新佣金设置
|
||||
apiQuery.putAppBrokerage = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appBrokerage, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//转介绍列表
|
||||
apiQuery.getAppBrokerageOrders = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBrokerageOrders, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//调拨记录_tab
|
||||
apiQuery.getAppTransferTabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appTransferTabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//上传运输单
|
||||
apiQuery.postAppTransferTransport = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appTransferTransport, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//店铺概况_tab
|
||||
apiQuery.getAppBizSituation_tabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizSituation_tabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//店铺概况
|
||||
apiQuery.getAppBizSituation = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizSituation, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//店铺概况保存
|
||||
apiQuery.postAppBizSituation = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appBizSituation, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取乡镇
|
||||
apiQuery.getAppBizStreet = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStreet, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//新增意向金订单
|
||||
apiQuery.postAppCusorderV2Inten = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2Inten, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//新建订单
|
||||
apiQuery.postAppCusorderV2 = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取订单列表tab
|
||||
apiQuery.getAppCusorderV2Tabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderV2Tabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取订单列表
|
||||
apiQuery.getAppCusorderV2List = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderV2, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//订单详情
|
||||
apiQuery.getAppCusorderV2 = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderV2, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取订单图片
|
||||
apiQuery.getAppCusorderdata = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderdata, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//上传编辑国补资料
|
||||
apiQuery.putAppCusorderdata = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderdata, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//修改订单信息
|
||||
apiQuery.putAppCusorderV2 = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//修改订单基本信息
|
||||
apiQuery.putAppCusorderV2Info = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2Info, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//删除订单
|
||||
apiQuery.putAppCusorderV2Status = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2Status, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//私域通_tab
|
||||
apiQuery.getAppSytactivityTabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSytactivityTabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//活动列表
|
||||
apiQuery.getAppSytactivityList = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSytactivityList, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//活动详情
|
||||
apiQuery.getAppSytactivityDetail = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSytactivityDetail, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//实时战报
|
||||
apiQuery.getAppSytactivityLog = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSytactivityLog, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//活动排名
|
||||
apiQuery.getAppSytactivityRanking = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appSytactivityRanking, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//盘点记录_tab
|
||||
apiQuery.getAppInventoryTabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appInventoryTabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//盘点列表
|
||||
apiQuery.getAppInventoryLists = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appInventoryLists, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//盘点详情
|
||||
apiQuery.getAppInventory = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appInventory, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//确认盘点
|
||||
apiQuery.postAppInventory = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appInventory, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//盘点提醒
|
||||
apiQuery.getAppInventoryRemind = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appInventoryRemind, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//库存提醒/预警
|
||||
apiQuery.getAppGoodsRemind = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appGoodsRemind, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//库存列表
|
||||
apiQuery.getAppGoodsLists = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appGoodsLists, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//客户来源
|
||||
apiQuery.getAppCustomersOffline_sources = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCustomersOffline_sources, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//客户标签
|
||||
apiQuery.getAppCustomersTag = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCustomersTag, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//修改贷款信息
|
||||
apiQuery.putAppLoan = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appLoan, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取上牌城市
|
||||
apiQuery.getAppCityOncard = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCityOncard, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取金融分期期数
|
||||
apiQuery.getAppFinanceNums = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appFinanceNums, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取客户订单
|
||||
apiQuery.getAppCusorderV2Customer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCusorderV2Customer, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//回访待跟进tab
|
||||
apiQuery.getAppCustomersVisit_tabs = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCustomersVisit_tabs, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//识别身份证号码
|
||||
apiQuery.getAppIdcardInfo = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appIdcardInfo, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//用户评论
|
||||
apiQuery.postAppCustomersComments = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCustomersComments, 2, params, "POST", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取省/市/区/街道
|
||||
apiQuery.getAppCityArea = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appCityArea, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取离职
|
||||
apiQuery.getAppEmployeesLeave = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appEmployeesLeave, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//提交离职
|
||||
apiQuery.putAppEmployeesLeave = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appEmployeesLeave, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//分配订单
|
||||
apiQuery.putAppCusorderV2Admins = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderV2Admins, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//保单信息确认
|
||||
apiQuery.putAppCusorderdataInfo = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appCusorderdataInfo, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//数据看板首页
|
||||
apiQuery.getAppBizStats = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//客户数据
|
||||
apiQuery.getAppBizStats_customer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_customer, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//企微数据
|
||||
apiQuery.getAppBizStats_wxqy = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_wxqy, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//订单数据
|
||||
apiQuery.getAppBizStats_order = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_order, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//客户/订单走势图
|
||||
apiQuery.getAppBizStats_days = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_days, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//客户数据二级
|
||||
apiQuery.getAppBizStats_customer_pid = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_customer_pid, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//品牌数据二级
|
||||
apiQuery.getAppBizStats_order_series = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appBizStats_order_series, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取渠道经理数据分析入口数据
|
||||
apiQuery.getAppStatisticsStats = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsStats, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取渠道经理数据分析数据
|
||||
apiQuery.getAppStatisticsStats_days = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsStats_days, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取渠道经理数据分析数据
|
||||
apiQuery.getAppStatisticsStats_customer = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appStatisticsStats_customer, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//获取车辆选装包
|
||||
apiQuery.getAppOptions = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(false, Config.api.appOptions, 2, params, "GET", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
//切换角色
|
||||
apiQuery.putAppResetgroupid = function (params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
HttpRequest(true, Config.api.appResetgroupid, 2, params, "PUT", resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
export default apiQuery;
|
||||
@@ -50,7 +50,8 @@ function HttpNoUkeyRequest(loading, url, sessionChoose, params, method, callBack
|
||||
}
|
||||
wx.showToast({
|
||||
title: res.data.msg,
|
||||
icon: "none"
|
||||
icon: "none",
|
||||
duration: 2500
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ export default class Router {
|
||||
* @param name
|
||||
* @returns {*}
|
||||
*/
|
||||
//xxk://switchTab/pages/card/index
|
||||
//lcb://switchTab/pages/card/index
|
||||
switchTab(name) {
|
||||
return this.push(name, null, {
|
||||
fn: symbol.switchTab
|
||||
@@ -212,7 +212,7 @@ export default class Router {
|
||||
* @param url
|
||||
*/
|
||||
//调整小程序数据格式,appId要先加到app.json中
|
||||
//'xxk://navigateToMiniPrograms??appId=wx636830278bc7b5f4@path=/pages/consultant?id=1@envVersion=release@extraData={"fromwhere":"aolai"}'
|
||||
//'lcb://navigateToMiniPrograms??appId=wx636830278bc7b5f4@path=/pages/consultant?id=1@envVersion=release@extraData={"fromwhere":"aolai"}'
|
||||
navigateToMiniProgramRedirect(OBJ) {
|
||||
let search = OBJ.split('??')[1]
|
||||
let appId = this._getQueryString('appId',search)
|
||||
|
||||
@@ -134,6 +134,7 @@ let combineUrl = (DATA) => {
|
||||
let toEncrypt = (DATA) => {
|
||||
// let secretKey = randomString()
|
||||
let data = combineUrl(DATA)
|
||||
//console.log(data)//加密原始数据
|
||||
return md5.hex_md5(data);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ function getAjaxUserInfo(){
|
||||
function isAuthUserInfo() {
|
||||
return new Promise(function (resolve, reject) {
|
||||
api.getUserInfo().then(res=>{
|
||||
resolve(Boolean(res && res.nickname && res.headimg))
|
||||
resolve(Boolean(res && res.headimg))
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -47,155 +47,9 @@ function isOpenCard() {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获得用户位置,返回一个promise,同时间只会跑一个
|
||||
* {
|
||||
* lat,
|
||||
* lng,
|
||||
* from_storage //true表示是从缓存里获得, false表示从设置里获得
|
||||
* }
|
||||
*/
|
||||
// function getUserLocation() {
|
||||
// return new Promise((resolve, reject) => {
|
||||
// // const lat = wx.getStorageSync('u_lat');
|
||||
// // const lng = wx.getStorageSync('u_lng');
|
||||
// // if (lat && lng) {
|
||||
// // return resolve({
|
||||
// // lat,
|
||||
// // lng,
|
||||
// // from_storage: true,
|
||||
// // })
|
||||
// // } else {
|
||||
// const loading = wx.getStorageSync('loading_gps');
|
||||
// if (loading) {
|
||||
// setTimeout(() => {
|
||||
// return resolve(this.getUserLocation());
|
||||
// }, 30);
|
||||
// return;
|
||||
// }
|
||||
// wx.setStorageSync('loading_gps', 1)
|
||||
// wx.getSetting({
|
||||
// success(res) {
|
||||
// console.log("======获取用户地理位置=====")
|
||||
// console.log(res);
|
||||
// wx.getLocation({
|
||||
// type: 'gcj02',
|
||||
// success: function (res) {
|
||||
// var lat = res.latitude
|
||||
// var lng = res.longitude
|
||||
// wx.setStorageSync('u_lat', lat)
|
||||
// wx.setStorageSync('u_lng', lng)
|
||||
// wx.removeStorageSync('loading_gps')
|
||||
// return resolve({
|
||||
// lat,
|
||||
// lng,
|
||||
// from_storage: false,
|
||||
// })
|
||||
// },
|
||||
// fail: function (res) {
|
||||
// console.log("用户没有授权地理位置")
|
||||
// console.log(res);
|
||||
// wx.removeStorageSync('loading_gps')
|
||||
// wx.showModal({
|
||||
// title: '提示',
|
||||
// content: '请先授权地理位置权限',
|
||||
// showCancel: false,
|
||||
// success(res) {
|
||||
// if (res.confirm) {
|
||||
// console.log('用户点击确定')
|
||||
// wx.openSetting({
|
||||
// success(res) {
|
||||
// console.log(res.authSetting)
|
||||
|
||||
// }
|
||||
// })
|
||||
// } else if (res.cancel) {
|
||||
// console.log('用户点击取消')
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// return reject('用户没有授权地理位置')
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
// })
|
||||
// // }
|
||||
// })
|
||||
// }
|
||||
|
||||
|
||||
const getUserLocation = function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
wx.getLocation({
|
||||
type: 'wgs84',
|
||||
success(res) {
|
||||
app.setStorage('u_lat', res.latitude)
|
||||
app.setStorage('u_lng', res.longitude)
|
||||
resolve({
|
||||
lat:res.latitude,
|
||||
lng:res.longitude,
|
||||
from_storage: false,
|
||||
});
|
||||
},
|
||||
fail(res) {
|
||||
app.printErrorClient('userLocationFail', ['错误信息:'+ JSON.stringify(res)])
|
||||
_ModelForGetLocationModel(resolve, reject);
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function _ModelForGetLocationModel(resolve, reject) {
|
||||
wx.showModal({
|
||||
title: '',
|
||||
content: '检测到你未打开地理位置的权限,是否前往开启',
|
||||
confirmText: '前往开启',
|
||||
showCancel:false,
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
//成功的时候只执行一次(通过手动的时候就没执行了)
|
||||
wx.openSetting({
|
||||
success(res) {
|
||||
wx.authorize({
|
||||
scope: 'scope.userLocation',
|
||||
success() {
|
||||
// resolve("toggle");
|
||||
wx.getLocation({
|
||||
type: 'wgs84',
|
||||
success(res) {
|
||||
app.setStorage('u_lat', res.latitude)
|
||||
app.setStorage('u_lng', res.longitude)
|
||||
resolve({
|
||||
lat:res.latitude,
|
||||
lng:res.longitude,
|
||||
from_storage: false,
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
fail() {
|
||||
app.printErrorClient('userLocationFail',['错误信息:打开打开地理位置的权限,未设置'])
|
||||
_ModelForGetLocationModel(resolve, reject);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
app.printErrorClient('userLocationFail',['错误信息:用户点击取消'])
|
||||
reject()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
getAjaxUserInfo,
|
||||
isAuthUserInfo,
|
||||
isBindMobile,
|
||||
isOpenCard,
|
||||
getUserLocation
|
||||
// getLocation
|
||||
}
|
||||
+104
-15
@@ -164,12 +164,12 @@ function getCurrentPath() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由跳转过来的数据
|
||||
*/
|
||||
function getRouterData (URL) {
|
||||
return wx.getStorageSync('router-/' + URL + '-params')
|
||||
}
|
||||
/**
|
||||
* 获取路由跳转过来的数据
|
||||
*/
|
||||
function getRouterData(URL) {
|
||||
return wx.getStorageSync('router-/' + URL + '-params')
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -184,7 +184,7 @@ function throttle(fn, gapTime) {
|
||||
|
||||
// 返回新的函数
|
||||
return (function (e) {
|
||||
console.log(this)
|
||||
// console.log(this)
|
||||
let _nowTime = +new Date()
|
||||
if (_nowTime - _lastTime > gapTime || !_lastTime) {
|
||||
// fn.apply(this, arguments) //将this和参数传给原函数
|
||||
@@ -197,11 +197,11 @@ function throttle(fn, gapTime) {
|
||||
/*函数防抖*/
|
||||
function debounce(fn, interval) {
|
||||
var timer;
|
||||
var gapTime = interval || 200;//间隔时间,如果interval不传,则默认200ms
|
||||
var gapTime = interval || 200; //间隔时间,如果interval不传,则默认200ms
|
||||
return function () {
|
||||
clearTimeout(timer);
|
||||
var context = this;
|
||||
var args = arguments;//保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
|
||||
var args = arguments; //保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
|
||||
timer = setTimeout(function () {
|
||||
fn.call(context, args);
|
||||
}, gapTime);
|
||||
@@ -209,7 +209,7 @@ function debounce(fn, interval) {
|
||||
}
|
||||
|
||||
//去掉前后空格
|
||||
function trim(s){
|
||||
function trim(s) {
|
||||
return s.toString().replace(/(^\s*)|(\s*$)/g, "");
|
||||
}
|
||||
|
||||
@@ -251,8 +251,8 @@ function compareVersion(v1, v2) {
|
||||
/**
|
||||
* 内存报警
|
||||
* 报警后,使用reLaunch,并记录当前页面及页面栈
|
||||
*/
|
||||
function memoryWarning(){
|
||||
*/
|
||||
function memoryWarning() {
|
||||
wx.onMemoryWarning(function () {
|
||||
let getPath = getCurrentPath()
|
||||
wx.reportAnalytics('outofmemory', getPath)
|
||||
@@ -264,18 +264,102 @@ function memoryWarning(){
|
||||
|
||||
/**
|
||||
* 取消内存报警
|
||||
*/
|
||||
function offMemoryWarning(){
|
||||
*/
|
||||
function offMemoryWarning() {
|
||||
if (wx.canIUse('offMemoryWarning')) {
|
||||
wx.offMemoryWarning()
|
||||
app.printErrorClient('offmemory')
|
||||
} else {
|
||||
app.printErrorClient('offmemorylowversion')
|
||||
log.warn('当前微信版本'+wx.getSystemInfoSync().SDKVersion+'过低,无法使用该功能,请升级到最新微信版本后重试。')
|
||||
log.warn('当前微信版本' + wx.getSystemInfoSync().SDKVersion + '过低,无法使用该功能,请升级到最新微信版本后重试。')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置底部导航选中
|
||||
*/
|
||||
function setBottomTabbar(page, isUnRead, that) {
|
||||
if (typeof that.getTabBar === 'function' &&
|
||||
that.getTabBar()) {
|
||||
that.getTabBar().setData({
|
||||
show: true,
|
||||
selected: page,
|
||||
isUnRead: isUnRead || false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 页面滚动到指定的上一个dom位置
|
||||
*/
|
||||
function scrollPageToDom(el, extraHeight = 0) {
|
||||
let query = wx.createSelectorQuery()
|
||||
query.select(el).boundingClientRect()
|
||||
query.selectViewport().scrollOffset()
|
||||
query.exec(function (res) {
|
||||
wx.pageScrollTo({
|
||||
scrollTop: res[0].height + extraHeight,
|
||||
duration: 100
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 页面滚动到dom指定位置
|
||||
* 注:如果该dom滚动到顶部之后,他的top就变成0了。
|
||||
* 再下次滚动的话,就会依照0来滚动,也就变成回到顶部了
|
||||
*/
|
||||
function scrollPageToDomForTop(el, extraHeight = 0) {
|
||||
let query = wx.createSelectorQuery()
|
||||
query.select(el).boundingClientRect()
|
||||
query.selectViewport().scrollOffset()
|
||||
query.exec(function (res) {
|
||||
wx.pageScrollTo({
|
||||
scrollTop: res[0].top + extraHeight,
|
||||
duration: 100
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
let scrollFloatwindow_id = null;
|
||||
//悬浮窗滚动方法判断方法
|
||||
function scrollFloatwindow(e, that) {
|
||||
if (e.scrollTop <= 0) {
|
||||
//最顶部
|
||||
e.scrollTop = 0;
|
||||
} else if (e.scrollTop > that.data.scrollHeight) {
|
||||
//最底部
|
||||
e.scrollTop = that.data.scrollHeight;
|
||||
}
|
||||
if (scrollFloatwindow_id) clearTimeout(scrollFloatwindow_id);
|
||||
//给scrollTop重新赋值
|
||||
scrollFloatwindow_id = setTimeout(() => {
|
||||
that.setData({
|
||||
istrue_scroll: e.scrollTop > that.data.scrollTop || e.scrollTop >= that.data.scrollHeight,
|
||||
scrollTop: e.scrollTop
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
|
||||
let monitor = {
|
||||
reportMonitor: function (id, value) {
|
||||
if (wx.reportMonitor) {
|
||||
wx.reportMonitor(id, value);
|
||||
}
|
||||
},
|
||||
|
||||
Error_Fail_Image: '1', //转化网络图片失败
|
||||
Error_Req_Fail: '2',//网络请求失败
|
||||
Error_Fail_Canvas: '3', //canvas转化失败
|
||||
Error_Req_code_400: '4', //请求失败
|
||||
Error_Req_code_401: '5', //非法参数
|
||||
Error_Req_code_403: '6', //禁止访问
|
||||
Error_Req_code_404: '7', //请求不存在
|
||||
Error_Req_code_408: '8', //未登录
|
||||
Error_Req_code_500: '9', //请求失败
|
||||
|
||||
};
|
||||
|
||||
|
||||
module.exports = {
|
||||
@@ -296,5 +380,10 @@ module.exports = {
|
||||
getNumber,
|
||||
memoryWarning,
|
||||
offMemoryWarning,
|
||||
setBottomTabbar,
|
||||
scrollPageToDom,
|
||||
scrollPageToDomForTop,
|
||||
scrollFloatwindow,
|
||||
monitor
|
||||
// printErrorClient
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
import Canvas from '../../commons/js/utils/canvas'
|
||||
let isGetImgInfo = false
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
customImg: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
codeImg: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
imgs: [],
|
||||
tempPosterPath: '',
|
||||
showOptBtn:false,//操作按钮显示
|
||||
},
|
||||
|
||||
attached: function () {
|
||||
isGetImgInfo = false
|
||||
},
|
||||
|
||||
//数据监听
|
||||
observers: {
|
||||
'isShow': function (e) {
|
||||
if (e) {
|
||||
this.setData({
|
||||
showOptBtn:false,
|
||||
})
|
||||
this.createPoster()
|
||||
}
|
||||
},
|
||||
'customImg': function (e) {
|
||||
if (e) {
|
||||
this.getImageInfo(this.data.customImg, 0)
|
||||
}
|
||||
},
|
||||
'codeImg': function (e) {
|
||||
if (e) {
|
||||
this.getImageInfo(this.data.codeImg, 1)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
|
||||
// 转化网络图片,获取路径
|
||||
getImageInfo(src, index) {
|
||||
let that = this
|
||||
isGetImgInfo = false
|
||||
setTimeout(function () {
|
||||
wx.getImageInfo({
|
||||
src: src,
|
||||
success: (res) => {
|
||||
let arr = that.data.imgs
|
||||
arr[index] = res
|
||||
that.setData({
|
||||
imgs: arr
|
||||
})
|
||||
isGetImgInfo = true
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log('error img is: ' + src)
|
||||
}
|
||||
})
|
||||
}, 200)
|
||||
},
|
||||
|
||||
//自定义海报
|
||||
customizePoster(CTX){
|
||||
|
||||
if(this.data.customImg){
|
||||
let that = this
|
||||
let width = 600
|
||||
let height = (parseFloat(this.data.imgs[0].height)/parseFloat(this.data.imgs[0].width))*600
|
||||
this.setData({
|
||||
canvasInfo:{
|
||||
width: width+'px',
|
||||
height: height+'px'
|
||||
}
|
||||
})
|
||||
|
||||
// CTX.setFillStyle('#ffffff')
|
||||
// CTX.fillRect(0, 0,width+20, picheight+optheight+ftheight+20)
|
||||
|
||||
//底图
|
||||
if (that.data.imgs[0]) {
|
||||
CTX.drawImage(that.data.imgs[0].path, 0, 0, that.data.imgs[0].width, that.data.imgs[0].height, 0, 0, width, height)
|
||||
}
|
||||
|
||||
//二维码
|
||||
if (that.data.imgs[1]) {
|
||||
CTX.drawImage(that.data.imgs[1].path,417, height-180,140,140)
|
||||
}
|
||||
|
||||
|
||||
setTimeout(function(){
|
||||
CTX.save()
|
||||
CTX.draw(true, function () {
|
||||
wx.hideLoading()
|
||||
that.saveCanvas()
|
||||
})
|
||||
},200)
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//生成海报
|
||||
createPoster() {
|
||||
let that = this
|
||||
wx.showLoading({
|
||||
title: '正在生成',
|
||||
})
|
||||
|
||||
if(isGetImgInfo){
|
||||
this.setData({
|
||||
tempPosterPath: ''
|
||||
})
|
||||
let ctx = wx.createCanvasContext('postercanvas', that)
|
||||
that.customizePoster(ctx)
|
||||
}
|
||||
},
|
||||
|
||||
//临时存储canvas
|
||||
saveCanvas() {
|
||||
let that = this
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'postercanvas',
|
||||
quality: 1,
|
||||
success: (res) => {
|
||||
// this.tempFilePath = res.tempFilePath
|
||||
that.setData({
|
||||
'tempPosterPath': res.tempFilePath
|
||||
})
|
||||
|
||||
setTimeout(function () {
|
||||
that.setData({
|
||||
showOptBtn:true,
|
||||
})
|
||||
},200)
|
||||
|
||||
},
|
||||
fail: (res) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
|
||||
}
|
||||
}, this)
|
||||
},
|
||||
|
||||
//保存到相册
|
||||
saveToAblum() {
|
||||
let that = this
|
||||
wx.saveImageToPhotosAlbum({
|
||||
filePath: this.data.tempPosterPath,
|
||||
success: (res) => {
|
||||
_.utils.$toast('保存成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
|
||||
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
|
||||
_.utils.$toast('您已取消保存')
|
||||
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
|
||||
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
|
||||
if (res) {
|
||||
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//隐藏海报弹框
|
||||
hidePoster() {
|
||||
this.setData({
|
||||
isShow: false
|
||||
})
|
||||
wx.hideLoading()
|
||||
},
|
||||
|
||||
//预览图片
|
||||
preview() {
|
||||
wx.previewImage({
|
||||
current: this.data.tempPosterPath, // 当前显示图片的http链接
|
||||
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//复制内容
|
||||
copyWord(e){
|
||||
if(e.currentTarget.dataset.tx){
|
||||
wx.setClipboardData({
|
||||
data: e.currentTarget.dataset.tx,
|
||||
success (res) {
|
||||
_.utils.$toast('复制成功')
|
||||
}
|
||||
})
|
||||
}else{
|
||||
_.utils.$toast('目前无文案')
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<!-- components/poster/index.wxml -->
|
||||
<view class="poster fixed {{isShow?'show':'hide'}}">
|
||||
<view class="poster-bg absolute top-0 bottom-0 left-0 right-0" bindtap="hidePoster"></view>
|
||||
<view class="poster-main bg-fff inner40 pt70 poster-main-img absolute box-center-middle ulib-r10">
|
||||
<view class="absolute top-0 right-0 mt5 mr5 inner30 bg-fff img-50x50" bindtap="hidePoster"><text class="absolute box-center-middle iconfont icon-guanbi1 text-bold font-40 color-999"></text></view>
|
||||
<canvas canvas-id='postercanvas' class='canvas absolute box-center-middle' style="width:{{canvasInfo.width}};height:{{canvasInfo.height}}"></canvas>
|
||||
<view wx:if="{{showOptBtn}}" class="overflowhidden">
|
||||
<scroll-view scroll-y="true" style="max-height:1000rpx;">
|
||||
<image class="block wp100 ulib-r10" wx:if="{{tempPosterPath}}" src="{{tempPosterPath}}" mode="widthFix" catchtap="preview" />
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="mt40 fn-flex" wx:if="{{showOptBtn}}">
|
||||
<button class="fn-flex-item btn-ffa73d-ff7a28 font-32 color-fff ulib-r750 text-center ml20 mr20" catchtap="saveToAblum">保存分享</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,26 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.poster{
|
||||
top: 0;
|
||||
left: 100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
.show{
|
||||
left: 0;
|
||||
}
|
||||
.poster-bg{
|
||||
z-index: 9998;
|
||||
background-color: rgba(0,0,0,.6);
|
||||
}
|
||||
.poster-main{
|
||||
z-index: 9999;
|
||||
}
|
||||
.poster-main-img{
|
||||
width:580rpx;
|
||||
}
|
||||
.poster-main-img canvas{
|
||||
left: 1000%;
|
||||
}
|
||||
.btn-ffa73d-ff7a28{background-image:linear-gradient(#ffa73d,#ff7a28);border:none;}
|
||||
.btn-ffa73d-ff7a28::after{border:none;}
|
||||
+139
-23
@@ -1,32 +1,105 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Component({
|
||||
/**
|
||||
* 组件的属性列表
|
||||
*/
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
userInfo:{
|
||||
type: Object,
|
||||
value:""
|
||||
},
|
||||
//是否显示授权用户信息
|
||||
isShowProfile: {
|
||||
type: Boolean,
|
||||
value: true
|
||||
},
|
||||
//是否强制显示授权用户信息
|
||||
isForceProfile: {
|
||||
type: Boolean,
|
||||
value:false
|
||||
},
|
||||
title:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
cancelbtn:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
submitbtn:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
tip:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
type:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
zindex: {
|
||||
type: Number,
|
||||
value: 10
|
||||
},
|
||||
//专题模式登录样式
|
||||
mode:{
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
modeDate:{
|
||||
type: Object,
|
||||
value:""
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* 组件的初始数据
|
||||
*/
|
||||
//组件的初始数据
|
||||
data: {
|
||||
code:'',
|
||||
isRunning:false,
|
||||
userCurrInfo:"",
|
||||
isBindMobile:false
|
||||
},
|
||||
|
||||
lifetimes: {
|
||||
attached: function () {
|
||||
wx.login({
|
||||
success: res => {
|
||||
// 在组件实例进入页面节点树时执行
|
||||
if (this.data.type == "mobile") {
|
||||
if (!this.data.userInfo){
|
||||
_.apiQuery.getUserInfo("",false).then(res => {
|
||||
this.setData({
|
||||
userCurrInfo: res
|
||||
})
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
code: res.code,
|
||||
userCurrInfo: this.data.userInfo
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (this.data.type == "userinfo") {
|
||||
_.userManager.isAuthUserInfo().then(re => {
|
||||
if (re) {
|
||||
this.setData({
|
||||
isShowProfile:false
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
isShowProfile:true
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
detached: function () {
|
||||
// 在组件实例被从页面节点树移除时执行
|
||||
this.setData({
|
||||
isBindMobile:false,
|
||||
isShow:false
|
||||
})
|
||||
},
|
||||
},
|
||||
@@ -35,6 +108,8 @@ Component({
|
||||
* 组件的方法列表
|
||||
*/
|
||||
methods: {
|
||||
//catchtap
|
||||
emptyfunc(){},
|
||||
//授权用户信息
|
||||
getUserProfile(){
|
||||
let that = this
|
||||
@@ -45,32 +120,73 @@ Component({
|
||||
wx.getUserProfile({
|
||||
desc:'获取你的昵称、头像、地区及性别',//不写不弹提示框
|
||||
success:function(res){
|
||||
|
||||
let params = {};
|
||||
params['code'] = that.data.code;
|
||||
params['userInfo'] = res.userInfo;
|
||||
that.setData({
|
||||
isShow: false,
|
||||
})
|
||||
_.apiQuery.putAppUser(params).then(res => {
|
||||
_.apiQuery.putUserInfo(params).then(res => {
|
||||
that.setData({
|
||||
isRunning:false
|
||||
});
|
||||
wx.showToast({
|
||||
title: '授权成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
});
|
||||
that.successEvent()
|
||||
_.eventBus.emit("isShowProfile",false)
|
||||
})
|
||||
},
|
||||
fail:function(err){
|
||||
that.setData({
|
||||
isRunning:false
|
||||
});
|
||||
console.log('拒绝授权')
|
||||
wx.showToast({
|
||||
title: '您拒绝授权,将无法进行更多操作!',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//授权手机号码
|
||||
getPhoneNumber(e) {
|
||||
if (e.detail.errMsg && e.detail.errMsg.indexOf('ok') > -1){
|
||||
let that = this;
|
||||
_.apiQuery.authUserPhone(e).then(res=>{
|
||||
_.apiQuery.getUserInfo()
|
||||
this.setData({
|
||||
isBindMobile: true
|
||||
})
|
||||
})
|
||||
}else{
|
||||
app.printErrorClient('failGetPhoneNumber',['用户拒绝授权手机号码:'+JSON.stringify(e)])
|
||||
}
|
||||
},
|
||||
onShow:function () {
|
||||
this.setData({
|
||||
isShow: true
|
||||
});
|
||||
this.triggerEvent('onShow', {
|
||||
type: this.data.type
|
||||
});
|
||||
|
||||
},
|
||||
onClose: function () {
|
||||
this.setData({
|
||||
isShow: false
|
||||
});
|
||||
this.triggerEvent('onClose', {
|
||||
type: this.data.type
|
||||
});
|
||||
if(this.data.type=="mobile" && this.data.isBindMobile){
|
||||
this.setData({
|
||||
isBindMobile:false
|
||||
})
|
||||
this.successEvent()
|
||||
}
|
||||
},
|
||||
|
||||
//成功回调方法
|
||||
successEvent(){
|
||||
this.triggerEvent('onSuccess', {
|
||||
type: this.data.type
|
||||
});
|
||||
},
|
||||
|
||||
}
|
||||
})
|
||||
@@ -1,6 +1,3 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"lcb-msg": "/components/msg/index"
|
||||
}
|
||||
"component": true
|
||||
}
|
||||
+56
-10
@@ -1,16 +1,62 @@
|
||||
<!--
|
||||
用法
|
||||
<lcb-auth isShow="true" bind:onSuccess="authEvent"></lcb-auth>
|
||||
type="mobile"用法
|
||||
<lcb-auth type="mobile" isShow="true" bind:onSuccess="authEvent" bind:onClose="authFailEvent"></lcb-auth>
|
||||
type="userinfo"用法 isForceProfile需要强制更新用户信息的时候才添加
|
||||
<lcb-auth type="userinfo" isForceProfile="true" isShowProfile="{{isShowProfile}}" bind:onSuccess="authEvent"></lcb-auth>
|
||||
-->
|
||||
|
||||
<!-- <view catch:tap="emptyfunc" wx:if="{{type=='userinfo' || !type}}">
|
||||
<button open-type="getUserInfo" class="auth-btngetUserInfo" bindgetuserinfo="getUserInfo">获取用户信息</button>
|
||||
</view> -->
|
||||
|
||||
<lcb-msg isShow="{{isShow}}" isHasClose="{{true}}">
|
||||
<view slot="content" class="inner40 text-center">
|
||||
<view class='pt20 text-center'><i class="iconfont font-80 color-00c800 icon-weixin"></i></view>
|
||||
<view class='pt20 pb30 text-center font-28 color-666'>
|
||||
<view>授权您的公开信息(昵称和头像)</view>
|
||||
<view>便于查看预定信息哦~</view>
|
||||
<view catch:tap="emptyfunc" wx:if="{{type=='userinfo' || !type}}">
|
||||
<block wx:if="{{isForceProfile || isShowProfile}}">
|
||||
<button class="auth-btngetUserInfo" bindtap="getUserProfile">获取用户信息</button>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<button class="auth-btngetUserInfo" bindtap="successEvent">已获取用户信息</button>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="auth-dialog-special inner40" style="z-index:{{zindex+1}};" catchtouchmove="true" wx:if="{{type=='mobile' && isShow && mode=='special'}}">
|
||||
<view class="mt30 pt2" wx:if="{{!isBindMobile}}">
|
||||
<image class='block auth-dialog-logo box-shadow-000-10-10 img-100x100 ulib-r750' src="{{modeDate.logo}}" lazy-load="{{true}}" mode="scaleToFill"></image>
|
||||
<view class="mt5 text-center font-32 text-bold" wx:if="{{modeDate.title}}">{{modeDate.title}}</view>
|
||||
<view class="relative special-intro bg-f5 mt30 inner30 line-height-16 font-28 color-333 ulib-r10">{{modeDate.content}}</view>
|
||||
<view class="mt30">
|
||||
<button class="btn-1a1a1a text-spacing-10 font-34 color-fff ulib-r10" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">{{modeDate.btn}}</button>
|
||||
</view>
|
||||
<button class='mt20 btn-36afa2 text-center font-32 color-fff ulib-r10' hover-class="btn-36afa2-hover" bindtap="getUserProfile">授权登录</button>
|
||||
<text class="special-close iconfont icon-guanbi font-60 color-fff" bindtap="onClose"></text>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
<view class="pt20 pb20" wx:else>
|
||||
<view class="text-center font-32 text-bold">{{modeDate.success}}</view>
|
||||
<view class="relative special-intro bg-f5 mt30 inner30 line-height-16 font-28 color-333 ulib-r10">{{modeDate.content}}</view>
|
||||
<view class="mt30 pl70 pr70">
|
||||
<button class="btn-border-1a1a1a font-32 color-1a ulib-r10" bindtap="onClose">知道了</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="auth-dialog" style="z-index:{{zindex+1}};" catchtouchmove="true" wx:elif="{{type=='mobile' && isShow}}">
|
||||
<view wx:if="{{!isBindMobile}}">
|
||||
<view class="cap">{{title || '立即登录'}}</view>
|
||||
<view class="intro">授权手机号即可登录狸车小程序,了解更多狸车资讯,一手活动特惠即刻拥有。</view>
|
||||
<view class="btn-list">
|
||||
<view class="item-cell">
|
||||
<button class="btn-cancel" bindtap="onClose">{{cancelbtn || '取消'}}</button>
|
||||
</view>
|
||||
<view class="item-cell">
|
||||
<button class="btn-confirm" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">{{submitbtn || '授权手机号'}}</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view wx:else>
|
||||
<view class="cap">{{tip || '恭喜您,登录成功!'}}</view>
|
||||
<view class="btn-list">
|
||||
<view class="item-cell">
|
||||
<button class="btn-cancel" bindtap="onClose">知道了</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="auth-dialog-mask" style="z-index:{{zindex}};" catchtouchmove="true" wx:if="{{isShow && type=='mobile'}}"></view>
|
||||
+116
-1
@@ -1 +1,116 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
@import "../../commons/css/common.wxss";
|
||||
.auth-dialog{
|
||||
position: fixed;
|
||||
left:50%;
|
||||
top:50%;
|
||||
transform: translate(-50%,-50%);
|
||||
width:88%;
|
||||
padding:70rpx 60rpx;
|
||||
background-color:#fff;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10rpx;
|
||||
overflow: hidden;
|
||||
z-index: 10;
|
||||
}
|
||||
.auth-dialog-special{
|
||||
position: fixed;
|
||||
left:50%;
|
||||
top:50%;
|
||||
transform: translate(-50%,-50%);
|
||||
width:80%;
|
||||
background-color:#fff;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10rpx;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
|
||||
.auth-btngetUserInfo{
|
||||
position: absolute;
|
||||
left:0;
|
||||
top:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.auth-dialog .cap{
|
||||
color:#000;
|
||||
font-size: 36rpx;
|
||||
line-height: 36rpx;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.auth-dialog .intro{
|
||||
margin-top:30rpx;
|
||||
color:#666;
|
||||
font-size: 28rpx;
|
||||
line-height: 46rpx;
|
||||
}
|
||||
.auth-dialog .btn-list{
|
||||
display: flex;
|
||||
margin-top:40rpx;
|
||||
}
|
||||
|
||||
.auth-dialog .btn-list .item-cell{
|
||||
flex: 1;
|
||||
padding:0 10rpx;
|
||||
}
|
||||
|
||||
.auth-dialog .btn-list button{
|
||||
width: 220rpx;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
overflow: hidden;
|
||||
border-radius: 50rpx;
|
||||
font-size: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.auth-dialog .btn-list button.btn-cancel{
|
||||
background: #fff;
|
||||
color: #1a1a1a;
|
||||
line-height: 68rpx;
|
||||
border:1rpx solid #1a1a1a;
|
||||
}
|
||||
.auth-dialog .btn-list button.btn-confirm{
|
||||
background: #1a1a1a;
|
||||
color: #fff;
|
||||
}
|
||||
.auth-dialog .btn-list button::after{
|
||||
border:none;
|
||||
}
|
||||
.auth-dialog-mask{
|
||||
position: fixed;
|
||||
left:0;
|
||||
right: 0;
|
||||
top:0;
|
||||
bottom:0;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
.auth-dialog-logo{
|
||||
position:absolute;
|
||||
top:-50rpx;
|
||||
left:50%;
|
||||
transform:translate(-50%,0);
|
||||
}
|
||||
.special-intro::before{
|
||||
display:block;
|
||||
position:absolute;
|
||||
top:-20rpx;
|
||||
left:50%;
|
||||
transform:translate(-50%,0);
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent transparent #f5f5f5 transparent;
|
||||
border-style: solid;
|
||||
border-width: 0 20rpx 20rpx 20rpx;
|
||||
content:"";
|
||||
}
|
||||
.special-close{
|
||||
position:absolute;
|
||||
bottom:-100rpx;
|
||||
left:50%;
|
||||
transform:translate(-50%,0);
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
isAdmin:false,
|
||||
},
|
||||
|
||||
//生命周期方法
|
||||
lifetimes: {
|
||||
//在组件实例进入页面节点树时执行
|
||||
attached: function () {
|
||||
if(app.getStorageByKey("userInfo").group_id==4){
|
||||
this.setData({
|
||||
isAdmin:true,
|
||||
})
|
||||
}
|
||||
},
|
||||
//在组件实例被从页面节点树移除时执行
|
||||
detached: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件所在页面的生命周期
|
||||
pageLifetimes: {
|
||||
//组件所在的页面被展示时执行
|
||||
show: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面被隐藏时执行
|
||||
hide: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面尺寸变化时执行
|
||||
resize: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
backChannel(){
|
||||
wx.reLaunch({
|
||||
url: '/pages/channel/index'
|
||||
})
|
||||
},
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<view class="fixed left-0 box-middle mb200 box-60x120 bg-2e3246 ulib-rr750" wx:if="{{isShow&&isAdmin}}" bindtap="backChannel">
|
||||
<view class="absolute left-0 ml10 box-middle line-height-13 font-22 color-fff">
|
||||
<view>返</view>
|
||||
<view>回</view>
|
||||
</view>
|
||||
<i class="absolute right-0 box-middle mr5 iconfont icon-jiantou-left font-22 color-fff"></i>
|
||||
</view>
|
||||
@@ -0,0 +1,5 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.box-60x120{
|
||||
width: 60rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
currentIndex: {
|
||||
type: String,
|
||||
value: '0'
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
|
||||
list: [
|
||||
{
|
||||
"url": "/pages/channel/index",
|
||||
"icon": "tab-home",
|
||||
"activeIcon": "tab-home-ac",
|
||||
"title": "首页",
|
||||
},
|
||||
{
|
||||
"url": "/pages/dataAnalysis/index",
|
||||
"icon": "tab-dataAnalysis",
|
||||
"activeIcon": "tab-dataAnalysis-ac",
|
||||
"title": "数据分析",
|
||||
},
|
||||
{
|
||||
"url": "/pages/mine/index?source=channel",
|
||||
"icon": "tab-mine",
|
||||
"activeIcon": "tab-mine-ac",
|
||||
"title": "我的",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
//生命周期方法
|
||||
lifetimes: {
|
||||
//在组件实例进入页面节点树时执行
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
//在组件实例被从页面节点树移除时执行
|
||||
detached: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件所在页面的生命周期
|
||||
pageLifetimes: {
|
||||
//组件所在的页面被展示时执行
|
||||
show: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面被隐藏时执行
|
||||
hide: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面尺寸变化时执行
|
||||
resize: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
//页面跳转
|
||||
pushNavTab(e) {
|
||||
let pages = getCurrentPages() //获取加载的页面
|
||||
let currentPage = pages[pages.length - 1] //获取当前页面的对象
|
||||
let url = currentPage.route //当前页面url
|
||||
let isBack = false
|
||||
let backIndex = 0
|
||||
if (e.currentTarget.dataset.url && e.currentTarget.dataset.url != '/' + url) {
|
||||
pages.forEach((item,index) => {
|
||||
if(e.currentTarget.dataset.url=='/'+item.route){
|
||||
isBack = true
|
||||
backIndex = index
|
||||
}
|
||||
});
|
||||
if(isBack){//后退
|
||||
_.$router.back(Number(pages.length-backIndex-1))
|
||||
}else{//前进打开
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
|
||||
} else {
|
||||
_.utils.scrollPageToDomForTop('.container')
|
||||
}
|
||||
},
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<view class="safe-pb height-190"></view>
|
||||
<view class="fixed bottom-0 left-0 wp100 fn-flex bg-fff fn-flex-around safe-pb bg-fff bts-1-eb text-center z-index-4">
|
||||
<block wx:for="{{list}}" wx:key='index'>
|
||||
<view class="fn-flex-item pt5 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
|
||||
<view class="inline-block img-60x60 icon-menu {{currentIndex == index?item.activeIcon:item.icon}}"></view>
|
||||
<view class="font-22 line-height-12 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
@@ -0,0 +1,9 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.z-index-4{z-index:9999999999;}
|
||||
.icon-menu{background:url("https://qs.haodian.cn/wechat_app/lichebao/common/icon-menu.png") no-repeat;background-size:750rpx auto;}
|
||||
.tab-home{background-position:0 5rpx;}
|
||||
.tab-home-ac{background-position:0 -55rpx;}
|
||||
.tab-dataAnalysis{background-position:-60rpx 5rpx;}
|
||||
.tab-dataAnalysis-ac{background-position:-60rpx -55rpx;}
|
||||
.tab-mine{background-position:-120rpx 5rpx;}
|
||||
.tab-mine-ac{background-position:-120rpx -55rpx;}
|
||||
@@ -0,0 +1,277 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
import Canvas from '../../commons/js/utils/canvas'
|
||||
let isGetImgInfo = false
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
source: {
|
||||
type: String,
|
||||
value: 'goods'
|
||||
},
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
isCreateQrcode: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
qccodeid: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
customImg: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
slogan: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
moments: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
//headImg:app.getStorageByKey("userInfo").headimg,
|
||||
defaultQrcode: _.config.imgUrl + 'common/qr.jpg',
|
||||
imgs: [],
|
||||
tempPosterPath: '',
|
||||
showOptBtn:false,//操作按钮显示
|
||||
},
|
||||
|
||||
attached: function () {
|
||||
isGetImgInfo = false
|
||||
},
|
||||
|
||||
//数据监听
|
||||
observers: {
|
||||
'isCreateQrcode': function (e) {
|
||||
if (e) {
|
||||
this.getMaterialHomeQrcode()
|
||||
}
|
||||
},
|
||||
'isShow': function (e) {
|
||||
if (e) {
|
||||
this.setData({
|
||||
showOptBtn:false,
|
||||
})
|
||||
this.createPoster()
|
||||
}
|
||||
},
|
||||
'customImg': function (e) {
|
||||
if (e) {
|
||||
// this.setData({
|
||||
// headImg:app.getStorageByKey("userInfo").headimg,
|
||||
// })
|
||||
//头像
|
||||
//this.getImageInfo(this.data.headImg, 4)
|
||||
this.getImageInfo(this.data.customImg, 3)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
|
||||
// 转化网络图片,获取路径
|
||||
getImageInfo(src, index) {
|
||||
let that = this
|
||||
isGetImgInfo = false
|
||||
setTimeout(function () {
|
||||
wx.getImageInfo({
|
||||
src: src,
|
||||
success: (res) => {
|
||||
let arr = that.data.imgs
|
||||
arr[index] = res
|
||||
that.setData({
|
||||
imgs: arr
|
||||
})
|
||||
isGetImgInfo = true
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log('error img is: ' + src)
|
||||
}
|
||||
})
|
||||
}, 200)
|
||||
},
|
||||
|
||||
//获取二维码
|
||||
getMaterialHomeQrcode() {
|
||||
let params = {};
|
||||
params['page'] = 'pages/special2/index';
|
||||
params['scene'] = this.data.qccodeid+'_'+app.getStorageByKey("userInfo").biz_id;
|
||||
params['width'] = 1280;
|
||||
_.apiQuery.getMaterialHomeQrcode(params).then(res => {
|
||||
this.getImageInfo(res.data.url, 2)
|
||||
}).catch(res => {
|
||||
//this.getImageInfo(this.data.defaultQrcode, 2)
|
||||
})
|
||||
},
|
||||
|
||||
//自定义海报
|
||||
customizePoster(CTX){
|
||||
|
||||
if(this.data.customImg){
|
||||
let that = this
|
||||
this.setData({
|
||||
canvasInfo:{
|
||||
width: parseFloat(this.data.imgs[3].width)+'px',
|
||||
height: parseFloat(this.data.imgs[3].height)+'px'
|
||||
}
|
||||
})
|
||||
|
||||
console.log(this.data.imgs[3].width)
|
||||
console.log(this.data.imgs[3].height)
|
||||
|
||||
//背景
|
||||
if (that.data.imgs[3]) {
|
||||
CTX.drawImage(that.data.imgs[3].path, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height)
|
||||
}
|
||||
|
||||
// //头像
|
||||
// if (that.data.imgs[4]) {
|
||||
// Canvas.circleImage(CTX,that.data.imgs[4].path,20, (that.data.imgs[3].height-170)/2,22/2)
|
||||
// }
|
||||
|
||||
// //昵称
|
||||
// Canvas.drawTextOverflow(CTX, app.getStorageByKey("userInfo").nickname, 150, 1, 14, '#fff', 20, 46, (that.data.imgs[3].height-132)/2)
|
||||
|
||||
// //标语
|
||||
// if (that.data.slogan) {
|
||||
// Canvas.drawTextOverflow(CTX, that.data.slogan, 200, 2, 11, '#fff', 17, 20, (that.data.imgs[3].height-85)/2)
|
||||
// }
|
||||
|
||||
// //标语
|
||||
// if (that.data.slogan) {
|
||||
// Canvas.drawTextOverflow(CTX, that.data.slogan, 180, 2, 11, '#666', 17, 20, (that.data.imgs[3].height-100)/2)
|
||||
// }
|
||||
|
||||
//二维码
|
||||
if (that.data.imgs[2]) {
|
||||
if(this.data.imgs[3].width>this.data.imgs[3].height){
|
||||
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width)-parseFloat(this.data.imgs[3].height/5.5)-30, parseFloat(this.data.imgs[3].height)-parseFloat(this.data.imgs[3].height/5.5)-30,parseFloat(this.data.imgs[3].height/11))
|
||||
}else{
|
||||
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width)-parseFloat(this.data.imgs[3].width/5.5)-30, parseFloat(this.data.imgs[3].height)-parseFloat(this.data.imgs[3].width/5.5)-30,parseFloat(this.data.imgs[3].width/11))
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
CTX.save()
|
||||
CTX.draw(true, function () {
|
||||
wx.hideLoading()
|
||||
that.saveCanvas()
|
||||
})
|
||||
},200)
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//生成海报
|
||||
createPoster() {
|
||||
let that = this
|
||||
wx.showLoading({
|
||||
title: '正在生成',
|
||||
})
|
||||
|
||||
if(isGetImgInfo){
|
||||
this.setData({
|
||||
tempPosterPath: ''
|
||||
})
|
||||
let ctx = wx.createCanvasContext('postercanvas', that)
|
||||
that.customizePoster(ctx)
|
||||
}
|
||||
},
|
||||
|
||||
//临时存储canvas
|
||||
saveCanvas() {
|
||||
let that = this
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'postercanvas',
|
||||
quality: 1,
|
||||
success: (res) => {
|
||||
// this.tempFilePath = res.tempFilePath
|
||||
that.setData({
|
||||
'tempPosterPath': res.tempFilePath
|
||||
})
|
||||
|
||||
setTimeout(function () {
|
||||
that.setData({
|
||||
showOptBtn:true,
|
||||
})
|
||||
},200)
|
||||
|
||||
},
|
||||
fail: (res) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
|
||||
}
|
||||
}, this)
|
||||
},
|
||||
|
||||
//保存到相册
|
||||
saveToAblum() {
|
||||
let that = this
|
||||
wx.saveImageToPhotosAlbum({
|
||||
filePath: this.data.tempPosterPath,
|
||||
success: (res) => {
|
||||
_.utils.$toast('保存成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
|
||||
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
|
||||
_.utils.$toast('您已取消保存')
|
||||
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
|
||||
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
|
||||
if (res) {
|
||||
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//隐藏海报弹框
|
||||
hidePoster() {
|
||||
this.setData({
|
||||
isShow: false
|
||||
})
|
||||
wx.hideLoading()
|
||||
},
|
||||
|
||||
//预览图片
|
||||
preview() {
|
||||
wx.previewImage({
|
||||
current: this.data.tempPosterPath, // 当前显示图片的http链接
|
||||
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//复制内容
|
||||
copyWord(e){
|
||||
if(e.currentTarget.dataset.tx){
|
||||
wx.setClipboardData({
|
||||
data: e.currentTarget.dataset.tx,
|
||||
success (res) {
|
||||
_.utils.$toast('复制成功')
|
||||
}
|
||||
})
|
||||
}else{
|
||||
_.utils.$toast('目前无文案')
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,270 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
import Canvas from '../../commons/js/utils/canvas'
|
||||
let isGetImgInfo = false
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
source: {
|
||||
type: String,
|
||||
value: 'goods'
|
||||
},
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
isCreateQrcode: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
qccodeid: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
customImg: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
slogan: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
moments: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
//headImg:app.getStorageByKey("userInfo").headimg,
|
||||
defaultQrcode: _.config.imgUrl + 'common/qr.jpg',
|
||||
imgs: [],
|
||||
tempPosterPath: '',
|
||||
showOptBtn:false,//操作按钮显示
|
||||
},
|
||||
|
||||
attached: function () {
|
||||
isGetImgInfo = false
|
||||
},
|
||||
|
||||
//数据监听
|
||||
observers: {
|
||||
'isCreateQrcode': function (e) {
|
||||
if (e) {
|
||||
this.getMaterialHomeQrcode()
|
||||
}
|
||||
},
|
||||
'isShow': function (e) {
|
||||
if (e) {
|
||||
this.setData({
|
||||
showOptBtn:false,
|
||||
})
|
||||
this.createPoster()
|
||||
}
|
||||
},
|
||||
'customImg': function (e) {
|
||||
if (e) {
|
||||
// this.setData({
|
||||
// headImg:app.getStorageByKey("userInfo").headimg,
|
||||
// })
|
||||
//头像
|
||||
//this.getImageInfo(this.data.headImg, 4)
|
||||
this.getImageInfo(this.data.customImg, 3)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
|
||||
// 转化网络图片,获取路径
|
||||
getImageInfo(src, index) {
|
||||
let that = this
|
||||
isGetImgInfo = false
|
||||
setTimeout(function () {
|
||||
wx.getImageInfo({
|
||||
src: src,
|
||||
success: (res) => {
|
||||
let arr = that.data.imgs
|
||||
arr[index] = res
|
||||
that.setData({
|
||||
imgs: arr
|
||||
})
|
||||
isGetImgInfo = true
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log('error img is: ' + src)
|
||||
}
|
||||
})
|
||||
}, 200)
|
||||
},
|
||||
|
||||
//获取二维码
|
||||
getMaterialHomeQrcode() {
|
||||
let params = {};
|
||||
params['page'] = 'pages/special2/index';
|
||||
params['scene'] = this.data.qccodeid+'_'+app.getStorageByKey("userInfo").biz_id;
|
||||
params['width'] = 260;
|
||||
_.apiQuery.getMaterialHomeQrcode(params).then(res => {
|
||||
this.getImageInfo(res.data.url, 2)
|
||||
}).catch(res => {
|
||||
//this.getImageInfo(this.data.defaultQrcode, 2)
|
||||
})
|
||||
},
|
||||
|
||||
//自定义海报
|
||||
customizePoster(CTX){
|
||||
|
||||
if(this.data.customImg){
|
||||
let that = this
|
||||
this.setData({
|
||||
canvasInfo:{
|
||||
width: parseFloat(this.data.imgs[3].width/2)+'px',
|
||||
height: parseFloat(this.data.imgs[3].height/2)+'px'
|
||||
}
|
||||
})
|
||||
|
||||
//背景
|
||||
if (that.data.imgs[3]) {
|
||||
CTX.drawImage(that.data.imgs[3].path, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height, 0, 0, that.data.imgs[3].width/2, that.data.imgs[3].height/2)
|
||||
}
|
||||
|
||||
// //头像
|
||||
// if (that.data.imgs[4]) {
|
||||
// Canvas.circleImage(CTX,that.data.imgs[4].path,20, (that.data.imgs[3].height-170)/2,22/2)
|
||||
// }
|
||||
|
||||
// //昵称
|
||||
// Canvas.drawTextOverflow(CTX, app.getStorageByKey("userInfo").nickname, 150, 1, 14, '#fff', 20, 46, (that.data.imgs[3].height-132)/2)
|
||||
|
||||
// //标语
|
||||
// if (that.data.slogan) {
|
||||
// Canvas.drawTextOverflow(CTX, that.data.slogan, 200, 2, 11, '#fff', 17, 20, (that.data.imgs[3].height-85)/2)
|
||||
// }
|
||||
|
||||
// //标语
|
||||
// if (that.data.slogan) {
|
||||
// Canvas.drawTextOverflow(CTX, that.data.slogan, 180, 2, 11, '#666', 17, 20, (that.data.imgs[3].height-100)/2)
|
||||
// }
|
||||
|
||||
//二维码
|
||||
if (that.data.imgs[2]) {
|
||||
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width/2)-parseFloat(this.data.imgs[3].width/8.5)-16, parseFloat(this.data.imgs[3].height/2)-parseFloat(this.data.imgs[3].width/8.5)-16,parseFloat(this.data.imgs[3].width/17))
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
CTX.save()
|
||||
CTX.draw(true, function () {
|
||||
wx.hideLoading()
|
||||
that.saveCanvas()
|
||||
})
|
||||
},200)
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//生成海报
|
||||
createPoster() {
|
||||
let that = this
|
||||
wx.showLoading({
|
||||
title: '正在生成',
|
||||
})
|
||||
|
||||
if(isGetImgInfo){
|
||||
this.setData({
|
||||
tempPosterPath: ''
|
||||
})
|
||||
let ctx = wx.createCanvasContext('postercanvas', that)
|
||||
that.customizePoster(ctx)
|
||||
}
|
||||
},
|
||||
|
||||
//临时存储canvas
|
||||
saveCanvas() {
|
||||
let that = this
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'postercanvas',
|
||||
quality: 1,
|
||||
success: (res) => {
|
||||
// this.tempFilePath = res.tempFilePath
|
||||
that.setData({
|
||||
'tempPosterPath': res.tempFilePath
|
||||
})
|
||||
|
||||
setTimeout(function () {
|
||||
that.setData({
|
||||
showOptBtn:true,
|
||||
})
|
||||
},200)
|
||||
|
||||
},
|
||||
fail: (res) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
|
||||
}
|
||||
}, this)
|
||||
},
|
||||
|
||||
//保存到相册
|
||||
saveToAblum() {
|
||||
let that = this
|
||||
wx.saveImageToPhotosAlbum({
|
||||
filePath: this.data.tempPosterPath,
|
||||
success: (res) => {
|
||||
_.utils.$toast('保存成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
|
||||
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
|
||||
_.utils.$toast('您已取消保存')
|
||||
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
|
||||
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
|
||||
if (res) {
|
||||
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//隐藏海报弹框
|
||||
hidePoster() {
|
||||
this.setData({
|
||||
isShow: false
|
||||
})
|
||||
wx.hideLoading()
|
||||
},
|
||||
|
||||
//预览图片
|
||||
preview() {
|
||||
wx.previewImage({
|
||||
current: this.data.tempPosterPath, // 当前显示图片的http链接
|
||||
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//复制内容
|
||||
copyWord(e){
|
||||
if(e.currentTarget.dataset.tx){
|
||||
wx.setClipboardData({
|
||||
data: e.currentTarget.dataset.tx,
|
||||
success (res) {
|
||||
_.utils.$toast('复制成功')
|
||||
}
|
||||
})
|
||||
}else{
|
||||
_.utils.$toast('目前无文案')
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<!-- components/poster/index.wxml -->
|
||||
<view class="poster fixed {{isShow?'show':'hide'}}">
|
||||
<view class="poster-bg absolute top-0 bottom-0 left-0 right-0" bindtap="hidePoster"></view>
|
||||
<view class="poster-main poster-main-img absolute box-center-middle">
|
||||
<canvas canvas-id='postercanvas' class='canvas absolute box-center-middle' style="width:{{canvasInfo.width}};height:{{canvasInfo.height}}"></canvas>
|
||||
<view wx:if="{{showOptBtn}}" class="overflowhidden ulib-r10">
|
||||
<scroll-view scroll-y="true" style="max-height:900rpx;">
|
||||
<image class="block wp100 ulib-r10" wx:if="{{tempPosterPath}}" src="{{tempPosterPath}}" mode="widthFix" catchtap="preview" />
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="bg-fff mt30 inner30 box-shadow-000-10-10 ulib-r10" wx:if="{{showOptBtn&&moments}}">
|
||||
<view class="font-32 color-666 line-clamp-2 line-height-16">{{moments}}</view>
|
||||
<view class="mt10 text-right">
|
||||
<view class="inline-block bg-333 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750" bindtap="copyWord" data-tx="{{moments}}">复制</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt40 fn-flex" wx:if="{{showOptBtn}}">
|
||||
<button class="fn-flex-item bds-2-fff btn-no-bg font-32 color-fff ulib-r750 text-center ml20 mr20" catchtap="pushLink" data-url="/pages/distribute/special/index?id={{qccodeid}}">专题预览</button>
|
||||
<button class=" fn-flex-item btn-f9394d font-32 color-fff ulib-r750 text-center ml20 mr20" hover-class="btn-f9394d-hover" catchtap="saveToAblum">保存分享</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,24 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.poster{
|
||||
top: 0;
|
||||
left: 100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
.show{
|
||||
left: 0;
|
||||
}
|
||||
.poster-bg{
|
||||
z-index: 9998;
|
||||
background-color: rgba(0,0,0,.6);
|
||||
}
|
||||
.poster-main{
|
||||
z-index: 9999;
|
||||
}
|
||||
.poster-main-img{
|
||||
width:580rpx;
|
||||
}
|
||||
.poster-main-img canvas{
|
||||
left: 1000%;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<view class="footer text-center">
|
||||
<view>
|
||||
<text class="support-tx">Powered by</text>
|
||||
<image class='inline-block img-30x30' mode='aspectFit' src='https://qs.haodian.cn/wechat_app/common/lc-logo-gray.png?v=20210721'></image>
|
||||
<image class='inline-block img-30x30' mode='aspectFit' src='https://qs.haodian.cn/wechat_app/common/lc-logo-gray.png?v=220223'></image>
|
||||
<text class="support-tx">狸车</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -24,6 +24,10 @@ Component({
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
isCustomTabBar: { //是否有底部自定义TabBar
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
iconType: { //图标
|
||||
type: String,
|
||||
value: ''
|
||||
@@ -63,7 +67,7 @@ Component({
|
||||
isShow: false
|
||||
})
|
||||
this.triggerEvent('closeevent', {
|
||||
isClose: true
|
||||
bubbles: true
|
||||
})
|
||||
},
|
||||
aaa(){
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- "usingComponents": {
|
||||
"lcb-msg": "/components/msg/index"
|
||||
},
|
||||
<lcb-msg closeevent="closeevent"></lcb-msg>
|
||||
<lcb-msg bind:closeevent="closeevent"></lcb-msg>
|
||||
|
||||
关闭方法: closeevent
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<view slot="opt">这里是插入到组件slot中的内容</view> -->
|
||||
<view class="lcb-msg" style="{{isShow?'display:block':'display:none'}}" catchmove="aaa">
|
||||
<view class="msgBg" style="background-color: rgba(0, 0, 0, .6);"></view>
|
||||
<view class="msgMain {{isShow?'active':''}}" style="{{isTransparent?'background-color: transparent;':''}}" catchmove="aaa">
|
||||
<view class="msgMain {{isShow?'active':''}}" style="{{isTransparent?'background-color: transparent;':''}}{{isCustomTabBar?'margin-top: -95rpx;':''}}" catchmove="aaa">
|
||||
<block wx:if="{{isHasClose !=''}}">
|
||||
<view wx:if="{{isHasClose=='up'}}" class="close up">
|
||||
<text class="iconfont icon-guanbi1 color-fff" bindtap="close"></text>
|
||||
|
||||
@@ -14,7 +14,7 @@ Component({
|
||||
},
|
||||
bgColor: {
|
||||
type: String,
|
||||
value: '#fe2643'
|
||||
value: '#1a1a1a'
|
||||
},
|
||||
isShowBg: {
|
||||
type: Boolean,
|
||||
@@ -56,7 +56,7 @@ Component({
|
||||
isShowRetBtn: true
|
||||
})
|
||||
}
|
||||
if (Utils.getCurrentPath().url == 'pages/index/index') {
|
||||
if (Utils.getCurrentPath().url == 'pages/index/index'||Utils.getCurrentPath().url == 'pages/login/index'||Utils.getCurrentPath().url == 'pages/customer/index'||Utils.getCurrentPath().url == 'pages/order/index'||Utils.getCurrentPath().url == 'pages/channel/index'||Utils.getCurrentPath().url == 'pages/dataAnalysis/index') {
|
||||
this.setData({
|
||||
isShowHomeBtn: true
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"lcb-searchBar": "/components/searchBar/index"
|
||||
"lc-searchBar": "/components/searchBar/index"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<view>
|
||||
<view class="fixed top-0 left-0 right-0 z-index-1" style="height: {{status + navHeight}}px;background-color:{{bgColor}}" wx:if="{{isShowBg}}"></view>
|
||||
<view class="fixed top-0 left-0 right-0 z-index-2" style="height: {{status + navHeight}}px;background-color:{{bgColor}}" wx:if="{{isShowBg}}"></view>
|
||||
<view class="fixed top-0 left-0 right-0 z-index-9999" style="height: {{status + navHeight}}px;">
|
||||
<view style='height: {{status}}px;'></view>
|
||||
<view class="relative" style='height:{{navHeight}}px;line-height:{{navHeight}}px;' wx:if="{{type=='home'}}">
|
||||
@@ -12,16 +12,12 @@
|
||||
<view class='relative' style='height:{{navHeight}}px;' wx:else>
|
||||
<view class="absolute left-0 box-middle" style="width:80px;height:32px;margin-left:7px;box-sizing:border-box;" wx:if="{{!isShowRetBtn}}">
|
||||
<view class="absolute left-0 box-middle pl15 pr15" bindtap='back'>
|
||||
<i class="lcb-icon mr10 icon-fanhui" style="font-size:22px;color:{{txtColor}};"></i>
|
||||
<i class="iconfont mr10 icon-fanhui" style="font-size:22px;color:{{txtColor}};"></i>
|
||||
</view>
|
||||
<!-- <view class="absolute top-0 bottom-0 mt15 mb15 box-center bls-ddd" style="width:10rpx;"></view> -->
|
||||
<!-- <view class="absolute right-0 box-middle pl20 pr20" bindtap='home' wx:if="{{!isShowHomeBtn}}">
|
||||
<i class="lcb-icon icon-shouye1" style="font-size:22px;color:{{txtColor}}"></i>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="absolute left-0 box-middle" style="width:40px;height:32px;margin-left:7px;box-sizing:border-box;" wx:else>
|
||||
<view class="absolute box-center-middle" bindtap='home' wx:if="{{!isShowHomeBtn}}">
|
||||
<i class="lcb-icon icon-shouye1" style="font-size:22px;color:{{txtColor}}"></i>
|
||||
<i class="iconfont icon-shouye1" style="font-size:22px;color:{{txtColor}}"></i>
|
||||
</view>
|
||||
</view>
|
||||
<view class='navbarTitle absolute box-center-middle wp40 text-center text-nowrap text-bold' style="color:{{txtColor}};">{{titleText}}</view>
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
currentIndex: {
|
||||
type: String,
|
||||
value: '0'
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
|
||||
list: [
|
||||
{
|
||||
"url": "/pages/index/index",
|
||||
"icon": "tab-home",
|
||||
"activeIcon": "tab-home-ac",
|
||||
"title": "首页",
|
||||
},
|
||||
{
|
||||
"url": "/pages/customer/index",
|
||||
"icon": "tab-customer",
|
||||
"activeIcon": "tab-customer-ac",
|
||||
"title": "客户",
|
||||
},
|
||||
{
|
||||
"url": "/pages/order/index",
|
||||
"icon": "tab-order",
|
||||
"activeIcon": "tab-order-ac",
|
||||
"title": "订单",
|
||||
},
|
||||
{
|
||||
"url": "/pages/mine/index?source=shop",
|
||||
"icon": "tab-mine",
|
||||
"activeIcon": "tab-mine-ac",
|
||||
"title": "我的",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
//生命周期方法
|
||||
lifetimes: {
|
||||
//在组件实例进入页面节点树时执行
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
//在组件实例被从页面节点树移除时执行
|
||||
detached: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件所在页面的生命周期
|
||||
pageLifetimes: {
|
||||
//组件所在的页面被展示时执行
|
||||
show: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面被隐藏时执行
|
||||
hide: function () {
|
||||
|
||||
},
|
||||
//组件所在的页面尺寸变化时执行
|
||||
resize: function () {
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
//页面跳转
|
||||
pushNavTab(e) {
|
||||
let pages = getCurrentPages() //获取加载的页面
|
||||
let currentPage = pages[pages.length - 1] //获取当前页面的对象
|
||||
let url = currentPage.route //当前页面url
|
||||
let isBack = false
|
||||
let backIndex = 0
|
||||
if (e.currentTarget.dataset.url && e.currentTarget.dataset.url != '/' + url) {
|
||||
pages.forEach((item,index) => {
|
||||
if(e.currentTarget.dataset.url=='/'+item.route){
|
||||
isBack = true
|
||||
backIndex = index
|
||||
}
|
||||
});
|
||||
if(isBack){//后退
|
||||
_.$router.back(Number(pages.length-backIndex-1))
|
||||
}else{//前进打开
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
|
||||
} else {
|
||||
_.utils.scrollPageToDomForTop('.container')
|
||||
}
|
||||
},
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<view class="safe-pb height-190"></view>
|
||||
<view class="fixed bottom-0 left-0 wp100 fn-flex bg-fff fn-flex-around safe-pb bg-fff bts-1-eb text-center z-index-4">
|
||||
<block wx:for="{{list}}" wx:key='index'>
|
||||
<view class="fn-flex-item pt5 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
|
||||
<view class="inline-block img-60x60 icon-menu {{currentIndex == index?item.activeIcon:item.icon}}"></view>
|
||||
<view class="font-22 line-height-12 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
@@ -0,0 +1,11 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.z-index-4{z-index:9999999999;}
|
||||
.icon-menu{background:url("https://qs.haodian.cn/wechat_app/lichebao/common/icon-menu.png") no-repeat;background-size:750rpx auto;}
|
||||
.tab-home{background-position:0 5rpx;}
|
||||
.tab-home-ac{background-position:0 -55rpx;}
|
||||
.tab-mine{background-position:-120rpx 5rpx;}
|
||||
.tab-mine-ac{background-position:-120rpx -55rpx;}
|
||||
.tab-customer{background-position:-180rpx 5rpx;}
|
||||
.tab-customer-ac{background-position:-180rpx -55rpx;}
|
||||
.tab-order{background-position:-240rpx 5rpx;}
|
||||
.tab-order-ac{background-position:-240rpx -55rpx;}
|
||||
@@ -0,0 +1,266 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
import Canvas from '../../commons/js/utils/canvas'
|
||||
let isGetImgInfo = false
|
||||
const app = getApp()
|
||||
Component({
|
||||
//组件的属性列表
|
||||
properties: {
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
qrcode: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
customImg: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
model: {
|
||||
type:Object,
|
||||
value:{}
|
||||
},
|
||||
storName: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
storaAddress: {
|
||||
type: String,
|
||||
value: ''
|
||||
},
|
||||
},
|
||||
|
||||
//组件的初始数据
|
||||
data: {
|
||||
imgs: [],
|
||||
tempPosterPath: '',
|
||||
showOptBtn:false,//操作按钮显示
|
||||
},
|
||||
|
||||
attached: function () {
|
||||
isGetImgInfo = false
|
||||
},
|
||||
|
||||
//数据监听
|
||||
observers: {
|
||||
'isShow': function (e) {
|
||||
if (e) {
|
||||
this.setData({
|
||||
showOptBtn:false,
|
||||
})
|
||||
this.createPoster()
|
||||
}
|
||||
},
|
||||
'model': function (e) {
|
||||
if (e) {
|
||||
console.log(this.data.model)
|
||||
this.getImageInfo(this.data.model.posterFt, 0)
|
||||
if(this.data.model.type==1){
|
||||
this.getImageInfo(this.data.model.posterBg, 3)
|
||||
}
|
||||
}
|
||||
},
|
||||
'customImg': function (e) {
|
||||
if (e) {
|
||||
this.getImageInfo(this.data.customImg, 1)
|
||||
}
|
||||
},
|
||||
'qrcode': function (e) {
|
||||
if (e) {
|
||||
this.getImageInfo(this.data.qrcode, 2)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
//组件的方法列表
|
||||
methods: {
|
||||
|
||||
// 转化网络图片,获取路径
|
||||
getImageInfo(src, index) {
|
||||
let that = this
|
||||
isGetImgInfo = false
|
||||
setTimeout(function () {
|
||||
wx.getImageInfo({
|
||||
src: src,
|
||||
success: (res) => {
|
||||
let arr = that.data.imgs
|
||||
arr[index] = res
|
||||
that.setData({
|
||||
imgs: arr
|
||||
})
|
||||
isGetImgInfo = true
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log('error img is: ' + src)
|
||||
}
|
||||
})
|
||||
}, 200)
|
||||
},
|
||||
|
||||
//自定义海报
|
||||
defaultPoster(CTX){
|
||||
|
||||
if(this.data.customImg){
|
||||
let that = this
|
||||
let width = 600
|
||||
let picheight = (parseFloat(this.data.imgs[1].height)/parseFloat(this.data.imgs[1].width))*(width-this.data.model.marginLR*2)
|
||||
this.setData({
|
||||
canvasInfo:{
|
||||
width: width+'px',
|
||||
height: this.data.model.tpHeight+this.data.model.ftHeight+picheight+'px'
|
||||
}
|
||||
})
|
||||
|
||||
CTX.setFillStyle(this.data.model.bgColor)
|
||||
CTX.fillRect(0, 0,width, this.data.model.tpHeight+this.data.model.ftHeight+picheight)
|
||||
|
||||
//底图
|
||||
if(that.data.model.type==1){
|
||||
CTX.drawImage(that.data.imgs[3].path, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height, 0, 0, width, this.data.model.tpHeight)
|
||||
}
|
||||
|
||||
//底部图
|
||||
if (that.data.imgs[0]) {
|
||||
CTX.drawImage(that.data.imgs[0].path, 0, 0, that.data.imgs[0].width, that.data.imgs[0].height, 0, this.data.model.tpHeight+picheight, width, this.data.model.ftHeight)
|
||||
}
|
||||
|
||||
//上传图
|
||||
if (that.data.imgs[1]) {
|
||||
CTX.drawImage(that.data.imgs[1].path, 0, 0, that.data.imgs[1].width, that.data.imgs[1].height, this.data.model.marginLR, this.data.model.tpHeight, width-this.data.model.marginLR*2, picheight)
|
||||
}
|
||||
|
||||
//二维码
|
||||
if (that.data.imgs[2]) {
|
||||
Canvas.circleImage(CTX,that.data.imgs[2].path,417, this.data.model.tpHeight+picheight+170,70)
|
||||
}
|
||||
|
||||
//店铺名
|
||||
if (that.data.storName) {
|
||||
Canvas.drawTextOverflow(CTX, that.data.storName, 230, 1, 24, this.data.model.color, 30, 88, this.data.model.tpHeight+picheight+72)
|
||||
}
|
||||
|
||||
//地址
|
||||
if (that.data.storaAddress) {
|
||||
Canvas.drawTextOverflow(CTX, that.data.storaAddress, 200, 1, 18, this.data.model.color, 24, 113, this.data.model.tpHeight+picheight+104)
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
CTX.save()
|
||||
CTX.draw(true, function () {
|
||||
wx.hideLoading()
|
||||
that.saveCanvas()
|
||||
})
|
||||
},200)
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//生成海报
|
||||
createPoster() {
|
||||
let that = this
|
||||
wx.showLoading({
|
||||
title: '正在生成',
|
||||
})
|
||||
|
||||
if(isGetImgInfo){
|
||||
this.setData({
|
||||
tempPosterPath: ''
|
||||
})
|
||||
let ctx = wx.createCanvasContext('postercanvas', that)
|
||||
if(that.data.posterBg){
|
||||
that.customizePoster(ctx)
|
||||
}else{
|
||||
that.defaultPoster(ctx)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//临时存储canvas
|
||||
saveCanvas() {
|
||||
let that = this
|
||||
wx.canvasToTempFilePath({
|
||||
canvasId: 'postercanvas',
|
||||
quality: 1,
|
||||
success: (res) => {
|
||||
// this.tempFilePath = res.tempFilePath
|
||||
that.setData({
|
||||
'tempPosterPath': res.tempFilePath
|
||||
})
|
||||
|
||||
setTimeout(function () {
|
||||
that.setData({
|
||||
showOptBtn:true,
|
||||
})
|
||||
},200)
|
||||
|
||||
},
|
||||
fail: (res) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
|
||||
}
|
||||
}, this)
|
||||
},
|
||||
|
||||
//保存到相册
|
||||
saveToAblum() {
|
||||
let that = this
|
||||
wx.saveImageToPhotosAlbum({
|
||||
filePath: this.data.tempPosterPath,
|
||||
success: (res) => {
|
||||
_.utils.$toast('保存成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
|
||||
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
|
||||
_.utils.$toast('您已取消保存')
|
||||
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
|
||||
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
|
||||
if (res) {
|
||||
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//隐藏海报弹框
|
||||
hidePoster() {
|
||||
this.setData({
|
||||
isShow: false
|
||||
})
|
||||
wx.hideLoading()
|
||||
},
|
||||
|
||||
//预览图片
|
||||
preview() {
|
||||
wx.previewImage({
|
||||
current: this.data.tempPosterPath, // 当前显示图片的http链接
|
||||
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//复制内容
|
||||
copyWord(e){
|
||||
if(e.currentTarget.dataset.tx){
|
||||
wx.setClipboardData({
|
||||
data: e.currentTarget.dataset.tx,
|
||||
success (res) {
|
||||
_.utils.$toast('复制成功')
|
||||
}
|
||||
})
|
||||
}else{
|
||||
_.utils.$toast('目前无文案')
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<!-- components/poster/index.wxml -->
|
||||
<view class="poster fixed {{isShow?'show':'hide'}}">
|
||||
<view class="poster-bg absolute top-0 bottom-0 left-0 right-0" bindtap="hidePoster"></view>
|
||||
<view class="poster-main poster-main-img absolute box-center-middle">
|
||||
<canvas canvas-id='postercanvas' class='canvas absolute box-center-middle' style="width:{{canvasInfo.width}};height:{{canvasInfo.height}}"></canvas>
|
||||
<view wx:if="{{showOptBtn}}" class="overflowhidden">
|
||||
<scroll-view scroll-y="true" style="max-height:1000rpx;">
|
||||
<image class="block wp100 ulib-r10" wx:if="{{tempPosterPath}}" src="{{tempPosterPath}}" mode="widthFix" catchtap="preview" />
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="mt40 fn-flex" wx:if="{{showOptBtn}}">
|
||||
<button class="fn-flex-item btn-f9394d font-32 color-fff ulib-r750 text-center ml20 mr20" hover-class="btn-f9394d-hover" catchtap="saveToAblum">保存分享</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,24 @@
|
||||
@import "../../commons/css/common.wxss";
|
||||
.poster{
|
||||
top: 0;
|
||||
left: 100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
.show{
|
||||
left: 0;
|
||||
}
|
||||
.poster-bg{
|
||||
z-index: 9998;
|
||||
background-color: rgba(0,0,0,.6);
|
||||
}
|
||||
.poster-main{
|
||||
z-index: 9999;
|
||||
}
|
||||
.poster-main-img{
|
||||
width:580rpx;
|
||||
}
|
||||
.poster-main-img canvas{
|
||||
left: 1000%;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,437 @@
|
||||
import _ from '../../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Page({
|
||||
data: {
|
||||
imgUrl:_.config.imgUrl,
|
||||
photos:[],//异常报备
|
||||
note:'',
|
||||
isShowReport:false,//是否显示报备异常弹窗
|
||||
isShowTransfer:false,//是否显示确认弹窗
|
||||
transport:[],//请上传运输单
|
||||
id:'',//查看id
|
||||
tran_id:'',//操作ID
|
||||
mileage:'',//里程数
|
||||
},
|
||||
onLoad: function (options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
this.getAppTransfer()
|
||||
|
||||
},
|
||||
onShow: function () {
|
||||
|
||||
},
|
||||
|
||||
//获取订单详情
|
||||
getAppTransfer(){
|
||||
let params = {};
|
||||
if(this.data.id != ''){
|
||||
params['id'] = this.data.id;
|
||||
}
|
||||
if(this.data.tran_id != ''){
|
||||
params['tran_id'] = this.data.tran_id;
|
||||
}
|
||||
_.apiQuery.getAppTransfer(params).then(res=>{
|
||||
this.setData({
|
||||
info:res.data,
|
||||
transport:res.data.transport.imgs,
|
||||
})
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//选择图片
|
||||
chooseImg(e) {
|
||||
let that = this
|
||||
wx.chooseImage({
|
||||
count: e.currentTarget.dataset.amount - this.data.photos.length, // 默认10
|
||||
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
||||
success(res1) {
|
||||
for (let i = 0; i < res1.tempFilePaths.length; i++) {
|
||||
//上传图片
|
||||
that.uploadImg(res1.tempFilePaths[i])
|
||||
}
|
||||
},
|
||||
fail: res => {
|
||||
wx.showToast({
|
||||
title: '文件选择失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//上传图片
|
||||
uploadImg(img){
|
||||
let that = this
|
||||
setTimeout(function () {
|
||||
wx.showLoading({
|
||||
title: '图片上传中',
|
||||
})
|
||||
}, 500);
|
||||
wx.uploadFile({
|
||||
url: _.config.api.upImg,
|
||||
filePath: img,
|
||||
name: 'img',
|
||||
formData: {
|
||||
'app': 'liche'
|
||||
},
|
||||
success(res) {
|
||||
setTimeout(function () {
|
||||
wx.hideLoading()
|
||||
}, 500);
|
||||
let imgdata = JSON.parse(res.data)
|
||||
let list = []
|
||||
list.push({
|
||||
value:imgdata.data.url,
|
||||
src:imgdata.data.full_url,
|
||||
})
|
||||
that.setData({
|
||||
photos: that.data.photos.concat(list),
|
||||
})
|
||||
},
|
||||
fail(res) {
|
||||
wx.hideLoading()
|
||||
wx.showToast({
|
||||
title: res.data.msg,
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 编辑页面删除图片
|
||||
delPic(e){
|
||||
let photos = this.data.photos
|
||||
photos.splice(e.currentTarget.dataset.index, 1)
|
||||
this.setData({
|
||||
photos: photos,
|
||||
})
|
||||
},
|
||||
|
||||
//显示报备异常弹框
|
||||
optShowReport(e){
|
||||
this.setData({
|
||||
isShowReport:!this.data.isShowReport,
|
||||
photos:[],
|
||||
note:'',
|
||||
optid:e.currentTarget.dataset.id?e.currentTarget.dataset.id:'',
|
||||
})
|
||||
},
|
||||
|
||||
//显示确认弹框
|
||||
optShowTransfer(e){
|
||||
this.setData({
|
||||
isShowTransfer:!this.data.isShowTransfer,
|
||||
photos:[],
|
||||
mileage:'',
|
||||
optType:e.currentTarget.dataset.type?e.currentTarget.dataset.type:'',
|
||||
optid:e.currentTarget.dataset.id?e.currentTarget.dataset.id:'',
|
||||
})
|
||||
},
|
||||
|
||||
//拨打电话
|
||||
call(e) {
|
||||
wx.makePhoneCall({
|
||||
phoneNumber:this.data.info.transport.mobile,
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e){
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//查看图片
|
||||
previewImage: function (e) {
|
||||
if(e.currentTarget.dataset.type=='abnormal'){
|
||||
wx.previewImage({
|
||||
current:this.data.info.abnormal.imgs[0],
|
||||
urls:this.data.info.abnormal.imgs,
|
||||
})
|
||||
}else if(e.currentTarget.dataset.type=='transport'){
|
||||
let transportImg = []
|
||||
this.data.info.transport.imgs.forEach(item => {
|
||||
transportImg.push(item.src)
|
||||
})
|
||||
wx.previewImage({
|
||||
current:transportImg[0],
|
||||
urls:transportImg,
|
||||
})
|
||||
}else if(e.currentTarget.dataset.type=='start_mileage'){
|
||||
let start_mileage = []
|
||||
this.data.info.transport.start_mileage.imgs.forEach(item => {
|
||||
start_mileage.push(item.src)
|
||||
})
|
||||
wx.previewImage({
|
||||
current:start_mileage[0],
|
||||
urls:start_mileage,
|
||||
})
|
||||
}else if(e.currentTarget.dataset.type=='end_mileage'){
|
||||
let end_mileage = []
|
||||
this.data.info.transport.end_mileage.imgs.forEach(item => {
|
||||
end_mileage.push(item.src)
|
||||
})
|
||||
wx.previewImage({
|
||||
current:end_mileage[0],
|
||||
urls:end_mileage,
|
||||
})
|
||||
}
|
||||
else if(e.currentTarget.dataset.type=='edit_transport'){
|
||||
let transportImg = []
|
||||
this.data.transport.forEach(item => {
|
||||
transportImg.push(item.src)
|
||||
})
|
||||
wx.previewImage({
|
||||
current:e.currentTarget.dataset.current,
|
||||
urls:transportImg,
|
||||
})
|
||||
}
|
||||
else if(e.currentTarget.dataset.type=='edit_photos'){
|
||||
let photos = []
|
||||
this.data.photos.forEach(item => {
|
||||
photos.push(item.src)
|
||||
})
|
||||
wx.previewImage({
|
||||
current:e.currentTarget.dataset.current,
|
||||
urls:photos,
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//确认发车/接车
|
||||
putAppTransfer() {
|
||||
let that = this
|
||||
if (that.data.mileage == ''){
|
||||
wx.showToast({
|
||||
title: '请填定里程数',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.photos.length==0){
|
||||
wx.showToast({
|
||||
title: '请拍照上传',
|
||||
icon: 'none'
|
||||
})
|
||||
}else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['id'] = that.data.optid;
|
||||
if(that.data.optType==2){
|
||||
let start_mileage = that.data.info.transport.start_mileage?that.data.info.transport.start_mileage:{}
|
||||
start_mileage.value = that.data.mileage
|
||||
start_mileage.imgs = that.data.photos
|
||||
params['start_mileage'] = start_mileage;
|
||||
}else if(that.data.optType==3){
|
||||
let end_mileage = that.data.info.transport.end_mileage?that.data.info.transport.end_mileage:{}
|
||||
end_mileage.value = that.data.mileage
|
||||
end_mileage.imgs = that.data.photos
|
||||
params['end_mileage'] = end_mileage;
|
||||
}
|
||||
_.apiQuery.putAppTransfer(params).then(res => {
|
||||
|
||||
let pages = getCurrentPages();
|
||||
let prevPage = null; //上一个页面
|
||||
if (pages.length >= 2) {
|
||||
prevPage = pages[pages.length - 2]; //上一个页面
|
||||
if(prevPage.route == 'pages/allot/list/index'){
|
||||
prevPage.onPullDownRefresh()
|
||||
}
|
||||
}
|
||||
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
isShowTransfer: false,
|
||||
})
|
||||
wx.showModal({
|
||||
title: '操作成功',
|
||||
content: '',
|
||||
confirmText: "返回",
|
||||
confirmColor: "#36afa2",
|
||||
showCancel:false,
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
wx.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}).catch(res=>{
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
//报备异常
|
||||
postAppTransfer() {
|
||||
let that = this
|
||||
if (that.data.photos.length==0) {
|
||||
wx.showToast({
|
||||
title: '请拍照上传',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.note == ''){
|
||||
wx.showToast({
|
||||
title: '请填定备注信息',
|
||||
icon: 'none'
|
||||
})
|
||||
}else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
let params = {};
|
||||
params['id'] = that.data.optid;
|
||||
params['note'] = that.data.note;
|
||||
if(that.data.photos.length > 0){
|
||||
let imgs = []
|
||||
that.data.photos.forEach(item => {
|
||||
imgs.push(item.value)
|
||||
})
|
||||
params['imgs'] = imgs;
|
||||
}
|
||||
_.apiQuery.postAppTransfer(params).then(res => {
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
isShowReport: false,
|
||||
})
|
||||
wx.showModal({
|
||||
title: '异常报备成功',
|
||||
content: '',
|
||||
confirmText: "知道了",
|
||||
confirmColor: "#36afa2",
|
||||
cancelText: "返回",
|
||||
cancelColor: "#666",
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
that.getAppTransfer()
|
||||
} else if (res.cancel) {
|
||||
wx.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}).catch(res=>{
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/*上传运输单*/
|
||||
transportUpload(e) {
|
||||
let that = this
|
||||
wx.chooseImage({
|
||||
count: 10 - that.data.transport.length, //
|
||||
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
||||
success(res1) {
|
||||
wx.showLoading({
|
||||
title: '图片上传中',
|
||||
})
|
||||
let transport=that.data.transport
|
||||
let k = 0
|
||||
for (let i = 0; i < res1.tempFilePaths.length; i++) {
|
||||
//上传图片
|
||||
wx.uploadFile({
|
||||
url:_.config.api.upImg,
|
||||
filePath:res1.tempFilePaths[i],
|
||||
name: 'img',
|
||||
formData: {
|
||||
'app': 'liche'
|
||||
},
|
||||
success: (resp) => {
|
||||
k = k + 1
|
||||
resp.data = JSON.parse(resp.data);
|
||||
wx.hideLoading();
|
||||
if (resp.data.code == 200) {
|
||||
let imgdata = resp.data
|
||||
let list = []
|
||||
list.push({
|
||||
value:imgdata.data.url,
|
||||
src:imgdata.data.full_url,
|
||||
})
|
||||
transport=transport.concat(list)
|
||||
if(k == res1.tempFilePaths.length){
|
||||
let params = {};
|
||||
params['id'] = that.data.info.id;
|
||||
params['type'] = 0;
|
||||
let imgs = []
|
||||
transport.forEach(item => {
|
||||
imgs.push(item.value)
|
||||
})
|
||||
params['imgs'] = imgs;
|
||||
_.apiQuery.postAppTransferTransport(params).then(res => {
|
||||
that.setData({
|
||||
transport,
|
||||
})
|
||||
})
|
||||
}
|
||||
}else{
|
||||
wx.showToast({
|
||||
title: '上传失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
fail: res => {
|
||||
wx.showToast({
|
||||
title: '文件选择失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
// 编辑页面删除图片
|
||||
delTransport(e){
|
||||
let transport = this.data.transport
|
||||
transport.splice(e.currentTarget.dataset.index, 1)
|
||||
let params = {};
|
||||
params['id'] = this.data.info.id;
|
||||
let imgs = []
|
||||
transport.forEach(item => {
|
||||
imgs.push(item.value)
|
||||
})
|
||||
params['imgs'] = imgs;
|
||||
_.apiQuery.postAppTransferTransport(params).then(res => {
|
||||
this.setData({
|
||||
transport,
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.getAppTransfer()
|
||||
},
|
||||
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "调拨详情",
|
||||
"usingComponents": {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
<view class="container">
|
||||
<view class="inner30 {{info.status==1?'pb200':'pb100'}}">
|
||||
<view class="relative bg-fff ulib-r10 box-shadow-000-10-10">
|
||||
<view class="relative inner40 pr180 bbs-1-eb">
|
||||
<view class="font-28">
|
||||
<text class="font-32">{{info.transport.name}}</text>
|
||||
<text class="font-28 color-666">({{info.transport.mobile}})</text>
|
||||
</view>
|
||||
<view class="mt10 font-22 color-666">身份证:{{info.transport.cardid}}</view>
|
||||
<view class="mt10 font-22 color-999">{{info.transport.title}}</view>
|
||||
<view class="absolute right-0 box-middle">
|
||||
<view class="inline-block relative img-55x55 mr40 bg-333 font-28 color-fff ulib-r750" catchtap="call">
|
||||
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inner40">
|
||||
<view class="font-32">车辆信息</view>
|
||||
<block wx:for="{{info.other_data}}" wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28 color-666">
|
||||
<view class="fn-fl">{{item.title}}</view>
|
||||
<view class="fn-fr wp60 text-right" wx:if="{{item.list}}">
|
||||
<block wx:for="{{item.list}}" wx:for-item="it" wx:key='i'>
|
||||
<text class="inline-block ml5 mr5 pl10 pr10 bg-999 font-22 color-fff ulib-r750">{{it}}</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-fr wp60 text-nowrap text-right" wx:elif="{{item.value}}">{{item.value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="pt0 inner40" wx:if="{{info.abnormal}}">
|
||||
<view class="font-32">报备异常</view>
|
||||
<view class="mt20 font-28 color-666" wx:if="{{info.abnormal.note}}">{{info.abnormal.note}}</view>
|
||||
<view class="mt20" wx:if="{{info.abnormal.imgs.length>0}}">
|
||||
<view class="img-200x180 relative" bindtap="previewImage" data-type="abnormal">
|
||||
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.abnormal.imgs.length>1}}">{{info.abnormal.imgs.length}}张</view>
|
||||
<image class='img-200x180 ulib-r10' src='{{info.abnormal.imgs[0]}}' mode='aspectFill'></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pl40 pr40 pb30">
|
||||
<view class="font-32" wx:if="{{info.status==1}}">请上传运输单</view>
|
||||
<view class="font-32" wx:elif="{{info.transport.imgs.length>0}}">请上传运输单</view>
|
||||
<view class="mt20" wx:if="{{info.status==1}}">
|
||||
<scroll-view class="space-nowrap" scroll-x="true">
|
||||
<block wx:for='{{transport}}' wx:for-item='transport' wx:for-index="index" wx:key='transport'>
|
||||
<view class="inline-block img-200x180 mr20 relative">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delTransport" data-index="{{index}}" ></i>
|
||||
<image class='img-200x180 ulib-r10' src='{{transport.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_transport" data-current="{{transport.src}}"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:if="{{transport.length<10}}">
|
||||
<view class="inline-block text-center bg-f8 img-200x180 mr20 relative ulib-r10 overflowhidden" bindtap="transportUpload">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="mt20" wx:elif="{{info.transport.imgs.length>0}}">
|
||||
<view class="img-200x180 relative" bindtap="previewImage" data-type="transport">
|
||||
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.imgs.length>1}}">{{info.transport.imgs.length}}张</view>
|
||||
<image class='img-200x180 ulib-r10' src='{{info.transport.imgs[0].src}}' mode='aspectFill'></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pl40 pr40 pb30" wx:if="{{info.transport.start_mileage.imgs.length>0}}">
|
||||
<view class="font-32">发车信息</view>
|
||||
<view class="mt20 font-28 color-666">
|
||||
{{info.transport.start_mileage.title}}:{{info.transport.start_mileage.value}}{{info.transport.start_mileage.tag}}
|
||||
</view>
|
||||
<view class="mt20">
|
||||
<view class="img-200x180 relative" bindtap="previewImage" data-type="start_mileage">
|
||||
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.start_mileage.imgs.length>1}}">{{info.transport.start_mileage.imgs.length}}张</view>
|
||||
<image class='img-200x180 ulib-r10' src='{{info.transport.start_mileage.imgs[0].src}}' mode='aspectFill'></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pl40 pr40 pb30" wx:if="{{info.transport.end_mileage.imgs.length>0}}">
|
||||
<view class="font-32">接车信息</view>
|
||||
<view class="mt20 fn-clear font-28 color-666">
|
||||
{{info.transport.end_mileage.title}}:{{info.transport.end_mileage.value}}{{info.transport.end_mileage.tag}}
|
||||
</view>
|
||||
<view class="mt20">
|
||||
<view class="img-200x180 relative" bindtap="previewImage" data-type="end_mileage">
|
||||
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.end_mileage.imgs.length>1}}">{{info.transport.end_mileage.imgs.length}}张</view>
|
||||
<image class='img-200x180 ulib-r10' src='{{info.transport.end_mileage.imgs[0].src}}' mode='aspectFill'></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="mt30 font-24 color-999"><i class="mr5 iconfont icon-tishi"></i>请仔细检查车辆外观与随车物品是否正常,如有异常点击下方报备异常。</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="fixed left-0 right-0 bottom-0 bg-fff-op90 inner40 fn-flex safe-pb" wx:if="{{info.status==1}}">
|
||||
<block wx:for="{{info.btn}}" wx:key='index'>
|
||||
<block wx:if="{{item.type==1}}">
|
||||
<button class="wp100 bds-2-36afa2 bg-fff mr20 pt10 pb10 text-center font-32 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover" bindtap="optShowReport" data-id="{{item.id}}">{{item.title}}</button>
|
||||
</block>
|
||||
<block wx:elif="{{item.type==2||item.type==3}}">
|
||||
<button class="wp100 btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="optShowTransfer" data-type="{{item.type}}" data-id="{{item.id}}">{{item.title}}</button>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<lcb-msg isShow="{{isShowReport}}">
|
||||
<view slot="content">
|
||||
<view class="pt40 pl40 pr40">
|
||||
<view class="font-36 text-center">报备异常</view>
|
||||
</view>
|
||||
<view class="mt30 pl30 pr40">
|
||||
<scroll-view class="space-nowrap text-center" style="width:540rpx;" scroll-x="true">
|
||||
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
|
||||
<view class="inline-block img-200x180 ml10 mr10 relative">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
|
||||
<image class='img-200x180 ulib-r10' src='{{photos.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_photos" data-current="{{photos.src}}"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:if="{{photos.length==0}}">
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{photos.length==1}}">
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{photos.length<10}}">
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="pl40 pr40 pb40">
|
||||
<view class="mt15 font-32">备注信息<text class="color-f9394d">*</text></view>
|
||||
<textarea class="mt15 wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请填写备注信息" style="height:150rpx;" model:value='{{note}}' />
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppTransfer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<lcb-msg isShow="{{isShowTransfer}}">
|
||||
<view slot="content">
|
||||
<view class="pt40 pl40 pr40">
|
||||
<view class="font-36 text-center" wx:if="{{optType==2}}">发车信息</view>
|
||||
<view class="font-36 text-center" wx:elif="{{optType==3}}">接车信息</view>
|
||||
</view>
|
||||
<view class="relative mt20 pl40 pr100">
|
||||
<input class="mt15 wp100 pl20 pr20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请填写里程数" type="digit" style="height:70rpx;" model:value='{{mileage}}'/>
|
||||
<view class="absolute box-middle right-0 pr40 font-32 color-666">km</view>
|
||||
</view>
|
||||
<view class="mt30 pb40 pl30 pr40">
|
||||
<scroll-view class="space-nowrap text-center" style="width:540rpx;" scroll-x="true">
|
||||
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
|
||||
<view class="inline-block img-200x180 ml10 mr10 relative">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
|
||||
<image class='img-200x180 ulib-r10' src='{{photos.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_photos" data-current="{{photos.src}}"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:if="{{photos.length==0}}">
|
||||
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="1">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-48"></i>
|
||||
<view class="mt5 font-22">拍照上传</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
<view class="mt10 text-center font-26 color-999">仪表盘拍照上传</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowTransfer" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="putAppTransfer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/allot/detail/index.wxss */
|
||||
@@ -0,0 +1,112 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Page({
|
||||
data: {
|
||||
imgUrl: _.config.imgUrl,
|
||||
isShowReport:false,//是否显示调拨盘点弹框
|
||||
},
|
||||
onLoad: function (options) {
|
||||
this.getUserInfo()
|
||||
},
|
||||
onShow: function () {
|
||||
this.setData({
|
||||
isShowReport:false,//是否显示调拨盘点弹框
|
||||
remindMsg:[],
|
||||
});
|
||||
this.getAppTransferRemind()
|
||||
this.getAppInventoryRemind()
|
||||
this.getAppGoodsRemind()
|
||||
},
|
||||
//获取用户信息
|
||||
getUserInfo(){
|
||||
_.apiQuery.getUserInfo().then(res => {
|
||||
this.setData({
|
||||
userInfo: res
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//调拨提醒
|
||||
getAppTransferRemind(){
|
||||
_.apiQuery.getAppTransferRemind().then(res => {
|
||||
if(res.data.total>0){
|
||||
let remindMsg = this.data.remindMsg
|
||||
remindMsg.push({
|
||||
title:'调拨提醒',
|
||||
content:'您有新的车辆调拨,需要您进行确认操作。',
|
||||
img:'https://qs.haodian.cn/wechat_app/lichebao/allot/car.gif?v=220224',
|
||||
btn:{
|
||||
title:'前往操作',
|
||||
url:'/pages/allot/list/index',
|
||||
},
|
||||
})
|
||||
this.setData({
|
||||
remindMsg,
|
||||
isShowReport:true,
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//盘点提醒
|
||||
getAppInventoryRemind(){
|
||||
_.apiQuery.getAppInventoryRemind().then(res => {
|
||||
if(res.data.total>0){
|
||||
let remindMsg = this.data.remindMsg
|
||||
remindMsg.push({
|
||||
title:'盘点提醒',
|
||||
content:'您有新的车辆盘点,需要您进行确认操作。',
|
||||
img:'https://qs.haodian.cn/wechat_app/lichebao/inventory/animation.gif',
|
||||
btn:{
|
||||
title:'前往操作',
|
||||
url:'/pages/inventory/list/index',
|
||||
},
|
||||
})
|
||||
this.setData({
|
||||
remindMsg,
|
||||
isShowReport:true,
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//库存提醒/预警
|
||||
getAppGoodsRemind(){
|
||||
let params = {};
|
||||
params['type'] = 1;
|
||||
_.apiQuery.getAppGoodsRemind(params).then(res => {
|
||||
this.setData({
|
||||
stock:res.data,
|
||||
})
|
||||
wx.stopPullDownRefresh()
|
||||
});
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//显示隐藏调拨盘点弹窗
|
||||
optShowReport(e){
|
||||
this.setData({
|
||||
isShowReport:!this.data.isShowReport,
|
||||
})
|
||||
},
|
||||
|
||||
//退出登录
|
||||
logout(){
|
||||
wx.clearStorage()
|
||||
wx.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
})
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh: function () {
|
||||
this.getAppGoodsRemind()
|
||||
},
|
||||
|
||||
})
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"enablePullDownRefresh": true,
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarBackgroundColor": "#1a1c26",
|
||||
"backgroundColor": "#ffffff",
|
||||
"backgroundColorTop": "#1a1c26",
|
||||
"usingComponents": {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<view class="container">
|
||||
<view class='pt160 text-center'>
|
||||
<image class='img-130x130 ulib-r750' mode="aspectFill" src='{{imgUrl}}/login/logo.jpg?v=220223'></image>
|
||||
<view class='mt20 font-32 color-fff'>{{userInfo.uname}},欢迎回到狸车宝!</view>
|
||||
<!-- <view class="mt10 font-64 color-fff">{{userInfo.uname}}</view> -->
|
||||
<view class="mt20">
|
||||
<view class="inline-block bg-fff mt10 pt10 pb10 pl30 pr30 font-32 ulib-r750">{{userInfo.biz_name}}</view>
|
||||
</view>
|
||||
<view class="mt20">
|
||||
<view class="inline-block pt10 pb10 pl30 pr30 font-24 color-fff ulib-r750" bindtap="logout">
|
||||
<i class="iconfont icon-tuichu mr10"></i>退出
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="fixed left-0 bottom-0 right-0 bg-fff pt200 pb20 pl100 pr100">
|
||||
<!-- <button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="pushLink" data-url="/pages/allot/list/index"><text class="iconfont icon-zengjia mr10"></text>新增调拨</button> -->
|
||||
</view>
|
||||
<view class="fixed left-0 bottom-0 right-0 pl30 pr30 pb50">
|
||||
<view class="relative ml15 mr15 mb30 pt20 pb20 pl30 pr200 ulib-r750 font-24 color-fff" style="background-image:linear-gradient(45deg, #30cfbd, #2cbf8b);" bindtap="pushLink" data-url="/pages/inventory/warning/index" wx:if="{{stock.show==1}}">
|
||||
<view class="text-left">{{stock.inventory.title}}</view>
|
||||
<view class="absolute right-0 box-middle mr25 mb10">
|
||||
<text class="text-middle">{{stock.inventory.value}}</text>
|
||||
<i class="iconfont icon-gengduo ml5 text-middle"></i>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pt30 pb30 pl15 pr15 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="fn-flex">
|
||||
<view class="fn-flex-item ml15 mr15" bindtap="pushLink" data-url="/pages/allot/list/index?tabs_id=1&type=1&title=调拨发车"><image class='img-300x230' mode="aspectFill" src='{{imgUrl}}/allot/tip-1.png'></image></view>
|
||||
<view class="fn-flex-item ml15 mr15" bindtap="pushLink" data-url="/pages/allot/list/index?tabs_id=1&type=2&title=调拨收车"><image class='img-300x230' mode="aspectFill" src='{{imgUrl}}/allot/tip-2.png'></image></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 调拨提醒 盘点提醒 -->
|
||||
<lcb-msg isShow="{{isShowReport}}">
|
||||
<view slot="content">
|
||||
<swiper class='wp100' style="height:550rpx;" autoplay circular bindchange="bannerChange">
|
||||
<swiper-item class="relative" wx:for="{{remindMsg}}" wx:key="index">
|
||||
<view class="pt40 pl40 pr40">
|
||||
<view class="font-36 text-center">{{item.title}}</view>
|
||||
<view class="mt10 font-22 text-center color-999">{{item.content}}</view>
|
||||
</view>
|
||||
<view class="mt20 pl40 pr40 pb40">
|
||||
<image class='wp100 ulib-r10' src='{{item.img}}' mode='widthFix'></image>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button bindtap="pushLink" data-url="{{item.btn.url}}" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">{{item.btn.title}}</button>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
<view class="absolute left-0 right-0 bottom-0 pb20 text-center" style='height:30rpx' wx:if="{{remindMsg.length>1&&remindMsg.length<16}}">
|
||||
<block wx:for-items="{{remindMsg}}" wx:for-index="j" wx:key='j'>
|
||||
<view class="inline-block indicator-pin {{banneractive==j?'active':''}}"></view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
@@ -0,0 +1,7 @@
|
||||
page{
|
||||
background-repeat:no-repeat;
|
||||
background-position:center top;
|
||||
background-size:100% auto;
|
||||
background-color:#1a1c26;
|
||||
background-image:url('http://qs.haodian.cn/wechat_app/lichebao/allot/theme.jpg');
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
import _ from '../../../commons/js/commons'
|
||||
const app = getApp()
|
||||
Page({
|
||||
data: {
|
||||
list: [],//客户列表
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
flag:1,
|
||||
s_date:'',
|
||||
e_date:'',
|
||||
|
||||
type:'',//调拨类型 1调拨发车2调拨收车
|
||||
tabs_id:'',//分类 1进行中2已完成
|
||||
tab:[],
|
||||
channel:'',//是否来自渠道
|
||||
city_id:'',//城市ID
|
||||
},
|
||||
onLoad: function (options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
if(this.data.title){
|
||||
wx.setNavigationBarTitle({
|
||||
title:this.data.title,
|
||||
})
|
||||
}
|
||||
|
||||
this.getAppTransferTabs()
|
||||
},
|
||||
|
||||
//客户-tab
|
||||
getAppTransferTabs() {
|
||||
_.apiQuery.getAppTransferTabs().then(res => {
|
||||
this.setData({
|
||||
tab:res.data,
|
||||
tabs_id:this.data.tabs_id==''?res.data[0].id:this.data.tabs_id,
|
||||
})
|
||||
|
||||
this.getAppTransferLists()
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
});
|
||||
},
|
||||
|
||||
//切换tab
|
||||
changeTab(e){
|
||||
this.setData({
|
||||
tabs_id: this.data.tab[e.currentTarget.dataset.index].id,
|
||||
})
|
||||
this.searchSubmit()
|
||||
},
|
||||
|
||||
//获取客户列表
|
||||
getAppTransferLists() {
|
||||
this.setData({
|
||||
load: false,
|
||||
loading: true,
|
||||
})
|
||||
let params = {};
|
||||
params['page'] = this.data.pageNo;
|
||||
params['size'] = 10;
|
||||
if(this.data.channel != ''){
|
||||
params['channel'] = this.data.channel;
|
||||
}
|
||||
if(this.data.city_id != ''){
|
||||
params['city_id'] = this.data.city_id;
|
||||
}
|
||||
if(this.data.type != ''){
|
||||
params['type'] = this.data.type;
|
||||
}
|
||||
if(this.data.tabs_id != ''){
|
||||
params['tabs_id'] = this.data.tabs_id;
|
||||
}
|
||||
if(this.data.s_date != ''){
|
||||
params['s_date'] = this.data.s_date;
|
||||
}
|
||||
if(this.data.e_date != ''){
|
||||
params['e_date'] = this.data.e_date;
|
||||
}
|
||||
_.apiQuery.getAppTransferLists(params).then(res => {
|
||||
this.setData({
|
||||
flag: this.data.flag - 1
|
||||
})
|
||||
if (!this.data.flag) {
|
||||
this.setData({
|
||||
pageNo: this.data.pageNo + 1,
|
||||
list: this.data.list.concat(res.data.list),
|
||||
load: true,
|
||||
loading: false,
|
||||
})
|
||||
if (res.data.total == 0) {
|
||||
this.setData({
|
||||
noData: true
|
||||
})
|
||||
} else if (this.data.list.length == res.data.total) {
|
||||
this.setData({
|
||||
end: true
|
||||
})
|
||||
}
|
||||
}
|
||||
wx.stopPullDownRefresh()
|
||||
});
|
||||
},
|
||||
|
||||
//提交搜索
|
||||
searchSubmit(){
|
||||
this.setData({
|
||||
list: [],
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
flag: this.data.flag + 1
|
||||
})
|
||||
this.getAppTransferLists()
|
||||
},
|
||||
|
||||
//建卡时间
|
||||
startDate(e){
|
||||
this.setData({
|
||||
s_date: e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//建卡时间
|
||||
endDate(e){
|
||||
this.setData({
|
||||
e_date: e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e){
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
list: [],
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
flag: this.data.flag + 1
|
||||
})
|
||||
this.getAppTransferLists()
|
||||
},
|
||||
|
||||
//页面上拉触底事件的处理函数
|
||||
onReachBottom(){
|
||||
if (this.data.noData || this.data.end||!this.data.load) return;
|
||||
this.setData({
|
||||
flag: this.data.flag + 1
|
||||
})
|
||||
this.getAppTransferLists()
|
||||
},
|
||||
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "调拨列表",
|
||||
"usingComponents": {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<view class="container">
|
||||
|
||||
<view>
|
||||
<view style="padding-top:110rpx"></view>
|
||||
<view class="fixed top-0 left-0 right-0 bg-fff z-index-1">
|
||||
<view class="fn-flex mt5 pl100 pr100 font-32 color-666 text-center" wx:if="{{tab.length<5}}">
|
||||
<block wx:for='{{tab}}' wx:key='list'>
|
||||
<view class="fn-flex-item pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab">
|
||||
<view class="relative">{{item.name}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<scroll-view class="mt5 font-32 color-666 text-center space-nowrap" scroll-x="true" wx:else>
|
||||
<view class="pl20 inline-block"></view>
|
||||
<block wx:for='{{tab}}' wx:key='list'>
|
||||
<view class="pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab" >
|
||||
<view class="relative">{{item.name}}</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="pl40 inline-block"></view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pl30 relative text-center font-22">
|
||||
<view class="inline-block text-middle pt10 pb10 bg-f6 ulib-r750" style="width:240rpx;">
|
||||
<picker mode="date" value="{{s_date}}" bindchange="startDate">
|
||||
<text class="color-ccc" wx:if="{{s_date == ''}}">请选择</text>
|
||||
<text wx:else>{{s_date}}</text>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="inline-block text-middle pt10 pb10 pl10 pr10">-</view>
|
||||
<view class="wp33 inline-block text-middle pt10 pb10 bg-f6 ulib-r750" style="width:240rpx;">
|
||||
<picker mode="date" value="{{e_date}}" bindchange="endDate">
|
||||
<text class="color-ccc" wx:if="{{e_date == ''}}">请选择</text>
|
||||
<text wx:else>{{e_date}}</text>
|
||||
</picker>
|
||||
</view>
|
||||
<view bindtap="searchSubmit" class="inline-block text-middle ml10 pt10 pb10 bg-333 color-fff ulib-r750" style="width:140rpx;">搜索</view>
|
||||
</view>
|
||||
|
||||
<view class="mt30 pl30 pr30">
|
||||
|
||||
<block wx:for='{{list}}' wx:key='index'>
|
||||
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="{{item.url}}">
|
||||
<view class="relative font-34 fn-clear">
|
||||
<i class="absolute box-center-middle iconfont icon-arrow font-30 color-888"></i>
|
||||
<view class="fn-fl wp45 text-nowrap" style="color:{{item.out_car.color}}">{{item.out_car.title}}</view>
|
||||
<view class="fn-fr wp45 text-nowrap text-right" style="color:{{item.in_car.color}}">{{item.in_car.title}}</view>
|
||||
</view>
|
||||
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='it' wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28">
|
||||
<view class="fn-fl color-333">{{it.title}}</view>
|
||||
<view class="fn-fr wp60 text-nowrap text-right color-666">{{it.value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 pt5 pb5 pl20 pr20 bg-f6 font-22 color-666 ulib-rlb750 ulib-rr750" wx:if="{{item.c_time}}">{{item.c_time}}</view>
|
||||
</view>
|
||||
</block>
|
||||
<lcb-listmore isLoading='{{loading}}' isEnd='{{end}}' isNoData='{{noData}}'></lcb-listmore>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
@@ -0,0 +1,3 @@
|
||||
.tabmenu2{display:inline-block;line-height:72rpx;}
|
||||
.tabmenu2.active view.relative{display:inline-block;}
|
||||
.tabmenu2.active view.relative::before{display:inline-block;position:absolute;bottom:0;left:50%;transform:translate(-50%,0);width:64rpx;height:6rpx;content:"";background-color:#36afa2;}
|
||||
@@ -0,0 +1,131 @@
|
||||
const innerAudioContext = wx.createInnerAudioContext();
|
||||
let interval = null
|
||||
Page({
|
||||
data: {
|
||||
currentime:0,
|
||||
currentx:'00:00'
|
||||
},
|
||||
onLoad: function (options) {
|
||||
let res = {"code":200,"data":{"list":[{"content":"【帆神】拨打电话","record_url":"https:\/\/media.liche.cn\/liche\/xz_video_b0f8821632330b5f\/1f06c26a0da82604.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话","record_url":"https:\/\/media.liche.cn\/liche\/xz_video_65efc63e86180ab0\/12c3837809e69d57.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话","record_url":"https:\/\/img.liche.cn\/liche\/xz_video_e41408d91a337343\/3177bd021db3c7cd.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话(未接通)","record_url":"","second":0,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话(未接通)","record_url":"","second":0,"imgs":[],"c_time":"2021.07.27"},{"content":"【lccsw】【lccsw】分配客户","record_url":"","second":0,"imgs":[],"c_time":"2021.07.22"},{"content":"【admin】后台分配","record_url":"","second":0,"imgs":[],"c_time":"2021.07.22"}],"total":7,"statistics":[{"name":"去电","val":5,"color":"#f3f6fc"},{"name":"短信","val":0,"color":"#fffaeb"},{"name":"到店","val":"0","color":"#f1f9f8"},{"name":"试驾","val":"0","color":"#fff6f8"}]},"msg":""}
|
||||
|
||||
let list = res.data.list
|
||||
list.forEach(item => {
|
||||
if(item.record_url){
|
||||
item.alltime=this.format(item.second)
|
||||
}
|
||||
})
|
||||
|
||||
this.setData({
|
||||
logslist:list,
|
||||
})
|
||||
|
||||
innerAudioContext.onEnded(() => {
|
||||
this.offaudio()
|
||||
})
|
||||
|
||||
},
|
||||
//生命周期函数--监听页面隐藏
|
||||
onHide: function () {
|
||||
this.offaudio()
|
||||
},
|
||||
|
||||
//生命周期函数--监听页面卸载
|
||||
onUnload: function () {
|
||||
this.offaudio()
|
||||
},
|
||||
onShow(){
|
||||
this.offaudio()
|
||||
},
|
||||
|
||||
//时间格式话
|
||||
format(t) {
|
||||
let time = Math.floor(t / 60) >= 10 ? Math.floor(t / 60) : '0' + Math.floor(t / 60)
|
||||
t = time + ':' + ((t % 60) / 100).toFixed(2).slice(-2)
|
||||
return t
|
||||
},
|
||||
|
||||
//点击
|
||||
handle_slider_move_start(e){
|
||||
clearTimeout(interval)
|
||||
innerAudioContext.stop()
|
||||
this.setData({
|
||||
currentIndex:e.currentTarget.dataset.index,
|
||||
play:false,
|
||||
})
|
||||
},
|
||||
|
||||
//拖动中
|
||||
hanle_slider_changing(e){
|
||||
clearTimeout(interval)
|
||||
innerAudioContext.stop()
|
||||
this.setData({
|
||||
currentime:e.detail.value,
|
||||
currentx:this.format(parseInt(e.detail.value))
|
||||
})
|
||||
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
|
||||
},
|
||||
|
||||
//拖动结束
|
||||
hanle_slider_change(e){
|
||||
clearTimeout(interval)
|
||||
innerAudioContext.stop()
|
||||
this.setData({
|
||||
currentime:e.detail.value,
|
||||
currentx:this.format(parseInt(e.detail.value))
|
||||
})
|
||||
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
|
||||
innerAudioContext.seek(parseInt(this.data.currentime))
|
||||
},
|
||||
|
||||
//离开页面
|
||||
offaudio() {
|
||||
this.setData({
|
||||
currentIndex:'-1',
|
||||
play: false,
|
||||
currentime:0,
|
||||
currentx:'00:00'
|
||||
})
|
||||
innerAudioContext.stop()
|
||||
clearTimeout(interval)
|
||||
},
|
||||
|
||||
//操作录音
|
||||
audioPlay: function (e) {
|
||||
clearTimeout(interval)
|
||||
if(this.data.currentIndex != e.currentTarget.dataset.index){
|
||||
innerAudioContext.stop()
|
||||
this.setData({
|
||||
currentIndex:e.currentTarget.dataset.index,
|
||||
currentime:0,
|
||||
play:true,
|
||||
})
|
||||
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
|
||||
innerAudioContext.play()
|
||||
this.countDown()
|
||||
}else{
|
||||
if(this.data.play){
|
||||
this.setData({
|
||||
play:false,
|
||||
})
|
||||
innerAudioContext.pause()
|
||||
}else{
|
||||
this.setData({
|
||||
play:true,
|
||||
})
|
||||
innerAudioContext.play()
|
||||
this.countDown()
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//播放录音时间
|
||||
countDown:function () {
|
||||
interval = setInterval(res => {
|
||||
this.setData({
|
||||
currentime:this.data.currentime + 1,
|
||||
currentx:this.format(this.data.currentime + 1)
|
||||
})
|
||||
}, 1000)
|
||||
},
|
||||
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
<view class="inner40">
|
||||
|
||||
|
||||
<view class="pl15 pr15">
|
||||
<view class="relative mt40 overflowhidden">
|
||||
<view class="font-22 relative z-index-1">
|
||||
<i class="iconfont bg-fff icon-genzong mr10"></i>
|
||||
<text>用户跟踪</text>
|
||||
</view>
|
||||
<view class="orderDtail-log mt40 relative" wx:if="{{logslist.length>0}}">
|
||||
<block wx:for="{{logslist}}" wx:for-index="index" wx:key="index">
|
||||
<view class="orderDtail-log-item pl40 relative">
|
||||
<view class="orderDtail-log-content">
|
||||
<view class="font-22 color-999">{{item.c_time}}</view>
|
||||
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
|
||||
<view class="relative mt10 wp80 pt5 pb5 pl180 bg-e3f5f3 color-36afa2 font-30 ulib-r10" wx:if="{{!!item.record_url}}">
|
||||
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont {{play?'icon-zanting1':'icon-bofang'}}" wx:if="{{currentIndex==index}}"></i>
|
||||
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont icon-bofang" wx:else></i>
|
||||
<text class="absolute box-middle left-0 ml65 font-20">{{currentIndex==index?currentx:'00:00'}} / {{item.alltime}}</text>
|
||||
<slider
|
||||
bindtouchstart="handle_slider_move_start"
|
||||
bindchanging="hanle_slider_changing"
|
||||
bindchange="hanle_slider_change"
|
||||
data-index="{{index}}"
|
||||
min="0"
|
||||
step="0.000001"
|
||||
block-size="12"
|
||||
max="{{item.second}}"
|
||||
block-color="#5ec6bb"
|
||||
activeColor="#36afa2"
|
||||
backgroundColor="#d1eeeb"
|
||||
value="{{currentIndex==index?currentime:0}}"
|
||||
/>
|
||||
</view>
|
||||
<view wx:if="{{item.imgs.length>0}}">
|
||||
<block wx:for="{{item.imgs}}" wx:for-item="img" wx:for-index="j" wx:key="j">
|
||||
<image bindtap="previewImage" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-1-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<i class="absolute box-middle mt15 bg-fff line-height-11 font-22 color-999 iconfont icon-jiantou-up z-index-1" wx:if="{{index+1 != logslist.length}}"></i>
|
||||
<text class="absolute orderDtail-log-line2 z-index-0" wx:if="{{index != logslist.length-1}}"></text>
|
||||
<!-- <text class="absolute orderDtail-log-line z-index-0"></text> -->
|
||||
<text class="absolute orderDtail-log-dot z-index-1"></text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,67 @@
|
||||
.height-24{
|
||||
height:24rpx;
|
||||
}
|
||||
|
||||
.orderDtail-log-item{
|
||||
padding-bottom: 40rpx;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.orderDtail-log-item:first-child{
|
||||
margin-top: 0;
|
||||
}
|
||||
.orderDtail-log-line{
|
||||
top: 8rpx;
|
||||
left:16rpx;
|
||||
width:2rpx;
|
||||
height:2rpx;
|
||||
}
|
||||
.orderDtail-log-line::before{
|
||||
content:'';
|
||||
position:absolute;
|
||||
left:0;
|
||||
bottom:8rpx;
|
||||
background-color: #1a1a1a;
|
||||
width:2rpx;
|
||||
height:1000rpx;
|
||||
}
|
||||
.orderDtail-log-line2{
|
||||
top:8rpx;
|
||||
bottom:-8rpx;
|
||||
left:16rpx;
|
||||
width:2rpx;
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
.orderDtail-log-dot{
|
||||
top: 8rpx;
|
||||
left:6rpx;
|
||||
width: 23rpx;
|
||||
height: 23rpx;
|
||||
border-radius: 100%;
|
||||
background-color: #fff;
|
||||
}
|
||||
.orderDtail-log-dot::before{
|
||||
width: 18rpx;
|
||||
height: 18rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
.orderDtail-log-dot::after{
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
.orderDtail-log-dot::before,.orderDtail-log-dot::after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.orderDtail-log .orderDtail-log-content{
|
||||
position:relative;
|
||||
top:-20rpx;
|
||||
}
|
||||
.icon-jiantou-up{
|
||||
left:6rpx;
|
||||
}
|
||||
@@ -0,0 +1,947 @@
|
||||
import _ from '../../commons/js/commons'
|
||||
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
|
||||
const app = getApp()
|
||||
|
||||
let barChartData;
|
||||
let lineChartData;
|
||||
function barChart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = barChartData
|
||||
chart.setOption(option);
|
||||
return chart;
|
||||
}
|
||||
function lineChart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = lineChartData
|
||||
chart.setOption(option);
|
||||
return chart;
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
imgUrl:_.config.imgUrl,
|
||||
shoplist:[],//管理门店
|
||||
showBarChart:false,//是否显示Bar图表
|
||||
ecBar:{},
|
||||
showLineChart:false,//是否显示Line图表
|
||||
ecLine:{},
|
||||
deallist:'',
|
||||
hoursTip:'',
|
||||
isShowProfile:true,//是否显示授权用户信息按钮
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
this.getUserInfo()
|
||||
this.getAppCity()
|
||||
|
||||
//消息通讯 是否显示授权用户信息按钮
|
||||
_.eventBus.on("isShowProfile", this, function(res){
|
||||
this.setData({
|
||||
isShowProfile:res,
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
onShow: function () {
|
||||
this.getHoursTip()
|
||||
this.getAppTransferRemind()
|
||||
},
|
||||
|
||||
//生命周期函数--监听页面卸载
|
||||
onUnload: function () {
|
||||
//卸载消息通讯 是否显示授权用户信息
|
||||
_.eventBus.remove('isShowProfile',this);
|
||||
},
|
||||
|
||||
//候取时间
|
||||
getHoursTip(){
|
||||
let hoursTip = '';
|
||||
let date=new Date();
|
||||
if(date.getHours()>=0&&date.getHours()<12){
|
||||
hoursTip="上午好!"
|
||||
}else if(date.getHours()>=12&&date.getHours()<18){
|
||||
hoursTip="下午好!"
|
||||
}else{
|
||||
hoursTip="晚上好!"
|
||||
}
|
||||
this.setData({
|
||||
hoursTip:hoursTip
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
//获取用户信息
|
||||
getUserInfo(){
|
||||
_.apiQuery.getUserInfo().then(res => {
|
||||
this.setData({
|
||||
userInfo: res
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//调拨提醒
|
||||
getAppTransferRemind(){
|
||||
_.apiQuery.getAppTransferRemind().then(res => {
|
||||
this.setData({
|
||||
allotNum: res.data.total,
|
||||
})
|
||||
if(res.data.total>0){
|
||||
this.setData({
|
||||
isShowReport:true,
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
isShowReport:false,
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//获取系统配置城市
|
||||
getAppCity(){
|
||||
_.apiQuery.getAppCity().then(res => {
|
||||
let cityArray = []
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArray.push(item.name)
|
||||
if(item.city_id==res.data.default){
|
||||
this.setData({
|
||||
cityIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
city_id:res.data.default,
|
||||
cityArray:cityArray,
|
||||
cityList:res.data.list,
|
||||
})
|
||||
|
||||
this.getAppUserBizs()
|
||||
// this.getAppStatisticsCust()
|
||||
// this.getAppStatisticsOrders()
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
//获取管理门店
|
||||
getAppUserBizs(){
|
||||
let params = {};
|
||||
params['city_id'] = this.data.city_id;
|
||||
_.apiQuery.getAppUserBizs(params).then(res => {
|
||||
this.setData({
|
||||
shoplist: res.data.list,
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
this.setData({
|
||||
city_id:this.data.cityList[e.detail.value].city_id,
|
||||
cityIndex: e.detail.value
|
||||
})
|
||||
this.getAppUserBizs()
|
||||
// this.getAppStatisticsCust()
|
||||
// this.getAppStatisticsOrders()
|
||||
},
|
||||
|
||||
//客户选择季度
|
||||
changeCust(e) {
|
||||
this.setData({
|
||||
custSeasonKey: e.detail.value
|
||||
})
|
||||
this.getAppStatisticsCust()
|
||||
},
|
||||
|
||||
//订单选择季度
|
||||
changeOrder(e) {
|
||||
this.setData({
|
||||
orderSeasonKey: e.detail.value
|
||||
})
|
||||
this.getAppStatisticsOrders()
|
||||
},
|
||||
|
||||
//获取渠道客户统计
|
||||
getAppStatisticsCust(){
|
||||
this.setData({
|
||||
showBarChart:false,
|
||||
})
|
||||
let params = {};
|
||||
params['city_id'] = this.data.city_id;
|
||||
if(this.data.custSeasonKey){
|
||||
params['season'] = this.data.custSeasonKey;
|
||||
}
|
||||
_.apiQuery.getAppStatisticsCust(params).then(res => {
|
||||
|
||||
//barChartData = getBarOption()
|
||||
barChartData = res.data.stat_data
|
||||
let custLine = Math.ceil(barChartData.series.length/3)
|
||||
// barChartData.series.forEach(item => {
|
||||
// item.barMaxWidth = 30
|
||||
// })
|
||||
|
||||
barChartData.tooltip.position=['10', '10']
|
||||
barChartData.grid.top = '5'
|
||||
barChartData.grid.bottom = 23*(custLine+1)
|
||||
|
||||
|
||||
this.setData({
|
||||
barheight:100 + 150*(custLine+1),
|
||||
custLine:custLine,
|
||||
custSeasonKey:this.data.custSeasonKey?this.data.custSeasonKey:res.data.season,
|
||||
custSeason:this.data.custSeason?this.data.custSeason:res.data.season_data,
|
||||
showBarChart:true,
|
||||
['ecBar.onInit']:barChart,
|
||||
})
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//获取渠道订单统计
|
||||
getAppStatisticsOrders(){
|
||||
this.setData({
|
||||
showLineChart:false,
|
||||
})
|
||||
let params = {};
|
||||
params['city_id'] = this.data.city_id;
|
||||
if(this.data.orderSeasonKey){
|
||||
params['season'] = this.data.orderSeasonKey;
|
||||
}
|
||||
_.apiQuery.getAppStatisticsOrders(params).then(res => {
|
||||
|
||||
//lineChartData = getLineOption()
|
||||
lineChartData = res.data.stat_data
|
||||
let orderLine = Math.ceil(lineChartData.series.length/3)
|
||||
lineChartData.grid.top = '5'
|
||||
lineChartData.grid.bottom = 23*(orderLine+1)
|
||||
lineChartData.tooltip.position=['10', '10']
|
||||
|
||||
this.setData({
|
||||
lineheight:100 + 150*(orderLine+1),
|
||||
orderLine:orderLine,
|
||||
orderSeasonKey:this.data.orderSeasonKey?this.data.orderSeasonKey:res.data.season,
|
||||
orderSeason:this.data.orderSeason?this.data.orderSeason:res.data.season_data,
|
||||
showLineChart:true,
|
||||
['ecLine.onInit']:lineChart,
|
||||
})
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//显示短信弹框
|
||||
optShowReport(e){
|
||||
this.setData({
|
||||
isShowReport:!this.data.isShowReport,
|
||||
})
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//客服电话
|
||||
call(e) {
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: '18965133055',
|
||||
})
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh: function () {
|
||||
this.getAppUserBizs()
|
||||
// this.getAppStatisticsCust()
|
||||
// this.getAppStatisticsOrders()
|
||||
this.getAppTransferRemind()
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
function getBarOption() {
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
},
|
||||
position: ['10', '10']
|
||||
},
|
||||
legend: {
|
||||
top: 'bottom',
|
||||
data: [
|
||||
'丰泽店1', '鲤城区2', '南安店3','丰泽店4', '鲤城区5', '南安店6','丰泽店7', '鲤城区8', '丰泽店9', '鲤城区10',
|
||||
'丰泽店11', '鲤城区12', '南安店13','丰泽店14', '鲤城区15', '南安店16','丰泽店17', '鲤城区18', '丰泽店19', '鲤城区20',
|
||||
'丰泽店21', '鲤城区22', '南安店23','丰泽店24', '鲤城区25', '南安店26','丰泽店27', '鲤城区28', '丰泽店29', '鲤城区30',
|
||||
'丰泽店31', '鲤城区32', '南安店33','丰泽店34', '鲤城区35', '南安店36','丰泽店37', '鲤城区38', '丰泽店39', '鲤城区40',
|
||||
'丰泽店41', '鲤城区42', '南安店43','丰泽店44', '鲤城区45', '南安店46','丰泽店47', '鲤城区48', '丰泽店49', '鲤城区50',
|
||||
]
|
||||
},
|
||||
grid: {
|
||||
top: '8%',
|
||||
left: '2%',
|
||||
right: '5%',
|
||||
bottom: '12%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
boundaryGap: [0, 0.01]
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['1月', ]
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '丰泽店1',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区2',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店3',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店4',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区5',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店6',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店7',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区8',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店9',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区10',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
|
||||
{
|
||||
name: '丰泽店11',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区12',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店13',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店14',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区15',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店16',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店17',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区18',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店19',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区20',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
|
||||
{
|
||||
name: '丰泽店21',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区22',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店23',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店24',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区25',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店26',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店27',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区28',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店29',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区30',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店31',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区32',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店33',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店34',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区35',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店36',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店37',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区38',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店39',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区40',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店41',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区42',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店43',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店44',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区45',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '南安店46',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店47',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区48',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
{
|
||||
name: '丰泽店49',
|
||||
type: 'bar',
|
||||
data: [18, ],
|
||||
},
|
||||
{
|
||||
name: '鲤城区50',
|
||||
type: 'bar',
|
||||
data: [19, ],
|
||||
},
|
||||
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
function getLineOption() {
|
||||
|
||||
return{
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
top: 'bottom',
|
||||
data: ['丰1', '鲤城区2', '南安店3','丰4', '鲤城区5', '南安店6','丰7', '鲤城区8', '南安店9','丰10', '鲤城区11', '南安店12','丰13', '鲤城区14', '南安店15','丰16', '鲤城区17', '南安店18','丰19', '鲤城区20', '南安店21','丰22', '鲤城区23', '南安店24',
|
||||
'丰25', '鲤城区26', '南安店27','丰28', '鲤城区29', '南安店30','丰31', '鲤城区32', '南安店33','丰34', '鲤城区35', '南安店36','丰37', '鲤城区38', '南安店39','丰40', '鲤城区41', '南安店42','丰43', '鲤城区44', '南安店45','丰46', '鲤城区47', '南安店48',
|
||||
]
|
||||
},
|
||||
grid: {
|
||||
top: '10%',
|
||||
left: '2%',
|
||||
right: '5%',
|
||||
bottom: '12%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1月', '2月', '3月',]
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '丰1',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区2',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店3',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰4',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区5',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店6',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰7',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区8',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店9',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰10',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区11',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店12',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
|
||||
{
|
||||
name: '丰13',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区14',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店15',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰16',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区17',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店18',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰19',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区20',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店21',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰22',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区23',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
|
||||
//---------------------------------------
|
||||
|
||||
{
|
||||
name: '南安店24',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
|
||||
{
|
||||
name: '丰25',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区26',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店27',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰28',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区29',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店30',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰31',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区32',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店33',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰34',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区35',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店36',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
|
||||
{
|
||||
name: '丰37',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区38',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店39',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰40',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区41',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店42',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰43',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区44',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店45',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '丰46',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [120, 132, 101,],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '鲤城区47',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [220, 182, 191, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '南安店48',
|
||||
type: 'line',
|
||||
stack: '总量',
|
||||
data: [820, 932, 901, ],
|
||||
smooth: true,
|
||||
},
|
||||
|
||||
]
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"enablePullDownRefresh": true,
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarBackgroundColor": "#1a1c26",
|
||||
"backgroundColor": "#ffffff",
|
||||
"backgroundColorTop": "#1a1c26",
|
||||
"usingComponents": {
|
||||
"ec-canvas": "../../ecCanvas/components/ec-canvas/ec-canvas"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<view class="container">
|
||||
<view class="inner30 img-top-cover" style="background-image:url({{imgUrl}}channel/theme.jpg);">
|
||||
<view class="relative" style="height:200rpx;">
|
||||
<view class="relative pt30 pb30 pl110 pr10">
|
||||
<image class='absolute left-0 box-middle mr10 img-90x90 ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
|
||||
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt20 mr150 z-index-4">
|
||||
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
|
||||
</view>
|
||||
<view>
|
||||
<view class="font-22 color-fff">Hi~ {{hoursTip}}欢迎回到狸车宝!</view>
|
||||
<view>
|
||||
<text class="text-middle text-bold font-48 color-fff">{{userInfo.uname}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="absolute allot-tip pt8 pb8 pl15 pr10 bg-f9394d font-22 color-fff ulib-rt10" bindtap="pushLink" data-url="/pages/allot/list/index?city_id={{city_id}}">车辆调拨记录<i class="iconfont icon-gengduo"></i></view>
|
||||
</view>
|
||||
<!-- 车辆调拨 -->
|
||||
<view class="mb40 bg-ffedeb ulib-rt10" style="height:140rpx;" bindtap="pushLink" data-url="/pages/allot/list/index?channel=1" wx:if="{{allotNum>0}}">
|
||||
<view class="pt30 pl30 pr30">
|
||||
<view class="relative pl110 pr110">
|
||||
<image class='block absolute left-0 box-middle img-90x90 ulib-r750 z-index-1' mode="aspectFill" src='{{imgUrl}}index/diaobo-icon.png' lazy-load="{{true}}"></image>
|
||||
<view class="color-f9394d">
|
||||
<view class="font-32">车辆调拨</view>
|
||||
<view class="mt10 font-20">您有新的车辆调拨,需要您进行确认操作</view>
|
||||
</view>
|
||||
<view class="absolute right-0 box-middle">
|
||||
<text class="inline-block text-middle pt5 pb5 pl10 pr10 bg-f9394d font-22 color-fff ulib-r10">{{allotNum}}</text>
|
||||
<text class="ml5 text-middle iconfont icon-gengduo font-32 color-f9394d"></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 管辖门店 -->
|
||||
<view class="mb40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<!-- <view class="font-36">水平业务相关</view>
|
||||
<view class="relative mt20 mb30 pt25 pb25 pl110 bg-fe606c-ff9026 color-fff ulib-r10" bindtap="pushLink" data-url="/pages/order/filterList/index2?title=水平业务资料未提交">
|
||||
<i class="absolute left-0 box-middle ml35 iconfont icon-tijiao font-60"></i>
|
||||
<view class="text-left">
|
||||
<view class="font-40">10</view>
|
||||
<view class="font-22">水平业务资料未提交</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="relative z-index-1">
|
||||
<view class="font-36">管辖门店</view>
|
||||
<picker class="absolute right-0 box-middle" bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
|
||||
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
|
||||
<text>{{cityArray[cityIndex]}}</text>
|
||||
<i class="iconfont ml20 icon-xiala color-999"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view>
|
||||
<block wx:for="{{shoplist}}" wx:key='index'>
|
||||
<view class="mt20 inner30 bg-2e3246-8058fe ulib-r10" bindtap="pushLink" data-url="/pages/index/index?biz_id={{item.id}}">
|
||||
<view class="relative pr40 font-32 color-fff">{{item.name}}<i class="absolute right-0 box-middle iconfont icon-gengduo text-middle font-26"></i></view>
|
||||
<view class="font-22">
|
||||
<block wx:for="{{item.auto_brands}}" wx:for-item="auto_brands" wx:key='index'>
|
||||
<text class="inline-block mt10 mr10 pl20 pr20 bg-fff ulib-r750" style="background-color:{{auto_brands.bg_color}};">{{auto_brands.name}}</text>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 数据分析·客户 -->
|
||||
<!-- <view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative z-index-1">
|
||||
<view class="font-36">数据分析·客户</view>
|
||||
<picker class="absolute right-0 box-middle" bindchange="changeCust" value="{{custSeasonKey}}" range="{{custSeason}}">
|
||||
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
|
||||
<text>{{custSeason[custSeasonKey]}}</text>
|
||||
<i class="iconfont ml20 icon-xiala color-999"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt50 relative z-index-0" style="height:{{barheight}}rpx;">
|
||||
<view class="absolute wp100" style="height:{{barheight}}rpx;" wx:if="{{showBarChart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<!-- 数据分析·订单 -->
|
||||
<!-- <view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative z-index-1">
|
||||
<view class="font-36">数据分析·订单</view>
|
||||
<picker class="absolute right-0 box-middle" bindchange="changeOrder" value="{{orderSeasonKey}}" range="{{orderSeason}}">
|
||||
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
|
||||
<text>{{orderSeason[orderSeasonKey]}}</text>
|
||||
<i class="iconfont ml20 icon-xiala color-999"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt50 relative z-index-0" style="height:{{lineheight}}rpx;">
|
||||
<view class="absolute wp100 " style="height:{{lineheight}}rpx;" wx:if="{{showLineChart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- <lcb-footer></lcb-footer> -->
|
||||
<lcb-channelTabBarNav currentIndex='0'></lcb-channelTabBarNav>
|
||||
|
||||
<!-- 调拨提醒 -->
|
||||
<lcb-msg isShow="{{isShowReport}}">
|
||||
<view slot="content">
|
||||
<view class="pt40 pl40 pr40">
|
||||
<view class="font-36 text-center">调拨提醒</view>
|
||||
<view class="mt10 font-22 text-center color-999">您有新的车辆调拨,需要您进行确认操作。</view>
|
||||
</view>
|
||||
<view class="mt20 pl40 pr40 pb40">
|
||||
<image class='wp100 ulib-r10' src='{{imgUrl}}allot/car.gif' mode='widthFix'></image>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button bindtap="pushLink" data-url="/pages/allot/list/index" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">前往操作</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
@@ -0,0 +1,3 @@
|
||||
.bg-2e3246-8058fe{background-image:linear-gradient(45deg, #2e3246, #1a1c26);}
|
||||
.allot-tip{right:30rpx;bottom:0;}
|
||||
.bg-fe606c-ff9026{background-image:linear-gradient(45deg, #fe606c, #ff9026); text-align: center;}
|
||||
+429
-103
@@ -4,31 +4,42 @@ Page({
|
||||
data: {
|
||||
name:'',//名字
|
||||
mobile:'',//手机号
|
||||
brand_id:'',//品牌
|
||||
car_id:'',//车系id
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//颜色id
|
||||
b_s_id:'',//备选车型id
|
||||
// brand_id:'',//品牌
|
||||
// car_id:'',//车系id
|
||||
// v_id:'',//车辆版本id
|
||||
// color_id:'',//颜色id
|
||||
// b_s_id:'',//备选车型id
|
||||
buy_time:'',//预计购车时间
|
||||
brandIndex:-1,//车辆品牌索引
|
||||
modelIndex:-1,//车型车系索引
|
||||
spareIndex:-1,//备选车型索引
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
// brandIndex:-1,//车辆品牌索引
|
||||
// modelIndex:-1,//车系车型索引
|
||||
// spareIndex:-1,//备选车型索引
|
||||
// colorArray:[],//车身颜色列表
|
||||
// levelArray:[],//车辆版本列表
|
||||
// colorIndex:-1,//车身颜色索引
|
||||
// levelIndex:-1,//车辆版本索引
|
||||
timeArray:[],//预计购车时间列表
|
||||
timeIndex:-1,//预计购车时间索引
|
||||
cf_clues:'',//线索来源
|
||||
cluesArray:[
|
||||
'自然进店',
|
||||
'外展',
|
||||
'DM',
|
||||
'转介绍',
|
||||
'其他',
|
||||
],//线索来源
|
||||
cluesIndex:-1,//索来源索引
|
||||
submitFlag:false,
|
||||
|
||||
status:0,//状态
|
||||
statuslist:[
|
||||
'未见客户',
|
||||
'到店客户',
|
||||
],
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
|
||||
cityIndex:-1,
|
||||
city_id:'',
|
||||
countyIndex:-1,
|
||||
county_id:'',
|
||||
|
||||
isShowExist:false, //客户是否已存在
|
||||
wxgr:0,//是否添加个微
|
||||
wxgrimg:'',//个微
|
||||
wxgrimg_url:'',//个微
|
||||
},
|
||||
//生命周期函数--监听页面加载
|
||||
onLoad: function (options) {
|
||||
@@ -37,8 +48,21 @@ Page({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
this.getAppSeriesBrands()
|
||||
//获取车型品牌
|
||||
// this.getAppSeriesBrands()
|
||||
//获取列表筛选条件-时间
|
||||
this.getAppCustomersFilter()
|
||||
//客户来源
|
||||
this.getAppCustomersOffline_sources()
|
||||
//客户标签
|
||||
this.getAppCustomersTag()
|
||||
|
||||
if(this.data.status == 1){
|
||||
this.setData({
|
||||
buy_time:3,
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//获取车型品牌
|
||||
@@ -57,7 +81,7 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取车型车系
|
||||
//获取车系车型
|
||||
getAppSeries(){
|
||||
let params = {};
|
||||
params['brand_id'] = this.data.brand_id;
|
||||
@@ -75,29 +99,12 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取车型属性 /颜色 /车型级别
|
||||
getAppSeriesAttrs(){
|
||||
let params1 = {};
|
||||
params1['id'] = this.data.car_id;
|
||||
params1['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params1).then(res => {
|
||||
if(res.data.total>0){
|
||||
let colorArray = []
|
||||
res.data.list.forEach(item => {
|
||||
colorArray.push(item.title)
|
||||
})
|
||||
this.setData({
|
||||
colorArray:colorArray,
|
||||
colorList:res.data.list,
|
||||
colorIndex:-1,
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
let params2 = {};
|
||||
params2['id'] = this.data.car_id;
|
||||
params2['type'] = 1;
|
||||
_.apiQuery.getAppSeriesAttrs(params2).then(res => {
|
||||
//获取车辆版本
|
||||
getAppSeriesAttrslevel(){
|
||||
let params = {};
|
||||
params['id'] = this.data.car_id;
|
||||
params['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let levelArray = []
|
||||
res.data.list.forEach(item => {
|
||||
@@ -112,12 +119,33 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取车身颜色
|
||||
getAppSeriesAttrscolor(){
|
||||
let params = {};
|
||||
params['id'] = this.data.car_id;
|
||||
params['type'] = 1;
|
||||
params['v_id'] = this.data.v_id;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let colorArray = []
|
||||
res.data.list.forEach(item => {
|
||||
colorArray.push(item.title)
|
||||
})
|
||||
this.setData({
|
||||
colorArray:colorArray,
|
||||
colorList:res.data.list,
|
||||
colorIndex:-1,
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//获取列表筛选条件-时间
|
||||
getAppCustomersFilter(){
|
||||
_.apiQuery.getAppCustomersFilter().then(res => {
|
||||
let timeArray = []
|
||||
res.data.buy_time.forEach(item => {
|
||||
timeArray.push(item + '天')
|
||||
timeArray.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
timeArray:timeArray,
|
||||
@@ -135,6 +163,22 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
//选择状态
|
||||
changeStatus(e) {
|
||||
if(this.data.status != e.detail.value){
|
||||
this.setData({
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
of2Arr:[],
|
||||
status:e.detail.value,
|
||||
buy_time:e.detail.value==1?'3':'',
|
||||
})
|
||||
this.getAppCustomersOffline_sources()
|
||||
}
|
||||
},
|
||||
|
||||
//选择品牌
|
||||
changeBrand(e) {
|
||||
if(this.data.brandIndex != e.detail.value && e.detail.value >= 0){
|
||||
@@ -142,19 +186,18 @@ Page({
|
||||
brand_id:this.data.brandList[e.detail.value].id,
|
||||
brandIndex:e.detail.value,
|
||||
car_id:'',//车系id
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//车型颜色id
|
||||
v_id:'',//车辆版本id
|
||||
color_id:'',//车身颜色id
|
||||
incolor_id:'',//内饰颜色id
|
||||
b_s_id:'',//备选车型id
|
||||
modelIndex:-1,//车型车系索引
|
||||
modelIndex:-1,//车系车型索引
|
||||
spareIndex:-1,//备选车型索引
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
colorArray:[],//车身颜色列表
|
||||
levelArray:[],//车辆版本列表
|
||||
interiorArray:[],//内饰颜色
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
colorIndex:-1,//车身颜色索引
|
||||
levelIndex:-1,//车辆版本索引
|
||||
interiorIndex:-1,//内饰颜色索引
|
||||
priceinfo:'',
|
||||
})
|
||||
this.getAppSeries()
|
||||
}
|
||||
@@ -166,34 +209,37 @@ Page({
|
||||
this.setData({
|
||||
car_id:this.data.modelList[e.detail.value].id,
|
||||
modelIndex:e.detail.value,
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//车型颜色id
|
||||
v_id:'',//车辆版本id
|
||||
color_id:'',//车身颜色id
|
||||
incolor_id:'',//内饰颜色id
|
||||
b_s_id:'',//备选车型id
|
||||
spareIndex:-1,//备选车型索引
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
colorArray:[],//车身颜色列表
|
||||
levelArray:[],//车辆版本列表
|
||||
interiorArray:[],//内饰颜色
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
colorIndex:-1,//车身颜色索引
|
||||
levelIndex:-1,//车辆版本索引
|
||||
interiorIndex:-1,//内饰颜色索引
|
||||
priceinfo:'',
|
||||
})
|
||||
this.getAppSeriesAttrs()
|
||||
this.getAppSeriesAttrslevel()
|
||||
}
|
||||
},
|
||||
|
||||
//车型级别
|
||||
//车辆版本
|
||||
changeLevel(e) {
|
||||
if(this.data.levelIndex != e.detail.value && e.detail.value >= 0){
|
||||
this.setData({
|
||||
v_id:this.data.levelList[e.detail.value].id,
|
||||
levelIndex:e.detail.value,
|
||||
color_id:'',//车身颜色id
|
||||
colorArray:[],//车身颜色列表
|
||||
colorIndex:-1,//车身颜色索引
|
||||
})
|
||||
this.getAppSeriesAttrscolor()
|
||||
}
|
||||
},
|
||||
|
||||
//车型颜色
|
||||
//车身颜色
|
||||
changeColor(e) {
|
||||
if(this.data.colorIndex != e.detail.value && e.detail.value >= 0){
|
||||
this.setData({
|
||||
@@ -213,18 +259,10 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//线索来源
|
||||
changeClues(e) {
|
||||
this.setData({
|
||||
cf_clues:this.data.cluesArray[e.detail.value],
|
||||
cluesIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//预计购车时间
|
||||
changeTime(e) {
|
||||
this.setData({
|
||||
buy_time:this.data.timeList[e.detail.value],
|
||||
buy_time:this.data.timeList[e.detail.value].id,
|
||||
timeIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
@@ -242,40 +280,87 @@ Page({
|
||||
title: '请输入正确的手机号码',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.car_id == '' ){
|
||||
}
|
||||
else if (that.data.sources.length>0&&that.data.of_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型车系',
|
||||
title: '请选择客户来源',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.v_id == '' ){
|
||||
}
|
||||
else if (that.data.sources.length>0&&that.data.sources[that.data.of1Index].list.length>0&&that.data.of2_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型级别',
|
||||
title: '请选择'+that.data.sources[that.data.of1Index].name+'类型',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.color_id == '' ){
|
||||
}
|
||||
else if (that.data.city_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型颜色',
|
||||
title: '请选择所在城市',
|
||||
icon: 'none'
|
||||
})
|
||||
} else{
|
||||
}
|
||||
else if (that.data.county_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择所在地区',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.buy_time == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择预计购车时间',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if(this.data.wxgr==1&&this.data.wxgrimg==''){
|
||||
wx.showToast({
|
||||
title: '请上传个微截图',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
// else if(that.data.car_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车系车型',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }else if(that.data.v_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车辆版本',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }else if(that.data.color_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车身颜色',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
let params = {};
|
||||
params['status'] = that.data.status;
|
||||
params['name'] = that.data.name;
|
||||
params['mobile'] = that.data.mobile;
|
||||
params['car_id'] = that.data.car_id;
|
||||
params['v_id'] = that.data.v_id;
|
||||
params['color_id'] = that.data.color_id;
|
||||
if(this.data.b_s_id != ''){
|
||||
params['b_s_id'] = this.data.b_s_id;
|
||||
// params['car_id'] = that.data.car_id;
|
||||
// params['v_id'] = that.data.v_id;
|
||||
// params['color_id'] = that.data.color_id;
|
||||
params['tag'] = that.data.taglList;
|
||||
// if(this.data.b_s_id != ''){
|
||||
// params['b_s_id'] = this.data.b_s_id;
|
||||
// }
|
||||
if(this.data.of_id != ''){
|
||||
params['of_id'] = this.data.of_id;
|
||||
}
|
||||
if(this.data.cf_clues != ''){
|
||||
params['cf_clues'] = this.data.cf_clues;
|
||||
if(this.data.of2_id != ''){
|
||||
params['of2_id'] = this.data.of2_id;
|
||||
}
|
||||
if(this.data.buy_time != ''){
|
||||
params['buy_time'] = this.data.buy_time;
|
||||
params['wxgr'] = this.data.wxgr;
|
||||
if(this.data.wxgr==1){
|
||||
params['wxgrimg'] = this.data.wxgrimg;
|
||||
}
|
||||
params['city_id'] = this.data.city_id;
|
||||
params['county_id'] = this.data.county_id;
|
||||
params['buy_time'] = this.data.buy_time;
|
||||
_.apiQuery.postAppCustomers(params).then(res => {
|
||||
|
||||
//刷新列表页
|
||||
@@ -298,21 +383,32 @@ Page({
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
that.setData({
|
||||
name:'',
|
||||
mobile:'',
|
||||
car_id:'',
|
||||
v_id:'',
|
||||
color_id:'',
|
||||
b_s_id:'',
|
||||
cf_clues:'',
|
||||
buy_time:'',
|
||||
modelIndex:-1,
|
||||
spareIndex:-1,
|
||||
colorIndex:-1,
|
||||
levelIndex:-1,
|
||||
timeIndex:-1,
|
||||
name:'',//名字
|
||||
mobile:'',//手机号
|
||||
// brand_id:'',//品牌
|
||||
// car_id:'',//车系id
|
||||
// v_id:'',//车辆版本id
|
||||
// color_id:'',//颜色id
|
||||
// b_s_id:'',//备选车型id
|
||||
buy_time:'',//预计购车时间
|
||||
// brandIndex:-1,//车辆品牌索引
|
||||
// modelIndex:-1,//车系车型索引
|
||||
// spareIndex:-1,//备选车型索引
|
||||
// colorArray:[],//车身颜色列表
|
||||
// levelArray:[],//车辆版本列表
|
||||
// colorIndex:-1,//车身颜色索引
|
||||
// levelIndex:-1,//车辆版本索引
|
||||
timeIndex:-1,//预计购车时间索引
|
||||
submitFlag:false,
|
||||
|
||||
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of2Arr:[],
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
})
|
||||
that.getAppCustomersTag()
|
||||
} else if (res.cancel) {
|
||||
wx.navigateBack({
|
||||
delta: 1
|
||||
@@ -325,8 +421,238 @@ Page({
|
||||
this.setData({
|
||||
submitFlag: false,
|
||||
})
|
||||
if(res.data.id){
|
||||
wx.hideToast();
|
||||
this.setData({
|
||||
isShowExist: true,
|
||||
exist: res,
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
//客户来源
|
||||
getAppCustomersOffline_sources(){
|
||||
let params = {};
|
||||
params['status'] = this.data.status;
|
||||
_.apiQuery.getAppCustomersOffline_sources(params).then(res => {
|
||||
let of1Arr = []
|
||||
res.data.sources.forEach(item => {
|
||||
of1Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of1Arr,
|
||||
sources:res.data.sources
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//客户来源
|
||||
changeOf1(e) {
|
||||
if(this.data.of1Index!=e.detail.value){
|
||||
let of2Arr = []
|
||||
this.data.sources[e.detail.value].list.forEach(item => {
|
||||
of2Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of2Arr,
|
||||
of2Index:-1,
|
||||
of_id:this.data.sources[e.detail.value].id,
|
||||
of1Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
changeOf2(e) {
|
||||
if(this.data.of2Index!=e.detail.value){
|
||||
this.setData({
|
||||
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
|
||||
of2Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//客户标签
|
||||
getAppCustomersTag(){
|
||||
_.apiQuery.getAppCustomersTag().then(res => {
|
||||
this.setData({
|
||||
city_id:res.data.city_id,
|
||||
county_id:res.data.county_id,
|
||||
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
|
||||
})
|
||||
//获取城市
|
||||
this.getAppCityArea_city()
|
||||
//获取地区
|
||||
this.getAppCityArea_county()
|
||||
});
|
||||
},
|
||||
|
||||
//单选
|
||||
radioPicker(e){
|
||||
let taglList = this.data.taglList
|
||||
taglList[e.currentTarget.dataset.i].list.forEach(item => {
|
||||
item.checked=false
|
||||
})
|
||||
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
|
||||
this.setData({
|
||||
taglList,
|
||||
})
|
||||
},
|
||||
|
||||
//多选
|
||||
checkPicker(e){
|
||||
this.setData({
|
||||
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
//获取城市
|
||||
getAppCityArea_city(){
|
||||
let params = {};
|
||||
params['type'] = 'city';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let cityArr = []
|
||||
let cityIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArr.push(item.name)
|
||||
if(this.data.city_id == item.id){
|
||||
cityIndex = index
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
cityIndex,
|
||||
cityArr,
|
||||
city:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//获取行政区
|
||||
getAppCityArea_county(){
|
||||
let params = {};
|
||||
params['pid'] = this.data.city_id;
|
||||
params['type'] = 'county';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let countyArr = []
|
||||
let countyIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
countyArr.push(item.name)
|
||||
if(this.data.county_id == item.id){
|
||||
countyIndex = index
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
countyIndex,
|
||||
countyArr,
|
||||
county:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
if(this.data.cityIndex!=e.detail.value){
|
||||
this.setData({
|
||||
cityIndex:e.detail.value,
|
||||
city_id:this.data.city[e.detail.value].id,
|
||||
})
|
||||
this.getAppCityArea_county()
|
||||
}
|
||||
},
|
||||
|
||||
//选择地区
|
||||
changeCounty(e) {
|
||||
if(this.data.countyIndex!=e.detail.value){
|
||||
this.setData({
|
||||
countyIndex:e.detail.value,
|
||||
county_id:this.data.county[e.detail.value].id,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//查看存在客户信息
|
||||
viewDetails(e){
|
||||
wx.redirectTo({
|
||||
url: '/pages/customer/detail/index?id=' + this.data.exist.data.id
|
||||
})
|
||||
},
|
||||
|
||||
//关闭客户已存在提示
|
||||
colseExist(){
|
||||
this.setData({
|
||||
isShowExist: false,
|
||||
})
|
||||
},
|
||||
|
||||
//是否添加个微
|
||||
switchWxgr:function(e){
|
||||
this.setData({
|
||||
wxgr:e.detail.value ? 1 :0
|
||||
})
|
||||
},
|
||||
|
||||
//选择图片
|
||||
chooseImg(e) {
|
||||
let that = this
|
||||
|
||||
//上传个微截图
|
||||
if(e.currentTarget.dataset.type=='gw_img'){
|
||||
wx.chooseImage({
|
||||
count: 1, // 默认9
|
||||
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
||||
success(res) {
|
||||
wx.showLoading({
|
||||
title: '上传中',
|
||||
})
|
||||
wx.uploadFile({
|
||||
url:_.config.api.upImg,
|
||||
filePath:res.tempFilePaths[0],
|
||||
name: 'img',
|
||||
formData: {
|
||||
'app': 'liche'
|
||||
},
|
||||
success: (resp) => {
|
||||
resp.data = JSON.parse(resp.data);
|
||||
if (resp.data.code == 200) {
|
||||
wx.hideLoading();
|
||||
that.setData({
|
||||
wxgrimg:resp.data.data.url,
|
||||
wxgrimg_url:resp.data.data.full_url,
|
||||
})
|
||||
}else{
|
||||
wx.hideLoading();
|
||||
wx.showToast({
|
||||
title: '上传失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
fail: res => {
|
||||
wx.showToast({
|
||||
title: '文件选择失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//查看图片
|
||||
previewImage(e){
|
||||
if(e.currentTarget.dataset.type=='gw_img'){
|
||||
wx.previewImage({
|
||||
current:this.data.wxgrimg_url,
|
||||
urls:[this.data.wxgrimg_url],
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
})
|
||||
@@ -1,6 +1,15 @@
|
||||
<view class="container">
|
||||
<view class="inner30">
|
||||
<view class="pl40 pr40 pt10 pb10 relative ulib-r10 box-shadow-000-10-10 overflowhidden">
|
||||
<view class="pl40 pr40 pt10 pb50 relative ulib-r10 box-shadow-000-10-10 overflowhidden">
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">客户状态</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeStatus" value="{{status}}" range="{{statuslist}}">
|
||||
<text>{{statuslist[status]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户姓名</view>
|
||||
<view>
|
||||
@@ -13,7 +22,7 @@
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
|
||||
@@ -24,8 +33,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
|
||||
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{modelArray[modelIndex]}}</text>
|
||||
@@ -34,8 +43,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆版本</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{levelArray}}">
|
||||
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{levelArray[levelIndex]}}</text>
|
||||
@@ -43,16 +52,16 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型颜色</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{levelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车身颜色</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeColor" value="{{colorIndex}}" range="{{colorArray}}">
|
||||
<text class="color-ccc" wx:if="{{colorIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{colorArray[colorIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">备选车型</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
@@ -63,20 +72,49 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view> -->
|
||||
<block wx:if="{{sources.length>0}}">
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户来源</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of1Arr[of1Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
|
||||
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of2Arr[of2Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">线索来源</view>
|
||||
<!-- <view>
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入线索来源" bindinput='inputTx' data-key="cf_clues" name='cf_clues' value='{{cf_clues}}' />
|
||||
</view> -->
|
||||
<view class="absolute left-0 box-middle">所在城市</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeClues" value="{{cluesIndex}}" range="{{cluesArray}}">
|
||||
<text class="color-ccc" wx:if="{{cluesIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{cluesArray[cluesIndex]}}</text>
|
||||
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
|
||||
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{cityArr[cityIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
|
||||
<view class="absolute left-0 box-middle">所在地区</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
|
||||
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{countyArr[countyIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl190" wx:if="{{status==0}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeTime" value="{{timeIndex}}" range="{{timeArray}}">
|
||||
@@ -86,12 +124,78 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl180 font-28">
|
||||
<view class="absolute left-0 box-middle">是否添加个微</view>
|
||||
<view class="relative pt30 pb30 text-right">
|
||||
<switch checked="{{wxgr==1}}" bindchange="switchWxgr" type="switch" color='#36afa2' style="zoom:0.8" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mt30 text-center" wx:if="{{wxgr==1}}">
|
||||
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
|
||||
<block wx:if="{{wxgrimg_url}}">
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
|
||||
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-42"></i>
|
||||
<view class="mt10 font-22">上传个微截图</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt30">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="radioPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="checkPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="mt60 pl60 pr60">
|
||||
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="postAppCustomers">确认建卡</button>
|
||||
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="postAppCustomers">
|
||||
确认建卡
|
||||
</button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
<!-- 客户已存在 -->
|
||||
<lcb-msg isShow="{{isShowExist}}" isHasClose="{{true}}">
|
||||
<view slot="content">
|
||||
<view class="pt60 pl60 pr60 pb50">
|
||||
<view class="font-36 text-center">{{exist.msg}}</view>
|
||||
</view>
|
||||
<view class="pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="viewDetails" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" wx:if="{{exist.data.owner==1}}">
|
||||
前往查看
|
||||
</button>
|
||||
<button bindtap="colseExist" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" wx:else>
|
||||
知道了
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
@@ -14,6 +14,17 @@ Page({
|
||||
employeeArray:[],//店员选择列表
|
||||
employeeList:[],//店员信息列表
|
||||
employeeIndex:-1,//选择店员索引
|
||||
|
||||
isShowTimePicker:false,
|
||||
weekList:['日','一','二','三','四','五','六'],
|
||||
dateList:[],
|
||||
nextIndex:-1,//计划回访时间
|
||||
|
||||
distTabId:1,
|
||||
distBizIndex:-1,
|
||||
distBiz_id:'',
|
||||
bizArray: [],
|
||||
bizobj: [],
|
||||
},
|
||||
onLoad(options) {
|
||||
for (let key in options) {
|
||||
@@ -23,6 +34,8 @@ Page({
|
||||
}
|
||||
this.getAppCustomersList()
|
||||
this.getAppEmployees()
|
||||
|
||||
this.getTimePicker()
|
||||
},
|
||||
|
||||
onShow(){
|
||||
@@ -101,10 +114,17 @@ Page({
|
||||
res.data.list.forEach(item => {
|
||||
employeeArray.push(item.uname)
|
||||
})
|
||||
let bizArray = []
|
||||
res.data.bizs.forEach(item => {
|
||||
bizArray.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
employeeArray:employeeArray,
|
||||
employeeList:res.data.list,
|
||||
employeeIndex:-1,
|
||||
distributetabs:res.data.tabs,
|
||||
bizArray:bizArray,
|
||||
bizobj: res.data.bizs,
|
||||
})
|
||||
}
|
||||
wx.stopPullDownRefresh()
|
||||
@@ -127,6 +147,12 @@ Page({
|
||||
optEmployees(){
|
||||
this.setData({
|
||||
isShowEmployees:!this.data.isShowEmployees,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
nextIndex:-1,
|
||||
distTabId:1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
},
|
||||
|
||||
@@ -140,28 +166,48 @@ Page({
|
||||
//分配客户
|
||||
putAppCustomersAdmins(){
|
||||
let that = this
|
||||
if (that.data.employeeIndex == -1 ) {
|
||||
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择店员',
|
||||
icon: 'none'
|
||||
})
|
||||
}else{
|
||||
}
|
||||
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择计划回访时间',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择门店',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
let params = {};
|
||||
params['ids'] = that.data.ids;
|
||||
params['admin_id'] = that.data.admin_id;
|
||||
if(that.data.distTabId==1){
|
||||
params['admin_id'] = that.data.admin_id;
|
||||
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
|
||||
}
|
||||
if(that.data.distTabId==2){
|
||||
params['biz_id'] = that.data.distBiz_id;
|
||||
}
|
||||
_.apiQuery.putAppCustomersAdmins(params).then(res => {
|
||||
|
||||
wx.showToast({
|
||||
title: '分配成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
duration: 2000,
|
||||
})
|
||||
that.setData({
|
||||
isShowEmployees:false,
|
||||
submitFlag:false,
|
||||
nextIndex:-1,
|
||||
})
|
||||
that.onPullDownRefresh()
|
||||
|
||||
@@ -173,6 +219,149 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//候取当前月日历
|
||||
getTimePicker(){
|
||||
let date = new Date();
|
||||
let cYear = date.getFullYear(); //年份
|
||||
let cMonth = date.getMonth()+1; //当前月份
|
||||
let cDay = date.getDate();//当前日期
|
||||
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
|
||||
let days = new Date(cYear,cMonth,-1)
|
||||
let cn = days.getDate()+1 //当月天数
|
||||
let rn = ''//上个月天数
|
||||
if (cMonth === 1) {
|
||||
rn = 31
|
||||
} else {
|
||||
rn = new Date(cYear,cMonth-1,-1).getDate()+1
|
||||
}
|
||||
|
||||
let dateList = []
|
||||
for(let i=0;i<fweek;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 1?cYear-1:cYear,
|
||||
month:cMonth == 1?12:cMonth-1,
|
||||
day:rn-i,
|
||||
})
|
||||
}
|
||||
for(let i=1;i<=cn;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cYear,
|
||||
month:cMonth,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
|
||||
if((cn-cDay)>29){//相差15天以上不用特意补下个月
|
||||
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
|
||||
let sbu = 6 - lweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}else{
|
||||
let zbu = 30 - (cn-cDay) //至少要补多少天
|
||||
let bweek = ''//至少要补的最后一天星期几
|
||||
if(cMonth==12){
|
||||
bweek = new Date(cYear+1,1,zbu).getDay()
|
||||
}else{
|
||||
bweek = new Date(cYear,cMonth,zbu).getDay()
|
||||
}
|
||||
let sbu = zbu + 6 - bweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.setData({
|
||||
cYear,
|
||||
cMonth,
|
||||
cDay,
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//显示隐藏时间选择器
|
||||
optShowTimePicker(){
|
||||
this.setData({
|
||||
isShowTimePicker:!this.data.isShowTimePicker,
|
||||
})
|
||||
|
||||
let kd = 15 //可操作天数
|
||||
// if(this.data.level[this.data.levelIndex]=='H'){
|
||||
// kd = 3
|
||||
// }else if(this.data.level[this.data.levelIndex]=='A'){
|
||||
// kd = 7
|
||||
// }else if(this.data.level[this.data.levelIndex]=='B'){
|
||||
// kd = 15
|
||||
// }
|
||||
let cindex = ''
|
||||
let dateList = this.data.dateList
|
||||
dateList.forEach((item,index) => {
|
||||
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
|
||||
cindex = index
|
||||
}
|
||||
})
|
||||
dateList.forEach((item,index) => {
|
||||
item.isopt = false
|
||||
if(cindex<=index&&index<cindex+kd+1){
|
||||
item.isopt = true
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//选择计划回访时间
|
||||
optday(e){
|
||||
if(this.data.nextIndex != e.currentTarget.dataset.index){
|
||||
this.setData({
|
||||
nextIndex:e.currentTarget.dataset.index,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//切换分配本地,其他门店
|
||||
changeDistTab(e){
|
||||
this.setData({
|
||||
distTabId:e.currentTarget.dataset.id,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
nextIndex:-1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
},
|
||||
|
||||
//分配选择门店
|
||||
changeDistBiz(e) {
|
||||
let distBiz_id = ''
|
||||
if(e.detail.value >= 0){
|
||||
distBiz_id = this.data.bizobj[e.detail.value].id
|
||||
}
|
||||
this.setData({
|
||||
distBiz_id,
|
||||
distBizIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
|
||||
@@ -6,10 +6,21 @@
|
||||
<block wx:for='{{list}}' wx:key='index' wx:key="index">
|
||||
<label class="block inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
|
||||
<view class="relative pr180">
|
||||
<view class="font-32">{{item.name}}</view>
|
||||
<view class="mt10 font-22 color-666">{{item.mobile}}</view>
|
||||
<view class="font-32">
|
||||
<text class="text-middle text-bold">{{item.name}}</text>
|
||||
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
|
||||
</view>
|
||||
<checkbox class="absolute right-0 box-middle font-30" value="{{item.id}}" checked="{{item.checked}}"/>
|
||||
</view>
|
||||
<checkbox class="absolute right-0 box-middle mr30 font-30" value="{{item.id}}" checked="{{item.checked}}"/>
|
||||
<view class="text-nowrap" wx:if="{{item.reassign}}">
|
||||
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750">{{item.reassign}}</text>
|
||||
</view>
|
||||
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28" wx:if="{{value}}">
|
||||
<view class="fn-fl color-333">{{key}}</view>
|
||||
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</label>
|
||||
</block>
|
||||
</checkbox-group>
|
||||
@@ -25,20 +36,81 @@
|
||||
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
|
||||
<lcb-msg isShow="{{isShowEmployees}}">
|
||||
<view slot="content">
|
||||
<view class="inner40">
|
||||
<view class="pb30 text-center font-36">销售选择</view>
|
||||
<picker class="relative bg-f6 pt20 pb20 pl30 pr30 font-32 ulib-r10" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{employeeArray}}">
|
||||
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{employeeArray[employeeIndex]}}</text>
|
||||
<i class="absolute right-0 box-middle iconfont mr30 color-999 icon-xiala"></i>
|
||||
</picker>
|
||||
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
|
||||
<block wx:for="{{distributetabs}}" wx:key="index">
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<block wx:if="{{distTabId == 1}}">
|
||||
<view class="mt20 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">销售顾问</view>
|
||||
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{employeeArray}}">
|
||||
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{employeeArray[employeeIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt20 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">计划回访时间</view>
|
||||
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
|
||||
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
|
||||
<view class="fn-fl">门店名称</view>
|
||||
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
|
||||
<view class="text-nowrap">
|
||||
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{bizArray[distBizIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
</lcb-msg>
|
||||
|
||||
<page-container
|
||||
show="{{isShowTimePicker}}"
|
||||
round="{{true}}"
|
||||
overlay="true"
|
||||
duration="300"
|
||||
z-index="10000"
|
||||
position="bottom"
|
||||
close-on-slide-down="{{false}}"
|
||||
bindenter="onEnter"
|
||||
custom-style="false"
|
||||
overlay-style="false"
|
||||
>
|
||||
<view class="">
|
||||
<view class="relative pt30 pb30 text-center font-30">
|
||||
<view class="color-666">计划回访时间</view>
|
||||
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
|
||||
</view>
|
||||
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
|
||||
<block wx:for="{{weekList}}" wx:key="index">
|
||||
<view class="fn-flex-item">{{item}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="pb40 relative">
|
||||
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
|
||||
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
|
||||
<block wx:for="{{dateList}}" wx:key="index">
|
||||
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</page-container>
|
||||
+904
-529
File diff suppressed because it is too large
Load Diff
+473
-211
@@ -1,28 +1,39 @@
|
||||
<view class="container">
|
||||
<view class="inner40 pb0">
|
||||
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
|
||||
<view class="absolute top-0 left-0 width-25 mt40 pt5 pb5 bg-36afa2 line-height-13 font-22 color-fff">{{detailinfo.tip}}</view>
|
||||
<view class="absolute top-0 left-0 ml40 bg-36afa2 pl10 pr10 font-22 color-fff" wx:if="{{detailinfo.tip}}">
|
||||
{{detailinfo.tip}}
|
||||
</view>
|
||||
<view class="relative pr180">
|
||||
<view class="font-32">
|
||||
<text>{{detailinfo.name}}</text>
|
||||
<text>({{detailinfo.mobile}})</text>
|
||||
<view class="font-28">
|
||||
<text>
|
||||
{{detailinfo.name}}<text class="ml10 font-22 color-666">编号 {{detailinfo.id}}</text>
|
||||
</text>
|
||||
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{detailinfo.is_weChat}}"></text>
|
||||
<text class="iconfont icon-xingxing ml10 {{detailinfo.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
|
||||
</view>
|
||||
<view class="text-nowrap">
|
||||
<view class="mt10 text-nowrap font-28">
|
||||
<text>{{detailinfo.mobile}}</text>
|
||||
</view>
|
||||
<!-- <view class="text-nowrap">
|
||||
<text class="mr15 font-22 color-666">编号:{{detailinfo.id}}</text>
|
||||
<block wx:for="{{detailinfo.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
|
||||
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
|
||||
</block>
|
||||
<block wx:if="{{detailinfo.tags.length>4}}">
|
||||
...
|
||||
</block>
|
||||
</view>
|
||||
<view class="absolute right-0 box-middle">
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{detailinfo.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
|
||||
</view>
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{detailinfo.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
|
||||
</view> -->
|
||||
<view class="absolute right-0 box-middle text-right mt5">
|
||||
<view class="text-center">
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{detailinfo.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
|
||||
</view>
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{detailinfo.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inline-block mt5 pt5 pb5 pl20 pr20 btn-36afa2 font-26 color-fff ulib-r750" bindtap="copyWord">复制</view>
|
||||
</view>
|
||||
</view>
|
||||
<block wx:for="{{detailinfo.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
|
||||
@@ -34,112 +45,14 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="pl30 pr30">
|
||||
<view class="fn-flex font-32 color-666 text-center">
|
||||
<view class="fn-flex pl50 pr50 font-32 color-666 text-center">
|
||||
<block wx:for='{{tab}}' wx:key='list'>
|
||||
<view class="fn-flex-item pl20 pr20 tabmenu2 {{tabid == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab">
|
||||
<view class="relative">{{item.title}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="mt30 pl10 pr10 pb200" wx:if="{{tabid == tab[0].id}}">
|
||||
<!-- <view class="font-22">
|
||||
<i class="iconfont icon-fenqi mr10"></i>
|
||||
<text>分期信息</text>
|
||||
</view> -->
|
||||
<view class="text-right">
|
||||
<button bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}" class="inline-block btn-36afa2 font-22 color-fff ulib-r10" hover-class="btn-36afa2-hover"><i class="iconfont icon-dengji mr10"></i>编辑</button>
|
||||
</view>
|
||||
<view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户姓名</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
{{name}}
|
||||
<!-- <input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入客户姓名" bindinput='inputTx' bindblur='putAppCustomerData' bindconfirm='putAppCustomerData' data-key="name" name='name' value='{{name}}' /> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">手机号码</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
{{mobile}}
|
||||
<!-- <input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' bindblur='putAppCustomerData' bindconfirm='putAppCustomerData' data-key="mobile" name='mobile' value='{{mobile}}' /> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
{{brandArray[brandIndex]}}
|
||||
<!-- <picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
|
||||
<text class="color-ccc" wx:if="{{brandIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{brandArray[brandIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
{{modelArray[modelIndex]}}
|
||||
<!-- <picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
|
||||
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{modelArray[modelIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
{{levelArray[levelIndex]}}
|
||||
<!-- <picker bindchange="changeLevel" value="{{levelIndex}}" range="{{levelArray}}">
|
||||
<text class="color-ccc" wx:if="{{levelIndex == -1}}">{{colorArray.length == 0?'请先选择车型车系':'请选择'}}</text>
|
||||
<text wx:else>{{levelArray[levelIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型颜色</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
|
||||
{{colorArray[colorIndex]}}
|
||||
<!-- <picker bindchange="changeColor" value="{{colorIndex}}" range="{{colorArray}}">
|
||||
<text class="color-ccc" wx:if="{{colorIndex == -1}}">{{colorArray.length == 0?'请先选择车型车系':'请选择'}}</text>
|
||||
<text wx:else>{{colorArray[colorIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker> -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">备选车型</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeSpare" value="{{spareIndex}}" range="{{modelArray}}">
|
||||
<text class="color-ccc" wx:if="{{spareIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{modelArray[spareIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">线索来源</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
|
||||
{{cf_clues}}
|
||||
<!-- <input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入线索来源" bindinput='inputTx' bindblur='putAppCustomerData' bindconfirm='putAppCustomerData' data-key="cf_clues" name='cf_clues' value='{{cf_clues}}' /> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
|
||||
{{timeArray[timeIndex]}}
|
||||
<!-- <picker bindchange="changeTime" value="{{timeIndex}}" range="{{timeArray}}">
|
||||
<text class="color-ccc" wx:if="{{timeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{timeArray[timeIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt30 pb150" wx:elif="{{tabid == tab[1].id}}">
|
||||
<view class="mt30 pb150" wx:if="{{tabid == 1}}">
|
||||
<view class="fn-flex text-center">
|
||||
<block wx:for="{{statistics}}" wx:key='index'>
|
||||
<view class="fn-flex-item ml15 mr15 pt20 pb20 bg-f3f6fc ulib-r10" style="background-color:{{item.color}}">
|
||||
@@ -158,19 +71,41 @@
|
||||
<block wx:for="{{logslist}}" wx:for-index="index" wx:key="index">
|
||||
<view class="orderDtail-log-item pl40 relative">
|
||||
<view class="orderDtail-log-content">
|
||||
<view class="font-22 color-999">{{item.c_time}}</view>
|
||||
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
|
||||
<view bindtap="audioPlay" data-index="{{index}}" class="relative mt10 wp60 pt10 pb10 pl20 pr30 {{currentIndex == index?'bg-36afa2 color-fff':'bg-e3f5f3 color-36afa2'}} ulib-r750 ulib-rlt0" wx:if="{{!!item.record_url}}">
|
||||
<i class="iconfont mr10 icon-yinpin"></i>{{currentIndex == index?currentime:item.second}}”
|
||||
<view class="absolute right-0 box-middle mr20 font-20" wx:if="{{currentIndex == index}}">
|
||||
{{play?'播放中':'已暂停'}}
|
||||
</view>
|
||||
<!-- 时间 -->
|
||||
<view class="font-22">
|
||||
<text class="color-999">{{item.c_time}}</text>
|
||||
<!-- <text class="color-999"> · </text>
|
||||
<text class="color-36afa2">试驾/下定</text> -->
|
||||
</view>
|
||||
<!-- 内容 -->
|
||||
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
|
||||
<!-- 录音 -->
|
||||
<view class="relative mt10 wp80 pt5 pb5 pl180 bg-e3f5f3 color-36afa2 font-30 ulib-r10" wx:if="{{!!item.record_url}}">
|
||||
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont {{play?'icon-zanting1':'icon-bofang'}}" wx:if="{{currentIndex==index}}"></i>
|
||||
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont icon-bofang" wx:else></i>
|
||||
<text class="absolute box-middle left-0 ml65 font-20">
|
||||
{{currentIndex==index?currentx:'00:00'}} / {{item.alltime}}
|
||||
</text>
|
||||
<slider bindtouchstart="handle_slider_move_start" bindchanging="hanle_slider_changing" bindchange="hanle_slider_change" data-index="{{index}}" min="0" step="0.000001" block-size="12" max="{{item.second}}" block-color="#5ec6bb" activeColor="#36afa2" backgroundColor="#d1eeeb" value="{{currentIndex==index?currentime:0}}" />
|
||||
</view>
|
||||
<!-- 图片 -->
|
||||
<view wx:if="{{item.imgs.length>0}}">
|
||||
<block wx:for="{{item.imgs}}" wx:for-item="img" wx:for-index="j" wx:key="j">
|
||||
<image bindtap="previewImage" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-1-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
|
||||
<image bindtap="previewImage" data-type="logs" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-2-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
|
||||
</block>
|
||||
</view>
|
||||
<!-- 评论 -->
|
||||
<view class="mt10 mb15 bg-f6 ulib-r20 ulib-rlt0 pt5 pb10 pl15 pr15 font-22" wx:if="{{item.comments.length>0}}">
|
||||
<view class="mt5 relative" wx:for="{{item.comments}}" wx:for-item="comment" wx:for-index="j" wx:key="j">
|
||||
<text class="iconfont icon-pinglun color-36afa2"></text>
|
||||
<text class="ml10 color-36afa2">{{comment.uname}}:</text>
|
||||
<text class="color-666">{{comment.content}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ml15 font-22 color-36afa2 text-right" bindtap="optShowComment" data-id="{{item.id}}">
|
||||
<text class="iconfont icon-pinglun"></text>
|
||||
<text class="ml10">评论</text>
|
||||
</view>
|
||||
</view>
|
||||
<i class="absolute box-middle mt15 bg-fff line-height-11 font-22 color-999 iconfont icon-jiantou-up z-index-1" wx:if="{{index+1 != logslist.length}}"></i>
|
||||
<text class="absolute orderDtail-log-line2 z-index-0" wx:if="{{index != logslist.length-1}}"></text>
|
||||
@@ -182,101 +117,428 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt30 pl5 pr5 pb150" wx:elif="{{tabid == tab[2].id}}">
|
||||
<view>
|
||||
<block wx:for="{{detailinfo.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
|
||||
<text class="inline-block mr10 pt5 pb5 pl20 pr20 bg-f3f6fc font-22 ulib-r5">{{tag}}</text>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="fixed left-0 bottom-0 right-0 bg-fff-op80 pl40 pr40 pt20 pb40 fn-flex z-index-1">
|
||||
<button class="fn-flex-item bds-2-36afa2 bg-fff mr20 pt10 pb10 text-center font-32 color-36afa2 ulib-r750" bindtap="optShowNote"><i class="iconfont icon-xiaoji mr10"></i>小记</button>
|
||||
<button class="fn-flex-item btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" bindtap="showSelectStatus">变更状态</button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<lcb-msg isShow="{{isShowMessage}}">
|
||||
<view slot="content">
|
||||
<view class="inner40">
|
||||
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" maxlength='100' placeholder="请输入短信内容" bindinput='inputTx' data-key="content" name='content' value='{{content}}' />
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="hideMessage" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<lcb-msg isShow="{{isShowNote}}">
|
||||
<view slot="content">
|
||||
<view class="pt40 pl40 pr40">
|
||||
<view class="font-36 text-center">新增小记</view>
|
||||
<textarea class="mt30 wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请输入小记内容" bindinput='inputTx' data-key="note" name='note' style="height:150rpx;" value='{{note}}' />
|
||||
</view>
|
||||
<view class="mt30 pl25 pr25 pb40">
|
||||
<view class="fn-flex">
|
||||
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
|
||||
<view class="fn-flex-item ml15 mr15 relative">
|
||||
<i class="absolute top-0 right-0 bg-ccc iconfont icon-shanchu inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
|
||||
<image class='img-250x150 ulib-r10' src='{{photos.img_url}}' mode='aspectFill'></image>
|
||||
<view class="mt30 pl50 pr30 pb200" wx:elif="{{tabid == 2}}">
|
||||
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt20" wx:if="{{list.have}}">
|
||||
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
|
||||
<view class="pl150">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:if="{{photos.length==0}}">
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{photos.length==1}}">
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowNote" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppCustomerlogs" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<lcb-msg isShow="{{isShowSelectStatus}}">
|
||||
<view slot="content">
|
||||
<view class="mt50 font-36 text-center">变更状态</view>
|
||||
<scroll-view class="pb50" scroll-y="true" style="max-height:600rpx;width:620rpx">
|
||||
<view class="mt20 pl20 pr15 font-28 fn-clear">
|
||||
<block wx:for="{{stateList}}" wx:key='index'>
|
||||
<view wx:if="{{item.key<=detailinfo.status}}" class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10 opacity-50">
|
||||
<text>{{item.name}}</text>
|
||||
<i class="absolute right-0 box-middle mr30 iconfont icon-danxuan_xuanzhong color-36afa2"></i>
|
||||
</view>
|
||||
<view wx:else class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="radioPicker" data-key="{{item.key}}">
|
||||
<text>{{item.name}}</text>
|
||||
<i class="absolute right-0 box-middle mr30 iconfont {{statuskey == item.key?'icon-danxuan_xuanzhong color-36afa2':'icon-danxuan color-999'}}"></i>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="mt40 bts-1-eb ml40 mr40"></view>
|
||||
<view class="mt20 pl20 pr15 font-28 fn-clear">
|
||||
<view class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="checkPicker" data-pointer="daodian">
|
||||
<text>到店 +1次</text>
|
||||
<i class="absolute right-0 box-middle mr30 iconfont {{a_num == 1?'icon-fuxuansel color-36afa2':'icon-fuxuankuang color-999'}}"></i>
|
||||
</view>
|
||||
<view class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="checkPicker" data-pointer="shijia">
|
||||
<text>试驾 +1次</text>
|
||||
<i class="absolute right-0 box-middle mr30 iconfont {{t_num == 1?'icon-fuxuansel color-36afa2':'icon-fuxuankuang color-999'}}"></i>
|
||||
</block>
|
||||
<block wx:for='{{daoDianList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt20" wx:if="{{list.have}}">
|
||||
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
|
||||
<view class="pl150">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:for='{{gouMaiList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt20" wx:if="{{list.have}}">
|
||||
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
|
||||
<view class="pl150">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="mt30 pl50 pr30 pb200" wx:elif="{{tabid == 3}}">
|
||||
<view class="relative mt20" wx:if="{{detailinfo.defeat.reason}}">
|
||||
<view class="absolute left-0 box-middle font-28">战败理由</view>
|
||||
<view class="pl150 font-28 color-666">
|
||||
{{detailinfo.defeat.reason}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <block wx:for='{{defeatList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt20" wx:if="{{list.have}}">
|
||||
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
|
||||
<view class="pl150">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="fixed left-0 bottom-0 right-0 bg-fff-op90 pl40 pr40 pt20 pb40 z-index-1">
|
||||
<!-- <view>
|
||||
<button bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}" class="inline-block btn-36afa2 font-22 color-fff ulib-r10" hover-class="btn-36afa2-hover"></button>
|
||||
</view> -->
|
||||
<view class="fn-flex text-center">
|
||||
<view class="fn-flex-item flexsize3 pt10 color-36afa2" bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}">
|
||||
<i class="iconfont icon-bianjiwenjian font-36"></i>
|
||||
<view class="font-22">修改信息</view>
|
||||
</view>
|
||||
<block wx:if="{{optDefeat}}">
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="putAppCustomersDefeats" data-type="0">
|
||||
战败
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="putAppCustomersDefeats" data-type="1">
|
||||
再战
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{detailinfo.status==2}}">
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
|
||||
客户跟进
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="optShowOrder">
|
||||
订单(复购)
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{detailinfo.status==3}}">
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
|
||||
客户跟进
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="optShowNote">
|
||||
再战
|
||||
</view>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 bts-2-36afa2 bls-2-36afa2 bbs-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
|
||||
客户跟进
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750 {{detailinfo.generate_order||userInfo.group_id==2||userInfo.group_id==3||userInfo.group_id==4?'':'opacity-50'}}" bindtap="{{detailinfo.generate_order||userInfo.group_id==2||userInfo.group_id==3||userInfo.group_id==4?'pushLink':''}}" data-url="/pages/order/register/index?cus_id={{detailinfo.id}}&name={{detailinfo.name}}&mobile={{detailinfo.mobile}}&complete_mobile={{detailinfo.complete_mobile}}">
|
||||
生成订单
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
<page-container show="{{isShowTimePicker}}" round="{{true}}" overlay="true" duration="300" z-index="10000" position="bottom" close-on-slide-down="{{false}}" bindenter="onEnter" custom-style="false" overlay-style="false">
|
||||
<view class="">
|
||||
<view class="relative pt30 pb30 text-center font-30">
|
||||
<view class="color-666">计划回访时间</view>
|
||||
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
|
||||
</view>
|
||||
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
|
||||
<block wx:for="{{weekList}}" wx:key="index">
|
||||
<view class="fn-flex-item">{{item}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="pb40 relative">
|
||||
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
|
||||
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
|
||||
<block wx:for="{{dateList}}" wx:key="index">
|
||||
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">
|
||||
{{item.day}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</page-container>
|
||||
<lcb-msg isShow="{{isShowMessage}}">
|
||||
<view slot="content">
|
||||
<view class="inner40">
|
||||
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" placeholder-class="color-ccc" maxlength='100' placeholder="请输入短信内容" bindinput='inputTx' data-key="content" name='content' value='{{content}}' />
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="hideMessage" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
<lcb-msg isShow="{{isShowNote}}">
|
||||
<view slot="content" class="pt20">
|
||||
<view class="mt30 pl30 pr30 font-28 text-center fn-flex" wx:if="{{detailinfo.status ==3}}">
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 0?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="0">
|
||||
未见客户
|
||||
</view>
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 1?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="1">
|
||||
到店客户
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt30 pl30 pr30 font-28 text-center fn-flex" wx:elif="{{detailinfo.status!=2}}">
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 0?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="0">
|
||||
未见客户
|
||||
</view>
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 1?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="1">
|
||||
到店客户
|
||||
</view>
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 3?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="3">
|
||||
战败客户
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view scroll-y="true" style="max-height:1000rpx;">
|
||||
<block wx:if="{{statuskey==0||statuskey==1}}">
|
||||
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">跟进渠道</view>
|
||||
<picker class="fn-fr wp60 text-right" bindchange="changeFollow" value="{{followIndex}}" range="{{follow}}">
|
||||
<text class="color-ccc" wx:if="{{followIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{follow[followIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">客户等级</view>
|
||||
<view class="fn-fr wp60 text-right" wx:if="{{detailinfo.status==0&&statuskey==1}}">H</view>
|
||||
<picker class="fn-fr wp60 text-right" bindchange="changeLevel" value="{{levelIndex}}" range="{{level}}" wx:else>
|
||||
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{level[levelIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<block wx:for='{{daoDianTag}}' wx:for-item='list' wx:for-index='i' wx:key='i' wx:if="{{statuskey==0}}">
|
||||
<view class="relative mt20 pl40 pr40">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="daoDianRadioPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="daoDianCheckPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:for='{{gouMaiTag}}' wx:for-item='list' wx:for-index='i' wx:key='i' wx:if="{{statuskey==1}}">
|
||||
<view class="relative mt20 pl40 pr40">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="gouMaiRadioPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="gouMaiCheckPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 {{levelIndex>-1?'color-666':'color-ccc'}} fn-clear ulib-r10">
|
||||
<view class="fn-fl">计划回访时间</view>
|
||||
<view bindtap="{{levelIndex>-1?'optShowTimePicker':''}}" class="fn-fr wp60 text-right">
|
||||
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 ml40 mr40 font-28 text-center relative mr10 pt20 pb20 ulib-r10 overflowhidden {{baseinfo.wxgr==1?'opacity-80':''}} {{wxgr == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="{{baseinfo.wxgr==1?'':'checkPicker'}}" data-pointer="gewei" wx:if="{{statuskey==0}}">
|
||||
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{wxgr == 1}}"></i>
|
||||
<text>已添加个微</text>
|
||||
</view>
|
||||
<view class="mt20 pl40 pr40 font-28 text-center fn-flex" wx:if="{{statuskey==1}}">
|
||||
<view class="fn-flex-item flexsize6 relative mr10 pt20 pb20 ulib-r10 overflowhidden {{baseinfo.wxgr==1?'opacity-80':''}} {{wxgr == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="{{baseinfo.wxgr==1?'':'checkPicker'}}" data-pointer="gewei">
|
||||
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{wxgr == 1}}"></i>
|
||||
<text>已添加个微</text>
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize5 relative ml10 mr10 pt20 pb20 ulib-r10 overflowhidden {{a_num == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="checkPicker" data-pointer="daodian">
|
||||
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{a_num == 1}}"></i>
|
||||
<text>再次到店</text>
|
||||
</view>
|
||||
<view class="fn-flex-item flexsize5 relative ml10 pt20 pb20 ulib-r10 overflowhidden {{t_num == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="checkPicker" data-pointer="shijia">
|
||||
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{t_num == 1}}"></i>
|
||||
<text>客户试驾</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt20 text-center" wx:if="{{(statuskey==0||statuskey==1)&&wxgr==1}}">
|
||||
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
|
||||
<block wx:if="{{wxgrimg_url}}">
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
|
||||
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-42"></i>
|
||||
<view class="mt10 font-22">上传个微截图</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<block wx:if="{{statuskey!=3}}">
|
||||
<view class="mt15 pl40 pr40">
|
||||
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:200rpx;" placeholder-class="color-ccc" placeholder="请输入小记内容" bname='note' model:value='{{note}}' />
|
||||
</view>
|
||||
<view class="mt20 pl25 pr25">
|
||||
<view class="fn-flex">
|
||||
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
|
||||
<view class="fn-flex-item ml15 mr15 relative">
|
||||
<i class="absolute top-0 right-0 bg-ccc iconfont icon-shanchu inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}"></i>
|
||||
<image class='img-250x150 ulib-r10' src='{{photos.img_url}}' mode='aspectFill'></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:if="{{photos.length==0}}">
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{photos.length==1}}">
|
||||
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
|
||||
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="pl40 pr40" wx:if="{{statuskey==3}}">
|
||||
<view class="mt20 bds-2-eb inner20 font-28 color-666 ulib-r10">
|
||||
<picker class="fn-clear" bindchange="changeDefeat" value="{{defeatIndex}}" range="{{defeatTitleList}}">
|
||||
<view class="wp90 fn-fl text-nowrap color-ccc" wx:if="{{defeatIndex == -1}}">请选择</view>
|
||||
<view class="wp90 fn-fl text-nowrap" wx:else>{{defeatTitleList[defeatIndex]}}</view>
|
||||
<i class="fn-fr iconfont mt5 ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<block wx:if="{{defeatIndex > -1}}">
|
||||
<view class="fn-clear" wx:if="{{defeatTag[defeatIndex].type=='radio'}}">
|
||||
<block wx:for='{{defeatTag[defeatIndex].list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatRadioPicker" data-i="{{defeatIndex}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{defeatTag[defeatIndex].type=='checkbox'}}">
|
||||
<block wx:for='{{defeatTag[defeatIndex].list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatCheckPicker" data-i="{{defeatIndex}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<!-- <block wx:for='{{defeatTag}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt20">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatRadioPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatCheckPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block> -->
|
||||
<view class="mt20">
|
||||
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:200rpx;" placeholder-class="color-ccc" maxlength='100' placeholder="请填写战败理由" name='defeat_reason' model:value='{{defeat_reason}}' />
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="cancelSelectStatus" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">取消</button>
|
||||
<button bindtap="putAppCustomers" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
<view class="fn-flex mt20 pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowNote" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="putAppCustomers" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
<lcb-msg isShow="{{isShowOrder}}">
|
||||
<view slot="content">
|
||||
<view class="mt50 font-36 text-center">查看订单</view>
|
||||
<scroll-view class="pb50" scroll-y="true" style="max-height:600rpx;width:620rpx">
|
||||
<view class="inner40">
|
||||
<block wx:for='{{order}}' wx:key='index'>
|
||||
<view class="inner30 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/order/detail/index{{item.id>=v2OrderId?'2':''}}?id={{item.id}}">
|
||||
<view class="font-32 text-bold">{{item.name}}</view>
|
||||
<view class="mt10 font-28 color-666">{{item.mobile}}</view>
|
||||
<view class="mt10 font-28 color-666">{{item.car_name}}</view>
|
||||
<i class="absolute right-0 mr30 box-middle iconfont icon-gengduo text-middle font-44 color-ccc"></i>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowOrder" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">
|
||||
返回
|
||||
</button>
|
||||
<button class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="pushLink" data-url="/pages/order/register/index?cus_id={{detailinfo.id}}&name={{detailinfo.name}}&mobile={{detailinfo.mobile}}&complete_mobile={{detailinfo.complete_mobile}}">
|
||||
生成订单
|
||||
</button>
|
||||
</view>
|
||||
<!-- <view class="pl60 pr60 pb50 text-center font-32 color-666" wx:else>
|
||||
<button bindtap="optShowOrder" class="bds-2-36afa2 btn-no-bg wp45 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">
|
||||
返回
|
||||
</button>
|
||||
</view> -->
|
||||
</view>
|
||||
</lcb-msg>
|
||||
<lcb-msg isShow="{{isShowComment}}">
|
||||
<view slot="content">
|
||||
<view class="inner40">
|
||||
<view class="font-36 text-center">小记评论</view>
|
||||
<view class="mt20">
|
||||
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:170rpx;" placeholder-class="color-ccc" maxlength='100' placeholder="请输入评论内容" model:value='{{comment}}' />
|
||||
</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optShowComment" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppCustomersComments" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<!-- 拨打电话 -->
|
||||
<lcb-msg isShow="{{isShowCall}}">
|
||||
<view slot="content">
|
||||
<view class="pt50 pb40">
|
||||
<view class="font-36 text-center">号码绑定成功</view>
|
||||
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} ?</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
+409
-167
@@ -4,29 +4,30 @@ Page({
|
||||
data: {
|
||||
name:'',//名字
|
||||
mobile:'',//手机号
|
||||
brand_id:'',//品牌
|
||||
car_id:'',//车系id
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//颜色id
|
||||
buy_time:'',//预计购车时间
|
||||
brandIndex:-1,//车辆品牌索引
|
||||
modelIndex:-1,//车型车系索引
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
timeArray:[],//预计购车时间列表
|
||||
timeIndex:-1,//预计购车时间索引
|
||||
cf_clues:'',//线索来源
|
||||
cluesArray:[
|
||||
'自然进店',
|
||||
'外展',
|
||||
'DM',
|
||||
'转介绍',
|
||||
'其他',
|
||||
],//线索来源
|
||||
cluesIndex:-1,//索来源索引
|
||||
// brand_id:'',//品牌
|
||||
// car_id:'',//车系id
|
||||
// v_id:'',//车辆版本id
|
||||
// color_id:'',//颜色id
|
||||
// brandIndex:-1,//车辆品牌索引
|
||||
// modelIndex:-1,//车系车型索引
|
||||
// colorArray:[],//车身颜色列表
|
||||
// levelArray:[],//车辆版本列表
|
||||
// colorIndex:-1,//车身颜色索引
|
||||
// levelIndex:-1,//车辆版本索引
|
||||
submitFlag:false,
|
||||
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
|
||||
cityIndex:-1,
|
||||
city_id:'',
|
||||
countyIndex:-1,
|
||||
county_id:'',
|
||||
wxgr:0,//是否添加个微
|
||||
wxgrimg:'',//个微
|
||||
wxgrimg_url:'',//个微
|
||||
},
|
||||
//生命周期函数--监听页面加载
|
||||
onLoad: function (options) {
|
||||
@@ -36,6 +37,7 @@ Page({
|
||||
})
|
||||
}
|
||||
this.getAppCustomerData()
|
||||
this.getAppCustomersTag()
|
||||
},
|
||||
|
||||
//获取客户详细信息
|
||||
@@ -47,23 +49,19 @@ Page({
|
||||
baseinfo:res.data.baseinfo,
|
||||
name:res.data.baseinfo.name.value?res.data.baseinfo.name.value:'',
|
||||
mobile:res.data.baseinfo.mobile.value?res.data.baseinfo.mobile.value:'',
|
||||
cf_clues:res.data.baseinfo.cf_clues.value?res.data.baseinfo.cf_clues.value:'',
|
||||
of_id:res.data.baseinfo.of_id.of_id?res.data.baseinfo.of_id.of_id:'',
|
||||
of2_id:res.data.baseinfo.of_id.of2_id?res.data.baseinfo.of_id.of2_id:'',
|
||||
wxgr:res.data.baseinfo.wxgr,
|
||||
wxgrimg:res.data.baseinfo.wxgrimg,
|
||||
wxgrimg_url:res.data.baseinfo.wxgrimg_url,
|
||||
})
|
||||
|
||||
if(res.data.baseinfo.cf_clues.value){
|
||||
this.data.cluesArray.forEach((item,index) => {
|
||||
if(item == res.data.baseinfo.cf_clues.value){
|
||||
this.setData({
|
||||
cluesIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//编辑基础信息使用
|
||||
this.getAppSeriesBrands()
|
||||
this.getAppSeriesedit()
|
||||
this.getAppCustomersFilter()
|
||||
//获取车型品牌
|
||||
//this.getAppSeriesBrands()
|
||||
//匹配车系车型
|
||||
//this.getAppSeriesedit()
|
||||
this.getAppCustomersOffline_sources()
|
||||
|
||||
})
|
||||
},
|
||||
@@ -91,14 +89,13 @@ Page({
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//匹配车型车系
|
||||
//匹配车系车型
|
||||
getAppSeriesedit(){
|
||||
let params = {};
|
||||
params['brand_id'] = this.data.baseinfo.brand_id.value;
|
||||
@@ -124,8 +121,8 @@ Page({
|
||||
}
|
||||
})
|
||||
|
||||
//匹配颜色 车型级别
|
||||
this.getAppSeriesAttrsedit()
|
||||
//匹配颜色 车辆版本
|
||||
this.getAppSeriesAttrsleveledit()
|
||||
|
||||
}
|
||||
|
||||
@@ -133,7 +130,7 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//编辑品牌时车型车系
|
||||
//编辑品牌时车系车型
|
||||
getAppSeries(){
|
||||
let params = {};
|
||||
params['brand_id'] = this.data.brand_id;
|
||||
@@ -151,12 +148,48 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取车型属性 /颜色 /车型级别 ---编辑匹配信息
|
||||
getAppSeriesAttrsedit(){
|
||||
let params1 = {};
|
||||
params1['id'] = this.data.modelList[this.data.modelIndex].id;
|
||||
params1['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params1).then(res => {
|
||||
//获取车辆版本 ---编辑匹配信息
|
||||
getAppSeriesAttrsleveledit(){
|
||||
|
||||
let params = {};
|
||||
params['id'] = this.data.modelList[this.data.modelIndex].id;
|
||||
params['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let levelArray = []
|
||||
res.data.list.forEach(item => {
|
||||
levelArray.push(item.title)
|
||||
})
|
||||
this.setData({
|
||||
levelArray:levelArray,
|
||||
levelList:res.data.list,
|
||||
levelIndex:-1,
|
||||
})
|
||||
|
||||
if(this.data.baseinfo.v_id.value != ''){
|
||||
res.data.list.forEach((item,index) => {
|
||||
if(item.id == this.data.baseinfo.v_id.value){
|
||||
this.setData({
|
||||
v_id:this.data.baseinfo.v_id.value,
|
||||
levelIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
this.getAppSeriesAttrscoloredit()
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//获取车身颜色 ---编辑匹配信息
|
||||
getAppSeriesAttrscoloredit(){
|
||||
let params = {};
|
||||
params['id'] = this.data.modelList[this.data.modelIndex].id;
|
||||
params['type'] = 1;
|
||||
params['v_id'] = this.data.v_id;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let colorArray = []
|
||||
res.data.list.forEach(item => {
|
||||
@@ -181,11 +214,15 @@ Page({
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
let params2 = {};
|
||||
params2['id'] = this.data.modelList[this.data.modelIndex].id;
|
||||
params2['type'] = 1;
|
||||
_.apiQuery.getAppSeriesAttrs(params2).then(res => {
|
||||
//获取车辆版本
|
||||
getAppSeriesAttrslevel(){
|
||||
let params = {};
|
||||
params['id'] = this.data.car_id;
|
||||
params['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let levelArray = []
|
||||
res.data.list.forEach(item => {
|
||||
@@ -196,28 +233,17 @@ Page({
|
||||
levelList:res.data.list,
|
||||
levelIndex:-1,
|
||||
})
|
||||
|
||||
if(this.data.baseinfo.v_id.value != ''){
|
||||
res.data.list.forEach((item,index) => {
|
||||
if(item.id == this.data.baseinfo.v_id.value){
|
||||
this.setData({
|
||||
v_id:this.data.baseinfo.v_id.value,
|
||||
levelIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//获取车型属性 /颜色 /车型级别
|
||||
getAppSeriesAttrs(){
|
||||
let params1 = {};
|
||||
params1['id'] = this.data.car_id;
|
||||
params1['type'] = 0;
|
||||
_.apiQuery.getAppSeriesAttrs(params1).then(res => {
|
||||
//获取车身颜色
|
||||
getAppSeriesAttrscolor(){
|
||||
let params = {};
|
||||
params['id'] = this.data.car_id;
|
||||
params['type'] = 1;
|
||||
params['v_id'] = this.data.v_id;
|
||||
_.apiQuery.getAppSeriesAttrs(params).then(res => {
|
||||
if(res.data.total>0){
|
||||
let colorArray = []
|
||||
res.data.list.forEach(item => {
|
||||
@@ -230,50 +256,6 @@ Page({
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
let params2 = {};
|
||||
params2['id'] = this.data.car_id;
|
||||
params2['type'] = 1;
|
||||
_.apiQuery.getAppSeriesAttrs(params2).then(res => {
|
||||
if(res.data.total>0){
|
||||
let levelArray = []
|
||||
res.data.list.forEach(item => {
|
||||
levelArray.push(item.title)
|
||||
})
|
||||
this.setData({
|
||||
levelArray:levelArray,
|
||||
levelList:res.data.list,
|
||||
levelIndex:-1,
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//获取列表筛选条件-时间
|
||||
getAppCustomersFilter(){
|
||||
_.apiQuery.getAppCustomersFilter().then(res => {
|
||||
|
||||
let timeArray = []
|
||||
res.data.buy_time.forEach(item => {
|
||||
timeArray.push(item + '天')
|
||||
})
|
||||
this.setData({
|
||||
timeArray:timeArray,
|
||||
timeList:res.data.buy_time,
|
||||
})
|
||||
|
||||
if(this.data.baseinfo.buy_time.value != 0){
|
||||
res.data.buy_time.forEach((item,index) => {
|
||||
if(item == this.data.baseinfo.buy_time.value){
|
||||
this.setData({
|
||||
buy_time:this.data.baseinfo.buy_time.value,
|
||||
timeIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
//输入
|
||||
@@ -291,15 +273,15 @@ Page({
|
||||
brand_id:this.data.brandList[e.detail.value].id,
|
||||
brandIndex:e.detail.value,
|
||||
car_id:'',//车系id
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//车型颜色id
|
||||
v_id:'',//车辆版本id
|
||||
color_id:'',//车身颜色id
|
||||
incolor_id:'',//内饰颜色id
|
||||
modelIndex:-1,//车型车系索引
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
modelIndex:-1,//车系车型索引
|
||||
colorArray:[],//车身颜色列表
|
||||
levelArray:[],//车辆版本列表
|
||||
interiorArray:[],//内饰颜色
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
colorIndex:-1,//车身颜色索引
|
||||
levelIndex:-1,//车辆版本索引
|
||||
interiorIndex:-1,//内饰颜色索引
|
||||
priceinfo:'',
|
||||
})
|
||||
@@ -313,32 +295,36 @@ Page({
|
||||
this.setData({
|
||||
car_id:this.data.modelList[e.detail.value].id,
|
||||
modelIndex:e.detail.value,
|
||||
v_id:'',//车型级别id
|
||||
color_id:'',//车型颜色id
|
||||
v_id:'',//车辆版本id
|
||||
color_id:'',//车身颜色id
|
||||
incolor_id:'',//内饰颜色id
|
||||
colorArray:[],//车型颜色列表
|
||||
levelArray:[],//车型级别列表
|
||||
colorArray:[],//车身颜色列表
|
||||
levelArray:[],//车辆版本列表
|
||||
interiorArray:[],//内饰颜色
|
||||
colorIndex:-1,//车型颜色索引
|
||||
levelIndex:-1,//车型级别索引
|
||||
colorIndex:-1,//车身颜色索引
|
||||
levelIndex:-1,//车辆版本索引
|
||||
interiorIndex:-1,//内饰颜色索引
|
||||
priceinfo:'',
|
||||
})
|
||||
this.getAppSeriesAttrs()
|
||||
this.getAppSeriesAttrslevel()
|
||||
}
|
||||
},
|
||||
|
||||
//车型级别
|
||||
//车辆版本
|
||||
changeLevel(e) {
|
||||
if(this.data.levelIndex != e.detail.value && e.detail.value >= 0){
|
||||
this.setData({
|
||||
v_id:this.data.levelList[e.detail.value].id,
|
||||
levelIndex:e.detail.value,
|
||||
color_id:'',//车身颜色id
|
||||
colorArray:[],//车身颜色列表
|
||||
colorIndex:-1,//车身颜色索引
|
||||
})
|
||||
this.getAppSeriesAttrscolor()
|
||||
}
|
||||
},
|
||||
|
||||
//车型颜色
|
||||
//车身颜色
|
||||
changeColor(e) {
|
||||
if(this.data.colorIndex != e.detail.value && e.detail.value >= 0){
|
||||
this.setData({
|
||||
@@ -348,22 +334,6 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//线索来源
|
||||
changeClues(e) {
|
||||
this.setData({
|
||||
cf_clues:this.data.cluesArray[e.detail.value],
|
||||
cluesIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//预计购车时间
|
||||
changeTime(e) {
|
||||
this.setData({
|
||||
buy_time:this.data.timeList[e.detail.value],
|
||||
timeIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//编辑客户
|
||||
putAppCustomerData() {
|
||||
|
||||
@@ -373,58 +343,98 @@ Page({
|
||||
title: '请输入客户姓名',
|
||||
icon: 'none'
|
||||
})
|
||||
} else if (that.data.mobile == '' ){
|
||||
} else if (that.data.mobile != that.data.baseinfo.mobile.value&&!/^1[3456789]\d{9}$/.test(that.data.mobile)){
|
||||
wx.showToast({
|
||||
title: '请输入正确的手机号码',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.car_id == '' ){
|
||||
}
|
||||
else if (that.data.sources.length>0&&that.data.of_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型车系',
|
||||
title: '请选择客户来源',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.v_id == '' ){
|
||||
}
|
||||
else if (that.data.sources.length>0&&that.data.sources[that.data.of1Index].list.length>0&&that.data.of2_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型级别',
|
||||
title: '请选择'+that.data.sources[that.data.of1Index].name+'类型',
|
||||
icon: 'none'
|
||||
})
|
||||
}else if(that.data.color_id == '' ){
|
||||
}
|
||||
else if (that.data.city_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '请选择车型颜色',
|
||||
title: '请选择所在城市',
|
||||
icon: 'none'
|
||||
})
|
||||
} else if(that.data.name==that.data.baseinfo.name.value&&that.data.mobile==that.data.baseinfo.mobile.value&&that.data.cf_clues==that.data.baseinfo.cf_clues.value&&that.data.car_id==that.data.baseinfo.car_id.value&&that.data.v_id==that.data.baseinfo.v_id.value&&that.data.color_id==that.data.baseinfo.color_id.value&&that.data.buy_time==that.data.baseinfo.buy_time.value){
|
||||
}
|
||||
else if (that.data.county_id == '' ) {
|
||||
wx.showToast({
|
||||
title: '好像没改什么',
|
||||
title: '请选择所在地区',
|
||||
icon: 'none'
|
||||
})
|
||||
}else{
|
||||
}
|
||||
else if(this.data.wxgr==1&&this.data.wxgrimg==''){
|
||||
wx.showToast({
|
||||
title: '请上传个微截图',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
// else if(that.data.car_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车系车型',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }else if(that.data.v_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车辆版本',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }else if(that.data.color_id == '' ){
|
||||
// wx.showToast({
|
||||
// title: '请选择车身颜色',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
// else if(that.data.name==that.data.baseinfo.name.value&&that.data.mobile==that.data.baseinfo.mobile.value&&that.data.of_id==that.data.baseinfo.of_id.of_id&&that.data.of2_id==that.data.baseinfo.of_id.of2_id&&that.data.car_id==that.data.baseinfo.car_id.value&&that.data.v_id==that.data.baseinfo.v_id.value&&that.data.color_id==that.data.baseinfo.color_id.value){
|
||||
// wx.showToast({
|
||||
// title: '好像没改什么',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['cus_id'] = that.data.id;
|
||||
params['tag'] = that.data.taglList;
|
||||
if(that.data.name != that.data.baseinfo.name.value){
|
||||
params['name'] = that.data.name;
|
||||
}
|
||||
if(that.data.mobile != that.data.baseinfo.mobile.value){
|
||||
params['mobile'] = that.data.mobile;
|
||||
}
|
||||
if(that.data.cf_clues != that.data.baseinfo.cf_clues.value){
|
||||
params['cf_clues'] = that.data.cf_clues;
|
||||
if(that.data.of_id != that.data.baseinfo.of_id.of_id){
|
||||
params['of_id'] = that.data.of_id;
|
||||
}
|
||||
if(that.data.car_id != that.data.baseinfo.car_id.value){
|
||||
params['car_id'] = that.data.car_id;
|
||||
if(that.data.of2_id != that.data.baseinfo.of_id.of2_id){
|
||||
params['of2_id'] = that.data.of2_id;
|
||||
}
|
||||
if(that.data.v_id != that.data.baseinfo.v_id.value){
|
||||
params['v_id'] = that.data.v_id;
|
||||
}
|
||||
if(that.data.color_id != that.data.baseinfo.color_id.value){
|
||||
params['color_id'] = that.data.color_id;
|
||||
}
|
||||
if(that.data.buy_time != that.data.baseinfo.buy_time.value){
|
||||
params['buy_time'] = that.data.buy_time;
|
||||
params['city_id'] = that.data.city_id;
|
||||
params['county_id'] = that.data.county_id;
|
||||
// if(that.data.car_id != that.data.baseinfo.car_id.value){
|
||||
// params['car_id'] = that.data.car_id;
|
||||
// }
|
||||
// if(that.data.v_id != that.data.baseinfo.v_id.value){
|
||||
// params['v_id'] = that.data.v_id;
|
||||
// }
|
||||
// if(that.data.color_id != that.data.baseinfo.color_id.value){
|
||||
// params['color_id'] = that.data.color_id;
|
||||
// }
|
||||
params['wxgr'] = this.data.wxgr;
|
||||
if(this.data.wxgr==1){
|
||||
params['wxgrimg'] = this.data.wxgrimg;
|
||||
}
|
||||
_.apiQuery.putAppCustomerData(params).then(res => {
|
||||
|
||||
@@ -457,6 +467,7 @@ Page({
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
that.getAppCustomerData()
|
||||
that.getAppCustomersTag()
|
||||
} else if (res.cancel) {
|
||||
wx.navigateBack({
|
||||
delta: 1
|
||||
@@ -474,4 +485,235 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//客户来源
|
||||
getAppCustomersOffline_sources(){
|
||||
_.apiQuery.getAppCustomersOffline_sources().then(res => {
|
||||
let of1Arr = []
|
||||
res.data.sources.forEach(item => {
|
||||
of1Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of1Arr,
|
||||
sources:res.data.sources
|
||||
})
|
||||
if(this.data.of_id != ''){
|
||||
res.data.sources.forEach((item,index) => {
|
||||
if(item.id == this.data.of_id){
|
||||
this.setData({
|
||||
of1Index:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
if(this.data.of2Index != ''){
|
||||
let of2Arr = []
|
||||
res.data.sources[this.data.of1Index].list.forEach((item,index) => {
|
||||
of2Arr.push(item.name)
|
||||
if(item.id == this.data.of2_id){
|
||||
this.setData({
|
||||
of2Index:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
of2Arr,
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//客户来源
|
||||
changeOf1(e) {
|
||||
if(this.data.of1Index!=e.detail.value){
|
||||
let of2Arr = []
|
||||
this.data.sources[e.detail.value].list.forEach(item => {
|
||||
of2Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of2Arr,
|
||||
of2Index:-1,
|
||||
of_id:this.data.sources[e.detail.value].id,
|
||||
of1Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
changeOf2(e) {
|
||||
if(this.data.of2Index!=e.detail.value){
|
||||
this.setData({
|
||||
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
|
||||
of2Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//客户标签
|
||||
getAppCustomersTag(){
|
||||
let params = {};
|
||||
params['id'] = this.data.id;
|
||||
_.apiQuery.getAppCustomersTag(params).then(res => {
|
||||
this.setData({
|
||||
city_id:res.data.city_id,
|
||||
county_id:res.data.county_id,
|
||||
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
|
||||
})
|
||||
//获取城市
|
||||
this.getAppCityArea_city()
|
||||
//获取地区
|
||||
this.getAppCityArea_county()
|
||||
});
|
||||
},
|
||||
|
||||
//单选
|
||||
radioPicker(e){
|
||||
let taglList = this.data.taglList
|
||||
taglList[e.currentTarget.dataset.i].list.forEach(item => {
|
||||
item.checked=false
|
||||
})
|
||||
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
|
||||
this.setData({
|
||||
taglList,
|
||||
})
|
||||
},
|
||||
|
||||
//多选
|
||||
checkPicker(e){
|
||||
this.setData({
|
||||
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
|
||||
})
|
||||
},
|
||||
|
||||
//获取城市
|
||||
getAppCityArea_city(){
|
||||
let params = {};
|
||||
params['type'] = 'city';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let cityArr = []
|
||||
let cityIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArr.push(item.name)
|
||||
if(this.data.city_id == item.id){
|
||||
cityIndex = index
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
cityIndex,
|
||||
cityArr,
|
||||
city:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//获取行政区
|
||||
getAppCityArea_county(){
|
||||
let params = {};
|
||||
params['pid'] = this.data.city_id;
|
||||
params['type'] = 'county';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let countyArr = []
|
||||
let countyIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
countyArr.push(item.name)
|
||||
if(this.data.county_id == item.id){
|
||||
countyIndex = index
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
countyIndex,
|
||||
countyArr,
|
||||
county:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
if(this.data.cityIndex!=e.detail.value){
|
||||
this.setData({
|
||||
cityIndex:e.detail.value,
|
||||
city_id:this.data.city[e.detail.value].id,
|
||||
})
|
||||
this.getAppCityArea_county()
|
||||
}
|
||||
},
|
||||
|
||||
//选择地区
|
||||
changeCounty(e) {
|
||||
if(this.data.countyIndex!=e.detail.value){
|
||||
this.setData({
|
||||
countyIndex:e.detail.value,
|
||||
county_id:this.data.county[e.detail.value].id,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//是否添加个微
|
||||
switchWxgr:function(e){
|
||||
this.setData({
|
||||
wxgr:e.detail.value ? 1 :0
|
||||
})
|
||||
},
|
||||
|
||||
//选择图片
|
||||
chooseImg(e) {
|
||||
let that = this
|
||||
|
||||
//上传个微截图
|
||||
if(e.currentTarget.dataset.type=='gw_img'){
|
||||
wx.chooseImage({
|
||||
count: 1, // 默认9
|
||||
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
||||
success(res) {
|
||||
wx.showLoading({
|
||||
title: '上传中',
|
||||
})
|
||||
wx.uploadFile({
|
||||
url:_.config.api.upImg,
|
||||
filePath:res.tempFilePaths[0],
|
||||
name: 'img',
|
||||
formData: {
|
||||
'app': 'liche'
|
||||
},
|
||||
success: (resp) => {
|
||||
resp.data = JSON.parse(resp.data);
|
||||
if (resp.data.code == 200) {
|
||||
wx.hideLoading();
|
||||
that.setData({
|
||||
wxgrimg:resp.data.data.url,
|
||||
wxgrimg_url:resp.data.data.full_url,
|
||||
})
|
||||
}else{
|
||||
wx.hideLoading();
|
||||
wx.showToast({
|
||||
title: '上传失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
fail: res => {
|
||||
wx.showToast({
|
||||
title: '文件选择失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//查看图片
|
||||
previewImage(e){
|
||||
if(e.currentTarget.dataset.type=='gw_img'){
|
||||
wx.previewImage({
|
||||
current:this.data.wxgrimg_url,
|
||||
urls:[this.data.wxgrimg_url],
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
})
|
||||
@@ -13,7 +13,7 @@
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
|
||||
@@ -24,8 +24,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
|
||||
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{modelArray[modelIndex]}}</text>
|
||||
@@ -34,8 +34,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆版本</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{levelArray}}">
|
||||
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{levelArray[levelIndex]}}</text>
|
||||
@@ -44,44 +44,113 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型颜色</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车身颜色</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
|
||||
<picker bindchange="changeColor" value="{{colorIndex}}" range="{{colorArray}}">
|
||||
<text class="color-ccc" wx:if="{{colorIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{colorArray[colorIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<block wx:if="{{sources.length>0}}">
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户来源</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of1Arr[of1Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
|
||||
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of2Arr[of2Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">线索来源</view>
|
||||
<!-- <view>
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入线索来源" bindinput='inputTx' data-key="cf_clues" name='cf_clues' value='{{cf_clues}}' />
|
||||
</view> -->
|
||||
<view class="absolute left-0 box-middle">所在城市</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeClues" value="{{cluesIndex}}" range="{{cluesArray}}">
|
||||
<text class="color-ccc" wx:if="{{cluesIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{cluesArray[cluesIndex]}}</text>
|
||||
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
|
||||
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{cityArr[cityIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
|
||||
<view class="absolute left-0 box-middle">所在地区</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeTime" value="{{timeIndex}}" range="{{timeArray}}">
|
||||
<text class="color-ccc" wx:if="{{timeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{timeArray[timeIndex]}}</text>
|
||||
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
|
||||
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{countyArr[countyIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl180 font-28">
|
||||
<view class="absolute left-0 box-middle">是否添加个微</view>
|
||||
<view class="relative pt30 pb30 text-right">
|
||||
<switch class="{{baseinfo.wxgr==1?'opacity-50':''}}" checked="{{wxgr==1}}" bindchange="switchWxgr" type="switch" color='#36afa2' disabled='{{baseinfo.wxgr==1}}' style="zoom:0.8" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mt30 text-center" wx:if="{{wxgr==1}}">
|
||||
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
|
||||
<block wx:if="{{wxgrimg_url}}">
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
|
||||
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
|
||||
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
|
||||
</view>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
|
||||
<view class="absolute left-0 right-0 box-middle color-ccc">
|
||||
<i class="iconfont icon-paizhao font-42"></i>
|
||||
<view class="mt10 font-22">上传个微截图</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt30">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="radioPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="checkPicker" data-i="{{i}}" data-j="{{j}}">
|
||||
{{option.name}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="mt60 pl60 pr60">
|
||||
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCustomerData">确认编辑</button>
|
||||
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCustomerData">
|
||||
确认
|
||||
</button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
@@ -18,10 +18,30 @@ Page({
|
||||
if_driver:'',//是否试驾
|
||||
level:'',//客户顶级
|
||||
s_id:'',//车型id
|
||||
v_id:'',//车型级别id
|
||||
v_id:'',//车辆版本id
|
||||
cfrom:'',//客户来源
|
||||
o_type:'',//排序类型
|
||||
ismy:'',//只显示自己订单 1是
|
||||
visit:'',//只显示待回访客户(1是)
|
||||
a_id:'',//活动ID
|
||||
level:'',//客户级别
|
||||
status:'',//客户状态
|
||||
status_tp:'',
|
||||
tab:[],//回访待跟进tab
|
||||
visit_tab_id:'',//回访待跟进tabid
|
||||
|
||||
isShowTimePicker:false,
|
||||
weekList:['日','一','二','三','四','五','六'],
|
||||
dateList:[],
|
||||
nextIndex:-1,//计划回访时间
|
||||
|
||||
distTabId:1,
|
||||
distBizIndex:-1,
|
||||
distBiz_id:'',
|
||||
bizArray: [],
|
||||
bizobj: [],
|
||||
|
||||
isShowCall:false,//是否显示拨打电话确认弹框
|
||||
phoneNumber:'',//拨打的电话号码
|
||||
},
|
||||
onLoad(options) {
|
||||
for (let key in options) {
|
||||
@@ -29,7 +49,14 @@ Page({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
this.getAppCustomersList()
|
||||
|
||||
//顶部tab
|
||||
this.getAppCustomersVisit_tabs()
|
||||
|
||||
//销售顾问
|
||||
this.getAppUserAdmins()
|
||||
|
||||
this.getTimePicker()
|
||||
|
||||
wx.setNavigationBarTitle({
|
||||
title: this.data.title||'客户'
|
||||
@@ -40,6 +67,26 @@ Page({
|
||||
|
||||
},
|
||||
|
||||
//回访待跟进tab
|
||||
getAppCustomersVisit_tabs() {
|
||||
let params = {};
|
||||
if(this.data.status != ''){
|
||||
params['status'] = this.data.status;
|
||||
}
|
||||
_.apiQuery.getAppCustomersVisit_tabs(params).then(res => {
|
||||
if(res.data.list.length>0){
|
||||
this.setData({
|
||||
tab:res.data.list,
|
||||
visit_tab_id:res.data.list[0].id,
|
||||
})
|
||||
}
|
||||
|
||||
this.getAppCustomersList()
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
});
|
||||
},
|
||||
|
||||
//获取客户列表
|
||||
getAppCustomersList() {
|
||||
this.setData({
|
||||
@@ -49,8 +96,8 @@ Page({
|
||||
let params = {};
|
||||
params['page'] = this.data.pageNo;
|
||||
params['size'] = 10;
|
||||
if(this.data.ismy != ''){
|
||||
params['ismy'] = this.data.ismy;
|
||||
if(this.data.visit != ''){
|
||||
params['visit'] = this.data.visit;
|
||||
}
|
||||
if(this.data.istop != ''){
|
||||
params['istop'] = this.data.istop;
|
||||
@@ -85,6 +132,21 @@ Page({
|
||||
if(this.data.o_type != ''){
|
||||
params['o_type'] = this.data.o_type;
|
||||
}
|
||||
if(this.data.a_id != ''){
|
||||
params['a_id'] = this.data.a_id;
|
||||
}
|
||||
if(this.data.level != ''){
|
||||
params['level'] = this.data.level;
|
||||
}
|
||||
if(this.data.status != ''){
|
||||
params['status'] = this.data.status;
|
||||
}
|
||||
if(this.data.status_tp != ''){
|
||||
params['status_tp'] = this.data.status_tp;
|
||||
}
|
||||
if(this.data.visit_tab_id != ''){
|
||||
params['visit_tab_id'] = this.data.visit_tab_id;
|
||||
}
|
||||
_.apiQuery.getAppCustomersList(params).then(res => {
|
||||
this.setData({
|
||||
total: res.data.total,
|
||||
@@ -124,8 +186,9 @@ Page({
|
||||
params['id'] = e.currentTarget.dataset.id;
|
||||
params['type'] = 0;
|
||||
_.apiQuery.getAppXz(params).then(res=>{
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: res.data.mobile,
|
||||
this.setData({
|
||||
isShowCall:true,
|
||||
phoneNumber:res.data.mobile,
|
||||
})
|
||||
})
|
||||
},
|
||||
@@ -190,6 +253,296 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//获取销售顾问
|
||||
getAppUserAdmins(){
|
||||
let params = {};
|
||||
params['page'] = 1;
|
||||
params['size'] = 1000;
|
||||
_.apiQuery.getAppUserAdmins(params).then(res => {
|
||||
let staffArray = []
|
||||
res.data.list.forEach(item => {
|
||||
staffArray.push(item.uname)
|
||||
})
|
||||
let bizArray = []
|
||||
res.data.bizs.forEach(item => {
|
||||
bizArray.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
staffArray:staffArray,
|
||||
staffobj: res.data.list,
|
||||
distributetabs:res.data.tabs,
|
||||
bizArray:bizArray,
|
||||
bizobj: res.data.bizs,
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//销售弹窗显示隐藏
|
||||
optEmployees(e){
|
||||
if(e.currentTarget.dataset.cid){
|
||||
this.setData({
|
||||
isShowEmployees:true,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
cid:[e.currentTarget.dataset.cid],
|
||||
optLevel:e.currentTarget.dataset.level,
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
isShowEmployees:!this.data.isShowEmployees,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
cid:[],
|
||||
optLevel:'',
|
||||
nextIndex:-1,
|
||||
distTabId:1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//选择店员
|
||||
changeEmployee(e) {
|
||||
let employee_id = ''
|
||||
if(e.detail.value >= 0){
|
||||
employee_id = this.data.staffobj[e.detail.value].id
|
||||
}
|
||||
this.setData({
|
||||
employee_id,
|
||||
employeeIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//分配客户
|
||||
putAppCustomersAdmins(){
|
||||
let that = this
|
||||
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择店员',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择计划回访时间',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择门店',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
let params = {};
|
||||
params['ids'] = that.data.cid;
|
||||
if(that.data.distTabId==1){
|
||||
params['admin_id'] = that.data.employee_id;
|
||||
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
|
||||
}
|
||||
if(that.data.distTabId==2){
|
||||
params['biz_id'] = that.data.distBiz_id;
|
||||
}
|
||||
_.apiQuery.putAppCustomersAdmins(params).then(res => {
|
||||
|
||||
wx.showToast({
|
||||
title: '分配成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.setData({
|
||||
isShowEmployees:false,
|
||||
submitFlag:false,
|
||||
nextIndex:-1,
|
||||
})
|
||||
that.onPullDownRefresh()
|
||||
|
||||
}).catch(res=>{
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
//候取当前月日历
|
||||
getTimePicker(){
|
||||
let date = new Date();
|
||||
let cYear = date.getFullYear(); //年份
|
||||
let cMonth = date.getMonth()+1; //当前月份
|
||||
let cDay = date.getDate();//当前日期
|
||||
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
|
||||
let days = new Date(cYear,cMonth,-1)
|
||||
let cn = days.getDate()+1 //当月天数
|
||||
let rn = ''//上个月天数
|
||||
if (cMonth === 1) {
|
||||
rn = 31
|
||||
} else {
|
||||
rn = new Date(cYear,cMonth-1,-1).getDate()+1
|
||||
}
|
||||
|
||||
let dateList = []
|
||||
for(let i=0;i<fweek;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 1?cYear-1:cYear,
|
||||
month:cMonth == 1?12:cMonth-1,
|
||||
day:rn-i,
|
||||
})
|
||||
}
|
||||
for(let i=1;i<=cn;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cYear,
|
||||
month:cMonth,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
|
||||
if((cn-cDay)>29){//相差15天以上不用特意补下个月
|
||||
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
|
||||
let sbu = 6 - lweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}else{
|
||||
let zbu = 30 - (cn-cDay) //至少要补多少天
|
||||
let bweek = ''//至少要补的最后一天星期几
|
||||
if(cMonth==12){
|
||||
bweek = new Date(cYear+1,1,zbu).getDay()
|
||||
}else{
|
||||
bweek = new Date(cYear,cMonth,zbu).getDay()
|
||||
}
|
||||
let sbu = zbu + 6 - bweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.setData({
|
||||
cYear,
|
||||
cMonth,
|
||||
cDay,
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//显示隐藏时间选择器
|
||||
optShowTimePicker(){
|
||||
this.setData({
|
||||
isShowTimePicker:!this.data.isShowTimePicker,
|
||||
})
|
||||
|
||||
let kd = 15 //可操作天数
|
||||
if(this.data.optLevel=='H'){
|
||||
kd = 3
|
||||
}else if(this.data.optLevel=='A'){
|
||||
kd = 7
|
||||
}else if(this.data.optLevel=='B'){
|
||||
kd = 15
|
||||
}else if(this.data.optLevel=='C'){
|
||||
kd = 30
|
||||
}
|
||||
let cindex = ''
|
||||
let dateList = this.data.dateList
|
||||
dateList.forEach((item,index) => {
|
||||
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
|
||||
cindex = index
|
||||
}
|
||||
})
|
||||
dateList.forEach((item,index) => {
|
||||
item.isopt = false
|
||||
if(cindex<=index&&index<cindex+kd+1){
|
||||
item.isopt = true
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//选择计划回访时间
|
||||
optday(e){
|
||||
if(this.data.nextIndex != e.currentTarget.dataset.index){
|
||||
this.setData({
|
||||
nextIndex:e.currentTarget.dataset.index,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//切换tab
|
||||
changeTab(e){
|
||||
this.setData({
|
||||
list: [],
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
visit_tab_id: e.currentTarget.dataset.id,
|
||||
})
|
||||
this.getAppCustomersList()
|
||||
},
|
||||
|
||||
//切换分配本地,其他门店
|
||||
changeDistTab(e){
|
||||
this.setData({
|
||||
distTabId:e.currentTarget.dataset.id,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
nextIndex:-1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
},
|
||||
|
||||
//分配选择门店
|
||||
changeDistBiz(e) {
|
||||
let distBiz_id = ''
|
||||
if(e.detail.value >= 0){
|
||||
distBiz_id = this.data.bizobj[e.detail.value].id
|
||||
}
|
||||
this.setData({
|
||||
distBiz_id,
|
||||
distBizIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//隐藏电话弹框
|
||||
hideCall(){
|
||||
this.setData({
|
||||
isShowCall:false,
|
||||
})
|
||||
},
|
||||
|
||||
//拨打电话
|
||||
makePhoneCall(){
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: this.data.phoneNumber,
|
||||
})
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
|
||||
@@ -1,16 +1,43 @@
|
||||
<view class="container">
|
||||
|
||||
<view wx:if="{{tab.length>0}}">
|
||||
<view style="padding-top:110rpx"></view>
|
||||
<view class="fixed top-0 left-0 right-0 bg-fff pl30 pr30 z-index-1">
|
||||
<view class="fn-flex mt5 pl20 pr20 font-32 color-666 text-center" wx:if="{{tab.length<5}}">
|
||||
<block wx:for='{{tab}}' wx:key='list'>
|
||||
<view class="fn-flex-item pl20 pr20 tabmenu2 {{visit_tab_id == item.id?'active color-36afa2':''}}" data-id="{{item.id}}" bindtap="changeTab">
|
||||
<view class="relative">{{item.name}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<scroll-view class="mt5 font-32 color-666 text-center space-nowrap" scroll-x="true" wx:else>
|
||||
<block wx:for='{{tab}}' wx:key='list'>
|
||||
<view class="pl20 pr20 tabmenu2 {{visit_tab_id == item.id?'active color-36afa2':''}}" data-id="{{item.id}}" bindtap="changeTab" >
|
||||
<view class="relative">{{item.name}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mt10 pl30 pr30">
|
||||
|
||||
<block wx:for='{{list}}' wx:key='index'>
|
||||
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
|
||||
<view wx:if="{{item.complete_mobile}}" class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
|
||||
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff">
|
||||
<text class="pl10 pr10" wx:if="{{item.tip}}">{{item.tip}}</text>
|
||||
<text class="pl10 pr10 {{item.defeat?'bls-1-eb':''}}" wx:if="{{item.defeat}}">{{item.defeat}}</text>
|
||||
<text class="pl10 pr10 {{item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
|
||||
</view>
|
||||
<view class="relative pr180">
|
||||
<view class="font-32">
|
||||
<text>{{item.name}}</text>
|
||||
<text>({{item.mobile}})</text>
|
||||
<text class="iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
|
||||
<text class="text-middle">{{item.name}}</text>
|
||||
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
|
||||
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{item.is_weChat}}"></text>
|
||||
<text class="text-middle iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
|
||||
</view>
|
||||
<view class="text-nowrap">
|
||||
<text class="mr15 font-22 color-666">编号 {{item.id}}</text>
|
||||
<block wx:for="{{item.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
|
||||
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
|
||||
</block>
|
||||
@@ -20,7 +47,7 @@
|
||||
</view>
|
||||
<view class="absolute right-0 box-middle">
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
|
||||
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
|
||||
</view>
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{item.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
|
||||
@@ -31,10 +58,40 @@
|
||||
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28">
|
||||
<view class="fn-fl color-333">{{key}}</view>
|
||||
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
<block wx:if="{{key=='销售顾问'}}">
|
||||
<view class="fn-fr wp60 text-nowrap text-right">
|
||||
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
|
||||
<text class="text-middle color-f9394d" wx:else>待分配</text>
|
||||
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
|
||||
</view>
|
||||
</block>
|
||||
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view wx:elif="{{item.nickname}}" class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
|
||||
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff">
|
||||
<text class="pl10 pr10" wx:if="{{item.tip}}">{{item.tip}}</text>
|
||||
<text class="pl10 pr10 {{item.defeat?'bls-1-eb':''}}" wx:if="{{item.defeat}}">{{item.defeat}}</text>
|
||||
<text class="pl10 pr10 {{item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
|
||||
</view>
|
||||
<view class="text-nowrap">
|
||||
<image class='img-50x50 bds-1-eb ulib-r750 text-middle' lazy-load="{{true}}" mode="scaleToFill" src="{{item.avatar}}"></image>
|
||||
<text class="pl10 text-middle font-26">{{item.nickname}}</text>
|
||||
</view>
|
||||
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28">
|
||||
<view class="fn-fl color-333">{{key}}</view>
|
||||
<block wx:if="{{key=='销售顾问'}}">
|
||||
<view class="fn-fr wp60 text-nowrap text-right">
|
||||
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
|
||||
<text class="text-middle color-f9394d" wx:else>待分配</text>
|
||||
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
|
||||
</view>
|
||||
</block>
|
||||
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
</view>
|
||||
</block>
|
||||
<lcb-listmore isLoading='{{loading}}' isEnd='{{end}}' isNoData='{{noData}}'></lcb-listmore>
|
||||
@@ -42,6 +99,7 @@
|
||||
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
|
||||
<lcb-msg isShow="{{isShowMessage}}">
|
||||
<view slot="content">
|
||||
@@ -53,4 +111,99 @@
|
||||
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<lcb-msg isShow="{{isShowEmployees}}">
|
||||
<view slot="content">
|
||||
<view class="inner30">
|
||||
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
|
||||
<block wx:for="{{distributetabs}}" wx:key="index">
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<block wx:if="{{distTabId == 1}}">
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">销售顾问</view>
|
||||
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{staffArray}}">
|
||||
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{staffArray[employeeIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">计划回访时间</view>
|
||||
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
|
||||
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
|
||||
<view class="fn-fl">门店名称</view>
|
||||
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
|
||||
<view class="text-nowrap">
|
||||
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{bizArray[distBizIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fn-flex ml10 mr10 pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<page-container
|
||||
show="{{isShowTimePicker}}"
|
||||
round="{{true}}"
|
||||
overlay="true"
|
||||
duration="300"
|
||||
z-index="10000"
|
||||
position="bottom"
|
||||
close-on-slide-down="{{false}}"
|
||||
bindenter="onEnter"
|
||||
custom-style="false"
|
||||
overlay-style="false"
|
||||
>
|
||||
<view class="">
|
||||
<view class="relative pt30 pb30 text-center font-30">
|
||||
<view class="color-666">计划回访时间</view>
|
||||
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
|
||||
</view>
|
||||
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
|
||||
<block wx:for="{{weekList}}" wx:key="index">
|
||||
<view class="fn-flex-item">{{item}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="pb40 relative">
|
||||
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
|
||||
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
|
||||
<block wx:for="{{dateList}}" wx:key="index">
|
||||
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</page-container>
|
||||
|
||||
<!-- 拨打电话 -->
|
||||
<lcb-msg isShow="{{isShowCall}}">
|
||||
<view slot="content">
|
||||
<view class="pt50 pb40">
|
||||
<view class="font-36 text-center">号码绑定成功</view>
|
||||
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} ?</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
+620
-71
@@ -11,31 +11,34 @@ Page({
|
||||
load: true,
|
||||
loading: false,
|
||||
flag:1,
|
||||
cus_id:'',//客户编号
|
||||
name:'',//名字
|
||||
mobile:'',//手机号
|
||||
s_time:'',//开始时间
|
||||
e_time:'',//结束时间
|
||||
if_driver:'',//是否试驾
|
||||
level:'',//客户顶级
|
||||
brand_id:'',//品牌
|
||||
s_id:'',//车型id
|
||||
v_id:'',//车型级别id
|
||||
// brand_id:'',//品牌
|
||||
// s_id:'',//车型id
|
||||
// v_id:'',//车辆版本id
|
||||
cfrom:'',//客户来源
|
||||
o_type:'',//排序类型
|
||||
isShowfilter:false,//是否显示筛查
|
||||
timeSlotIndex:-1,//常用时间索引
|
||||
s_visit_time:'',//跟进时间段开始
|
||||
e_visit_time:'',//跟进时间段结束
|
||||
timeSlot:[//常用时间数组
|
||||
{
|
||||
title:'今天',
|
||||
},
|
||||
{
|
||||
title:'昨天',
|
||||
title:'明天',
|
||||
},
|
||||
{
|
||||
title:'近七天',
|
||||
title:'未来三天',
|
||||
},
|
||||
{
|
||||
title:'近三十天',
|
||||
title:'未来七天',
|
||||
},
|
||||
],
|
||||
testDriveIndex:-1,//是否试驾索引
|
||||
@@ -54,12 +57,45 @@ Page({
|
||||
sortListIndex:0,//排序索引
|
||||
levelIndex:-1,//意向等级索引
|
||||
brandIndex:-1,//车辆品牌索引
|
||||
modelIndex:-1,//车型车系索引
|
||||
modelIndex:-1,//车系车型索引
|
||||
cfromIndex:-1,//客户来源索引
|
||||
isShowMessage:false,//是否显示短信弹窗
|
||||
content:'',//短信内容
|
||||
isRefresh:false,//判断返回是否需要刷新
|
||||
isShowMobile: false,
|
||||
staffArray: [],
|
||||
staffobj: [],
|
||||
staffIndex:-1,
|
||||
userInfo:'',
|
||||
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
|
||||
cid:[],//分配客户ID
|
||||
employee_id:'',//分配销售ID
|
||||
employeeIndex:-1,//分配销售索引
|
||||
|
||||
isShowTimePicker:false,
|
||||
weekList:['日','一','二','三','四','五','六'],
|
||||
dateList:[],
|
||||
nextIndex:-1,//计划回访时间
|
||||
|
||||
distTabId:1,
|
||||
distBizIndex:-1,
|
||||
distBiz_id:'',
|
||||
bizArray: [],
|
||||
bizobj: [],
|
||||
tag_ids:'',
|
||||
|
||||
cityIndex:-1,
|
||||
city_id:'',
|
||||
countyIndex:-1,
|
||||
county_id:'',
|
||||
|
||||
isShowCall:false,//是否显示拨打电话确认弹框
|
||||
phoneNumber:'',//拨打的电话号码
|
||||
},
|
||||
onLoad(options) {
|
||||
for (let key in options) {
|
||||
@@ -67,12 +103,33 @@ Page({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
this.setData({
|
||||
userInfo:app.getStorageByKey("userInfo"),
|
||||
})
|
||||
|
||||
//客户-tab
|
||||
this.getAppCustomersTabs()
|
||||
//获取列表筛选条件
|
||||
this.getAppCustomersFilter()
|
||||
this.getAppSeriesBrands()
|
||||
//获取车型品牌
|
||||
//this.getAppSeriesBrands()
|
||||
//销售顾问
|
||||
this.getAppUserAdmins()
|
||||
//客户来源
|
||||
this.getAppCustomersOffline_sources()
|
||||
|
||||
this.getTimePicker()
|
||||
|
||||
this.getAppCustomersTag()
|
||||
|
||||
//获取城市列表
|
||||
this.getAppCityArea_city()
|
||||
|
||||
},
|
||||
|
||||
onShow(){
|
||||
//获取常用时间段
|
||||
this.getDateLater()
|
||||
},
|
||||
|
||||
@@ -90,6 +147,30 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取销售顾问
|
||||
getAppUserAdmins(){
|
||||
let params = {};
|
||||
params['page'] = 1;
|
||||
params['size'] = 1000;
|
||||
_.apiQuery.getAppUserAdmins(params).then(res => {
|
||||
let staffArray = []
|
||||
res.data.list.forEach(item => {
|
||||
staffArray.push(item.uname)
|
||||
})
|
||||
let bizArray = []
|
||||
res.data.bizs.forEach(item => {
|
||||
bizArray.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
staffArray:staffArray,
|
||||
staffobj: res.data.list,
|
||||
distributetabs:res.data.tabs,
|
||||
bizArray:bizArray,
|
||||
bizobj: res.data.bizs,
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//切换tab
|
||||
changeTab(e){
|
||||
this.setData({
|
||||
@@ -130,7 +211,7 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//获取车型车系
|
||||
//获取车系车型
|
||||
getAppSeries(){
|
||||
let params = {};
|
||||
params['brand_id'] = this.data.brand_id;
|
||||
@@ -148,26 +229,46 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
//选择人员
|
||||
changeStaff(e) {
|
||||
this.setData({
|
||||
staffIndex: e.detail.value
|
||||
})
|
||||
},
|
||||
|
||||
//获取客户列表
|
||||
getAppCustomersList() {
|
||||
this.setData({
|
||||
load: false,
|
||||
loading: true,
|
||||
})
|
||||
|
||||
let admin_ids = ''
|
||||
this.data.staffobj.forEach(item => {
|
||||
if(item.checked){
|
||||
if(admin_ids==''){
|
||||
admin_ids=item.id
|
||||
}else{
|
||||
admin_ids=admin_ids+','+item.id
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['page'] = this.data.pageNo;
|
||||
params['size'] = 10;
|
||||
params['size'] = 3;
|
||||
params['status'] = this.data.key;
|
||||
if(this.data.cus_id != ''){
|
||||
params['cus_id'] = this.data.cus_id;
|
||||
}
|
||||
if(this.data.name != ''){
|
||||
params['name'] = this.data.name;
|
||||
}
|
||||
if(this.data.mobile != ''){
|
||||
params['mobile'] = this.data.mobile;
|
||||
}
|
||||
if(this.data.s_time != ''){
|
||||
if(this.data.s_time != ''&&this.data.e_time != ''){
|
||||
params['s_time'] = this.data.s_time;
|
||||
}
|
||||
if(this.data.e_time != ''){
|
||||
params['e_time'] = this.data.e_time;
|
||||
}
|
||||
if(this.data.if_driver != ''){
|
||||
@@ -176,21 +277,46 @@ Page({
|
||||
if(this.data.level != ''){
|
||||
params['level'] = this.data.level;
|
||||
}
|
||||
if(this.data.brand_id != ''){
|
||||
params['brand_id'] = this.data.brand_id;
|
||||
}
|
||||
if(this.data.s_id != ''){
|
||||
params['s_id'] = this.data.s_id;
|
||||
}
|
||||
if(this.data.v_id != ''){
|
||||
params['v_id'] = this.data.v_id;
|
||||
}
|
||||
// if(this.data.brand_id != ''){
|
||||
// params['brand_id'] = this.data.brand_id;
|
||||
// }
|
||||
// if(this.data.s_id != ''){
|
||||
// params['s_id'] = this.data.s_id;
|
||||
// }
|
||||
// if(this.data.v_id != ''){
|
||||
// params['v_id'] = this.data.v_id;
|
||||
// }
|
||||
if(this.data.cfrom != ''){
|
||||
params['cfrom'] = this.data.cfrom;
|
||||
}
|
||||
if(this.data.o_type != ''){
|
||||
params['o_type'] = this.data.o_type;
|
||||
}
|
||||
if(this.data.of_id != ''){
|
||||
params['of_id'] = this.data.of_id;
|
||||
}
|
||||
if(this.data.of2_id != ''){
|
||||
params['of2_id'] = this.data.of2_id;
|
||||
}
|
||||
if(admin_ids!=''){
|
||||
params['admin_ids'] = admin_ids;
|
||||
}
|
||||
if(this.data.tag_ids!=''){
|
||||
params['tag_ids'] = this.data.tag_ids;
|
||||
}
|
||||
// if(this.data.staffIndex>-1){
|
||||
// params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
|
||||
// }
|
||||
if(this.data.city_id!=''){
|
||||
params['city_id'] = this.data.city_id;
|
||||
}
|
||||
if(this.data.county_id!=''){
|
||||
params['county_id'] = this.data.county_id;
|
||||
}
|
||||
if(this.data.s_visit_time != ''&&this.data.e_visit_time != ''){
|
||||
params['s_visit_time'] = this.data.s_visit_time;
|
||||
params['e_visit_time'] = this.data.e_visit_time;
|
||||
}
|
||||
_.apiQuery.getAppCustomersList(params).then(res => {
|
||||
this.setData({
|
||||
flag: this.data.flag - 1
|
||||
@@ -229,28 +355,38 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
//候取常用时间段
|
||||
//获取常用时间段
|
||||
getDateLater(){
|
||||
popularData.getDateLater(0,0).then(res => {
|
||||
this.setData({
|
||||
today:res,
|
||||
})
|
||||
})
|
||||
popularData.getDateLater(1,0).then(res => {
|
||||
popularData.getDateLater(-1,0).then(res => {
|
||||
this.setData({
|
||||
tomorrow:res,
|
||||
})
|
||||
})
|
||||
popularData.getDateLater(0,6).then(res => {
|
||||
popularData.getDateLater(-3,2).then(res => {
|
||||
this.setData({
|
||||
last7:res,
|
||||
next3:res,
|
||||
})
|
||||
})
|
||||
popularData.getDateLater(0,29).then(res => {
|
||||
popularData.getDateLater(-7,6).then(res => {
|
||||
this.setData({
|
||||
last30:res,
|
||||
next7:res,
|
||||
})
|
||||
})
|
||||
// popularData.getDateLater(0,6).then(res => {
|
||||
// this.setData({
|
||||
// last7:res,
|
||||
// })
|
||||
// })
|
||||
// popularData.getDateLater(0,29).then(res => {
|
||||
// this.setData({
|
||||
// last30:res,
|
||||
// })
|
||||
// })
|
||||
},
|
||||
|
||||
//拨打客户电话xz
|
||||
@@ -259,8 +395,9 @@ Page({
|
||||
params['id'] = e.currentTarget.dataset.id;
|
||||
params['type'] = 0;
|
||||
_.apiQuery.getAppXz(params).then(res=>{
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: res.data.mobile,
|
||||
this.setData({
|
||||
isShowCall:true,
|
||||
phoneNumber:res.data.mobile,
|
||||
})
|
||||
})
|
||||
},
|
||||
@@ -301,7 +438,6 @@ Page({
|
||||
this.setData({
|
||||
s_time: e.detail.value,
|
||||
})
|
||||
this.matchDate()
|
||||
},
|
||||
|
||||
//建卡时间
|
||||
@@ -309,34 +445,6 @@ Page({
|
||||
this.setData({
|
||||
e_time: e.detail.value,
|
||||
})
|
||||
this.matchDate()
|
||||
},
|
||||
|
||||
//匹配选择时间是否等于常用时间
|
||||
matchDate(){
|
||||
this.setData({
|
||||
timeSlotIndex:-1,
|
||||
})
|
||||
if(this.data.s_time == this.data.today[0] && this.data.e_time == this.data.today[1] ){
|
||||
this.setData({
|
||||
timeSlotIndex:0,
|
||||
})
|
||||
}
|
||||
if(this.data.s_time == this.data.tomorrow[0] && this.data.e_time == this.data.tomorrow[1] ){
|
||||
this.setData({
|
||||
timeSlotIndex:1,
|
||||
})
|
||||
}
|
||||
if(this.data.s_time == this.data.last7[0] && this.data.e_time == this.data.last7[1] ){
|
||||
this.setData({
|
||||
timeSlotIndex:2,
|
||||
})
|
||||
}
|
||||
if(this.data.s_time == this.data.last30[0] && this.data.e_time == this.data.last30[1] ){
|
||||
this.setData({
|
||||
timeSlotIndex:3,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//单选
|
||||
@@ -348,26 +456,26 @@ Page({
|
||||
switch (e.currentTarget.dataset.index) {
|
||||
case 0:
|
||||
this.setData({
|
||||
s_time:this.data.today[0],
|
||||
e_time:this.data.today[1],
|
||||
s_visit_time:this.data.today[0],
|
||||
e_visit_time:this.data.today[1],
|
||||
})
|
||||
break;
|
||||
case 1:
|
||||
this.setData({
|
||||
s_time:this.data.tomorrow[0],
|
||||
e_time:this.data.tomorrow[1],
|
||||
s_visit_time:this.data.tomorrow[0],
|
||||
e_visit_time:this.data.tomorrow[1],
|
||||
})
|
||||
break;
|
||||
case 2:
|
||||
this.setData({
|
||||
s_time:this.data.last7[0],
|
||||
e_time:this.data.last7[1],
|
||||
s_visit_time:this.data.next3[0],
|
||||
e_visit_time:this.data.next3[1],
|
||||
})
|
||||
break;
|
||||
case 3:
|
||||
this.setData({
|
||||
s_time:this.data.last30[0],
|
||||
e_time:this.data.last30[1],
|
||||
s_visit_time:this.data.next7[0],
|
||||
e_visit_time:this.data.next7[1],
|
||||
})
|
||||
break;
|
||||
}
|
||||
@@ -406,7 +514,7 @@ Page({
|
||||
brand_id:this.data.brandList[e.detail.value].id,
|
||||
brandIndex:e.detail.value,
|
||||
s_id:'',//车系id
|
||||
modelIndex:-1,//车型车系索引
|
||||
modelIndex:-1,//车系车型索引
|
||||
})
|
||||
this.getAppSeries()
|
||||
}
|
||||
@@ -436,7 +544,7 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
//显示高级搜索
|
||||
//显示隐藏高级搜索
|
||||
optfilter(){
|
||||
this.setData({
|
||||
isShowfilter: !this.data.isShowfilter
|
||||
@@ -444,6 +552,13 @@ Page({
|
||||
this.resetFilter()
|
||||
},
|
||||
|
||||
//显示高级搜索
|
||||
showfilter(){
|
||||
this.setData({
|
||||
isShowfilter:true,
|
||||
})
|
||||
},
|
||||
|
||||
//确定高级搜索
|
||||
submitFilter() {
|
||||
this.setData({
|
||||
@@ -454,23 +569,43 @@ Page({
|
||||
|
||||
//重置高级搜索
|
||||
resetFilter() {
|
||||
let staffobj = this.data.staffobj
|
||||
staffobj.forEach(item => {
|
||||
item.checked = false
|
||||
})
|
||||
|
||||
this.setData({
|
||||
staffobj,
|
||||
cus_id:'',//编号
|
||||
name:'',//名字
|
||||
mobile:'',//手机号
|
||||
s_time:'',
|
||||
e_time:'',
|
||||
if_driver:'',
|
||||
level:'',
|
||||
brand_id:'',
|
||||
s_id:'',
|
||||
// brand_id:'',
|
||||
// s_id:'',
|
||||
cfrom:'',
|
||||
of_id:'',
|
||||
of2_id:'',
|
||||
of1Index:-1,
|
||||
of2Index:-1,
|
||||
timeSlotIndex:-1,
|
||||
s_visit_time:'',//跟进时间段开始
|
||||
e_visit_time:'',//跟进时间段结束
|
||||
testDriveIndex:-1,
|
||||
levelIndex:-1,
|
||||
brandIndex:-1,
|
||||
modelIndex:-1,
|
||||
cfromIndex:-1,
|
||||
staffIndex:-1,
|
||||
tag_ids:'',
|
||||
cityIndex:-1,
|
||||
city_id:'',
|
||||
countyIndex:-1,
|
||||
county_id:'',
|
||||
})
|
||||
this.getAppCustomersTag()
|
||||
},
|
||||
|
||||
//显示短信弹框
|
||||
@@ -533,6 +668,420 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
//客户来源
|
||||
getAppCustomersOffline_sources(){
|
||||
_.apiQuery.getAppCustomersOffline_sources().then(res => {
|
||||
let of1Arr = []
|
||||
res.data.sources.forEach(item => {
|
||||
of1Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of1Arr,
|
||||
sources:res.data.sources
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//客户来源
|
||||
changeOf1(e) {
|
||||
if(this.data.of1Index!=e.detail.value){
|
||||
let of2Arr = []
|
||||
this.data.sources[e.detail.value].list.forEach(item => {
|
||||
of2Arr.push(item.name)
|
||||
})
|
||||
this.setData({
|
||||
of2Arr,
|
||||
of2Index:-1,
|
||||
of_id:this.data.sources[e.detail.value].id,
|
||||
of1Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
changeOf2(e) {
|
||||
if(this.data.of2Index!=e.detail.value){
|
||||
this.setData({
|
||||
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
|
||||
of2Index:e.detail.value,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//销售弹窗显示隐藏
|
||||
optEmployees(e){
|
||||
if(e.currentTarget.dataset.cid){
|
||||
this.setData({
|
||||
isShowEmployees:true,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
cid:[e.currentTarget.dataset.cid],
|
||||
optLevel:e.currentTarget.dataset.level,
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
isShowEmployees:!this.data.isShowEmployees,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
cid:[],
|
||||
optLevel:'',
|
||||
nextIndex:-1,
|
||||
distTabId:1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//选择店员
|
||||
changeEmployee(e) {
|
||||
let employee_id = ''
|
||||
if(e.detail.value >= 0){
|
||||
employee_id = this.data.staffobj[e.detail.value].id
|
||||
}
|
||||
this.setData({
|
||||
employee_id,
|
||||
employeeIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//分配客户
|
||||
putAppCustomersAdmins(){
|
||||
let that = this
|
||||
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择店员',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择计划回访时间',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
|
||||
wx.showToast({
|
||||
title: '请选择门店',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
that.setData({
|
||||
submitFlag: true,
|
||||
})
|
||||
let params = {};
|
||||
params['ids'] = that.data.cid;
|
||||
if(that.data.distTabId==1){
|
||||
params['admin_id'] = that.data.employee_id;
|
||||
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
|
||||
}
|
||||
if(that.data.distTabId==2){
|
||||
params['biz_id'] = that.data.distBiz_id;
|
||||
}
|
||||
_.apiQuery.putAppCustomersAdmins(params).then(res => {
|
||||
|
||||
wx.showToast({
|
||||
title: '分配成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
that.setData({
|
||||
isShowEmployees:false,
|
||||
submitFlag:false,
|
||||
nextIndex:-1,
|
||||
})
|
||||
that.onPullDownRefresh()
|
||||
|
||||
}).catch(res=>{
|
||||
that.setData({
|
||||
submitFlag: false,
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
//候取当前月日历
|
||||
getTimePicker(){
|
||||
let date = new Date();
|
||||
let cYear = date.getFullYear(); //年份
|
||||
let cMonth = date.getMonth()+1; //当前月份
|
||||
let cDay = date.getDate();//当前日期
|
||||
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
|
||||
let days = new Date(cYear,cMonth,-1)
|
||||
let cn = days.getDate()+1 //当月天数
|
||||
let rn = ''//上个月天数
|
||||
if (cMonth === 1) {
|
||||
rn = 31
|
||||
} else {
|
||||
rn = new Date(cYear,cMonth-1,-1).getDate()+1
|
||||
}
|
||||
|
||||
let dateList = []
|
||||
for(let i=0;i<fweek;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 1?cYear-1:cYear,
|
||||
month:cMonth == 1?12:cMonth-1,
|
||||
day:rn-i,
|
||||
})
|
||||
}
|
||||
for(let i=1;i<=cn;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cYear,
|
||||
month:cMonth,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
|
||||
if((cn-cDay)>29){//相差15天以上不用特意补下个月
|
||||
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
|
||||
let sbu = 6 - lweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}else{
|
||||
let zbu = 30 - (cn-cDay) //至少要补多少天
|
||||
let bweek = ''//至少要补的最后一天星期几
|
||||
if(cMonth==12){
|
||||
bweek = new Date(cYear+1,1,zbu).getDay()
|
||||
}else{
|
||||
bweek = new Date(cYear,cMonth,zbu).getDay()
|
||||
}
|
||||
let sbu = zbu + 6 - bweek //最后一周补齐
|
||||
for(let i=1;i<=sbu;i++){
|
||||
dateList.push({
|
||||
isopt:false,
|
||||
checked:false,
|
||||
year:cMonth == 12?cYear+1:cYear,
|
||||
month:cMonth == 12?1:cMonth+1,
|
||||
day:i
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.setData({
|
||||
cYear,
|
||||
cMonth,
|
||||
cDay,
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//显示隐藏时间选择器
|
||||
optShowTimePicker(){
|
||||
this.setData({
|
||||
isShowTimePicker:!this.data.isShowTimePicker,
|
||||
})
|
||||
|
||||
let kd = 15 //可操作天数
|
||||
if(this.data.optLevel=='H'){
|
||||
kd = 3
|
||||
}else if(this.data.optLevel=='A'){
|
||||
kd = 7
|
||||
}else if(this.data.optLevel=='B'){
|
||||
kd = 15
|
||||
}else if(this.data.optLevel=='C'){
|
||||
kd = 30
|
||||
}
|
||||
let cindex = ''
|
||||
let dateList = this.data.dateList
|
||||
dateList.forEach((item,index) => {
|
||||
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
|
||||
cindex = index
|
||||
}
|
||||
})
|
||||
dateList.forEach((item,index) => {
|
||||
item.isopt = false
|
||||
if(cindex<=index&&index<cindex+kd+1){
|
||||
item.isopt = true
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
dateList,
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//选择计划回访时间
|
||||
optday(e){
|
||||
if(this.data.nextIndex != e.currentTarget.dataset.index){
|
||||
this.setData({
|
||||
nextIndex:e.currentTarget.dataset.index,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//切换分配本地,其他门店
|
||||
changeDistTab(e){
|
||||
this.setData({
|
||||
distTabId:e.currentTarget.dataset.id,
|
||||
employeeIndex:-1,
|
||||
employee_id:'',
|
||||
nextIndex:-1,
|
||||
distBiz_id:'',
|
||||
distBizIndex:-1,
|
||||
})
|
||||
},
|
||||
|
||||
//分配选择门店
|
||||
changeDistBiz(e) {
|
||||
let distBiz_id = ''
|
||||
if(e.detail.value >= 0){
|
||||
distBiz_id = this.data.bizobj[e.detail.value].id
|
||||
}
|
||||
this.setData({
|
||||
distBiz_id,
|
||||
distBizIndex:e.detail.value,
|
||||
})
|
||||
},
|
||||
|
||||
//多选
|
||||
checkPicker(e){
|
||||
this.setData({
|
||||
['staffobj['+e.currentTarget.dataset.index+'].checked']:!this.data.staffobj[e.currentTarget.dataset.index].checked,
|
||||
})
|
||||
},
|
||||
|
||||
//客户标签
|
||||
getAppCustomersTag(){
|
||||
_.apiQuery.getAppCustomersTag().then(res => {
|
||||
this.setData({
|
||||
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//单选
|
||||
tagRadioPicker(e){
|
||||
let taglList = this.data.taglList
|
||||
taglList[e.currentTarget.dataset.i].list.forEach(item => {
|
||||
item.checked=false
|
||||
})
|
||||
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
|
||||
this.setData({
|
||||
taglList,
|
||||
})
|
||||
this.tagforEach()
|
||||
},
|
||||
|
||||
//多选
|
||||
tagCheckPicker(e){
|
||||
this.setData({
|
||||
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
|
||||
})
|
||||
this.tagforEach()
|
||||
},
|
||||
|
||||
//tag遍历
|
||||
tagforEach(){
|
||||
let taglList = this.data.taglList
|
||||
let tag_ids = ''
|
||||
taglList.forEach(itemA => {
|
||||
itemA.list.forEach(itemB => {
|
||||
if(itemB.checked){
|
||||
itemA.have=true
|
||||
if(tag_ids==''){
|
||||
tag_ids=itemB.id
|
||||
}else{
|
||||
tag_ids=tag_ids+','+itemB.id
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
this.setData({
|
||||
tag_ids,
|
||||
taglList,
|
||||
})
|
||||
},
|
||||
|
||||
//获取城市
|
||||
getAppCityArea_city(){
|
||||
let params = {};
|
||||
params['type'] = 'city';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let cityArr = []
|
||||
let cityIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArr.push(item.name)
|
||||
// if(this.data.city_id == item.id){
|
||||
// cityIndex = index
|
||||
// }
|
||||
})
|
||||
this.setData({
|
||||
cityIndex,
|
||||
cityArr,
|
||||
city:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//获取行政区
|
||||
getAppCityArea_county(){
|
||||
let params = {};
|
||||
params['pid'] = this.data.city_id;
|
||||
params['type'] = 'county';
|
||||
_.apiQuery.getAppCityArea(params).then(res => {
|
||||
let countyArr = []
|
||||
let countyIndex = -1
|
||||
res.data.list.forEach((item,index) => {
|
||||
countyArr.push(item.name)
|
||||
if(this.data.county_id == item.id){
|
||||
countyIndex = index
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
countyIndex,
|
||||
countyArr,
|
||||
county:res.data.list
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
if(this.data.cityIndex!=e.detail.value){
|
||||
this.setData({
|
||||
cityIndex:e.detail.value,
|
||||
city_id:this.data.city[e.detail.value].id,
|
||||
})
|
||||
this.getAppCityArea_county()
|
||||
}
|
||||
},
|
||||
|
||||
//选择地区
|
||||
changeCounty(e) {
|
||||
if(this.data.countyIndex!=e.detail.value){
|
||||
this.setData({
|
||||
countyIndex:e.detail.value,
|
||||
county_id:this.data.county[e.detail.value].id,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//隐藏电话弹框
|
||||
hideCall(){
|
||||
this.setData({
|
||||
isShowCall:false,
|
||||
})
|
||||
},
|
||||
|
||||
//拨打电话
|
||||
makePhoneCall(){
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: this.data.phoneNumber,
|
||||
})
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
|
||||
+258
-39
@@ -23,28 +23,64 @@
|
||||
<view class="pl40 pb15 fn-clear">
|
||||
<view class="fn-fl">
|
||||
<text class="text-middle">共<text class="color-f9394d">{{total}}</text>条</text>
|
||||
<picker class="inline-block text-middle bg-f6 color-666 ml20 pt5 pb5 pl15 pr10 ulib-r750 font-22" bindchange="changeSortList" value="{{sortListIndex}}" range="{{sortList}}">
|
||||
<text class="ml20 text-middle font-22"> 排序:</text>
|
||||
<picker class="inline-block text-middle bg-f6 color-666 pt5 pb5 pl15 pr10 ulib-r750 font-22" bindchange="changeSortList" value="{{sortListIndex}}" range="{{sortList}}">
|
||||
<text>{{sortList[sortListIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="fn-fr pr180 relative">
|
||||
<text bindtap="optfilter" class="inner5 iconfont icon-gaojisousuo ml10"></text>
|
||||
<view bindtap="pushLink" data-url="/pages/customer/addCard/index" class="absolute right-0 box-middle pt10 pb10 pl10 pr30 space-nowrap bg-333 font-22 color-fff ulib-rl750"><i class="iconfont mr5 icon-jia"></i>客户建卡</view>
|
||||
<view class="fn-fr {{key<2?'pr180':'pr40'}} relative">
|
||||
<text bindtap="showfilter" class="inner5 iconfont icon-gaojisousuo ml10"></text>
|
||||
<view bindtap="pushLink" data-url="/pages/customer/addCard/index?status={{key}}" class="absolute right-0 box-middle pt10 pb10 pl10 pr30 space-nowrap bg-333 font-22 color-fff ulib-rl750" wx:if="{{key<2}}"><i class="iconfont mr5 icon-jia"></i>客户建卡</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pl20 pr20 fn-flex fn-flex-wrap">
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{cus_id}}">{{cus_id}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{name}}">{{name}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{mobile}}">{{mobile}}</view>
|
||||
<block wx:for="{{city}}" wx:key='index'>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.id==city_id}}">{{item.name}}</view>
|
||||
</block>
|
||||
<block wx:for="{{county}}" wx:key='index'>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.id==county_id}}">{{item.name}}</view>
|
||||
</block>
|
||||
<block wx:if="{{s_time&&e_time}}">
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22">{{s_time}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22">{{e_time}}</view>
|
||||
</block>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{timeSlotIndex>-1}}">{{timeSlot[timeSlotIndex].title}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{levelIndex>-1}}">{{filter.level[levelIndex]}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{of1Index>-1}}">{{of1Arr[of1Index]}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{of2Index>-1}}">{{of2Arr[of2Index]}}</view>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{staffIndex>-1}}">{{staffArray[staffIndex]}}</view>
|
||||
<block wx:for="{{staffobj}}" wx:key='index'>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.checked}}">{{item.uname}}</view>
|
||||
</block>
|
||||
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<block wx:if="{{list.have}}" wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{option.checked}}">{{option.name}}</view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="mt10 pl30 pr30">
|
||||
|
||||
<block wx:for='{{list}}' wx:key='index'>
|
||||
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
|
||||
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff" wx:if="{{item.defeat||item.orders_pay}}">
|
||||
<text class="pl10 pr10" wx:if="{{item.defeat}}">{{item.defeat}}</text>
|
||||
<text class="pl10 pr10 {{item.defeat&&item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
|
||||
</view>
|
||||
<view class="relative pr180">
|
||||
<view class="font-32">
|
||||
<text>{{item.name}}</text>
|
||||
<text>({{item.mobile}})</text>
|
||||
<text class="iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
|
||||
<text class="text-middle">{{item.name}}</text>
|
||||
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
|
||||
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{item.is_weChat}}"></text>
|
||||
<text class="text-middle iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
|
||||
</view>
|
||||
<view class="text-nowrap">
|
||||
<text class="mr15 font-22 color-666">编号 {{item.id}}</text>
|
||||
<block wx:for="{{item.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
|
||||
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
|
||||
</block>
|
||||
@@ -54,7 +90,7 @@
|
||||
</view>
|
||||
<view class="absolute right-0 box-middle">
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
|
||||
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
|
||||
</view>
|
||||
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{item.id}}">
|
||||
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
|
||||
@@ -65,7 +101,14 @@
|
||||
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
|
||||
<view class="mt25 fn-clear font-28">
|
||||
<view class="fn-fl color-333">{{key}}</view>
|
||||
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
<block wx:if="{{key=='销售顾问'}}">
|
||||
<view class="fn-fr wp60 text-nowrap text-right">
|
||||
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
|
||||
<text class="text-middle color-f9394d" wx:else>待分配</text>
|
||||
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
|
||||
</view>
|
||||
</block>
|
||||
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
@@ -75,7 +118,9 @@
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<!-- <lcb-footer></lcb-footer> -->
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
<lcb-shopTabBarNav currentIndex='1'></lcb-shopTabBarNav>
|
||||
|
||||
<lcb-msg isShow="{{isShowMessage}}">
|
||||
<view slot="content">
|
||||
@@ -90,23 +135,49 @@
|
||||
</lcb-msg>
|
||||
|
||||
<view class="search-sort {{!isShowfilter?'fn-hide':''}} {{!isShowfilter?'sortout':'sortin'}} bg-fff fixed top-0 bottom-0 z-index-2 ulib-rl20 overflowhidden">
|
||||
<scroll-view class="wp100" scroll-y="true" style="height:100%">
|
||||
<view class="inner30">
|
||||
<scroll-view class="wp100" scroll-y="true" style="height:90%">
|
||||
<view class="pt10 pb10 pl30 pr30">
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户编号</view>
|
||||
<view>
|
||||
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户编号" model:value="{{cus_id}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户姓名</view>
|
||||
<view>
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入客户姓名" bindinput='inputTx' data-key="name" name='name' value='{{name}}' />
|
||||
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入客户姓名" bindinput='inputTx' data-key="name" name='name' value='{{name}}' />
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">手机号码</view>
|
||||
<view>
|
||||
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
|
||||
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">所在城市</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
|
||||
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{cityArr[cityIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
|
||||
<view class="absolute left-0 box-middle">所在地区</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
|
||||
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{countyArr[countyIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">建卡开始时间</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker mode="date" value="{{s_time}}" bindchange="startDate">
|
||||
<text class="color-ccc" wx:if="{{s_time == ''}}">请选择</text>
|
||||
<text wx:else>{{s_time}}</text>
|
||||
@@ -116,7 +187,7 @@
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">建卡结束时间</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker mode="date" value="{{e_time}}" bindchange="endDate">
|
||||
<text class="color-ccc" wx:if="{{e_time == ''}}">请选择</text>
|
||||
<text wx:else>{{e_time}}</text>
|
||||
@@ -124,17 +195,17 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pt30 pb30 last-b-none">
|
||||
<view class="font-22">常用时间段</view>
|
||||
<view class="relative bbs-1-eb pt25 pb25 last-b-none">
|
||||
<view class="font-22">跟进时间</view>
|
||||
<view class="fn-clear">
|
||||
<block wx:for="{{timeSlot}}" wx:key='index'>
|
||||
<view class="inline-block radio-btn mt20 mr20 pt15 pb15 pl25 pr25 ulib-r10 font-28 {{timeSlotIndex == index?'bg-333 color-fff':'bg-f8'}}" bindtap="radioPicker" data-type="timeSlot" data-index="{{index}}">
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{timeSlotIndex == index?'bg-333 color-fff':'bg-f8'}}" bindtap="radioPicker" data-type="timeSlot" data-index="{{index}}">
|
||||
{{item.title}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pt30 pb30 last-b-none">
|
||||
<!-- <view class="relative bbs-1-eb pt25 pb25 last-b-none">
|
||||
<view class="font-22">是否试驾</view>
|
||||
<view class="fn-clear">
|
||||
<block wx:for="{{testDrive}}" wx:key='index'>
|
||||
@@ -143,10 +214,10 @@
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">意向等级</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{filter.level}}">
|
||||
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{filter.level[levelIndex]}}</text>
|
||||
@@ -154,9 +225,9 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
|
||||
<text class="color-ccc" wx:if="{{brandIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{brandArray[brandIndex]}}</text>
|
||||
@@ -165,28 +236,40 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
|
||||
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
|
||||
<text wx:else> {{modelArray[modelIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">客户来源</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<picker bindchange="changeCfrom" value="{{cfromIndex}}" range="{{filter.cfrom}}">
|
||||
<text class="color-ccc" wx:if="{{cfromIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{filter.cfrom[cfromIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view> -->
|
||||
<block wx:if="{{sources.length>0}}">
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28">
|
||||
<view class="absolute left-0 box-middle">客户来源</view>
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of1Arr[of1Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
|
||||
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
|
||||
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
|
||||
<text wx:else>{{of2Arr[of2Index]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
|
||||
<view class="absolute left-0 box-middle font-28 color-333">到店次数</view>
|
||||
<view class="pt30 pb30 text-right font-28 color-666">
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker mode="date" value="{{c_time}}" bindchange="bindStartDateChange">
|
||||
<text class="color-ccc" wx:if="{{c_time == ''}}">请选择</text>
|
||||
<text wx:else>{{c_time}}</text>
|
||||
@@ -194,10 +277,51 @@
|
||||
</picker>
|
||||
</view>
|
||||
</view> -->
|
||||
<!-- <view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{staffArray.length>0&&userInfo.group_id>1}}">
|
||||
<view class="absolute left-0 box-middle">销售顾问</view>
|
||||
<view class="pt25 pb25 text-right font-28 color-666">
|
||||
<picker bindchange="changeStaff" value="{{staffIndex}}" range="{{staffArray}}">
|
||||
<text class="color-ccc" wx:if="{{staffIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{staffArray[staffIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo"></i>
|
||||
</picker>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="relative bbs-1-eb pt25 pb25 last-b-none">
|
||||
<view class="font-22">销售顾问</view>
|
||||
<view class="fn-clear">
|
||||
<block wx:for="{{staffobj}}" wx:key='index'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{item.checked?'bg-333 color-fff':'bg-f8'}}" bindtap="checkPicker" data-index="{{index}}">
|
||||
{{item.uname}}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
|
||||
<view class="relative mt40">
|
||||
<view class="font-28">
|
||||
<text class="text-middle">{{list.name}}</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
|
||||
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-333 color-fff':'bg-f8 color-666'}}" bindtap="tagRadioPicker" data-i="{{i}}" data-j="{{j}}">{{option.name}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
|
||||
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
|
||||
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-333 color-fff':'bg-f8 color-666'}}" bindtap="tagCheckPicker" data-i="{{i}}" data-j="{{j}}">{{option.name}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
</view>
|
||||
<view class="pt50 pb100"></view>
|
||||
</scroll-view>
|
||||
<view class="absolute left-0 bottom-0 right-0 fn-flex pt20 pb20 pl60 pr60 bg-fff-op90 text-center">
|
||||
<view class="absolute left-0 bottom-0 right-0 fn-flex pt20 pb200 pl60 pr60 bg-fff-op90 text-center">
|
||||
<view class="fn-flex-item mr20 pt15 pb15 bds-2-36afa2 font-32 color-36afa2 ulib-r750" bindtap="resetFilter">重置</view>
|
||||
<view class="fn-flex-item ml20 pt15 pb15 bg-36afa2 font-32 color-fff ulib-r750" bindtap="submitFilter">确定</view>
|
||||
</view>
|
||||
@@ -213,4 +337,99 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<lcb-changeMobile isShow="{{isShowMobile}}"></lcb-changeMobile>
|
||||
<lcb-changeMobile isShow="{{isShowMobile}}"></lcb-changeMobile>
|
||||
|
||||
<lcb-msg isShow="{{isShowEmployees}}" isCustomTabBar="{{true}}">
|
||||
<view slot="content">
|
||||
<view class="inner30">
|
||||
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
|
||||
<block wx:for="{{distributetabs}}" wx:key="index">
|
||||
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<block wx:if="{{distTabId == 1}}">
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">销售顾问</view>
|
||||
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{staffArray}}">
|
||||
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{staffArray[employeeIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
|
||||
<view class="fn-fl">计划回访时间</view>
|
||||
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
|
||||
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
|
||||
<view class="fn-fl">门店名称</view>
|
||||
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
|
||||
<view class="text-nowrap">
|
||||
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
|
||||
<text wx:else>{{bizArray[distBizIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
<view class="fn-flex ml10 mr10 pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
|
||||
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
|
||||
<page-container
|
||||
show="{{isShowTimePicker}}"
|
||||
round="{{true}}"
|
||||
overlay="true"
|
||||
duration="300"
|
||||
z-index="10000"
|
||||
position="bottom"
|
||||
close-on-slide-down="{{false}}"
|
||||
bindenter="onEnter"
|
||||
custom-style="false"
|
||||
overlay-style="false"
|
||||
>
|
||||
<view class="">
|
||||
<view class="relative pt30 pb30 text-center font-30">
|
||||
<view class="color-666">计划回访时间</view>
|
||||
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
|
||||
</view>
|
||||
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
|
||||
<block wx:for="{{weekList}}" wx:key="index">
|
||||
<view class="fn-flex-item">{{item}}</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="pb180 relative">
|
||||
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
|
||||
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
|
||||
<block wx:for="{{dateList}}" wx:key="index">
|
||||
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</page-container>
|
||||
|
||||
<!-- 拨打电话 -->
|
||||
<lcb-msg isShow="{{isShowCall}}" isCustomTabBar="{{true}}">
|
||||
<view slot="content">
|
||||
<view class="pt50 pb40">
|
||||
<view class="font-36 text-center">号码绑定成功</view>
|
||||
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} ?</view>
|
||||
</view>
|
||||
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
|
||||
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
|
||||
取消
|
||||
</button>
|
||||
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
|
||||
确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</lcb-msg>
|
||||
@@ -8,7 +8,7 @@
|
||||
.opt-item{border:#ebebeb 1rpx solid;line-height:40rpx;}
|
||||
.opt-item.active{background-color:#36afa2;border:#36afa2 1rpx solid;}
|
||||
|
||||
.fixedopt{position:fixed;bottom:40rpx;right:40rpx;}
|
||||
.fixedopt{position:fixed;bottom:200rpx;right:40rpx;}
|
||||
.optpin{width:100rpx;height:100rpx;}
|
||||
|
||||
.search-sort{right:-650rpx;width:650rpx;}
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
import _ from '../../../commons/js/commons'
|
||||
import popularData from '../../../commons/js/lib/popularData';
|
||||
const app = getApp()
|
||||
Page({
|
||||
data: {
|
||||
key:'',//tab状态值
|
||||
list: [],//客户列表
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
isfirstonShow: true,
|
||||
},
|
||||
onLoad(options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
this.getAppCustomersDefeats()
|
||||
},
|
||||
|
||||
onShow(){
|
||||
if(this.data.isfirstonShow){
|
||||
this.setData({
|
||||
isfirstonShow:false,
|
||||
})
|
||||
}else{
|
||||
this.getAppCustomersDefeatsOnShow()
|
||||
}
|
||||
},
|
||||
|
||||
//获取客户列表
|
||||
getAppCustomersDefeats(){
|
||||
this.setData({
|
||||
load: false,
|
||||
loading: true,
|
||||
})
|
||||
let params = {};
|
||||
params['page'] = this.data.pageNo;
|
||||
params['size'] = 10;
|
||||
_.apiQuery.getAppCustomersDefeats(params).then(res => {
|
||||
this.setData({
|
||||
total: res.data.total,
|
||||
pageNo: this.data.pageNo + 1,
|
||||
list: this.data.list.concat(res.data.list),
|
||||
load: true,
|
||||
loading: false,
|
||||
})
|
||||
if (res.data.total == 0) {
|
||||
this.setData({
|
||||
noData: true
|
||||
})
|
||||
} else if (this.data.list.length == res.data.total) {
|
||||
this.setData({
|
||||
end: true
|
||||
})
|
||||
}
|
||||
wx.stopPullDownRefresh()
|
||||
});
|
||||
},
|
||||
|
||||
//获取客户列表
|
||||
getAppCustomersDefeatsOnShow(){
|
||||
let params = {};
|
||||
params['page'] = 1;
|
||||
params['size'] = (this.data.pageNo-1)*10;
|
||||
_.apiQuery.getAppCustomersDefeats(params).then(res => {
|
||||
this.setData({
|
||||
total: res.data.total,
|
||||
list:res.data.list,
|
||||
})
|
||||
if (res.data.total == 0) {
|
||||
this.setData({
|
||||
noData: true
|
||||
})
|
||||
} else if (this.data.list.length == res.data.total) {
|
||||
this.setData({
|
||||
end: true
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e){
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
list: [],
|
||||
pageNo: 1,
|
||||
noData: false,
|
||||
end: false,
|
||||
load: true,
|
||||
loading: false,
|
||||
})
|
||||
this.getAppCustomersDefeats()
|
||||
},
|
||||
|
||||
//页面上拉触底事件的处理函数
|
||||
onReachBottom(){
|
||||
if (this.data.noData || this.data.end||!this.data.load) return;
|
||||
this.getAppCustomersDefeats()
|
||||
},
|
||||
|
||||
})
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"navigationBarTitleText": "战败申请",
|
||||
"enablePullDownRefresh": true,
|
||||
"usingComponents": {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<view class="container">
|
||||
|
||||
<view class="mt20 pl30 pr30">
|
||||
<view class="mb20 font-28" wx:if="{{total>0}}">共<text class="pl5 pr5 color-f9394d">{{total}}</text>个</view>
|
||||
<block wx:for='{{list}}' wx:key='index'>
|
||||
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}&optDefeat=true">
|
||||
<view class="relative pr180">
|
||||
<view>
|
||||
<text class="font-32">{{item.name}}</text>
|
||||
<text class="font-28 color-666">({{item.mobile}})</text>
|
||||
</view>
|
||||
<view class="absolute right-0 box-middle font-24 color-666">查看详情<text class="iconfont icon-gengduo ml10"></text></view>
|
||||
</view>
|
||||
<view class="mt15 pt5 pb5 pl20 pr20 font-22 color-f9394d tip-radius" wx:if="{{item.reason}}">{{item.reason}}</view>
|
||||
</view>
|
||||
</block>
|
||||
<lcb-listmore isLoading='{{loading}}' isEnd='{{end}}' isNoData='{{noData}}'></lcb-listmore>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
<lcb-backChannel></lcb-backChannel>
|
||||
@@ -0,0 +1,4 @@
|
||||
.tip-radius{
|
||||
background-color:#fff5f6;
|
||||
border-radius:0 20rpx 20rpx 15rpx;
|
||||
}
|
||||
@@ -0,0 +1,754 @@
|
||||
import _ from '../../../commons/js/commons';
|
||||
import popularData from '../../../commons/js/lib/popularData';
|
||||
import * as echarts from '../../../ecCanvas/components/ec-canvas/echarts';
|
||||
const app = getApp()
|
||||
|
||||
let BarChartData;
|
||||
let Pie1ChartData;
|
||||
let Pie2ChartData;
|
||||
let Pie3ChartData;
|
||||
function BarChart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = BarChartData
|
||||
chart.setOption(option);
|
||||
chart.on('click',function(e){
|
||||
console.log(e)
|
||||
});
|
||||
return chart;
|
||||
}
|
||||
function Pie1Chart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = Pie1ChartData
|
||||
chart.setOption(option);
|
||||
chart.on('click',function(e){
|
||||
console.log(e)
|
||||
});
|
||||
return chart;
|
||||
}
|
||||
function Pie2Chart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = Pie2ChartData
|
||||
chart.setOption(option);
|
||||
chart.on('click',function(e){
|
||||
//_.eventBus.emit("pinpai",e.name)
|
||||
});
|
||||
return chart;
|
||||
}
|
||||
function Pie3Chart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = Pie3ChartData
|
||||
chart.setOption(option);
|
||||
chart.on('click',function(e){
|
||||
//_.eventBus.emit("pinpai",e.name)
|
||||
});
|
||||
return chart;
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
imgUrl: _.config.imgUrl,//静态图片路径
|
||||
showPie1Chart:false,//是否显示Pie1图表
|
||||
ecPie1:{},
|
||||
showPie2Chart:false,//是否显示Pie2图表
|
||||
ecPie2:{},
|
||||
showPie3Chart:false,//是否显示Pie3图表
|
||||
ecPie3:{},
|
||||
showBarChart:false,//是否显示Bar图表
|
||||
ecBar:{},
|
||||
Pie1title:'',
|
||||
Pie2title:'',
|
||||
Pie3title:'',
|
||||
Bartitle:'',
|
||||
},
|
||||
|
||||
onLoad: function (options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
this.getAppCity()
|
||||
|
||||
},
|
||||
|
||||
//获取系统配置城市
|
||||
getAppCity(){
|
||||
_.apiQuery.getAppCity().then(res => {
|
||||
this.setData({
|
||||
city_id:this.data.city_id?this.data.city_id:res.data.default,
|
||||
})
|
||||
let cityArray = []
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArray.push(item.name)
|
||||
if(item.city_id==this.data.city_id){
|
||||
this.setData({
|
||||
cityIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
cityArray:cityArray,
|
||||
cityList:res.data.list,
|
||||
})
|
||||
|
||||
this.getAppStatisticsStats_customer()
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
//选择日期
|
||||
changeDate(e){
|
||||
if(e.currentTarget.dataset.type=="s_date"){
|
||||
let begin = new Date(e.detail.value).getTime();
|
||||
let end = new Date(this.data.e_date).getTime();
|
||||
let day = 0
|
||||
if(end>=begin){
|
||||
day = (end - begin)/(24*60*60*1000);
|
||||
this.setData({
|
||||
s_date: e.detail.value,
|
||||
})
|
||||
}
|
||||
else{
|
||||
day = (begin - end)/(24*60*60*1000);
|
||||
let s_date = this.data.e_date
|
||||
let e_date = e.detail.value
|
||||
this.setData({
|
||||
s_date,
|
||||
e_date,
|
||||
})
|
||||
}
|
||||
if (day > 365) {
|
||||
wx.showToast({
|
||||
title: '请选择一年时间内',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.getAppStatisticsStats_customer()
|
||||
}
|
||||
}
|
||||
if(e.currentTarget.dataset.type=="e_date"){
|
||||
let begin = new Date(this.data.s_date).getTime();
|
||||
let end = new Date(e.detail.value).getTime();
|
||||
let day = 0
|
||||
if(end>=begin){
|
||||
day = (end - begin)/(24*60*60*1000);
|
||||
this.setData({
|
||||
e_date: e.detail.value,
|
||||
})
|
||||
}
|
||||
else{
|
||||
day = (begin - end)/(24*60*60*1000);
|
||||
let e_date = this.data.s_date
|
||||
let s_date = e.detail.value
|
||||
this.setData({
|
||||
s_date,
|
||||
e_date,
|
||||
})
|
||||
}
|
||||
if (day > 365) {
|
||||
wx.showToast({
|
||||
title: '请选择一年时间内',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.getAppStatisticsStats_customer()
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//订单数据
|
||||
getAppStatisticsStats_customer(){
|
||||
this.setData({
|
||||
showPie1Chart:false,
|
||||
showPie2Chart:false,
|
||||
showPie3Chart:false,
|
||||
showBarChart:false,
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['type'] = this.data.type;
|
||||
params['city_id'] = this.data.city_id;
|
||||
params['s_time'] = this.data.s_date;
|
||||
params['e_time'] = this.data.e_date;
|
||||
_.apiQuery.getAppStatisticsStats_customer(params).then(res => {
|
||||
|
||||
wx.setNavigationBarTitle({
|
||||
title: res.data.title
|
||||
})
|
||||
|
||||
this.setData({
|
||||
Pie1title:res.data.pie1?res.data.pie1.title:'',
|
||||
Pie2title:res.data.pie2?res.data.pie2.title:'',
|
||||
Pie3title:res.data.pie3?res.data.pie3.title:'',
|
||||
Bartitle:res.data.bar?res.data.bar.title:'',
|
||||
})
|
||||
|
||||
//Pie1ChartData = getPie1Option()
|
||||
if(res.data.pie1){
|
||||
if(res.data.pie1.series_data_1.length==0){
|
||||
this.setData({
|
||||
pie1noData:true,
|
||||
})
|
||||
}else{
|
||||
Pie1ChartData = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} ({d}%)'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'12%',
|
||||
selectedMode: 'single',
|
||||
radius: [0, '30%'],
|
||||
label: {
|
||||
position: 'inner',
|
||||
fontSize: 10
|
||||
},
|
||||
labelBar: {
|
||||
show: false
|
||||
},
|
||||
data: []
|
||||
},
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'12%',
|
||||
radius: ['45%', '65%'],
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: []
|
||||
},
|
||||
]
|
||||
};
|
||||
|
||||
Pie1ChartData.series[0].data = res.data.pie1.series_data_1
|
||||
Pie1ChartData.series[1].data = res.data.pie1.series_data_2
|
||||
this.setData({
|
||||
pie1noData:false,
|
||||
showPie1Chart:true,
|
||||
['ecPie1.onInit']:Pie1Chart,
|
||||
pie1Bottom:res.data.pie1.bottom,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//Pie2ChartData = getPie2Option()
|
||||
if(res.data.pie2){
|
||||
if(res.data.pie2.series_data_1.length==0){
|
||||
this.setData({
|
||||
pie2noData:true,
|
||||
})
|
||||
}else{
|
||||
Pie2ChartData = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} ({d}%)'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'12%',
|
||||
radius: '70%',
|
||||
// avoidLabelOverlap: false,
|
||||
// itemStyle: {
|
||||
// borderRadius: 10,
|
||||
// borderColor: '#fff',
|
||||
// borderWidth: 2
|
||||
// },
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: []
|
||||
}
|
||||
]
|
||||
};
|
||||
Pie2ChartData.series[0].data = res.data.pie2.series_data_1
|
||||
this.setData({
|
||||
pie2noData:false,
|
||||
showPie2Chart:true,
|
||||
['ecPie2.onInit']:Pie2Chart,
|
||||
pie2Bottom:res.data.pie2.bottom,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//Pie3ChartData = getPie3Option()
|
||||
if(res.data.pie3){
|
||||
if(res.data.pie3.series_data_1.length==0){
|
||||
this.setData({
|
||||
pie3noData:true,
|
||||
})
|
||||
}else{
|
||||
Pie3ChartData = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} ({d}%)'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'12%',
|
||||
radius: '70%',
|
||||
// avoidLabelOverlap: false,
|
||||
// itemStyle: {
|
||||
// borderRadius: 10,
|
||||
// borderColor: '#fff',
|
||||
// borderWidth: 2
|
||||
// },
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: []
|
||||
}
|
||||
]
|
||||
};
|
||||
Pie3ChartData.series[0].data = res.data.pie3.series_data_1
|
||||
this.setData({
|
||||
pie3noData:false,
|
||||
showPie3Chart:true,
|
||||
['ecPie3.onInit']:Pie3Chart,
|
||||
pie3Bottom:res.data.pie3.bottom,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//BarChartData = getBarOption()
|
||||
if(res.data.bar){
|
||||
BarChartData = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: []
|
||||
},
|
||||
grid: {
|
||||
top: '1%',
|
||||
left: '5%',
|
||||
right: '5%',
|
||||
bottom: '35',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [],
|
||||
type: 'bar',
|
||||
top: 0,
|
||||
bottom:'0',
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
let xAxis_data = res.data.bar.xAxis_data
|
||||
let yAxis_data = []
|
||||
xAxis_data.forEach(item => {
|
||||
if(item.length > 6){
|
||||
yAxis_data.push(item.substring(0,6)+'...')
|
||||
}else{
|
||||
yAxis_data.push(item)
|
||||
}
|
||||
})
|
||||
|
||||
BarChartData.yAxis.data = yAxis_data
|
||||
BarChartData.series[0].data = res.data.bar.series_data
|
||||
this.setData({
|
||||
Barheight:100 + 60*(res.data.bar.xAxis_data.length),
|
||||
Bartitle:res.data.bar.title,
|
||||
showBarChart:true,
|
||||
['ecBar.onInit']:BarChart,
|
||||
barBottom:res.data.bar.bottom,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
this.setData({
|
||||
city_id:this.data.cityList[e.detail.value].city_id,
|
||||
cityIndex: e.detail.value
|
||||
})
|
||||
this.getAppStatisticsStats_customer()
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh: function () {
|
||||
this.getAppStatisticsStats_customer()
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
function getPie1Option() {
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{b}: {c} ({d}%)'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
selectedMode: 'single',
|
||||
radius: [0, '30%'],
|
||||
label: {
|
||||
position: 'inner',
|
||||
fontSize: 10
|
||||
},
|
||||
labelBar: {
|
||||
show: false
|
||||
},
|
||||
data: [
|
||||
{ value: 1548, name: 'H' },
|
||||
{ value: 775, name: 'A' },
|
||||
{ value: 679, name: 'B', }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['45%', '65%'],
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{ value: 1048, name: '转介绍' },
|
||||
{ value: 335, name: '网络推广' },
|
||||
{ value: 310, name: '外展外拓' },
|
||||
{ value: 251, name: '自媒体' },
|
||||
]
|
||||
},
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
function getPie2Option() {
|
||||
return {
|
||||
// tooltip: {
|
||||
// trigger: 'item',
|
||||
// formatter: '{b}: {c} ({d}%)'
|
||||
// },
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'10%',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{ value: 48, name: '转介绍' },
|
||||
{ value: 35, name: '网络推广' },
|
||||
{ value: 30, name: '外展外拓' },
|
||||
{ value: 21, name: '自媒体' },
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
function getPie3Option() {
|
||||
return {
|
||||
// tooltip: {
|
||||
// trigger: 'item',
|
||||
// formatter: '{b}: {c} ({d}%)'
|
||||
// },
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
bottom:'10%',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
fontSize:5,
|
||||
length:10
|
||||
},
|
||||
label: {
|
||||
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
|
||||
backgroundColor: '#F6F8FC',
|
||||
borderColor: '#8C8D8E',
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
rich: {
|
||||
hr: {
|
||||
borderColor: '#8C8D8E',
|
||||
width: '100%',
|
||||
borderWidth: 1,
|
||||
height: 0
|
||||
},
|
||||
b: {
|
||||
color: '#4C5058',
|
||||
fontSize:10,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
c: {
|
||||
color: '#4C5058',
|
||||
fontSize:8,
|
||||
lineHeight:20,
|
||||
align: 'center',
|
||||
},
|
||||
}
|
||||
},
|
||||
data: [
|
||||
{ value: 48, name: '转介绍' },
|
||||
{ value: 35, name: '网络推广' },
|
||||
{ value: 30, name: '外展外拓' },
|
||||
{ value: 21, name: '自媒体' },
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
function getBarOption() {
|
||||
|
||||
return{
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['张三', '李四', '王五', '赵六', '孙七', '周八', '吴九','郑十']
|
||||
},
|
||||
grid: {
|
||||
top: '5%',
|
||||
left: '2%',
|
||||
right: '5%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
|
||||
{
|
||||
data: [20, 20, 10, 20, 20, 20, 25, 2],
|
||||
type: 'bar',
|
||||
top: 0,
|
||||
bottom:'0',
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"navigationBarTitleText": "订单数据",
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarBackgroundColor": "#ff7052",
|
||||
"backgroundColor": "#ffffff",
|
||||
"backgroundColorTop": "#ff7052",
|
||||
"usingComponents": {
|
||||
"ec-canvas": "../../../ecCanvas/components/ec-canvas/ec-canvas"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
<view class="container img-top-cover" style="background-image:url({{imgUrl}}storedata/theme.png);">
|
||||
<view class="text-center pt20 pb40 pl30 pr30 fn-clear">
|
||||
<view class="fn-fl bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
|
||||
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
|
||||
<view>
|
||||
<text>{{cityArray[cityIndex]}}</text>
|
||||
<i class="iconfont ml5 icon-xuanze"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="fn-fr bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
|
||||
<picker class="inline-block" mode="date" value="{{s_date}}" end="{{current_date}}" bindchange="changeDate" data-type="s_date">
|
||||
<view>
|
||||
<text>{{s_date}}</text>
|
||||
<i class="iconfont ml5 icon-xuanze"></i>
|
||||
</view>
|
||||
</picker>
|
||||
<text class="pl10 pr10">至</text>
|
||||
<picker class="inline-block" mode="date" value="{{e_date}}" end="{{current_date}}" bindchange="changeDate" data-type="e_date">
|
||||
<view>
|
||||
<text>{{e_date}}</text>
|
||||
<i class="iconfont ml5 icon-xuanze"></i>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mb30 pl30 pr30" wx:if="{{Pie1title != ''}}">
|
||||
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative">
|
||||
<view class="font-36">{{Pie1title}}</view>
|
||||
</view>
|
||||
<lcb-listmore isNoData='{{pie1noData}}' noDataMsg='暂无数据'></lcb-listmore>
|
||||
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie1noData}}">
|
||||
<view class="absolute wp100 height-600" wx:if="{{showPie1Chart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie1 }}"></ec-canvas>
|
||||
</view>
|
||||
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888">{{pie1Bottom}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mb30 pl30 pr30" wx:if="{{Pie2title != ''}}">
|
||||
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative">
|
||||
<view class="font-36">{{Pie2title}}</view>
|
||||
</view>
|
||||
<lcb-listmore isNoData='{{pie2noData}}' noDataMsg='暂无数据'></lcb-listmore>
|
||||
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie2noData}}">
|
||||
<view class="absolute wp100 height-600" wx:if="{{showPie2Chart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie2 }}"></ec-canvas>
|
||||
</view>
|
||||
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie2Bottom}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mb30 pl30 pr30" wx:if="{{Pie3title != ''}}">
|
||||
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative">
|
||||
<view class="font-36">{{Pie3title}}</view>
|
||||
</view>
|
||||
<lcb-listmore isNoData='{{pie3noData}}' noDataMsg='暂无数据'></lcb-listmore>
|
||||
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie3noData}}">
|
||||
<view class="absolute wp100 height-600" wx:if="{{showPie3Chart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie3 }}"></ec-canvas>
|
||||
</view>
|
||||
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie3Bottom}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mb30 pl30 pr30" wx:if="{{Bartitle != ''}}">
|
||||
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
|
||||
<view class="relative">
|
||||
<view class="font-36">{{Bartitle}}</view>
|
||||
</view>
|
||||
<view class="mt50 mb20 relative z-index-0" style="height:{{Barheight}}rpx;">
|
||||
<view class="absolute wp100" style="height:{{Barheight}}rpx;" wx:if="{{showBarChart}}">
|
||||
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
|
||||
</view>
|
||||
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{barBottom}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<lcb-footer></lcb-footer>
|
||||
@@ -0,0 +1 @@
|
||||
/* pages/storeData/index.wxss */
|
||||
@@ -0,0 +1,441 @@
|
||||
import _ from '../../commons/js/commons';
|
||||
import popularData from '../../commons/js/lib/popularData';
|
||||
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
|
||||
const app = getApp()
|
||||
|
||||
let lineChartData;
|
||||
let FunnelChartData;
|
||||
function lineChart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = lineChartData
|
||||
chart.setOption(option);
|
||||
return chart;
|
||||
}
|
||||
function FunnelChart(canvas, width, height, dpr) {
|
||||
const chart = echarts.init(canvas, null, {
|
||||
width: width,
|
||||
height: height,
|
||||
devicePixelRatio: dpr // new
|
||||
});
|
||||
canvas.setChart(chart);
|
||||
let option = FunnelChartData
|
||||
chart.setOption(option);
|
||||
return chart;
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
imgUrl: _.config.imgUrl,//静态图片路径
|
||||
showFunnelChart:false,//是否显示Funnel图表
|
||||
ecFunnel:{},
|
||||
showLineChart:false,//是否显示Line图表
|
||||
ecLine:{},
|
||||
daysIndex:0,
|
||||
daysArray:['近一周','近30日'],
|
||||
isShowTip:false,
|
||||
tipIndex:0,
|
||||
},
|
||||
|
||||
onLoad: function (options) {
|
||||
for (let key in options) {
|
||||
this.setData({
|
||||
[key]: options[key]
|
||||
})
|
||||
}
|
||||
|
||||
popularData.getDateLater(0,0).then(res => {
|
||||
let s_date = res[0]
|
||||
s_date= s_date.split('-')[0]+'-'+s_date.split('-')[1]+'-01'
|
||||
this.setData({
|
||||
s_date,
|
||||
e_date:res[1],
|
||||
current_date:res[1],
|
||||
})
|
||||
|
||||
this.getAppCity()
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
//获取系统配置城市
|
||||
getAppCity(){
|
||||
_.apiQuery.getAppCity().then(res => {
|
||||
let cityArray = []
|
||||
res.data.list.forEach((item,index) => {
|
||||
cityArray.push(item.name)
|
||||
if(item.city_id==res.data.default){
|
||||
this.setData({
|
||||
cityIndex:index,
|
||||
})
|
||||
}
|
||||
})
|
||||
this.setData({
|
||||
city_id:res.data.default,
|
||||
cityArray:cityArray,
|
||||
cityList:res.data.list,
|
||||
})
|
||||
|
||||
this.getAppStatisticsStats()
|
||||
this.getAppStatisticsStats_days()
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
//选择日期
|
||||
changeDate(e){
|
||||
if(e.currentTarget.dataset.type=="s_date"){
|
||||
let begin = new Date(e.detail.value).getTime();
|
||||
let end = new Date(this.data.e_date).getTime();
|
||||
let day = 0
|
||||
if(end>=begin){
|
||||
day = (end - begin)/(24*60*60*1000);
|
||||
this.setData({
|
||||
s_date: e.detail.value,
|
||||
})
|
||||
}
|
||||
else{
|
||||
day = (begin - end)/(24*60*60*1000);
|
||||
let s_date = this.data.e_date
|
||||
let e_date = e.detail.value
|
||||
this.setData({
|
||||
s_date,
|
||||
e_date,
|
||||
})
|
||||
}
|
||||
if (day > 365) {
|
||||
wx.showToast({
|
||||
title: '请选择一年时间内',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.getAppStatisticsStats()
|
||||
}
|
||||
}
|
||||
if(e.currentTarget.dataset.type=="e_date"){
|
||||
let begin = new Date(this.data.s_date).getTime();
|
||||
let end = new Date(e.detail.value).getTime();
|
||||
let day = 0
|
||||
if(end>=begin){
|
||||
day = (end - begin)/(24*60*60*1000);
|
||||
this.setData({
|
||||
e_date: e.detail.value,
|
||||
})
|
||||
}
|
||||
else{
|
||||
day = (begin - end)/(24*60*60*1000);
|
||||
let e_date = this.data.s_date
|
||||
let s_date = e.detail.value
|
||||
this.setData({
|
||||
s_date,
|
||||
e_date,
|
||||
})
|
||||
}
|
||||
if (day > 365) {
|
||||
wx.showToast({
|
||||
title: '请选择一年时间内',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.getAppStatisticsStats()
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//数据看板-漏斗
|
||||
getAppStatisticsStats(){
|
||||
this.setData({
|
||||
showFunnelChart:false,
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['city_id'] = this.data.city_id;
|
||||
params['s_time'] = this.data.s_date;
|
||||
params['e_time'] = this.data.e_date;
|
||||
_.apiQuery.getAppStatisticsStats(params).then(res => {
|
||||
|
||||
wx.setNavigationBarTitle({
|
||||
title: res.data.title
|
||||
})
|
||||
|
||||
this.setData({
|
||||
tabs:res.data.tabs,
|
||||
})
|
||||
|
||||
//FunnelChartData = getFunnelOption()
|
||||
FunnelChartData = {
|
||||
series: [
|
||||
{
|
||||
name: 'Expected',
|
||||
type: 'funnel',
|
||||
top: '1%',
|
||||
bottom:'5%',
|
||||
left: '2%',
|
||||
width: '72%',
|
||||
label: {
|
||||
position: 'right',
|
||||
formatter: '{b}'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
opacity: 0.7
|
||||
},
|
||||
data: []
|
||||
},
|
||||
{
|
||||
name: 'Actual',
|
||||
type: 'funnel',
|
||||
top:'1%',
|
||||
bottom:'5%',
|
||||
left: '7%',
|
||||
width: '62%',
|
||||
maxSize: '62%',
|
||||
label: {
|
||||
position: 'inside',
|
||||
formatter: '{c}',
|
||||
color: '#000'
|
||||
},
|
||||
itemStyle: {
|
||||
opacity: 0.4,
|
||||
borderColor: '#fff',
|
||||
borderWidth:1
|
||||
},
|
||||
data: [],
|
||||
z: 100
|
||||
}
|
||||
]
|
||||
};
|
||||
if(res.data.funnel.actual_data[0].value==0&&res.data.funnel.actual_data[1].value==0&&res.data.funnel.actual_data[2].value==0){
|
||||
FunnelChartData.series[1].itemStyle.opacity = 0
|
||||
}
|
||||
|
||||
FunnelChartData.series[0].data = res.data.funnel.expected_data
|
||||
FunnelChartData.series[1].data = res.data.funnel.actual_data
|
||||
this.setData({
|
||||
funneltitle:res.data.funnel.title,
|
||||
showFunnelChart:true,
|
||||
['ecFunnel.onInit']:FunnelChart,
|
||||
})
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
//客户/订单走势图
|
||||
getAppStatisticsStats_days(){
|
||||
this.setData({
|
||||
showLineChart:false,
|
||||
})
|
||||
|
||||
let params = {};
|
||||
params['city_id'] = this.data.city_id;
|
||||
params['days'] = this.data.daysIndex == 0?'7':'30';
|
||||
_.apiQuery.getAppStatisticsStats_days(params).then(res => {
|
||||
|
||||
//lineChartData = getLineOption()
|
||||
lineChartData = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
top: 'bottom',
|
||||
data: []
|
||||
},
|
||||
grid: {
|
||||
top: '3%',
|
||||
left: '2%',
|
||||
right: '5%',
|
||||
bottom: '20%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: []
|
||||
};
|
||||
|
||||
lineChartData.legend.data = res.data.legend_data
|
||||
lineChartData.xAxis.data = res.data.xAxis
|
||||
lineChartData.series = res.data.series
|
||||
this.setData({
|
||||
linetitle:res.data.title,
|
||||
showLineChart:true,
|
||||
['ecLine.onInit']:lineChart,
|
||||
})
|
||||
|
||||
wx.stopPullDownRefresh()
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
//选择天数
|
||||
changeDays(e) {
|
||||
this.setData({
|
||||
daysIndex: e.detail.value
|
||||
})
|
||||
this.getAppStatisticsStats_days()
|
||||
},
|
||||
|
||||
//显示隐藏提示
|
||||
optShowTip(e) {
|
||||
this.setData({
|
||||
isShowTip:!this.data.isShowTip,
|
||||
})
|
||||
if(e.currentTarget.dataset.index){
|
||||
this.setData({
|
||||
tipIndex:e.currentTarget.dataset.index
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
//推送链接
|
||||
pushLink(e) {
|
||||
if(e.currentTarget.dataset.url){
|
||||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||||
}
|
||||
},
|
||||
|
||||
//选择城市
|
||||
changeCity(e) {
|
||||
this.setData({
|
||||
city_id:this.data.cityList[e.detail.value].city_id,
|
||||
cityIndex: e.detail.value
|
||||
})
|
||||
this.getAppStatisticsStats()
|
||||
this.getAppStatisticsStats_days()
|
||||
},
|
||||
|
||||
//页面相关事件处理函数--监听用户下拉动作
|
||||
onPullDownRefresh: function () {
|
||||
this.getAppStatisticsStats()
|
||||
this.getAppStatisticsStats_days()
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
function getFunnelOption() {
|
||||
return {
|
||||
// legend: {
|
||||
// top: 'bottom',
|
||||
// data: ['客户量', '到店数', '成交数']
|
||||
// },
|
||||
series: [
|
||||
{
|
||||
name: 'Expected',
|
||||
type: 'funnel',
|
||||
top: '1%',
|
||||
bottom:'5%',
|
||||
left: '2%',
|
||||
width: '72%',
|
||||
label: {
|
||||
position: 'right',
|
||||
formatter: '{b}'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
itemStyle: {
|
||||
opacity: 0.7
|
||||
},
|
||||
data: [
|
||||
{ value: 33.3, name: '成交数(10%)' },
|
||||
{ value: 66.6, name: '到店数(25%)' },
|
||||
{ value: 100, name: '客户数(100%)' }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Actual',
|
||||
type: 'funnel',
|
||||
top:'1%',
|
||||
bottom:'5%',
|
||||
left: '7%',
|
||||
width: '62%',
|
||||
maxSize: '62%',
|
||||
label: {
|
||||
position: 'inside',
|
||||
formatter: '{c}',
|
||||
color: '#000'
|
||||
},
|
||||
itemStyle: {
|
||||
opacity: 0.4,
|
||||
borderColor: '#fff',
|
||||
borderWidth:1
|
||||
},
|
||||
// emphasis: {
|
||||
// label: {
|
||||
// position: 'inside',
|
||||
// formatter: '{b}: {c}'
|
||||
// }
|
||||
// },
|
||||
data: [
|
||||
{ value: 20, name: '成交数' },
|
||||
{ value: 50, name: '到店数' },
|
||||
{ value:200, name: '客户量' }
|
||||
],
|
||||
z: 100
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
function getLineOption() {
|
||||
|
||||
return{
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
top: 'bottom',
|
||||
data: ['客户数', '订单数',]
|
||||
},
|
||||
grid: {
|
||||
top: '3%',
|
||||
left: '2%',
|
||||
right: '5%',
|
||||
bottom: '20%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1', '2', '3','4','5','6','7',]
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '客户数',
|
||||
type: 'line',
|
||||
//stack: '总量',//累加
|
||||
data: [20, 30, 50, 60, 66, 70, 73, ],
|
||||
smooth: true,
|
||||
},
|
||||
{
|
||||
name: '订单数',
|
||||
type: 'line',
|
||||
//stack: '总量',//累加
|
||||
data: [10, 10, 10,1, 1, 1, 1,],
|
||||
smooth: true,
|
||||
},
|
||||
]
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarBackgroundColor": "#ff7052",
|
||||
"backgroundColor": "#ffffff",
|
||||
"backgroundColorTop": "#ff7052",
|
||||
"usingComponents": {
|
||||
"ec-canvas": "../../ecCanvas/components/ec-canvas/ec-canvas"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user