Commit beae44494c474a9c3eaf304069efb5416c868522
1 parent
2347e509
Exists in
master
and in
1 other branch
fix: 通知
Showing
3 changed files
with
150 additions
and
42 deletions
Show diff stats
pages/goodSource/add.vue
| @@ -375,6 +375,29 @@ export default { | @@ -375,6 +375,29 @@ export default { | ||
| 375 | url: `/pages/goodSource/select-remark`, | 375 | url: `/pages/goodSource/select-remark`, |
| 376 | }); | 376 | }); |
| 377 | }, | 377 | }, |
| 378 | + // 订阅消息 | ||
| 379 | + subscribeMessage(afterFun) { | ||
| 380 | + uni.requestSubscribeMessage({ | ||
| 381 | + tmplIds: ['CtqtbxU3RFUk7s1QF2RQQiAqyE8w96xHGbbJogTLZX0'], | ||
| 382 | + success(res) { | ||
| 383 | + uni.getSetting({ | ||
| 384 | + withSubscriptions: true, | ||
| 385 | + success(res) { | ||
| 386 | + if (!res.subscriptionsSetting) { | ||
| 387 | + uni.showModal({ | ||
| 388 | + title: '提示', | ||
| 389 | + content: '未开启小程序订阅消息接收,请前往微信设置接以接收消息!', | ||
| 390 | + showCancel: false, | ||
| 391 | + }); | ||
| 392 | + } | ||
| 393 | + }, | ||
| 394 | + }); | ||
| 395 | + }, | ||
| 396 | + complete() { | ||
| 397 | + afterFun(); | ||
| 398 | + }, | ||
| 399 | + }); | ||
| 400 | + }, | ||
| 378 | submitAddFun() { | 401 | submitAddFun() { |
| 379 | if (this.loading) return; | 402 | if (this.loading) return; |
| 380 | this.loading = true; | 403 | this.loading = true; |
| @@ -396,9 +419,15 @@ export default { | @@ -396,9 +419,15 @@ export default { | ||
| 396 | uni.$u.api.freightGoodsSourceV2[opType]({ ...this.form, ...startAddressObj, ...endAddressObj }) | 419 | uni.$u.api.freightGoodsSourceV2[opType]({ ...this.form, ...startAddressObj, ...endAddressObj }) |
| 397 | .then(res => { | 420 | .then(res => { |
| 398 | if (res.success) { | 421 | if (res.success) { |
| 399 | - // uni.showToast({ title: '成功', icon: 'none' }); | ||
| 400 | - this.getOpenerEventChannel().emit('refreshData'); | ||
| 401 | - setTimeout(() => uni.navigateBack(), 500); | 422 | + let afterFun = () => { |
| 423 | + this.getOpenerEventChannel().emit('refreshData'); | ||
| 424 | + setTimeout(() => uni.navigateBack(), 500); | ||
| 425 | + }; | ||
| 426 | + if (opType === 'add') { | ||
| 427 | + this.subscribeMessage(afterFun); | ||
| 428 | + } else { | ||
| 429 | + afterFun(); | ||
| 430 | + } | ||
| 402 | } else { | 431 | } else { |
| 403 | this.loading = false; | 432 | this.loading = false; |
| 404 | } | 433 | } |
pages/goodSource/grab-record.vue
| @@ -211,33 +211,33 @@ export default { | @@ -211,33 +211,33 @@ export default { | ||
| 211 | }, | 211 | }, |
| 212 | // 确认-发布需求 | 212 | // 确认-发布需求 |
| 213 | toSubmit(item) { | 213 | toSubmit(item) { |
| 214 | - let form = { | ||
| 215 | - ...item, | ||
| 216 | - goodsWeight: item.biddingWeight, | ||
| 217 | - goodsSourceCode: item.goodsSourceCode, | ||
| 218 | - goodsSourceBiddingCode: item.code, | ||
| 219 | - loadTime: dayjs(item.biddingTime).add(3, 'hour').format('YYYY-MM-DD HH:mm:ss'), | ||
| 220 | - waypoints: [ | ||
| 221 | - { | ||
| 222 | - cityCode: item.startCityCode, | ||
| 223 | - areaCode: item.startAreaCode, | ||
| 224 | - address: item.startAddress, | ||
| 225 | - lng: item.startLng, | ||
| 226 | - lat: item.startLat, | ||
| 227 | - }, | ||
| 228 | - { | ||
| 229 | - cityCode: item.endCityCode, | ||
| 230 | - areaCode: item.endAreaCode, | ||
| 231 | - address: item.endAddress, | ||
| 232 | - lng: item.endLng, | ||
| 233 | - lat: item.endLat, | ||
| 234 | - }, | ||
| 235 | - ], | ||
| 236 | - }; | ||
| 237 | uni.navigateTo({ | 214 | uni.navigateTo({ |
| 238 | - url: `/pages/order/add?eventCode=${item.code}`, | 215 | + url: `/pages/order/add?biddingSource=record&biddingCode=${item.code}`, |
| 239 | success(res) { | 216 | success(res) { |
| 240 | - res.eventChannel.emit('get-item', form); | 217 | + res.eventChannel.emit('get-item', item); |
| 218 | + }, | ||
| 219 | + }); | ||
| 220 | + }, | ||
| 221 | + // 订阅消息 | ||
| 222 | + subscribeMessage(afterFun) { | ||
| 223 | + uni.requestSubscribeMessage({ | ||
| 224 | + tmplIds: ['CtqtbxU3RFUk7s1QF2RQQiAqyE8w96xHGbbJogTLZX0'], | ||
| 225 | + success(res) { | ||
| 226 | + uni.getSetting({ | ||
| 227 | + withSubscriptions: true, | ||
| 228 | + success(res) { | ||
| 229 | + if (!res.subscriptionsSetting) { | ||
| 230 | + uni.showModal({ | ||
| 231 | + title: '提示', | ||
| 232 | + content: '未开启小程序订阅消息接收,请前往微信设置接以接收消息!', | ||
| 233 | + showCancel: false, | ||
| 234 | + }); | ||
| 235 | + } | ||
| 236 | + }, | ||
| 237 | + }); | ||
| 238 | + }, | ||
| 239 | + complete() { | ||
| 240 | + afterFun && afterFun(); | ||
| 241 | }, | 241 | }, |
| 242 | }); | 242 | }); |
| 243 | }, | 243 | }, |
| @@ -252,6 +252,7 @@ export default { | @@ -252,6 +252,7 @@ export default { | ||
| 252 | this.loading = false; | 252 | this.loading = false; |
| 253 | uni.showToast({ title: '取消成功', icon: 'none' }); | 253 | uni.showToast({ title: '取消成功', icon: 'none' }); |
| 254 | this.onSearch({ showLoading: true }); | 254 | this.onSearch({ showLoading: true }); |
| 255 | + this.subscribeMessage(); | ||
| 255 | }) | 256 | }) |
| 256 | .catch(() => { | 257 | .catch(() => { |
| 257 | this.loading = false; | 258 | this.loading = false; |
pages/order/add.vue
| @@ -218,7 +218,8 @@ export default { | @@ -218,7 +218,8 @@ export default { | ||
| 218 | exceed: false, | 218 | exceed: false, |
| 219 | exceedStr: '', | 219 | exceedStr: '', |
| 220 | openExternalInsuranceFlag: true, | 220 | openExternalInsuranceFlag: true, |
| 221 | - eventCode: '', | 221 | + biddingSource: '', // 从货源列表(record),从订阅消息(msg) |
| 222 | + biddingCode: '', // 抢单编号 | ||
| 222 | loading: false, | 223 | loading: false, |
| 223 | showModal: '', | 224 | showModal: '', |
| 224 | showModal2: '', | 225 | showModal2: '', |
| @@ -289,16 +290,30 @@ export default { | @@ -289,16 +290,30 @@ export default { | ||
| 289 | }, | 290 | }, |
| 290 | onLoad(option) { | 291 | onLoad(option) { |
| 291 | // 从抢单来的数据 | 292 | // 从抢单来的数据 |
| 292 | - if (option.eventCode) { | ||
| 293 | - this.eventCode = option.eventCode; | 293 | + if (option.biddingCode) { |
| 294 | + this.biddingCode = option.biddingCode; | ||
| 295 | + this.biddingSource = option.biddingSource; | ||
| 294 | uni.setNavigationBarTitle({ title: '确定指派' }); | 296 | uni.setNavigationBarTitle({ title: '确定指派' }); |
| 295 | - const eventChannel = this.getOpenerEventChannel(); | ||
| 296 | - eventChannel.on('get-item', detail => { | ||
| 297 | - this.setFormValue(detail, ['priceType', 'weightUnitPrice', 'goodsSourceCode', 'goodsSourceBiddingCode', 'loadTime', 'paidAmount']); | ||
| 298 | - this.getAllowDriverSeeFreightAmount(); | ||
| 299 | - this.clipboard(`手机号:${detail.driverMobile || ''}车牌:${detail.vehicleLicenseNum || ''}车挂:${detail.trailerLicenseNum || ''}`); | ||
| 300 | - this.computedService(); | ||
| 301 | - }); | 297 | + if (option.biddingSource === 'record') { |
| 298 | + const eventChannel = this.getOpenerEventChannel(); | ||
| 299 | + eventChannel.on('get-item', item => { | ||
| 300 | + this.sourceInitForm(item); | ||
| 301 | + }); | ||
| 302 | + } else if (option.biddingSource === 'wx_sub_msg') { | ||
| 303 | + uni.$u.api.freightGoodsSourceV2 | ||
| 304 | + .biddingPage({ | ||
| 305 | + status: 'WAIT_ASSIGN', | ||
| 306 | + code: option.biddingCode, | ||
| 307 | + }) | ||
| 308 | + .then(res => { | ||
| 309 | + if (res.result && res.result.length > 0) { | ||
| 310 | + let item = res.result[0]; | ||
| 311 | + this.sourceInitForm(item); | ||
| 312 | + } else { | ||
| 313 | + uni.showToast({ title: '该抢单已处理,请返回', icon: 'none' }); | ||
| 314 | + } | ||
| 315 | + }); | ||
| 316 | + } | ||
| 302 | } else { | 317 | } else { |
| 303 | if (option.code) { | 318 | if (option.code) { |
| 304 | this.initData(option.code); | 319 | this.initData(option.code); |
| @@ -307,6 +322,35 @@ export default { | @@ -307,6 +322,35 @@ export default { | ||
| 307 | } | 322 | } |
| 308 | }, | 323 | }, |
| 309 | methods: { | 324 | methods: { |
| 325 | + sourceInitForm(item) { | ||
| 326 | + let detail = { | ||
| 327 | + ...item, | ||
| 328 | + goodsWeight: item.biddingWeight, | ||
| 329 | + goodsSourceCode: item.goodsSourceCode, | ||
| 330 | + goodsSourceBiddingCode: item.code, | ||
| 331 | + loadTime: dayjs(item.biddingTime).add(3, 'hour').format('YYYY-MM-DD HH:mm:ss'), | ||
| 332 | + waypoints: [ | ||
| 333 | + { | ||
| 334 | + cityCode: item.startCityCode, | ||
| 335 | + areaCode: item.startAreaCode, | ||
| 336 | + address: item.startAddress, | ||
| 337 | + lng: item.startLng, | ||
| 338 | + lat: item.startLat, | ||
| 339 | + }, | ||
| 340 | + { | ||
| 341 | + cityCode: item.endCityCode, | ||
| 342 | + areaCode: item.endAreaCode, | ||
| 343 | + address: item.endAddress, | ||
| 344 | + lng: item.endLng, | ||
| 345 | + lat: item.endLat, | ||
| 346 | + }, | ||
| 347 | + ], | ||
| 348 | + }; | ||
| 349 | + this.setFormValue(detail, ['priceType', 'weightUnitPrice', 'goodsSourceCode', 'goodsSourceBiddingCode', 'loadTime', 'paidAmount']); | ||
| 350 | + this.getAllowDriverSeeFreightAmount(); | ||
| 351 | + this.clipboard(`手机号:${detail.driverMobile || ''}车牌:${detail.vehicleLicenseNum || ''}车挂:${detail.trailerLicenseNum || ''}`); | ||
| 352 | + this.computedService(); | ||
| 353 | + }, | ||
| 310 | setFormValue(detail, moreList = []) { | 354 | setFormValue(detail, moreList = []) { |
| 311 | ['goodsName', 'waypoints', 'allowDriverSeeFreightAmountNode', 'projectCode', 'projectName', 'remark', 'goodsPiece', 'goodsWeight', 'goodsVolume', ...moreList].forEach(key => { | 355 | ['goodsName', 'waypoints', 'allowDriverSeeFreightAmountNode', 'projectCode', 'projectName', 'remark', 'goodsPiece', 'goodsWeight', 'goodsVolume', ...moreList].forEach(key => { |
| 312 | this.form[key] = detail[key]; | 356 | this.form[key] = detail[key]; |
| @@ -632,7 +676,7 @@ export default { | @@ -632,7 +676,7 @@ export default { | ||
| 632 | uni.$u.debounce(this.getServiceAmountInfo, 500); | 676 | uni.$u.debounce(this.getServiceAmountInfo, 500); |
| 633 | }, | 677 | }, |
| 634 | computedPaid() { | 678 | computedPaid() { |
| 635 | - if (this.eventCode && this.form.priceType === 'TON') { | 679 | + if (this.biddingCode && this.form.priceType === 'TON') { |
| 636 | this.form.paidAmount = Number(Number(this.form.goodsWeight) * Number(this.form.weightUnitPrice)).toFixed(2); | 680 | this.form.paidAmount = Number(Number(this.form.goodsWeight) * Number(this.form.weightUnitPrice)).toFixed(2); |
| 637 | this.computedService(); | 681 | this.computedService(); |
| 638 | } | 682 | } |
| @@ -666,12 +710,35 @@ export default { | @@ -666,12 +710,35 @@ export default { | ||
| 666 | } | 710 | } |
| 667 | }); | 711 | }); |
| 668 | }, | 712 | }, |
| 713 | + // 订阅消息 | ||
| 714 | + subscribeMessage(afterFun) { | ||
| 715 | + uni.requestSubscribeMessage({ | ||
| 716 | + tmplIds: ['CtqtbxU3RFUk7s1QF2RQQiAqyE8w96xHGbbJogTLZX0'], | ||
| 717 | + success(res) { | ||
| 718 | + uni.getSetting({ | ||
| 719 | + withSubscriptions: true, | ||
| 720 | + success(res) { | ||
| 721 | + if (!res.subscriptionsSetting) { | ||
| 722 | + uni.showModal({ | ||
| 723 | + title: '提示', | ||
| 724 | + content: '未开启小程序订阅消息接收,请前往微信设置接以接收消息!', | ||
| 725 | + showCancel: false, | ||
| 726 | + }); | ||
| 727 | + } | ||
| 728 | + }, | ||
| 729 | + }); | ||
| 730 | + }, | ||
| 731 | + complete() { | ||
| 732 | + afterFun(); | ||
| 733 | + }, | ||
| 734 | + }); | ||
| 735 | + }, | ||
| 669 | submitAddFun(confirmAddFlag = false) { | 736 | submitAddFun(confirmAddFlag = false) { |
| 670 | this.exceed = false; | 737 | this.exceed = false; |
| 671 | if (this.loading) return; | 738 | if (this.loading) return; |
| 672 | this.loading = true; | 739 | this.loading = true; |
| 673 | let totalAmount = Number(this.form.paidAmount || 0) + Number(this.form.serviceAmount || 0) + Number(this.form.securityServiceAmount || 0); | 740 | let totalAmount = Number(this.form.paidAmount || 0) + Number(this.form.serviceAmount || 0) + Number(this.form.securityServiceAmount || 0); |
| 674 | - let addFun = this.eventCode ? uni.$u.api.freightGoodsSourceV2.addOrder : uni.$u.api.freightOrder.add; | 741 | + let addFun = this.biddingCode ? uni.$u.api.freightGoodsSourceV2.addOrder : uni.$u.api.freightOrder.add; |
| 675 | addFun({ ...this.form, totalAmount, payeeId: this.payeeModel.driverId, confirmAddFlag }) | 742 | addFun({ ...this.form, totalAmount, payeeId: this.payeeModel.driverId, confirmAddFlag }) |
| 676 | .then(res => { | 743 | .then(res => { |
| 677 | if (res.result) { | 744 | if (res.result) { |
| @@ -680,8 +747,19 @@ export default { | @@ -680,8 +747,19 @@ export default { | ||
| 680 | this.exceed = true; | 747 | this.exceed = true; |
| 681 | } else { | 748 | } else { |
| 682 | uni.showToast({ title: '下单成功', icon: 'none' }); | 749 | uni.showToast({ title: '下单成功', icon: 'none' }); |
| 683 | - this.getOpenerEventChannel().emit('refreshData'); | ||
| 684 | - setTimeout(() => uni.navigateBack(), 1500); | 750 | + let afterFun = () => { |
| 751 | + if (this.biddingSource === 'record') { | ||
| 752 | + this.getOpenerEventChannel().emit('refreshData'); | ||
| 753 | + setTimeout(() => uni.navigateBack(), 1000); | ||
| 754 | + } else { | ||
| 755 | + uni.switchTab({ url: '/pages/goodSource/index' }); | ||
| 756 | + } | ||
| 757 | + }; | ||
| 758 | + if (this.biddingCode) { | ||
| 759 | + this.subscribeMessage(afterFun); | ||
| 760 | + } else { | ||
| 761 | + afterFun(); | ||
| 762 | + } | ||
| 685 | } | 763 | } |
| 686 | }) | 764 | }) |
| 687 | .catch(e => { | 765 | .catch(e => { |