| <script setup> | 
| import { getCurrentInstance, ref, watch, reactive } from 'vue'; | 
| import { useRouter } from "vue-router"; | 
| import { get, post, postForm } from '@/utils/request.js' | 
| import { message, Modal } from 'ant-design-vue'; | 
| import { logout } from '@/config.js'; | 
| import { formatMessage } from '@/utils/localeUtils.js'; | 
| import useTableSearch from '@/utils/tableUtils.jsx'; | 
| import ShowOrderDetlComponent from '@/components/orderDetl/show.vue'; | 
| const context = getCurrentInstance()?.appContext.config.globalProperties; | 
|   | 
| const router = useRouter(); | 
|   | 
| const TABLE_KEY = 'table-locDetl'; | 
|   | 
| let tableData = ref([]); | 
| let open = ref(false); | 
| const taskId = ref(null); | 
| const taskInfo = ref({ | 
|     taskNo: '', | 
|     taskSts$: '', | 
|     taskType$: '', | 
| }); | 
| const showWidth = ref("60%") | 
|   | 
| const showOrderDetlChild = ref(null) | 
| getColumns(); | 
|   | 
| const { | 
|     getColumnSearchProps, | 
| } = useTableSearch(); | 
|   | 
| const state = reactive({ | 
|     selectedRowKeys: [], | 
|     loading: false, | 
|     columns: [], | 
| }); | 
|   | 
| state.columns = [ | 
|     { | 
|         title: '#', | 
|         dataIndex: '_id', | 
|         width: 60, | 
|         ellipsis: true, | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.task_no', '任务编号'), | 
|         dataIndex: 'taskNo', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('taskNo'), | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.matnr', '物料号'), | 
|         dataIndex: ['mat$', 'matnr'], | 
|         width: 140, | 
|         ellipsis: true, | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.maktx', '物料名'), | 
|         dataIndex: ['mat$', 'maktx'], | 
|         width: 140, | 
|         ellipsis: true, | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.anfme', '数量'), | 
|         dataIndex: 'anfme', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('anfme'), | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.stock', '库存'), | 
|         dataIndex: 'stock', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('stock'), | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.batch', '批号'), | 
|         dataIndex: 'batch', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('batch'), | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.barcode', '托盘码'), | 
|         dataIndex: 'barcode', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('barcode'), | 
|     }, | 
|     { | 
|         title: formatMessage('db.man_task_detl.order_no', '订单编号'), | 
|         dataIndex: 'orderNo', | 
|         width: 140, | 
|         ellipsis: true, | 
|         ...getColumnSearchProps('orderNo'), | 
|     }, | 
| ]; | 
|   | 
| const fieldList = []; | 
| //加载扩展字段 | 
| async function getColumns() { | 
|     let fieldResp = await post('/api/matField/list', { | 
|         fieldType: 1 | 
|     }) | 
|     let fieldResult = fieldResp.data; | 
|     let tmp = state.columns; | 
|     if (fieldResult.code == 200) { | 
|         let data = fieldResult.data; | 
|   | 
|         data.forEach((item) => { | 
|             tmp.push({ | 
|                 title: formatMessage(item.language, item.describe), | 
|                 name: item.name, | 
|                 dataIndex: item.name, | 
|                 key: item.name, | 
|                 width: 140, | 
|                 editable: true, | 
|             }) | 
|   | 
|             fieldList.push(item.name); | 
|         }) | 
|   | 
|         // tmp.push({ | 
|         //     title: formatMessage('common.operation', '操作'), | 
|         //     name: 'oper', | 
|         //     dataIndex: 'oper', | 
|         //     key: 'oper', | 
|         //     width: 140, | 
|         // }) | 
|   | 
|         state.columns = tmp; | 
|     } else if (result.code === 401) { | 
|         message.error(result.msg); | 
|         logout() | 
|     } else { | 
|         message.error(result.msg); | 
|     } | 
| } | 
|   | 
| const handleOk = () => { | 
|     open.value = false; | 
| } | 
|   | 
| const handleCancel = () => { | 
|     open.value = false; | 
|     taskId.value = null; | 
| } | 
|   | 
| watch(taskId, (newVal, oldVal) => { | 
|     if (newVal != null) { | 
|         get("/api/taskDetl/taskId/" + newVal, {}).then((resp) => { | 
|             let result = resp.data; | 
|             let index = 1; | 
|             let tmp = []; | 
|             result.data.forEach((item) => { | 
|                 item['_id'] = index++; | 
|                 tmp.push(item) | 
|             }) | 
|             tableData.value = tmp; | 
|         }) | 
|   | 
|         get("/api/task/" + newVal, {}).then((resp) => { | 
|             let result = resp.data; | 
|             taskInfo.value = result.data; | 
|         }) | 
|     } | 
| }) | 
|   | 
| const openOrderDetl = (record) => { | 
|     showOrderDetlChild.value.openDetl = true; | 
|     showOrderDetlChild.value.orderId = record.orderId; | 
|     showOrderDetlChild.value.showWidth = '55%' | 
| } | 
|   | 
| defineExpose({ | 
|     tableData, | 
|     taskId, | 
|     open, | 
|     showWidth, | 
| }) | 
|   | 
| </script> | 
|   | 
| <script> | 
| export default { | 
|     name: 'showOrderDetlComponent' | 
| } | 
| </script> | 
|   | 
| <template> | 
|     <div> | 
|         <a-modal v-model:open="open" :width="showWidth" @ok="handleOk" @cancel="handleCancel"> | 
|             <div class="component-header"> | 
|                 <div> | 
|                     <h3> | 
|                         任务编号:{{ taskInfo.taskNo }} | 
|                     </h3> | 
|                     <h3> | 
|                         任务状态:{{ taskInfo.taskSts$ }} | 
|                     </h3> | 
|                     <h3> | 
|                         任务类型:{{ taskInfo.taskType$ }} | 
|                     </h3> | 
|                 </div> | 
|                 <div class="qrcode"> | 
|                     <a-qrcode :value="taskInfo.taskNo" :size="100" :bordered="false" /> | 
|                 </div> | 
|             </div> | 
|             <a-table :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id" | 
|                 :scroll="{ y: 768 }" :columns="state.columns"> | 
|                 <template #bodyCell="{ column, text, record }"> | 
|                     <template v-if="column.dataIndex === 'orderNo'"> | 
|                         <a-button type="link" @click="openOrderDetl(record)">{{ text }}</a-button> | 
|                     </template> | 
|                 </template> | 
|             </a-table> | 
|         </a-modal> | 
|   | 
|         <ShowOrderDetlComponent ref="showOrderDetlChild" /> | 
|     </div> | 
| </template> | 
|   | 
| <style> | 
| .component-header { | 
|     display: flex; | 
| } | 
|   | 
| .component-header>div { | 
|     flex: 1; | 
| } | 
|   | 
| .qrcode { | 
|     display: flex; | 
|     justify-content: flex-end; | 
|     margin-right: 30px; | 
| } | 
| </style> |