From a097fd653d126d8388faae9bcb2e1da15fda58aa Mon Sep 17 00:00:00 2001 From: zhouxiaofeng <2946471396@qq.com> Date: Mon, 29 Jun 2026 10:36:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=90=8C=E6=AD=A5=E7=9B=B8?= =?UTF-8?q?=E5=AF=B9=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/partner.js | 8 ++++ .../ContractPartyPlaceholderModal.vue | 7 --- src/views/contract/partner/index.vue | 45 ++++++++++++++++++- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/api/partner.js b/src/api/partner.js index 5d90539..0930324 100644 --- a/src/api/partner.js +++ b/src/api/partner.js @@ -44,6 +44,14 @@ export function mockSyncPartner(id) { }); } +export function batchSyncPartner(ids) { + return request({ + url: "/partner/manage/batch-sync", + method: "post", + data: ids, + }); +} + /** 获取货代公司组织列表(用于关联内部组织选择) */ export function getAgentOrgList() { return request({ diff --git a/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue b/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue index c73f34f..34abafa 100644 --- a/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue +++ b/src/views/contract/launch/components/ContractPartyPlaceholderModal.vue @@ -1743,13 +1743,6 @@ function resetCurrentState() { syncUploadLists(); } -function showSearchTip(title) { - loadCounterpartyOptions(); - message.info( - `${title}数据已刷新;我方主体来自组织树,相对方下拉仅展示已同步到法务的记录。`, - ); -} - function filterPartnerOption(input, option) { const keyword = String(input || "") .trim() diff --git a/src/views/contract/partner/index.vue b/src/views/contract/partner/index.vue index 75ae70f..e2a0f61 100644 --- a/src/views/contract/partner/index.vue +++ b/src/views/contract/partner/index.vue @@ -96,6 +96,16 @@ > 批量删除 + + 批量同步 + @@ -238,10 +248,11 @@ import { PlusOutlined, RedoOutlined, SearchOutlined, + SyncOutlined, } from "@ant-design/icons-vue"; import { message, Modal } from "ant-design-vue"; import PartnerModal from "./components/PartnerModal.vue"; -import {queryPartnerList,getPartnerInfo,createPartner,updatePartner,deletePartnerByIds,mockSyncPartner} from '@/api/partner.js' +import {queryPartnerList,getPartnerInfo,createPartner,updatePartner,deletePartnerByIds,mockSyncPartner,batchSyncPartner} from '@/api/partner.js' import gj from './gj.json' function isSuccessResponse(res) { return String(res?.code || "") === "0000"; @@ -330,6 +341,7 @@ const tableData = ref([]); const selectedRows = ref([]); const selectedRowKeys = ref([]); const currentModalMode = ref("create"); +const batchSyncLoading = ref(false); const queryParam = ref({ pageNo: 1, @@ -444,6 +456,37 @@ function handleMockSync(row) { }); } +function handleBatchSync() { + if (!selectedRowKeys.value.length) { + message.warning("请先勾选要同步的相对方"); + return; + } + Modal.confirm({ + title: `确认批量同步选中的 ${selectedRowKeys.value.length} 条相对方吗?`, + content: "将批量推送到法务系统进行相对方信息采集。法务接口不可用期间为模拟同步。", + okText: "确认同步", + cancelText: "取消", + onOk: () => { + batchSyncLoading.value = true; + return batchSyncPartner(selectedRowKeys.value) + .then((res) => { + if (!isSuccessResponse(res)) { + message.error("批量同步失败"); + return; + } + const count = res?.result || 0; + message.success(`批量同步完成,共同步 ${count} 条`); + selectedRows.value = []; + selectedRowKeys.value = []; + getList(); + }) + .finally(() => { + batchSyncLoading.value = false; + }); + }, + }); +} + function handleDelete(row) { Modal.confirm({ title: `确认删除【${row.customerNameC}】吗?`,