|  | @@ -0,0 +1,564 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <a-spin :spinning="loading">
 | 
	
		
			
				|  |  | +    <JFormContainer :disabled="disabled">
 | 
	
		
			
				|  |  | +      <template #detail>
 | 
	
		
			
				|  |  | +        <a-form v-bind="formItemLayout" name="PuechaseInquiryFormForm" ref="formRef">
 | 
	
		
			
				|  |  | +          <a-row>
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="询价单号(bill code)" v-bind="validateInfos.billCode" id="PuechaseInquiryFormForm-billCode" name="billCode">
 | 
	
		
			
				|  |  | +								<a-input v-model:value="formData.billCode" placeholder="请输入询价单号(bill code)" disabled></a-input>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="单据日期(bill date)" v-bind="validateInfos.billDate" id="PuechaseInquiryFormForm-billDate" name="billDate">
 | 
	
		
			
				|  |  | +								<a-date-picker placeholder="请选择单据日期(bill date)"  v-model:value="formData.billDate"  value-format="YYYY-MM-DD"  style="width: 100%"  allow-clear />
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="询价项目(inquiry project)" v-bind="validateInfos.projectName" id="PuechaseInquiryFormForm-projectName" name="projectName">
 | 
	
		
			
				|  |  | +								<a-input-search v-model:value="formData.projectName" placeholder="请输入询价项目(inquiry project)" :disabled="PuechaseInquiryFormProductTable.dataSource.length!==0"  allow-clear enter-button="Search" @search="onSearchProject"></a-input-search>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="询价供应商(inquiry supplier)" v-bind="validateInfos.inquirySuppiler" id="PuechaseInquiryFormForm-inquirySuppiler" name="inquirySuppiler">
 | 
	
		
			
				|  |  | +                  <JSelectInput   v-model:value="formData.inquirySuppiler"  placeholder="请选择" allow-clear  :options="supplierOption" @change="changeSupplier"></JSelectInput>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="询价有效期(inquiry period)" v-bind="validateInfos.inquiryPeriodEnd" id="PuechaseInquiryFormForm-inquiryPeriodEnd" name="inquiryPeriodEnd">
 | 
	
		
			
				|  |  | +                <a-range-picker v-model:value="inquiryPeriod" :format="['YYYY-MM-DD','YYYY-MM-DD']"  @change="onChangeInquiryPeriod" style="width: 100%" />
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="优先级(priority)" v-bind="validateInfos.priority" id="PuechaseInquiryFormForm-priority" name="priority">
 | 
	
		
			
				|  |  | +                <JDictSelectTag v-model:value="formData.priority" placeholder="请选择" dictCode="priority"/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="产品分类(production class)" v-bind="validateInfos.productionClass" id="PuechaseInquiryFormForm-productionClass" name="productionClass">
 | 
	
		
			
				|  |  | +								<a-input v-model:value="formData.productionClass" placeholder="请输入"  allow-clear disabled></a-input>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="机型(model)" v-bind="validateInfos.model" id="PuechaseInquiryFormForm-model" name="model">
 | 
	
		
			
				|  |  | +                <JDictSelectTag v-model:value="formData.model" placeholder="请选择" dictCode="model_typer" disabled/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="厂家(maker)" v-bind="validateInfos.maker" id="PuechaseInquiryFormForm-maker" name="maker">
 | 
	
		
			
				|  |  | +								<a-input v-model:value="formData.maker" placeholder="请输入厂家(maker)"  allow-clear disabled></a-input>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="交货地点(place of delivery)" v-bind="validateInfos.placeDelivery" id="PuechaseInquiryFormForm-placeDelivery" name="placeDelivery">
 | 
	
		
			
				|  |  | +								<a-input v-model:value="formData.placeDelivery" placeholder=""  allow-clear ></a-input>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="付款条件(payment terms)" v-bind="validateInfos.paymentTerms" id="quotationFormForm-paymentTerms" name="paymentTerms" :labelCol="formItemLayout.labelCol1" :wrapperCol="formItemLayout.wrapperCol1">
 | 
	
		
			
				|  |  | +                <JDictSelectTag v-model:value="formData.paymentTerms" placeholder="请选择" dictCode="payment_terms"/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="发货方式(delivery)" v-bind="validateInfos.delivery" id="PuechaseInquiryFormForm-delivery" name="delivery">
 | 
	
		
			
				|  |  | +                <JDictSelectTag v-model:value="formData.delivery" placeholder="请选择" dictCode="delivery_methods" disabled/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="交期(delivery time)" v-bind="validateInfos.deliveryTime" id="quotationFormForm-deliveryTime" name="deliveryTime">
 | 
	
		
			
				|  |  | +								<a-date-picker placeholder="请选择交期(delivery time)"  v-model:value="formData.deliveryTime"  value-format="YYYY-MM-DD" format="YYYY-MM-DD" style="width: 100%"  allow-clear @change="changeFormDeliveryTime"/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="采购询价组(procurement inquiry team)" v-bind="validateInfos.inquiryTeam" id="PuechaseInquiryFormForm-inquiryTeam" name="inquiryTeam">
 | 
	
		
			
				|  |  | +                <JDictSelectTag v-model:value="formData.inquiryTeam" placeholder="请选择" dictCode="procurement_inquiry_team" disabled/>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="报价有效期(quotation validity period)" v-bind="validateInfos.quotationValidity" id="PuechaseInquiryFormForm-quotationValidity" name="quotationValidity">
 | 
	
		
			
				|  |  | +                <a-input v-model:value="formData.quotationValidity" placeholder="请输入" />
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						
 | 
	
		
			
				|  |  | +            <a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="询价备注(inquiry notes)" v-bind="validateInfos.inquiryNotes" id="PuechaseInquiryFormForm-inquiryNotes" name="inquiryNotes">
 | 
	
		
			
				|  |  | +								<a-input v-model:value="formData.inquiryNotes" placeholder="请输入询价备注(inquiry notes)"  allow-clear ></a-input>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +						<a-col :span="12">
 | 
	
		
			
				|  |  | +							<a-form-item label="附件(attachs)" v-bind="validateInfos.attachs" id="PuechaseInquiryFormForm-attachs" name="attachs">
 | 
	
		
			
				|  |  | +								<JUpload v-model:value="formData.attachs"></JUpload>
 | 
	
		
			
				|  |  | +							</a-form-item>
 | 
	
		
			
				|  |  | +						</a-col>
 | 
	
		
			
				|  |  | +          </a-row>
 | 
	
		
			
				|  |  | +        </a-form>
 | 
	
		
			
				|  |  | +      </template>
 | 
	
		
			
				|  |  | +    </JFormContainer>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		<!-- 子表单区域 -->
 | 
	
		
			
				|  |  | +    <a-tabs v-model:activeKey="activeKey" animated  style=" padding: 24px;padding-top: 0px;">
 | 
	
		
			
				|  |  | +      <a-tab-pane tab="残垢询价单子表 - 船明细(ship details)" key="PuechaseInquiryFormShip" :forceRender="true">
 | 
	
		
			
				|  |  | +        <j-vxe-table
 | 
	
		
			
				|  |  | +          :keep-source="true"
 | 
	
		
			
				|  |  | +          resizable
 | 
	
		
			
				|  |  | +          ref="PuechaseInquiryFormShipTableRef"
 | 
	
		
			
				|  |  | +          :loading="PuechaseInquiryFormShipTable.loading"
 | 
	
		
			
				|  |  | +          :columns="PuechaseInquiryFormShipTable.columns"
 | 
	
		
			
				|  |  | +          :dataSource="PuechaseInquiryFormShipTable.dataSource"
 | 
	
		
			
				|  |  | +          :height="340"
 | 
	
		
			
				|  |  | +          :disabled="disabled"
 | 
	
		
			
				|  |  | +          :rowNumber="true"
 | 
	
		
			
				|  |  | +          :rowSelection="true"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <template #action="props" >
 | 
	
		
			
				|  |  | +              <a @click="viewAccessory(props)" >查看配件信息(view accessory information)</a>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </j-vxe-table>
 | 
	
		
			
				|  |  | +      </a-tab-pane>
 | 
	
		
			
				|  |  | +      <a-tab-pane tab="采购询价单子表 - 产品明细(product details)" key="PuechaseInquiryFormProduct" :forceRender="true">
 | 
	
		
			
				|  |  | +        <a-button type="primary" @click="SelectCustomerInquiry" style="margin-right: 1%;margin-bottom: 1%;"> 选择客户询价单(select customer inquiry form)</a-button>
 | 
	
		
			
				|  |  | +        <a-button type="primary" @click="selectProducts" style="margin-right: 1%;margin-bottom: 1%;"> 选择产品(select product)</a-button>
 | 
	
		
			
				|  |  | +        <j-vxe-table
 | 
	
		
			
				|  |  | +          :keep-source="true"
 | 
	
		
			
				|  |  | +          resizable
 | 
	
		
			
				|  |  | +          ref="PuechaseInquiryFormProductTableRef"
 | 
	
		
			
				|  |  | +          :loading="PuechaseInquiryFormProductTable.loading"
 | 
	
		
			
				|  |  | +          :columns="PuechaseInquiryFormProductTable.columns"
 | 
	
		
			
				|  |  | +          :dataSource="PuechaseInquiryFormProductTable.dataSource"
 | 
	
		
			
				|  |  | +          :height="340"
 | 
	
		
			
				|  |  | +          :disabled="disabled"
 | 
	
		
			
				|  |  | +          :rowNumber="true"
 | 
	
		
			
				|  |  | +          :rowSelection="true"
 | 
	
		
			
				|  |  | +          asyncRemove
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +          <template #action="props">
 | 
	
		
			
				|  |  | +                <a-popconfirm title="确定删除吗?" @confirm="handleDelete1(props)">
 | 
	
		
			
				|  |  | +                  <a>删除(delete)</a>
 | 
	
		
			
				|  |  | +                </a-popconfirm>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </j-vxe-table>
 | 
	
		
			
				|  |  | +      </a-tab-pane>
 | 
	
		
			
				|  |  | +    </a-tabs>
 | 
	
		
			
				|  |  | +    <BaseShipArchiveAccessoriesList ref="BaseShipArchiveAccessoriesListRef"></BaseShipArchiveAccessoriesList>
 | 
	
		
			
				|  |  | +    <SelectPrpductModal ref="SelectPrpductModalRef" @selectProduct="addProduct"></SelectPrpductModal>
 | 
	
		
			
				|  |  | +    <SelectProjectModal ref="SelectProjectModalRef" @selectProject="addProject"></SelectProjectModal>
 | 
	
		
			
				|  |  | +    <SelectCustomerInquiryModal ref="SelectCustomerInquiryModalRef" @selectCustomerInquiry="addProductFromCustomer"></SelectCustomerInquiryModal>
 | 
	
		
			
				|  |  | +  </a-spin>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script lang="ts">
 | 
	
		
			
				|  |  | +  import { defineComponent, ref, reactive, computed, toRaw, onMounted } from 'vue';
 | 
	
		
			
				|  |  | +  import { defHttp } from '/@/utils/http/axios';
 | 
	
		
			
				|  |  | +  import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods';
 | 
	
		
			
				|  |  | +  import { queryQurcodeInquiryFormShipListByMainId, queryPurcodeInquiryFormProductListByMainId, queryDataById, saveOrUpdate } from '../PurchaseQuotationForm.api';
 | 
	
		
			
				|  |  | +  import { JVxeTable } from '/@/components/jeecg/JVxeTable';
 | 
	
		
			
				|  |  | +  import {PuechaseInquiryFormShipColumns, PuechaseInquiryFormProductColumns} from '../PurchaseQuotationForm.data';
 | 
	
		
			
				|  |  | +  import BaseShipArchiveAccessoriesList from './BaseShipArchiveAccessoriesModal.vue';
 | 
	
		
			
				|  |  | +  import SelectPrpductModal from './SelectPrpductModal.vue';
 | 
	
		
			
				|  |  | +  import SelectProjectModal from './SelectProjectModal.vue';
 | 
	
		
			
				|  |  | +  import SelectCustomerInquiryModal from './SelectCustomerInquiryModal.vue';
 | 
	
		
			
				|  |  | +  import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
 | 
	
		
			
				|  |  | +  import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
 | 
	
		
			
				|  |  | +  import { JDictSelectTag} from '/@/components/Form';
 | 
	
		
			
				|  |  | +  import JSelectInput from '/@/components/Form/src/jeecg/components/JSelectInput.vue';
 | 
	
		
			
				|  |  | +  import { Form } from 'ant-design-vue';
 | 
	
		
			
				|  |  | +  import moment from 'moment';
 | 
	
		
			
				|  |  | +  const useForm = Form.useForm;
 | 
	
		
			
				|  |  | +  export default defineComponent({
 | 
	
		
			
				|  |  | +    name: "PuechaseInquiryFormForm",
 | 
	
		
			
				|  |  | +    components:{
 | 
	
		
			
				|  |  | +      JVxeTable,
 | 
	
		
			
				|  |  | +			JFormContainer,
 | 
	
		
			
				|  |  | +      BaseShipArchiveAccessoriesList,
 | 
	
		
			
				|  |  | +      SelectPrpductModal,
 | 
	
		
			
				|  |  | +      JUpload,
 | 
	
		
			
				|  |  | +      SelectProjectModal,
 | 
	
		
			
				|  |  | +      JDictSelectTag,
 | 
	
		
			
				|  |  | +      JSelectInput,
 | 
	
		
			
				|  |  | +      SelectCustomerInquiryModal
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    props:{
 | 
	
		
			
				|  |  | +      formDisabled:{
 | 
	
		
			
				|  |  | +        type: Boolean,
 | 
	
		
			
				|  |  | +        default: false
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      formData: { type: Object, default: ()=>{} },
 | 
	
		
			
				|  |  | +      formBpm: { type: Boolean, default: true }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    emits:['success'],
 | 
	
		
			
				|  |  | +    setup(props, {emit}) {
 | 
	
		
			
				|  |  | +      const loading = ref(false);
 | 
	
		
			
				|  |  | +      const formRef = ref();
 | 
	
		
			
				|  |  | +      var SelectPrpductModalRef = ref()
 | 
	
		
			
				|  |  | +      var SelectProjectModalRef = ref()
 | 
	
		
			
				|  |  | +      var SelectCustomerInquiryModalRef = ref()
 | 
	
		
			
				|  |  | +      var inquiryPeriod = ref([])
 | 
	
		
			
				|  |  | +      const PuechaseInquiryFormShipTableRef = ref();
 | 
	
		
			
				|  |  | +      const PuechaseInquiryFormShipTable = reactive<Record<string, any>>({
 | 
	
		
			
				|  |  | +        loading: false,
 | 
	
		
			
				|  |  | +        columns: PuechaseInquiryFormShipColumns,
 | 
	
		
			
				|  |  | +        dataSource: []
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      const PuechaseInquiryFormProductTableRef = ref();
 | 
	
		
			
				|  |  | +      const PuechaseInquiryFormProductTable = reactive<Record<string, any>>({
 | 
	
		
			
				|  |  | +        loading: false,
 | 
	
		
			
				|  |  | +        columns: PuechaseInquiryFormProductColumns,
 | 
	
		
			
				|  |  | +        dataSource: []
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      var BaseShipArchiveAccessoriesListRef = ref();
 | 
	
		
			
				|  |  | +      const activeKey = ref('PuechaseInquiryFormShip');
 | 
	
		
			
				|  |  | +      var supplierOption = ref([]);
 | 
	
		
			
				|  |  | +      const formData = reactive<Record<string, any>>({
 | 
	
		
			
				|  |  | +        id: '',
 | 
	
		
			
				|  |  | +        status: undefined,
 | 
	
		
			
				|  |  | +        delFlag: undefined,
 | 
	
		
			
				|  |  | +        otherStatus: '',   
 | 
	
		
			
				|  |  | +        submit: '',   
 | 
	
		
			
				|  |  | +        billDate: moment(new Date()).format('YYYY-MM-DD'),   
 | 
	
		
			
				|  |  | +        billCode: '',   
 | 
	
		
			
				|  |  | +        inquiryProject: '',   
 | 
	
		
			
				|  |  | +        inquirySuppiler:"",
 | 
	
		
			
				|  |  | +        inquiryPeriodEnd: '',   
 | 
	
		
			
				|  |  | +        inquiryPeriodBegin: ' ',  
 | 
	
		
			
				|  |  | +        inquiryCustomer: '',           
 | 
	
		
			
				|  |  | +        priority: '',   
 | 
	
		
			
				|  |  | +        productionClass: '',   
 | 
	
		
			
				|  |  | +        model: '',   
 | 
	
		
			
				|  |  | +        maker: '',
 | 
	
		
			
				|  |  | +        paymentTerms:'',
 | 
	
		
			
				|  |  | +        delivery:'',
 | 
	
		
			
				|  |  | +        deliveryTime: '',  
 | 
	
		
			
				|  |  | +        inquiryTeam: '',   
 | 
	
		
			
				|  |  | +        quotationValidity:'',
 | 
	
		
			
				|  |  | +        attachs: '',   
 | 
	
		
			
				|  |  | +        inquiryNotes: '',   
 | 
	
		
			
				|  |  | +        sourceCode:'',
 | 
	
		
			
				|  |  | +        projectName:'',
 | 
	
		
			
				|  |  | +        placeDelivery:'',
 | 
	
		
			
				|  |  | +        suppilerName:'',
 | 
	
		
			
				|  |  | +        saleAttachs:''
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      //表单验证
 | 
	
		
			
				|  |  | +      const validatorRules = reactive({
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false});
 | 
	
		
			
				|  |  | +      const dbData = {};
 | 
	
		
			
				|  |  | +      const formItemLayout = {
 | 
	
		
			
				|  |  | +        labelCol: {xs: {span: 24}, sm: {span: 5}},
 | 
	
		
			
				|  |  | +        wrapperCol: {xs: {span: 24}, sm: {span: 16}},
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 表单禁用
 | 
	
		
			
				|  |  | +      const disabled = computed(()=>{
 | 
	
		
			
				|  |  | +        if(props.formBpm === true){
 | 
	
		
			
				|  |  | +          if(props.formData.disabled === false){
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +          }else{
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return props.formDisabled;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      function add() {
 | 
	
		
			
				|  |  | +        resetFields();
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTable.dataSource = [];
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource = [];
 | 
	
		
			
				|  |  | +        activeKey.value = 'PuechaseInquiryFormShip'
 | 
	
		
			
				|  |  | +        getSupplierOption()
 | 
	
		
			
				|  |  | +        inquiryPeriod.value = []
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      async function edit(row) {
 | 
	
		
			
				|  |  | +        //主表数据
 | 
	
		
			
				|  |  | +        await queryMainData(row.id);
 | 
	
		
			
				|  |  | +        //子表数据
 | 
	
		
			
				|  |  | +        const PuechaseInquiryFormShipDataList = await queryQurcodeInquiryFormShipListByMainId(row['id']);
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTable.dataSource = [...PuechaseInquiryFormShipDataList];
 | 
	
		
			
				|  |  | +        const PuechaseInquiryFormProductDataList = await queryPurcodeInquiryFormProductListByMainId(row['id']);
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource = [...PuechaseInquiryFormProductDataList];
 | 
	
		
			
				|  |  | +        getSupplierOption()
 | 
	
		
			
				|  |  | +        inquiryPeriod.value[0]=formData.inquiryPeriodBegin?moment(formData.inquiryPeriodBegin):''
 | 
	
		
			
				|  |  | +        inquiryPeriod.value[1]=formData.inquiryPeriodEnd?moment(formData.inquiryPeriodEnd):''
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      async function queryMainData(id) {
 | 
	
		
			
				|  |  | +        const row = await queryDataById(id);
 | 
	
		
			
				|  |  | +        resetFields();
 | 
	
		
			
				|  |  | +        const tmpData = {};
 | 
	
		
			
				|  |  | +        Object.keys(formData).forEach((key) => {
 | 
	
		
			
				|  |  | +          if(row.hasOwnProperty(key)){
 | 
	
		
			
				|  |  | +            tmpData[key] = row[key]
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        //赋值
 | 
	
		
			
				|  |  | +        Object.assign(formData,tmpData);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const {getSubFormAndTableData, transformData} = useValidateAntFormAndTable(activeKey, {
 | 
	
		
			
				|  |  | +        'purInquiryFormShip': PuechaseInquiryFormShipTableRef,
 | 
	
		
			
				|  |  | +        'purInquiryFormProduct': PuechaseInquiryFormProductTableRef,
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      async function getFormData() {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +          // 触发表单验证
 | 
	
		
			
				|  |  | +          await validate();
 | 
	
		
			
				|  |  | +        } catch ({ errorFields }) {
 | 
	
		
			
				|  |  | +          if (errorFields) {
 | 
	
		
			
				|  |  | +            const firstField = errorFields[0];
 | 
	
		
			
				|  |  | +            if (firstField) {
 | 
	
		
			
				|  |  | +              formRef.value.scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          return Promise.reject(errorFields);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return transformData(toRaw(formData))
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      async function submitForm() {
 | 
	
		
			
				|  |  | +        const mainData = await getFormData();
 | 
	
		
			
				|  |  | +        const subData = await getSubFormAndTableData();
 | 
	
		
			
				|  |  | +        const values = Object.assign({}, dbData, mainData, subData);
 | 
	
		
			
				|  |  | +        console.log('表单提交数据', values)
 | 
	
		
			
				|  |  | +        const isUpdate = values.id ? true : false
 | 
	
		
			
				|  |  | +        await saveOrUpdate(values, isUpdate);
 | 
	
		
			
				|  |  | +        //关闭弹窗
 | 
	
		
			
				|  |  | +        emit('success');
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +      function setFieldsValue(values) {
 | 
	
		
			
				|  |  | +        if(values){
 | 
	
		
			
				|  |  | +          Object.keys(values).map(k=>{
 | 
	
		
			
				|  |  | +            formData[k] = values[k];
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      /**
 | 
	
		
			
				|  |  | +       * 值改变事件触发-树控件回调
 | 
	
		
			
				|  |  | +       * @param key
 | 
	
		
			
				|  |  | +       * @param value
 | 
	
		
			
				|  |  | +       */
 | 
	
		
			
				|  |  | +      function handleFormChange(key, value) {
 | 
	
		
			
				|  |  | +        formData[key] = value;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      async function handleDelete(prop) {
 | 
	
		
			
				|  |  | +        var newArray = [...PuechaseInquiryFormShipTable.dataSource]
 | 
	
		
			
				|  |  | +        newArray.splice(prop.rowIndex, 1)
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTable.dataSource = newArray 
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      async function handleDelete1(prop) {
 | 
	
		
			
				|  |  | +        var newArray = [...PuechaseInquiryFormProductTable.dataSource]
 | 
	
		
			
				|  |  | +        newArray.splice(prop.rowIndex, 1)
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource = newArray  
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function addShip(data){
 | 
	
		
			
				|  |  | +        var arr = data.concat(PuechaseInquiryFormShipTable.dataSource)
 | 
	
		
			
				|  |  | +        arr.map(item=>item.shipowner = item.relateCustomer)
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTable.dataSource=arr        
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function addProduct(data){
 | 
	
		
			
				|  |  | +        var arrProduct = data.concat(PuechaseInquiryFormProductTable.dataSource)
 | 
	
		
			
				|  |  | +        arrProduct.map(item=>{
 | 
	
		
			
				|  |  | +          item.productClass = item.classId_dictText
 | 
	
		
			
				|  |  | +          item.productCode = item.code
 | 
	
		
			
				|  |  | +          item.unit = item.measurementUnit
 | 
	
		
			
				|  |  | +          item.needShip = '0'
 | 
	
		
			
				|  |  | +          item.shipInspection =''
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource=arrProduct      
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function addProject(data) {
 | 
	
		
			
				|  |  | +        if(data.length!==0){
 | 
	
		
			
				|  |  | +          formData.inquiryProject = data[0].id
 | 
	
		
			
				|  |  | +           formData.projectName = data[0].name
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +          formData.inquiryProject = ''
 | 
	
		
			
				|  |  | +          formData.projectName = ''
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function changeFormDeliveryTime(){
 | 
	
		
			
				|  |  | +        var arrProduct = [...PuechaseInquiryFormProductTable.dataSource]
 | 
	
		
			
				|  |  | +        arrProduct.map(item=>{
 | 
	
		
			
				|  |  | +          item.deliveryTime = formData.deliveryTime
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource = arrProduct
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function addProductFromCustomer(data){
 | 
	
		
			
				|  |  | +        var arrProduct = data.concat(PuechaseInquiryFormProductTable.dataSource)
 | 
	
		
			
				|  |  | +        arrProduct.map(item=>{
 | 
	
		
			
				|  |  | +          item.productClass = item.productionClass_dictText
 | 
	
		
			
				|  |  | +          item.productCode = item.productCode
 | 
	
		
			
				|  |  | +          item.unit = item.measurementUnit
 | 
	
		
			
				|  |  | +          item.sourceId = item.childId
 | 
	
		
			
				|  |  | +          item.model = item.childModel
 | 
	
		
			
				|  |  | +          item.deliveryTime = formData.deliveryTime
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable.dataSource=arrProduct     
 | 
	
		
			
				|  |  | +        formData.inquiryProject = data[0].inquiryProject
 | 
	
		
			
				|  |  | +        formData.projectName = data[0].projectName
 | 
	
		
			
				|  |  | +        formData.sourceCode = data[0].billCode
 | 
	
		
			
				|  |  | +        formData.priority = data[0].priority
 | 
	
		
			
				|  |  | +        formData.model = data[0].headModel
 | 
	
		
			
				|  |  | +        formData.maker = data[0].maker
 | 
	
		
			
				|  |  | +        formData.inquiryTeam =  data[0].inquiryTeam
 | 
	
		
			
				|  |  | +        formData.productionClass =  data[0].productionClass_dictText
 | 
	
		
			
				|  |  | +        formData.saleAttachs =data[0].attachs
 | 
	
		
			
				|  |  | +        getShipList(data[0].headId)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function getShipList(id){
 | 
	
		
			
				|  |  | +        let params = {id:id}
 | 
	
		
			
				|  |  | +          defHttp.get({url:'/saleCode/saleInquiryForm/querySaleInquiryFormShipByMainId',params}, { isTransformResponse: false }).then(res=>{
 | 
	
		
			
				|  |  | +            if(res){
 | 
	
		
			
				|  |  | +             PuechaseInquiryFormShipTable.dataSource = res.result
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function viewAccessory(prop){
 | 
	
		
			
				|  |  | +        BaseShipArchiveAccessoriesListRef.value.getTable(prop.row)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function selectProducts(){
 | 
	
		
			
				|  |  | +        SelectPrpductModalRef.value.getTable()
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function setNeed(){
 | 
	
		
			
				|  |  | +        const values = PuechaseInquiryFormProductTableRef.value.getSelectionData()        
 | 
	
		
			
				|  |  | +        values.map(item=>{
 | 
	
		
			
				|  |  | +          PuechaseInquiryFormProductTable.dataSource.map(event=>{
 | 
	
		
			
				|  |  | +            if(item.id == event.id){
 | 
	
		
			
				|  |  | +              event.needShip = 1
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +          const xTable = PuechaseInquiryFormProductTableRef.value!.getXTable();//关键代码 如果不更新 重新加载表格即可
 | 
	
		
			
				|  |  | +          xTable.loadData(PuechaseInquiryFormProductTable.dataSource)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function setNotNeed(){
 | 
	
		
			
				|  |  | +        const values = PuechaseInquiryFormProductTableRef.value.getSelectionData()        
 | 
	
		
			
				|  |  | +        values.map(item=>{
 | 
	
		
			
				|  |  | +          PuechaseInquiryFormProductTable.dataSource.map(event=>{
 | 
	
		
			
				|  |  | +            if(item.id == event.id){
 | 
	
		
			
				|  |  | +              event.needShip = 0
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +          const xTable = PuechaseInquiryFormProductTableRef.value!.getXTable();//关键代码 如果不更新 重新加载表格即可
 | 
	
		
			
				|  |  | +          xTable.loadData(PuechaseInquiryFormProductTable.dataSource)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function onSearchProject(){
 | 
	
		
			
				|  |  | +        SelectProjectModalRef.value.getTable()
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function getSupplierOption(){
 | 
	
		
			
				|  |  | +        defHttp
 | 
	
		
			
				|  |  | +            .get({ url: '/cuspCode/cuspSupplierProfile/list'}, { isTransformResponse: false })
 | 
	
		
			
				|  |  | +            .then((res) => {
 | 
	
		
			
				|  |  | +                if (res.success) {
 | 
	
		
			
				|  |  | +                  supplierOption.value = []
 | 
	
		
			
				|  |  | +                  res.result.records.forEach(element => {
 | 
	
		
			
				|  |  | +                      var obj = {
 | 
	
		
			
				|  |  | +                        label: element.name?element.name:'无名称请维护',
 | 
	
		
			
				|  |  | +                        value: element.id?element.id:''
 | 
	
		
			
				|  |  | +                      };
 | 
	
		
			
				|  |  | +                      supplierOption.value.push( obj)
 | 
	
		
			
				|  |  | +                  });    
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .finally(() => {
 | 
	
		
			
				|  |  | +                // loading.value = false;
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function onChangeInquiryPeriod(data){
 | 
	
		
			
				|  |  | +        inquiryPeriod.value = data
 | 
	
		
			
				|  |  | +        formData.inquiryPeriodBegin = data[0].format('YYYY-MM-DD')
 | 
	
		
			
				|  |  | +        formData.inquiryPeriodEnd = data[1].format('YYYY-MM-DD')
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function SelectCustomerInquiry(){
 | 
	
		
			
				|  |  | +          SelectCustomerInquiryModalRef.value.getTable(formData)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      function changeSupplier(prop){
 | 
	
		
			
				|  |  | +        if(prop){
 | 
	
		
			
				|  |  | +          supplierOption.value.map(item=>{
 | 
	
		
			
				|  |  | +            if(item.value==prop){
 | 
	
		
			
				|  |  | +              formData.suppilerName = item.label
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +          formData.inquirySuppiler = ''
 | 
	
		
			
				|  |  | +          formData.suppilerName = ''
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return {
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTableRef,
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormShipTable,
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTableRef,
 | 
	
		
			
				|  |  | +        PuechaseInquiryFormProductTable,
 | 
	
		
			
				|  |  | +        validatorRules,
 | 
	
		
			
				|  |  | +        validateInfos,
 | 
	
		
			
				|  |  | +        activeKey,
 | 
	
		
			
				|  |  | +        loading,
 | 
	
		
			
				|  |  | +        formData,
 | 
	
		
			
				|  |  | +        setFieldsValue,
 | 
	
		
			
				|  |  | +        handleFormChange,
 | 
	
		
			
				|  |  | +        formItemLayout,
 | 
	
		
			
				|  |  | +        disabled,
 | 
	
		
			
				|  |  | +        getFormData,
 | 
	
		
			
				|  |  | +        submitForm,
 | 
	
		
			
				|  |  | +        add,
 | 
	
		
			
				|  |  | +        edit,
 | 
	
		
			
				|  |  | +        formRef,
 | 
	
		
			
				|  |  | +        addShip,
 | 
	
		
			
				|  |  | +        addProduct,
 | 
	
		
			
				|  |  | +        BaseShipArchiveAccessoriesListRef,
 | 
	
		
			
				|  |  | +        viewAccessory,
 | 
	
		
			
				|  |  | +        handleDelete,
 | 
	
		
			
				|  |  | +        handleDelete1,
 | 
	
		
			
				|  |  | +        selectProducts,
 | 
	
		
			
				|  |  | +        setNeed,
 | 
	
		
			
				|  |  | +        setNotNeed,
 | 
	
		
			
				|  |  | +        SelectPrpductModalRef,
 | 
	
		
			
				|  |  | +        SelectProjectModalRef,
 | 
	
		
			
				|  |  | +        SelectCustomerInquiryModalRef,
 | 
	
		
			
				|  |  | +        onSearchProject,
 | 
	
		
			
				|  |  | +        addProject,
 | 
	
		
			
				|  |  | +        getSupplierOption,
 | 
	
		
			
				|  |  | +        supplierOption,
 | 
	
		
			
				|  |  | +        inquiryPeriod,
 | 
	
		
			
				|  |  | +        onChangeInquiryPeriod,
 | 
	
		
			
				|  |  | +        SelectCustomerInquiry,
 | 
	
		
			
				|  |  | +        addProductFromCustomer,
 | 
	
		
			
				|  |  | +        changeFormDeliveryTime,
 | 
	
		
			
				|  |  | +        changeSupplier
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style lang="less" scoped>
 | 
	
		
			
				|  |  | +  /** 时间和数字输入框样式 */
 | 
	
		
			
				|  |  | +  :deep(.ant-input-number) {
 | 
	
		
			
				|  |  | +    width: 100%;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  :deep(.ant-calendar-picker) {
 | 
	
		
			
				|  |  | +    width: 100%;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  /deep/.vxe-table--body-wrapper{
 | 
	
		
			
				|  |  | +    height: 100% !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  /deep/.ant-modal-body{
 | 
	
		
			
				|  |  | +    padding: 24px !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  /deep/.ant-form-item{
 | 
	
		
			
				|  |  | +    margin-bottom: 8px !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +</style>
 |