heli-mes/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorder/detail.vue
2025-03-06 14:28:45 +08:00

1333 lines
60 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-card class="hl-card" style="position: relative">
<template #header>
<span>编辑页</span>
</template>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="160px" v-loading="formLoading">
<!-- 基础信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
</template>
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="采购编号" prop="purchaseNo">
<el-input class="!w-265px" placeholder="系统自动生成" v-model="formData.purchaseNo" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="采购单类型" prop="purchaseType" :rules="formRules.purchaseType">
<el-select v-model="formData.purchaseType" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PURCHASE_ORDER_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="结算币种" prop="currencyType">
<el-select v-model="formData.currencyType" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_CURRENCY)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="80">
<el-form-item label="备注" prop="description">
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit :disabled="formData.status == 2 || formData.status == 3" maxlength="200" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="单据日期" prop="createTime">
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="物料需求计划编号" prop="materialPlanNo">
<el-input class="!w-265px" v-model="formData.materialPlanNo" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="暂估价金额(元)" prop="estimatedPrice">
<el-input class="!w-265px" v-model="formData.estimatedPrice" placeholder="暂估价金额(元)" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="单据状态" prop="status">
<el-select v-model="formData.status" placeholder="单据状态" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_ORDER_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="采购物类型" prop="goodsType" :rules="formRules.goodsType">
<el-select v-model="formData.goodsType" placeholder="下拉选择" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PURCHASE_GOODS_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="实际价金额(元)" prop="actualPrice">
<el-input class="!w-265px" v-model="formData.actualPrice" placeholder="实际价金额(元)" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="供应商" prop="supplierId" :rules="formRules.supplierId">
<!-- <el-select v-model="formData.supplierId" placeholder="下拉选择" clearable class="!w-265px" disabled>
<el-option v-for="dict in supplierInit" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select> -->
<SupplierSelect v-model="formData.supplierId" disabled @update:new-value="handleSelectedSupplier" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="采购合同号" prop="contractNo">
<el-input class="!w-265px" v-model="formData.contractNo" placeholder="采购合同号" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="税率(%)" prop="taxRatio">
<el-input class="!w-265px" v-model="formData.taxRatio" placeholder="税率" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
</el-col>
</el-row>
</el-card>
<!-- 物料信息-非计划 -->
<el-card class="hl-card-info" v-if="(formData.purchaseType == 2||formData.purchaseType == 3) && formData.goodsType == 1">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物料信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem" disabled>新增</el-button>
</el-col>
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" fixed align="center" width="60" />
<!-- <el-table-column prop="matId" fixed min-width="200" align="center">
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matId`" :rules="subFormRules.matId" class="mb-0px!">
<MaterialSelect :key="scope.row.matId" v-model="scope.row.matId" v-bind:disabled="formData.status == 2 || formData.status == 3" @update:newValue="handleSelectedMaterial(scope.$index, $event)" />
</el-form-item>
</template>
</el-table-column> -->
<!-- <el-table-column prop="matName" label="物料名称" min-width="120" align="center" /> -->
<el-table-column prop="matName" label="物料名称" min-width="200" align="center" />
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<!-- <template #default="scope">-->
<!-- <dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType" v-if="scope.row.matType ? true : false" />-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="matSpec" label="规格型号" min-width="120" align="center" />
<el-table-column prop="matRest" label="库存数量" min-width="100" align="center" />
<el-table-column prop="purchaseAmount" min-width="180" align="center">
<template #header><span class="hl-table_header">*</span>采购数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.purchaseAmount`" :rules="subFormRules.purchaseAmount" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.purchaseAmount" placeholder="采购数量" @change="handleEstimatedPrice" :min="0" :precision="2" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="estimatedPrice" min-width="200" align="center">
<template #header><span class="hl-table_header">*</span>暂估单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.estimatedPrice`" :rules="subFormRules.estimatedPrice" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.estimatedPrice" placeholder="暂估单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="actualPrice" min-width="200" align="center">
<template #header>实际单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.actualPrice`" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.actualPrice" placeholder="实际单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<template #header> <span class="hl-table_header">*</span>预计到货日期 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!">
<el-date-picker v-model="row.arriveTime" type="date" value-format="x" placeholder="预计到货日期" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matId" min-width="220" align="center" >
<template #header> <span class="hl-table_header">*</span> 物料编码</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matId`" :rules="subFormRules.matId" class="mb-0px!">
<!-- <MaterialSelect v-model="scope.row.matId"
@update:newValue="handleSelectedMaterial(scope.$index, $event)"
v-bind:disabled="ctrView || ctrSave" /> -->
<el-input class="!w-265px" placeholder="物料编码" disabled v-model="scope.row.matCode" readonly>
<!-- <template #append ><el-button @click="onAddItem" > <Icon icon="ep:search" class="mr-5px" /> </el-button></template> -->
</el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matUnit" label="系统单位" min-width="100" align="center">
<!-- <template #default="scope">-->
<!-- <dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" v-if="scope.row.matUnit ? true : false" />-->
<!-- </template>-->
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" disabled />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template #default="scope">
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" disabled>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 物料信息-计划 -->
<el-card class="hl-card-info" v-if="formData.purchaseType == 1 && formData.goodsType == 1">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物料信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItemOpen" disabled>新增</el-button>
</el-col>
<el-form ref="subMatPlanFormRef" :model="formData.matItemDOList" :rules="subMatPlanFormRules" v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
<el-table-column prop="matId" fixed min-width="200" align="center">
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matId`" :rules="subMatPlanFormRules.matId" class="mb-0px!">
<MaterialSelect :key="scope.row.matId" v-model="scope.row.matId" disabled @update:new-value="handleSelectedMaterial(scope.$index, $event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType" v-if="typeof scope.row.matUnit === 'number'"/>
</template>
</el-table-column>
<el-table-column prop="matSpec" label="规格/型号" min-width="120" align="center" />
<el-table-column prop="requireAmount" label="需求数量" min-width="100" align="center" />
<el-table-column prop="matRest" label="库存数量" min-width="100" align="center" />
<el-table-column prop="purchaseAmount" min-width="180" align="center">
<template #header><span class="hl-table_header">*</span>采购数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.purchaseAmount`" :rules="subMatPlanFormRules.purchaseAmount" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.purchaseAmount" placeholder="采购数量" @change="handleEstimatedPrice" :min="0" :precision="2" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="estimatedPrice" min-width="200" align="center">
<template #header><span class="hl-table_header">*</span>暂估单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.estimatedPrice`" :rules="subMatPlanFormRules.estimatedPrice" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.estimatedPrice" placeholder="暂估单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="actualPrice" min-width="200" align="center">
<template #header>实际单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.actualPrice`" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.actualPrice" placeholder="实际单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<template #header> <span class="hl-table_header">*</span>预计到货日期 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!">
<el-date-picker v-model="row.arriveTime" type="date" value-format="x" placeholder="预计到货日期" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="requireArriveTime" label="需求到货日期(最早)" min-width="200" align="center">
<template #default="scope">
{{
formatDate(scope.row.requireArriveTime, 'YYYY-MM-DD')
}}
</template>
</el-table-column>
<el-table-column prop="matUnit" label="系统单位" min-width="100" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" v-if="typeof scope.row.matUnit === 'number'"/>
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" disabled />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template #default="scope">
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" disabled>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 加工件信息-非计划 -->
<el-card class="hl-card-info" v-if="formData.purchaseType == 2 && formData.goodsType == 2">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">采购明细</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onBoomAddItem" disabled>新增</el-button>
</el-col>
<el-form ref="subBoomFormRef" :model="formData.boomItemDOList" :rules="subBoomFormRules" v-loading="subBoomFormLoading" label-width="0">
<el-table :data="formData.boomItemDOList" class="hl-table" :stripe="true">
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
<el-table-column prop="boomName" min-width="180" label="零件名称" align="center">
<template #header><span class="hl-table_header">*</span>零件名称</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomName`" class="mb-0px!" :rules="subBoomFormRules.boomName">
<el-input v-model="scope.row.boomName" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomSpec" min-width="120" label="规格型号" align="center">
<template #default="scope">
<el-input v-model="scope.row.boomSpec" disabled />
</template>
</el-table-column>
<el-table-column prop="composition" min-width="180" label="材质" align="center">
<template #header><span class="hl-table_header">*</span>材质</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.composition`" :rules="subBoomFormRules.composition" class="mb-0px!">
<CompositionSelect v-model="scope.row.composition" disabled @update:new-value="(val) => { row.composition = val.id; }" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomPurchaseAmount" min-width="180" align="center">
<template #header><span class="hl-table_header">*</span>采购数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomPurchaseAmount`" :rules="subBoomFormRules.boomPurchaseAmount" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.boomPurchaseAmount" placeholder="采购数量" @change="handleEstimatedPrice" :min="0" :precision="2" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomEstimatedPrice" min-width="200" align="center">
<template #header><span class="hl-table_header">*</span>暂估单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomEstimatedPrice`" :rules="subBoomFormRules.boomEstimatedPrice" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.boomEstimatedPrice" placeholder="暂估单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomActualPrice" min-width="200" align="center">
<template #header>实际单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomActualPrice`" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.boomActualPrice" placeholder="实际单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<template #header> <span class="hl-table_header">*</span>预计到货时间 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomArriveTime`" :rules="subBoomFormRules.boomArriveTime" class="mb-0px!" >
<el-date-picker v-model="scope.row.boomArriveTime" type="date" value-format="x" placeholder="预计到货时间" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomUnit" label="系统单位" min-width="100" align="center">
<template #default="scope">
<el-select v-model="scope.row.boomUnit" placeholder="下拉选择" clearable disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="boomDescription" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.boomDescription" disabled/>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template #default="scope">
<el-button link type="danger" size="small" @click.prevent="handleDeleteBoom(scope.$index)" disabled>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 加工件信息-计划 -->
<el-card class="hl-card-info" v-if="formData.purchaseType == 1 && formData.goodsType == 2">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">采购明细</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onBoomAddItemOpen" disabled>新增</el-button>
</el-col>
<el-form ref="subBoomPlanFormRef" :model="formData.boomItemDOList" :rules="subBoomPlanFormRules" label-width="0">
<el-table :data="formData.boomItemDOList" class="hl-table">
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
<el-table-column prop="materialName" fixed label="零件名称" min-width="120" align="center" />
<!-- <el-table-column prop="boomName" fixed min-width="200" align="center">
<template #header> <span class="hl-table_header">*</span>零件名称 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.boomDetailId`" :rules="subMatPlanFormRules.boomDetailId" class="mb-0px!">
<MaterialSelect :key="scope.row.boomDetailId" v-model="scope.row.boomDetailId" disabled @update:new-value="handleSelectedBoomMaterial(scope.$index, $event)" />
</el-form-item>
</template>
</el-table-column> -->
<el-table-column prop="boomSpec" label="规格型号" min-width="120" align="center" />
<el-table-column prop="compositionName" min-width="180" label="材质" align="center">
<!-- <template #header>材质</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.composition`" class="mb-0px!">
<CompositionSelect v-model="row.composition" disabled @update:new-value="(val) => { row.composition = val.id; }" />
</el-form-item>
</template> -->
</el-table-column>
<el-table-column prop="boomAmount" label="需求数量" min-width="100" align="center" />
<el-table-column prop="purchaseAmount" min-width="180" align="center">
<template #header><span class="hl-table_header">*</span>采购数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.purchaseAmount`" :rules="subMatPlanFormRules.purchaseAmount" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.purchaseAmount" placeholder="采购数量" @change="handleEstimatedPrice" :min="0" :precision="2" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="estimatedPrice" min-width="200" align="center">
<template #header><span class="hl-table_header">*</span>暂估单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.estimatedPrice`" :rules="subMatPlanFormRules.estimatedPrice" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.estimatedPrice" placeholder="暂估单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="actualPrice" min-width="200" align="center">
<template #header>实际单价</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.actualPrice`" class="mb-0px!">
<el-input-number style="width: 100%" v-model="scope.row.actualPrice" placeholder="实际单价" @change="handleEstimatedPrice" :min="0" :precision="6" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="200" prop="arriveTime" align="center">
<template #header> <span class="hl-table_header">*</span>预计到货日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!">
<el-date-picker v-model="row.arriveTime" type="date" value-format="x" placeholder="预计到货日期" disabled />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="boomArriveDate" label="需求到货日期(最早)" min-width="200" align="center">
<template #default="scope">
{{
formatDate(scope.row.boomArriveDate, 'YYYY-MM-DD')
}}
</template>
</el-table-column>
<el-table-column prop="boomUnit" label="系统单位" min-width="100" align="center">
<template #default="scope">
<!-- <el-select v-model="scope.row.boomUnit" placeholder="下拉选择" clearable :disabled="formData.status == 2 || formData.status == 3">-->
<!-- <el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)" :key="dict.value" :label="dict.label" :value="dict.value" />-->
<!-- </el-select>-->
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.boomUnit" v-if="scope.row.boomUnit ? true : false" />
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" disabled />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template #default="scope">
<el-button link type="danger" size="small" @click.prevent="handleDeleteBoom(scope.$index)" disabled>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 附件信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-upload
ref="matUploadRef" :file-list="matUploadFiles" multiple :action="uploadUrl" :headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" :on-error="handleError" :on-success="handleSuccess" :before-upload="before" class="upload-file-uploader">
<el-button type="primary" disabled>
<Icon icon="ep:upload-filled" />上传
</el-button>
</el-upload>
</el-col>
<el-table :data="formData.attachments" class="hl-table" v-loading.fullscreen.lock="uploading" element-loading-text="附件上传中..." element-loading-background="rgba(122, 122, 122, 0.6)">
<el-table-column prop="name" label="文件名称" align="center">
<!-- <template #default="scope">
<a :href="scope.row.url" target="_blank" style="color: #409eff">{{ scope.row.name }} </a>
</template> -->
</el-table-column>
<el-table-column prop="createTime" align="center" label="上传日期" :formatter="dateFormatter" />
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" size="small" disabled @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
删除
</el-button>
<el-button link type="primary" size="small" disabled @click="downloadAttachment(scope.row.name, scope.row.url)">
下载
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 系统信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">系统信息</span>
</template>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="creator" label="创建人">
{{ userList.find((user) => user.id == formData.creator)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="createTime" label="创建时间">
{{ formatDate(formData.createTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</el-row>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="submitUserId" label="送审人">
{{ userList.find((user) => user.id == formData.submitUserId)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="submitTime" label="送审时间">
{{ formatDate(formData.submitTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</el-row>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="auditor" label="审核人">
{{ userList.find((user) => user.id == formData.auditor)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="auditTime" label="审核时间">
{{ formatDate(formData.auditTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
<div class="hl-footer text-center">
<el-button @click="closeForm" size="large"> </el-button>
</div>
</el-card>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
import * as PurchaseOrderBoomApi from '@/api/heli/purchaseorderboom'
import * as UserApi from '@/api/system/user'
import * as MaterialApi from '@/api/heli/material'
import * as SupplierApi from '@/api/heli/supplier'
import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file'
import download from '@/utils/download'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
import { useTagsViewStore } from '@/store/modules/tagsView'
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
import CompositionSelect from '@/views/heli/hlvuestyle/compositionSelect.vue'
import materials from '@/views/heli/storage/materials.vue'
import MaterialDialog from '@/views/heli/purchaseorder/materialDialog.vue'
import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue'
import SupplierSelect from '@/views/heli/hlvuestyle/supplierSelect.vue'
import {setFlagsFromString} from "node:v8";
const reload: any = inject('reload')
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const { query } = useRoute()
const router = useRouter()
const tagsViewStore = useTagsViewStore()
const dialogVisible = ref(false) // 弹窗的是否展示
const formLoading = ref(false) // 表单的加载中1修改时的数据加载2提交的按钮禁用
const formData = ref({
id: undefined,
purchaseNo: undefined,
supplierId: undefined,
contractNo: undefined,
projectMaterialPlanNo: undefined,
projectMaterialPlanId: undefined,
goodsType: undefined,
currencyType: undefined,
estimatedPrice: undefined,
actualPrice: undefined,
taxRatio: undefined,
receivingStatus: undefined,
status: undefined,
createTime: undefined,
description: undefined,
matItemDOList: [],
matItemRemoveList: [],
boomItemDOList: [],
boomItemRemoveList: [],
attachments: [],
creator:undefined,
submitUserId:undefined,
submitTime:undefined,
auditor:undefined,
auditTime:undefined,
})
const formRules = reactive({
currencyType: [{ required: true, message: '结算币种不能为空', trigger: 'blur' }]
})
const subFormRules = reactive({
matId: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
estimatedPrice: [{ required: true, message: '暂估单价不能为空', trigger: 'blur' }],
purchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }]
})
const subBoomFormRules = reactive({
boomName: [{ required: true, message: '零件名称不能为空', trigger: 'blur' }],
composition: [{ required: true, message: '材质不能为空', trigger: 'blur' }],
boomPurchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }],
boomEstimatedPrice: [{ required: true, message: '暂估单价不能为空', trigger: 'blur' }],
boomArriveTime: [{ required: true, message: '预计到货时间不能为空', trigger: 'blur' }],
})
const subMatPlanFormRules = reactive({
purchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }],
estimatedPrice: [{ required: true, message: '暂估单价不能为空', trigger: 'blur' }]
})
const subBoomPlanFormRules = reactive({
boomName: [{ required: true, message: '零件名称不能为空', trigger: 'blur' }],
boomPurchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }],
boomEstimatedPrice: [{ required: true, message: '暂估单价不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
const subFormRef = ref() // 表单 Ref
const subMatPlanFormRef = ref()
const subBoomPlanFormRef = ref()
const subBoomFormRef = ref()
const subBoomFormLoading = ref(false)
const matOpenFormRef = ref()
// const handleSelectedMaterialPlanMat = (arr) => {
// arr.forEach((item) => {
// if (formData.value.matItemDOList.filter((vo) => vo.matId == item.matId).length == 0) {
// item.description = ''
// formData.value.matItemDOList.push(item)
// }
// })
// }
const handleSelectedMaterialPlanMat = (arr) => {
// 创建一个 Set 来存储现有的 matId
debugger
const existingMatIds = new Set(formData.value.matItemDOList.map(vo => vo.matId));
arr.forEach((item) => {
if (!existingMatIds.has(item.matId)) {
item.description = '';
item.matType=Number(item.matType)
item.matUnit=Number(item.matUnit)
formData.value.matItemDOList.push(item);
existingMatIds.add(item.matId); // 将新添加的 matId 加入 Set
}
});
};
const handleSelectedMaterialPlanBoom =async (arrBoom) => {
//debugger
const existingBoomDetailIds = new Set(formData.value.boomItemDOList.map(boom => boom.boomDetailId));
arrBoom.forEach((item) => {
if (!existingBoomDetailIds.has(item.boomDetailId)) {
item.description = '';
// formData.value.boomItemDOList.requireTime = item.boomArriveDate
// formData.value.boomItemDOList.composition = item.compositionName
// formData.value.boomItemDOList.boomName = item.materialName
formData.value.boomItemDOList.push(item);
existingBoomDetailIds.add(item.boomDetailId); // 将新添加的 boomDetailId 加入 Set
}
});
}
// const getBoomList = async (arrBoom) => {
// //formData.value.boomItemDOList = arrBoom
// arrBoom.forEach((item) => {
// if (
// formData.value.boomItemDOList.filter(
// (boom) =>
// item.materialName == boom.materialName && item.projectSubCode == boom.projectSubCode
// ).length == 0
// ) {
// formData.value.boomItemDOList.push(item)
// }
// })
// }
const handleEstimatedPrice = () => {
let allEstimatePrice = 0
formData.value.matItemDOList.forEach((item) => {
allEstimatePrice += ((item.purchaseAmount==null || item.purchaseAmount==undefined)?0:item.purchaseAmount)*((item.estimatedPrice==null || item.estimatedPrice==undefined)?0:item.estimatedPrice)
})
formData.value.boomItemDOList.forEach((item) => {
allEstimatePrice += ((item.purchaseAmount==null || item.purchaseAmount==undefined)?0:item.purchaseAmount)*((item.estimatedPrice==null || item.estimatedPrice==undefined)?0:item.estimatedPrice)
})
formData.value.estimatedPrice = allEstimatePrice
let allActualPrice = 0
formData.value.matItemDOList.forEach((item) => {
allActualPrice += ((item.purchaseAmount==null || item.purchaseAmount==undefined)?0:item.purchaseAmount)*((item.actualPrice==null || item.actualPrice==undefined)?0:item.actualPrice)
})
formData.value.boomItemDOList.forEach((item) => {
allActualPrice += ((item.purchaseAmount==null || item.purchaseAmount==undefined)?0:item.purchaseAmount)*((item.actualPrice==null || item.actualPrice==undefined)?0:item.actualPrice)
})
formData.value.actualPrice = allActualPrice
}
const handleActualPrice = () => {
}
// ====================附件信息 开始=======================================
const uploadUrl = ref(import.meta.env.VITE_UPLOAD_BATCH_URL)
const matUploadRef = ref()
const uploading = ref(false)
const matUploadFiles = ref<UploadUserFile[]>([])
const matUploadData = ref({
businessType: 'PURCHASEORDER',
businessId: formData.value.id,
businessFileType: 'MATERIAL'
})
const matUploadChange = (file, files) => {
matUploadFiles.value = files
refreshAttachments(files, 'MATERIAL')
}
// 记录待上传、成功上传及失败上传的文件数量
const sumbefore = ref(0)
const successfulUploadsCount = ref(0)
const failedUploadsCount = ref(0)
const failedAttachments = ref<UploadUserFile[]>([])
const failedAttachmentsName = ref()
// / 处理单个文件上传成功的情况
const handleSuccess = (response: any, file: UploadUserFile) => {
successfulUploadsCount.value++
// 更新附件信息等其他逻辑...
// console.log('上传成功数量', successfulUploadsCount.value)
}
// 处理单个文件上传失败的情况
const handleError = (error: Error, file: UploadUserFile) => {
failedUploadsCount.value++
if (failedUploadsCount.value > 0) {
// 当有上传错误时
// 将失败的附件添加到failedAttachments.value数组中
failedAttachments.value.push(file)
failedAttachmentsName.value = failedAttachments.value.map((value) => value.name)
}
// console.log('上传失败数量', failedUploadsCount.value)
}
// 文件上传前的钩子
const before = (rawFile) => {
sumbefore.value++
}
const refreshAttachments = (files, type) => {
formData.value.attachments = formData.value.attachments.filter((value) => value.id)
// 避免重复添加
const newFiles = files.filter(
(file) => !formData.value.attachments.some((att) => att.name === file.name)
)
for (let i = 0; i < newFiles.length; i++) {
let file = newFiles[i]
file.businessFileType = type
file.createTime = new Date()
formData.value.attachments.push(file)
}
// 排序
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
// 文件上传一遍 上传总数等于要上传文件时 刷新页面
const sum = successfulUploadsCount.value + failedUploadsCount.value
// console.log('上传总数', sum)
// console.log('要上传文件数量', sumbefore.value)
if (sumbefore.value !== sum && sumbefore.value !== 0 && sum !== 0) {
// console.log('要上传文件数量不等于上传总数时等待',uploading.value)
uploading.value = true
} else if (sum == sumbefore.value && sumbefore.value > 0 && sum > 0) {
// console.log('要上传文件数量等于上传总数 刷新页面并给出提示')
if (failedUploadsCount.value > 0) {
ElMessageBox.alert(
// 使用错误信息作为提示内容
`文件名为:${failedAttachmentsName.value.join(' / ')}上传失败`,
`文件格式不正确或网络问题 请您稍后再试`,
{
dangerouslyUseHTMLString: false,
confirmButtonText: '知道了',
center: true
}
)
}
reload()
uploading.value = false
}
}
// 删除附件
const handleDeleteAttachment = async (index, type) => {
const deletedAttachments = formData.value.attachments.splice(index, 1)
for (let i = 0; i < deletedAttachments.length; i++) {
const attachment = deletedAttachments[i]
if (attachment.id) {
// 清理已上传文件
await deleteFile(attachment.id)
}
// 清理待上传文件
matUploadFiles.value = matUploadFiles.value.filter((file1) => {
return file1.name != attachment.name || file1.businessFileType != type
})
}
}
// 下载文件
const downloadAttachment = async (name, url) => {
if (url) {
const data = await downloadFile(url)
download.any(data, name)
}
}
// ====================附件信息 结束=======================================
// 远程数据筛选物料
const getMatList = async (name) => {
// 获得物料列表
let matParams = {
pageNo: 1,
pageSize: 10,
status: '1'
}
if (name.length > 0) {
matParams.code = name
}
const dataMat = await MaterialApi.getMaterialPage(matParams)
matList.value = dataMat.list
}
const matList = ref<MaterialApi.MaterialVO[]>([]) // 物料列表
const matSelectLoading = ref(false)
const remoteMatNameSearch = async (name) => {
matSelectLoading.value = true
// 获得物料列表
await getMatList(name)
matSelectLoading.value = false
}
const handleMatName = async (scope, matid) => {
scope.row.matId = matList.value.find((item) => item.id === matid)?.id
scope.row.matName = matList.value.find((item) => item.id === matid)?.name
scope.row.matCode = matList.value.find((item) => item.id === matid)?.code
scope.row.matSpec = matList.value.find((item) => item.id === matid)?.spec
scope.row.matType = matList.value.find((item) => item.id === matid)?.materialType
scope.row.matUnit = matList.value.find((item) => item.id === matid)?.unit
}
//新增物料信息
const onAddItem = () => {
matOpenFormRef.value.open(0,'group')
// const newData = {
// // 新数据的属性
// purchaseOrderId: 0,
// matId: '',
// matName: '',
// matCode: '',
// matType: '',
// matSpec: '',
// matUnit: '',
// purchaseAmount: undefined,
// estimatedPrice: undefined,
// actualPrice: undefined,
// arriveTime: '',
// description: ''
// }
// formData.value.matItemDOList.push(newData)
}
const getList = async (arrMat) => {
arrMat.forEach((row) => {
if ( formData.value.matItemDOList.filter((item) => item.matId == row.matId).length == 0)
{
row.id = undefined
formData.value.matItemDOList.push(row)
}
})
}
const materialDialog = ref()
const onAddItemOpen = () => {
materialDialog.value.open(formData.value.projectMaterialPlanId)
}
const boomDialog = ref()
const onBoomAddItemOpen = () => {
boomDialog.value.open(formData.value.projectMaterialPlanId)
}
//删除新增物料信息
const handleDelete2 = (index: number) => {
formData.value.matItemRemoveList.push(formData.value.matItemDOList[index])
formData.value.matItemDOList.splice(index, 1)
handleActualPrice()
handleEstimatedPrice()
}
// 保存物料信息
const saveMaterials = async () => {
formData.value.matItemDOList.forEach(async (item) => {
var subData = item as unknown as PurchaseOrderMaterialApi.PurchaseOrderMaterialVO
subData.materialId = item.matId
subData.purchaseOrderId = formData.value.id
if (subData.id == undefined) {
subData.id = await PurchaseOrderMaterialApi.createPurchaseOrderMaterial(subData)
} else {
await PurchaseOrderMaterialApi.updatePurchaseOrderMaterial(subData)
}
})
formData.value.matItemRemoveList.forEach(async (item) => {
if (item.id != undefined) {
await PurchaseOrderMaterialApi.deletePurchaseOrderMaterial(item.id)
}
})
}
//新增物料信息
const onBoomAddItem = () => {
const newData = {
// 新数据的属性
purchaseOrderId: 0,
boomDetailId: undefined,
boomName: '',
boomSpec: '',
composition: '',
boomUnit: '',
boomAmount: undefined,
boomPurchaseAmount: undefined,
boomEstimatedPrice: undefined,
boomActualPrice: undefined,
boomArriveTime: '',
boomArriveDate: '',
boomDescription: ''
}
formData.value.boomItemDOList.push(newData)
}
// 保存加工件信息
const saveBooms = async () => {
formData.value.boomItemDOList.forEach(async (item) => {
var subData = item as unknown as PurchaseOrderBoomApi.PurchaseOrderBoomVO
subData.boomName = item.materialName
subData.purchaseAmount = item.purchaseAmount
subData.estimatedPrice = item.estimatedPrice
subData.actualPrice = item.actualPrice
subData.arriveTime = item.arriveTime
subData.requireTime = item.boomArriveDate
subData.description = item.description
subData.composition = item.compositionName
subData.purchaseOrderId = formData.value.id
if (subData.id == undefined) {
subData.id = await PurchaseOrderBoomApi.createPurchaseOrderBoom(subData)
} else {
await PurchaseOrderBoomApi.updatePurchaseOrderBoom(subData)
}
})
formData.value.boomItemRemoveList.forEach(async (item) => {
if (item.id != undefined) {
await PurchaseOrderBoomApi.deletePurchaseOrderBoom(item.id)
}
})
}
//删除新增物料信息
const handleDeleteBoom = (index: number) => {
formData.value.boomItemRemoveList.push(formData.value.boomItemDOList[index])
formData.value.boomItemDOList.splice(index, 1)
handleActualPrice()
handleEstimatedPrice()
}
const closeForm = async () => {
router.push({ path: '/purchase/purchaseorder' })
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const deleteForm = async () => {
// 提示用户是否保存入库信息
await message.confirm('确认删除当前采购订单?')
await PurchaseOrderApi.deletePurchaseOrder(formData.value.id)
router.push({ path: '/purchase/purchaseorder' })
tagsViewStore.delVisitedView(router.currentRoute.value)
}
// 保存按钮数据提交
const saveForm = async () => {
let validateForm = formData.value.purchaseType + '' + formData.value.goodsType
// 校验子表单
try {
switch (validateForm) {
case "11":
//计划+物料
await subMatPlanFormRef.value.validate()
break
case "12":
//计划+加工件
await subBoomPlanFormRef.value.validate()
break
case "21":
//备库+物料
await subFormRef.value.validate()
break
case "22":
//备库+加工件
await subBoomFormRef.value.validate()
break
default:
break
}
} catch (e) {
return
}
let flag=false
if (formData.value.purchaseType==1&&formData.value.goodsType==1){
for (var i=0;i<formData.value.matItemDOList.length;i++){
const requireAmount = formData.value.matItemDOList[i].requireAmount;
const purchaseAmount = formData.value.matItemDOList[i].purchaseAmount;
if (requireAmount!=purchaseAmount){
flag=true;
}
}
}
if (formData.value.purchaseType==1&&formData.value.goodsType==2){
for (var i=0;i<formData.value.boomItemDOList.length;i++){
const requireAmount = formData.value.boomItemDOList[i].boomAmount;
const purchaseAmount = formData.value.boomItemDOList[i].purchaseAmount;
if (requireAmount!=purchaseAmount){
flag=true;
}
}
}
if (flag){
await message.confirm('需求数量和采购数量不一致,是否继续?')
}
// 提交请求
formLoading.value = true
try {
const data = formData.value as unknown as PurchaseOrderApi.PurchaseOrderVO
var purchaseOrderId = await PurchaseOrderApi.updatePurchaseOrder(data)
// 保存物料信息
await saveMaterials()
// 保存加工件信息
await saveBooms()
//formData.value.matItemDOList
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
//附件信息保存
matUploadData.value.businessId = formData.value.id
await matUploadRef.value!.submit()
}
message.success(t('common.updateSuccess'))
dialogVisible.value = false
// 发送操作成功的事件
emit('success')
} finally {
if (sumbefore.value == 0) {
reload()
}
formLoading.value = false
}
}
// 送审按钮数据提交
const submitForm = async () => {
if (formData.value.goodsType == 1 && formData.value.matItemDOList.length == 0) {
message.alertWarning('请添加物料信息!')
return
}
if (formData.value.goodsType == 2 && formData.value.boomItemDOList.length == 0) {
message.alertWarning('请添加加工件信息!')
return
}
let validateForm = formData.value.purchaseType + '' + formData.value.goodsType
// 校验子表单
try {
switch (validateForm) {
case '11':
//计划+物料
await subMatPlanFormRef.value.validate()
break
case '12':
//计划+加工件
await subBoomPlanFormRef.value.validate()
break
case '21':
//备库+物料
await subFormRef.value.validate()
break
case '22':
//备库+加工件
await subBoomFormRef.value.validate()
break
default:
break
}
} catch (e) {
return
}
// 计划状态为已送审
formData.value.receivingStatus = 2
formData.value.status = 2
formData.value.submitUserId = useUserStore().getUser.id
await saveForm()
}
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
const supplierInit = ref()
// const matSimpList = ref([]) // 物料基本信息列表
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
purchaseOrderId: query.id
})
const matSimpList = ref([]) // 物料基本信息列表
// 页面数据加载初始化
onMounted(async () => {
// 获取采购订单信息
formData.value = await PurchaseOrderApi.getPurchaseOrder(query.id)
// 获取物料需求计划编号
if (
formData.value.purchaseType == 1 &&
formData.value.projectMaterialPlanId != undefined &&
formData.value.projectMaterialPlanId != ''
) {
const matPlanDo = await MaterialPlanApi.getMaterialPlan(formData.value.projectMaterialPlanId)
formData.value.materialPlanNo = matPlanDo.projectMaterialPlanNo
}
// 获取原始物料信息
matSimpList.value = await MaterialApi.getSimpList()
// 获取物料需求计划的物料列表
formData.value.matItemDOList = (
await PurchaseOrderMaterialApi.getPurchaseOrderMaterialPage(queryParams)
).list
var matTypes = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)
var matUnits = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)
formData.value.matItemDOList.forEach((item) => {
matList.value.push({ id: item.materialId, code: item.matCode })
item.matType = matTypes.find( op => op.value == matSimpList.value.find((record) => record.id === item.materialId)?.material_type)?.label
item.matUnit = matUnits.find( op => op.value == matSimpList.value.find((record) => record.id === item.materialId)?.unit)?.label
})
formData.value.matItemRemoveList = []
formData.value.boomItemRemoveList = []
// 获取采购订单数据
formData.value.boomItemDOList = (
await PurchaseOrderBoomApi.getPurchaseOrderBoomPage(queryParams)
).list;
// 遍历每个 item进行属性赋值
formData.value.boomItemDOList.forEach((item) => {
if (item) { // 确保 item 存在
item.boomPurchaseAmount = item.purchaseAmount;
item.boomEstimatedPrice = item.estimatedPrice;
item.boomActualPrice = item.actualPrice;
item.boomArriveTime = item.arriveTime;
item.boomArriveDate = item.requireTime;
item.boomDescription = item.description;
item.materialName = item.boomName;
item.compositionName = item.composition;
// 确保 composition 是一个有效的数组
if (Array.isArray(item.composition) && item.composition.length > 0) {
item.composition = Number(item.composition);
}
}
});
// 获取加工件列表
// formData.value.boomItemDOList = (
// await PurchaseOrderBoomApi.getPurchaseOrderBoomPage(queryParams)
// ).list
// formData.value.boomItemDOList.forEach((item) => {
// item.boomPurchaseAmount = item.purchaseAmount
// item.boomEstimatedPrice = item.estimatedPrice
// item.boomActualPrice = item.actualPrice
// item.boomArriveTime = item.arriveTime
// item.boomArriveDate = item.requireTime
// item.boomDescription = item.description
// if (item.composition.length > 0) item.composition = Number(item.composition)
// })
// 附件信息
let attParams = {
pageNo: 1,
pageSize: 99,
businessId: query.id,
businessType: 'PURCHASEORDER'
}
formData.value.attachments = (await getFilePage(attParams)).list
//用户信息,用于底部数据展示
userList.value = await UserApi.getSimpleUserList()
supplierInit.value = await SupplierApi.getSimpList()
})
//接收物料传递的数据
const handleSelectedMaterial = (currentIndex: number, newValue: any) => {
// console.log(currentIndex,'接收物料对应的数据:', newValue)
formData.value.matItemDOList[currentIndex].matId = newValue?.id
formData.value.matItemDOList[currentIndex].matName = newValue?.name
formData.value.matItemDOList[currentIndex].matCode = newValue?.code
formData.value.matItemDOList[currentIndex].matSpec = newValue?.spec
formData.value.matItemDOList[currentIndex].matType = newValue?.materialType
formData.value.matItemDOList[currentIndex].matUnit = newValue?.unit
}
//接收加工件物料传递的数据
const handleSelectedBoomMaterial = (currentIndex: number, newValue: any) => {
// console.log(currentIndex,'接收物料对应的数据:', newValue)
formData.value.boomItemDOList[currentIndex].boomDetailId = newValue?.id
formData.value.boomItemDOList[currentIndex].materialName = newValue?.name
// formData.value.boomItemDOList[currentIndex].matCode = newValue?.code
// formData.value.boomItemDOList[currentIndex].matSpec = newValue?.spec
// formData.value.boomItemDOList[currentIndex].matType = newValue?.materialType
// formData.value.boomItemDOList[currentIndex].matUnit = newValue?.unit
}
//接收供应商传递的数据
const handleSelectedSupplier = (newValue: any) => {
formData.value.supplierId = newValue?.id
}
</script>