Commit 679c19269552adad198287ad85474532388b6da6
1 parent
831c03f4
入库任务列表,增加一个弹窗demo按钮
Showing
2 changed files
with
226 additions
and
1 deletions
ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
@@ -85,6 +85,7 @@ | @@ -85,6 +85,7 @@ | ||
85 | <div class="table-operator"> | 85 | <div class="table-operator"> |
86 | <a-button @click="createEmptyIn()" v-has="'taskHeader:emptyIn'" type="primary">空托入库</a-button> | 86 | <a-button @click="createEmptyIn()" v-has="'taskHeader:emptyIn'" type="primary">空托入库</a-button> |
87 | <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button> | 87 | <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button> |
88 | + <a-button @click="openDemo()" type="primary">弹出demo</a-button> | ||
88 | </div> | 89 | </div> |
89 | 90 | ||
90 | <!-- table区域-begin --> | 91 | <!-- table区域-begin --> |
@@ -175,6 +176,7 @@ | @@ -175,6 +176,7 @@ | ||
175 | <taskHeader-modal ref="modalForm" @ok="modalFormOk"></taskHeader-modal> | 176 | <taskHeader-modal ref="modalForm" @ok="modalFormOk"></taskHeader-modal> |
176 | <empty-in-task-modal ref="emptyInModal" @ok="modalFormOk"></empty-in-task-modal> | 177 | <empty-in-task-modal ref="emptyInModal" @ok="modalFormOk"></empty-in-task-modal> |
177 | <many-empty-in-task-modal ref="manyEmptyInModal" @ok="modalFormOk"></many-empty-in-task-modal> | 178 | <many-empty-in-task-modal ref="manyEmptyInModal" @ok="modalFormOk"></many-empty-in-task-modal> |
179 | + <MaterialTaskModal ref="materialTaskModal"></MaterialTaskModal> | ||
178 | </a-card> | 180 | </a-card> |
179 | </template> | 181 | </template> |
180 | 182 | ||
@@ -192,6 +194,7 @@ import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/ | @@ -192,6 +194,7 @@ import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/ | ||
192 | import EmptyInTaskModal from './modules/EmptyInTaskModal' | 194 | import EmptyInTaskModal from './modules/EmptyInTaskModal' |
193 | import ManyEmptyInTaskModal from "./modules/ManyEmptyInTaskModal"; | 195 | import ManyEmptyInTaskModal from "./modules/ManyEmptyInTaskModal"; |
194 | import {filterObj} from "@/utils/util"; | 196 | import {filterObj} from "@/utils/util"; |
197 | +import MaterialTaskModal from "./modules/MaterialTaskModal"; | ||
195 | 198 | ||
196 | export default { | 199 | export default { |
197 | name: "TaskHeaderList", | 200 | name: "TaskHeaderList", |
@@ -200,7 +203,8 @@ export default { | @@ -200,7 +203,8 @@ export default { | ||
200 | ManyEmptyInTaskModal, | 203 | ManyEmptyInTaskModal, |
201 | EmptyInTaskModal, | 204 | EmptyInTaskModal, |
202 | TaskDetailList, | 205 | TaskDetailList, |
203 | - TaskHeaderModal | 206 | + TaskHeaderModal, |
207 | + MaterialTaskModal | ||
204 | }, | 208 | }, |
205 | data() { | 209 | data() { |
206 | return { | 210 | return { |
@@ -434,6 +438,9 @@ export default { | @@ -434,6 +438,9 @@ export default { | ||
434 | this.$refs.manyEmptyInModal.edit(); | 438 | this.$refs.manyEmptyInModal.edit(); |
435 | this.$refs.manyEmptyInModal.title = "创建空托盘组入库"; | 439 | this.$refs.manyEmptyInModal.title = "创建空托盘组入库"; |
436 | }, | 440 | }, |
441 | + openDemo(){ | ||
442 | + this.$refs.materialTaskModal.edit(); | ||
443 | + }, | ||
437 | solutionZoneCode(value) { | 444 | solutionZoneCode(value) { |
438 | var actions = [] | 445 | var actions = [] |
439 | Object.keys(this.zoneList).some((key) => { | 446 | Object.keys(this.zoneList).some((key) => { |
ant-design-vue-jeecg/src/views/system/task/modules/MaterialTaskModal.vue
0 → 100644
1 | +<template> | ||
2 | + <a-modal | ||
3 | + :title="title" | ||
4 | + :width="1200" | ||
5 | + :visible="visible" | ||
6 | + :maskClosable="false" | ||
7 | + :confirmLoading="confirmLoading" | ||
8 | + @ok="handleOk" | ||
9 | + @cancel="handleCancel"> | ||
10 | + | ||
11 | + <a-spin :spinning="confirmLoading"> | ||
12 | + <a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :model="model"> | ||
13 | + <!-- 主表单区域 --> | ||
14 | + <a-row class="form-row" :gutter="0"> | ||
15 | + <a-col :lg="8"> | ||
16 | + <a-form-model-item label="托盘号" :rules="[{ required: true, message: '请输入托盘号!' }]"> | ||
17 | + <a-input placeholder="请输入托盘号" v-model="model.containerCode"/> | ||
18 | + </a-form-model-item> | ||
19 | + </a-col> | ||
20 | + | ||
21 | + <a-col :lg="8"> | ||
22 | + <a-form-model-item label="库位号"> | ||
23 | + <a-input placeholder="请输入库位号" v-model="model.toLocationCode"/> | ||
24 | + </a-form-model-item> | ||
25 | + </a-col> | ||
26 | + </a-row> | ||
27 | + | ||
28 | + </a-form-model> | ||
29 | + | ||
30 | + <!-- 子表单区域 --> | ||
31 | + <a-tabs v-model="activeKey"> | ||
32 | + <a-tab-pane tab="物料信息" key="1" :forceRender="true"> | ||
33 | + <j-editable-table | ||
34 | + ref="editableTable1" | ||
35 | + :loading="table1.loading" | ||
36 | + :columns="table1.columns" | ||
37 | + :dataSource="table1.dataSource" | ||
38 | + :maxHeight="300" | ||
39 | + :rowNumber="true" | ||
40 | + :rowSelection="true" | ||
41 | + :actionButton="true"/> | ||
42 | + </a-tab-pane> | ||
43 | + </a-tabs> | ||
44 | + | ||
45 | + </a-spin> | ||
46 | + | ||
47 | + | ||
48 | + </a-modal> | ||
49 | +</template> | ||
50 | + | ||
51 | +<script> | ||
52 | + | ||
53 | +import JEditableTable from '@/components/jeecg/JEditableTable' | ||
54 | +import {FormTypes, VALIDATE_NO_PASSED, getRefPromise, validateFormModelAndTables} from '@/utils/JEditableTableUtil' | ||
55 | +import {httpAction, getAction} from '@/api/manage' | ||
56 | +import JDate from '@/components/jeecg/JDate' | ||
57 | + | ||
58 | +export default { | ||
59 | + name: 'MaterialTaskModal', | ||
60 | + components: { | ||
61 | + JDate, JEditableTable | ||
62 | + }, | ||
63 | + data() { | ||
64 | + return { | ||
65 | + title: '操作', | ||
66 | + visible: false, | ||
67 | + confirmLoading: false, | ||
68 | + model: {}, | ||
69 | + labelCol: { | ||
70 | + xs: {span: 24}, | ||
71 | + sm: {span: 6} | ||
72 | + }, | ||
73 | + wrapperCol: { | ||
74 | + xs: {span: 24}, | ||
75 | + sm: {span: 24 - 6} | ||
76 | + }, | ||
77 | + activeKey: '1', | ||
78 | + // 客户信息 | ||
79 | + table1: { | ||
80 | + loading: false, | ||
81 | + dataSource: [], | ||
82 | + columns: [ | ||
83 | + { | ||
84 | + title: '物料编码', | ||
85 | + key: 'materiaCode', | ||
86 | + width: '24%', | ||
87 | + type: FormTypes.input, | ||
88 | + defaultValue: '', | ||
89 | + placeholder: '请输入${title}', | ||
90 | + validateRules: [{required: true, message: '${title}不能为空'}] | ||
91 | + }, | ||
92 | + { | ||
93 | + title: '数量', | ||
94 | + key: 'qty', | ||
95 | + type: FormTypes.inputNumber, | ||
96 | + width: '80px', | ||
97 | + } | ||
98 | + ] | ||
99 | + }, | ||
100 | + url: { | ||
101 | + add: '/test/jeecgOrderMain/add', | ||
102 | + edit: '/test/jeecgOrderMain/edit', | ||
103 | + orderCustomerList: '/test/jeecgOrderMain/queryOrderCustomerListByMainId', | ||
104 | + orderTicketList: '/test/jeecgOrderMain/queryOrderTicketListByMainId' | ||
105 | + } | ||
106 | + } | ||
107 | + }, | ||
108 | + created() { | ||
109 | + }, | ||
110 | + methods: { | ||
111 | + | ||
112 | + // 获取所有的editableTable实例 | ||
113 | + getAllTable() { | ||
114 | + return Promise.all([ | ||
115 | + getRefPromise(this, 'editableTable1') | ||
116 | + ]) | ||
117 | + }, | ||
118 | + | ||
119 | + add() { | ||
120 | + // 默认新增一条数据 | ||
121 | + this.getAllTable().then(editableTables => { | ||
122 | + editableTables[0].add() | ||
123 | + }) | ||
124 | + | ||
125 | + this.edit({}) | ||
126 | + }, | ||
127 | + edit(record) { | ||
128 | + this.visible = true | ||
129 | + this.activeKey = '1' | ||
130 | + this.model = Object.assign({}, record) | ||
131 | + // 加载子表数据 | ||
132 | + if (this.model.id) { | ||
133 | + let params = {id: this.model.id} | ||
134 | + this.requestTableData(this.url.orderCustomerList, params, this.table1) | ||
135 | + } | ||
136 | + | ||
137 | + }, | ||
138 | + close() { | ||
139 | + this.visible = false | ||
140 | + this.getAllTable().then(editableTables => { | ||
141 | + editableTables[0].initialize() | ||
142 | + }) | ||
143 | + this.$emit('close') | ||
144 | + this.$refs.form.resetFields(); | ||
145 | + }, | ||
146 | + /** 查询某个tab的数据 */ | ||
147 | + requestTableData(url, params, tab) { | ||
148 | + tab.loading = true | ||
149 | + getAction(url, params).then(res => { | ||
150 | + tab.dataSource = res.result || [] | ||
151 | + }).finally(() => { | ||
152 | + tab.loading = false | ||
153 | + }) | ||
154 | + }, | ||
155 | + handleOk() { | ||
156 | + this.validateFields() | ||
157 | + }, | ||
158 | + handleCancel() { | ||
159 | + this.close() | ||
160 | + }, | ||
161 | + | ||
162 | + | ||
163 | + /** 触发表单验证 */ | ||
164 | + validateFields() { | ||
165 | + this.getAllTable().then(tables => { | ||
166 | + /** 一次性验证主表和所有的次表 */ | ||
167 | + return validateFormModelAndTables(this.$refs.form, this.model, tables) | ||
168 | + }).then(allValues => { | ||
169 | + let formData = this.classifyIntoFormData(allValues) | ||
170 | + console.log("输出数据:") | ||
171 | + console.log(formData) | ||
172 | + // 发起请求 | ||
173 | + return this.requestAddOrEdit(formData) | ||
174 | + }).catch(e => { | ||
175 | + if (e.error === VALIDATE_NO_PASSED) { | ||
176 | + // 如果有未通过表单验证的子表,就自动跳转到它所在的tab | ||
177 | + this.activeKey = e.index == null ? this.activeKey : (e.index + 1).toString() | ||
178 | + } else { | ||
179 | + console.error(e) | ||
180 | + } | ||
181 | + }) | ||
182 | + }, | ||
183 | + /** 整理成formData */ | ||
184 | + classifyIntoFormData(allValues) { | ||
185 | + let orderMain = Object.assign(this.model, allValues.formValue) | ||
186 | + return { | ||
187 | + ...orderMain, // 展开 | ||
188 | + jeecgOrderCustomerList: allValues.tablesValue[0].values, | ||
189 | + } | ||
190 | + }, | ||
191 | + /** 发起新增或修改的请求 */ | ||
192 | + requestAddOrEdit(formData) { | ||
193 | + alert(JSON.stringify(formData)) | ||
194 | + let url = this.url.add, method = 'post' | ||
195 | + if (this.model.id) { | ||
196 | + url = this.url.edit | ||
197 | + method = 'put' | ||
198 | + } | ||
199 | + this.confirmLoading = true | ||
200 | + httpAction(url, formData, method).then((res) => { | ||
201 | + if (res.success) { | ||
202 | + this.$message.success(res.message) | ||
203 | + this.$emit('ok') | ||
204 | + this.close() | ||
205 | + } else { | ||
206 | + this.$message.warning(res.message) | ||
207 | + } | ||
208 | + }).finally(() => { | ||
209 | + this.confirmLoading = false | ||
210 | + }) | ||
211 | + } | ||
212 | + | ||
213 | + } | ||
214 | +} | ||
215 | +</script> | ||
216 | + | ||
217 | +<style scoped> | ||
218 | +</style> | ||
0 | \ No newline at end of file | 219 | \ No newline at end of file |