diff --git a/src/views/company/TenantDetail.vue b/src/views/company/TenantDetail.vue index b3fb93b..3a1cf46 100644 --- a/src/views/company/TenantDetail.vue +++ b/src/views/company/TenantDetail.vue @@ -45,6 +45,15 @@ const editSubmitting = ref(false) const columns = ref([]) const editForm = reactive>({}) +// === 企业信息(CompanyInfo,epcreate 提交) === +const companyInfo = ref | null>(null) +const companyInfoLoading = ref(false) +const ciColumns = ref([]) +const ciEditVisible = ref(false) +const ciSubmitting = ref(false) +const ciEditForm = reactive>({}) +const CI_PK_FIELD = 'CompanyInfoUUID' + // 主键字段 const PK_FIELD = 'TenantUUID' @@ -114,6 +123,89 @@ async function loadColumns(): Promise { } } +// === 企业信息(CompanyInfo)逻辑 === + +/** 企业信息展示值:select 字段按列配置解析 label,其余原值 */ +function ciValue(field: string): string { + const val = companyInfo.value?.[field] + if (val === undefined || val === null || val === '') return '-' + const col = ciColumns.value.find((c) => c.field === field) + const opt = col?.options?.find((o) => String(o.value) === String(val)) + if (opt) return opt.label + return String(val) +} + +/** 企业信息审核状态:0→待审核,1→已通过,2→已拒绝 */ +function ciReviewTag(v: unknown): { text: string; type: 'success' | 'danger' | 'warning' | 'info' } { + if (v === 0 || v === '0') return { text: '待审核', type: 'warning' } + if (v === 1 || v === '1') return { text: '已通过', type: 'success' } + if (v === 2 || v === '2') return { text: '已拒绝', type: 'danger' } + return { text: String(v ?? '-'), type: 'info' } +} + +/** 按当前租户加载企业信息(CompanyInfo 由 epcreate 向导提交,同一租户仅一条) */ +async function loadCompanyInfo(): Promise { + if (!tenantUUID.value) { + companyInfo.value = null + return + } + companyInfoLoading.value = true + try { + const result = await formApi.list('CompanyInfo', { TenantUUID: tenantUUID.value, pageSize: 1 }) + const list: any[] = Array.isArray(result) ? result : (result as any)?.list || [] + companyInfo.value = list.find((c) => c.TenantUUID === tenantUUID.value) || list[0] || null + } catch { + companyInfo.value = null + } finally { + companyInfoLoading.value = false + } +} + +async function loadCiColumns(): Promise { + try { + ciColumns.value = await formApi.getColumns('CompanyInfo') + } catch { + // 列定义加载失败不阻塞展示 + } +} + +/** 企业信息编辑弹窗可见列 */ +const ciFormColumns = computed(() => + ciColumns.value.filter( + (c) => + c.editable !== false && + !c.hideInForm && + c.type !== 'hidden' && + c.type !== 'divider' && + c.type !== 'html' && + c.field !== CI_PK_FIELD, + ), +) + +function handleCiEdit(): void { + if (!companyInfo.value) return + Object.keys(ciEditForm).forEach((k) => delete ciEditForm[k]) + Object.assign(ciEditForm, companyInfo.value) + ciEditVisible.value = true +} + +async function handleCiSubmit(): Promise { + ciSubmitting.value = true + try { + await formApi.update('CompanyInfo', ciEditForm[CI_PK_FIELD], ciEditForm) + ElMessage.success('保存成功') + ciEditVisible.value = false + await loadCompanyInfo() + } finally { + ciSubmitting.value = false + } +} + +/** 未填写企业信息 → 跳企业创建向导(epcreate) */ +function goEpCreate(): void { + router.push('/debug/epcreate') +} + // === 编辑弹窗 === function handleEdit(): void { @@ -143,7 +235,8 @@ function goCompanyDetail(row: Record): void { } onMounted(async () => { - await Promise.all([loadData(), loadColumns()]) + await Promise.all([loadData(), loadColumns(), loadCiColumns()]) + await loadCompanyInfo() }) // 同一 tab 复用(v-show 常驻)时 query 变化:重新加载(防展示旧租户数据 / 缺参报错) @@ -151,6 +244,7 @@ onMounted(async () => { // 空值场景静默显示空态(loadData 内处理),不再弹警告 watch(tenantUUID, () => { void loadData() + void loadCompanyInfo() }, { immediate: true }) @@ -193,6 +287,51 @@ watch(tenantUUID, () => { {{ data?.ReviewRemark || '-' }} + + + + + + + + + + 去填写企业信息 + + + + + + + + + + + + + + + + + + + + + - +