diff --git a/src/api/partner.js b/src/api/partner.js index b7613f8..5d90539 100644 --- a/src/api/partner.js +++ b/src/api/partner.js @@ -43,3 +43,20 @@ export function mockSyncPartner(id) { method: "post", }); } + +/** 获取货代公司组织列表(用于关联内部组织选择) */ +export function getAgentOrgList() { + return request({ + url: "/admin/org/listAllOrgNameByTypeWithId", + method: "post", + data: { orgCode: "AGENT" }, + }).then((res) => { + if (String(res?.code || "") === "0000") { + return (res?.result || []).map((item) => ({ + label: item.name, + value: item.id, + })); + } + return []; + }); +} diff --git a/src/views/contract/partner/components/PartnerModal.vue b/src/views/contract/partner/components/PartnerModal.vue index 105e9e1..ce7cfcf 100644 --- a/src/views/contract/partner/components/PartnerModal.vue +++ b/src/views/contract/partner/components/PartnerModal.vue @@ -82,11 +82,25 @@ - + + + + import { computed, ref } from "vue"; import { message } from "ant-design-vue"; +import { getAgentOrgList } from "@/api/partner.js"; const props = defineProps({ optionSets: { @@ -319,6 +334,8 @@ function createFormData() { createTime: "", syncTime: "", syncMessage: "", + linkedOrgId: undefined, + linkedUserAccount: "", }; } @@ -347,6 +364,7 @@ const visible = ref(false); const modalMode = ref("create"); const originalState = ref(createFormData()); const formState = ref(createFormData()); +const agentOrgOptions = ref([]); const isViewMode = computed(() => modalMode.value === "view"); @@ -424,6 +442,13 @@ function handleOppositeCharacterChange() { } } +function handleGroupFlagChange(e) { + const value = e?.target?.value ?? e; + if (value !== "Y") { + formState.value.linkedOrgId = undefined; + } +} + function handleNatureOfEnterpriseOrgChange() { if (formState.value.natureOfEnterpriseOrg !== "QY") { formState.value.natureOfEnterpriseOrgLev = undefined; @@ -497,6 +522,12 @@ function normalizeFormBeforeSave() { formState.value.isSgat = formState.value.gatFlag === "Y" ? "1" : "0"; formState.value.isJtn = formState.value.groupFlag === "Y" ? "1" : "0"; + // 如果非集团内,清空关联内部组织 + if (formState.value.groupFlag !== "Y") { + formState.value.linkedOrgId = undefined; + formState.value.linkedUserAccount = ""; + } + formState.value.contacts = (formState.value.contacts || []).map((item) => ({ ...item, contactName: item.contactName?.trim?.() || "", @@ -528,6 +559,10 @@ function showModal(record = {}, mode = "create") { modalMode.value === "create" ? createFormData() : copyFormData(record); originalState.value = copyFormData(source); formState.value = copyFormData(source); + // 加载货代公司组织列表 + getAgentOrgList().then((options) => { + agentOrgOptions.value = options; + }); visible.value = true; }