gaoluyang
2026-05-30 7fb3beda17ba7f5e71f949112141455ab7b69970
src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue
@@ -34,7 +34,7 @@
            </el-row>
            <el-row v-if="!isQuotationApproval && !isPurchaseApproval">
               <el-col :span="24">
                  <el-form-item :label="props.approveType == 5 ? '采购合同号:' : '审批事由:'" prop="approveReason">
                  <el-form-item :label="props.approveType == 5 ? '采购单号:' : '审批事由:'" prop="approveReason">
                     <el-input v-model="form.approveReason" placeholder="请输入" clearable type="textarea" disabled/>
                  </el-form-item>
               </el-col>
@@ -104,7 +104,7 @@
                <h4>产品明细</h4>
                <el-table :data="currentQuotation.products || []" border style="width: 100%">
                  <el-table-column prop="product" label="产品名称" />
                  <el-table-column prop="specificationModel" label="规格型号" />
                  <el-table-column prop="specification" label="规格型号" />
                  <el-table-column prop="unit" label="单位" />
                  <el-table-column prop="unitPrice" label="单价">
                    <template #default="scope">¥{{ Number(scope.row.unitPrice ?? 0).toFixed(2) }}</template>
@@ -134,10 +134,10 @@
            <el-empty v-if="!currentPurchase || !currentPurchase.purchaseContractNumber" description="未查询到对应采购详情" />
            <template v-else>
              <el-descriptions :column="2" border>
                <el-descriptions-item label="采购合同号">{{ currentPurchase.purchaseContractNumber }}</el-descriptions-item>
                <el-descriptions-item label="采购单号">{{ currentPurchase.purchaseContractNumber }}</el-descriptions-item>
                <el-descriptions-item label="供应商名称">{{ currentPurchase.supplierName }}</el-descriptions-item>
                <el-descriptions-item label="项目名称">{{ currentPurchase.projectName }}</el-descriptions-item>
                <el-descriptions-item label="销售合同号">{{ currentPurchase.salesContractNo }}</el-descriptions-item>
                <el-descriptions-item label="销售单号">{{ currentPurchase.salesContractNo }}</el-descriptions-item>
                <el-descriptions-item label="签订日期">{{ currentPurchase.executionDate }}</el-descriptions-item>
                <el-descriptions-item label="录入日期">{{ currentPurchase.entryDate }}</el-descriptions-item>
                <el-descriptions-item label="付款方式">{{ currentPurchase.paymentMethod }}</el-descriptions-item>
@@ -164,6 +164,36 @@
                </el-table>
              </div>
            </template>
          </template>
        </el-skeleton>
      </div>
      <!-- 发货审批:展示产品列表 -->
      <div v-if="isDeliveryApproval" style="margin: 10px 0 18px;">
        <el-divider content-position="left">产品详情</el-divider>
        <el-skeleton :loading="deliveryLoading" animated>
          <template #template>
            <el-skeleton-item variant="h3" style="width: 30%" />
            <el-skeleton-item variant="text" style="width: 100%" />
            <el-skeleton-item variant="text" style="width: 100%" />
          </template>
          <template #default>
            <el-empty v-if="!deliveryProducts || deliveryProducts.length === 0" description="未查询到对应产品信息" />
            <div v-else style="margin-top: 20px;">
              <h4>产品明细</h4>
              <el-table :data="deliveryProducts" border style="width: 100%">
                <el-table-column prop="productCategory" label="产品名称" />
                <el-table-column prop="specificationModel" label="规格型号" />
                <el-table-column prop="unit" label="单位" />
                <el-table-column prop="quantity" label="数量" />
                <el-table-column prop="taxInclusiveUnitPrice" label="含税单价">
                  <template #default="scope">¥{{ Number(scope.row.taxInclusiveUnitPrice ?? 0).toFixed(2) }}</template>
                </el-table-column>
                <el-table-column prop="taxInclusiveTotalPrice" label="含税总价">
                  <template #default="scope">¥{{ Number(scope.row.taxInclusiveTotalPrice ?? 0).toFixed(2) }}</template>
                </el-table-column>
              </el-table>
            </div>
          </template>
        </el-skeleton>
      </div>
@@ -196,10 +226,6 @@
              </div>
              <div v-if="!activity.isShen" class="node-reason">
                <span>审批意见:</span>{{ activity.approveNodeReason }}
              </div>
              <div v-if="!activity.isShen" class="node-reason">
                <span>签名:</span>
                        <img :src="activity.urlTem" class="signImg" alt="" v-if="activity.urlTem"/>
              </div>
              <div v-else-if="activity.isShen">
                <el-form-item
@@ -236,6 +262,7 @@
import { WarningFilled, Edit, Check, MoreFilled } from '@element-plus/icons-vue'
import { getQuotationList } from "@/api/salesManagement/salesQuotation.js";
import { getPurchaseByCode } from "@/api/procurementManagement/procurementLedger.js";
import { productList } from "@/api/salesManagement/salesLedger.js";
const emit = defineEmits(['close'])
const { proxy } = getCurrentInstance()
@@ -257,8 +284,11 @@
const currentQuotation = ref({})
const purchaseLoading = ref(false)
const currentPurchase = ref({})
const deliveryLoading = ref(false)
const deliveryProducts = ref([])
const isQuotationApproval = computed(() => Number(props.approveType) === 6)
const isPurchaseApproval = computed(() => Number(props.approveType) === 5)
const isDeliveryApproval = computed(() => Number(props.approveType) === 7)
const data = reactive({
   form: {
@@ -313,8 +343,8 @@
   getProductOptions().then(() => {
      // 确保值类型匹配(如果选项已加载)
      if (productOptions.value.length > 0 && form.value.approveDeptId) {
         const matchedOption = productOptions.value.find(opt =>
            opt.deptId == form.value.approveDeptId ||
         const matchedOption = productOptions.value.find(opt =>
            opt.deptId == form.value.approveDeptId ||
            String(opt.deptId) === String(form.value.approveDeptId)
         );
         if (matchedOption) {
@@ -343,7 +373,7 @@
    }
  }
  // 采购审批:用审批事由字段承载的"采购合同号"去查采购详情
  // 采购审批:用审批事由字段承载的"采购单号"去查采购详情
  if (isPurchaseApproval.value) {
    const purchaseContractNumber = row?.approveReason;
    if (purchaseContractNumber) {
@@ -355,6 +385,22 @@
        proxy.$modal.msgError('查询采购详情失败')
      }).finally(() => {
        purchaseLoading.value = false
      })
    }
  }
  // 发货审批:根据 salesLedgerId 查询产品列表
  if (isDeliveryApproval.value) {
    const salesLedgerId = row?.salesLedgerId;
    if (salesLedgerId) {
      deliveryLoading.value = true
      productList({ salesLedgerId }).then((res) => {
        deliveryProducts.value = res?.data || []
      }).catch((err) => {
        console.error('查询产品列表失败:', err)
        proxy.$modal.msgError('查询产品列表失败')
      }).finally(() => {
        deliveryLoading.value = false
      })
    }
  }
@@ -411,6 +457,8 @@
  currentQuotation.value = {}
  purchaseLoading.value = false
  currentPurchase.value = {}
  deliveryLoading.value = false
  deliveryProducts.value = []
  emit('close')
};
defineExpose({
@@ -449,4 +497,4 @@
   width: 200px;
   height: 60px;
}
</style>
</style>