<template> <a-spin :spinning="confirmLoading"> <j-form-container :disabled="formDisabled"> <!-- 主表单区域 --> <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-row> <a-col :span="24" > <a-form-model-item label="编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="code"> <a-input v-model="model.code" placeholder="请输入编码" ></a-input> </a-form-model-item> </a-col> <a-col :span="24" > <a-form-model-item label="类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type"> <a-input v-model="model.type" placeholder="请输入类型" ></a-input> </a-form-model-item> </a-col> <a-col :span="24" > <a-form-model-item label="货主编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="companyCode"> <a-input v-model="model.companyCode" placeholder="请输入货主编码" ></a-input> </a-form-model-item> </a-col> <a-col :span="24" > <a-form-model-item label="上游单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="referCode"> <a-input v-model="model.referCode" placeholder="请输入上游单号" ></a-input> </a-form-model-item> </a-col> <a-col :span="24" > <a-form-model-item label="供应商编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="supplierCode"> <a-input v-model="model.supplierCode" placeholder="请输入供应商编码" ></a-input> </a-form-model-item> </a-col> <a-col :span="24" > <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> <a-input v-model="model.remark" placeholder="请输入备注" ></a-input> </a-form-model-item> </a-col> </a-row> </a-form-model> </j-form-container> <!-- 子表单区域 --> <a-tabs v-model="activeKey" @change="handleChangeTabs"> <a-tab-pane tab="质检单详情" :key="refKeys[0]" :forceRender="true"> <j-vxe-table keep-source :ref="refKeys[0]" :loading="qualityDetailTable.loading" :columns="qualityDetailTable.columns" :dataSource="qualityDetailTable.dataSource" :maxHeight="300" :disabled="formDisabled" :rowNumber="true" :rowSelection="true" :toolbar="true" /> </a-tab-pane> </a-tabs> </a-spin> </template> <script> import { getAction } from '@/api/manage' import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' import { JVXETypes } from '@/components/jeecg/JVxeTable' import { getRefPromise,VALIDATE_FAILED} from '@/components/jeecg/JVxeTable/utils/vxeUtils.js' import { validateDuplicateValue } from '@/utils/util' import JFormContainer from '@/components/jeecg/JFormContainer' export default { name: 'QualityHeaderForm', mixins: [JVxeTableModelMixin], components: { JFormContainer, }, data() { return { labelCol: { xs: { span: 24 }, sm: { span: 5 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 }, }, model:{ }, // 新增时子表默认添加几行空数据 addDefaultRowNum: 1, validatorRules: { code: [ { required: true, message: '请输入编码!'}, ], }, refKeys: ['qualityDetail', ], tableKeys:['qualityDetail', ], activeKey: 'qualityDetail', // 质检单详情 qualityDetailTable: { loading: false, dataSource: [], columns: [ { title: '物料编码', key: 'materialCode', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '物料名称', key: 'materialName', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '物料规格', key: 'materialSpec', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '物料单位', key: 'materialUnit', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '单据数量', key: 'qty', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '库存状态', key: 'inventoryStatus', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '批次', key: 'batch', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '批号', key: 'lot', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '项目号', key: 'project', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, { title: '单据状态', key: 'status', type: JVXETypes.input, width:"200px", placeholder: '请输入${title}', defaultValue:'', }, ] }, url: { add: "/receipt/qualityHeader/add", edit: "/receipt/qualityHeader/edit", queryById: "/receipt/qualityHeader/queryById", qualityDetail: { list: '/receipt/qualityHeader/queryQualityDetailByMainId' }, } } }, props: { //表单禁用 disabled: { type: Boolean, default: false, required: false } }, computed: { formDisabled(){ return this.disabled }, }, created () { }, methods: { addBefore(){ this.qualityDetailTable.dataSource=[] }, getAllTable() { let values = this.tableKeys.map(key => getRefPromise(this, key)) return Promise.all(values) }, /** 调用完edit()方法之后会自动调用此方法 */ editAfter() { this.$nextTick(() => { }) // 加载子表数据 if (this.model.id) { let params = { id: this.model.id } this.requestSubTableData(this.url.qualityDetail.list, params, this.qualityDetailTable) } }, //校验所有一对一子表表单 validateSubForm(allValues){ return new Promise((resolve,reject)=>{ Promise.all([ ]).then(() => { resolve(allValues) }).catch(e => { if (e.error === VALIDATE_FAILED) { // 如果有未通过表单验证的子表,就自动跳转到它所在的tab this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] } else { console.error(e) } }) }) }, /** 整理成formData */ classifyIntoFormData(allValues) { let main = Object.assign(this.model, allValues.formValue) return { ...main, // 展开 qualityDetailList: allValues.tablesValue[0].tableData, } }, validateError(msg){ this.$message.error(msg) }, } } </script> <style scoped> </style>