批量更新功能
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
<el-descriptions-item label="项目名称" :span="2">{{ project.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编号">{{ project.project_no || "-" }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目类型">
|
||||
<el-tag :type="isBackToBack ? 'warning' : 'info'" size="small" effect="plain">
|
||||
{{ isBackToBack ? "上下游项目" : "单一项目" }}
|
||||
<el-tag :type="projectTypeTag(project.project_type)" size="small" effect="plain">
|
||||
{{ projectTypeText(project.project_type) }}
|
||||
</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="项目状态">
|
||||
@@ -30,35 +30,47 @@
|
||||
<el-descriptions-item label="备注" :span="2">{{ project.remark || "-" }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!-- 单一项目不存在上下游概念,只展示客户信息;上下游项目则区分上游(客户侧) -->
|
||||
<el-divider content-position="left">{{ isBackToBack ? "上游信息" : "客户信息" }}</el-divider>
|
||||
<!-- 单一项目不存在上下游概念,只展示客户信息;上下游 / 上中游项目区分上游(客户侧) -->
|
||||
<el-divider content-position="left">{{ hasCounterparty ? "上游信息" : "客户信息" }}</el-divider>
|
||||
<el-descriptions :column="2" border size="small">
|
||||
<el-descriptions-item label="客户名称">{{ project.customer_name || "-" }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="isBackToBack ? '上游金额' : '项目金额'">
|
||||
<el-descriptions-item :label="hasCounterparty ? '上游客户' : '客户名称'">
|
||||
{{ project.customer_name || "-" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="hasCounterparty ? '上游金额' : '项目金额'">
|
||||
{{ formatMoney(upstreamAmount) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="isBackToBack ? '上游对接人' : '对接人'">
|
||||
<el-descriptions-item :label="hasCounterparty ? '上游对接人' : '对接人'">
|
||||
{{ project.upstream_contact || project.contact_person || "-" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="isBackToBack ? '上游联系电话' : '联系电话'">
|
||||
<el-descriptions-item :label="hasCounterparty ? '上游联系电话' : '联系电话'">
|
||||
{{ project.upstream_phone || project.contact_phone || "-" }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!-- 下游(供应商侧):仅上下游项目展示 -->
|
||||
<template v-if="isBackToBack">
|
||||
<el-divider content-position="left">下游信息</el-divider>
|
||||
<!-- 对方主体(上下游的下游供应商 / 上中游的中游中间方):仅这两类项目展示 -->
|
||||
<template v-if="hasCounterparty">
|
||||
<el-divider content-position="left">{{ counterpartyLabel }}信息</el-divider>
|
||||
<el-descriptions :column="2" border size="small">
|
||||
<el-descriptions-item label="供应商/客户">
|
||||
<el-descriptions-item :label="isUpMid ? '中游企业' : '供应商/客户'">
|
||||
{{ project.supplier_name || "-" }}
|
||||
<el-tag v-if="Number(project.supplier_ref_type) === 1" size="small" effect="plain" type="success">客户</el-tag>
|
||||
<el-tag v-else-if="Number(project.supplier_ref_type) === 2" size="small" effect="plain" type="warning">
|
||||
供应商
|
||||
</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下游金额">{{ formatMoney(project.downstream_amount) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="下游对接人">{{ project.downstream_contact || "-" }}</el-descriptions-item>
|
||||
<el-descriptions-item label="下游联系电话">{{ project.downstream_phone || "-" }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="`${counterpartyLabel}金额`">
|
||||
{{ formatMoney(project.downstream_amount) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="`${counterpartyLabel}对接人`">
|
||||
{{ project.downstream_contact || "-" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="`${counterpartyLabel}联系电话`">
|
||||
{{ project.downstream_phone || "-" }}
|
||||
</el-descriptions-item>
|
||||
<!-- 上中游项目:下游固定为本公司 -->
|
||||
<el-descriptions-item v-if="isUpMid" label="下游(本公司)" :span="2">
|
||||
{{ ownCompanyName }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</div>
|
||||
@@ -66,9 +78,12 @@
|
||||
|
||||
<script setup>
|
||||
import { computed } from "vue";
|
||||
import { useAuthStore } from "@/stores/auth";
|
||||
import {
|
||||
projectStatusText,
|
||||
projectStatusTag,
|
||||
projectTypeText,
|
||||
projectTypeTag,
|
||||
formatDateTime,
|
||||
formatMoney,
|
||||
formatDateOnly,
|
||||
@@ -79,9 +94,23 @@ const props = defineProps({
|
||||
project: { type: Object, default: null },
|
||||
});
|
||||
|
||||
const authStore = useAuthStore();
|
||||
|
||||
/** 是否背靠背项目:需要展示下游(供应商)信息 */
|
||||
const isBackToBack = computed(() => Number(props.project?.project_type) === 2);
|
||||
|
||||
/** 是否上中游项目:上游 A 公司 + 中游 B 公司,下游固定为本公司 */
|
||||
const isUpMid = computed(() => Number(props.project?.project_type) === 3);
|
||||
|
||||
/** 是否需要展示「对方主体」(上下游的下游 / 上中游的中游) */
|
||||
const hasCounterparty = computed(() => isBackToBack.value || isUpMid.value);
|
||||
|
||||
/** 对方主体称谓:上下游项目叫「下游」,上中游项目叫「中游」 */
|
||||
const counterpartyLabel = computed(() => (isUpMid.value ? "中游" : "下游"));
|
||||
|
||||
/** 本公司名称:上中游项目的下游固定为本公司 */
|
||||
const ownCompanyName = computed(() => authStore.user?.tenant_name || "本公司");
|
||||
|
||||
/** 上游金额:新字段优先,兼容存量项目仅有旧「项目金额」的情况 */
|
||||
const upstreamAmount = computed(
|
||||
() => Number(props.project?.upstream_amount) || Number(props.project?.amount) || 0
|
||||
|
||||
Reference in New Issue
Block a user