对接数据库,模拟第三方接入信息
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="header">
|
||||
<text class="back-link" @click="goBack">⬅ 返回</text>
|
||||
<text class="title">第三方物流 API 模拟发送器</text>
|
||||
<text class="subtitle">模拟外部物流平台向后端推送 Webhook 轨迹数据</text>
|
||||
</view>
|
||||
@@ -18,7 +19,7 @@
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
<text class="section-title">2. 构造圆通协议数据 (YTO Protocol)</text>
|
||||
<text class="section-title">2. 构造协议数据 (YTO Protocol)</text>
|
||||
<view class="form-group">
|
||||
<text class="label">物流单号 (mailNo):</text>
|
||||
<input class="input" v-model="form.mailNo" placeholder="请输入运单号" />
|
||||
@@ -56,11 +57,26 @@
|
||||
|
||||
<script setup lang="uts">
|
||||
import { mockService, MockOrder } from './mock-service.uts'
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
|
||||
const orders = ref([] as MockOrder[])
|
||||
const shippedOrders = computed((): MockOrder[] => {
|
||||
return mockService.getMockOrders().filter((o: MockOrder): boolean => o.status !== 'PENDING' && o.tracking_no !== '')
|
||||
return orders.value.filter((o: MockOrder): boolean => o.status !== 'PENDING' && o.tracking_no !== '')
|
||||
})
|
||||
|
||||
async function loadOrders() {
|
||||
const data = await mockService.getMockOrders()
|
||||
orders.value = data
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
loadOrders()
|
||||
})
|
||||
|
||||
function goBack() {
|
||||
uni.navigateBack()
|
||||
}
|
||||
|
||||
const selectedOrderIndex = ref(-1)
|
||||
|
||||
const form = reactive({
|
||||
@@ -111,12 +127,23 @@
|
||||
form.infoContent = statusOptions[idx].value
|
||||
}
|
||||
|
||||
function sendWebhook() {
|
||||
async function sendWebhook() {
|
||||
if (!form.mailNo) {
|
||||
uni.showToast({ title: '请先填写运单号', icon: 'none' })
|
||||
return
|
||||
}
|
||||
|
||||
// 检查单号对应的订单是否已签收
|
||||
const targetOrder = orders.value.find((o: MockOrder): boolean => o.tracking_no === form.mailNo)
|
||||
if (targetOrder != null && targetOrder.status === 'DELIVERED') {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '该订单已显示已签收,无需继续推送物流动态。',
|
||||
showCancel: false
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前时间戳作为圆通要求的 acceptTime
|
||||
const now = new Date()
|
||||
const Y = now.getFullYear()
|
||||
@@ -137,11 +164,14 @@
|
||||
carrier: form.carrier
|
||||
} as UTSJSONObject
|
||||
|
||||
const success = mockService.pushWebhookData(payload)
|
||||
uni.showLoading({ title: '正在推送至数据库...' })
|
||||
const success = await mockService.pushWebhookData(payload)
|
||||
uni.hideLoading()
|
||||
|
||||
if (success) {
|
||||
uni.showToast({ title: 'API 发送成功!', icon: 'success' })
|
||||
// 可选:跳转到详情或日志预览
|
||||
// 成功后刷新列表,更新订单状态
|
||||
loadOrders()
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '发送失败',
|
||||
@@ -165,13 +195,22 @@
|
||||
|
||||
.header {
|
||||
margin-bottom: 25px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.back-link {
|
||||
font-size: 14px;
|
||||
color: #007aff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
|
||||
Reference in New Issue
Block a user