Commit 984b11300dc2f29a0de7715e7972686e78d4ed9c
Merge remote-tracking branch 'origin/develop' into develop
Showing
107 changed files
with
2039 additions
and
884 deletions
Too many changes to show.
To preserve performance only 72 of 107 files are displayed.
ant-design-vue-jeecg/src/api/api.js
... | ... | @@ -137,6 +137,8 @@ export const completeTaskByWMS = (params) => postAction('/task/taskHeader/comple |
137 | 137 | export const execute = (params) => postAction('/task/taskHeader/execute', params); |
138 | 138 | //取消任务 |
139 | 139 | export const cancelTask = (params) => postAction('/task/taskHeader/cancelTask?ids=' + params, params); |
140 | +//切换任务 | |
141 | +export const switchTask = (params) => postAction('/task/taskHeader/switchTask?ids=' + params, params); | |
140 | 142 | //自动配盘 |
141 | 143 | export const autoCombination = (params) => postAction('/shipment/shipmentCombination/autoCombination', params); |
142 | 144 | //自动出库 |
... | ... |
ant-design-vue-jeecg/src/views/system/UserList.vue
... | ... | @@ -82,7 +82,7 @@ |
82 | 82 | </a-menu> |
83 | 83 | <a-button style="margin-left: 8px">批量操作<a-icon type="down"/></a-button> |
84 | 84 | </a-dropdown> |
85 | - <j-super-query :fieldList="superQueryFieldList" @handleSuperQuery="handleSuperQuery"/> | |
85 | + <j-super-query :fieldList="superQueryFieldList" v-has="'user:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
86 | 86 | </div> |
87 | 87 | |
88 | 88 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/AddressList.vue
... | ... | @@ -37,7 +37,8 @@ |
37 | 37 | <div class="table-operator"> |
38 | 38 | <a-button @click="handleAdd" v-has="'address:add'" type="primary" icon="plus">新增</a-button> |
39 | 39 | <a-button v-has="'address:export'" type="primary" icon="download" @click="handleExportXls('接口地址')" |
40 | - >导出</a-button | |
40 | + >导出 | |
41 | + </a-button | |
41 | 42 | > |
42 | 43 | <a-upload |
43 | 44 | v-has="'address:import'" |
... | ... | @@ -52,13 +53,19 @@ |
52 | 53 | </a-upload> |
53 | 54 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
54 | 55 | <a-menu slot="overlay" v-has="'address:deleteBatch'"> |
55 | - <a-menu-item key="1" @click="batchDel"> <a-icon type="delete" /> 删除 </a-menu-item> | |
56 | + <a-menu-item key="1" @click="batchDel"> | |
57 | + <a-icon type="delete"/> | |
58 | + 删除 | |
59 | + </a-menu-item> | |
56 | 60 | </a-menu> |
57 | 61 | <a-button style="margin-left: 8px"> |
58 | 62 | 批量操作 |
59 | - <a-icon type="down" /> | |
63 | + <a-icon type="down"/> | |
60 | 64 | </a-button> |
61 | 65 | </a-dropdown> |
66 | + <j-super-query :fieldList="superFieldList" v-has="'address:superQuery'" ref="superQueryModal" | |
67 | + @handleSuperQuery="handleSuperQuery"></j-super-query> | |
68 | + | |
62 | 69 | </div> |
63 | 70 | |
64 | 71 | <!-- table区域-begin --> |
... | ... | @@ -85,7 +92,7 @@ |
85 | 92 | <span slot="action" slot-scope="text, record"> |
86 | 93 | <a v-has="'address:edit'" @click="handleEdit(record)">编辑</a> |
87 | 94 | |
88 | - <a-divider type="vertical" /> | |
95 | + <a-divider type="vertical"/> | |
89 | 96 | <a-dropdown> |
90 | 97 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> |
91 | 98 | <a-menu slot="overlay"> |
... | ... | @@ -109,10 +116,10 @@ |
109 | 116 | |
110 | 117 | <script> |
111 | 118 | import '@/assets/less/TableExpand.less' |
112 | -import { mixinDevice } from '@/utils/mixin' | |
113 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
119 | +import {mixinDevice} from '@/utils/mixin' | |
120 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
114 | 121 | import AddressModal from './modules/AddressModal' |
115 | -import { getZoneList } from '@/api/api' | |
122 | +import {getZoneList} from '@/api/api' | |
116 | 123 | |
117 | 124 | export default { |
118 | 125 | name: 'AddressList', |
... | ... | @@ -133,7 +140,7 @@ export default { |
133 | 140 | key: 'rowIndex', |
134 | 141 | width: 60, |
135 | 142 | align: 'center', |
136 | - customRender: function(t, r, index) { | |
143 | + customRender: function (t, r, index) { | |
137 | 144 | return parseInt(index) + 1 |
138 | 145 | } |
139 | 146 | }, |
... | ... | @@ -152,7 +159,7 @@ export default { |
152 | 159 | align: 'center', |
153 | 160 | dataIndex: 'zoneCode', |
154 | 161 | key: 'zoneCode', |
155 | - scopedSlots: { customRender: 'zoneCode' } | |
162 | + scopedSlots: {customRender: 'zoneCode'} | |
156 | 163 | }, |
157 | 164 | { |
158 | 165 | title: '接口地址', |
... | ... | @@ -185,7 +192,7 @@ export default { |
185 | 192 | align: 'center', |
186 | 193 | fixed: 'right', |
187 | 194 | width: 147, |
188 | - scopedSlots: { customRender: 'action' } | |
195 | + scopedSlots: {customRender: 'action'} | |
189 | 196 | } |
190 | 197 | ], |
191 | 198 | url: { |
... | ... | @@ -209,28 +216,30 @@ export default { |
209 | 216 | //slice可以在数组的任何位置进行删除/添加操作 |
210 | 217 | this.zoneOptions.splice(0, 1) |
211 | 218 | for (let i = 0; i < res.result.length; i++) { |
212 | - this.zoneOptions.push({ value: res.result[i].code, text: res.result[i].name }) | |
219 | + this.zoneOptions.push({value: res.result[i].code, text: res.result[i].name}) | |
213 | 220 | } |
214 | 221 | }, 500) |
215 | 222 | } |
216 | 223 | }) |
217 | 224 | }, |
218 | 225 | computed: { |
219 | - importExcelUrl: function() { | |
226 | + importExcelUrl: function () { | |
220 | 227 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
221 | 228 | } |
222 | 229 | }, |
223 | 230 | methods: { |
224 | - initDictConfig() {}, | |
231 | + initDictConfig() { | |
232 | + }, | |
225 | 233 | getSuperFieldList() { |
226 | 234 | let fieldList = [] |
227 | - fieldList.push({ type: 'string', value: 'code', text: '编码', dictCode: '' }) | |
228 | - fieldList.push({ type: 'string', value: 'zoneCode', text: '库区', dictCode: '' }) | |
229 | - fieldList.push({ type: 'string', value: 'url', text: '接口地址', dictCode: '' }) | |
230 | - fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) | |
231 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
232 | - fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) | |
233 | - fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) | |
235 | + fieldList.push({type: 'string', value: 'remark', text: '接口名称', dictCode: ''}) | |
236 | + fieldList.push({type: 'string', value: 'code', text: '编码', dictCode: ''}) | |
237 | + fieldList.push({type: 'string', value: 'zoneCode', text: '库区', dictCode: ''}) | |
238 | + fieldList.push({type: 'string', value: 'url', text: '接口地址', dictCode: ''}) | |
239 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
240 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
241 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
242 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
234 | 243 | this.superFieldList = fieldList |
235 | 244 | }, |
236 | 245 | solutionZoneCode(value) { |
... | ... |
ant-design-vue-jeecg/src/views/system/config/AgvPortList.vue
... | ... | @@ -32,22 +32,32 @@ |
32 | 32 | <!-- 操作按钮区域 --> |
33 | 33 | <div class="table-operator"> |
34 | 34 | <a-button @click="handleAdd" v-has="'agvPort:add'" type="primary" icon="plus">新增</a-button> |
35 | - <a-button v-has="'agvPort:export'" type="primary" icon="download" @click="handleExportXls('AGV点位')">导出</a-button> | |
36 | - <a-upload v-has="'agvPort:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
35 | + <a-button v-has="'agvPort:export'" type="primary" icon="download" @click="handleExportXls('AGV点位')">导出 | |
36 | + </a-button> | |
37 | + <a-upload v-has="'agvPort:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
38 | + :action="importExcelUrl" @change="handleImportExcel"> | |
37 | 39 | <a-button type="primary" icon="import">导入</a-button> |
38 | 40 | </a-upload> |
39 | 41 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
40 | 42 | <a-menu slot="overlay"> |
41 | - <a-menu-item key="1" v-has="'agvPort:delete'" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> | |
43 | + <a-menu-item key="1" v-has="'agvPort:delete'" @click="batchDel"> | |
44 | + <a-icon type="delete"/> | |
45 | + 删除 | |
46 | + </a-menu-item> | |
42 | 47 | </a-menu> |
43 | - <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> | |
48 | + <a-button style="margin-left: 8px"> 批量操作 | |
49 | + <a-icon type="down"/> | |
50 | + </a-button> | |
44 | 51 | </a-dropdown> |
52 | + <j-super-query :fieldList="superFieldList" v-has="'agvPort:superQuery'" | |
53 | + @handleSuperQuery="handleSuperQuery"/> | |
45 | 54 | </div> |
46 | 55 | |
47 | 56 | <!-- table区域-begin --> |
48 | 57 | <div> |
49 | 58 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
50 | - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
59 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a | |
60 | + style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
51 | 61 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
52 | 62 | </div> |
53 | 63 | |
... | ... | @@ -70,7 +80,8 @@ |
70 | 80 | </template> |
71 | 81 | <template slot="imgSlot" slot-scope="text"> |
72 | 82 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> |
73 | - <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
83 | + <img v-else :src="getImgView(text)" height="25px" alt="" | |
84 | + style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
74 | 85 | </template> |
75 | 86 | <template slot="fileSlot" slot-scope="text"> |
76 | 87 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
... | ... | @@ -88,9 +99,9 @@ |
88 | 99 | <span slot="action" slot-scope="text, record"> |
89 | 100 | <a v-has="'agvPort:edit'" @click="handleEdit(record)">编辑</a> |
90 | 101 | |
91 | - <a-divider type="vertical" /> | |
102 | + <a-divider type="vertical"/> | |
92 | 103 | <a-dropdown> |
93 | - <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
104 | + <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> | |
94 | 105 | <a-menu slot="overlay"> |
95 | 106 | <a-menu-item> |
96 | 107 | <a @click="handleDetail(record)">详情</a> |
... | ... | @@ -113,113 +124,113 @@ |
113 | 124 | |
114 | 125 | <script> |
115 | 126 | |
116 | - import '@/assets/less/TableExpand.less' | |
117 | - import { mixinDevice } from '@/utils/mixin' | |
118 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
119 | - import AgvPortModal from './modules/AgvPortModal' | |
127 | +import '@/assets/less/TableExpand.less' | |
128 | +import {mixinDevice} from '@/utils/mixin' | |
129 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
130 | +import AgvPortModal from './modules/AgvPortModal' | |
120 | 131 | |
121 | - export default { | |
122 | - name: 'AgvPortList', | |
123 | - mixins:[JeecgListMixin, mixinDevice], | |
124 | - components: { | |
125 | - AgvPortModal | |
126 | - }, | |
127 | - data () { | |
128 | - return { | |
129 | - description: 'AGV点位管理页面', | |
130 | - // 表头 | |
131 | - columns: [ | |
132 | - { | |
133 | - title: '#', | |
134 | - dataIndex: '', | |
135 | - key:'rowIndex', | |
136 | - width:60, | |
137 | - align:"center", | |
138 | - customRender:function (t,r,index) { | |
139 | - return parseInt(index)+1; | |
140 | - } | |
141 | - }, | |
142 | - { | |
143 | - title:'编码', | |
144 | - align:"center", | |
145 | - dataIndex: 'code' | |
146 | - }, | |
147 | - { | |
148 | - title:'名称', | |
149 | - align:"center", | |
150 | - dataIndex: 'name' | |
151 | - }, | |
152 | - { | |
153 | - title:'备注', | |
154 | - align:"center", | |
155 | - dataIndex: 'remark' | |
156 | - }, | |
157 | - { | |
158 | - title:'创建人', | |
159 | - align:"center", | |
160 | - dataIndex: 'createBy' | |
161 | - }, | |
162 | - { | |
163 | - title:'创建日期', | |
164 | - align:"center", | |
165 | - dataIndex: 'createTime' | |
166 | - }, | |
167 | - { | |
168 | - title:'更新人', | |
169 | - align:"center", | |
170 | - dataIndex: 'updateBy' | |
171 | - }, | |
172 | - { | |
173 | - title:'更新日期', | |
174 | - align:"center", | |
175 | - dataIndex: 'updateTime' | |
176 | - }, | |
177 | - { | |
178 | - title: '操作', | |
179 | - dataIndex: 'action', | |
180 | - align:"center", | |
181 | - fixed:"right", | |
182 | - width:147, | |
183 | - scopedSlots: { customRender: 'action' } | |
132 | +export default { | |
133 | + name: 'AgvPortList', | |
134 | + mixins: [JeecgListMixin, mixinDevice], | |
135 | + components: { | |
136 | + AgvPortModal | |
137 | + }, | |
138 | + data() { | |
139 | + return { | |
140 | + description: 'AGV点位管理页面', | |
141 | + // 表头 | |
142 | + columns: [ | |
143 | + { | |
144 | + title: '#', | |
145 | + dataIndex: '', | |
146 | + key: 'rowIndex', | |
147 | + width: 60, | |
148 | + align: "center", | |
149 | + customRender: function (t, r, index) { | |
150 | + return parseInt(index) + 1; | |
184 | 151 | } |
185 | - ], | |
186 | - url: { | |
187 | - list: "/config/agvPort/list", | |
188 | - delete: "/config/agvPort/delete", | |
189 | - deleteBatch: "/config/agvPort/deleteBatch", | |
190 | - exportXlsUrl: "/config/agvPort/exportXls", | |
191 | - importExcelUrl: "config/agvPort/importExcel", | |
192 | - | |
193 | 152 | }, |
194 | - dictOptions:{}, | |
195 | - superFieldList:[], | |
196 | - } | |
197 | - }, | |
198 | - created() { | |
153 | + { | |
154 | + title: '编码', | |
155 | + align: "center", | |
156 | + dataIndex: 'code' | |
157 | + }, | |
158 | + { | |
159 | + title: '名称', | |
160 | + align: "center", | |
161 | + dataIndex: 'name' | |
162 | + }, | |
163 | + { | |
164 | + title: '备注', | |
165 | + align: "center", | |
166 | + dataIndex: 'remark' | |
167 | + }, | |
168 | + { | |
169 | + title: '创建人', | |
170 | + align: "center", | |
171 | + dataIndex: 'createBy' | |
172 | + }, | |
173 | + { | |
174 | + title: '创建日期', | |
175 | + align: "center", | |
176 | + dataIndex: 'createTime' | |
177 | + }, | |
178 | + { | |
179 | + title: '更新人', | |
180 | + align: "center", | |
181 | + dataIndex: 'updateBy' | |
182 | + }, | |
183 | + { | |
184 | + title: '更新日期', | |
185 | + align: "center", | |
186 | + dataIndex: 'updateTime' | |
187 | + }, | |
188 | + { | |
189 | + title: '操作', | |
190 | + dataIndex: 'action', | |
191 | + align: "center", | |
192 | + fixed: "right", | |
193 | + width: 147, | |
194 | + scopedSlots: {customRender: 'action'} | |
195 | + } | |
196 | + ], | |
197 | + url: { | |
198 | + list: "/config/agvPort/list", | |
199 | + delete: "/config/agvPort/delete", | |
200 | + deleteBatch: "/config/agvPort/deleteBatch", | |
201 | + exportXlsUrl: "/config/agvPort/exportXls", | |
202 | + importExcelUrl: "config/agvPort/importExcel", | |
203 | + | |
204 | + }, | |
205 | + dictOptions: {}, | |
206 | + superFieldList: [], | |
207 | + } | |
208 | + }, | |
209 | + created() { | |
199 | 210 | this.getSuperFieldList(); |
211 | + }, | |
212 | + computed: { | |
213 | + importExcelUrl: function () { | |
214 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
200 | 215 | }, |
201 | - computed: { | |
202 | - importExcelUrl: function(){ | |
203 | - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
204 | - }, | |
216 | + }, | |
217 | + methods: { | |
218 | + initDictConfig() { | |
205 | 219 | }, |
206 | - methods: { | |
207 | - initDictConfig(){ | |
208 | - }, | |
209 | - getSuperFieldList(){ | |
210 | - let fieldList=[]; | |
211 | - fieldList.push({type:'string',value:'code',text:'编码',dictCode:''}) | |
212 | - fieldList.push({type:'string',value:'name',text:'名称',dictCode:''}) | |
213 | - fieldList.push({type:'string',value:'remark',text:'备注',dictCode:''}) | |
214 | - fieldList.push({type:'string',value:'createBy',text:'创建人',dictCode:''}) | |
215 | - fieldList.push({type:'datetime',value:'createTime',text:'创建日期'}) | |
216 | - fieldList.push({type:'string',value:'updateBy',text:'更新人',dictCode:''}) | |
217 | - fieldList.push({type:'datetime',value:'updateTime',text:'更新日期'}) | |
218 | - this.superFieldList = fieldList | |
219 | - } | |
220 | + getSuperFieldList() { | |
221 | + let fieldList = []; | |
222 | + fieldList.push({type: 'string', value: 'code', text: '编码', dictCode: ''}) | |
223 | + fieldList.push({type: 'string', value: 'name', text: '名称', dictCode: ''}) | |
224 | + fieldList.push({type: 'string', value: 'remark', text: '备注', dictCode: ''}) | |
225 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
226 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
227 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
228 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
229 | + this.superFieldList = fieldList | |
220 | 230 | } |
221 | 231 | } |
232 | +} | |
222 | 233 | </script> |
223 | 234 | <style scoped> |
224 | - @import '~@assets/less/common.less'; | |
235 | +@import '~@assets/less/common.less'; | |
225 | 236 | </style> |
226 | 237 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue
... | ... | @@ -37,6 +37,8 @@ |
37 | 37 | @change="handleImportExcel"> |
38 | 38 | <a-button type="primary" icon="import">导入</a-button> |
39 | 39 | </a-upload> |
40 | + | |
41 | + <j-super-query :fieldList="superFieldList" v-has="'bomHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
40 | 42 | </div> |
41 | 43 | |
42 | 44 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/CarrierList.vue
... | ... | @@ -12,8 +12,10 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button @click="handleAdd" v-has="'carrier:add'" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'carrier:export'" type="primary" icon="download" @click="handleExportXls('承运商管理')">导出</a-button> | |
16 | - <a-upload v-has="'carrier:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
15 | + <a-button v-has="'carrier:export'" type="primary" icon="download" @click="handleExportXls('承运商管理')">导出 | |
16 | + </a-button> | |
17 | + <a-upload v-has="'carrier:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
18 | + :action="importExcelUrl" | |
17 | 19 | @change="handleImportExcel"> |
18 | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | 21 | </a-upload> |
... | ... | @@ -28,6 +30,8 @@ |
28 | 30 | <a-icon type="down"/> |
29 | 31 | </a-button> |
30 | 32 | </a-dropdown> |
33 | + | |
34 | + <j-super-query :fieldList="superFieldList" v-has="'carrier:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
31 | 35 | </div> |
32 | 36 | |
33 | 37 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/CompanyList.vue
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
21 | 21 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
22 | 22 | {{ toggleSearchStatus ? '收起' : '展开' }} |
23 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | |
23 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> | |
24 | 24 | </a> |
25 | 25 | </span> |
26 | 26 | </a-col> |
... | ... | @@ -47,15 +47,17 @@ |
47 | 47 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
48 | 48 | <a-menu slot="overlay" v-has="'company:deleteBatch'"> |
49 | 49 | <a-menu-item key="1" @click="batchDel"> |
50 | - <a-icon type="deleteBatch" /> | |
50 | + <a-icon type="deleteBatch"/> | |
51 | 51 | 删除 |
52 | 52 | </a-menu-item> |
53 | 53 | </a-menu> |
54 | 54 | <a-button style="margin-left: 8px"> |
55 | 55 | 批量操作 |
56 | - <a-icon type="down" /> | |
56 | + <a-icon type="down"/> | |
57 | 57 | </a-button> |
58 | 58 | </a-dropdown> |
59 | + | |
60 | + <j-super-query :fieldList="superFieldList" v-has="'company:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
59 | 61 | </div> |
60 | 62 | |
61 | 63 | <!-- table区域-begin --> |
... | ... | @@ -101,7 +103,7 @@ |
101 | 103 | </template> |
102 | 104 | |
103 | 105 | <span slot="action" slot-scope="text, record"> |
104 | - <a v-has="'company:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical" /></a> | |
106 | + <a v-has="'company:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical"/></a> | |
105 | 107 | <a-dropdown> |
106 | 108 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> |
107 | 109 | <a-menu slot="overlay"> |
... | ... | @@ -125,8 +127,8 @@ |
125 | 127 | |
126 | 128 | <script> |
127 | 129 | import '@/assets/less/TableExpand.less' |
128 | -import { mixinDevice } from '@/utils/mixin' | |
129 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
130 | +import {mixinDevice} from '@/utils/mixin' | |
131 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
130 | 132 | import CompanyModal from './modules/CompanyModal' |
131 | 133 | |
132 | 134 | export default { |
... | ... | @@ -146,7 +148,7 @@ export default { |
146 | 148 | key: 'rowIndex', |
147 | 149 | width: 60, |
148 | 150 | align: 'center', |
149 | - customRender: function(t, r, index) { | |
151 | + customRender: function (t, r, index) { | |
150 | 152 | return parseInt(index) + 1 |
151 | 153 | } |
152 | 154 | }, |
... | ... | @@ -206,7 +208,7 @@ export default { |
206 | 208 | align: 'center', |
207 | 209 | fixed: 'right', |
208 | 210 | width: 147, |
209 | - scopedSlots: { customRender: 'action' } | |
211 | + scopedSlots: {customRender: 'action'} | |
210 | 212 | } |
211 | 213 | ], |
212 | 214 | url: { |
... | ... | @@ -224,24 +226,25 @@ export default { |
224 | 226 | this.getSuperFieldList() |
225 | 227 | }, |
226 | 228 | computed: { |
227 | - importExcelUrl: function() { | |
229 | + importExcelUrl: function () { | |
228 | 230 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
229 | 231 | } |
230 | 232 | }, |
231 | 233 | methods: { |
232 | - initDictConfig() {}, | |
234 | + initDictConfig() { | |
235 | + }, | |
233 | 236 | getSuperFieldList() { |
234 | 237 | let fieldList = [] |
235 | - fieldList.push({ type: 'string', value: 'code', text: '货主编码', dictCode: '' }) | |
236 | - fieldList.push({ type: 'string', value: 'name', text: '货主名称', dictCode: '' }) | |
237 | - fieldList.push({ type: 'string', value: 'address', text: '地址', dictCode: '' }) | |
238 | - fieldList.push({ type: 'string', value: 'district', text: '区县', dictCode: '' }) | |
239 | - fieldList.push({ type: 'string', value: 'city', text: '城市', dictCode: '' }) | |
240 | - fieldList.push({ type: 'string', value: 'province', text: '省份', dictCode: '' }) | |
241 | - fieldList.push({ type: 'string', value: 'country', text: '国家', dictCode: '' }) | |
242 | - fieldList.push({ type: 'string', value: 'postalcode', text: '邮编', dictCode: '' }) | |
243 | - fieldList.push({ type: 'string', value: 'attentionto', text: '联系人', dictCode: '' }) | |
244 | - fieldList.push({ type: 'string', value: 'phonenum', text: '联系电话', dictCode: '' }) | |
238 | + fieldList.push({type: 'string', value: 'code', text: '货主编码', dictCode: ''}) | |
239 | + fieldList.push({type: 'string', value: 'name', text: '货主名称', dictCode: ''}) | |
240 | + fieldList.push({type: 'string', value: 'address', text: '地址', dictCode: ''}) | |
241 | + fieldList.push({type: 'string', value: 'district', text: '区县', dictCode: ''}) | |
242 | + fieldList.push({type: 'string', value: 'city', text: '城市', dictCode: ''}) | |
243 | + fieldList.push({type: 'string', value: 'province', text: '省份', dictCode: ''}) | |
244 | + fieldList.push({type: 'string', value: 'country', text: '国家', dictCode: ''}) | |
245 | + fieldList.push({type: 'string', value: 'postalcode', text: '邮编', dictCode: ''}) | |
246 | + fieldList.push({type: 'string', value: 'attentionto', text: '联系人', dictCode: ''}) | |
247 | + fieldList.push({type: 'string', value: 'phonenum', text: '联系电话', dictCode: ''}) | |
245 | 248 | this.superFieldList = fieldList |
246 | 249 | } |
247 | 250 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 | </a-col> |
26 | 26 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
27 | 27 | <a-form-item label="是否可用"> |
28 | - <j-dict-select-tag placeholder="请选择是否可用" v-model="queryParam.enable" dictCode="enable_status" /> | |
28 | + <j-dict-select-tag placeholder="请选择是否可用" v-model="queryParam.enable" dictCode="enable_status"/> | |
29 | 29 | </a-form-item> |
30 | 30 | </a-col> |
31 | 31 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
... | ... | @@ -64,15 +64,17 @@ |
64 | 64 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
65 | 65 | <a-menu slot="overlay" v-has="'containerCapacity:deleteBatch'"> |
66 | 66 | <a-menu-item key="1" @click="batchDel"> |
67 | - <a-icon type="delete" /> | |
67 | + <a-icon type="delete"/> | |
68 | 68 | 删除 |
69 | 69 | </a-menu-item> |
70 | 70 | </a-menu> |
71 | 71 | <a-button style="margin-left: 8px"> |
72 | 72 | 批量操作 |
73 | - <a-icon type="down" /> | |
73 | + <a-icon type="down"/> | |
74 | 74 | </a-button> |
75 | 75 | </a-dropdown> |
76 | + <j-super-query :fieldList="superFieldList" v-has="'containerCapacity:superQuery'" | |
77 | + @handleSuperQuery="handleSuperQuery"/> | |
76 | 78 | </div> |
77 | 79 | |
78 | 80 | <!-- table区域-begin --> |
... | ... | @@ -147,11 +149,11 @@ |
147 | 149 | |
148 | 150 | <script> |
149 | 151 | import '@/assets/less/TableExpand.less' |
150 | -import { mixinDevice } from '@/utils/mixin' | |
151 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
152 | +import {mixinDevice} from '@/utils/mixin' | |
153 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
152 | 154 | import ContainerCapacityModal from './modules/ContainerCapacityModal' |
153 | -import { filterMultiDictText } from '@/components/dict/JDictSelectUtil' | |
154 | -import { getZoneList, getContainerTypeList } from '@/api/api' | |
155 | +import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' | |
156 | +import {getZoneList, getContainerTypeList} from '@/api/api' | |
155 | 157 | |
156 | 158 | export default { |
157 | 159 | name: 'ContainerCapacityList', |
... | ... | @@ -171,7 +173,7 @@ export default { |
171 | 173 | key: 'rowIndex', |
172 | 174 | width: 60, |
173 | 175 | align: 'center', |
174 | - customRender: function(t, r, index) { | |
176 | + customRender: function (t, r, index) { | |
175 | 177 | return parseInt(index) + 1 |
176 | 178 | } |
177 | 179 | }, |
... | ... | @@ -180,7 +182,7 @@ export default { |
180 | 182 | align: 'center', |
181 | 183 | dataIndex: 'containerTypeCode', |
182 | 184 | key: 'containerTypeCode', |
183 | - scopedSlots: { customRender: 'containerTypeCode' } | |
185 | + scopedSlots: {customRender: 'containerTypeCode'} | |
184 | 186 | }, |
185 | 187 | { |
186 | 188 | title: '物料编码', |
... | ... | @@ -233,7 +235,7 @@ export default { |
233 | 235 | align: 'center', |
234 | 236 | fixed: 'right', |
235 | 237 | width: 147, |
236 | - scopedSlots: { customRender: 'action' } | |
238 | + scopedSlots: {customRender: 'action'} | |
237 | 239 | } |
238 | 240 | ], |
239 | 241 | url: { |
... | ... | @@ -252,12 +254,13 @@ export default { |
252 | 254 | this.loadFrom() |
253 | 255 | }, |
254 | 256 | computed: { |
255 | - importExcelUrl: function() { | |
257 | + importExcelUrl: function () { | |
256 | 258 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
257 | 259 | } |
258 | 260 | }, |
259 | 261 | methods: { |
260 | - initDictConfig() {}, | |
262 | + initDictConfig() { | |
263 | + }, | |
261 | 264 | solutionContainerType(value) { |
262 | 265 | var actions = [] |
263 | 266 | Object.keys(this.containerTypeList).some(key => { |
... | ... | @@ -277,18 +280,18 @@ export default { |
277 | 280 | }, |
278 | 281 | getSuperFieldList() { |
279 | 282 | let fieldList = [] |
280 | - fieldList.push({ type: 'string', value: 'containerTypeCode', text: '容器类型', dictCode: '' }) | |
281 | - fieldList.push({ type: 'string', value: 'warehouseCode', text: '仓库编码', dictCode: '' }) | |
282 | - fieldList.push({ type: 'string', value: 'companyCode', text: '货主', dictCode: '' }) | |
283 | - fieldList.push({ type: 'string', value: 'materialCode', text: '物料编码', dictCode: '' }) | |
284 | - fieldList.push({ type: 'string', value: 'materialName', text: '物料名称', dictCode: '' }) | |
285 | - fieldList.push({ type: 'string', value: 'materialUnit', text: '物料单位', dictCode: '' }) | |
286 | - fieldList.push({ type: 'BigDecimal', value: 'qty', text: '存放数量', dictCode: '' }) | |
287 | - fieldList.push({ type: 'int', value: 'enable', text: '是否可用', dictCode: 'enable_status' }) | |
288 | - fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) | |
289 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
290 | - fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) | |
291 | - fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) | |
283 | + fieldList.push({type: 'string', value: 'containerTypeCode', text: '容器类型', dictCode: ''}) | |
284 | + fieldList.push({type: 'string', value: 'warehouseCode', text: '仓库编码', dictCode: ''}) | |
285 | + fieldList.push({type: 'string', value: 'companyCode', text: '货主', dictCode: ''}) | |
286 | + fieldList.push({type: 'string', value: 'materialCode', text: '物料编码', dictCode: ''}) | |
287 | + fieldList.push({type: 'string', value: 'materialName', text: '物料名称', dictCode: ''}) | |
288 | + fieldList.push({type: 'string', value: 'materialUnit', text: '物料单位', dictCode: ''}) | |
289 | + fieldList.push({type: 'BigDecimal', value: 'qty', text: '存放数量', dictCode: ''}) | |
290 | + fieldList.push({type: 'int', value: 'enable', text: '是否可用', dictCode: 'enable_status'}) | |
291 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
292 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
293 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
294 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
292 | 295 | this.superFieldList = fieldList |
293 | 296 | } |
294 | 297 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
... | ... | @@ -46,10 +46,16 @@ |
46 | 46 | /> |
47 | 47 | </a-form-item> |
48 | 48 | </a-col> |
49 | + <a-col :xl="6" :lg="7" :md="8" :sm="24"> | |
50 | + <a-form-item label="位置"> | |
51 | + <j-dict-select-tag placeholder="请选择位置" v-model="queryParam.inLocation" | |
52 | + dictCode="inLocation"/> | |
53 | + </a-form-item> | |
54 | + </a-col> | |
49 | 55 | </template> |
50 | 56 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
51 | 57 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
52 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
58 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
53 | 59 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
54 | 60 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
55 | 61 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -91,6 +97,9 @@ |
91 | 97 | <a-icon type="down"/> |
92 | 98 | </a-button> |
93 | 99 | </a-dropdown> |
100 | + | |
101 | + <j-super-query :fieldList="superFieldList" v-has="'container:superQuery'" | |
102 | + @handleSuperQuery="handleSuperQuery"/> | |
94 | 103 | </div> |
95 | 104 | |
96 | 105 | <!-- table区域-begin --> |
... | ... | @@ -208,6 +217,7 @@ export default { |
208 | 217 | return { |
209 | 218 | description: '容器管理管理页面', |
210 | 219 | zoneList: [], |
220 | + firstLoad:0, | |
211 | 221 | containerTypeList: [], |
212 | 222 | // 表头 |
213 | 223 | columns: [ |
... | ... | @@ -251,6 +261,21 @@ export default { |
251 | 261 | scopedSlots: {customRender: 'fillStatus_dictText'} |
252 | 262 | }, |
253 | 263 | { |
264 | + title: '位置', | |
265 | + align: 'center', | |
266 | + dataIndex: 'inLocation_dictText', | |
267 | + }, | |
268 | + { | |
269 | + title: '任务总数', | |
270 | + align: "center", | |
271 | + dataIndex: 'taskTimes', | |
272 | + }, | |
273 | + { | |
274 | + title: '移库任务数', | |
275 | + align: "center", | |
276 | + dataIndex: 'moveTaskTimes', | |
277 | + }, | |
278 | + { | |
254 | 279 | title: '库区', |
255 | 280 | align: "center", |
256 | 281 | dataIndex: 'zoneCode', |
... | ... | @@ -301,6 +326,21 @@ export default { |
301 | 326 | this.getSuperFieldList() |
302 | 327 | this.loadFrom() |
303 | 328 | }, |
329 | + mounted() { | |
330 | + if(this.firstLoad == 0) { | |
331 | + this.firstLoad = 1; | |
332 | + return; | |
333 | + } | |
334 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
335 | + let timeSearch=setInterval(()=>{ | |
336 | + let eleSearch= document.getElementById("search"); | |
337 | + if (eleSearch!=null){ | |
338 | + //调用成功,清除定时器 | |
339 | + clearInterval(timeSearch) | |
340 | + eleSearch.click(); | |
341 | + } | |
342 | + },200) | |
343 | + }, | |
304 | 344 | computed: { |
305 | 345 | importExcelUrl: function () { |
306 | 346 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
... | ... | @@ -329,6 +369,7 @@ export default { |
329 | 369 | fieldList.push({type: 'string', value: 'containerTypeCode', text: '容器类型', dictCode: ''}) |
330 | 370 | fieldList.push({type: 'string', value: 'status', text: '容器状态', dictCode: 'container_status'}) |
331 | 371 | fieldList.push({type: 'string', value: 'fillStatus', text: '容器填充状态', dictCode: 'fill_status'}) |
372 | + fieldList.push({type: 'string', value: 'inLocation', text: '容器填充状态', dictCode: 'inLocation'}) | |
332 | 373 | fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) |
333 | 374 | fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) |
334 | 375 | fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) |
... | ... |
ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue
... | ... | @@ -49,15 +49,17 @@ |
49 | 49 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
50 | 50 | <a-menu slot="overlay" v-has="'containerType:deleteBatch'"> |
51 | 51 | <a-menu-item key="1" @click="batchDel"> |
52 | - <a-icon type="delete" /> | |
52 | + <a-icon type="delete"/> | |
53 | 53 | 删除 |
54 | 54 | </a-menu-item> |
55 | 55 | </a-menu> |
56 | 56 | <a-button style="margin-left: 8px"> |
57 | 57 | 批量操作 |
58 | - <a-icon type="down" /> | |
58 | + <a-icon type="down"/> | |
59 | 59 | </a-button> |
60 | 60 | </a-dropdown> |
61 | + <j-super-query :fieldList="superFieldList" v-has="'containerType:superQuery'" | |
62 | + @handleSuperQuery="handleSuperQuery"/> | |
61 | 63 | </div> |
62 | 64 | |
63 | 65 | <!-- table区域-begin --> |
... | ... | @@ -88,7 +90,7 @@ |
88 | 90 | </a-tag> |
89 | 91 | </span> |
90 | 92 | |
91 | - <span slot="locationTypes" slot-scope="locationTypes" > | |
93 | + <span slot="locationTypes" slot-scope="locationTypes"> | |
92 | 94 | <a-tag v-for="locationType in locationTypes" :key="locationType" color=pink> |
93 | 95 | {{ solutionLocationType(locationType) }} |
94 | 96 | </a-tag> |
... | ... | @@ -139,10 +141,10 @@ |
139 | 141 | |
140 | 142 | <script> |
141 | 143 | import '@/assets/less/TableExpand.less' |
142 | -import { mixinDevice } from '@/utils/mixin' | |
143 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
144 | +import {mixinDevice} from '@/utils/mixin' | |
145 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
144 | 146 | import ContainerTypeModal from './modules/ContainerTypeModal' |
145 | -import {getCompanyList, getLocationTypeList } from '@/api/api' | |
147 | +import {getCompanyList, getLocationTypeList} from '@/api/api' | |
146 | 148 | |
147 | 149 | export default { |
148 | 150 | name: 'ContainerTypeList', |
... | ... | @@ -163,7 +165,7 @@ export default { |
163 | 165 | key: 'rowIndex', |
164 | 166 | width: 60, |
165 | 167 | align: 'center', |
166 | - customRender: function(t, r, index) { | |
168 | + customRender: function (t, r, index) { | |
167 | 169 | return parseInt(index) + 1 |
168 | 170 | } |
169 | 171 | }, |
... | ... | @@ -242,7 +244,7 @@ export default { |
242 | 244 | align: 'center', |
243 | 245 | fixed: 'right', |
244 | 246 | width: 147, |
245 | - scopedSlots: { customRender: 'action' } | |
247 | + scopedSlots: {customRender: 'action'} | |
246 | 248 | } |
247 | 249 | ], |
248 | 250 | url: { |
... | ... | @@ -261,12 +263,13 @@ export default { |
261 | 263 | this.loadFrom() |
262 | 264 | }, |
263 | 265 | computed: { |
264 | - importExcelUrl: function() { | |
266 | + importExcelUrl: function () { | |
265 | 267 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
266 | 268 | } |
267 | 269 | }, |
268 | 270 | methods: { |
269 | - initDictConfig() {}, | |
271 | + initDictConfig() { | |
272 | + }, | |
270 | 273 | loadFrom() { |
271 | 274 | getCompanyList().then((res) => { |
272 | 275 | if (res.success) { |
... | ... | @@ -301,19 +304,19 @@ export default { |
301 | 304 | }, |
302 | 305 | getSuperFieldList() { |
303 | 306 | let fieldList = [] |
304 | - fieldList.push({ type: 'string', value: 'code', text: '编码', dictCode: '' }) | |
305 | - fieldList.push({ type: 'string', value: 'name', text: '名称', dictCode: '' }) | |
306 | - fieldList.push({ type: 'string', value: 'companyCode', text: '货主编码', dictCode: '' }) | |
307 | - fieldList.push({ type: 'string', value: 'locationType', text: '绑定的库位类型', dictCode: '' }) | |
308 | - fieldList.push({ type: 'int', value: 'length', text: '长', dictCode: '' }) | |
309 | - fieldList.push({ type: 'int', value: 'width', text: '宽', dictCode: '' }) | |
310 | - fieldList.push({ type: 'int', value: 'height', text: '高', dictCode: '' }) | |
311 | - fieldList.push({ type: 'int', value: 'emptyweight', text: '空容器重量', dictCode: '' }) | |
312 | - fieldList.push({ type: 'int', value: 'maxweight', text: '容器最大承重', dictCode: '' }) | |
313 | - fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) | |
314 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
315 | - fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) | |
316 | - fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) | |
307 | + fieldList.push({type: 'string', value: 'code', text: '编码', dictCode: ''}) | |
308 | + fieldList.push({type: 'string', value: 'name', text: '名称', dictCode: ''}) | |
309 | + fieldList.push({type: 'string', value: 'companyCode', text: '货主编码', dictCode: ''}) | |
310 | + fieldList.push({type: 'string', value: 'locationType', text: '绑定的库位类型', dictCode: ''}) | |
311 | + fieldList.push({type: 'int', value: 'length', text: '长', dictCode: ''}) | |
312 | + fieldList.push({type: 'int', value: 'width', text: '宽', dictCode: ''}) | |
313 | + fieldList.push({type: 'int', value: 'height', text: '高', dictCode: ''}) | |
314 | + fieldList.push({type: 'int', value: 'emptyweight', text: '空容器重量', dictCode: ''}) | |
315 | + fieldList.push({type: 'int', value: 'maxweight', text: '容器最大承重', dictCode: ''}) | |
316 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
317 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
318 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
319 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
317 | 320 | this.superFieldList = fieldList |
318 | 321 | } |
319 | 322 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/config/CustomerList.vue
... | ... | @@ -12,8 +12,10 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button @click="handleAdd" v-has="'customer:add'" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'customer:export'" type="primary" icon="download" @click="handleExportXls('客户管理')">导出</a-button> | |
16 | - <a-upload v-has="'customer:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
15 | + <a-button v-has="'customer:export'" type="primary" icon="download" @click="handleExportXls('客户管理')">导出 | |
16 | + </a-button> | |
17 | + <a-upload v-has="'customer:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
18 | + :action="importExcelUrl" | |
17 | 19 | @change="handleImportExcel"> |
18 | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | 21 | </a-upload> |
... | ... | @@ -28,6 +30,8 @@ |
28 | 30 | <a-icon type="down"/> |
29 | 31 | </a-button> |
30 | 32 | </a-dropdown> |
33 | + | |
34 | + <j-super-query :fieldList="superFieldList" v-has="'customer:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
31 | 35 | </div> |
32 | 36 | |
33 | 37 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue
... | ... | @@ -12,8 +12,11 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button @click="handleAdd" v-has="'cycleCountPreference:add'" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'cycleCountPreference:export'" type="primary" icon="download" @click="handleExportXls('盘点首选项')">导出</a-button> | |
16 | - <a-upload v-has="'cycleCountPreference:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
15 | + <a-button v-has="'cycleCountPreference:export'" type="primary" icon="download" | |
16 | + @click="handleExportXls('盘点首选项')">导出 | |
17 | + </a-button> | |
18 | + <a-upload v-has="'cycleCountPreference:import'" name="file" :showUploadList="false" :multiple="false" | |
19 | + :headers="tokenHeader" :action="importExcelUrl" | |
17 | 20 | @change="handleImportExcel"> |
18 | 21 | <a-button type="primary" icon="import">导入</a-button> |
19 | 22 | </a-upload> |
... | ... | @@ -28,6 +31,8 @@ |
28 | 31 | <a-icon type="down"/> |
29 | 32 | </a-button> |
30 | 33 | </a-dropdown> |
34 | + <j-super-query :fieldList="superFieldList" v-has="'cycleCountPreference:superQuery'" | |
35 | + @handleSuperQuery="handleSuperQuery"/> | |
31 | 36 | </div> |
32 | 37 | |
33 | 38 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
... | ... | @@ -41,8 +41,11 @@ |
41 | 41 | <!-- 操作按钮区域 --> |
42 | 42 | <div class="table-operator"> |
43 | 43 | <a-button @click="handleAdd" v-has="'locationHigh:add'" type="primary" icon="plus">新增</a-button> |
44 | - <a-button v-has="'locationHigh:export'" type="primary" icon="download" @click="handleExportXls('库位高度管理')">导出</a-button> | |
45 | - <a-upload v-has="'locationHigh:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
44 | + <a-button v-has="'locationHigh:export'" type="primary" icon="download" @click="handleExportXls('库位高度管理')"> | |
45 | + 导出 | |
46 | + </a-button> | |
47 | + <a-upload v-has="'locationHigh:import'" name="file" :showUploadList="false" :multiple="false" | |
48 | + :headers="tokenHeader" :action="importExcelUrl" | |
46 | 49 | @change="handleImportExcel"> |
47 | 50 | <a-button type="primary" icon="import">导入</a-button> |
48 | 51 | </a-upload> |
... | ... | @@ -57,6 +60,9 @@ |
57 | 60 | <a-icon type="down"/> |
58 | 61 | </a-button> |
59 | 62 | </a-dropdown> |
63 | + | |
64 | + <j-super-query :fieldList="superFieldList" v-has="'locationHigh:superQuery'" | |
65 | + @handleSuperQuery="handleSuperQuery"/> | |
60 | 66 | </div> |
61 | 67 | |
62 | 68 | <!-- table区域-begin --> |
... | ... | @@ -88,7 +94,7 @@ |
88 | 94 | </a-tag> |
89 | 95 | </span> |
90 | 96 | |
91 | - <span slot="locationTypeCode" slot-scope="locationTypeCode"> | |
97 | + <span slot="locationTypeCode" slot-scope="locationTypeCode"> | |
92 | 98 | <a-tag :key="locationTypeCode" color=pink> |
93 | 99 | {{ solutionLocationType(locationTypeCode) }} |
94 | 100 | </a-tag> |
... | ... | @@ -274,11 +280,11 @@ export default { |
274 | 280 | this.locationTypeList = res.result |
275 | 281 | } |
276 | 282 | }), |
277 | - getZoneList().then((res) => { | |
278 | - if (res.success) { | |
279 | - this.zoneList = res.result | |
280 | - } | |
281 | - }); | |
283 | + getZoneList().then((res) => { | |
284 | + if (res.success) { | |
285 | + this.zoneList = res.result | |
286 | + } | |
287 | + }); | |
282 | 288 | }, |
283 | 289 | solutionZoneCode(value) { |
284 | 290 | var actions = [] |
... | ... |
ant-design-vue-jeecg/src/views/system/config/LocationList.vue
... | ... | @@ -59,7 +59,8 @@ |
59 | 59 | </a-col> |
60 | 60 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
61 | 61 | <a-form-item label="库内是否有托盘"> |
62 | - <j-dict-select-tag placeholder="请选择库内是否有托盘" v-model="queryParam.haveContainer" dictCode="have_container_in_location"/> | |
62 | + <j-dict-select-tag placeholder="请选择库内是否有托盘" v-model="queryParam.haveContainer" | |
63 | + dictCode="have_container_in_location"/> | |
63 | 64 | </a-form-item> |
64 | 65 | </a-col> |
65 | 66 | <template v-if="toggleSearchStatus"> |
... | ... | @@ -91,7 +92,7 @@ |
91 | 92 | </template> |
92 | 93 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
93 | 94 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
94 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
95 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
95 | 96 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
96 | 97 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
97 | 98 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -135,6 +136,9 @@ |
135 | 136 | <a-icon type="down"/> |
136 | 137 | </a-button> |
137 | 138 | </a-dropdown> |
139 | + | |
140 | + <j-super-query :fieldList="superFieldList" v-has="'location:superQuery'" | |
141 | + @handleSuperQuery="handleSuperQuery"/> | |
138 | 142 | </div> |
139 | 143 | |
140 | 144 | <!-- table区域-begin --> |
... | ... | @@ -265,6 +269,7 @@ export default { |
265 | 269 | description: '库位管理页面', |
266 | 270 | zoneList: [], |
267 | 271 | locationTypeList: [], |
272 | + firstLoad:0, | |
268 | 273 | // 表头 |
269 | 274 | columns: [ |
270 | 275 | { |
... | ... | @@ -406,6 +411,21 @@ export default { |
406 | 411 | this.getSuperFieldList() |
407 | 412 | this.loadFrom() |
408 | 413 | }, |
414 | + mounted() { | |
415 | + if(this.firstLoad == 0) { | |
416 | + this.firstLoad = 1; | |
417 | + return; | |
418 | + } | |
419 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
420 | + let timeSearch=setInterval(()=>{ | |
421 | + let eleSearch= document.getElementById("search"); | |
422 | + if (eleSearch!=null){ | |
423 | + //调用成功,清除定时器 | |
424 | + clearInterval(timeSearch) | |
425 | + eleSearch.click(); | |
426 | + } | |
427 | + },200) | |
428 | + }, | |
409 | 429 | computed: { |
410 | 430 | importExcelUrl: function () { |
411 | 431 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
... | ... |
ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue
... | ... | @@ -53,15 +53,18 @@ |
53 | 53 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
54 | 54 | <a-menu slot="overlay" v-has="'locationType:deleteBatch'"> |
55 | 55 | <a-menu-item key="1" @click="batchDel"> |
56 | - <a-icon type="delete" /> | |
56 | + <a-icon type="delete"/> | |
57 | 57 | 删除 |
58 | 58 | </a-menu-item> |
59 | 59 | </a-menu> |
60 | 60 | <a-button style="margin-left: 8px"> |
61 | 61 | 批量操作 |
62 | - <a-icon type="down" /> | |
62 | + <a-icon type="down"/> | |
63 | 63 | </a-button> |
64 | 64 | </a-dropdown> |
65 | + | |
66 | + <j-super-query :fieldList="superFieldList" v-has="'locationType:superQuery'" | |
67 | + @handleSuperQuery="handleSuperQuery"/> | |
65 | 68 | </div> |
66 | 69 | |
67 | 70 | <!-- table区域-begin --> |
... | ... | @@ -137,10 +140,10 @@ |
137 | 140 | |
138 | 141 | <script> |
139 | 142 | import '@/assets/less/TableExpand.less' |
140 | -import { mixinDevice } from '@/utils/mixin' | |
141 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
143 | +import {mixinDevice} from '@/utils/mixin' | |
144 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
142 | 145 | import LocationTypeModal from './modules/LocationTypeModal' |
143 | -import { getZoneList } from '@/api/api' | |
146 | +import {getZoneList} from '@/api/api' | |
144 | 147 | |
145 | 148 | export default { |
146 | 149 | name: 'LocationTypeList', |
... | ... | @@ -161,7 +164,7 @@ export default { |
161 | 164 | key: 'rowIndex', |
162 | 165 | width: 60, |
163 | 166 | align: 'center', |
164 | - customRender: function(t, r, index) { | |
167 | + customRender: function (t, r, index) { | |
165 | 168 | return parseInt(index) + 1 |
166 | 169 | } |
167 | 170 | }, |
... | ... | @@ -180,7 +183,7 @@ export default { |
180 | 183 | align: 'center', |
181 | 184 | dataIndex: 'zoneCode', |
182 | 185 | key: 'zoneCode', |
183 | - scopedSlots: { customRender: 'zoneCode' } | |
186 | + scopedSlots: {customRender: 'zoneCode'} | |
184 | 187 | }, |
185 | 188 | { |
186 | 189 | title: '长度', |
... | ... | @@ -228,7 +231,7 @@ export default { |
228 | 231 | align: 'center', |
229 | 232 | fixed: 'right', |
230 | 233 | width: 147, |
231 | - scopedSlots: { customRender: 'action' } | |
234 | + scopedSlots: {customRender: 'action'} | |
232 | 235 | } |
233 | 236 | ], |
234 | 237 | url: { |
... | ... | @@ -252,19 +255,20 @@ export default { |
252 | 255 | //slice可以在数组的任何位置进行删除/添加操作 |
253 | 256 | this.zoneOptions.splice(0, 1) |
254 | 257 | for (let i = 0; i < res.result.length; i++) { |
255 | - this.zoneOptions.push({ value: res.result[i].code, text: res.result[i].name }) | |
258 | + this.zoneOptions.push({value: res.result[i].code, text: res.result[i].name}) | |
256 | 259 | } |
257 | 260 | }, 500) |
258 | 261 | } |
259 | 262 | }) |
260 | 263 | }, |
261 | 264 | computed: { |
262 | - importExcelUrl: function() { | |
265 | + importExcelUrl: function () { | |
263 | 266 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
264 | 267 | } |
265 | 268 | }, |
266 | 269 | methods: { |
267 | - initDictConfig() {}, | |
270 | + initDictConfig() { | |
271 | + }, | |
268 | 272 | solutionZoneCode(value) { |
269 | 273 | var actions = [] |
270 | 274 | Object.keys(this.zoneList).some(key => { |
... | ... | @@ -277,16 +281,16 @@ export default { |
277 | 281 | }, |
278 | 282 | getSuperFieldList() { |
279 | 283 | let fieldList = [] |
280 | - fieldList.push({ type: 'string', value: 'code', text: '编码', dictCode: '' }) | |
281 | - fieldList.push({ type: 'string', value: 'name', text: '名称', dictCode: '' }) | |
282 | - fieldList.push({ type: 'int', value: 'length', text: '长度', dictCode: '' }) | |
283 | - fieldList.push({ type: 'int', value: 'weight', text: '宽度', dictCode: '' }) | |
284 | - fieldList.push({ type: 'int', value: 'height', text: '高度', dictCode: '' }) | |
285 | - fieldList.push({ type: 'int', value: 'maxWeight', text: '最大承重', dictCode: '' }) | |
286 | - fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) | |
287 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
288 | - fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) | |
289 | - fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) | |
284 | + fieldList.push({type: 'string', value: 'code', text: '编码', dictCode: ''}) | |
285 | + fieldList.push({type: 'string', value: 'name', text: '名称', dictCode: ''}) | |
286 | + fieldList.push({type: 'int', value: 'length', text: '长度', dictCode: ''}) | |
287 | + fieldList.push({type: 'int', value: 'weight', text: '宽度', dictCode: ''}) | |
288 | + fieldList.push({type: 'int', value: 'height', text: '高度', dictCode: ''}) | |
289 | + fieldList.push({type: 'int', value: 'maxWeight', text: '最大承重', dictCode: ''}) | |
290 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
291 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
292 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
293 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
290 | 294 | this.superFieldList = fieldList |
291 | 295 | } |
292 | 296 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue
... | ... | @@ -12,8 +12,10 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button @click="handleAdd" v-has="'materialArea:add'" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'materialArea:export'" type="primary" icon="download" @click="handleExportXls('物料分区')">导出</a-button> | |
16 | - <a-upload v-has="'materialArea:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
15 | + <a-button v-has="'materialArea:export'" type="primary" icon="download" @click="handleExportXls('物料分区')">导出 | |
16 | + </a-button> | |
17 | + <a-upload v-has="'materialArea:import'" name="file" :showUploadList="false" :multiple="false" | |
18 | + :headers="tokenHeader" :action="importExcelUrl" | |
17 | 19 | @change="handleImportExcel"> |
18 | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | 21 | </a-upload> |
... | ... | @@ -28,6 +30,9 @@ |
28 | 30 | <a-icon type="down"/> |
29 | 31 | </a-button> |
30 | 32 | </a-dropdown> |
33 | + | |
34 | + <j-super-query :fieldList="superFieldList" v-has="'materialArea:superQuery'" | |
35 | + @handleSuperQuery="handleSuperQuery"/> | |
31 | 36 | </div> |
32 | 37 | |
33 | 38 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialList.vue
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 | </a-col> |
22 | 22 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
23 | 23 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
24 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
24 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
25 | 25 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
26 | 26 | </span> |
27 | 27 | </a-col> |
... | ... | @@ -33,8 +33,10 @@ |
33 | 33 | <!-- 操作按钮区域 --> |
34 | 34 | <div class="table-operator"> |
35 | 35 | <a-button v-has="'material:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
36 | - <a-button v-has="'material:export'" type="primary" icon="download" @click="handleExportXls('物料管理')">导出</a-button> | |
37 | - <a-upload v-has="'material:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
36 | + <a-button v-has="'material:export'" type="primary" icon="download" @click="handleExportXls('物料管理')">导出 | |
37 | + </a-button> | |
38 | + <a-upload v-has="'material:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
39 | + :action="importExcelUrl" | |
38 | 40 | @change="handleImportExcel"> |
39 | 41 | <a-button type="primary" icon="import">导入</a-button> |
40 | 42 | <a-button v-has="'material:print'" @click="batchPrint()" type="primary">打印</a-button> |
... | ... | @@ -50,6 +52,9 @@ |
50 | 52 | <a-icon type="down"/> |
51 | 53 | </a-button> |
52 | 54 | </a-dropdown> |
55 | + | |
56 | + <j-super-query :fieldList="superFieldList" v-has="'material:superQuery'" | |
57 | + @handleSuperQuery="handleSuperQuery"/> | |
53 | 58 | </div> |
54 | 59 | |
55 | 60 | <!-- table区域-begin --> |
... | ... | @@ -141,6 +146,7 @@ export default { |
141 | 146 | data() { |
142 | 147 | return { |
143 | 148 | description: '物料管理管理页面', |
149 | + firstLoad:0, | |
144 | 150 | // 表头 |
145 | 151 | columns: [ |
146 | 152 | { |
... | ... | @@ -247,6 +253,21 @@ export default { |
247 | 253 | created() { |
248 | 254 | this.getSuperFieldList(); |
249 | 255 | }, |
256 | + mounted() { | |
257 | + if(this.firstLoad == 0) { | |
258 | + this.firstLoad = 1; | |
259 | + return; | |
260 | + } | |
261 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
262 | + let timeSearch=setInterval(()=>{ | |
263 | + let eleSearch= document.getElementById("search"); | |
264 | + if (eleSearch!=null){ | |
265 | + //调用成功,清除定时器 | |
266 | + clearInterval(timeSearch) | |
267 | + eleSearch.click(); | |
268 | + } | |
269 | + },200) | |
270 | + }, | |
250 | 271 | computed: { |
251 | 272 | importExcelUrl: function () { |
252 | 273 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue
... | ... | @@ -12,8 +12,11 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button v-has="'materialMultiple:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'materialMultiple:export'" type="primary" icon="download" @click="handleExportXls('物料单位换算')">导出</a-button> | |
16 | - <a-upload v-has="'materialMultiple:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
15 | + <a-button v-has="'materialMultiple:export'" type="primary" icon="download" | |
16 | + @click="handleExportXls('物料单位换算')">导出 | |
17 | + </a-button> | |
18 | + <a-upload v-has="'materialMultiple:import'" name="file" :showUploadList="false" :multiple="false" | |
19 | + :headers="tokenHeader" :action="importExcelUrl" | |
17 | 20 | @change="handleImportExcel"> |
18 | 21 | <a-button type="primary" icon="import">导入</a-button> |
19 | 22 | </a-upload> |
... | ... | @@ -28,6 +31,9 @@ |
28 | 31 | <a-icon type="down"/> |
29 | 32 | </a-button> |
30 | 33 | </a-dropdown> |
34 | + | |
35 | + <j-super-query :fieldList="superFieldList" v-has="'materialMultiple:superQuery'" | |
36 | + @handleSuperQuery="handleSuperQuery"/> | |
31 | 37 | </div> |
32 | 38 | |
33 | 39 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue
... | ... | @@ -28,8 +28,10 @@ |
28 | 28 | <!-- 操作按钮区域 --> |
29 | 29 | <div class="table-operator"> |
30 | 30 | <a-button v-has="'materialType:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
31 | - <a-button v-has="'materialType:export'" type="primary" icon="download" @click="handleExportXls('物料类别')">导出</a-button> | |
32 | - <a-upload v-has="'materialType:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
31 | + <a-button v-has="'materialType:export'" type="primary" icon="download" @click="handleExportXls('物料类别')">导出 | |
32 | + </a-button> | |
33 | + <a-upload v-has="'materialType:import'" name="file" :showUploadList="false" :multiple="false" | |
34 | + :headers="tokenHeader" :action="importExcelUrl" | |
33 | 35 | @change="handleImportExcel"> |
34 | 36 | <a-button type="primary" icon="import">导入</a-button> |
35 | 37 | </a-upload> |
... | ... | @@ -44,6 +46,9 @@ |
44 | 46 | <a-icon type="down"/> |
45 | 47 | </a-button> |
46 | 48 | </a-dropdown> |
49 | + | |
50 | + <j-super-query :fieldList="superFieldList" v-has="'materialType:superQuery'" | |
51 | + @handleSuperQuery="handleSuperQuery"/> | |
47 | 52 | </div> |
48 | 53 | |
49 | 54 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue
... | ... | @@ -33,8 +33,10 @@ |
33 | 33 | <!-- 操作按钮区域 --> |
34 | 34 | <div class="table-operator"> |
35 | 35 | <a-button v-has="'materialUnit:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
36 | - <a-button v-has="'materialUnit:export'" type="primary" icon="download" @click="handleExportXls('物料单位')">导出</a-button> | |
37 | - <a-upload v-has="'materialUnit:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
36 | + <a-button v-has="'materialUnit:export'" type="primary" icon="download" @click="handleExportXls('物料单位')">导出 | |
37 | + </a-button> | |
38 | + <a-upload v-has="'materialUnit:import'" name="file" :showUploadList="false" :multiple="false" | |
39 | + :headers="tokenHeader" :action="importExcelUrl" | |
38 | 40 | @change="handleImportExcel"> |
39 | 41 | <a-button type="primary" icon="import">导入</a-button> |
40 | 42 | </a-upload> |
... | ... | @@ -49,6 +51,9 @@ |
49 | 51 | <a-icon type="down"/> |
50 | 52 | </a-button> |
51 | 53 | </a-dropdown> |
54 | + | |
55 | + <j-super-query :fieldList="superFieldList" v-has="'materialUnit:superQuery'" | |
56 | + @handleSuperQuery="handleSuperQuery"/> | |
52 | 57 | </div> |
53 | 58 | |
54 | 59 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue
... | ... | @@ -32,8 +32,11 @@ |
32 | 32 | <!-- 操作按钮区域 --> |
33 | 33 | <div class="table-operator"> |
34 | 34 | <a-button v-has="'materialWarning:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
35 | - <a-button v-has="'materialWarning:export'" type="primary" icon="download" @click="handleExportXls('物料预警')">导出</a-button> | |
36 | - <a-upload v-has="'materialWarning:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
35 | + <a-button v-has="'materialWarning:export'" type="primary" icon="download" @click="handleExportXls('物料预警')"> | |
36 | + 导出 | |
37 | + </a-button> | |
38 | + <a-upload v-has="'materialWarning:import'" name="file" :showUploadList="false" :multiple="false" | |
39 | + :headers="tokenHeader" :action="importExcelUrl" | |
37 | 40 | @change="handleImportExcel"> |
38 | 41 | <a-button type="primary" icon="import">导入</a-button> |
39 | 42 | </a-upload> |
... | ... | @@ -48,6 +51,9 @@ |
48 | 51 | <a-icon type="down"/> |
49 | 52 | </a-button> |
50 | 53 | </a-dropdown> |
54 | + | |
55 | + <j-super-query :fieldList="superFieldList" v-has="'materialWarning:superQuery'" | |
56 | + @handleSuperQuery="handleSuperQuery"/> | |
51 | 57 | </div> |
52 | 58 | |
53 | 59 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
... | ... | @@ -53,8 +53,11 @@ |
53 | 53 | <!-- 操作按钮区域 --> |
54 | 54 | <div class="table-operator"> |
55 | 55 | <a-button @click="handleAdd" v-has="'parameterConfiguration:add'" type="primary" icon="plus">新增</a-button> |
56 | - <a-button v-has="'parameterConfiguration:export'" type="primary" icon="download" @click="handleExportXls('参数配置')">导出</a-button> | |
57 | - <a-upload v-has="'parameterConfiguration:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
56 | + <a-button v-has="'parameterConfiguration:export'" type="primary" icon="download" | |
57 | + @click="handleExportXls('参数配置')">导出 | |
58 | + </a-button> | |
59 | + <a-upload v-has="'parameterConfiguration:import'" name="file" :showUploadList="false" :multiple="false" | |
60 | + :headers="tokenHeader" :action="importExcelUrl" | |
58 | 61 | @change="handleImportExcel"> |
59 | 62 | <a-button type="primary" icon="import">导入</a-button> |
60 | 63 | </a-upload> |
... | ... | @@ -69,6 +72,9 @@ |
69 | 72 | <a-icon type="down"/> |
70 | 73 | </a-button> |
71 | 74 | </a-dropdown> |
75 | + <j-super-query :fieldList="superFieldList" v-has="'ParameterConfiguration:superQuery'" | |
76 | + @handleSuperQuery="handleSuperQuery"/> | |
77 | + | |
72 | 78 | </div> |
73 | 79 | |
74 | 80 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/PortList.vue
ant-design-vue-jeecg/src/views/system/config/SupplierList.vue
... | ... | @@ -39,8 +39,10 @@ |
39 | 39 | <!-- 操作按钮区域 --> |
40 | 40 | <div class="table-operator"> |
41 | 41 | <a-button v-has="'supplier:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
42 | - <a-button v-has="'supplier:export'" type="primary" icon="download" @click="handleExportXls('供应商管理')">导出</a-button> | |
43 | - <a-upload v-has="'supplier:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
42 | + <a-button v-has="'supplier:export'" type="primary" icon="download" @click="handleExportXls('供应商管理')">导出 | |
43 | + </a-button> | |
44 | + <a-upload v-has="'supplier:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
45 | + :action="importExcelUrl" | |
44 | 46 | @change="handleImportExcel"> |
45 | 47 | <a-button type="primary" icon="import">导入</a-button> |
46 | 48 | </a-upload> |
... | ... | @@ -55,6 +57,8 @@ |
55 | 57 | <a-icon type="down"/> |
56 | 58 | </a-button> |
57 | 59 | </a-dropdown> |
60 | + | |
61 | + <j-super-query :fieldList="superFieldList" v-has="'supplier:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
58 | 62 | </div> |
59 | 63 | |
60 | 64 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue
... | ... | @@ -39,8 +39,10 @@ |
39 | 39 | <!-- 操作按钮区域 --> |
40 | 40 | <div class="table-operator"> |
41 | 41 | <a-button v-has="'warehouse:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
42 | - <a-button v-has="'warehouse:export'" type="primary" icon="download" @click="handleExportXls('仓库')">导出</a-button> | |
43 | - <a-upload v-has="'warehouse:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
42 | + <a-button v-has="'warehouse:export'" type="primary" icon="download" @click="handleExportXls('仓库')">导出 | |
43 | + </a-button> | |
44 | + <a-upload v-has="'warehouse:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | |
45 | + :action="importExcelUrl" | |
44 | 46 | @change="handleImportExcel"> |
45 | 47 | <a-button type="primary" icon="import">导入</a-button> |
46 | 48 | </a-upload> |
... | ... | @@ -50,6 +52,8 @@ |
50 | 52 | <!-- </a-menu>--> |
51 | 53 | <!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>--> |
52 | 54 | <!-- </a-dropdown>--> |
55 | + <j-super-query :fieldList="superFieldList" v-has="'warehouse:superQuery'" | |
56 | + @handleSuperQuery="handleSuperQuery"/> | |
53 | 57 | </div> |
54 | 58 | |
55 | 59 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/config/ZoneList.vue
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
21 | 21 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
22 | 22 | {{ toggleSearchStatus ? '收起' : '展开' }} |
23 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | |
23 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> | |
24 | 24 | </a> |
25 | 25 | </span> |
26 | 26 | </a-col> |
... | ... | @@ -33,7 +33,8 @@ |
33 | 33 | <div class="table-operator"> |
34 | 34 | <a-button v-has="'zone:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
35 | 35 | <a-button v-has="'zone:export'" type="primary" icon="download" @click="handleExportXls('库区管理')" |
36 | - >导出</a-button | |
36 | + >导出 | |
37 | + </a-button | |
37 | 38 | > |
38 | 39 | <a-upload |
39 | 40 | v-has="'zone:import'" |
... | ... | @@ -49,15 +50,16 @@ |
49 | 50 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
50 | 51 | <a-menu slot="overlay" v-has="'zone:deleteBatch'"> |
51 | 52 | <a-menu-item key="1" @click="batchDel"> |
52 | - <a-icon type="delete" /> | |
53 | + <a-icon type="delete"/> | |
53 | 54 | 删除 |
54 | 55 | </a-menu-item> |
55 | 56 | </a-menu> |
56 | 57 | <a-button style="margin-left: 8px"> |
57 | 58 | 批量操作 |
58 | - <a-icon type="down" /> | |
59 | + <a-icon type="down"/> | |
59 | 60 | </a-button> |
60 | 61 | </a-dropdown> |
62 | + <j-super-query :fieldList="superFieldList" v-has="'zone:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
61 | 63 | </div> |
62 | 64 | |
63 | 65 | <!-- table区域-begin --> |
... | ... | @@ -82,7 +84,7 @@ |
82 | 84 | class="j-table-force-nowrap" |
83 | 85 | @change="handleTableChange" |
84 | 86 | > |
85 | - <span slot="locationTypeCodes" slot-scope="locationTypeCodes" > | |
87 | + <span slot="locationTypeCodes" slot-scope="locationTypeCodes"> | |
86 | 88 | <a-tag v-for="locationTypeCode in locationTypeCodes" :key="locationTypeCode" color=pink> |
87 | 89 | {{ solutionLocationType(locationTypeCode) }} |
88 | 90 | </a-tag> |
... | ... | @@ -133,10 +135,10 @@ |
133 | 135 | |
134 | 136 | <script> |
135 | 137 | import '@/assets/less/TableExpand.less' |
136 | -import { mixinDevice } from '@/utils/mixin' | |
137 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
138 | +import {mixinDevice} from '@/utils/mixin' | |
139 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
138 | 140 | import ZoneModal from './modules/ZoneModal' |
139 | -import { getLocationTypeList } from '@/api/api' | |
141 | +import {getLocationTypeList} from '@/api/api' | |
140 | 142 | |
141 | 143 | export default { |
142 | 144 | name: 'ZoneList', |
... | ... | @@ -156,7 +158,7 @@ export default { |
156 | 158 | key: 'rowIndex', |
157 | 159 | width: 60, |
158 | 160 | align: 'center', |
159 | - customRender: function(t, r, index) { | |
161 | + customRender: function (t, r, index) { | |
160 | 162 | return parseInt(index) + 1 |
161 | 163 | } |
162 | 164 | }, |
... | ... | @@ -203,7 +205,7 @@ export default { |
203 | 205 | align: 'center', |
204 | 206 | fixed: 'right', |
205 | 207 | width: 147, |
206 | - scopedSlots: { customRender: 'action' } | |
208 | + scopedSlots: {customRender: 'action'} | |
207 | 209 | } |
208 | 210 | ], |
209 | 211 | url: { |
... | ... | @@ -222,22 +224,23 @@ export default { |
222 | 224 | this.loadFrom() |
223 | 225 | }, |
224 | 226 | computed: { |
225 | - importExcelUrl: function() { | |
227 | + importExcelUrl: function () { | |
226 | 228 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
227 | 229 | } |
228 | 230 | }, |
229 | 231 | methods: { |
230 | - initDictConfig() {}, | |
232 | + initDictConfig() { | |
233 | + }, | |
231 | 234 | getSuperFieldList() { |
232 | 235 | let fieldList = [] |
233 | - fieldList.push({ type: 'string', value: 'code', text: '编码', dictCode: '' }) | |
234 | - fieldList.push({ type: 'string', value: 'name', text: '名称', dictCode: '' }) | |
235 | - fieldList.push({ type: 'string', value: 'companyCode', text: '货主编码', dictCode: '' }) | |
236 | - fieldList.push({ type: 'string', value: 'locationTypeCode', text: '库位类型', dictCode: '' }) | |
237 | - fieldList.push({ type: 'string', value: 'createBy', text: '创建人', dictCode: '' }) | |
238 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
239 | - fieldList.push({ type: 'string', value: 'updateBy', text: '更新人', dictCode: '' }) | |
240 | - fieldList.push({ type: 'datetime', value: 'updateTime', text: '更新日期' }) | |
236 | + fieldList.push({type: 'string', value: 'code', text: '编码', dictCode: ''}) | |
237 | + fieldList.push({type: 'string', value: 'name', text: '名称', dictCode: ''}) | |
238 | + fieldList.push({type: 'string', value: 'companyCode', text: '货主编码', dictCode: ''}) | |
239 | + fieldList.push({type: 'string', value: 'locationTypeCode', text: '库位类型', dictCode: ''}) | |
240 | + fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | |
241 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
242 | + fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | |
243 | + fieldList.push({type: 'datetime', value: 'updateTime', text: '更新日期'}) | |
241 | 244 | this.superFieldList = fieldList |
242 | 245 | }, |
243 | 246 | loadFrom() { |
... | ... |
ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
... | ... | @@ -47,7 +47,7 @@ |
47 | 47 | </a-col> |
48 | 48 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
49 | 49 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
50 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
50 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
51 | 51 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
52 | 52 | <!-- <a @click="handleToggleSearch" style="margin-left: 8px"> |
53 | 53 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -70,6 +70,7 @@ |
70 | 70 | </a-upload> |
71 | 71 | <a-button v-has="'inventoryHeader:quickShipmentInventoryHeader'" @click="quickShipment()" type="primary">快速出库</a-button> |
72 | 72 | <a-button v-has="'inventoryHeader:together'" @click="together()" type="primary">合托</a-button> |
73 | + <j-super-query :fieldList="superFieldList" v-has="'inventoryHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
73 | 74 | </div> |
74 | 75 | |
75 | 76 | <!-- table区域-begin --> |
... | ... | @@ -183,6 +184,7 @@ export default { |
183 | 184 | zoneList: [], |
184 | 185 | description: '库存表管理页面', |
185 | 186 | zoneOptions:[], |
187 | + firstLoad:0, | |
186 | 188 | // 表头 |
187 | 189 | columns: [ |
188 | 190 | { |
... | ... | @@ -285,6 +287,21 @@ export default { |
285 | 287 | this.getSuperFieldList(); |
286 | 288 | this.loadFrom(); |
287 | 289 | }, |
290 | + mounted() { | |
291 | + if(this.firstLoad == 0) { | |
292 | + this.firstLoad = 1; | |
293 | + return; | |
294 | + } | |
295 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
296 | + let timeSearch=setInterval(()=>{ | |
297 | + let eleSearch= document.getElementById("search"); | |
298 | + if (eleSearch!=null){ | |
299 | + //调用成功,清除定时器 | |
300 | + clearInterval(timeSearch) | |
301 | + eleSearch.click(); | |
302 | + } | |
303 | + },200) | |
304 | + }, | |
288 | 305 | computed: { |
289 | 306 | importExcelUrl: function () { |
290 | 307 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <a-row :gutter="24"> |
7 | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | |
9 | + <a-form-model-item prop="zoneOptions"> | |
10 | 10 | <j-multi-select-tag |
11 | 11 | v-model="queryParam.zoneCode" |
12 | 12 | :options="zoneOptions" |
... | ... | @@ -53,11 +53,11 @@ |
53 | 53 | </template> |
54 | 54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
55 | 55 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
56 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
56 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
57 | 57 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
58 | 58 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
59 | 59 | {{ toggleSearchStatus ? '收起' : '展开' }} |
60 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | |
60 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> | |
61 | 61 | </a> |
62 | 62 | </span> |
63 | 63 | </a-col> |
... | ... | @@ -69,7 +69,11 @@ |
69 | 69 | <!-- 操作按钮区域 --> |
70 | 70 | <div class="table-operator"> |
71 | 71 | <!-- <a-button v-has="'inventoryMaterialSummary:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> --> |
72 | - <a-button v-has="'inventoryMaterialSummary:export'" type="primary" icon="download" @click="handleExportXls('库存物料汇总')">导出</a-button> | |
72 | + <a-button v-has="'inventoryMaterialSummary:export'" type="primary" icon="download" | |
73 | + @click="handleExportXls('库存物料汇总')">导出 | |
74 | + </a-button> | |
75 | + <j-super-query :fieldList="superFieldList" v-has="'inventoryMaterialSummary:superQuery'" | |
76 | + @handleSuperQuery="handleSuperQuery"/> | |
73 | 77 | </div> |
74 | 78 | |
75 | 79 | <!-- table区域-begin --> |
... | ... | @@ -110,7 +114,7 @@ |
110 | 114 | |
111 | 115 | <a-tabs defaultActiveKey="1"> |
112 | 116 | <a-tab-pane tab="库存详情" key="1"> |
113 | - <InventoryDetailSubTable :mainId="selectedMainId" /> | |
117 | + <InventoryDetailSubTable :mainId="selectedMainId"/> | |
114 | 118 | </a-tab-pane> |
115 | 119 | </a-tabs> |
116 | 120 | |
... | ... | @@ -120,10 +124,10 @@ |
120 | 124 | |
121 | 125 | <script> |
122 | 126 | import '@/assets/less/TableExpand.less' |
123 | -import { filterObj } from '@/utils/util' | |
124 | -import { mixinDevice } from '@/utils/mixin' | |
125 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
126 | -import { getCompanyList, getZoneList, ajaxGetDictItems } from '@/api/api' | |
127 | +import {filterObj} from '@/utils/util' | |
128 | +import {mixinDevice} from '@/utils/mixin' | |
129 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
130 | +import {getCompanyList, getZoneList, ajaxGetDictItems} from '@/api/api' | |
127 | 131 | // import InventoryDetailList from './InventoryDetailList' |
128 | 132 | import InventoryDetailSubTable from './subTables/InventoryDetailSubTable' |
129 | 133 | |
... | ... | @@ -136,9 +140,10 @@ export default { |
136 | 140 | data() { |
137 | 141 | return { |
138 | 142 | zoneList: [], |
139 | - zoneOptions:[], | |
143 | + zoneOptions: [], | |
140 | 144 | companyList: [], |
141 | 145 | selectedMainId: '', |
146 | + firstLoad:0, | |
142 | 147 | description: '物料汇总主表管理页面', |
143 | 148 | // 表头 |
144 | 149 | columns: [ |
... | ... | @@ -147,14 +152,14 @@ export default { |
147 | 152 | align: 'center', |
148 | 153 | dataIndex: 'zoneCode', |
149 | 154 | key: 'zoneCode', |
150 | - scopedSlots: { customRender: 'zoneCode' } | |
155 | + scopedSlots: {customRender: 'zoneCode'} | |
151 | 156 | }, |
152 | 157 | { |
153 | 158 | title: '货主', |
154 | 159 | align: 'center', |
155 | 160 | dataIndex: 'companyCode', |
156 | 161 | key: 'companyCode', |
157 | - scopedSlots: { customRender: 'companyCode' } | |
162 | + scopedSlots: {customRender: 'companyCode'} | |
158 | 163 | }, |
159 | 164 | { |
160 | 165 | title: '物料编码', |
... | ... | @@ -195,8 +200,23 @@ export default { |
195 | 200 | this.getSuperFieldList() |
196 | 201 | this.loadFrom() |
197 | 202 | }, |
203 | + mounted() { | |
204 | + if(this.firstLoad == 0) { | |
205 | + this.firstLoad = 1; | |
206 | + return; | |
207 | + } | |
208 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
209 | + let timeSearch=setInterval(()=>{ | |
210 | + let eleSearch= document.getElementById("search"); | |
211 | + if (eleSearch!=null){ | |
212 | + //调用成功,清除定时器 | |
213 | + clearInterval(timeSearch) | |
214 | + eleSearch.click(); | |
215 | + } | |
216 | + },200) | |
217 | + }, | |
198 | 218 | computed: { |
199 | - importExcelUrl: function() { | |
219 | + importExcelUrl: function () { | |
200 | 220 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
201 | 221 | } |
202 | 222 | }, |
... | ... | @@ -239,13 +259,13 @@ export default { |
239 | 259 | if (res.success) { |
240 | 260 | this.zoneList = res.result |
241 | 261 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
242 | - setTimeout(()=>{ | |
262 | + setTimeout(() => { | |
243 | 263 | //slice可以在数组的任何位置进行删除/添加操作 |
244 | 264 | this.zoneOptions.splice(0, 1); |
245 | 265 | for (let i = 0; i < res.result.length; i++) { |
246 | - this.zoneOptions.push({value:res.result[i].code,text:res.result[i].name}) | |
266 | + this.zoneOptions.push({value: res.result[i].code, text: res.result[i].name}) | |
247 | 267 | } |
248 | - },500) | |
268 | + }, 500) | |
249 | 269 | } |
250 | 270 | }); |
251 | 271 | ajaxGetDictItems('box_type').then(res => { |
... | ... | @@ -269,7 +289,7 @@ export default { |
269 | 289 | } |
270 | 290 | }, |
271 | 291 | onSelectChange(selectedRowKeys, selectionRows) { |
272 | - this.selectedMainId = selectionRows[0].zoneCode.toString() + "_" + selectionRows[0].materialCode.toString() | |
292 | + this.selectedMainId = selectionRows[0].zoneCode.toString() + "_" + selectionRows[0].materialCode.toString() | |
273 | 293 | this.selectedRowKeys = selectedRowKeys |
274 | 294 | this.selectionRows = selectionRows |
275 | 295 | }, |
... | ... | @@ -278,16 +298,17 @@ export default { |
278 | 298 | this.selectedRowKeys = [] |
279 | 299 | this.selectionRows = [] |
280 | 300 | }, |
281 | - initDictConfig() {}, | |
301 | + initDictConfig() { | |
302 | + }, | |
282 | 303 | getSuperFieldList() { |
283 | 304 | let fieldList = [] |
284 | - fieldList.push({ type: 'string', value: 'zoneCode', text: '库区', dictCode: '' }) | |
285 | - fieldList.push({ type: 'string', value: 'companyCode', text: '货主', dictCode: '' }) | |
286 | - fieldList.push({ type: 'string', value: 'materialCode', text: '物料编码', dictCode: '' }) | |
287 | - fieldList.push({ type: 'string', value: 'materialName', text: '物料名称', dictCode: '' }) | |
288 | - fieldList.push({ type: 'string', value: 'materialSpec', text: '物料规格', dictCode: '' }) | |
289 | - fieldList.push({ type: 'string', value: 'materialUnit', text: '物料单位', dictCode: '' }) | |
290 | - fieldList.push({ type: 'BigDecimal', value: 'qty', text: '物料总数', dictCode: '' }) | |
305 | + fieldList.push({type: 'string', value: 'zoneCode', text: '库区', dictCode: ''}) | |
306 | + fieldList.push({type: 'string', value: 'companyCode', text: '货主', dictCode: ''}) | |
307 | + fieldList.push({type: 'string', value: 'materialCode', text: '物料编码', dictCode: ''}) | |
308 | + fieldList.push({type: 'string', value: 'materialName', text: '物料名称', dictCode: ''}) | |
309 | + fieldList.push({type: 'string', value: 'materialSpec', text: '物料规格', dictCode: ''}) | |
310 | + fieldList.push({type: 'string', value: 'materialUnit', text: '物料单位', dictCode: ''}) | |
311 | + fieldList.push({type: 'BigDecimal', value: 'qty', text: '物料总数', dictCode: ''}) | |
291 | 312 | this.superFieldList = fieldList |
292 | 313 | } |
293 | 314 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <a-row :gutter="24"> |
7 | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | |
9 | + <a-form-model-item prop="zoneOptions"> | |
10 | 10 | <j-multi-select-tag |
11 | 11 | v-model="queryParam.zoneCode" |
12 | 12 | :options="zoneOptions" |
... | ... | @@ -51,12 +51,14 @@ |
51 | 51 | </a-col> |
52 | 52 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
53 | 53 | <a-form-item label="交易类型"> |
54 | - <j-dict-select-tag placeholder="请选择交易类型" v-model="queryParam.type" dictCode="inventory_transaction_type"/> | |
54 | + <j-dict-select-tag placeholder="请选择交易类型" v-model="queryParam.type" | |
55 | + dictCode="inventory_transaction_type"/> | |
55 | 56 | </a-form-item> |
56 | 57 | </a-col> |
57 | 58 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
58 | 59 | <a-form-item label="库存状态"> |
59 | - <j-dict-select-tag placeholder="请选择库存状态" v-model="queryParam.inventoryStatus" dictCode="inventory_status"/> | |
60 | + <j-dict-select-tag placeholder="请选择库存状态" v-model="queryParam.inventoryStatus" | |
61 | + dictCode="inventory_status"/> | |
60 | 62 | </a-form-item> |
61 | 63 | </a-col> |
62 | 64 | <template v-if="toggleSearchStatus"> |
... | ... | @@ -102,7 +104,7 @@ |
102 | 104 | </template> |
103 | 105 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
104 | 106 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
105 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
107 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
106 | 108 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
107 | 109 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
108 | 110 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -117,10 +119,15 @@ |
117 | 119 | |
118 | 120 | <!-- 操作按钮区域 --> |
119 | 121 | <div class="table-operator"> |
120 | - <a-button v-has="'inventoryTransaction:export'" type="primary" icon="download" @click="handleExportXls('库存交易记录')">导出</a-button> | |
121 | - <a-upload v-has="'inventoryTransaction:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
122 | + <a-button v-has="'inventoryTransaction:export'" type="primary" icon="download" | |
123 | + @click="handleExportXls('库存交易记录')">导出 | |
124 | + </a-button> | |
125 | + <a-upload v-has="'inventoryTransaction:import'" name="file" :showUploadList="false" :multiple="false" | |
126 | + :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
122 | 127 | <a-button type="primary" icon="import">导入</a-button> |
123 | 128 | </a-upload> |
129 | + <j-super-query :fieldList="superFieldList" v-has="'inventoryTransaction:superQuery'" | |
130 | + @handleSuperQuery="handleSuperQuery"/> | |
124 | 131 | </div> |
125 | 132 | |
126 | 133 | <!-- table区域-begin --> |
... | ... | @@ -218,7 +225,8 @@ export default { |
218 | 225 | description: '库存交易记录管理页面', |
219 | 226 | companyList: [], |
220 | 227 | zoneList: [], |
221 | - zoneOptions:[], | |
228 | + zoneOptions: [], | |
229 | + firstLoad:0, | |
222 | 230 | // 表头 |
223 | 231 | columns: [ |
224 | 232 | { |
... | ... | @@ -233,7 +241,7 @@ export default { |
233 | 241 | align: 'center', |
234 | 242 | dataIndex: 'zoneCode', |
235 | 243 | key: 'zoneCode', |
236 | - scopedSlots: { customRender: 'zoneCode' } | |
244 | + scopedSlots: {customRender: 'zoneCode'} | |
237 | 245 | }, |
238 | 246 | // { |
239 | 247 | // title: '货主', |
... | ... | @@ -363,6 +371,21 @@ export default { |
363 | 371 | this.getSuperFieldList(); |
364 | 372 | this.loadFrom(); |
365 | 373 | }, |
374 | + mounted() { | |
375 | + if(this.firstLoad == 0) { | |
376 | + this.firstLoad = 1; | |
377 | + return; | |
378 | + } | |
379 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
380 | + let timeSearch=setInterval(()=>{ | |
381 | + let eleSearch= document.getElementById("search"); | |
382 | + if (eleSearch!=null){ | |
383 | + //调用成功,清除定时器 | |
384 | + clearInterval(timeSearch) | |
385 | + eleSearch.click(); | |
386 | + } | |
387 | + },200) | |
388 | + }, | |
366 | 389 | computed: { |
367 | 390 | importExcelUrl: function () { |
368 | 391 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... | @@ -386,13 +409,13 @@ export default { |
386 | 409 | if (res.success) { |
387 | 410 | this.zoneList = res.result |
388 | 411 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
389 | - setTimeout(()=>{ | |
412 | + setTimeout(() => { | |
390 | 413 | //slice可以在数组的任何位置进行删除/添加操作 |
391 | 414 | this.zoneOptions.splice(0, 1); |
392 | 415 | for (let i = 0; i < res.result.length; i++) { |
393 | - this.zoneOptions.push({value:res.result[i].code,text:res.result[i].name}) | |
416 | + this.zoneOptions.push({value: res.result[i].code, text: res.result[i].name}) | |
394 | 417 | } |
395 | - },500) | |
418 | + }, 500) | |
396 | 419 | } |
397 | 420 | }); |
398 | 421 | getCompanyList().then((res) => { |
... | ... |
ant-design-vue-jeecg/src/views/system/inventory/SimpleInventoryDetailList.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <a-row :gutter="24"> |
7 | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | |
9 | + <a-form-model-item prop="zoneOptions"> | |
10 | 10 | <j-multi-select-tag |
11 | 11 | v-model="queryParam.zoneCode" |
12 | 12 | :options="zoneOptions" |
... | ... | @@ -105,7 +105,7 @@ |
105 | 105 | </template> |
106 | 106 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
107 | 107 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
108 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
108 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
109 | 109 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
110 | 110 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
111 | 111 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -120,6 +120,7 @@ |
120 | 120 | |
121 | 121 | <!-- 操作按钮区域 --> |
122 | 122 | <div class="table-operator"> |
123 | + | |
123 | 124 | <a-button v-has="'inventoryDetail:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
124 | 125 | <a-button v-has="'inventoryDetail:export'" type="primary" icon="download" @click="handleExportXls('库存详情')" |
125 | 126 | >导出 |
... | ... | @@ -137,15 +138,14 @@ |
137 | 138 | <a-button type="primary" icon="import">导入</a-button> |
138 | 139 | </a-upload> |
139 | 140 | <a-button v-has="'inventoryDetail:controller'" @click='controller()' type='primary'>冻结</a-button> |
140 | - <a-button v-has="'inventoryDetail:releaseController'" @click='releaseController()' type='primary'>释放冻结</a-button> | |
141 | - <a-button v-has="'inventoryHeader:quickShipmentInventoryHeader'" @click='quickShipment()' type='primary'>快速出库</a-button> | |
141 | + <a-button v-has="'inventoryDetail:releaseController'" @click='releaseController()' type='primary'>释放冻结 | |
142 | + </a-button> | |
143 | + <a-button v-has="'inventoryHeader:quickShipmentInventoryHeader'" @click='quickShipment()' type='primary'> | |
144 | + 快速出库 | |
145 | + </a-button> | |
142 | 146 | <!-- 高级查询区域 --> |
143 | - <j-super-query | |
144 | - :fieldList="superFieldList" | |
145 | - v-has="'inventoryDetail:superSearch'" | |
146 | - ref="superQueryModal" | |
147 | - @handleSuperQuery="handleSuperQuery" | |
148 | - ></j-super-query> | |
147 | + <j-super-query :fieldList="superFieldList" v-has="'inventoryDetail:superQuery'" | |
148 | + @handleSuperQuery="handleSuperQuery"/> | |
149 | 149 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> |
150 | 150 | <!-- <a-menu slot="overlay">--> |
151 | 151 | <!-- <a-menu-item v-has="'inventoryDetail:delete'" key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>--> |
... | ... | @@ -156,10 +156,11 @@ |
156 | 156 | |
157 | 157 | <!-- table区域-begin --> |
158 | 158 | <div> |
159 | - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | |
160 | - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
161 | - <a style="margin-left: 24px" @click="onClearSelected">清空</a> | |
162 | - </div> | |
159 | + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | |
160 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a | |
161 | + style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
162 | + <a style="margin-left: 24px" @click="onClearSelected">清空</a> | |
163 | + </div> | |
163 | 164 | |
164 | 165 | <a-table |
165 | 166 | ref="table" |
... | ... | @@ -220,7 +221,8 @@ |
220 | 221 | </template> |
221 | 222 | <template slot="fileSlot" slot-scope="text"> |
222 | 223 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
223 | - <a-button v-else :ghost="true" type="primary" icon="download" size="small" @click="downloadFile(text)">下载</a-button> | |
224 | + <a-button v-else :ghost="true" type="primary" icon="download" size="small" @click="downloadFile(text)">下载 | |
225 | + </a-button> | |
224 | 226 | </template> |
225 | 227 | <span slot="action" slot-scope="text, record"> |
226 | 228 | <a v-has="'inventoryDetail:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical"/></a> |
... | ... | @@ -242,7 +244,7 @@ import {mixinDevice} from '@/utils/mixin' |
242 | 244 | import {JeecgListMixin} from '@/mixins/JeecgListMixin' |
243 | 245 | import SimpleInventoryDetailModal from './modules/SimpleInventoryDetailModal' |
244 | 246 | import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' |
245 | -import {getCompanyList, getZoneList, } from "@api/api"; | |
247 | +import {getCompanyList, getZoneList,} from "@api/api"; | |
246 | 248 | import {postAction} from '@/api/manage' |
247 | 249 | import QuickShipmentDetailModel from "@views/system/shipment/modules/QuickShipmentDetailModal"; |
248 | 250 | |
... | ... | @@ -256,8 +258,9 @@ export default { |
256 | 258 | data() { |
257 | 259 | return { |
258 | 260 | zoneList: [], |
259 | - zoneOptions:[], | |
261 | + zoneOptions: [], | |
260 | 262 | companyList: [], |
263 | + firstLoad:0, | |
261 | 264 | description: '库存详情管理页面', |
262 | 265 | // 表头 |
263 | 266 | columns: [ |
... | ... | @@ -409,13 +412,28 @@ export default { |
409 | 412 | }, |
410 | 413 | dictOptions: {}, |
411 | 414 | superFieldList: [], |
412 | - selectRecord:[], | |
415 | + selectRecord: [], | |
413 | 416 | } |
414 | 417 | }, |
415 | 418 | created() { |
416 | 419 | this.loadFrom() |
417 | 420 | this.getSuperFieldList() |
418 | 421 | }, |
422 | + mounted() { | |
423 | + if(this.firstLoad == 0) { | |
424 | + this.firstLoad = 1; | |
425 | + return; | |
426 | + } | |
427 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
428 | + let timeSearch=setInterval(()=>{ | |
429 | + let eleSearch= document.getElementById("search"); | |
430 | + if (eleSearch!=null){ | |
431 | + //调用成功,清除定时器 | |
432 | + clearInterval(timeSearch) | |
433 | + eleSearch.click(); | |
434 | + } | |
435 | + },200) | |
436 | + }, | |
419 | 437 | computed: { |
420 | 438 | importExcelUrl: function () { |
421 | 439 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
... | ... | @@ -438,13 +456,13 @@ export default { |
438 | 456 | if (res.success) { |
439 | 457 | this.zoneList = res.result |
440 | 458 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
441 | - setTimeout(()=>{ | |
459 | + setTimeout(() => { | |
442 | 460 | //slice可以在数组的任何位置进行删除/添加操作 |
443 | 461 | this.zoneOptions.splice(0, 1); |
444 | 462 | for (let i = 0; i < res.result.length; i++) { |
445 | - this.zoneOptions.push({value:res.result[i].code,text:res.result[i].name}) | |
463 | + this.zoneOptions.push({value: res.result[i].code, text: res.result[i].name}) | |
446 | 464 | } |
447 | - },500) | |
465 | + }, 500) | |
448 | 466 | } |
449 | 467 | }); |
450 | 468 | getCompanyList().then(res => { |
... | ... | @@ -453,7 +471,7 @@ export default { |
453 | 471 | } |
454 | 472 | }) |
455 | 473 | }, |
456 | - controller: function() { | |
474 | + controller: function () { | |
457 | 475 | if (this.selectedRowKeys.length <= 0) { |
458 | 476 | this.$message.warning('请选择一条记录!') |
459 | 477 | } else { |
... | ... | @@ -461,7 +479,7 @@ export default { |
461 | 479 | this.$confirm({ |
462 | 480 | title: '确认冻结', |
463 | 481 | content: '是否冻结选中数据?', |
464 | - onOk: function() { | |
482 | + onOk: function () { | |
465 | 483 | that.loading = true; |
466 | 484 | postAction(that.url.controller, that.selectedRowKeys).then((res) => { |
467 | 485 | if (res.success) { |
... | ... | @@ -489,7 +507,7 @@ export default { |
489 | 507 | this.$confirm({ |
490 | 508 | title: '释放冻结', |
491 | 509 | content: '释放冻结选中数据?', |
492 | - onOk: function() { | |
510 | + onOk: function () { | |
493 | 511 | that.loading = true; |
494 | 512 | postAction(that.url.releaseController, that.selectedRowKeys).then((res) => { |
495 | 513 | if (res.success) { |
... | ... |
ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
... | ... | @@ -6,7 +6,8 @@ |
6 | 6 | <a-row :gutter="24"> |
7 | 7 | <a-col :xl='6' :lg='7' :md='8' :sm='24'> |
8 | 8 | <a-form-item label='接口名称'> |
9 | - <a-select show-search placeholder='请输入接口名称' option-filter-prop='children' v-model='queryParam.apiName'> | |
9 | + <a-select show-search placeholder='请输入接口名称' option-filter-prop='children' | |
10 | + v-model='queryParam.apiName'> | |
10 | 11 | <a-select-option v-for='name in apiNameList' :key='name' :value='name'> |
11 | 12 | {{ name }} |
12 | 13 | </a-select-option> |
... | ... | @@ -73,7 +74,7 @@ |
73 | 74 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
74 | 75 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
75 | 76 | {{ toggleSearchStatus ? '收起' : '展开' }} |
76 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | |
77 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> | |
77 | 78 | </a> |
78 | 79 | </span> |
79 | 80 | </a-col> |
... | ... | @@ -85,7 +86,10 @@ |
85 | 86 | <!-- 操作按钮区域 --> |
86 | 87 | <div class="table-operator"> |
87 | 88 | <a-button v-has="'apiLog:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
88 | - <a-button v-has="'apiLog:export'" type="primary" icon="download" @click="handleExportXls('接口日志')">导出</a-button> | |
89 | + <a-button v-has="'apiLog:export'" type="primary" icon="download" @click="handleExportXls('接口日志')">导出 | |
90 | + </a-button> | |
91 | + <j-super-query :fieldList="superFieldList" v-has="'apiLog:superQuery'" | |
92 | + @handleSuperQuery="handleSuperQuery"/> | |
89 | 93 | </div> |
90 | 94 | |
91 | 95 | <!-- table区域-begin --> |
... | ... | @@ -106,22 +110,40 @@ |
106 | 110 | <template :slot="expandedRowRender" slot-scope="record"> |
107 | 111 | <div style="margin: 0"> |
108 | 112 | <div> |
109 | - <a-button @click="copyToClipboard(record.requestHeader)" type="link" icon="copy" style="vertical-align: revert;"></a-button> | |
110 | - <span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#b3b3b3;">请求头:</span> | |
111 | - <a-button @click="record.expandHeader = !record.expandHeader" type="link" icon="down-circle" style="vertical-align: revert;"></a-button> | |
112 | - <span v-if="record.expandHeader" style="padding:0 0 0 32px;display: block; vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#b3b3b3;">{{ record.requestHeader }}</span> | |
113 | + <a-button @click="copyToClipboard(record.requestHeader)" type="link" icon="copy" | |
114 | + style="vertical-align: revert;"></a-button> | |
115 | + <span | |
116 | + style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#b3b3b3;">请求头:</span> | |
117 | + <a-button @click="record.expandHeader = !record.expandHeader" type="link" icon="down-circle" | |
118 | + style="vertical-align: revert;"></a-button> | |
119 | + <span v-if="record.expandHeader" | |
120 | + style="padding:0 0 0 32px;display: block; vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#b3b3b3;">{{ | |
121 | + record.requestHeader | |
122 | + }}</span> | |
113 | 123 | </div> |
114 | 124 | <div> |
115 | - <a-button @click="copyToClipboard(record.requestBody)" type="link" icon="copy" style="vertical-align: revert;"></a-button> | |
116 | - <span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color: saddlebrown;">请求内容:{{ record.requestBody }}</span> | |
125 | + <a-button @click="copyToClipboard(record.requestBody)" type="link" icon="copy" | |
126 | + style="vertical-align: revert;"></a-button> | |
127 | + <span | |
128 | + style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color: saddlebrown;">请求内容:{{ | |
129 | + record.requestBody | |
130 | + }}</span> | |
117 | 131 | </div> |
118 | 132 | <div> |
119 | - <a-button @click="copyToClipboard(record.responseBody)" type="link" icon="copy" style="vertical-align: revert;"></a-button> | |
120 | - <span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#0066CC;">响应内容:{{ record.responseBody }}</span> | |
133 | + <a-button @click="copyToClipboard(record.responseBody)" type="link" icon="copy" | |
134 | + style="vertical-align: revert;"></a-button> | |
135 | + <span | |
136 | + style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#0066CC;">响应内容:{{ | |
137 | + record.responseBody | |
138 | + }}</span> | |
121 | 139 | </div> |
122 | - <div v-if="record.exception" > | |
123 | - <a-button @click="copyToClipboard(record.exception)" type="link" icon="copy" style="vertical-align: revert;"></a-button> | |
124 | - <span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:red">异常堆栈信息:{{ record.exception }}</span> | |
140 | + <div v-if="record.exception"> | |
141 | + <a-button @click="copyToClipboard(record.exception)" type="link" icon="copy" | |
142 | + style="vertical-align: revert;"></a-button> | |
143 | + <span | |
144 | + style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:red">异常堆栈信息:{{ | |
145 | + record.exception | |
146 | + }}</span> | |
125 | 147 | </div> |
126 | 148 | </div> |
127 | 149 | </template> |
... | ... | @@ -139,8 +161,8 @@ |
139 | 161 | <script> |
140 | 162 | import moment from 'moment' |
141 | 163 | import '@/assets/less/TableExpand.less' |
142 | -import { mixinDevice } from '@/utils/mixin' | |
143 | -import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
164 | +import {mixinDevice} from '@/utils/mixin' | |
165 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
144 | 166 | import ApiLogModal from './modules/ApiLogModal' |
145 | 167 | import JEllipsis from '@comp/jeecg/JEllipsis' |
146 | 168 | import {getApiNameList} from '@api/api' |
... | ... | @@ -238,7 +260,7 @@ export default { |
238 | 260 | this.expandedRowRender = "expandedRowRender"; |
239 | 261 | }, |
240 | 262 | computed: { |
241 | - importExcelUrl: function() { | |
263 | + importExcelUrl: function () { | |
242 | 264 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
243 | 265 | } |
244 | 266 | }, |
... | ... | @@ -272,26 +294,27 @@ export default { |
272 | 294 | |
273 | 295 | clipboard.onClick(event); // 添加这一行来触发点击事件 |
274 | 296 | }, |
275 | - initDictConfig() {}, | |
297 | + initDictConfig() { | |
298 | + }, | |
276 | 299 | getSuperFieldList() { |
277 | 300 | let fieldList = [] |
278 | - fieldList.push({ type: 'string', value: 'apiName', text: '接口名称', dictCode: '' }) | |
279 | - fieldList.push({ type: 'string', value: 'apiMethod', text: '请求类型', dictCode: '' }) | |
280 | - fieldList.push({ type: 'string', value: 'ip', text: '请求方IP', dictCode: '' }) | |
281 | - fieldList.push({ type: 'string', value: 'requestFrom', text: '请求方名称', dictCode: '' }) | |
282 | - fieldList.push({ type: 'string', value: 'responseBy', text: '响应方名称', dictCode: '' }) | |
283 | - fieldList.push({ type: 'string', value: 'url', text: '请求地址', dictCode: '' }) | |
284 | - fieldList.push({ type: 'datetime', value: 'requestTime', text: '请求时间' }) | |
285 | - fieldList.push({ type: 'datetime', value: 'responseTime', text: '响应时间' }) | |
286 | - fieldList.push({ type: 'Text', value: 'requestHeader', text: '请求头', dictCode: '' }) | |
287 | - fieldList.push({ type: 'Text', value: 'requestBody', text: '请求内容', dictCode: '' }) | |
288 | - fieldList.push({ type: 'Text', value: 'responseHeader', text: '响应头', dictCode: '' }) | |
289 | - fieldList.push({ type: 'Text', value: 'responseBody', text: '响应内容', dictCode: '' }) | |
290 | - fieldList.push({ type: 'string', value: 'duration', text: '响应耗时(毫秒)', dictCode: '' }) | |
291 | - fieldList.push({ type: 'int', value: 'httpCode', text: 'httpCode', dictCode: '' }) | |
292 | - fieldList.push({ type: 'int', value: 'retCode', text: '业务响应码', dictCode: '' }) | |
293 | - fieldList.push({ type: 'Text', value: 'exception', text: '异常堆栈信息', dictCode: '' }) | |
294 | - fieldList.push({ type: 'datetime', value: 'createTime', text: '创建日期' }) | |
301 | + fieldList.push({type: 'string', value: 'apiName', text: '接口名称', dictCode: ''}) | |
302 | + fieldList.push({type: 'string', value: 'apiMethod', text: '请求类型', dictCode: ''}) | |
303 | + fieldList.push({type: 'string', value: 'ip', text: '请求方IP', dictCode: ''}) | |
304 | + fieldList.push({type: 'string', value: 'requestFrom', text: '请求方名称', dictCode: ''}) | |
305 | + fieldList.push({type: 'string', value: 'responseBy', text: '响应方名称', dictCode: ''}) | |
306 | + fieldList.push({type: 'string', value: 'url', text: '请求地址', dictCode: ''}) | |
307 | + fieldList.push({type: 'datetime', value: 'requestTime', text: '请求时间'}) | |
308 | + fieldList.push({type: 'datetime', value: 'responseTime', text: '响应时间'}) | |
309 | + fieldList.push({type: 'Text', value: 'requestHeader', text: '请求头', dictCode: ''}) | |
310 | + fieldList.push({type: 'Text', value: 'requestBody', text: '请求内容', dictCode: ''}) | |
311 | + fieldList.push({type: 'Text', value: 'responseHeader', text: '响应头', dictCode: ''}) | |
312 | + fieldList.push({type: 'Text', value: 'responseBody', text: '响应内容', dictCode: ''}) | |
313 | + fieldList.push({type: 'string', value: 'duration', text: '响应耗时(毫秒)', dictCode: ''}) | |
314 | + fieldList.push({type: 'int', value: 'httpCode', text: 'httpCode', dictCode: ''}) | |
315 | + fieldList.push({type: 'int', value: 'retCode', text: '业务响应码', dictCode: ''}) | |
316 | + fieldList.push({type: 'Text', value: 'exception', text: '异常堆栈信息', dictCode: ''}) | |
317 | + fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | |
295 | 318 | this.superFieldList = fieldList |
296 | 319 | } |
297 | 320 | } |
... | ... |
ant-design-vue-jeecg/src/views/system/monitor/ApkInfoList.vue
... | ... | @@ -53,23 +53,31 @@ |
53 | 53 | </a-upload> |
54 | 54 | <!--<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> |
55 | 55 | <a-button type="primary" icon="download" @click="handleExportXls('apk_info')">导出</a-button> |
56 | - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
56 | + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" | |
57 | + @change="handleImportExcel"> | |
57 | 58 | <a-button type="primary" icon="import">导入</a-button> |
58 | 59 | </a-upload> |
59 | 60 | <!-- 高级查询区域 --> |
60 | - <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> | |
61 | + <j-super-query :fieldList="superFieldList" ref="superQueryModal" | |
62 | + v-has="'apkInfo:superQuery'" @handleSuperQuery="handleSuperQuery"></j-super-query> | |
61 | 63 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
62 | 64 | <a-menu slot="overlay"> |
63 | - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> | |
65 | + <a-menu-item key="1" @click="batchDel"> | |
66 | + <a-icon type="delete"/> | |
67 | + 删除 | |
68 | + </a-menu-item> | |
64 | 69 | </a-menu> |
65 | - <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> | |
70 | + <a-button style="margin-left: 8px"> 批量操作 | |
71 | + <a-icon type="down"/> | |
72 | + </a-button> | |
66 | 73 | </a-dropdown> |
67 | 74 | </div> |
68 | 75 | |
69 | 76 | <!-- table区域-begin --> |
70 | 77 | <div> |
71 | 78 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
72 | - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 | |
79 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a | |
80 | + style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 | |
73 | 81 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
74 | 82 | </div> |
75 | 83 | |
... | ... | @@ -92,7 +100,8 @@ |
92 | 100 | </template> |
93 | 101 | <template slot="imgSlot" slot-scope="text"> |
94 | 102 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> |
95 | - <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
103 | + <img v-else :src="getImgView(text)" height="25px" alt="" | |
104 | + style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
96 | 105 | </template> |
97 | 106 | <template slot="fileSlot" slot-scope="text"> |
98 | 107 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
... | ... | @@ -110,9 +119,9 @@ |
110 | 119 | <span slot="action" slot-scope="text, record"> |
111 | 120 | <a @click="handleEdit(record)">编辑</a> |
112 | 121 | <a @click="handleDetail(record)">详情</a> |
113 | - <a-divider type="vertical" /> | |
122 | + <a-divider type="vertical"/> | |
114 | 123 | <a-dropdown> |
115 | - <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
124 | + <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> | |
116 | 125 | <a-menu slot="overlay"> |
117 | 126 | <a-menu-item> |
118 | 127 | <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> |
... | ... | @@ -131,147 +140,147 @@ |
131 | 140 | </template> |
132 | 141 | |
133 | 142 | <script> |
134 | - import {httpAction, getAction} from '@/api/manage' | |
135 | - import '@/assets/less/TableExpand.less' | |
136 | - import { mixinDevice } from '@/utils/mixin' | |
137 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
138 | - import ApkInfoModal from './modules/ApkInfoModal' | |
143 | +import {httpAction, getAction} from '@/api/manage' | |
144 | +import '@/assets/less/TableExpand.less' | |
145 | +import {mixinDevice} from '@/utils/mixin' | |
146 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
147 | +import ApkInfoModal from './modules/ApkInfoModal' | |
139 | 148 | |
140 | - export default { | |
141 | - name: 'ApkInfoList', | |
142 | - mixins:[JeecgListMixin, mixinDevice], | |
143 | - components: { | |
144 | - ApkInfoModal | |
145 | - }, | |
146 | - data () { | |
147 | - return { | |
148 | - description: 'apk_info管理页面', | |
149 | - // 表头 | |
150 | - columns: [ | |
151 | - { | |
152 | - title: '#', | |
153 | - dataIndex: '', | |
154 | - key:'rowIndex', | |
155 | - width:60, | |
156 | - align:"center", | |
157 | - customRender:function (t,r,index) { | |
158 | - return parseInt(index)+1; | |
159 | - } | |
160 | - }, | |
161 | - { | |
162 | - title:'应用名称', | |
163 | - align:"center", | |
164 | - dataIndex: 'pkgname' | |
165 | - }, | |
166 | - { | |
167 | - title:'版本号', | |
168 | - align:"center", | |
169 | - dataIndex: 'versioncode' | |
170 | - }, | |
171 | - { | |
172 | - title:'版本名称', | |
173 | - align:"center", | |
174 | - dataIndex: 'versionname' | |
175 | - }, | |
176 | - { | |
177 | - title:'下载地址', | |
178 | - align:"center", | |
179 | - dataIndex: 'url', | |
180 | - customRender: function (t, r, index) { | |
181 | - return window._CONFIG['domianURL'] + t | |
182 | - } | |
183 | - }, | |
184 | - { | |
185 | - title:'md5校验码', | |
186 | - align:"center", | |
187 | - dataIndex: 'md5' | |
188 | - }, | |
189 | - { | |
190 | - title: '操作', | |
191 | - dataIndex: 'action', | |
192 | - align:"center", | |
193 | - fixed:"right", | |
194 | - width:147, | |
195 | - scopedSlots: { customRender: 'action' } | |
149 | +export default { | |
150 | + name: 'ApkInfoList', | |
151 | + mixins: [JeecgListMixin, mixinDevice], | |
152 | + components: { | |
153 | + ApkInfoModal | |
154 | + }, | |
155 | + data() { | |
156 | + return { | |
157 | + description: 'apk_info管理页面', | |
158 | + // 表头 | |
159 | + columns: [ | |
160 | + { | |
161 | + title: '#', | |
162 | + dataIndex: '', | |
163 | + key: 'rowIndex', | |
164 | + width: 60, | |
165 | + align: "center", | |
166 | + customRender: function (t, r, index) { | |
167 | + return parseInt(index) + 1; | |
196 | 168 | } |
197 | - ], | |
198 | - url: { | |
199 | - list: "/monitor/apkinfo/list", | |
200 | - delete: "/monitor/apkinfo/delete", | |
201 | - deleteBatch: "/monitor/apkinfo/deleteBatch", | |
202 | - exportXlsUrl: "/monitor/apkinfo/exportXls", | |
203 | - importExcelUrl: "monitor/apkinfo/importExcel", | |
204 | - upload: "/sys/common/upload", | |
205 | - parse: "/monitor/apkinfo/parseApk" | |
206 | 169 | }, |
207 | - dictOptions:{}, | |
208 | - superFieldList:[], | |
209 | - } | |
210 | - }, | |
211 | - created() { | |
170 | + { | |
171 | + title: '应用名称', | |
172 | + align: "center", | |
173 | + dataIndex: 'pkgname' | |
174 | + }, | |
175 | + { | |
176 | + title: '版本号', | |
177 | + align: "center", | |
178 | + dataIndex: 'versioncode' | |
179 | + }, | |
180 | + { | |
181 | + title: '版本名称', | |
182 | + align: "center", | |
183 | + dataIndex: 'versionname' | |
184 | + }, | |
185 | + { | |
186 | + title: '下载地址', | |
187 | + align: "center", | |
188 | + dataIndex: 'url', | |
189 | + customRender: function (t, r, index) { | |
190 | + return window._CONFIG['domianURL'] + t | |
191 | + } | |
192 | + }, | |
193 | + { | |
194 | + title: 'md5校验码', | |
195 | + align: "center", | |
196 | + dataIndex: 'md5' | |
197 | + }, | |
198 | + { | |
199 | + title: '操作', | |
200 | + dataIndex: 'action', | |
201 | + align: "center", | |
202 | + fixed: "right", | |
203 | + width: 147, | |
204 | + scopedSlots: {customRender: 'action'} | |
205 | + } | |
206 | + ], | |
207 | + url: { | |
208 | + list: "/monitor/apkinfo/list", | |
209 | + delete: "/monitor/apkinfo/delete", | |
210 | + deleteBatch: "/monitor/apkinfo/deleteBatch", | |
211 | + exportXlsUrl: "/monitor/apkinfo/exportXls", | |
212 | + importExcelUrl: "monitor/apkinfo/importExcel", | |
213 | + upload: "/sys/common/upload", | |
214 | + parse: "/monitor/apkinfo/parseApk" | |
215 | + }, | |
216 | + dictOptions: {}, | |
217 | + superFieldList: [], | |
218 | + } | |
219 | + }, | |
220 | + created() { | |
212 | 221 | this.getSuperFieldList(); |
222 | + }, | |
223 | + computed: { | |
224 | + uploadAction() { | |
225 | + return window._CONFIG['domianURL'] + this.url.upload; | |
213 | 226 | }, |
214 | - computed: { | |
215 | - uploadAction() { | |
216 | - return window._CONFIG['domianURL'] + this.url.upload; | |
217 | - }, | |
218 | - importExcelUrl: function(){ | |
219 | - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
220 | - }, | |
227 | + importExcelUrl: function () { | |
228 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
221 | 229 | }, |
222 | - methods: { | |
223 | - beforeUpload(file) { | |
224 | - var fileType = file.type; | |
225 | - if (fileType === 'image') { | |
226 | - if (fileType.indexOf('image') < 0) { | |
227 | - this.$message.warning('请上传图片'); | |
228 | - return false; | |
229 | - } | |
230 | - } else if (fileType === 'file') { | |
231 | - if (fileType.indexOf('image') >= 0) { | |
232 | - this.$message.warning('请上传文件'); | |
233 | - return false; | |
234 | - } | |
230 | + }, | |
231 | + methods: { | |
232 | + beforeUpload(file) { | |
233 | + var fileType = file.type; | |
234 | + if (fileType === 'image') { | |
235 | + if (fileType.indexOf('image') < 0) { | |
236 | + this.$message.warning('请上传图片'); | |
237 | + return false; | |
235 | 238 | } |
236 | - return true | |
237 | - }, | |
238 | - handleChange(info) { | |
239 | - if (info.file.status === 'done') { | |
240 | - if (info.file.response.success) { | |
241 | - this.loadData() | |
242 | - this.$message.success(`${info.file.name} 上传成功!`); | |
243 | - this.$options.methods.parseApk(this, info.file.name) | |
244 | - } else { | |
245 | - this.$message.error(`${info.file.response.message}`); | |
246 | - } | |
247 | - } else if (info.file.status === 'error') { | |
239 | + } else if (fileType === 'file') { | |
240 | + if (fileType.indexOf('image') >= 0) { | |
241 | + this.$message.warning('请上传文件'); | |
242 | + return false; | |
243 | + } | |
244 | + } | |
245 | + return true | |
246 | + }, | |
247 | + handleChange(info) { | |
248 | + if (info.file.status === 'done') { | |
249 | + if (info.file.response.success) { | |
250 | + this.loadData() | |
251 | + this.$message.success(`${info.file.name} 上传成功!`); | |
252 | + this.$options.methods.parseApk(this, info.file.name) | |
253 | + } else { | |
248 | 254 | this.$message.error(`${info.file.response.message}`); |
249 | 255 | } |
250 | - }, | |
256 | + } else if (info.file.status === 'error') { | |
257 | + this.$message.error(`${info.file.response.message}`); | |
258 | + } | |
259 | + }, | |
251 | 260 | |
252 | - parseApk(parent, filename){ | |
253 | - getAction(parent.url.parse, {filename: filename}).then((res) => { | |
254 | - if (res.success) { | |
261 | + parseApk(parent, filename) { | |
262 | + getAction(parent.url.parse, {filename: filename}).then((res) => { | |
263 | + if (res.success) { | |
255 | 264 | parent.loadData() |
256 | - }else{ | |
265 | + } else { | |
257 | 266 | alert("解析apk失败!") |
258 | 267 | } |
259 | 268 | }) |
260 | - }, | |
261 | - initDictConfig(){ | |
262 | - }, | |
263 | - getSuperFieldList(){ | |
264 | - let fieldList=[]; | |
265 | - fieldList.push({type:'string',value:'pkgname',text:'应用名称',dictCode:''}) | |
266 | - fieldList.push({type:'int',value:'versioncode',text:'版本号',dictCode:''}) | |
267 | - fieldList.push({type:'string',value:'versionname',text:'版本名称',dictCode:''}) | |
268 | - fieldList.push({type:'string',value:'url',text:'下载地址',dictCode:''}) | |
269 | - fieldList.push({type:'string',value:'md5',text:'md5校验码',dictCode:''}) | |
270 | - this.superFieldList = fieldList | |
271 | - } | |
269 | + }, | |
270 | + initDictConfig() { | |
271 | + }, | |
272 | + getSuperFieldList() { | |
273 | + let fieldList = []; | |
274 | + fieldList.push({type: 'string', value: 'pkgname', text: '应用名称', dictCode: ''}) | |
275 | + fieldList.push({type: 'int', value: 'versioncode', text: '版本号', dictCode: ''}) | |
276 | + fieldList.push({type: 'string', value: 'versionname', text: '版本名称', dictCode: ''}) | |
277 | + fieldList.push({type: 'string', value: 'url', text: '下载地址', dictCode: ''}) | |
278 | + fieldList.push({type: 'string', value: 'md5', text: 'md5校验码', dictCode: ''}) | |
279 | + this.superFieldList = fieldList | |
272 | 280 | } |
273 | 281 | } |
282 | +} | |
274 | 283 | </script> |
275 | 284 | <style scoped> |
276 | - @import '~@assets/less/common.less'; | |
285 | +@import '~@assets/less/common.less'; | |
277 | 286 | </style> |
278 | 287 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | </a-col> |
12 | 12 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
13 | 13 | <a-form-item label="业务类型"> |
14 | - <j-input placeholder="请选择业务类型" v-model="queryParam.bizType" /> | |
14 | + <j-input placeholder="请选择业务类型" v-model="queryParam.bizType"/> | |
15 | 15 | </a-form-item> |
16 | 16 | </a-col> |
17 | 17 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
... | ... | @@ -35,21 +35,31 @@ |
35 | 35 | </a-col> |
36 | 36 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
37 | 37 | <a-form-item label="操作结果状态"> |
38 | - <j-dict-select-tag placeholder="请输入操作结果状态容" v-model="queryParam.operationStatus" dictCode="operation_status"/> | |
38 | + <j-dict-select-tag placeholder="请输入操作结果状态容" v-model="queryParam.operationStatus" | |
39 | + dictCode="operation_status"/> | |
39 | 40 | </a-form-item> |
40 | 41 | </a-col> |
41 | 42 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
42 | 43 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
43 | 44 | <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> |
44 | - <a-button v-has="'operationLog:export'" type="primary" @click="handleExportXls('操作记录')" icon="download" style="margin-left: 8px">导出</a-button> | |
45 | + <a-button v-has="'operationLog:export'" type="primary" @click="handleExportXls('操作记录')" | |
46 | + icon="download" style="margin-left: 8px">导出</a-button> | |
45 | 47 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
46 | 48 | </span> |
47 | 49 | </a-col> |
50 | + | |
48 | 51 | </a-row> |
52 | + | |
49 | 53 | </a-form> |
50 | 54 | </div> |
51 | 55 | <!-- 查询区域-END --> |
52 | 56 | |
57 | + | |
58 | + <!-- 操作按钮区域 --> | |
59 | + <div class="table-operator"> | |
60 | + <j-super-query :fieldList="superFieldList" v-has="'operationLog:superQuery'" | |
61 | + @handleSuperQuery="handleSuperQuery"/> | |
62 | + </div> | |
53 | 63 | <!-- table区域-begin --> |
54 | 64 | <div> |
55 | 65 | <a-table |
... | ... | @@ -70,7 +80,8 @@ |
70 | 80 | </template> |
71 | 81 | <template slot="imgSlot" slot-scope="text"> |
72 | 82 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> |
73 | - <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
83 | + <img v-else :src="getImgView(text)" height="25px" alt="" | |
84 | + style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
74 | 85 | </template> |
75 | 86 | <template slot="fileSlot" slot-scope="text"> |
76 | 87 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
... | ... | @@ -94,130 +105,131 @@ |
94 | 105 | </a-card> |
95 | 106 | </template> |
96 | 107 | |
97 | -<script> | |
98 | - import {filterObj} from '@/utils/util'; | |
99 | - import '@/assets/less/TableExpand.less' | |
100 | - import { mixinDevice } from '@/utils/mixin' | |
101 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
102 | - import OperationLogModal from './modules/OperationLogModal' | |
103 | - import JEllipsis from "@comp/jeecg/JEllipsis" | |
104 | 108 | |
105 | - export default { | |
106 | - name: 'OperationLogList', | |
107 | - mixins:[JeecgListMixin, mixinDevice], | |
108 | - components: { | |
109 | - OperationLogModal, | |
110 | - JEllipsis | |
111 | - }, | |
112 | - data () { | |
113 | - let ellipsis1 = (v, l = 80) => (<j-ellipsis value={v} length={l}/>) | |
114 | - return { | |
115 | - description: '操作记录管理页面', | |
116 | - // 表头 | |
117 | - columns: [ | |
118 | - { | |
119 | - title:'业务ID', | |
120 | - align:"center", | |
121 | - dataIndex: 'bizId', | |
122 | - sorter: true, | |
123 | - }, | |
124 | - { | |
125 | - title:'业务类型', | |
126 | - align:"center", | |
127 | - dataIndex: 'bizType' | |
128 | - }, | |
129 | - { | |
130 | - title:'业务标签', | |
131 | - align:"center", | |
132 | - dataIndex: 'bizTag' | |
133 | - }, | |
134 | - { | |
135 | - title:'操作内容', | |
136 | - align:"center", | |
137 | - dataIndex: 'operationMsg', | |
138 | - customRender: (t) => ellipsis1(t) | |
139 | - }, | |
140 | - { | |
141 | - title:'操作时间', | |
142 | - align:"center", | |
143 | - dataIndex: 'operationTime' | |
144 | - }, | |
145 | - { | |
146 | - title:'操作耗时', | |
147 | - align:"center", | |
148 | - dataIndex: 'operationCostTime' | |
149 | - }, | |
150 | - { | |
151 | - title:'操作人姓名', | |
152 | - align:"center", | |
153 | - dataIndex: 'operatorName' | |
154 | - }, | |
155 | - { | |
156 | - title:'操作结果状态', | |
157 | - align:"center", | |
158 | - dataIndex: 'operationStatus_dictText' | |
159 | - }, | |
160 | - { | |
161 | - title: '操作', | |
162 | - dataIndex: 'action', | |
163 | - align: "center", | |
164 | - fixed: "right", | |
165 | - width: 80, | |
166 | - scopedSlots: {customRender: 'action'} | |
167 | - } | |
168 | - ], | |
169 | - url: { | |
170 | - list: "/config/operationLog/list", | |
171 | - delete: "/config/operationLog/delete", | |
172 | - deleteBatch: "/config/operationLog/deleteBatch", | |
173 | - exportXlsUrl: "/config/operationLog/exportXls", | |
174 | - importExcelUrl: "config/operationLog/importExcel", | |
109 | +<script> | |
110 | +import {filterObj} from '@/utils/util'; | |
111 | +import '@/assets/less/TableExpand.less' | |
112 | +import {mixinDevice} from '@/utils/mixin' | |
113 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
114 | +import OperationLogModal from './modules/OperationLogModal' | |
115 | +import JEllipsis from "@comp/jeecg/JEllipsis" | |
175 | 116 | |
117 | +export default { | |
118 | + name: 'OperationLogList', | |
119 | + mixins: [JeecgListMixin, mixinDevice], | |
120 | + components: { | |
121 | + OperationLogModal, | |
122 | + JEllipsis | |
123 | + }, | |
124 | + data() { | |
125 | + let ellipsis1 = (v, l = 80) => (<j-ellipsis value={v} length={l}/>) | |
126 | + return { | |
127 | + description: '操作记录管理页面', | |
128 | + // 表头 | |
129 | + columns: [ | |
130 | + { | |
131 | + title: '业务ID', | |
132 | + align: "center", | |
133 | + dataIndex: 'bizId', | |
134 | + sorter: true, | |
176 | 135 | }, |
177 | - dictOptions:{}, | |
178 | - superFieldList:[], | |
179 | - } | |
180 | - }, | |
181 | - created() { | |
182 | - this.getSuperFieldList(); | |
183 | - }, | |
184 | - computed: { | |
185 | - importExcelUrl: function(){ | |
186 | - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
187 | - }, | |
188 | - }, | |
189 | - methods: { | |
190 | - getQueryParams() { | |
191 | - // 重写查询条件 | |
192 | - let sqp = {} | |
193 | - if (this.superQueryParams) { | |
194 | - sqp['superQueryParams'] = encodeURI(this.superQueryParams) | |
195 | - sqp['superQueryMatchType'] = this.superQueryMatchType | |
136 | + { | |
137 | + title: '业务类型', | |
138 | + align: "center", | |
139 | + dataIndex: 'bizType' | |
140 | + }, | |
141 | + { | |
142 | + title: '业务标签', | |
143 | + align: "center", | |
144 | + dataIndex: 'bizTag' | |
145 | + }, | |
146 | + { | |
147 | + title: '操作内容', | |
148 | + align: "center", | |
149 | + dataIndex: 'operationMsg', | |
150 | + customRender: (t) => ellipsis1(t) | |
151 | + }, | |
152 | + { | |
153 | + title: '操作时间', | |
154 | + align: "center", | |
155 | + dataIndex: 'operationTime' | |
156 | + }, | |
157 | + { | |
158 | + title: '操作耗时', | |
159 | + align: "center", | |
160 | + dataIndex: 'operationCostTime' | |
161 | + }, | |
162 | + { | |
163 | + title: '操作人姓名', | |
164 | + align: "center", | |
165 | + dataIndex: 'operatorName' | |
166 | + }, | |
167 | + { | |
168 | + title: '操作结果状态', | |
169 | + align: "center", | |
170 | + dataIndex: 'operationStatus_dictText' | |
171 | + }, | |
172 | + { | |
173 | + title: '操作', | |
174 | + dataIndex: 'action', | |
175 | + align: "center", | |
176 | + fixed: "right", | |
177 | + width: 80, | |
178 | + scopedSlots: {customRender: 'action'} | |
196 | 179 | } |
197 | - var param = Object.assign(sqp, this.queryParam, {}, this.filters) | |
198 | - param.field = this.getQueryField() | |
199 | - param.pageNo = this.ipagination.current | |
200 | - param.pageSize = this.ipagination.pageSize | |
201 | - return filterObj(param) | |
202 | - }, | |
203 | - initDictConfig(){ | |
180 | + ], | |
181 | + url: { | |
182 | + list: "/config/operationLog/list", | |
183 | + delete: "/config/operationLog/delete", | |
184 | + deleteBatch: "/config/operationLog/deleteBatch", | |
185 | + exportXlsUrl: "/config/operationLog/exportXls", | |
186 | + importExcelUrl: "config/operationLog/importExcel", | |
187 | + | |
204 | 188 | }, |
205 | - getSuperFieldList(){ | |
206 | - let fieldList=[]; | |
207 | - fieldList.push({type:'string',value:'bizId',text:'业务ID',dictCode:''}) | |
208 | - fieldList.push({type:'string',value:'bizType',text:'业务类型',dictCode:''}) | |
209 | - fieldList.push({type:'string',value:'operationMsg',text:'操作内容',dictCode:''}) | |
210 | - fieldList.push({type:'datetime',value:'operationTime',text:'操作时间'}) | |
211 | - fieldList.push({type:'int',value:'operationCostTime',text:'操作耗时',dictCode:''}) | |
212 | - fieldList.push({type:'string',value:'contentReturn',text:'方法返回内容',dictCode:''}) | |
213 | - fieldList.push({type:'string',value:'contentException',text:'方法异常内容',dictCode:''}) | |
214 | - fieldList.push({type:'string',value:'operatorName',text:'操作人姓名',dictCode:''}) | |
215 | - fieldList.push({type:'int',value:'operationStatus',text:'操作结果状态',dictCode:'operation_status'}) | |
216 | - this.superFieldList = fieldList | |
189 | + dictOptions: {}, | |
190 | + superFieldList: [], | |
191 | + } | |
192 | + }, | |
193 | + created() { | |
194 | + this.getSuperFieldList(); | |
195 | + }, | |
196 | + computed: { | |
197 | + importExcelUrl: function () { | |
198 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
199 | + }, | |
200 | + }, | |
201 | + methods: { | |
202 | + getQueryParams() { | |
203 | + // 重写查询条件 | |
204 | + let sqp = {} | |
205 | + if (this.superQueryParams) { | |
206 | + sqp['superQueryParams'] = encodeURI(this.superQueryParams) | |
207 | + sqp['superQueryMatchType'] = this.superQueryMatchType | |
217 | 208 | } |
209 | + var param = Object.assign(sqp, this.queryParam, {}, this.filters) | |
210 | + param.field = this.getQueryField() | |
211 | + param.pageNo = this.ipagination.current | |
212 | + param.pageSize = this.ipagination.pageSize | |
213 | + return filterObj(param) | |
214 | + }, | |
215 | + initDictConfig() { | |
216 | + }, | |
217 | + getSuperFieldList() { | |
218 | + let fieldList = []; | |
219 | + fieldList.push({type: 'string', value: 'bizId', text: '业务ID', dictCode: ''}) | |
220 | + fieldList.push({type: 'string', value: 'bizType', text: '业务类型', dictCode: ''}) | |
221 | + fieldList.push({type: 'string', value: 'operationMsg', text: '操作内容', dictCode: ''}) | |
222 | + fieldList.push({type: 'datetime', value: 'operationTime', text: '操作时间'}) | |
223 | + fieldList.push({type: 'int', value: 'operationCostTime', text: '操作耗时', dictCode: ''}) | |
224 | + fieldList.push({type: 'string', value: 'contentReturn', text: '方法返回内容', dictCode: ''}) | |
225 | + fieldList.push({type: 'string', value: 'contentException', text: '方法异常内容', dictCode: ''}) | |
226 | + fieldList.push({type: 'string', value: 'operatorName', text: '操作人姓名', dictCode: ''}) | |
227 | + fieldList.push({type: 'int', value: 'operationStatus', text: '操作结果状态', dictCode: 'operation_status'}) | |
228 | + this.superFieldList = fieldList | |
218 | 229 | } |
219 | 230 | } |
231 | +} | |
220 | 232 | </script> |
221 | 233 | <style scoped> |
222 | - @import '~@assets/less/common.less'; | |
234 | +@import '~@assets/less/common.less'; | |
223 | 235 | </style> |
224 | 236 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
... | ... | @@ -52,7 +52,7 @@ |
52 | 52 | </template> |
53 | 53 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
54 | 54 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
55 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
55 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
56 | 56 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
57 | 57 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
58 | 58 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -75,6 +75,8 @@ |
75 | 75 | <a-button v-has="'receiptContainerHeader:createTask'" @click="createBatchTask" type="primary" >批量生成任务</a-button> |
76 | 76 | <a-button v-has="'receiptContainerHeader:delete'" @click="cancelBatchTask" type="primary" >批量取消组盘</a-button> |
77 | 77 | <a-button v-has="'receiptContainerHeader:suppleReceipt'" @click="suppleReceipt" type="primary" >补充入库</a-button> |
78 | + <j-super-query :fieldList="superFieldList" v-has="'receiptContainerHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
79 | + | |
78 | 80 | </div> |
79 | 81 | |
80 | 82 | <!-- table区域-begin --> |
... | ... | @@ -183,6 +185,7 @@ export default { |
183 | 185 | selectIndex: null, |
184 | 186 | description: '入库组盘管理页面', |
185 | 187 | querySource: {}, |
188 | + firstLoad:0, | |
186 | 189 | isorter: { |
187 | 190 | column: 'status', |
188 | 191 | order: 'asc', |
... | ... | @@ -285,6 +288,21 @@ export default { |
285 | 288 | created() { |
286 | 289 | this.getSuperFieldList(); |
287 | 290 | }, |
291 | + mounted() { | |
292 | + if(this.firstLoad == 0) { | |
293 | + this.firstLoad = 1; | |
294 | + return; | |
295 | + } | |
296 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
297 | + let timeSearch=setInterval(()=>{ | |
298 | + let eleSearch= document.getElementById("search"); | |
299 | + if (eleSearch!=null){ | |
300 | + //调用成功,清除定时器 | |
301 | + clearInterval(timeSearch) | |
302 | + eleSearch.click(); | |
303 | + } | |
304 | + },200) | |
305 | + }, | |
288 | 306 | computed: { |
289 | 307 | importExcelUrl: function () { |
290 | 308 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue
... | ... | @@ -102,6 +102,9 @@ |
102 | 102 | @change='handleImportExcel'> |
103 | 103 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
104 | 104 | </a-upload> |
105 | + | |
106 | + <j-super-query :fieldList="superFieldList" v-has="'receiptHeaderHistory:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
107 | + | |
105 | 108 | </div> |
106 | 109 | |
107 | 110 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
... | ... | @@ -102,6 +102,8 @@ |
102 | 102 | <a-button type="primary" icon="import">导入</a-button> |
103 | 103 | <a-button v-has="'receiptHeader:print'" @click="batchPrint()" type="primary">打印</a-button> |
104 | 104 | </a-upload> |
105 | + <j-super-query :fieldList="superFieldList" v-has="'receiptHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
106 | + | |
105 | 107 | </div> |
106 | 108 | |
107 | 109 | <!-- table区域-begin --> |
... | ... | @@ -254,6 +256,7 @@ export default { |
254 | 256 | receiptTypeList: [], |
255 | 257 | supplierList: [], |
256 | 258 | flowOff:'', |
259 | + firstLoad:0, | |
257 | 260 | // 表头 |
258 | 261 | columns: [ |
259 | 262 | { |
... | ... | @@ -392,6 +395,10 @@ export default { |
392 | 395 | } |
393 | 396 | }, |
394 | 397 | mounted() { |
398 | + if(this.firstLoad == 0) { | |
399 | + this.firstLoad = 1; | |
400 | + return; | |
401 | + } | |
395 | 402 | //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 |
396 | 403 | let timeSearch=setInterval(()=>{ |
397 | 404 | let eleSearch= document.getElementById("search"); |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
... | ... | @@ -53,7 +53,7 @@ |
53 | 53 | </template> |
54 | 54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
55 | 55 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
56 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
56 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
57 | 57 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
58 | 58 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
59 | 59 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -76,6 +76,8 @@ |
76 | 76 | </a-upload> |
77 | 77 | <a-button @click="createBatchTask" type="primary" >批量生成任务</a-button> |
78 | 78 | <a-button @click="cancelBatchTask" type="primary" >批量取消配盘</a-button> |
79 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentContainerHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
80 | + | |
79 | 81 | </div> |
80 | 82 | |
81 | 83 | <!-- table区域-begin --> |
... | ... | @@ -160,6 +162,7 @@ export default { |
160 | 162 | querySource: {}, |
161 | 163 | portList: [], |
162 | 164 | hh:'123', |
165 | + firstLoad:0, | |
163 | 166 | // 表头 |
164 | 167 | columns: [ |
165 | 168 | { |
... | ... | @@ -253,6 +256,21 @@ export default { |
253 | 256 | created() { |
254 | 257 | this.getSuperFieldList(); |
255 | 258 | }, |
259 | + mounted() { | |
260 | + if(this.firstLoad == 0) { | |
261 | + this.firstLoad = 1; | |
262 | + return; | |
263 | + } | |
264 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
265 | + let timeSearch=setInterval(()=>{ | |
266 | + let eleSearch= document.getElementById("search"); | |
267 | + if (eleSearch!=null){ | |
268 | + //调用成功,清除定时器 | |
269 | + clearInterval(timeSearch) | |
270 | + eleSearch.click(); | |
271 | + } | |
272 | + },200) | |
273 | + }, | |
256 | 274 | computed: { |
257 | 275 | importExcelUrl: function () { |
258 | 276 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue
... | ... | @@ -106,6 +106,8 @@ |
106 | 106 | @change="handleImportExcel"> |
107 | 107 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
108 | 108 | </a-upload> |
109 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentHeaderHistory:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
110 | + | |
109 | 111 | </div> |
110 | 112 | |
111 | 113 | <!-- table区域-begin --> |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
... | ... | @@ -103,7 +103,7 @@ |
103 | 103 | </template> |
104 | 104 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
105 | 105 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
106 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
106 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
107 | 107 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
108 | 108 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
109 | 109 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -128,6 +128,8 @@ |
128 | 128 | <!-- <!– 高级查询区域 –>--> |
129 | 129 | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"--> |
130 | 130 | <!-- @handleSuperQuery="handleSuperQuery"></j-super-query>--> |
131 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
132 | + | |
131 | 133 | </div> |
132 | 134 | |
133 | 135 | <!-- table区域-begin --> |
... | ... | @@ -292,6 +294,7 @@ export default { |
292 | 294 | username: '', |
293 | 295 | flowStatus: '', |
294 | 296 | flowOff:'', |
297 | + firstLoad:0, | |
295 | 298 | // 表头 |
296 | 299 | columns: [ |
297 | 300 | { |
... | ... | @@ -429,6 +432,21 @@ export default { |
429 | 432 | this.username = store.getters.userInfo.username |
430 | 433 | this.getDocumentAduitFlowStaus(); |
431 | 434 | }, |
435 | + mounted() { | |
436 | + if(this.firstLoad == 0) { | |
437 | + this.firstLoad = 1; | |
438 | + return; | |
439 | + } | |
440 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
441 | + let timeSearch=setInterval(()=>{ | |
442 | + let eleSearch= document.getElementById("search"); | |
443 | + if (eleSearch!=null){ | |
444 | + //调用成功,清除定时器 | |
445 | + clearInterval(timeSearch) | |
446 | + eleSearch.click(); | |
447 | + } | |
448 | + },200) | |
449 | + }, | |
432 | 450 | computed: { |
433 | 451 | importExcelUrl: function () { |
434 | 452 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
... | ... | @@ -12,22 +12,34 @@ |
12 | 12 | <!-- 操作按钮区域 --> |
13 | 13 | <div class="table-operator"> |
14 | 14 | <a-button v-has="'cycleCountHeader:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
15 | - <a-button v-has="'cycleCountHeader:export'" type="primary" icon="download" @click="handleExportXls('盘点主表')">导出</a-button> | |
16 | - <a-upload v-has="'cycleCountHeader:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
15 | + <a-button v-has="'cycleCountHeader:export'" type="primary" icon="download" @click="handleExportXls('盘点主表')"> | |
16 | + 导出 | |
17 | + </a-button> | |
18 | + <a-upload v-has="'cycleCountHeader:import'" name="file" :showUploadList="false" :multiple="false" | |
19 | + :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> | |
17 | 20 | <a-button type="primary" icon="import">导入</a-button> |
18 | 21 | </a-upload> |
19 | 22 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
20 | 23 | <a-menu slot="overlay"> |
21 | - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> | |
24 | + <a-menu-item key="1" @click="batchDel"> | |
25 | + <a-icon type="delete"/> | |
26 | + 删除 | |
27 | + </a-menu-item> | |
22 | 28 | </a-menu> |
23 | - <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> | |
29 | + <a-button style="margin-left: 8px"> 批量操作 | |
30 | + <a-icon type="down"/> | |
31 | + </a-button> | |
24 | 32 | </a-dropdown> |
33 | + | |
34 | + <j-super-query :fieldList="superFieldList" v-has="'cycleCountHeader:superQuery'" | |
35 | + @handleSuperQuery="handleSuperQuery"/> | |
25 | 36 | </div> |
26 | 37 | |
27 | 38 | <!-- table区域-begin --> |
28 | 39 | <div> |
29 | 40 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
30 | - <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
41 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a | |
42 | + style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
31 | 43 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
32 | 44 | </div> |
33 | 45 | |
... | ... | @@ -74,7 +86,8 @@ |
74 | 86 | </template> |
75 | 87 | <template slot="imgSlot" slot-scope="text"> |
76 | 88 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> |
77 | - <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
89 | + <img v-else :src="getImgView(text)" height="25px" alt="" | |
90 | + style="max-width:80px;font-size: 12px;font-style: italic;"/> | |
78 | 91 | </template> |
79 | 92 | <template slot="fileSlot" slot-scope="text"> |
80 | 93 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
... | ... | @@ -89,10 +102,11 @@ |
89 | 102 | </a-button> |
90 | 103 | </template> |
91 | 104 | <span slot="action" slot-scope="text, record"> |
92 | - <j-select-multi-cycle-count v-if="record.statusCyc!=100" :query-config="selectUserQueryConfig" :test-config="record.id" :header-code="record.code"/> | |
93 | - <a-divider type="vertical" v-if="record.statusCyc!=100" /> | |
105 | + <j-select-multi-cycle-count v-if="record.statusCyc!=100" :query-config="selectUserQueryConfig" | |
106 | + :test-config="record.id" :header-code="record.code"/> | |
107 | + <a-divider type="vertical" v-if="record.statusCyc!=100"/> | |
94 | 108 | <a-dropdown> |
95 | - <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> | |
109 | + <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> | |
96 | 110 | <a-menu slot="overlay"> |
97 | 111 | <a-menu-item> |
98 | 112 | <a v-has="'cycleCountHeader:edit'" @click="handleEdit(record)">编辑</a> |
... | ... | @@ -101,7 +115,8 @@ |
101 | 115 | <a @click="handleDetail(record)">详情</a> |
102 | 116 | </a-menu-item> |
103 | 117 | <a-menu-item> |
104 | - <a-popconfirm v-has="'cycleCountHeader:delete'" title="确定删除吗?" @confirm="() => handleDelete(record.id)"> | |
118 | + <a-popconfirm v-has="'cycleCountHeader:delete'" title="确定删除吗?" | |
119 | + @confirm="() => handleDelete(record.id)"> | |
105 | 120 | <a>删除</a> |
106 | 121 | </a-popconfirm> |
107 | 122 | </a-menu-item> |
... | ... | @@ -118,206 +133,206 @@ |
118 | 133 | |
119 | 134 | <script> |
120 | 135 | |
121 | - import '@/assets/less/TableExpand.less' | |
122 | - import { mixinDevice } from '@/utils/mixin' | |
123 | - import { JeecgListMixin } from '@/mixins/JeecgListMixin' | |
124 | - import {getCompanyList} from '@/api/api' | |
125 | - import {getCountTypeList} from '@/api/api' | |
126 | - import CycleCountHeaderModal from './modules/CycleCountHeaderModal' | |
127 | - import CycleCountDetailList from "./CycleCountDetailList"; | |
136 | +import '@/assets/less/TableExpand.less' | |
137 | +import {mixinDevice} from '@/utils/mixin' | |
138 | +import {JeecgListMixin} from '@/mixins/JeecgListMixin' | |
139 | +import {getCompanyList} from '@/api/api' | |
140 | +import {getCountTypeList} from '@/api/api' | |
141 | +import CycleCountHeaderModal from './modules/CycleCountHeaderModal' | |
142 | +import CycleCountDetailList from "./CycleCountDetailList"; | |
128 | 143 | |
129 | - export default { | |
130 | - name: 'CycleCountHeaderList', | |
131 | - mixins:[JeecgListMixin, mixinDevice], | |
132 | - components: { | |
133 | - CycleCountHeaderModal, | |
134 | - CycleCountDetailList, | |
135 | - }, | |
136 | - data () { | |
137 | - return { | |
138 | - // 选择用户查询条件配置 | |
139 | - selectUserQueryConfig: [ | |
140 | - {key: 'locationCode', label: '库位'}, | |
141 | - ], | |
142 | - description: '盘点主表管理页面', | |
143 | - companyList: [], | |
144 | - CountTypeList:[], | |
145 | - // 表头 | |
146 | - columns: [ | |
147 | - { | |
148 | - title: 'ID', | |
149 | - dataIndex: '', | |
150 | - key:'rowIndex', | |
151 | - width:60, | |
152 | - align:"center", | |
153 | - customRender:function (t,r,index) { | |
154 | - return parseInt(index)+1; | |
155 | - } | |
156 | - }, | |
157 | - { | |
158 | - title:'盘点单编码', | |
159 | - align:"center", | |
160 | - dataIndex: 'code' | |
161 | - }, | |
162 | - { | |
163 | - title:'货主编码', | |
164 | - align: "center", | |
165 | - dataIndex: 'companyCode', | |
166 | - key: 'companyCode', | |
167 | - scopedSlots: {customRender: 'companyCode'} | |
168 | - }, | |
169 | - { | |
170 | - title:'总货位数', | |
171 | - align:"center", | |
172 | - dataIndex: 'totalLocs' | |
173 | - }, | |
174 | - { | |
175 | - title:'总物料数', | |
176 | - align:"center", | |
177 | - dataIndex: 'totalItems' | |
178 | - }, | |
179 | - { | |
180 | - title:'盘点类型', | |
181 | - align:"center", | |
182 | - dataIndex: 'countType', | |
183 | - key: 'countType', | |
184 | - scopedSlots: {customRender: 'countType'} | |
185 | - }, | |
186 | - { | |
187 | - title:'盘点主单状态', | |
188 | - align:"center", | |
189 | - dataIndex: 'statusCyc_dictText' | |
190 | - }, | |
191 | - { | |
192 | - title:'指定盘点人员', | |
193 | - align:"center", | |
194 | - dataIndex: 'stocktakingAs' | |
195 | - }, | |
196 | - { | |
197 | - title:'实际盘点人员', | |
198 | - align:"center", | |
199 | - dataIndex: 'stocktakingAc' | |
200 | - }, | |
201 | - { | |
202 | - title:'是否有效', | |
203 | - align:"center", | |
204 | - dataIndex: 'enable_dictText' | |
205 | - }, | |
206 | - // { | |
207 | - // title:'回传时间', | |
208 | - // align:"center", | |
209 | - // dataIndex: 'uploadTime' | |
210 | - // }, | |
211 | - // { | |
212 | - // title:'回传状态', | |
213 | - // align:"center", | |
214 | - // dataIndex: 'uploadStatusString' | |
215 | - // }, | |
216 | - // { | |
217 | - // title:'关闭人', | |
218 | - // align:"center", | |
219 | - // dataIndex: 'closedBy' | |
220 | - // }, | |
221 | - { | |
222 | - title:'备注', | |
223 | - align:"center", | |
224 | - dataIndex: 'remark' | |
225 | - }, | |
226 | - { | |
227 | - title: '操作', | |
228 | - dataIndex: 'action', | |
229 | - align:"center", | |
230 | - // fixed:"right", | |
231 | - width:147, | |
232 | - scopedSlots: { customRender: 'action' } | |
144 | +export default { | |
145 | + name: 'CycleCountHeaderList', | |
146 | + mixins: [JeecgListMixin, mixinDevice], | |
147 | + components: { | |
148 | + CycleCountHeaderModal, | |
149 | + CycleCountDetailList, | |
150 | + }, | |
151 | + data() { | |
152 | + return { | |
153 | + // 选择用户查询条件配置 | |
154 | + selectUserQueryConfig: [ | |
155 | + {key: 'locationCode', label: '库位'}, | |
156 | + ], | |
157 | + description: '盘点主表管理页面', | |
158 | + companyList: [], | |
159 | + CountTypeList: [], | |
160 | + // 表头 | |
161 | + columns: [ | |
162 | + { | |
163 | + title: 'ID', | |
164 | + dataIndex: '', | |
165 | + key: 'rowIndex', | |
166 | + width: 60, | |
167 | + align: "center", | |
168 | + customRender: function (t, r, index) { | |
169 | + return parseInt(index) + 1; | |
233 | 170 | } |
234 | - ], | |
235 | - url: { | |
236 | - list: "/cycleCountHeader/cycleCountHeader/list", | |
237 | - delete: "/cycleCountHeader/cycleCountHeader/delete", | |
238 | - deleteBatch: "/cycleCountHeader/cycleCountHeader/deleteBatch", | |
239 | - exportXlsUrl: "/cycleCountHeader/cycleCountHeader/exportXls", | |
240 | - importExcelUrl: "cycleCountHeader/cycleCountHeader/importExcel", | |
241 | - | |
242 | 171 | }, |
243 | - dictOptions:{ | |
244 | - status: [], | |
172 | + { | |
173 | + title: '盘点单编码', | |
174 | + align: "center", | |
175 | + dataIndex: 'code' | |
245 | 176 | }, |
246 | - superFieldList:[], | |
247 | - } | |
248 | - }, | |
249 | - created() { | |
177 | + { | |
178 | + title: '货主编码', | |
179 | + align: "center", | |
180 | + dataIndex: 'companyCode', | |
181 | + key: 'companyCode', | |
182 | + scopedSlots: {customRender: 'companyCode'} | |
183 | + }, | |
184 | + { | |
185 | + title: '总货位数', | |
186 | + align: "center", | |
187 | + dataIndex: 'totalLocs' | |
188 | + }, | |
189 | + { | |
190 | + title: '总物料数', | |
191 | + align: "center", | |
192 | + dataIndex: 'totalItems' | |
193 | + }, | |
194 | + { | |
195 | + title: '盘点类型', | |
196 | + align: "center", | |
197 | + dataIndex: 'countType', | |
198 | + key: 'countType', | |
199 | + scopedSlots: {customRender: 'countType'} | |
200 | + }, | |
201 | + { | |
202 | + title: '盘点主单状态', | |
203 | + align: "center", | |
204 | + dataIndex: 'statusCyc_dictText' | |
205 | + }, | |
206 | + { | |
207 | + title: '指定盘点人员', | |
208 | + align: "center", | |
209 | + dataIndex: 'stocktakingAs' | |
210 | + }, | |
211 | + { | |
212 | + title: '实际盘点人员', | |
213 | + align: "center", | |
214 | + dataIndex: 'stocktakingAc' | |
215 | + }, | |
216 | + { | |
217 | + title: '是否有效', | |
218 | + align: "center", | |
219 | + dataIndex: 'enable_dictText' | |
220 | + }, | |
221 | + // { | |
222 | + // title:'回传时间', | |
223 | + // align:"center", | |
224 | + // dataIndex: 'uploadTime' | |
225 | + // }, | |
226 | + // { | |
227 | + // title:'回传状态', | |
228 | + // align:"center", | |
229 | + // dataIndex: 'uploadStatusString' | |
230 | + // }, | |
231 | + // { | |
232 | + // title:'关闭人', | |
233 | + // align:"center", | |
234 | + // dataIndex: 'closedBy' | |
235 | + // }, | |
236 | + { | |
237 | + title: '备注', | |
238 | + align: "center", | |
239 | + dataIndex: 'remark' | |
240 | + }, | |
241 | + { | |
242 | + title: '操作', | |
243 | + dataIndex: 'action', | |
244 | + align: "center", | |
245 | + // fixed:"right", | |
246 | + width: 147, | |
247 | + scopedSlots: {customRender: 'action'} | |
248 | + } | |
249 | + ], | |
250 | + url: { | |
251 | + list: "/cycleCountHeader/cycleCountHeader/list", | |
252 | + delete: "/cycleCountHeader/cycleCountHeader/delete", | |
253 | + deleteBatch: "/cycleCountHeader/cycleCountHeader/deleteBatch", | |
254 | + exportXlsUrl: "/cycleCountHeader/cycleCountHeader/exportXls", | |
255 | + importExcelUrl: "cycleCountHeader/cycleCountHeader/importExcel", | |
256 | + | |
257 | + }, | |
258 | + dictOptions: { | |
259 | + status: [], | |
260 | + }, | |
261 | + superFieldList: [], | |
262 | + } | |
263 | + }, | |
264 | + created() { | |
250 | 265 | this.getSuperFieldList(); |
251 | 266 | this.loadFrom(); |
267 | + }, | |
268 | + computed: { | |
269 | + importExcelUrl: function () { | |
270 | + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
252 | 271 | }, |
253 | - computed: { | |
254 | - importExcelUrl: function(){ | |
255 | - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | |
256 | - }, | |
272 | + }, | |
273 | + methods: { | |
274 | + initDictConfig() { | |
275 | + }, | |
276 | + getSuperFieldList() { | |
277 | + let fieldList = []; | |
278 | + fieldList.push({type: 'string', value: 'code', text: '盘点主表编号', dictCode: ''}) | |
279 | + fieldList.push({type: 'string', value: 'companyCode', text: '货主编码', dictCode: ''}) | |
280 | + fieldList.push({type: 'string', value: 'countType', text: '盘点类型', dictCode: ''}) | |
281 | + fieldList.push({type: 'int', value: 'statusCyc', text: '盘点状态', dictCode: 'cyclecount_status'}) | |
282 | + fieldList.push({type: 'string', value: 'remark', text: '备注', dictCode: ''}) | |
283 | + fieldList.push({type: 'int', value: 'totalLocs', text: '总货位数', dictCode: ''}) | |
284 | + fieldList.push({type: 'int', value: 'totalItems', text: '总物料数', dictCode: ''}) | |
285 | + fieldList.push({type: 'string', value: 'stocktakingAs', text: '指定盘点人员', dictCode: ''}) | |
286 | + fieldList.push({type: 'string', value: 'stocktakingAc', text: '实际盘点人员', dictCode: ''}) | |
287 | + fieldList.push({type: 'int', value: 'enable', text: '是否有效', dictCode: 'valid_status'}) | |
288 | + fieldList.push({type: 'datetime', value: 'uploadTime', text: '回传时间'}) | |
289 | + fieldList.push({type: 'int', value: 'uploadStatus', text: '回传状态', dictCode: 'valid_status'}) | |
290 | + fieldList.push({type: 'string', value: 'closedBy', text: '关闭人', dictCode: ''}) | |
291 | + this.superFieldList = fieldList | |
292 | + }, | |
293 | + loadFrom() { | |
294 | + getCompanyList().then((res) => { | |
295 | + if (res.success) { | |
296 | + this.companyList = res.result | |
297 | + } | |
298 | + }); | |
299 | + getCountTypeList().then((res) => { | |
300 | + if (res.success) { | |
301 | + this.CountTypeList = res.result | |
302 | + } | |
303 | + }); | |
257 | 304 | }, |
258 | - methods: { | |
259 | - initDictConfig(){ | |
260 | - }, | |
261 | - getSuperFieldList(){ | |
262 | - let fieldList=[]; | |
263 | - fieldList.push({type:'string',value:'code',text:'盘点主表编号',dictCode:''}) | |
264 | - fieldList.push({type:'string',value:'companyCode',text:'货主编码',dictCode:''}) | |
265 | - fieldList.push({type:'string',value:'countType',text:'盘点类型',dictCode:''}) | |
266 | - fieldList.push({type:'int',value:'statusCyc',text:'盘点状态',dictCode:'cyclecount_status'}) | |
267 | - fieldList.push({type:'string',value:'remark',text:'备注',dictCode:''}) | |
268 | - fieldList.push({type:'int',value:'totalLocs',text:'总货位数',dictCode:''}) | |
269 | - fieldList.push({type:'int',value:'totalItems',text:'总物料数',dictCode:''}) | |
270 | - fieldList.push({type:'string',value:'stocktakingAs',text:'指定盘点人员',dictCode:''}) | |
271 | - fieldList.push({type:'string',value:'stocktakingAc',text:'实际盘点人员',dictCode:''}) | |
272 | - fieldList.push({type:'int',value:'enable',text:'是否有效',dictCode:'valid_status'}) | |
273 | - fieldList.push({type:'datetime',value:'uploadTime',text:'回传时间'}) | |
274 | - fieldList.push({type:'int',value:'uploadStatus',text:'回传状态',dictCode:'valid_status'}) | |
275 | - fieldList.push({type:'string',value:'closedBy',text:'关闭人',dictCode:''}) | |
276 | - this.superFieldList = fieldList | |
277 | - }, | |
278 | - loadFrom() { | |
279 | - getCompanyList().then((res) => { | |
280 | - if (res.success) { | |
281 | - this.companyList = res.result | |
282 | - } | |
283 | - }); | |
284 | - getCountTypeList().then((res) => { | |
285 | - if (res.success) { | |
286 | - this.CountTypeList = res.result | |
287 | - } | |
288 | - }); | |
289 | - }, | |
290 | 305 | |
291 | - loadDataaa(){ | |
292 | - var _this = this; | |
293 | - _this.testaa(); | |
294 | - }, | |
295 | - solutionCompany(value) { | |
296 | - var actions = [] | |
297 | - Object.keys(this.companyList).some((key) => { | |
298 | - if (this.companyList[key].code == ('' + value)) { | |
299 | - actions.push(this.companyList[key].name) | |
300 | - return true | |
301 | - } | |
302 | - }) | |
303 | - return actions.join('') | |
304 | - }, | |
306 | + loadDataaa() { | |
307 | + var _this = this; | |
308 | + _this.testaa(); | |
309 | + }, | |
310 | + solutionCompany(value) { | |
311 | + var actions = [] | |
312 | + Object.keys(this.companyList).some((key) => { | |
313 | + if (this.companyList[key].code == ('' + value)) { | |
314 | + actions.push(this.companyList[key].name) | |
315 | + return true | |
316 | + } | |
317 | + }) | |
318 | + return actions.join('') | |
319 | + }, | |
305 | 320 | |
306 | - solutionCountType(value) { | |
307 | - var actions = [] | |
308 | - Object.keys(this.CountTypeList).some((key) => { | |
309 | - if (this.CountTypeList[key].code == ('' + value)) { | |
310 | - actions.push(this.CountTypeList[key].name) | |
311 | - return true | |
312 | - } | |
313 | - }) | |
314 | - return actions.join('') | |
315 | - }, | |
321 | + solutionCountType(value) { | |
322 | + var actions = [] | |
323 | + Object.keys(this.CountTypeList).some((key) => { | |
324 | + if (this.CountTypeList[key].code == ('' + value)) { | |
325 | + actions.push(this.CountTypeList[key].name) | |
326 | + return true | |
327 | + } | |
328 | + }) | |
329 | + return actions.join('') | |
330 | + }, | |
316 | 331 | |
317 | 332 | |
318 | - } | |
319 | 333 | } |
334 | +} | |
320 | 335 | </script> |
321 | 336 | <style scoped> |
322 | - @import '~@assets/less/common.less'; | |
337 | +@import '~@assets/less/common.less'; | |
323 | 338 | </style> |
324 | 339 | \ No newline at end of file |
... | ... |
ant-design-vue-jeecg/src/views/system/task/AgvTaskList.vue
... | ... | @@ -36,7 +36,7 @@ |
36 | 36 | </a-col> |
37 | 37 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
38 | 38 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
39 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
39 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
40 | 40 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
41 | 41 | </span> |
42 | 42 | </a-col> |
... | ... | @@ -53,6 +53,9 @@ |
53 | 53 | <a-upload v-has="'agvTask:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" |
54 | 54 | :action="importExcelUrl" @change="handleImportExcel"> |
55 | 55 | <a-button type="primary" icon="import">导入</a-button> |
56 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" | |
57 | + @handleSuperQuery="handleSuperQuery"/> | |
58 | + | |
56 | 59 | </a-upload> |
57 | 60 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> |
58 | 61 | <!-- <a-menu slot="overlay">--> |
... | ... | @@ -92,7 +95,8 @@ |
92 | 95 | <span slot="action" slot-scope="text, record"> |
93 | 96 | <a v-if="record.status == 1" v-has="'agvTask:executeTask'" @click="executeAgvTask(record)"> |
94 | 97 | <a-button type="primary">执行</a-button><a-divider type="vertical"/></a> |
95 | - <a-popconfirm v-if="record.status < 100" title="确定删除吗?" v-has="'agvTask:delete'" @confirm="() => handleDelete(record.id)"> | |
98 | + <a-popconfirm v-if="record.status < 100" title="确定删除吗?" v-has="'agvTask:delete'" | |
99 | + @confirm="() => handleDelete(record.id)"> | |
96 | 100 | <a><a-button type="danger">取消</a-button><a-divider type="vertical"/></a> |
97 | 101 | </a-popconfirm> |
98 | 102 | <a-dropdown> |
... | ... | @@ -134,6 +138,7 @@ export default { |
134 | 138 | data() { |
135 | 139 | return { |
136 | 140 | description: 'AGV任务管理页面', |
141 | + firstLoad:0, | |
137 | 142 | isorter: { |
138 | 143 | column: 'status', |
139 | 144 | order: 'asc', |
... | ... | @@ -226,6 +231,21 @@ export default { |
226 | 231 | created() { |
227 | 232 | this.getSuperFieldList(); |
228 | 233 | }, |
234 | + mounted() { | |
235 | + if(this.firstLoad == 0) { | |
236 | + this.firstLoad = 1; | |
237 | + return; | |
238 | + } | |
239 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
240 | + let timeSearch=setInterval(()=>{ | |
241 | + let eleSearch= document.getElementById("search"); | |
242 | + if (eleSearch!=null){ | |
243 | + //调用成功,清除定时器 | |
244 | + clearInterval(timeSearch) | |
245 | + eleSearch.click(); | |
246 | + } | |
247 | + },200) | |
248 | + }, | |
229 | 249 | computed: { |
230 | 250 | importExcelUrl: function () { |
231 | 251 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/task/AllTaskHeaderList.vue
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | </template> |
69 | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | 70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
71 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
71 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
72 | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -87,6 +87,8 @@ |
87 | 87 | <!-- <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button>--> |
88 | 88 | <!-- <a-button @click="openDemo()" type="primary">弹出demo</a-button>--> |
89 | 89 | <!-- </div>--> |
90 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
91 | + <a-button v-has="'taskHeader:export'" type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button> | |
90 | 92 | |
91 | 93 | <!-- table区域-begin --> |
92 | 94 | <div> |
... | ... | @@ -213,6 +215,7 @@ export default { |
213 | 215 | description: '任务表管理页面', |
214 | 216 | zoneList: [], |
215 | 217 | zoneOptions:[], |
218 | + firstLoad:0, | |
216 | 219 | isorter: { |
217 | 220 | column: 'status', |
218 | 221 | order: 'asc' |
... | ... | @@ -353,6 +356,21 @@ export default { |
353 | 356 | this.getSuperFieldList(); |
354 | 357 | this.loadFrom(); |
355 | 358 | }, |
359 | + mounted() { | |
360 | + if(this.firstLoad == 0) { | |
361 | + this.firstLoad = 1; | |
362 | + return; | |
363 | + } | |
364 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
365 | + let timeSearch=setInterval(()=>{ | |
366 | + let eleSearch= document.getElementById("search"); | |
367 | + if (eleSearch!=null){ | |
368 | + //调用成功,清除定时器 | |
369 | + clearInterval(timeSearch) | |
370 | + eleSearch.click(); | |
371 | + } | |
372 | + },200) | |
373 | + }, | |
356 | 374 | computed: { |
357 | 375 | importExcelUrl: function () { |
358 | 376 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 | </template> |
70 | 70 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
71 | 71 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
72 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
72 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
73 | 73 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
74 | 74 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
75 | 75 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -91,6 +91,8 @@ |
91 | 91 | <!-- </a-upload>--> |
92 | 92 | <!-- <!– 高级查询区域 –>--> |
93 | 93 | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>--> |
94 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
95 | + <a-button v-has="'taskHeader:export'" type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button> | |
94 | 96 | </div> |
95 | 97 | |
96 | 98 | <!-- table区域-begin --> |
... | ... | @@ -213,6 +215,7 @@ export default { |
213 | 215 | description: '任务表管理页面', |
214 | 216 | zoneList: [], |
215 | 217 | zoneOptions:[], |
218 | + firstLoad:0, | |
216 | 219 | isorter: { |
217 | 220 | column: 'status', |
218 | 221 | order: 'asc', |
... | ... | @@ -352,6 +355,21 @@ export default { |
352 | 355 | this.getSuperFieldList(); |
353 | 356 | this.loadFrom(); |
354 | 357 | }, |
358 | + mounted() { | |
359 | + if(this.firstLoad == 0) { | |
360 | + this.firstLoad = 1; | |
361 | + return; | |
362 | + } | |
363 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
364 | + let timeSearch=setInterval(()=>{ | |
365 | + let eleSearch= document.getElementById("search"); | |
366 | + if (eleSearch!=null){ | |
367 | + //调用成功,清除定时器 | |
368 | + clearInterval(timeSearch) | |
369 | + eleSearch.click(); | |
370 | + } | |
371 | + },200) | |
372 | + }, | |
355 | 373 | computed: { |
356 | 374 | importExcelUrl: function () { |
357 | 375 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | </template> |
69 | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | 70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
71 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
71 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
72 | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -88,6 +88,8 @@ |
88 | 88 | <a-button v-has="'taskHeader:quickReceipt'" @click="quickReceipt()" type="primary">快速入库</a-button> |
89 | 89 | <a-button v-has="'taskHeader:callReceiptBox'" @click="callReceiptBox()" type="primary" >呼叫入库有货托盘</a-button> |
90 | 90 | <a-button v-has="'taskHeader:callReceiptBox'" @click="callReceiptEmptyBox()" type="primary" >呼叫入库空托盘</a-button> |
91 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
92 | + <a-button v-has="'taskHeader:export'" type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button> | |
91 | 93 | </div> |
92 | 94 | |
93 | 95 | <!-- table区域-begin --> |
... | ... | @@ -222,6 +224,7 @@ export default { |
222 | 224 | description: '任务表管理页面', |
223 | 225 | zoneList: [], |
224 | 226 | zoneOptions:[], |
227 | + firstLoad:0, | |
225 | 228 | isorter: { |
226 | 229 | column: 'status', |
227 | 230 | order: 'asc' |
... | ... | @@ -362,6 +365,21 @@ export default { |
362 | 365 | this.getSuperFieldList(); |
363 | 366 | this.loadFrom(); |
364 | 367 | }, |
368 | + mounted() { | |
369 | + if(this.firstLoad == 0) { | |
370 | + this.firstLoad = 1; | |
371 | + return; | |
372 | + } | |
373 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
374 | + let timeSearch=setInterval(()=>{ | |
375 | + let eleSearch= document.getElementById("search"); | |
376 | + if (eleSearch!=null){ | |
377 | + //调用成功,清除定时器 | |
378 | + clearInterval(timeSearch) | |
379 | + eleSearch.click(); | |
380 | + } | |
381 | + },200) | |
382 | + }, | |
365 | 383 | computed: { |
366 | 384 | importExcelUrl: function () { |
367 | 385 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | </template> |
69 | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | 70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
71 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
71 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
72 | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -86,6 +86,8 @@ |
86 | 86 | <a-button @click="createEmptyOut()" v-has="'taskHeader:emptyOut'" type="primary">空托出库</a-button> |
87 | 87 | <a-button @click="createManyEmptyOut()" v-has="'taskHeader:manyEmptyOut'" type="primary">空托组出库</a-button> |
88 | 88 | <a-button v-has="'taskHeader:callShipmentBox'" @click="callShipmentBox()" type="primary" >呼叫出库托盘</a-button> |
89 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
90 | + <a-button v-has="'taskHeader:export'" type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button> | |
89 | 91 | </div> |
90 | 92 | |
91 | 93 | <!-- table区域-begin --> |
... | ... | @@ -162,6 +164,11 @@ |
162 | 164 | <a-divider type="vertical"/></a> |
163 | 165 | <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> |
164 | 166 | <a-button type="danger">取消</a-button> |
167 | + <a-divider type="vertical"/> | |
168 | + </a-popconfirm> | |
169 | + | |
170 | + <a-popconfirm v-if="record.status < 100" v-has="'taskHeader:switchTask'" title="确定切换任务吗?" @confirm="() => switchTask(record)"> | |
171 | + <a-button type="danger">切换任务</a-button> | |
165 | 172 | </a-popconfirm> |
166 | 173 | </span> |
167 | 174 | |
... | ... | @@ -192,7 +199,7 @@ import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelec |
192 | 199 | import '@/assets/less/TableExpand.less' |
193 | 200 | import {completeTaskByWMS, cancelTask} from '@/api/api' |
194 | 201 | import {execute} from '@/api/api' |
195 | -import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn} from '@/api/api' | |
202 | +import {getZoneList, handleEmptyOut, handlePickupError, handleDoubleIn, switchTask} from '@/api/api' | |
196 | 203 | import EmptyOutTaskModal from './modules/EmptyOutTaskModal' |
197 | 204 | import ManyEmptyOutTaskModal from "./modules/ManyEmptyOutTaskModal"; |
198 | 205 | import CallShipmentBoxModal from "@views/system/task/modules/CallShipmentBoxModal"; |
... | ... | @@ -212,6 +219,7 @@ export default { |
212 | 219 | selectIndex: null, |
213 | 220 | description: '任务表管理页面', |
214 | 221 | zoneList: [], |
222 | + firstLoad:0, | |
215 | 223 | isorter: { |
216 | 224 | column: 'status', |
217 | 225 | order: 'asc', |
... | ... | @@ -352,6 +360,21 @@ export default { |
352 | 360 | this.getSuperFieldList(); |
353 | 361 | this.loadFrom(); |
354 | 362 | }, |
363 | + mounted() { | |
364 | + if(this.firstLoad == 0) { | |
365 | + this.firstLoad = 1; | |
366 | + return; | |
367 | + } | |
368 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
369 | + let timeSearch=setInterval(()=>{ | |
370 | + let eleSearch= document.getElementById("search"); | |
371 | + if (eleSearch!=null){ | |
372 | + //调用成功,清除定时器 | |
373 | + clearInterval(timeSearch) | |
374 | + eleSearch.click(); | |
375 | + } | |
376 | + },200) | |
377 | + }, | |
355 | 378 | computed: { |
356 | 379 | importExcelUrl: function () { |
357 | 380 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... | @@ -457,6 +480,19 @@ export default { |
457 | 480 | this.loading = false; |
458 | 481 | }) |
459 | 482 | }, |
483 | + switchTask(record) { | |
484 | + this.loading = true; | |
485 | + this.model = Object.assign({}, record); | |
486 | + switchTask(this.model.id).then((res) => { | |
487 | + this.loading = false; | |
488 | + if (res.success) { | |
489 | + this.$message.success(res.message); | |
490 | + } else { | |
491 | + this.$message.error(res.message); | |
492 | + } | |
493 | + this.searchQuery(); | |
494 | + }); | |
495 | + }, | |
460 | 496 | cancelTask(record) { |
461 | 497 | this.loading = true; |
462 | 498 | this.model = Object.assign({}, record); |
... | ... |
ant-design-vue-jeecg/src/views/system/task/TaskHeaderHistoryList.vue
ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | </template> |
69 | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | 70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
71 | - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | |
71 | + <a-button id="search" type="primary" @click="searchQuery" icon="search">查询</a-button> | |
72 | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
... | ... | @@ -85,7 +85,8 @@ |
85 | 85 | <div class="table-operator"> |
86 | 86 | <a-button @click="createTransfer()" v-has="'taskHeader:transfer'" type="primary">移库任务</a-button> |
87 | 87 | <a-button @click="createOverStation()" v-has="'taskHeader:overStation'" type="primary">跨站任务</a-button> |
88 | - <!-- <a-button type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button>--> | |
88 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | |
89 | + <a-button v-has="'taskHeader:export'" type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button> | |
89 | 90 | <!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> |
90 | 91 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
91 | 92 | <!-- </a-upload>--> |
... | ... | @@ -210,6 +211,7 @@ export default { |
210 | 211 | description: '任务表管理页面', |
211 | 212 | zoneList: [], |
212 | 213 | zoneOptions:[], |
214 | + firstLoad:0, | |
213 | 215 | isorter: { |
214 | 216 | column: 'status', |
215 | 217 | order: 'asc', |
... | ... | @@ -353,6 +355,21 @@ export default { |
353 | 355 | this.getSuperFieldList(); |
354 | 356 | this.loadFrom(); |
355 | 357 | }, |
358 | + mounted() { | |
359 | + if(this.firstLoad == 0) { | |
360 | + this.firstLoad = 1; | |
361 | + return; | |
362 | + } | |
363 | + //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | |
364 | + let timeSearch=setInterval(()=>{ | |
365 | + let eleSearch= document.getElementById("search"); | |
366 | + if (eleSearch!=null){ | |
367 | + //调用成功,清除定时器 | |
368 | + clearInterval(timeSearch) | |
369 | + eleSearch.click(); | |
370 | + } | |
371 | + },200) | |
372 | + }, | |
356 | 373 | computed: { |
357 | 374 | importExcelUrl: function () { |
358 | 375 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
... | ... | @@ -153,7 +153,7 @@ public class ErpServiceImpl implements IErpService { |
153 | 153 | receiptDetail.setReceiptId(receiptHeader.getId()); |
154 | 154 | receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD); |
155 | 155 | receiptDetail.setQty(qty); |
156 | - Material material = materialService.getMaterialByCode(materialCode); | |
156 | + Material material = materialService.isMaterialExsit(materialCode); | |
157 | 157 | if (material == null) { |
158 | 158 | material = new Material(); |
159 | 159 | material.setCode(materialCode); |
... | ... | @@ -287,7 +287,7 @@ public class ErpServiceImpl implements IErpService { |
287 | 287 | shipmentDetail.setShipmentId(shipmentHeader.getId()); |
288 | 288 | shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); |
289 | 289 | shipmentDetail.setQty(qty); |
290 | - Material material = materialService.getMaterialByCode(materialCode); | |
290 | + Material material = materialService.isMaterialExsit(materialCode); | |
291 | 291 | if (material == null) { |
292 | 292 | throw new JeecgBootException("出库单下发, 没有找到物料信息" + materialCode); |
293 | 293 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/controller/WisController.java
... | ... | @@ -3,7 +3,8 @@ package org.jeecg.modules.wms.api.wms.controller; |
3 | 3 | import javax.annotation.Resource; |
4 | 4 | |
5 | 5 | import org.jeecg.common.api.vo.Result; |
6 | -import org.jeecg.common.aspect.annotation.AutoLog; | |
6 | +import org.jeecg.modules.wms.api.erp.entity.InventoryQueryParam; | |
7 | +import org.jeecg.modules.wms.api.erp.service.IErpService; | |
7 | 8 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; |
8 | 9 | import org.jeecg.modules.wms.api.wms.service.WmsService; |
9 | 10 | import org.jeecg.modules.wms.framework.controller.HuahengBaseController; |
... | ... | @@ -23,8 +24,9 @@ public class WisController extends HuahengBaseController { |
23 | 24 | |
24 | 25 | @Resource |
25 | 26 | private WmsService wmsService; |
27 | + @Resource | |
28 | + private IErpService erpService; | |
26 | 29 | |
27 | - @AutoLog(value = "下发WMS任务") | |
28 | 30 | @PostMapping("/sendWmsTask") |
29 | 31 | @ResponseBody |
30 | 32 | @ApiOperation("下发WMS任务") |
... | ... | @@ -39,4 +41,29 @@ public class WisController extends HuahengBaseController { |
39 | 41 | }); |
40 | 42 | return result; |
41 | 43 | } |
44 | + | |
45 | + @PostMapping("/cancelWmsTask") | |
46 | + @ResponseBody | |
47 | + @ApiOperation("取消WMS任务") | |
48 | + @ApiLogger(apiName = "取消WMS任务", from = "WMS") | |
49 | + public Result cancelWmsTask(@RequestBody String taskNo) { | |
50 | + Result result = handleMultiProcess("cancelWmsTask", new MultiProcessListener() { | |
51 | + @Override | |
52 | + public Result<?> doProcess() { | |
53 | + Result result = wmsService.cancelTaskByUpstreamTaskNo(taskNo); | |
54 | + return result; | |
55 | + } | |
56 | + }); | |
57 | + return result; | |
58 | + } | |
59 | + | |
60 | + @PostMapping("/searchInventory") | |
61 | + @ResponseBody | |
62 | + @ApiOperation("查询库存") | |
63 | + @ApiLogger(apiName = "查询库存", from = "WMS") | |
64 | + public Result searchInventory(@RequestBody InventoryQueryParam inventoryQueryParam) { | |
65 | + Result result = erpService.searchInventory(inventoryQueryParam); | |
66 | + return result; | |
67 | + } | |
68 | + | |
42 | 69 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java
... | ... | @@ -28,23 +28,33 @@ public interface WmsService { |
28 | 28 | Result createShipmentTask(WmsEntity wmsEntity); |
29 | 29 | |
30 | 30 | /** |
31 | - * 创建空托入库 | |
31 | + * 创建整出出库任务通过托盘 | |
32 | 32 | * @param wmsEntity |
33 | 33 | * @return |
34 | 34 | */ |
35 | - Result createEmptyIn(WmsEntity wmsEntity); | |
35 | + Result createShipmentTaskByContainer(WmsEntity wmsEntity); | |
36 | 36 | |
37 | 37 | /** |
38 | - * 创建空托出库 | |
38 | + * 创建出库任务通过托盘 | |
39 | 39 | * @param wmsEntity |
40 | 40 | * @return |
41 | 41 | */ |
42 | - Result createEmptyOut(WmsEntity wmsEntity); | |
42 | + Result createShipmentTaskByDetail(WmsEntity wmsEntity); | |
43 | 43 | |
44 | 44 | /** |
45 | - * 创建出库查看 | |
45 | + * 创建空托入库 | |
46 | 46 | * @param wmsEntity |
47 | 47 | * @return |
48 | 48 | */ |
49 | - Result createCheckOut(WmsEntity wmsEntity); | |
49 | + Result createEmptyIn(WmsEntity wmsEntity); | |
50 | + | |
51 | + /** | |
52 | + * 创建空托出库 | |
53 | + * @param wmsEntity | |
54 | + * @return | |
55 | + */ | |
56 | + Result createEmptyOut(WmsEntity wmsEntity); | |
57 | + | |
58 | + Result cancelTaskByUpstreamTaskNo(String taskNo); | |
59 | + | |
50 | 60 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java
1 | 1 | package org.jeecg.modules.wms.api.wms.service; |
2 | 2 | |
3 | +import java.math.BigDecimal; | |
3 | 4 | import java.util.ArrayList; |
4 | 5 | import java.util.List; |
5 | 6 | import java.util.stream.Collectors; |
... | ... | @@ -13,6 +14,10 @@ import org.jeecg.modules.wms.api.erp.service.IErpService; |
13 | 14 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; |
14 | 15 | import org.jeecg.modules.wms.api.wms.entity.WmsInventory; |
15 | 16 | import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; |
17 | +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; | |
18 | +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader; | |
19 | +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; | |
20 | +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService; | |
16 | 21 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; |
17 | 22 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; |
18 | 23 | import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; |
... | ... | @@ -30,12 +35,16 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; |
30 | 35 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; |
31 | 36 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; |
32 | 37 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; |
38 | +import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; | |
33 | 39 | import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; |
34 | 40 | import org.jeecg.utils.StringUtils; |
35 | 41 | import org.jeecg.utils.constant.QuantityConstant; |
36 | 42 | import org.springframework.stereotype.Service; |
37 | 43 | import org.springframework.transaction.annotation.Transactional; |
38 | 44 | |
45 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
46 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
47 | + | |
39 | 48 | import lombok.extern.slf4j.Slf4j; |
40 | 49 | |
41 | 50 | /** |
... | ... | @@ -71,6 +80,10 @@ public class WmsServiceImpl implements WmsService { |
71 | 80 | private IShipmentContainerHeaderService shipmentContainerHeaderService; |
72 | 81 | @Resource |
73 | 82 | private IShipmentContainerDetailService shipmentContainerDetailService; |
83 | + @Resource | |
84 | + private IInventoryDetailService inventoryDetailService; | |
85 | + @Resource | |
86 | + private IInventoryHeaderService inventoryHeaderService; | |
74 | 87 | |
75 | 88 | @Override |
76 | 89 | @Transactional(rollbackFor = Exception.class) |
... | ... | @@ -83,12 +96,21 @@ public class WmsServiceImpl implements WmsService { |
83 | 96 | result = wmsService.createReceiptTask(wmsEntity); |
84 | 97 | break; |
85 | 98 | case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: |
99 | + result = wmsService.createShipmentTaskByContainer(wmsEntity); // 指定托盘,整盘出库 | |
100 | +// result = wmsService.createShipmentTask(wmsEntity); // 不指定托盘出库,只指定物料和数量。适用于客户不管理每个托盘的库存 | |
101 | + break; | |
86 | 102 | case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: |
87 | - result = wmsService.createShipmentTask(wmsEntity); | |
103 | + result = wmsService.createShipmentTaskByDetail(wmsEntity); // 指定托盘出库 | |
104 | +// result = wmsService.createShipmentTask(wmsEntity); // 不指定托盘出库,只指定物料和数量。适用于客户不管理每个托盘的库存 | |
88 | 105 | break; |
89 | 106 | case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: |
90 | - result = wmsService.createReceiptTask(wmsEntity); | |
107 | + result = wmsService.createEmptyIn(wmsEntity); | |
108 | + break; | |
109 | + case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT: | |
110 | + result = wmsService.createEmptyOut(wmsEntity); | |
91 | 111 | break; |
112 | + default: | |
113 | + throw new JeecgBootException("WMS下发入库任务失败,任务类型不匹配"); | |
92 | 114 | } |
93 | 115 | return result; |
94 | 116 | } |
... | ... | @@ -166,6 +188,12 @@ public class WmsServiceImpl implements WmsService { |
166 | 188 | if (!result.isSuccess()) { |
167 | 189 | throw new JeecgBootException(result.getMessage()); |
168 | 190 | } |
191 | + TaskHeader taskHeader = taskHeaderService.getUnCompleteTaskByContainerCode(containerCode, warehouseCode); | |
192 | + if (taskHeader != null) { | |
193 | + if (!taskHeaderService.updateUpstreamTaskNoById(referCode, taskHeader.getId())) { | |
194 | + throw new JeecgBootException("WMS下发入库信息,更新入库任务失败"); | |
195 | + } | |
196 | + } | |
169 | 197 | return result; |
170 | 198 | } |
171 | 199 | |
... | ... | @@ -248,10 +276,94 @@ public class WmsServiceImpl implements WmsService { |
248 | 276 | |
249 | 277 | @Override |
250 | 278 | @Transactional(rollbackFor = Exception.class) |
279 | + public Result createShipmentTaskByContainer(WmsEntity wmsEntity) { | |
280 | + String warehouseCode = wmsEntity.getWarehouseCode(); | |
281 | + String remark = wmsEntity.getRemark(); | |
282 | + String toPort = wmsEntity.getToPort(); | |
283 | + String containerCode = wmsEntity.getContainerCode(); | |
284 | + String referCode = wmsEntity.getTaskNo(); | |
285 | + List<WmsInventory> wmsInventoryList = wmsEntity.getWmsInventoryList(); | |
286 | + if (wmsInventoryList == null) { | |
287 | + return Result.error("WMS下发出库任务失败,库存为空"); | |
288 | + } | |
289 | + if (StringUtils.isEmpty(containerCode)) { | |
290 | + return Result.error("WMS下发出库任务失败,没有找到托盘" + containerCode); | |
291 | + } | |
292 | + if (StringUtils.isEmpty(toPort)) { | |
293 | + return Result.error("WMS下发出库任务失败,没有找到出库口" + toPort); | |
294 | + } | |
295 | + | |
296 | + InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); | |
297 | + if (inventoryHeader == null) { | |
298 | + return Result.error("WMS下发出库任务失败, 没有找到托盘库存" + containerCode); | |
299 | + } | |
300 | + inventoryHeader.setToPortCode(toPort); | |
301 | + List<InventoryHeader> inventoryHeaderList = new ArrayList<>(); | |
302 | + inventoryHeaderList.add(inventoryHeader); | |
303 | + Result result = inventoryHeaderService.shipmentInventoryHeader(inventoryHeaderList, warehouseCode); | |
304 | + if (!result.isSuccess()) { | |
305 | + throw new JeecgBootException("WMS下发出库任务失败," + result.getMessage()); | |
306 | + } | |
307 | + TaskHeader taskHeader = taskHeaderService.getUnCompleteTaskByContainerCode(containerCode, warehouseCode); | |
308 | + if (taskHeader != null) { | |
309 | + if (!taskHeaderService.updateUpstreamTaskNoById(referCode, taskHeader.getId())) { | |
310 | + throw new JeecgBootException("WMS下发出库任务失败,更新上游任务号失败"); | |
311 | + } | |
312 | + } | |
313 | + return Result.ok("WMS下发出库任务成功"); | |
314 | + } | |
315 | + | |
316 | + @Override | |
317 | + public Result createShipmentTaskByDetail(WmsEntity wmsEntity) { | |
318 | + String warehouseCode = wmsEntity.getWarehouseCode(); | |
319 | + String remark = wmsEntity.getRemark(); | |
320 | + String toPort = wmsEntity.getToPort(); | |
321 | + String containerCode = wmsEntity.getContainerCode(); | |
322 | + String referCode = wmsEntity.getTaskNo(); | |
323 | + List<WmsInventory> wmsInventoryList = wmsEntity.getWmsInventoryList(); | |
324 | + if (wmsInventoryList == null) { | |
325 | + return Result.error("WMS下发出库任务失败,库存为空"); | |
326 | + } | |
327 | + if (StringUtils.isEmpty(containerCode)) { | |
328 | + return Result.error("WMS下发出库任务失败,没有找到托盘" + containerCode); | |
329 | + } | |
330 | + if (StringUtils.isEmpty(toPort)) { | |
331 | + return Result.error("WMS下发出库任务失败,没有找到出库口" + toPort); | |
332 | + } | |
333 | + | |
334 | + List<InventoryDetail> inventoryDetailList = new ArrayList<>(); | |
335 | + for (WmsInventory wmsInventory : wmsInventoryList) { | |
336 | + String materialCode = wmsInventory.getMaterialCode(); | |
337 | + BigDecimal qty = wmsInventory.getQty(); | |
338 | + String batch = wmsInventory.getBatch(); | |
339 | + String inventoryStatus = wmsInventory.getInventoryStatus(); | |
340 | + LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
341 | + inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getMaterialCode, materialCode).le(InventoryDetail::getQty, qty) | |
342 | + .eq(InventoryDetail::getContainerCode, containerCode).eq(InventoryDetail::getBatch, batch).eq(InventoryDetail::getInventoryStatus, inventoryStatus); | |
343 | + InventoryDetail inventoryDetail = inventoryDetailService.getOne(inventoryDetailLambdaQueryWrapper); | |
344 | + if (inventoryDetail == null) { | |
345 | + return Result.error("WMS下发出库任务失败,没有找到合适库存"); | |
346 | + } | |
347 | + inventoryDetail.setToPortCode(toPort); | |
348 | + inventoryDetailList.add(inventoryDetail); | |
349 | + } | |
350 | + Result result = inventoryHeaderService.shipmentInventoryDetail(inventoryDetailList, warehouseCode); | |
351 | + if (!result.isSuccess()) { | |
352 | + throw new JeecgBootException("WMS下发出库任务失败," + result.getMessage()); | |
353 | + } | |
354 | + TaskHeader taskHeader = taskHeaderService.getUnCompleteTaskByContainerCode(containerCode, warehouseCode); | |
355 | + if (taskHeader != null) { | |
356 | + if (!taskHeaderService.updateUpstreamTaskNoById(referCode, taskHeader.getId())) { | |
357 | + throw new JeecgBootException("WMS下发出库任务失败,更新上游任务号失败"); | |
358 | + } | |
359 | + } | |
360 | + return Result.ok("WMS下发出库任务成功"); | |
361 | + } | |
362 | + | |
363 | + @Override | |
364 | + @Transactional(rollbackFor = Exception.class) | |
251 | 365 | public Result createEmptyIn(WmsEntity wmsEntity) { |
252 | 366 | String warehouseCode = wmsEntity.getWarehouseCode(); |
253 | -// String toPort = wmsEntity.getToPort(); | |
254 | -// String referCode = wmsEntity.getTaskNo(); | |
255 | 367 | String contaienrCode = wmsEntity.getContainerCode(); |
256 | 368 | |
257 | 369 | Result result = taskHeaderService.createEmptyIn(contaienrCode, QuantityConstant.EMPTY_STRING, warehouseCode); |
... | ... | @@ -263,7 +375,6 @@ public class WmsServiceImpl implements WmsService { |
263 | 375 | public Result createEmptyOut(WmsEntity wmsEntity) { |
264 | 376 | String warehouseCode = wmsEntity.getWarehouseCode(); |
265 | 377 | String toPort = wmsEntity.getToPort(); |
266 | -// String referCode = wmsEntity.getTaskNo(); | |
267 | 378 | String contaienrCode = wmsEntity.getContainerCode(); |
268 | 379 | |
269 | 380 | Result result = taskHeaderService.createEmptyOut(contaienrCode, toPort, warehouseCode); |
... | ... | @@ -271,15 +382,8 @@ public class WmsServiceImpl implements WmsService { |
271 | 382 | } |
272 | 383 | |
273 | 384 | @Override |
274 | - @Transactional(rollbackFor = Exception.class) | |
275 | - public Result createCheckOut(WmsEntity wmsEntity) { | |
276 | - String warehouseCode = wmsEntity.getWarehouseCode(); | |
277 | - String toPort = wmsEntity.getToPort(); | |
278 | -// String referCode = wmsEntity.getTaskNo(); | |
279 | - String contaienrCode = wmsEntity.getContainerCode(); | |
280 | - | |
281 | - Result result = taskHeaderService.createCheckOutTask(contaienrCode, toPort, warehouseCode); | |
282 | - return result; | |
385 | + public Result cancelTaskByUpstreamTaskNo(String taskNo) { | |
386 | + return taskHeaderService.cancelTaskByUpstreamTaskNo(taskNo); | |
283 | 387 | } |
284 | 388 | |
285 | 389 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/controller/ContainerController.java
... | ... | @@ -19,6 +19,7 @@ import org.jeecg.modules.wms.config.location.entity.Location; |
19 | 19 | import org.jeecg.modules.wms.config.location.service.ILocationService; |
20 | 20 | import org.jeecg.utils.HuahengJwtUtil; |
21 | 21 | import org.jeecg.utils.StringUtils; |
22 | +import org.jeecg.utils.constant.QuantityConstant; | |
22 | 23 | import org.springframework.beans.factory.annotation.Autowired; |
23 | 24 | import org.springframework.web.bind.annotation.*; |
24 | 25 | import org.springframework.web.servlet.ModelAndView; |
... | ... | @@ -62,8 +63,17 @@ public class ContainerController extends JeecgController<Container, IContainerSe |
62 | 63 | public Result<IPage<Container>> queryPageList(Container container, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, |
63 | 64 | @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { |
64 | 65 | HuahengJwtUtil.setWarehouseCode(req, container); |
66 | + Integer inLocation = container.haveInLocation(); | |
67 | + container.setInLocation(null); | |
65 | 68 | QueryWrapper<Container> queryWrapper = QueryGenerator.initQueryWrapper(container, null); |
66 | 69 | LambdaQueryWrapper<Container> containerLambdaQueryWrapper = queryWrapper.lambda(); |
70 | + if (inLocation != null) { | |
71 | + if (inLocation == QuantityConstant.STATUS_LOCATION_OUT) { | |
72 | + containerLambdaQueryWrapper.eq(Container::getLocationCode, QuantityConstant.EMPTY_STRING); | |
73 | + } else if (inLocation == QuantityConstant.STATUS_LOCATION_IN) { | |
74 | + containerLambdaQueryWrapper.ne(Container::getLocationCode, QuantityConstant.EMPTY_STRING); | |
75 | + } | |
76 | + } | |
67 | 77 | containerLambdaQueryWrapper.orderByAsc(Container::getId); |
68 | 78 | Page<Container> page = new Page<Container>(pageNo, pageSize); |
69 | 79 | IPage<Container> pageList = containerService.page(page, containerLambdaQueryWrapper); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/entity/Container.java
1 | 1 | package org.jeecg.modules.wms.config.container.entity; |
2 | 2 | |
3 | 3 | import java.io.Serializable; |
4 | -import java.io.UnsupportedEncodingException; | |
5 | 4 | import java.util.Date; |
6 | -import java.math.BigDecimal; | |
5 | + | |
6 | +import org.jeecg.common.aspect.annotation.Dict; | |
7 | +import org.jeecg.utils.StringUtils; | |
8 | +import org.jeecg.utils.constant.QuantityConstant; | |
9 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
10 | + | |
7 | 11 | import com.baomidou.mybatisplus.annotation.IdType; |
8 | 12 | import com.baomidou.mybatisplus.annotation.TableField; |
9 | 13 | import com.baomidou.mybatisplus.annotation.TableId; |
10 | 14 | import com.baomidou.mybatisplus.annotation.TableName; |
11 | -import lombok.Data; | |
12 | -import com.fasterxml.jackson.annotation.JsonFormat; | |
13 | -import org.springframework.format.annotation.DateTimeFormat; | |
14 | -import org.jeecgframework.poi.excel.annotation.Excel; | |
15 | -import org.jeecg.common.aspect.annotation.Dict; | |
15 | + | |
16 | 16 | import io.swagger.annotations.ApiModel; |
17 | 17 | import io.swagger.annotations.ApiModelProperty; |
18 | +import lombok.Data; | |
18 | 19 | import lombok.EqualsAndHashCode; |
19 | 20 | import lombok.experimental.Accessors; |
20 | 21 | |
... | ... | @@ -69,16 +70,21 @@ public class Container implements Serializable { |
69 | 70 | @Dict(dicCode = "fill_status") |
70 | 71 | @ApiModelProperty(value = "填充状态") |
71 | 72 | private String fillStatus; |
73 | + @ApiModelProperty(value = "任务总数") | |
74 | + private Integer taskTimes; | |
75 | + @ApiModelProperty(value = "移库任务数") | |
76 | + private Integer moveTaskTimes; | |
77 | + @ApiModelProperty(value = "位置") | |
78 | + @TableField(exist = false) | |
79 | + @Dict(dicCode = "inLocation") | |
80 | + private Integer inLocation; | |
72 | 81 | /** 备用字段1 */ |
73 | - @Excel(name = "备用字段1", width = 15) | |
74 | 82 | @ApiModelProperty(value = "备用字段1") |
75 | 83 | private String userdef1; |
76 | 84 | /** 备用字段2 */ |
77 | - @Excel(name = "备用字段2", width = 15) | |
78 | 85 | @ApiModelProperty(value = "备用字段2") |
79 | 86 | private String userdef2; |
80 | 87 | /** 备用字段3 */ |
81 | - @Excel(name = "备用字段3", width = 15) | |
82 | 88 | @ApiModelProperty(value = "备用字段3") |
83 | 89 | private String userdef3; |
84 | 90 | /** 创建人 */ |
... | ... | @@ -93,4 +99,20 @@ public class Container implements Serializable { |
93 | 99 | /** 更新日期 */ |
94 | 100 | @ApiModelProperty(value = "更新日期") |
95 | 101 | private Date updateTime; |
102 | + | |
103 | + public Integer getInLocation() { | |
104 | + if (StringUtils.isNotEmpty(locationCode)) { | |
105 | + return QuantityConstant.STATUS_LOCATION_IN; | |
106 | + } else { | |
107 | + return QuantityConstant.STATUS_LOCATION_OUT; | |
108 | + } | |
109 | + } | |
110 | + | |
111 | + public void setInLocation(Integer inLocation) { | |
112 | + this.inLocation = inLocation; | |
113 | + } | |
114 | + | |
115 | + public Integer haveInLocation() { | |
116 | + return this.inLocation; | |
117 | + } | |
96 | 118 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
... | ... | @@ -77,6 +77,9 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container |
77 | 77 | |
78 | 78 | @Override |
79 | 79 | public Container getContainerByCode(String containCode, String warehouseCode) { |
80 | + if (StringUtils.isEmpty(containCode)) { | |
81 | + throw new JeecgBootException("容器编码为空"); | |
82 | + } | |
80 | 83 | if (StringUtils.havaLowerCase(containCode)) { |
81 | 84 | throw new JeecgBootException("容器不能有小字母" + containCode); |
82 | 85 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/entity/Material.java
1 | 1 | package org.jeecg.modules.wms.config.material.entity; |
2 | 2 | |
3 | 3 | import java.io.Serializable; |
4 | -import java.io.UnsupportedEncodingException; | |
5 | -import java.util.Date; | |
6 | 4 | import java.math.BigDecimal; |
5 | +import java.util.Date; | |
6 | + | |
7 | +import org.jeecg.common.aspect.annotation.Dict; | |
8 | +import org.jeecgframework.poi.excel.annotation.Excel; | |
9 | + | |
7 | 10 | import com.baomidou.mybatisplus.annotation.IdType; |
8 | 11 | import com.baomidou.mybatisplus.annotation.TableId; |
9 | 12 | import com.baomidou.mybatisplus.annotation.TableName; |
10 | -import lombok.Data; | |
11 | -import com.fasterxml.jackson.annotation.JsonFormat; | |
12 | -import org.springframework.format.annotation.DateTimeFormat; | |
13 | -import org.jeecgframework.poi.excel.annotation.Excel; | |
14 | -import org.jeecg.common.aspect.annotation.Dict; | |
13 | + | |
15 | 14 | import io.swagger.annotations.ApiModel; |
16 | 15 | import io.swagger.annotations.ApiModelProperty; |
16 | +import lombok.Data; | |
17 | 17 | import lombok.EqualsAndHashCode; |
18 | 18 | import lombok.experimental.Accessors; |
19 | 19 | |
... | ... | @@ -63,6 +63,14 @@ public class Material implements Serializable { |
63 | 63 | @Excel(name = "类别", width = 15) |
64 | 64 | @ApiModelProperty(value = "类别") |
65 | 65 | private String type; |
66 | + /** 入库数 */ | |
67 | + @Excel(name = "入库数", width = 15) | |
68 | + @ApiModelProperty(value = "入库数") | |
69 | + private BigDecimal receiptQty; | |
70 | + /** 任务数 */ | |
71 | + @Excel(name = "任务数", width = 15) | |
72 | + @ApiModelProperty(value = "任务数") | |
73 | + private BigDecimal taskQty; | |
66 | 74 | /** ABC分类 */ |
67 | 75 | @Excel(name = "ABC分类", width = 15) |
68 | 76 | @ApiModelProperty(value = "ABC分类") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/service/IMaterialService.java
1 | 1 | package org.jeecg.modules.wms.config.material.service; |
2 | 2 | |
3 | -import com.baomidou.mybatisplus.extension.service.IService; | |
4 | -import org.jeecg.common.api.vo.Result; | |
3 | +import java.util.List; | |
4 | + | |
5 | 5 | import org.jeecg.modules.wms.config.material.entity.Material; |
6 | 6 | |
7 | -import java.util.List; | |
7 | +import com.baomidou.mybatisplus.extension.service.IService; | |
8 | 8 | |
9 | 9 | /** |
10 | 10 | * @Description: 物料管理 |
... | ... | @@ -16,5 +16,7 @@ public interface IMaterialService extends IService<Material> { |
16 | 16 | |
17 | 17 | public Material getMaterialByCode(String code); |
18 | 18 | |
19 | + public Material isMaterialExsit(String code); | |
20 | + | |
19 | 21 | public List<Material> searchMaterialByCode(String code); |
20 | 22 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/service/impl/MaterialServiceImpl.java
... | ... | @@ -34,6 +34,17 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i |
34 | 34 | } |
35 | 35 | |
36 | 36 | @Override |
37 | + public Material isMaterialExsit(String code) { | |
38 | + if (StringUtils.isEmpty(code)) { | |
39 | + return null; | |
40 | + } | |
41 | + LambdaQueryWrapper<Material> materialLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
42 | + materialLambdaQueryWrapper.eq(Material::getCode, code); | |
43 | + Material material = this.getOne(materialLambdaQueryWrapper); | |
44 | + return material; | |
45 | + } | |
46 | + | |
47 | + @Override | |
37 | 48 | public List<Material> searchMaterialByCode(String code) { |
38 | 49 | LambdaQueryWrapper<Material> materialLambdaQueryWrapper = Wrappers.lambdaQuery(); |
39 | 50 | materialLambdaQueryWrapper.like(StringUtils.isNotEmpty(code), Material::getCode, code); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/entity/InventoryDetail.java
... | ... | @@ -130,6 +130,9 @@ public class InventoryDetail implements Serializable { |
130 | 130 | @Dict(dicCode = "inventory_enable") |
131 | 131 | @ApiModelProperty(value = "是否可用") |
132 | 132 | private Integer enable; |
133 | + /** 巷道 */ | |
134 | + @ApiModelProperty(value = "巷道") | |
135 | + private Integer roadWay; | |
133 | 136 | /** 备用字段1 */ |
134 | 137 | @Excel(name = "备用字段1", width = 15) |
135 | 138 | @ApiModelProperty(value = "备用字段1") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/entity/InventoryHeader.java
... | ... | @@ -78,6 +78,9 @@ public class InventoryHeader implements Serializable { |
78 | 78 | @TableField(exist = false) |
79 | 79 | @ApiModelProperty(value = "物料编码") |
80 | 80 | private String materialCode; |
81 | + /** 巷道 */ | |
82 | + @ApiModelProperty(value = "巷道") | |
83 | + private Integer roadWay; | |
81 | 84 | /** 备用字段1 */ |
82 | 85 | @Excel(name = "备用字段1", width = 15) |
83 | 86 | @ApiModelProperty(value = "备用字段1") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
... | ... | @@ -29,6 +29,10 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { |
29 | 29 | |
30 | 30 | List<InventoryDetail> getInventoryDetailListByMaterialCode(String materialCode, String warehouseCode); |
31 | 31 | |
32 | + List<InventoryDetail> getInventoryDetailListByMaterialCodeToShipment(String materialCode, BigDecimal qty, String warehouseCode); | |
33 | + | |
34 | + InventoryDetail getInventoryDetailByMaterialCodeToShipment(String containerCode, String materialCode, BigDecimal qty, String warehouseCode); | |
35 | + | |
32 | 36 | // 求一种物料的库存之和(总数) |
33 | 37 | BigDecimal getInventorySumQty(InventoryDetail inventoryDetail); |
34 | 38 | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java
... | ... | @@ -34,7 +34,7 @@ public interface IInventoryHeaderService extends IService<InventoryHeader> { |
34 | 34 | |
35 | 35 | boolean updateInventoryLocationAndZoneById(String locationCode, String zoneCode, Integer id); |
36 | 36 | |
37 | - boolean updateInventoryContainerLocationZoneById(String containerCode, String locationCode, String zoneCode, Integer id); | |
37 | + boolean updateInventoryContainerLocationZoneById(String containerCode, String locationCode, String zoneCode, Integer roadWay, Integer id); | |
38 | 38 | |
39 | 39 | boolean updateContainerStatusById(String containerStatus, Integer id); |
40 | 40 | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
... | ... | @@ -98,6 +98,30 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe |
98 | 98 | } |
99 | 99 | |
100 | 100 | @Override |
101 | + public List<InventoryDetail> getInventoryDetailListByMaterialCodeToShipment(String materialCode, BigDecimal qty, String warehouseCode) { | |
102 | + LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
103 | + inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getMaterialCode, materialCode).ge(InventoryDetail::getQty, qty) | |
104 | + .eq(InventoryDetail::getContainerStatus, QuantityConstant.STATUS_CONTAINER_EMPTY).eq(InventoryDetail::getInventoryStatus, QuantityConstant.QUALITY_GOOD) | |
105 | + .eq(InventoryDetail::getWarehouseCode, warehouseCode).eq(InventoryDetail::getEnable, QuantityConstant.INVENTORY_DETAIL_STATUS_ENABLE); | |
106 | + List<InventoryDetail> inventoryDetailList = list(inventoryDetailLambdaQueryWrapper); | |
107 | + return inventoryDetailList; | |
108 | + } | |
109 | + | |
110 | + @Override | |
111 | + public InventoryDetail getInventoryDetailByMaterialCodeToShipment(String containerCode, String materialCode, BigDecimal qty, String warehouseCode) { | |
112 | + LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
113 | + inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getMaterialCode, materialCode).ge(InventoryDetail::getQty, qty) | |
114 | + .eq(InventoryDetail::getContainerCode, containerCode).eq(InventoryDetail::getContainerStatus, QuantityConstant.STATUS_CONTAINER_EMPTY) | |
115 | + .eq(InventoryDetail::getInventoryStatus, QuantityConstant.QUALITY_GOOD).eq(InventoryDetail::getWarehouseCode, warehouseCode) | |
116 | + .eq(InventoryDetail::getEnable, QuantityConstant.INVENTORY_DETAIL_STATUS_ENABLE); | |
117 | + List<InventoryDetail> inventoryDetailList = list(inventoryDetailLambdaQueryWrapper); | |
118 | + if (CollectionUtils.isEmpty(inventoryDetailList)) { | |
119 | + return null; | |
120 | + } | |
121 | + return inventoryDetailList.get(0); | |
122 | + } | |
123 | + | |
124 | + @Override | |
101 | 125 | public BigDecimal getInventorySumQty(InventoryDetail inventoryDetail) { |
102 | 126 | LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); |
103 | 127 | inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getInventoryStatus, inventoryDetail.getInventoryStatus()) |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
... | ... | @@ -149,12 +149,13 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe |
149 | 149 | } |
150 | 150 | |
151 | 151 | @Override |
152 | - public boolean updateInventoryContainerLocationZoneById(String containerCode, String locationCode, String zoneCode, Integer id) { | |
152 | + public boolean updateInventoryContainerLocationZoneById(String containerCode, String locationCode, String zoneCode, Integer roadWay, Integer id) { | |
153 | 153 | InventoryHeader inventoryHeader = new InventoryHeader(); |
154 | 154 | inventoryHeader.setId(id); |
155 | 155 | inventoryHeader.setContainerCode(containerCode); |
156 | 156 | inventoryHeader.setLocationCode(locationCode); |
157 | 157 | inventoryHeader.setZoneCode(zoneCode); |
158 | + inventoryHeader.setRoadWay(roadWay); | |
158 | 159 | return inventoryHeaderService.updateById(inventoryHeader); |
159 | 160 | } |
160 | 161 | |
... | ... | @@ -455,7 +456,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe |
455 | 456 | return false; |
456 | 457 | } |
457 | 458 | String zoneCode = toLocation.getZoneCode(); |
458 | - boolean success = inventoryHeaderService.updateInventoryContainerLocationZoneById(containerCode, locationCode, zoneCode, inventoryHeader.getId()); | |
459 | + boolean success = | |
460 | + inventoryHeaderService.updateInventoryContainerLocationZoneById(containerCode, locationCode, zoneCode, toLocation.getRoadWay(), inventoryHeader.getId()); | |
459 | 461 | if (!success) { |
460 | 462 | return success; |
461 | 463 | } |
... | ... | @@ -466,6 +468,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe |
466 | 468 | inventoryDetail1.setContainerCode(containerCode); |
467 | 469 | inventoryDetail1.setLocationCode(locationCode); |
468 | 470 | inventoryDetail1.setZoneCode(zoneCode); |
471 | + inventoryDetail1.setRoadWay(toLocation.getRoadWay()); | |
469 | 472 | updateInventoryDetailList.add(inventoryDetail1); |
470 | 473 | } |
471 | 474 | success = inventoryDetailService.updateBatchById(updateInventoryDetailList); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/AutoCheckoutTask.java
0 → 100644
1 | +package org.jeecg.modules.wms.monitor.job; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import javax.annotation.Resource; | |
6 | + | |
7 | +import org.jeecg.common.util.DateUtils; | |
8 | +import org.jeecg.modules.wms.config.container.entity.Container; | |
9 | +import org.jeecg.modules.wms.config.container.service.IContainerService; | |
10 | +import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; | |
11 | +import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; | |
12 | +import org.jeecg.modules.wms.monitor.job.dto.AutoCheckOutDto; | |
13 | +import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; | |
14 | +import org.jeecg.utils.StringUtils; | |
15 | +import org.jeecg.utils.constant.QuantityConstant; | |
16 | +import org.quartz.*; | |
17 | + | |
18 | +import com.alibaba.fastjson.JSON; | |
19 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
20 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
21 | + | |
22 | +import lombok.extern.slf4j.Slf4j; | |
23 | + | |
24 | +/** | |
25 | + * 定时任务 | |
26 | + * @author 游杰 | |
27 | + */ | |
28 | + | |
29 | +@Slf4j | |
30 | +@PersistJobDataAfterExecution | |
31 | +@DisallowConcurrentExecution | |
32 | +public class AutoCheckoutTask implements Job { | |
33 | + | |
34 | + @Resource | |
35 | + private ITaskHeaderService taskHeaderService; | |
36 | + | |
37 | + @Resource | |
38 | + private IHuahengMultiHandlerService huahengMultiHandlerService; | |
39 | + | |
40 | + @Resource | |
41 | + private IContainerService containerService; | |
42 | + @Resource | |
43 | + private IParameterConfigurationService parameterConfigurationService; | |
44 | + | |
45 | + private String parameter; | |
46 | + | |
47 | + public void setParameter(String parameter) { | |
48 | + this.parameter = parameter; | |
49 | + } | |
50 | + | |
51 | + @Override | |
52 | + public void execute(JobExecutionContext context) throws JobExecutionException { | |
53 | + | |
54 | + log.info(String.format(" AutoCheckoutTask 执行任务! 时间:" + DateUtils.getTimestamp())); | |
55 | + List<AutoCheckOutDto> autoCheckOutDtoList = JSON.parseArray(this.parameter, AutoCheckOutDto.class); | |
56 | + String value = parameterConfigurationService.getValueByCode(QuantityConstant.CONTAINER_MOVE_QTY); | |
57 | + int containerMoveQty = 5; | |
58 | + if (StringUtils.isNotEmpty(value)) { | |
59 | + containerMoveQty = Integer.parseInt(value); | |
60 | + } | |
61 | + LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
62 | + containerLambdaQueryWrapper.ge(Container::getMoveTaskTimes, containerMoveQty); | |
63 | + List<Container> containerList = containerService.list(containerLambdaQueryWrapper); | |
64 | + for (Container container : containerList) { | |
65 | + String zoneCode = container.getZoneCode(); | |
66 | + String warehouseCode = container.getWarehouseCode(); | |
67 | + String toPort = null; | |
68 | + if (StringUtils.isEmpty(zoneCode)) { | |
69 | + toPort = autoCheckOutDtoList.get(0).getToPort(); | |
70 | + } else { | |
71 | + for (AutoCheckOutDto autoCheckOutDto : autoCheckOutDtoList) { | |
72 | + if (zoneCode.equals(autoCheckOutDto.getZoneCode())) { | |
73 | + toPort = autoCheckOutDto.getToPort(); | |
74 | + } | |
75 | + } | |
76 | + } | |
77 | + taskHeaderService.createCheckOutTask(container.getCode(), toPort, warehouseCode); | |
78 | + } | |
79 | + } | |
80 | +} | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/dto/AutoCheckOutDto.java
0 → 100644
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptDetail.java
... | ... | @@ -71,6 +71,10 @@ public class ReceiptDetail implements Serializable { |
71 | 71 | @Excel(name = "组盘数量", width = 15) |
72 | 72 | @ApiModelProperty(value = "组盘数量") |
73 | 73 | private java.math.BigDecimal taskQty; |
74 | + /** 入库数量 */ | |
75 | + @Excel(name = "入库数量", width = 15) | |
76 | + @ApiModelProperty(value = "入库数量") | |
77 | + private java.math.BigDecimal receiptQty; | |
74 | 78 | /** 库存状态 */ |
75 | 79 | @Excel(name = "库存状态", width = 15) |
76 | 80 | @Dict(dicCode = "inventory_status") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java
... | ... | @@ -65,6 +65,14 @@ public interface IShipmentContainerHeaderService extends IService<ShipmentContai |
65 | 65 | boolean updateTaskTypeById(int taskType, int id); |
66 | 66 | |
67 | 67 | /** |
68 | + * 更新去向位置 | |
69 | + * @param toPort | |
70 | + * @param id | |
71 | + * @return | |
72 | + */ | |
73 | + boolean updateToPortById(String toPort, int id); | |
74 | + | |
75 | + /** | |
68 | 76 | * 更新出库配盘状态 |
69 | 77 | * @param status |
70 | 78 | * @param id |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java
... | ... | @@ -217,7 +217,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont |
217 | 217 | } |
218 | 218 | int status = shipmentContainerHeader.getStatus(); |
219 | 219 | if (status >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { |
220 | - return Result.error("取消出库配盘失败,已经生成出库任务"); | |
220 | + return Result.error("取消出库配盘失败,出库配盘状态是生成出库任务"); | |
221 | 221 | } |
222 | 222 | List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(id); |
223 | 223 | for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetailList) { |
... | ... | @@ -264,6 +264,15 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont |
264 | 264 | } |
265 | 265 | |
266 | 266 | @Override |
267 | + public boolean updateToPortById(String toPort, int id) { | |
268 | + ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); | |
269 | + shipmentContainerHeader.setToPort(toPort); | |
270 | + shipmentContainerHeader.setId(id); | |
271 | + boolean success = this.updateById(shipmentContainerHeader); | |
272 | + return success; | |
273 | + } | |
274 | + | |
275 | + @Override | |
267 | 276 | public boolean updateStatusById(int status, int id) { |
268 | 277 | ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); |
269 | 278 | shipmentContainerHeader.setStatus(status); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
... | ... | @@ -376,6 +376,31 @@ public class TaskHeaderController extends HuahengBaseController { |
376 | 376 | } |
377 | 377 | |
378 | 378 | /** |
379 | + * 任务切换 | |
380 | + */ | |
381 | + @AutoLog(value = "任务表-任务切换") | |
382 | + @ApiOperation(value = "任务表-任务切换", notes = "任务表-任务切换") | |
383 | + @PostMapping("/switchTask") | |
384 | + @ResponseBody | |
385 | + @RequiresPermissions("taskHeader:switchTask") | |
386 | + public Result switchTask(@RequestParam(name = "ids", required = true) String ids) { | |
387 | + if (StringUtils.isEmpty(ids)) { | |
388 | + return Result.error("taskId不能为空"); | |
389 | + } | |
390 | + Result result = null; | |
391 | + Integer[] idList = ConvertUtils.toIntArray(ids); | |
392 | + for (int taskId : idList) { | |
393 | + result = handleMultiProcess("switchTask", new MultiProcessListener() { | |
394 | + @Override | |
395 | + public Result<?> doProcess() { | |
396 | + return taskHeaderService.switchTask(taskId); | |
397 | + } | |
398 | + }); | |
399 | + } | |
400 | + return result; | |
401 | + } | |
402 | + | |
403 | + /** | |
379 | 404 | * 执行任务 |
380 | 405 | */ |
381 | 406 | @AutoLog(value = "任务表-执行任务") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
... | ... | @@ -36,6 +36,10 @@ public class TaskHeader implements Serializable { |
36 | 36 | @Excel(name = "前置任务号", width = 15) |
37 | 37 | @ApiModelProperty(value = "前置任务号") |
38 | 38 | private Integer preTaskNo; |
39 | + /** 上游任务号 */ | |
40 | + @Excel(name = "上游任务号", width = 15) | |
41 | + @ApiModelProperty(value = "上游任务号") | |
42 | + private String upstreamTaskNo; | |
39 | 43 | /** 入库组盘ID */ |
40 | 44 | @Excel(name = "入库组盘ID", width = 15) |
41 | 45 | @ApiModelProperty(value = "入库组盘ID") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
... | ... | @@ -36,6 +36,8 @@ public interface ITaskHeaderService extends IService<TaskHeader> { |
36 | 36 | */ |
37 | 37 | boolean haveUncompleteTaskInNear(Location location); |
38 | 38 | |
39 | + boolean updateUpstreamTaskNoById(String upstreamTaskNo, int id); | |
40 | + | |
39 | 41 | /** |
40 | 42 | * 通过AGV任务ID,获取任务信息 |
41 | 43 | * @param agvTaskId |
... | ... | @@ -107,6 +109,13 @@ public interface ITaskHeaderService extends IService<TaskHeader> { |
107 | 109 | Result cancelTask(Integer taskId); |
108 | 110 | |
109 | 111 | /** |
112 | + * 取消WMS任务 | |
113 | + * @param taskId | |
114 | + * @return | |
115 | + */ | |
116 | + Result cancelTaskByUpstreamTaskNo(String taskId); | |
117 | + | |
118 | + /** | |
110 | 119 | * 下发任务给WCS |
111 | 120 | * @param taskId |
112 | 121 | * @return |
... | ... | @@ -374,4 +383,12 @@ public interface ITaskHeaderService extends IService<TaskHeader> { |
374 | 383 | * @return |
375 | 384 | */ |
376 | 385 | Result quickReceipt(QucikReceiptEntity qucikReceiptEntity); |
386 | + | |
387 | + /** | |
388 | + * 切换任务 | |
389 | + * @param id | |
390 | + * @return | |
391 | + */ | |
392 | + Result switchTask(int id); | |
393 | + | |
377 | 394 | } |
... | ... |