<!-- 复制子表 --> <template> <a-modal title="选择采购订单(select purchase order)" width="95%" :visible="visible" :maskClosable="false" switchFullscreen @ok = "handleOk" @cancel="handleCancel"> <div> <!-- <a-card :body-style="{ padding: '10px' }" :bordered="false" style="margin: 10px;"> <div class="table-page-search-wrapper"> <a-form :model="queryParams" :label-col="labelCol" :wrapper-col="wrapperCol" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :md="8" :sm="8"> <a-form-item label="产品分类(production class)"> <a-input placeholder="请输入" v-model:value="queryParams.productionClass"></a-input> </a-form-item> </a-col> <a-col :md="8" :sm="8"> <a-form-item label="产品英文名(english name)" > <a-input v-model:value="queryParams.englishName" placeholder="请选择" /> </a-form-item> </a-col> <template v-if="toggleSearchStatus"> <a-col :md="8" :sm="8"> <a-form-item label="产品编码(product code)" > <a-input v-model:value="queryParams.productCode" placeholder="请选择" /> </a-form-item> </a-col> <a-col :md="8" :sm="8"> <a-form-item label="产品中文名(chinese name)" > <a-input v-model:value="queryParams.chineseName" placeholder="请选择" /> </a-form-item> </a-col> </template> <a-col :md="8" :sm="8"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-button type="primary" @click="searchQuery" >查询(search)</a-button> <a-button type="primary" @click="searchReset" style="margin-left: 8px">重置(reset)</a-button> <a @click="handleToggleSearch" style="margin-left: 8px"> {{ toggleSearchStatus ? '收起' : '展开' }} <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> </a> </span> </a-col> </a-row> </a-form> </div> </a-card> --> <a-card > <a-alert type="info" show-icon class="alert" style="margin-bottom: 8px"> <template #message> <template v-if="selectedRowKeys.length > 0"> <span>已选中 {{ selectedRowKeys.length }} 条记录</span> <a-divider type="vertical" /> <a @click="selectedRowKeys = []">清空</a> </template> <template v-else> <span>未选中任何数据</span> </template> </template> </a-alert> <a-table :columns="columns" :row-key="record => record.id" :data-source="dataSource" bordered size="small" @change="handleTableChange" :pagination="false" :scroll="{ x: 4500, y: 300 }" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" > </a-table> </a-card> </div> </a-modal> </template> <script lang="ts" setup> import {ref, reactive } from 'vue'; import { defHttp } from '/@/utils/http/axios'; import { message } from 'ant-design-vue'; import { filterObj, getFileAccessHttpUrl } from '/@/utils/common/compUtils'; const emit = defineEmits([ 'copyProduct']); //定义emit var visible = ref(false) const columns = [ { title: '交期(delivery time)', dataIndex: 'deliveryTime', key: 'deliveryTime', align:"center" }, { title: '最早发货日期(earline delivery date)', dataIndex: 'earliestDeliveryDate', key: 'earliestDeliveryDate', align:"center" }, { title: '最晚发货日期(latest delivery date)', dataIndex: 'latestDeliveryDate', key: 'latestDeliveryDate', align:"center", }, { title: '产品中文名(chinese name)', key: 'chineseName', dataIndex: 'chineseName', align:"center" }, { title: '产品英文名(english name)', key: 'englishName', dataIndex: 'englishName', align:"center", ellipsis:true }, { title: '型号(model)', key: 'model', dataIndex: 'model', align:"center" }, { title: '备件号(partno)', key: 'partno', dataIndex: 'partno', align:"center", width:250 }, { title: '订货号(orderno)', key: 'orderno', dataIndex: 'orderno', align:"center", }, { title: '图号(drawingno)', key: 'drawingno', dataIndex: 'drawingno', align:"center", }, { title: '厂家(factory)', key: 'factory', dataIndex: 'factory', align:"center", }, { title: '质量等级(quality grade)', key: 'qualityGrade', dataIndex: 'qualityGrade', align:"center", }, { title: '需要船检证书(need Ship inspection certificate)', key: 'needShip', dataIndex: 'needShip', align:"center", }, { title: '船检证书(ship Inspection certificate)', key: 'shipInspection', dataIndex: 'shipInspection', align:"center", }, { title: '数量(quantity)', key: 'quantity', dataIndex: 'quantity', align:"center", }, { title: '单价(price)', key: 'taxPrice', dataIndex: 'taxPrice', align:"center", }, { title: '金额(money)', key: 'taxAmount', dataIndex: 'taxAmount', align:"center", }, { title: '备注(note)', key: 'notes', dataIndex: 'notes', align:"center", }, ]; const labelCol = ref({ xs: { span: 24 }, sm: { span: 9 }, }); const wrapperCol = ref({ xs: { span: 24 }, sm: { span: 15 }, }); const dataSource =ref([]); let selectedRowKeys = ref([]); let selectedRows = ref([]); const toggleSearchStatus = ref(false); var mainId = ref('') const queryParams = ref({ productionClass:'', englishName:'', productCode:'', chineseName:'', id:'', pageSize:'' }); function loadData(){ let params = getQueryParams(); defHttp .get({ url: '/purCode/purOrder/queryPurOrderProductByMainId',params}, { isTransformResponse: false }) .then((res) => { if (res.success) { dataSource.value = res.result } else { message.error(res.message); } }) .finally(() => { // loading.value = false; }); } function getQueryParams(){ let params = Object.assign(queryParams.value); params.id = mainId.value params.pageSize = '-1' return filterObj(params); } function handleTableChange(paginations, filters, sorter){ loadData() }; function searchQuery(){ loadData(); } function searchReset(){ queryParams.value = { productionClass:'', englishName:'', productCode:'', chineseName:'', id:'', pageSize:'' } loadData(); } function handleToggleSearch(){ toggleSearchStatus.value = !toggleSearchStatus.value; } function onSelectChange(keys,rows){ selectedRowKeys.value = keys selectedRows.value = rows } function handleOk(){ if(selectedRowKeys.value.length==0){ message.error('请选择数据') }else{ emit('copyProduct',selectedRows.value,mainId) handleCancel() } } function handleCancel(){ visible.value = false selectedRowKeys.value = [] selectedRows.value=[] } function getTable(record){ mainId.value = record.id visible.value = true loadData() } defineExpose({ getTable }); </script> <style scoped lang="less"> // /deep/.ant-form-item{ // margin-bottom: 8px !important; // } // /deep/.ant-table-wrapper .ant-table-thead > tr > th, .ant-table-wrapper .ant-table-thead > tr > td{ // padding: 8px !important; // } </style>