相对方确认签署
This commit is contained in:
@@ -521,30 +521,30 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="counterpartyPartyNames.length" class="counterparty-confirm-section">
|
||||
<div v-if="counterpartyConfirmItems.length" class="counterparty-confirm-section">
|
||||
<div class="counterparty-confirm-title">相对方签署确认</div>
|
||||
<div
|
||||
v-for="name in counterpartyPartyNames"
|
||||
:key="name"
|
||||
v-for="item in counterpartyConfirmItems"
|
||||
:key="item.partyId || item.partnerId || item.companyName"
|
||||
class="counterparty-confirm-row"
|
||||
>
|
||||
<span
|
||||
v-if="counterpartyConfirmMap[name]?.confirmed"
|
||||
v-if="item.confirmed"
|
||||
class="confirm-status status-done"
|
||||
>✓</span>
|
||||
<span v-else class="confirm-status status-pending">○</span>
|
||||
<span class="confirm-name">{{ name }}</span>
|
||||
<span class="confirm-name">{{ item.companyName }}</span>
|
||||
<span
|
||||
v-if="counterpartyConfirmMap[name]?.confirmed"
|
||||
v-if="item.confirmed"
|
||||
class="confirm-method"
|
||||
>{{ counterpartyConfirmMap[name]?.method === 'manual' ? '(代确认)' : '(已确认)' }}</span>
|
||||
>{{ item.method === 'manual' ? '(代确认)' : '(已确认)' }}</span>
|
||||
<a-button
|
||||
v-else
|
||||
size="small"
|
||||
type="primary"
|
||||
ghost
|
||||
:loading="counterpartyConfirmLoading"
|
||||
@click="handleConfirmCounterparty(name)"
|
||||
@click="handleConfirmCounterparty(item)"
|
||||
>我已签署完成</a-button>
|
||||
</div>
|
||||
<div v-if="unconfirmedPartyNames.length" class="counterparty-confirm-note">
|
||||
@@ -1290,16 +1290,16 @@ const querySealTypes = ref([0, 20, 10, 30, 40, 50, 60]);
|
||||
const fetchingSeals = ref(false);
|
||||
const sealList = ref([]);
|
||||
const sealDefaultScale = ref(1.0);
|
||||
|
||||
/** 解析相对方名单(分号分隔) */
|
||||
const counterpartyPartyNames = computed(() => {
|
||||
const text = businessRecord.value?.counterpartySummary || '';
|
||||
return text.split(/[;;]/).map(s => s.trim()).filter(Boolean);
|
||||
});
|
||||
const counterpartyConfirmItems = computed(
|
||||
() => counterpartyConfirmMap.value?.items || [],
|
||||
);
|
||||
|
||||
/** 未确认的相对方名单 */
|
||||
const unconfirmedPartyNames = computed(() => {
|
||||
return counterpartyPartyNames.value.filter(name => !counterpartyConfirmMap.value[name]?.confirmed);
|
||||
return counterpartyConfirmItems.value
|
||||
.filter((item) => !item.confirmed)
|
||||
.map((item) => item.companyName)
|
||||
.filter(Boolean);
|
||||
});
|
||||
|
||||
async function loadCounterpartyConfirm() {
|
||||
@@ -1314,13 +1314,19 @@ async function loadCounterpartyConfirm() {
|
||||
counterpartyConfirmLoading.value = false;
|
||||
}
|
||||
|
||||
async function handleConfirmCounterparty(companyName) {
|
||||
async function handleConfirmCounterparty(item = {}) {
|
||||
if (!businessRecord.value?.id) return;
|
||||
if (!item.partyId) {
|
||||
message.error("缺少相对方标识,无法确认");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const res = await confirmCounterparty(businessRecord.value.id, { companyName });
|
||||
const res = await confirmCounterparty(businessRecord.value.id, {
|
||||
partyId: String(item.partyId),
|
||||
});
|
||||
if (isSuccessResponse(res) && res.result) {
|
||||
counterpartyConfirmMap.value = res.result || {};
|
||||
message.success(`已确认:${companyName}`);
|
||||
message.success(`已确认:${item.companyName || "相对方"}`);
|
||||
} else {
|
||||
message.error(getResponseMessage(res, '确认失败'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user