1
This commit is contained in:
@@ -229,3 +229,15 @@ export function cancelPendingPush() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 反向同步第三方单号
|
||||||
|
* 从腾讯文档的物流单号列读取链接,通过链接匹配本地订单,将腾讯文档的单号列值写入到订单的第三方单号字段
|
||||||
|
*/
|
||||||
|
export function reverseSyncThirdPartyOrderNo(data) {
|
||||||
|
return request({
|
||||||
|
url: '/jarvis/tendoc/reverseSyncThirdPartyOrderNo',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,9 @@
|
|||||||
<el-button type="success" size="small" icon="el-icon-check" @click="handleBatchMarkRebateReceived" :loading="batchMarkLoading" title="批量将赔付金额大于0的订单标记为后返到账(仅执行一次)">
|
<el-button type="success" size="small" icon="el-icon-check" @click="handleBatchMarkRebateReceived" :loading="batchMarkLoading" title="批量将赔付金额大于0的订单标记为后返到账(仅执行一次)">
|
||||||
批量标记后返到账
|
批量标记后返到账
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="warning" size="small" icon="el-icon-sort" @click="handleReverseSyncThirdPartyOrderNo" :loading="reverseSyncLoading" title="从腾讯文档第850行开始,通过物流链接反向匹配订单,将腾讯文档的单号列值写入到订单的第三方单号字段">
|
||||||
|
反向同步第三方单号
|
||||||
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
@@ -434,7 +437,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listJDOrders, updateJDOrder, delJDOrder, fetchLogisticsManually, batchMarkRebateReceived } from '@/api/system/jdorder'
|
import { listJDOrders, updateJDOrder, delJDOrder, fetchLogisticsManually, batchMarkRebateReceived } from '@/api/system/jdorder'
|
||||||
import { fillLogisticsByOrderNo, getTokenStatus, getTencentDocAuthUrl, testUserInfo, getAutoWriteConfig } from '@/api/jarvis/tendoc'
|
import { fillLogisticsByOrderNo, getTokenStatus, getTencentDocAuthUrl, testUserInfo, getAutoWriteConfig, reverseSyncThirdPartyOrderNo } from '@/api/jarvis/tendoc'
|
||||||
import ListLayout from '@/components/ListLayout'
|
import ListLayout from '@/components/ListLayout'
|
||||||
import TencentDocAutoWriteConfig from './components/TencentDocAutoWriteConfig'
|
import TencentDocAutoWriteConfig from './components/TencentDocAutoWriteConfig'
|
||||||
import TencentDocPushMonitor from './components/TencentDocPushMonitor'
|
import TencentDocPushMonitor from './components/TencentDocPushMonitor'
|
||||||
@@ -492,6 +495,8 @@ export default {
|
|||||||
batchSyncLoading: false,
|
batchSyncLoading: false,
|
||||||
// 批量标记后返到账loading状态
|
// 批量标记后返到账loading状态
|
||||||
batchMarkLoading: false,
|
batchMarkLoading: false,
|
||||||
|
// 反向同步第三方单号loading状态
|
||||||
|
reverseSyncLoading: false,
|
||||||
// 获取物流信息对话框
|
// 获取物流信息对话框
|
||||||
fetchLogisticsDialogVisible: false,
|
fetchLogisticsDialogVisible: false,
|
||||||
fetchLogisticsLoading: false,
|
fetchLogisticsLoading: false,
|
||||||
@@ -1280,6 +1285,75 @@ export default {
|
|||||||
|
|
||||||
const text = parts.join('\n')
|
const text = parts.join('\n')
|
||||||
this.copyToClipboard(text)
|
this.copyToClipboard(text)
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 反向同步第三方单号 */
|
||||||
|
async handleReverseSyncThirdPartyOrderNo() {
|
||||||
|
try {
|
||||||
|
// 先检查配置是否完整
|
||||||
|
const configRes = await getAutoWriteConfig()
|
||||||
|
if (configRes.code !== 200 || !configRes.data || !configRes.data.isConfigured) {
|
||||||
|
this.$confirm('检测到尚未完成H-TF自动写入配置,是否现在配置?', '提示', {
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.showAutoWriteConfig = true
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const config = configRes.data
|
||||||
|
|
||||||
|
// 构建确认消息
|
||||||
|
let confirmMsg = '反向同步将从腾讯文档第850行开始读取物流单号列\n'
|
||||||
|
confirmMsg += '通过物流链接匹配本地订单,将腾讯文档的单号列值写入到订单的第三方单号字段\n\n'
|
||||||
|
confirmMsg += `文档: ${config.fileId}\n`
|
||||||
|
confirmMsg += `工作表: ${config.sheetId}\n`
|
||||||
|
confirmMsg += `起始行: 850\n`
|
||||||
|
confirmMsg += `处理行数: 200行\n`
|
||||||
|
confirmMsg += '\n⚠️ 注意:\n'
|
||||||
|
confirmMsg += '- 只更新订单的第三方单号字段,不会清除任何数据\n'
|
||||||
|
confirmMsg += '- 跳过物流链接为空的行\n'
|
||||||
|
confirmMsg += '- 跳过单号为空的行\n'
|
||||||
|
confirmMsg += '- 如果订单已有第三方单号且与文档中的不同,将跳过\n'
|
||||||
|
confirmMsg += '- 所有操作都会记录到操作日志\n'
|
||||||
|
|
||||||
|
// 确认同步
|
||||||
|
await this.$confirm(confirmMsg, '反向同步第三方单号确认', {
|
||||||
|
type: 'info',
|
||||||
|
confirmButtonText: '开始同步',
|
||||||
|
cancelButtonText: '取消'
|
||||||
|
})
|
||||||
|
|
||||||
|
this.reverseSyncLoading = true
|
||||||
|
|
||||||
|
// 调用反向同步API
|
||||||
|
const res = await reverseSyncThirdPartyOrderNo({
|
||||||
|
startRow: 850,
|
||||||
|
endRow: 1049 // 850 + 200 - 1
|
||||||
|
})
|
||||||
|
|
||||||
|
if (res.code === 200) {
|
||||||
|
const data = res.data || {}
|
||||||
|
this.$notify({
|
||||||
|
title: '反向同步完成',
|
||||||
|
message: `✓ 成功: ${data.successCount || 0} 条\n⊙ 跳过: ${data.skippedCount || 0} 条\n✗ 错误: ${data.errorCount || 0} 条\n\n${data.message || ''}`,
|
||||||
|
type: 'success',
|
||||||
|
duration: 10000,
|
||||||
|
dangerouslyUseHTMLString: false
|
||||||
|
})
|
||||||
|
// 刷新列表
|
||||||
|
this.getList()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg || '同步失败')
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (e !== 'cancel') {
|
||||||
|
this.$message.error('操作失败:' + (e.message || '未知错误'))
|
||||||
|
console.error('反向同步失败', e)
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
this.reverseSyncLoading = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user