diff --git a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue index cb1524f..60eba75 100644 --- a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue @@ -85,6 +85,7 @@ <div class="table-operator"> <a-button @click="createEmptyIn()" v-has="'taskHeader:emptyIn'" type="primary">空托入库</a-button> <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button> + <a-button @click="openDemo()" type="primary">弹出demo</a-button> </div> <!-- table区域-begin --> @@ -175,6 +176,7 @@ <taskHeader-modal ref="modalForm" @ok="modalFormOk"></taskHeader-modal> <empty-in-task-modal ref="emptyInModal" @ok="modalFormOk"></empty-in-task-modal> <many-empty-in-task-modal ref="manyEmptyInModal" @ok="modalFormOk"></many-empty-in-task-modal> + <MaterialTaskModal ref="materialTaskModal"></MaterialTaskModal> </a-card> </template> @@ -192,6 +194,7 @@ import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/ import EmptyInTaskModal from './modules/EmptyInTaskModal' import ManyEmptyInTaskModal from "./modules/ManyEmptyInTaskModal"; import {filterObj} from "@/utils/util"; +import MaterialTaskModal from "./modules/MaterialTaskModal"; export default { name: "TaskHeaderList", @@ -200,7 +203,8 @@ export default { ManyEmptyInTaskModal, EmptyInTaskModal, TaskDetailList, - TaskHeaderModal + TaskHeaderModal, + MaterialTaskModal }, data() { return { @@ -434,6 +438,9 @@ export default { this.$refs.manyEmptyInModal.edit(); this.$refs.manyEmptyInModal.title = "创建空托盘组入库"; }, + openDemo(){ + this.$refs.materialTaskModal.edit(); + }, solutionZoneCode(value) { var actions = [] Object.keys(this.zoneList).some((key) => { diff --git a/ant-design-vue-jeecg/src/views/system/task/modules/MaterialTaskModal.vue b/ant-design-vue-jeecg/src/views/system/task/modules/MaterialTaskModal.vue new file mode 100644 index 0000000..71a3bd1 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/system/task/modules/MaterialTaskModal.vue @@ -0,0 +1,218 @@ +<template> + <a-modal + :title="title" + :width="1200" + :visible="visible" + :maskClosable="false" + :confirmLoading="confirmLoading" + @ok="handleOk" + @cancel="handleCancel"> + + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :model="model"> + <!-- 主表单区域 --> + <a-row class="form-row" :gutter="0"> + <a-col :lg="8"> + <a-form-model-item label="托盘号" :rules="[{ required: true, message: '请输入托盘号!' }]"> + <a-input placeholder="请输入托盘号" v-model="model.containerCode"/> + </a-form-model-item> + </a-col> + + <a-col :lg="8"> + <a-form-model-item label="库位号"> + <a-input placeholder="请输入库位号" v-model="model.toLocationCode"/> + </a-form-model-item> + </a-col> + </a-row> + + </a-form-model> + + <!-- 子表单区域 --> + <a-tabs v-model="activeKey"> + <a-tab-pane tab="物料信息" key="1" :forceRender="true"> + <j-editable-table + ref="editableTable1" + :loading="table1.loading" + :columns="table1.columns" + :dataSource="table1.dataSource" + :maxHeight="300" + :rowNumber="true" + :rowSelection="true" + :actionButton="true"/> + </a-tab-pane> + </a-tabs> + + </a-spin> + + + </a-modal> +</template> + +<script> + +import JEditableTable from '@/components/jeecg/JEditableTable' +import {FormTypes, VALIDATE_NO_PASSED, getRefPromise, validateFormModelAndTables} from '@/utils/JEditableTableUtil' +import {httpAction, getAction} from '@/api/manage' +import JDate from '@/components/jeecg/JDate' + +export default { + name: 'MaterialTaskModal', + components: { + JDate, JEditableTable + }, + data() { + return { + title: '操作', + visible: false, + confirmLoading: false, + model: {}, + labelCol: { + xs: {span: 24}, + sm: {span: 6} + }, + wrapperCol: { + xs: {span: 24}, + sm: {span: 24 - 6} + }, + activeKey: '1', + // 客户信息 + table1: { + loading: false, + dataSource: [], + columns: [ + { + title: '物料编码', + key: 'materiaCode', + width: '24%', + type: FormTypes.input, + defaultValue: '', + placeholder: '请输入${title}', + validateRules: [{required: true, message: '${title}不能为空'}] + }, + { + title: '数量', + key: 'qty', + type: FormTypes.inputNumber, + width: '80px', + } + ] + }, + url: { + add: '/test/jeecgOrderMain/add', + edit: '/test/jeecgOrderMain/edit', + orderCustomerList: '/test/jeecgOrderMain/queryOrderCustomerListByMainId', + orderTicketList: '/test/jeecgOrderMain/queryOrderTicketListByMainId' + } + } + }, + created() { + }, + methods: { + + // 获取所有的editableTable实例 + getAllTable() { + return Promise.all([ + getRefPromise(this, 'editableTable1') + ]) + }, + + add() { + // 默认新增一条数据 + this.getAllTable().then(editableTables => { + editableTables[0].add() + }) + + this.edit({}) + }, + edit(record) { + this.visible = true + this.activeKey = '1' + this.model = Object.assign({}, record) + // 加载子表数据 + if (this.model.id) { + let params = {id: this.model.id} + this.requestTableData(this.url.orderCustomerList, params, this.table1) + } + + }, + close() { + this.visible = false + this.getAllTable().then(editableTables => { + editableTables[0].initialize() + }) + this.$emit('close') + this.$refs.form.resetFields(); + }, + /** 查询某个tab的数据 */ + requestTableData(url, params, tab) { + tab.loading = true + getAction(url, params).then(res => { + tab.dataSource = res.result || [] + }).finally(() => { + tab.loading = false + }) + }, + handleOk() { + this.validateFields() + }, + handleCancel() { + this.close() + }, + + + /** 触发表单验证 */ + validateFields() { + this.getAllTable().then(tables => { + /** 一次性验证主表和所有的次表 */ + return validateFormModelAndTables(this.$refs.form, this.model, tables) + }).then(allValues => { + let formData = this.classifyIntoFormData(allValues) + console.log("输出数据:") + console.log(formData) + // 发起请求 + return this.requestAddOrEdit(formData) + }).catch(e => { + if (e.error === VALIDATE_NO_PASSED) { + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab + this.activeKey = e.index == null ? this.activeKey : (e.index + 1).toString() + } else { + console.error(e) + } + }) + }, + /** 整理成formData */ + classifyIntoFormData(allValues) { + let orderMain = Object.assign(this.model, allValues.formValue) + return { + ...orderMain, // 展开 + jeecgOrderCustomerList: allValues.tablesValue[0].values, + } + }, + /** 发起新增或修改的请求 */ + requestAddOrEdit(formData) { + alert(JSON.stringify(formData)) + let url = this.url.add, method = 'post' + if (this.model.id) { + url = this.url.edit + method = 'put' + } + this.confirmLoading = true + httpAction(url, formData, method).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.$emit('ok') + this.close() + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.confirmLoading = false + }) + } + + } +} +</script> + +<style scoped> +</style> \ No newline at end of file