|
|
|
|
@ -1,10 +1,9 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div class="p-2">
|
|
|
|
|
<!-- 统一表单包裹所有分区,便于整体验证 -->
|
|
|
|
|
<el-form ref="quoteFormRef" :model="form" :rules="rules" label-width="120px" :disabled="isView">
|
|
|
|
|
<el-card shadow="never">
|
|
|
|
|
<div style="margin-bottom: 12px; text-align: center; font-weight: bold; font-size: 18px">添加报价单基本信息</div>
|
|
|
|
|
<div class="basic-center">
|
|
|
|
|
<!-- 统一表单包裹所有分区,便于整体验证 -->
|
|
|
|
|
<el-form ref="quoteFormRef" :model="form" :rules="rules" label-width="120px" :disabled="isView">
|
|
|
|
|
<el-divider content-position="left">基本信息</el-divider>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="报价单编号" prop="quoteCode">
|
|
|
|
|
@ -140,8 +139,6 @@
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<!-- 报价物料编辑对话框 -->
|
|
|
|
|
<el-dialog :title="materialDialog.title" v-model="materialDialog.visible" width="800px" append-to-body>
|
|
|
|
|
<el-form ref="materialFormRef" :model="materialForm" :rules="materialRules" label-width="120px">
|
|
|
|
|
@ -218,115 +215,86 @@
|
|
|
|
|
<!-- 销售物料选择 -->
|
|
|
|
|
<SaleMaterialSelect ref="saleMaterialSelectRef" :multiple="false" @confirm-call-back="saleMaterialSelectCallBack" />
|
|
|
|
|
|
|
|
|
|
<!-- 客户方/供货方信息(左右并列对称布局) -->
|
|
|
|
|
<el-row :gutter="20" style="margin-top: 20px">
|
|
|
|
|
<!-- 对齐合同编辑页:单卡片内分区展示 -->
|
|
|
|
|
<el-divider content-position="left">客户方信息</el-divider>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-card shadow="never">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div style="text-align: left; font-weight: bold; font-size: 18px">客户方信息</div>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="客户联系人" prop="customerContactId">
|
|
|
|
|
<el-select v-model="form.customerContactId" filterable placeholder="请选择客户联系人" @change="onCustomerContactChanged">
|
|
|
|
|
<el-option v-for="c in customerContactList" :key="c.contactId" :label="c.contactName + ' - ' + (c.phoneNumber||'')" :value="c.contactId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="客户联系电话" prop="customerContactPhone">
|
|
|
|
|
<el-input v-model="form.customerContactPhone" placeholder="客户联系电话" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="客户邮箱" prop="customerContactEmail">
|
|
|
|
|
<el-input v-model="form.customerContactEmail" placeholder="客户邮箱" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-form-item label="客户联系人" prop="customerContactId">
|
|
|
|
|
<el-select v-model="form.customerContactId" filterable placeholder="请选择客户联系人" @change="onCustomerContactChanged">
|
|
|
|
|
<el-option v-for="c in customerContactList" :key="c.contactId" :label="c.contactName + ' - ' + (c.phoneNumber||'')" :value="c.contactId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-card shadow="never">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div style="text-align: left; font-weight: bold; font-size: 18px">供货方信息</div>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="计划标识" prop="supplierPlanFlag">
|
|
|
|
|
<el-radio-group v-model="supplierPlanFlag" @change="onSupplierPlanFlagChanged">
|
|
|
|
|
<el-radio value="1">计划内</el-radio>
|
|
|
|
|
<el-radio value="2">计划外</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24" v-if="supplierPlanFlag === '1'">
|
|
|
|
|
<el-form-item label="供应商" prop="supplierContactId">
|
|
|
|
|
<el-select v-model="form.supplierContactId" filterable placeholder="请选择供应商" @change="onSupplierChanged">
|
|
|
|
|
<el-option v-for="s in supplierList" :key="s.supplierId" :label="s.supplierName" :value="s.supplierId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="供货方联系人" prop="supplierContactName">
|
|
|
|
|
<el-input v-model="form.supplierContactName" placeholder="供货方联系人" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="供货方联系电话" prop="supplierContactPhone">
|
|
|
|
|
<el-input v-model="form.supplierContactPhone" placeholder="供货方联系电话" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="供货方邮箱" prop="supplierContactEmail">
|
|
|
|
|
<el-input v-model="form.supplierContactEmail" placeholder="供货方邮箱" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-form-item label="客户联系电话" prop="customerContactPhone">
|
|
|
|
|
<el-input v-model="form.customerContactPhone" placeholder="客户联系电话" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="客户邮箱" prop="customerContactEmail">
|
|
|
|
|
<el-input v-model="form.customerContactEmail" placeholder="客户邮箱" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
<!-- 附件(独立分区,样式参考合同编辑页) -->
|
|
|
|
|
<el-card shadow="never" style="margin-top: 20px">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div style="text-align: left; font-weight: bold; font-size: 18px">附件</div>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<!-- 与合同页对齐,采用“附件”表单项与上传按钮 -->
|
|
|
|
|
<el-form-item label="附件">
|
|
|
|
|
<el-button type="primary" plain icon="Upload" @click="handleFile" :disabled="isView">上传附件</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-divider content-position="left">供货方信息</el-divider>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="计划标识" prop="supplierPlanFlag">
|
|
|
|
|
<el-radio-group v-model="supplierPlanFlag" @change="onSupplierPlanFlagChanged">
|
|
|
|
|
<el-radio value="1">计划内</el-radio>
|
|
|
|
|
<el-radio value="2">计划外</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-if="supplierPlanFlag === '1'">
|
|
|
|
|
<el-form-item label="供应商" prop="supplierContactId">
|
|
|
|
|
<el-select v-model="form.supplierContactId" filterable placeholder="请选择供应商" @change="onSupplierChanged">
|
|
|
|
|
<el-option v-for="s in supplierList" :key="s.supplierId" :label="s.supplierName" :value="s.supplierId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="供货方联系人" prop="supplierContactName">
|
|
|
|
|
<el-input v-model="form.supplierContactName" placeholder="供货方联系人" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="供货方联系电话" prop="supplierContactPhone">
|
|
|
|
|
<el-input v-model="form.supplierContactPhone" placeholder="供货方联系电话" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="供货方邮箱" prop="supplierContactEmail">
|
|
|
|
|
<el-input v-model="form.supplierContactEmail" placeholder="供货方邮箱" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
<el-divider content-position="left">附件与备注</el-divider>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="附件">
|
|
|
|
|
<el-button type="primary" plain icon="Upload" @click="handleFile" :disabled="isView">上传附件</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" :rows="3" placeholder="请输入备注" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<!-- 报价物料管理 -->
|
|
|
|
|
<el-divider content-position="left">报价明细</el-divider>
|
|
|
|
|
<el-row :gutter="10" class="mb-3" v-if="!isView">
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<el-button type="primary" icon="Plus" @click="handleAddMaterial">新增物料</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<!-- 备注(独立分区) -->
|
|
|
|
|
<el-card shadow="never" style="margin-top: 20px">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div style="text-align: left; font-weight: bold; font-size: 18px">备注</div>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<!-- 统一表单结束 -->
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<!-- 报价物料管理 -->
|
|
|
|
|
<el-card shadow="never" style="margin-top: 20px">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div style="text-align: left; font-weight: bold; font-size: 18px">报价明细表格</div>
|
|
|
|
|
</template>
|
|
|
|
|
<div style="margin-bottom: 12px">
|
|
|
|
|
<el-button type="primary" icon="Plus" @click="handleAddMaterial" :disabled="isView">新增物料</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<el-table :data="materialRows" border show-summary :summary-method="getSummary">
|
|
|
|
|
<el-table-column label="产品名称" align="center" prop="productName" min-width="160" />
|
|
|
|
|
<el-table-column label="规格描述" align="center" prop="specificationDescription" min-width="160" />
|
|
|
|
|
@ -367,8 +335,8 @@
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
|
|
|
|
|
<div style="margin-top: 12px; text-align: right">
|
|
|
|
|
<span style="margin-right: 16px">含税总价:{{ totalIncludingTax.toFixed(2) }}</span>
|
|
|
|
|
<div style="margin-top: 16px; padding-top: 12px; border-top: 1px solid #ebeef5; text-align: right">
|
|
|
|
|
<span style="margin-right: 20px; font-weight: bold; font-size: 14px">含税总价:<span style="color: #f56c6c">{{ totalIncludingTax.toFixed(2) }}</span></span>
|
|
|
|
|
<el-button v-if="!isView" type="primary" :loading="buttonLoading" @click="submitForm">保 存</el-button>
|
|
|
|
|
<el-button @click="goBack">返 回</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
|