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,6 +137,8 @@ export const completeTaskByWMS = (params) => postAction('/task/taskHeader/comple | ||
137 | export const execute = (params) => postAction('/task/taskHeader/execute', params); | 137 | export const execute = (params) => postAction('/task/taskHeader/execute', params); |
138 | //取消任务 | 138 | //取消任务 |
139 | export const cancelTask = (params) => postAction('/task/taskHeader/cancelTask?ids=' + params, params); | 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 | export const autoCombination = (params) => postAction('/shipment/shipmentCombination/autoCombination', params); | 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,7 +82,7 @@ | ||
82 | </a-menu> | 82 | </a-menu> |
83 | <a-button style="margin-left: 8px">批量操作<a-icon type="down"/></a-button> | 83 | <a-button style="margin-left: 8px">批量操作<a-icon type="down"/></a-button> |
84 | </a-dropdown> | 84 | </a-dropdown> |
85 | - <j-super-query :fieldList="superQueryFieldList" @handleSuperQuery="handleSuperQuery"/> | 85 | + <j-super-query :fieldList="superQueryFieldList" v-has="'user:superQuery'" @handleSuperQuery="handleSuperQuery"/> |
86 | </div> | 86 | </div> |
87 | 87 | ||
88 | <!-- table区域-begin --> | 88 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/AddressList.vue
@@ -37,7 +37,8 @@ | @@ -37,7 +37,8 @@ | ||
37 | <div class="table-operator"> | 37 | <div class="table-operator"> |
38 | <a-button @click="handleAdd" v-has="'address:add'" type="primary" icon="plus">新增</a-button> | 38 | <a-button @click="handleAdd" v-has="'address:add'" type="primary" icon="plus">新增</a-button> |
39 | <a-button v-has="'address:export'" type="primary" icon="download" @click="handleExportXls('接口地址')" | 39 | <a-button v-has="'address:export'" type="primary" icon="download" @click="handleExportXls('接口地址')" |
40 | - >导出</a-button | 40 | + >导出 |
41 | + </a-button | ||
41 | > | 42 | > |
42 | <a-upload | 43 | <a-upload |
43 | v-has="'address:import'" | 44 | v-has="'address:import'" |
@@ -52,13 +53,19 @@ | @@ -52,13 +53,19 @@ | ||
52 | </a-upload> | 53 | </a-upload> |
53 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 54 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
54 | <a-menu slot="overlay" v-has="'address:deleteBatch'"> | 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 | </a-menu> | 60 | </a-menu> |
57 | <a-button style="margin-left: 8px"> | 61 | <a-button style="margin-left: 8px"> |
58 | 批量操作 | 62 | 批量操作 |
59 | - <a-icon type="down" /> | 63 | + <a-icon type="down"/> |
60 | </a-button> | 64 | </a-button> |
61 | </a-dropdown> | 65 | </a-dropdown> |
66 | + <j-super-query :fieldList="superFieldList" v-has="'address:superQuery'" ref="superQueryModal" | ||
67 | + @handleSuperQuery="handleSuperQuery"></j-super-query> | ||
68 | + | ||
62 | </div> | 69 | </div> |
63 | 70 | ||
64 | <!-- table区域-begin --> | 71 | <!-- table区域-begin --> |
@@ -85,7 +92,7 @@ | @@ -85,7 +92,7 @@ | ||
85 | <span slot="action" slot-scope="text, record"> | 92 | <span slot="action" slot-scope="text, record"> |
86 | <a v-has="'address:edit'" @click="handleEdit(record)">编辑</a> | 93 | <a v-has="'address:edit'" @click="handleEdit(record)">编辑</a> |
87 | 94 | ||
88 | - <a-divider type="vertical" /> | 95 | + <a-divider type="vertical"/> |
89 | <a-dropdown> | 96 | <a-dropdown> |
90 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> | 97 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> |
91 | <a-menu slot="overlay"> | 98 | <a-menu slot="overlay"> |
@@ -109,10 +116,10 @@ | @@ -109,10 +116,10 @@ | ||
109 | 116 | ||
110 | <script> | 117 | <script> |
111 | import '@/assets/less/TableExpand.less' | 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 | import AddressModal from './modules/AddressModal' | 121 | import AddressModal from './modules/AddressModal' |
115 | -import { getZoneList } from '@/api/api' | 122 | +import {getZoneList} from '@/api/api' |
116 | 123 | ||
117 | export default { | 124 | export default { |
118 | name: 'AddressList', | 125 | name: 'AddressList', |
@@ -133,7 +140,7 @@ export default { | @@ -133,7 +140,7 @@ export default { | ||
133 | key: 'rowIndex', | 140 | key: 'rowIndex', |
134 | width: 60, | 141 | width: 60, |
135 | align: 'center', | 142 | align: 'center', |
136 | - customRender: function(t, r, index) { | 143 | + customRender: function (t, r, index) { |
137 | return parseInt(index) + 1 | 144 | return parseInt(index) + 1 |
138 | } | 145 | } |
139 | }, | 146 | }, |
@@ -152,7 +159,7 @@ export default { | @@ -152,7 +159,7 @@ export default { | ||
152 | align: 'center', | 159 | align: 'center', |
153 | dataIndex: 'zoneCode', | 160 | dataIndex: 'zoneCode', |
154 | key: 'zoneCode', | 161 | key: 'zoneCode', |
155 | - scopedSlots: { customRender: 'zoneCode' } | 162 | + scopedSlots: {customRender: 'zoneCode'} |
156 | }, | 163 | }, |
157 | { | 164 | { |
158 | title: '接口地址', | 165 | title: '接口地址', |
@@ -185,7 +192,7 @@ export default { | @@ -185,7 +192,7 @@ export default { | ||
185 | align: 'center', | 192 | align: 'center', |
186 | fixed: 'right', | 193 | fixed: 'right', |
187 | width: 147, | 194 | width: 147, |
188 | - scopedSlots: { customRender: 'action' } | 195 | + scopedSlots: {customRender: 'action'} |
189 | } | 196 | } |
190 | ], | 197 | ], |
191 | url: { | 198 | url: { |
@@ -209,28 +216,30 @@ export default { | @@ -209,28 +216,30 @@ export default { | ||
209 | //slice可以在数组的任何位置进行删除/添加操作 | 216 | //slice可以在数组的任何位置进行删除/添加操作 |
210 | this.zoneOptions.splice(0, 1) | 217 | this.zoneOptions.splice(0, 1) |
211 | for (let i = 0; i < res.result.length; i++) { | 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 | }, 500) | 221 | }, 500) |
215 | } | 222 | } |
216 | }) | 223 | }) |
217 | }, | 224 | }, |
218 | computed: { | 225 | computed: { |
219 | - importExcelUrl: function() { | 226 | + importExcelUrl: function () { |
220 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 227 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
221 | } | 228 | } |
222 | }, | 229 | }, |
223 | methods: { | 230 | methods: { |
224 | - initDictConfig() {}, | 231 | + initDictConfig() { |
232 | + }, | ||
225 | getSuperFieldList() { | 233 | getSuperFieldList() { |
226 | let fieldList = [] | 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 | this.superFieldList = fieldList | 243 | this.superFieldList = fieldList |
235 | }, | 244 | }, |
236 | solutionZoneCode(value) { | 245 | solutionZoneCode(value) { |
ant-design-vue-jeecg/src/views/system/config/AgvPortList.vue
@@ -32,22 +32,32 @@ | @@ -32,22 +32,32 @@ | ||
32 | <!-- 操作按钮区域 --> | 32 | <!-- 操作按钮区域 --> |
33 | <div class="table-operator"> | 33 | <div class="table-operator"> |
34 | <a-button @click="handleAdd" v-has="'agvPort:add'" type="primary" icon="plus">新增</a-button> | 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 | <a-button type="primary" icon="import">导入</a-button> | 39 | <a-button type="primary" icon="import">导入</a-button> |
38 | </a-upload> | 40 | </a-upload> |
39 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 41 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
40 | <a-menu slot="overlay"> | 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 | </a-menu> | 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 | </a-dropdown> | 51 | </a-dropdown> |
52 | + <j-super-query :fieldList="superFieldList" v-has="'agvPort:superQuery'" | ||
53 | + @handleSuperQuery="handleSuperQuery"/> | ||
45 | </div> | 54 | </div> |
46 | 55 | ||
47 | <!-- table区域-begin --> | 56 | <!-- table区域-begin --> |
48 | <div> | 57 | <div> |
49 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | 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 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> | 61 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
52 | </div> | 62 | </div> |
53 | 63 | ||
@@ -70,7 +80,8 @@ | @@ -70,7 +80,8 @@ | ||
70 | </template> | 80 | </template> |
71 | <template slot="imgSlot" slot-scope="text"> | 81 | <template slot="imgSlot" slot-scope="text"> |
72 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | 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 | </template> | 85 | </template> |
75 | <template slot="fileSlot" slot-scope="text"> | 86 | <template slot="fileSlot" slot-scope="text"> |
76 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | 87 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
@@ -88,9 +99,9 @@ | @@ -88,9 +99,9 @@ | ||
88 | <span slot="action" slot-scope="text, record"> | 99 | <span slot="action" slot-scope="text, record"> |
89 | <a v-has="'agvPort:edit'" @click="handleEdit(record)">编辑</a> | 100 | <a v-has="'agvPort:edit'" @click="handleEdit(record)">编辑</a> |
90 | 101 | ||
91 | - <a-divider type="vertical" /> | 102 | + <a-divider type="vertical"/> |
92 | <a-dropdown> | 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 | <a-menu slot="overlay"> | 105 | <a-menu slot="overlay"> |
95 | <a-menu-item> | 106 | <a-menu-item> |
96 | <a @click="handleDetail(record)">详情</a> | 107 | <a @click="handleDetail(record)">详情</a> |
@@ -113,113 +124,113 @@ | @@ -113,113 +124,113 @@ | ||
113 | 124 | ||
114 | <script> | 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 | this.getSuperFieldList(); | 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 | </script> | 233 | </script> |
223 | <style scoped> | 234 | <style scoped> |
224 | - @import '~@assets/less/common.less'; | 235 | +@import '~@assets/less/common.less'; |
225 | </style> | 236 | </style> |
226 | \ No newline at end of file | 237 | \ No newline at end of file |
ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue
@@ -37,6 +37,8 @@ | @@ -37,6 +37,8 @@ | ||
37 | @change="handleImportExcel"> | 37 | @change="handleImportExcel"> |
38 | <a-button type="primary" icon="import">导入</a-button> | 38 | <a-button type="primary" icon="import">导入</a-button> |
39 | </a-upload> | 39 | </a-upload> |
40 | + | ||
41 | + <j-super-query :fieldList="superFieldList" v-has="'bomHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
40 | </div> | 42 | </div> |
41 | 43 | ||
42 | <!-- table区域-begin --> | 44 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/CarrierList.vue
@@ -12,8 +12,10 @@ | @@ -12,8 +12,10 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button @click="handleAdd" v-has="'carrier:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 19 | @change="handleImportExcel"> |
18 | <a-button type="primary" icon="import">导入</a-button> | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | </a-upload> | 21 | </a-upload> |
@@ -28,6 +30,8 @@ | @@ -28,6 +30,8 @@ | ||
28 | <a-icon type="down"/> | 30 | <a-icon type="down"/> |
29 | </a-button> | 31 | </a-button> |
30 | </a-dropdown> | 32 | </a-dropdown> |
33 | + | ||
34 | + <j-super-query :fieldList="superFieldList" v-has="'carrier:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
31 | </div> | 35 | </div> |
32 | 36 | ||
33 | <!-- table区域-begin --> | 37 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/CompanyList.vue
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
21 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 21 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
22 | {{ toggleSearchStatus ? '收起' : '展开' }} | 22 | {{ toggleSearchStatus ? '收起' : '展开' }} |
23 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | 23 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
24 | </a> | 24 | </a> |
25 | </span> | 25 | </span> |
26 | </a-col> | 26 | </a-col> |
@@ -47,15 +47,17 @@ | @@ -47,15 +47,17 @@ | ||
47 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 47 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
48 | <a-menu slot="overlay" v-has="'company:deleteBatch'"> | 48 | <a-menu slot="overlay" v-has="'company:deleteBatch'"> |
49 | <a-menu-item key="1" @click="batchDel"> | 49 | <a-menu-item key="1" @click="batchDel"> |
50 | - <a-icon type="deleteBatch" /> | 50 | + <a-icon type="deleteBatch"/> |
51 | 删除 | 51 | 删除 |
52 | </a-menu-item> | 52 | </a-menu-item> |
53 | </a-menu> | 53 | </a-menu> |
54 | <a-button style="margin-left: 8px"> | 54 | <a-button style="margin-left: 8px"> |
55 | 批量操作 | 55 | 批量操作 |
56 | - <a-icon type="down" /> | 56 | + <a-icon type="down"/> |
57 | </a-button> | 57 | </a-button> |
58 | </a-dropdown> | 58 | </a-dropdown> |
59 | + | ||
60 | + <j-super-query :fieldList="superFieldList" v-has="'company:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
59 | </div> | 61 | </div> |
60 | 62 | ||
61 | <!-- table区域-begin --> | 63 | <!-- table区域-begin --> |
@@ -101,7 +103,7 @@ | @@ -101,7 +103,7 @@ | ||
101 | </template> | 103 | </template> |
102 | 104 | ||
103 | <span slot="action" slot-scope="text, record"> | 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 | <a-dropdown> | 107 | <a-dropdown> |
106 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> | 108 | <a class="ant-dropdown-link">更多 <a-icon type="down"/></a> |
107 | <a-menu slot="overlay"> | 109 | <a-menu slot="overlay"> |
@@ -125,8 +127,8 @@ | @@ -125,8 +127,8 @@ | ||
125 | 127 | ||
126 | <script> | 128 | <script> |
127 | import '@/assets/less/TableExpand.less' | 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 | import CompanyModal from './modules/CompanyModal' | 132 | import CompanyModal from './modules/CompanyModal' |
131 | 133 | ||
132 | export default { | 134 | export default { |
@@ -146,7 +148,7 @@ export default { | @@ -146,7 +148,7 @@ export default { | ||
146 | key: 'rowIndex', | 148 | key: 'rowIndex', |
147 | width: 60, | 149 | width: 60, |
148 | align: 'center', | 150 | align: 'center', |
149 | - customRender: function(t, r, index) { | 151 | + customRender: function (t, r, index) { |
150 | return parseInt(index) + 1 | 152 | return parseInt(index) + 1 |
151 | } | 153 | } |
152 | }, | 154 | }, |
@@ -206,7 +208,7 @@ export default { | @@ -206,7 +208,7 @@ export default { | ||
206 | align: 'center', | 208 | align: 'center', |
207 | fixed: 'right', | 209 | fixed: 'right', |
208 | width: 147, | 210 | width: 147, |
209 | - scopedSlots: { customRender: 'action' } | 211 | + scopedSlots: {customRender: 'action'} |
210 | } | 212 | } |
211 | ], | 213 | ], |
212 | url: { | 214 | url: { |
@@ -224,24 +226,25 @@ export default { | @@ -224,24 +226,25 @@ export default { | ||
224 | this.getSuperFieldList() | 226 | this.getSuperFieldList() |
225 | }, | 227 | }, |
226 | computed: { | 228 | computed: { |
227 | - importExcelUrl: function() { | 229 | + importExcelUrl: function () { |
228 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 230 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
229 | } | 231 | } |
230 | }, | 232 | }, |
231 | methods: { | 233 | methods: { |
232 | - initDictConfig() {}, | 234 | + initDictConfig() { |
235 | + }, | ||
233 | getSuperFieldList() { | 236 | getSuperFieldList() { |
234 | let fieldList = [] | 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 | this.superFieldList = fieldList | 248 | this.superFieldList = fieldList |
246 | } | 249 | } |
247 | } | 250 | } |
ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue
@@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
25 | </a-col> | 25 | </a-col> |
26 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 26 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
27 | <a-form-item label="是否可用"> | 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 | </a-form-item> | 29 | </a-form-item> |
30 | </a-col> | 30 | </a-col> |
31 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 31 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
@@ -64,15 +64,17 @@ | @@ -64,15 +64,17 @@ | ||
64 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 64 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
65 | <a-menu slot="overlay" v-has="'containerCapacity:deleteBatch'"> | 65 | <a-menu slot="overlay" v-has="'containerCapacity:deleteBatch'"> |
66 | <a-menu-item key="1" @click="batchDel"> | 66 | <a-menu-item key="1" @click="batchDel"> |
67 | - <a-icon type="delete" /> | 67 | + <a-icon type="delete"/> |
68 | 删除 | 68 | 删除 |
69 | </a-menu-item> | 69 | </a-menu-item> |
70 | </a-menu> | 70 | </a-menu> |
71 | <a-button style="margin-left: 8px"> | 71 | <a-button style="margin-left: 8px"> |
72 | 批量操作 | 72 | 批量操作 |
73 | - <a-icon type="down" /> | 73 | + <a-icon type="down"/> |
74 | </a-button> | 74 | </a-button> |
75 | </a-dropdown> | 75 | </a-dropdown> |
76 | + <j-super-query :fieldList="superFieldList" v-has="'containerCapacity:superQuery'" | ||
77 | + @handleSuperQuery="handleSuperQuery"/> | ||
76 | </div> | 78 | </div> |
77 | 79 | ||
78 | <!-- table区域-begin --> | 80 | <!-- table区域-begin --> |
@@ -147,11 +149,11 @@ | @@ -147,11 +149,11 @@ | ||
147 | 149 | ||
148 | <script> | 150 | <script> |
149 | import '@/assets/less/TableExpand.less' | 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 | import ContainerCapacityModal from './modules/ContainerCapacityModal' | 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 | export default { | 158 | export default { |
157 | name: 'ContainerCapacityList', | 159 | name: 'ContainerCapacityList', |
@@ -171,7 +173,7 @@ export default { | @@ -171,7 +173,7 @@ export default { | ||
171 | key: 'rowIndex', | 173 | key: 'rowIndex', |
172 | width: 60, | 174 | width: 60, |
173 | align: 'center', | 175 | align: 'center', |
174 | - customRender: function(t, r, index) { | 176 | + customRender: function (t, r, index) { |
175 | return parseInt(index) + 1 | 177 | return parseInt(index) + 1 |
176 | } | 178 | } |
177 | }, | 179 | }, |
@@ -180,7 +182,7 @@ export default { | @@ -180,7 +182,7 @@ export default { | ||
180 | align: 'center', | 182 | align: 'center', |
181 | dataIndex: 'containerTypeCode', | 183 | dataIndex: 'containerTypeCode', |
182 | key: 'containerTypeCode', | 184 | key: 'containerTypeCode', |
183 | - scopedSlots: { customRender: 'containerTypeCode' } | 185 | + scopedSlots: {customRender: 'containerTypeCode'} |
184 | }, | 186 | }, |
185 | { | 187 | { |
186 | title: '物料编码', | 188 | title: '物料编码', |
@@ -233,7 +235,7 @@ export default { | @@ -233,7 +235,7 @@ export default { | ||
233 | align: 'center', | 235 | align: 'center', |
234 | fixed: 'right', | 236 | fixed: 'right', |
235 | width: 147, | 237 | width: 147, |
236 | - scopedSlots: { customRender: 'action' } | 238 | + scopedSlots: {customRender: 'action'} |
237 | } | 239 | } |
238 | ], | 240 | ], |
239 | url: { | 241 | url: { |
@@ -252,12 +254,13 @@ export default { | @@ -252,12 +254,13 @@ export default { | ||
252 | this.loadFrom() | 254 | this.loadFrom() |
253 | }, | 255 | }, |
254 | computed: { | 256 | computed: { |
255 | - importExcelUrl: function() { | 257 | + importExcelUrl: function () { |
256 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 258 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
257 | } | 259 | } |
258 | }, | 260 | }, |
259 | methods: { | 261 | methods: { |
260 | - initDictConfig() {}, | 262 | + initDictConfig() { |
263 | + }, | ||
261 | solutionContainerType(value) { | 264 | solutionContainerType(value) { |
262 | var actions = [] | 265 | var actions = [] |
263 | Object.keys(this.containerTypeList).some(key => { | 266 | Object.keys(this.containerTypeList).some(key => { |
@@ -277,18 +280,18 @@ export default { | @@ -277,18 +280,18 @@ export default { | ||
277 | }, | 280 | }, |
278 | getSuperFieldList() { | 281 | getSuperFieldList() { |
279 | let fieldList = [] | 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 | this.superFieldList = fieldList | 295 | this.superFieldList = fieldList |
293 | } | 296 | } |
294 | } | 297 | } |
ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
@@ -46,10 +46,16 @@ | @@ -46,10 +46,16 @@ | ||
46 | /> | 46 | /> |
47 | </a-form-item> | 47 | </a-form-item> |
48 | </a-col> | 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 | </template> | 55 | </template> |
50 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 56 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
51 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 59 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
54 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 60 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
55 | {{ toggleSearchStatus ? '收起' : '展开' }} | 61 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -91,6 +97,9 @@ | @@ -91,6 +97,9 @@ | ||
91 | <a-icon type="down"/> | 97 | <a-icon type="down"/> |
92 | </a-button> | 98 | </a-button> |
93 | </a-dropdown> | 99 | </a-dropdown> |
100 | + | ||
101 | + <j-super-query :fieldList="superFieldList" v-has="'container:superQuery'" | ||
102 | + @handleSuperQuery="handleSuperQuery"/> | ||
94 | </div> | 103 | </div> |
95 | 104 | ||
96 | <!-- table区域-begin --> | 105 | <!-- table区域-begin --> |
@@ -208,6 +217,7 @@ export default { | @@ -208,6 +217,7 @@ export default { | ||
208 | return { | 217 | return { |
209 | description: '容器管理管理页面', | 218 | description: '容器管理管理页面', |
210 | zoneList: [], | 219 | zoneList: [], |
220 | + firstLoad:0, | ||
211 | containerTypeList: [], | 221 | containerTypeList: [], |
212 | // 表头 | 222 | // 表头 |
213 | columns: [ | 223 | columns: [ |
@@ -251,6 +261,21 @@ export default { | @@ -251,6 +261,21 @@ export default { | ||
251 | scopedSlots: {customRender: 'fillStatus_dictText'} | 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 | title: '库区', | 279 | title: '库区', |
255 | align: "center", | 280 | align: "center", |
256 | dataIndex: 'zoneCode', | 281 | dataIndex: 'zoneCode', |
@@ -301,6 +326,21 @@ export default { | @@ -301,6 +326,21 @@ export default { | ||
301 | this.getSuperFieldList() | 326 | this.getSuperFieldList() |
302 | this.loadFrom() | 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 | computed: { | 344 | computed: { |
305 | importExcelUrl: function () { | 345 | importExcelUrl: function () { |
306 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 346 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
@@ -329,6 +369,7 @@ export default { | @@ -329,6 +369,7 @@ export default { | ||
329 | fieldList.push({type: 'string', value: 'containerTypeCode', text: '容器类型', dictCode: ''}) | 369 | fieldList.push({type: 'string', value: 'containerTypeCode', text: '容器类型', dictCode: ''}) |
330 | fieldList.push({type: 'string', value: 'status', text: '容器状态', dictCode: 'container_status'}) | 370 | fieldList.push({type: 'string', value: 'status', text: '容器状态', dictCode: 'container_status'}) |
331 | fieldList.push({type: 'string', value: 'fillStatus', text: '容器填充状态', dictCode: 'fill_status'}) | 371 | fieldList.push({type: 'string', value: 'fillStatus', text: '容器填充状态', dictCode: 'fill_status'}) |
372 | + fieldList.push({type: 'string', value: 'inLocation', text: '容器填充状态', dictCode: 'inLocation'}) | ||
332 | fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) | 373 | fieldList.push({type: 'string', value: 'createBy', text: '创建人', dictCode: ''}) |
333 | fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) | 374 | fieldList.push({type: 'datetime', value: 'createTime', text: '创建日期'}) |
334 | fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) | 375 | fieldList.push({type: 'string', value: 'updateBy', text: '更新人', dictCode: ''}) |
ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue
@@ -49,15 +49,17 @@ | @@ -49,15 +49,17 @@ | ||
49 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 49 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
50 | <a-menu slot="overlay" v-has="'containerType:deleteBatch'"> | 50 | <a-menu slot="overlay" v-has="'containerType:deleteBatch'"> |
51 | <a-menu-item key="1" @click="batchDel"> | 51 | <a-menu-item key="1" @click="batchDel"> |
52 | - <a-icon type="delete" /> | 52 | + <a-icon type="delete"/> |
53 | 删除 | 53 | 删除 |
54 | </a-menu-item> | 54 | </a-menu-item> |
55 | </a-menu> | 55 | </a-menu> |
56 | <a-button style="margin-left: 8px"> | 56 | <a-button style="margin-left: 8px"> |
57 | 批量操作 | 57 | 批量操作 |
58 | - <a-icon type="down" /> | 58 | + <a-icon type="down"/> |
59 | </a-button> | 59 | </a-button> |
60 | </a-dropdown> | 60 | </a-dropdown> |
61 | + <j-super-query :fieldList="superFieldList" v-has="'containerType:superQuery'" | ||
62 | + @handleSuperQuery="handleSuperQuery"/> | ||
61 | </div> | 63 | </div> |
62 | 64 | ||
63 | <!-- table区域-begin --> | 65 | <!-- table区域-begin --> |
@@ -88,7 +90,7 @@ | @@ -88,7 +90,7 @@ | ||
88 | </a-tag> | 90 | </a-tag> |
89 | </span> | 91 | </span> |
90 | 92 | ||
91 | - <span slot="locationTypes" slot-scope="locationTypes" > | 93 | + <span slot="locationTypes" slot-scope="locationTypes"> |
92 | <a-tag v-for="locationType in locationTypes" :key="locationType" color=pink> | 94 | <a-tag v-for="locationType in locationTypes" :key="locationType" color=pink> |
93 | {{ solutionLocationType(locationType) }} | 95 | {{ solutionLocationType(locationType) }} |
94 | </a-tag> | 96 | </a-tag> |
@@ -139,10 +141,10 @@ | @@ -139,10 +141,10 @@ | ||
139 | 141 | ||
140 | <script> | 142 | <script> |
141 | import '@/assets/less/TableExpand.less' | 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 | import ContainerTypeModal from './modules/ContainerTypeModal' | 146 | import ContainerTypeModal from './modules/ContainerTypeModal' |
145 | -import {getCompanyList, getLocationTypeList } from '@/api/api' | 147 | +import {getCompanyList, getLocationTypeList} from '@/api/api' |
146 | 148 | ||
147 | export default { | 149 | export default { |
148 | name: 'ContainerTypeList', | 150 | name: 'ContainerTypeList', |
@@ -163,7 +165,7 @@ export default { | @@ -163,7 +165,7 @@ export default { | ||
163 | key: 'rowIndex', | 165 | key: 'rowIndex', |
164 | width: 60, | 166 | width: 60, |
165 | align: 'center', | 167 | align: 'center', |
166 | - customRender: function(t, r, index) { | 168 | + customRender: function (t, r, index) { |
167 | return parseInt(index) + 1 | 169 | return parseInt(index) + 1 |
168 | } | 170 | } |
169 | }, | 171 | }, |
@@ -242,7 +244,7 @@ export default { | @@ -242,7 +244,7 @@ export default { | ||
242 | align: 'center', | 244 | align: 'center', |
243 | fixed: 'right', | 245 | fixed: 'right', |
244 | width: 147, | 246 | width: 147, |
245 | - scopedSlots: { customRender: 'action' } | 247 | + scopedSlots: {customRender: 'action'} |
246 | } | 248 | } |
247 | ], | 249 | ], |
248 | url: { | 250 | url: { |
@@ -261,12 +263,13 @@ export default { | @@ -261,12 +263,13 @@ export default { | ||
261 | this.loadFrom() | 263 | this.loadFrom() |
262 | }, | 264 | }, |
263 | computed: { | 265 | computed: { |
264 | - importExcelUrl: function() { | 266 | + importExcelUrl: function () { |
265 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 267 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
266 | } | 268 | } |
267 | }, | 269 | }, |
268 | methods: { | 270 | methods: { |
269 | - initDictConfig() {}, | 271 | + initDictConfig() { |
272 | + }, | ||
270 | loadFrom() { | 273 | loadFrom() { |
271 | getCompanyList().then((res) => { | 274 | getCompanyList().then((res) => { |
272 | if (res.success) { | 275 | if (res.success) { |
@@ -301,19 +304,19 @@ export default { | @@ -301,19 +304,19 @@ export default { | ||
301 | }, | 304 | }, |
302 | getSuperFieldList() { | 305 | getSuperFieldList() { |
303 | let fieldList = [] | 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 | this.superFieldList = fieldList | 320 | this.superFieldList = fieldList |
318 | } | 321 | } |
319 | } | 322 | } |
ant-design-vue-jeecg/src/views/system/config/CustomerList.vue
@@ -12,8 +12,10 @@ | @@ -12,8 +12,10 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button @click="handleAdd" v-has="'customer:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 19 | @change="handleImportExcel"> |
18 | <a-button type="primary" icon="import">导入</a-button> | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | </a-upload> | 21 | </a-upload> |
@@ -28,6 +30,8 @@ | @@ -28,6 +30,8 @@ | ||
28 | <a-icon type="down"/> | 30 | <a-icon type="down"/> |
29 | </a-button> | 31 | </a-button> |
30 | </a-dropdown> | 32 | </a-dropdown> |
33 | + | ||
34 | + <j-super-query :fieldList="superFieldList" v-has="'customer:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
31 | </div> | 35 | </div> |
32 | 36 | ||
33 | <!-- table区域-begin --> | 37 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue
@@ -12,8 +12,11 @@ | @@ -12,8 +12,11 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button @click="handleAdd" v-has="'cycleCountPreference:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 20 | @change="handleImportExcel"> |
18 | <a-button type="primary" icon="import">导入</a-button> | 21 | <a-button type="primary" icon="import">导入</a-button> |
19 | </a-upload> | 22 | </a-upload> |
@@ -28,6 +31,8 @@ | @@ -28,6 +31,8 @@ | ||
28 | <a-icon type="down"/> | 31 | <a-icon type="down"/> |
29 | </a-button> | 32 | </a-button> |
30 | </a-dropdown> | 33 | </a-dropdown> |
34 | + <j-super-query :fieldList="superFieldList" v-has="'cycleCountPreference:superQuery'" | ||
35 | + @handleSuperQuery="handleSuperQuery"/> | ||
31 | </div> | 36 | </div> |
32 | 37 | ||
33 | <!-- table区域-begin --> | 38 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
@@ -41,8 +41,11 @@ | @@ -41,8 +41,11 @@ | ||
41 | <!-- 操作按钮区域 --> | 41 | <!-- 操作按钮区域 --> |
42 | <div class="table-operator"> | 42 | <div class="table-operator"> |
43 | <a-button @click="handleAdd" v-has="'locationHigh:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 49 | @change="handleImportExcel"> |
47 | <a-button type="primary" icon="import">导入</a-button> | 50 | <a-button type="primary" icon="import">导入</a-button> |
48 | </a-upload> | 51 | </a-upload> |
@@ -57,6 +60,9 @@ | @@ -57,6 +60,9 @@ | ||
57 | <a-icon type="down"/> | 60 | <a-icon type="down"/> |
58 | </a-button> | 61 | </a-button> |
59 | </a-dropdown> | 62 | </a-dropdown> |
63 | + | ||
64 | + <j-super-query :fieldList="superFieldList" v-has="'locationHigh:superQuery'" | ||
65 | + @handleSuperQuery="handleSuperQuery"/> | ||
60 | </div> | 66 | </div> |
61 | 67 | ||
62 | <!-- table区域-begin --> | 68 | <!-- table区域-begin --> |
@@ -88,7 +94,7 @@ | @@ -88,7 +94,7 @@ | ||
88 | </a-tag> | 94 | </a-tag> |
89 | </span> | 95 | </span> |
90 | 96 | ||
91 | - <span slot="locationTypeCode" slot-scope="locationTypeCode"> | 97 | + <span slot="locationTypeCode" slot-scope="locationTypeCode"> |
92 | <a-tag :key="locationTypeCode" color=pink> | 98 | <a-tag :key="locationTypeCode" color=pink> |
93 | {{ solutionLocationType(locationTypeCode) }} | 99 | {{ solutionLocationType(locationTypeCode) }} |
94 | </a-tag> | 100 | </a-tag> |
@@ -274,11 +280,11 @@ export default { | @@ -274,11 +280,11 @@ export default { | ||
274 | this.locationTypeList = res.result | 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 | solutionZoneCode(value) { | 289 | solutionZoneCode(value) { |
284 | var actions = [] | 290 | var actions = [] |
ant-design-vue-jeecg/src/views/system/config/LocationList.vue
@@ -59,7 +59,8 @@ | @@ -59,7 +59,8 @@ | ||
59 | </a-col> | 59 | </a-col> |
60 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 60 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
61 | <a-form-item label="库内是否有托盘"> | 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 | </a-form-item> | 64 | </a-form-item> |
64 | </a-col> | 65 | </a-col> |
65 | <template v-if="toggleSearchStatus"> | 66 | <template v-if="toggleSearchStatus"> |
@@ -91,7 +92,7 @@ | @@ -91,7 +92,7 @@ | ||
91 | </template> | 92 | </template> |
92 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 93 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
93 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 96 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
96 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 97 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
97 | {{ toggleSearchStatus ? '收起' : '展开' }} | 98 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -135,6 +136,9 @@ | @@ -135,6 +136,9 @@ | ||
135 | <a-icon type="down"/> | 136 | <a-icon type="down"/> |
136 | </a-button> | 137 | </a-button> |
137 | </a-dropdown> | 138 | </a-dropdown> |
139 | + | ||
140 | + <j-super-query :fieldList="superFieldList" v-has="'location:superQuery'" | ||
141 | + @handleSuperQuery="handleSuperQuery"/> | ||
138 | </div> | 142 | </div> |
139 | 143 | ||
140 | <!-- table区域-begin --> | 144 | <!-- table区域-begin --> |
@@ -265,6 +269,7 @@ export default { | @@ -265,6 +269,7 @@ export default { | ||
265 | description: '库位管理页面', | 269 | description: '库位管理页面', |
266 | zoneList: [], | 270 | zoneList: [], |
267 | locationTypeList: [], | 271 | locationTypeList: [], |
272 | + firstLoad:0, | ||
268 | // 表头 | 273 | // 表头 |
269 | columns: [ | 274 | columns: [ |
270 | { | 275 | { |
@@ -406,6 +411,21 @@ export default { | @@ -406,6 +411,21 @@ export default { | ||
406 | this.getSuperFieldList() | 411 | this.getSuperFieldList() |
407 | this.loadFrom() | 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 | computed: { | 429 | computed: { |
410 | importExcelUrl: function () { | 430 | importExcelUrl: function () { |
411 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 431 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue
@@ -53,15 +53,18 @@ | @@ -53,15 +53,18 @@ | ||
53 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 53 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
54 | <a-menu slot="overlay" v-has="'locationType:deleteBatch'"> | 54 | <a-menu slot="overlay" v-has="'locationType:deleteBatch'"> |
55 | <a-menu-item key="1" @click="batchDel"> | 55 | <a-menu-item key="1" @click="batchDel"> |
56 | - <a-icon type="delete" /> | 56 | + <a-icon type="delete"/> |
57 | 删除 | 57 | 删除 |
58 | </a-menu-item> | 58 | </a-menu-item> |
59 | </a-menu> | 59 | </a-menu> |
60 | <a-button style="margin-left: 8px"> | 60 | <a-button style="margin-left: 8px"> |
61 | 批量操作 | 61 | 批量操作 |
62 | - <a-icon type="down" /> | 62 | + <a-icon type="down"/> |
63 | </a-button> | 63 | </a-button> |
64 | </a-dropdown> | 64 | </a-dropdown> |
65 | + | ||
66 | + <j-super-query :fieldList="superFieldList" v-has="'locationType:superQuery'" | ||
67 | + @handleSuperQuery="handleSuperQuery"/> | ||
65 | </div> | 68 | </div> |
66 | 69 | ||
67 | <!-- table区域-begin --> | 70 | <!-- table区域-begin --> |
@@ -137,10 +140,10 @@ | @@ -137,10 +140,10 @@ | ||
137 | 140 | ||
138 | <script> | 141 | <script> |
139 | import '@/assets/less/TableExpand.less' | 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 | import LocationTypeModal from './modules/LocationTypeModal' | 145 | import LocationTypeModal from './modules/LocationTypeModal' |
143 | -import { getZoneList } from '@/api/api' | 146 | +import {getZoneList} from '@/api/api' |
144 | 147 | ||
145 | export default { | 148 | export default { |
146 | name: 'LocationTypeList', | 149 | name: 'LocationTypeList', |
@@ -161,7 +164,7 @@ export default { | @@ -161,7 +164,7 @@ export default { | ||
161 | key: 'rowIndex', | 164 | key: 'rowIndex', |
162 | width: 60, | 165 | width: 60, |
163 | align: 'center', | 166 | align: 'center', |
164 | - customRender: function(t, r, index) { | 167 | + customRender: function (t, r, index) { |
165 | return parseInt(index) + 1 | 168 | return parseInt(index) + 1 |
166 | } | 169 | } |
167 | }, | 170 | }, |
@@ -180,7 +183,7 @@ export default { | @@ -180,7 +183,7 @@ export default { | ||
180 | align: 'center', | 183 | align: 'center', |
181 | dataIndex: 'zoneCode', | 184 | dataIndex: 'zoneCode', |
182 | key: 'zoneCode', | 185 | key: 'zoneCode', |
183 | - scopedSlots: { customRender: 'zoneCode' } | 186 | + scopedSlots: {customRender: 'zoneCode'} |
184 | }, | 187 | }, |
185 | { | 188 | { |
186 | title: '长度', | 189 | title: '长度', |
@@ -228,7 +231,7 @@ export default { | @@ -228,7 +231,7 @@ export default { | ||
228 | align: 'center', | 231 | align: 'center', |
229 | fixed: 'right', | 232 | fixed: 'right', |
230 | width: 147, | 233 | width: 147, |
231 | - scopedSlots: { customRender: 'action' } | 234 | + scopedSlots: {customRender: 'action'} |
232 | } | 235 | } |
233 | ], | 236 | ], |
234 | url: { | 237 | url: { |
@@ -252,19 +255,20 @@ export default { | @@ -252,19 +255,20 @@ export default { | ||
252 | //slice可以在数组的任何位置进行删除/添加操作 | 255 | //slice可以在数组的任何位置进行删除/添加操作 |
253 | this.zoneOptions.splice(0, 1) | 256 | this.zoneOptions.splice(0, 1) |
254 | for (let i = 0; i < res.result.length; i++) { | 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 | }, 500) | 260 | }, 500) |
258 | } | 261 | } |
259 | }) | 262 | }) |
260 | }, | 263 | }, |
261 | computed: { | 264 | computed: { |
262 | - importExcelUrl: function() { | 265 | + importExcelUrl: function () { |
263 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 266 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
264 | } | 267 | } |
265 | }, | 268 | }, |
266 | methods: { | 269 | methods: { |
267 | - initDictConfig() {}, | 270 | + initDictConfig() { |
271 | + }, | ||
268 | solutionZoneCode(value) { | 272 | solutionZoneCode(value) { |
269 | var actions = [] | 273 | var actions = [] |
270 | Object.keys(this.zoneList).some(key => { | 274 | Object.keys(this.zoneList).some(key => { |
@@ -277,16 +281,16 @@ export default { | @@ -277,16 +281,16 @@ export default { | ||
277 | }, | 281 | }, |
278 | getSuperFieldList() { | 282 | getSuperFieldList() { |
279 | let fieldList = [] | 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 | this.superFieldList = fieldList | 294 | this.superFieldList = fieldList |
291 | } | 295 | } |
292 | } | 296 | } |
ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue
@@ -12,8 +12,10 @@ | @@ -12,8 +12,10 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button @click="handleAdd" v-has="'materialArea:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 19 | @change="handleImportExcel"> |
18 | <a-button type="primary" icon="import">导入</a-button> | 20 | <a-button type="primary" icon="import">导入</a-button> |
19 | </a-upload> | 21 | </a-upload> |
@@ -28,6 +30,9 @@ | @@ -28,6 +30,9 @@ | ||
28 | <a-icon type="down"/> | 30 | <a-icon type="down"/> |
29 | </a-button> | 31 | </a-button> |
30 | </a-dropdown> | 32 | </a-dropdown> |
33 | + | ||
34 | + <j-super-query :fieldList="superFieldList" v-has="'materialArea:superQuery'" | ||
35 | + @handleSuperQuery="handleSuperQuery"/> | ||
31 | </div> | 36 | </div> |
32 | 37 | ||
33 | <!-- table区域-begin --> | 38 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/MaterialList.vue
@@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
21 | </a-col> | 21 | </a-col> |
22 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 22 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
23 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 25 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
26 | </span> | 26 | </span> |
27 | </a-col> | 27 | </a-col> |
@@ -33,8 +33,10 @@ | @@ -33,8 +33,10 @@ | ||
33 | <!-- 操作按钮区域 --> | 33 | <!-- 操作按钮区域 --> |
34 | <div class="table-operator"> | 34 | <div class="table-operator"> |
35 | <a-button v-has="'material:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 40 | @change="handleImportExcel"> |
39 | <a-button type="primary" icon="import">导入</a-button> | 41 | <a-button type="primary" icon="import">导入</a-button> |
40 | <a-button v-has="'material:print'" @click="batchPrint()" type="primary">打印</a-button> | 42 | <a-button v-has="'material:print'" @click="batchPrint()" type="primary">打印</a-button> |
@@ -50,6 +52,9 @@ | @@ -50,6 +52,9 @@ | ||
50 | <a-icon type="down"/> | 52 | <a-icon type="down"/> |
51 | </a-button> | 53 | </a-button> |
52 | </a-dropdown> | 54 | </a-dropdown> |
55 | + | ||
56 | + <j-super-query :fieldList="superFieldList" v-has="'material:superQuery'" | ||
57 | + @handleSuperQuery="handleSuperQuery"/> | ||
53 | </div> | 58 | </div> |
54 | 59 | ||
55 | <!-- table区域-begin --> | 60 | <!-- table区域-begin --> |
@@ -141,6 +146,7 @@ export default { | @@ -141,6 +146,7 @@ export default { | ||
141 | data() { | 146 | data() { |
142 | return { | 147 | return { |
143 | description: '物料管理管理页面', | 148 | description: '物料管理管理页面', |
149 | + firstLoad:0, | ||
144 | // 表头 | 150 | // 表头 |
145 | columns: [ | 151 | columns: [ |
146 | { | 152 | { |
@@ -247,6 +253,21 @@ export default { | @@ -247,6 +253,21 @@ export default { | ||
247 | created() { | 253 | created() { |
248 | this.getSuperFieldList(); | 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 | computed: { | 271 | computed: { |
251 | importExcelUrl: function () { | 272 | importExcelUrl: function () { |
252 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 273 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue
@@ -12,8 +12,11 @@ | @@ -12,8 +12,11 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button v-has="'materialMultiple:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 20 | @change="handleImportExcel"> |
18 | <a-button type="primary" icon="import">导入</a-button> | 21 | <a-button type="primary" icon="import">导入</a-button> |
19 | </a-upload> | 22 | </a-upload> |
@@ -28,6 +31,9 @@ | @@ -28,6 +31,9 @@ | ||
28 | <a-icon type="down"/> | 31 | <a-icon type="down"/> |
29 | </a-button> | 32 | </a-button> |
30 | </a-dropdown> | 33 | </a-dropdown> |
34 | + | ||
35 | + <j-super-query :fieldList="superFieldList" v-has="'materialMultiple:superQuery'" | ||
36 | + @handleSuperQuery="handleSuperQuery"/> | ||
31 | </div> | 37 | </div> |
32 | 38 | ||
33 | <!-- table区域-begin --> | 39 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue
@@ -28,8 +28,10 @@ | @@ -28,8 +28,10 @@ | ||
28 | <!-- 操作按钮区域 --> | 28 | <!-- 操作按钮区域 --> |
29 | <div class="table-operator"> | 29 | <div class="table-operator"> |
30 | <a-button v-has="'materialType:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 35 | @change="handleImportExcel"> |
34 | <a-button type="primary" icon="import">导入</a-button> | 36 | <a-button type="primary" icon="import">导入</a-button> |
35 | </a-upload> | 37 | </a-upload> |
@@ -44,6 +46,9 @@ | @@ -44,6 +46,9 @@ | ||
44 | <a-icon type="down"/> | 46 | <a-icon type="down"/> |
45 | </a-button> | 47 | </a-button> |
46 | </a-dropdown> | 48 | </a-dropdown> |
49 | + | ||
50 | + <j-super-query :fieldList="superFieldList" v-has="'materialType:superQuery'" | ||
51 | + @handleSuperQuery="handleSuperQuery"/> | ||
47 | </div> | 52 | </div> |
48 | 53 | ||
49 | <!-- table区域-begin --> | 54 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue
@@ -33,8 +33,10 @@ | @@ -33,8 +33,10 @@ | ||
33 | <!-- 操作按钮区域 --> | 33 | <!-- 操作按钮区域 --> |
34 | <div class="table-operator"> | 34 | <div class="table-operator"> |
35 | <a-button v-has="'materialUnit:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 40 | @change="handleImportExcel"> |
39 | <a-button type="primary" icon="import">导入</a-button> | 41 | <a-button type="primary" icon="import">导入</a-button> |
40 | </a-upload> | 42 | </a-upload> |
@@ -49,6 +51,9 @@ | @@ -49,6 +51,9 @@ | ||
49 | <a-icon type="down"/> | 51 | <a-icon type="down"/> |
50 | </a-button> | 52 | </a-button> |
51 | </a-dropdown> | 53 | </a-dropdown> |
54 | + | ||
55 | + <j-super-query :fieldList="superFieldList" v-has="'materialUnit:superQuery'" | ||
56 | + @handleSuperQuery="handleSuperQuery"/> | ||
52 | </div> | 57 | </div> |
53 | 58 | ||
54 | <!-- table区域-begin --> | 59 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue
@@ -32,8 +32,11 @@ | @@ -32,8 +32,11 @@ | ||
32 | <!-- 操作按钮区域 --> | 32 | <!-- 操作按钮区域 --> |
33 | <div class="table-operator"> | 33 | <div class="table-operator"> |
34 | <a-button v-has="'materialWarning:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 40 | @change="handleImportExcel"> |
38 | <a-button type="primary" icon="import">导入</a-button> | 41 | <a-button type="primary" icon="import">导入</a-button> |
39 | </a-upload> | 42 | </a-upload> |
@@ -48,6 +51,9 @@ | @@ -48,6 +51,9 @@ | ||
48 | <a-icon type="down"/> | 51 | <a-icon type="down"/> |
49 | </a-button> | 52 | </a-button> |
50 | </a-dropdown> | 53 | </a-dropdown> |
54 | + | ||
55 | + <j-super-query :fieldList="superFieldList" v-has="'materialWarning:superQuery'" | ||
56 | + @handleSuperQuery="handleSuperQuery"/> | ||
51 | </div> | 57 | </div> |
52 | 58 | ||
53 | <!-- table区域-begin --> | 59 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
@@ -53,8 +53,11 @@ | @@ -53,8 +53,11 @@ | ||
53 | <!-- 操作按钮区域 --> | 53 | <!-- 操作按钮区域 --> |
54 | <div class="table-operator"> | 54 | <div class="table-operator"> |
55 | <a-button @click="handleAdd" v-has="'parameterConfiguration:add'" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 61 | @change="handleImportExcel"> |
59 | <a-button type="primary" icon="import">导入</a-button> | 62 | <a-button type="primary" icon="import">导入</a-button> |
60 | </a-upload> | 63 | </a-upload> |
@@ -69,6 +72,9 @@ | @@ -69,6 +72,9 @@ | ||
69 | <a-icon type="down"/> | 72 | <a-icon type="down"/> |
70 | </a-button> | 73 | </a-button> |
71 | </a-dropdown> | 74 | </a-dropdown> |
75 | + <j-super-query :fieldList="superFieldList" v-has="'ParameterConfiguration:superQuery'" | ||
76 | + @handleSuperQuery="handleSuperQuery"/> | ||
77 | + | ||
72 | </div> | 78 | </div> |
73 | 79 | ||
74 | <!-- table区域-begin --> | 80 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/PortList.vue
@@ -56,6 +56,8 @@ | @@ -56,6 +56,8 @@ | ||
56 | <a-icon type="down"/> | 56 | <a-icon type="down"/> |
57 | </a-button> | 57 | </a-button> |
58 | </a-dropdown> | 58 | </a-dropdown> |
59 | + <j-super-query :fieldList="superFieldList" v-has="'port:superQuery'" | ||
60 | + @handleSuperQuery="handleSuperQuery"/> | ||
59 | </div> | 61 | </div> |
60 | 62 | ||
61 | <!-- table区域-begin --> | 63 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/SupplierList.vue
@@ -39,8 +39,10 @@ | @@ -39,8 +39,10 @@ | ||
39 | <!-- 操作按钮区域 --> | 39 | <!-- 操作按钮区域 --> |
40 | <div class="table-operator"> | 40 | <div class="table-operator"> |
41 | <a-button v-has="'supplier:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 46 | @change="handleImportExcel"> |
45 | <a-button type="primary" icon="import">导入</a-button> | 47 | <a-button type="primary" icon="import">导入</a-button> |
46 | </a-upload> | 48 | </a-upload> |
@@ -55,6 +57,8 @@ | @@ -55,6 +57,8 @@ | ||
55 | <a-icon type="down"/> | 57 | <a-icon type="down"/> |
56 | </a-button> | 58 | </a-button> |
57 | </a-dropdown> | 59 | </a-dropdown> |
60 | + | ||
61 | + <j-super-query :fieldList="superFieldList" v-has="'supplier:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
58 | </div> | 62 | </div> |
59 | 63 | ||
60 | <!-- table区域-begin --> | 64 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue
@@ -39,8 +39,10 @@ | @@ -39,8 +39,10 @@ | ||
39 | <!-- 操作按钮区域 --> | 39 | <!-- 操作按钮区域 --> |
40 | <div class="table-operator"> | 40 | <div class="table-operator"> |
41 | <a-button v-has="'warehouse:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | @change="handleImportExcel"> | 46 | @change="handleImportExcel"> |
45 | <a-button type="primary" icon="import">导入</a-button> | 47 | <a-button type="primary" icon="import">导入</a-button> |
46 | </a-upload> | 48 | </a-upload> |
@@ -50,6 +52,8 @@ | @@ -50,6 +52,8 @@ | ||
50 | <!-- </a-menu>--> | 52 | <!-- </a-menu>--> |
51 | <!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>--> | 53 | <!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>--> |
52 | <!-- </a-dropdown>--> | 54 | <!-- </a-dropdown>--> |
55 | + <j-super-query :fieldList="superFieldList" v-has="'warehouse:superQuery'" | ||
56 | + @handleSuperQuery="handleSuperQuery"/> | ||
53 | </div> | 57 | </div> |
54 | 58 | ||
55 | <!-- table区域-begin --> | 59 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/config/ZoneList.vue
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 20 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
21 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 21 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
22 | {{ toggleSearchStatus ? '收起' : '展开' }} | 22 | {{ toggleSearchStatus ? '收起' : '展开' }} |
23 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | 23 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
24 | </a> | 24 | </a> |
25 | </span> | 25 | </span> |
26 | </a-col> | 26 | </a-col> |
@@ -33,7 +33,8 @@ | @@ -33,7 +33,8 @@ | ||
33 | <div class="table-operator"> | 33 | <div class="table-operator"> |
34 | <a-button v-has="'zone:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 34 | <a-button v-has="'zone:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
35 | <a-button v-has="'zone:export'" type="primary" icon="download" @click="handleExportXls('库区管理')" | 35 | <a-button v-has="'zone:export'" type="primary" icon="download" @click="handleExportXls('库区管理')" |
36 | - >导出</a-button | 36 | + >导出 |
37 | + </a-button | ||
37 | > | 38 | > |
38 | <a-upload | 39 | <a-upload |
39 | v-has="'zone:import'" | 40 | v-has="'zone:import'" |
@@ -49,15 +50,16 @@ | @@ -49,15 +50,16 @@ | ||
49 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 50 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
50 | <a-menu slot="overlay" v-has="'zone:deleteBatch'"> | 51 | <a-menu slot="overlay" v-has="'zone:deleteBatch'"> |
51 | <a-menu-item key="1" @click="batchDel"> | 52 | <a-menu-item key="1" @click="batchDel"> |
52 | - <a-icon type="delete" /> | 53 | + <a-icon type="delete"/> |
53 | 删除 | 54 | 删除 |
54 | </a-menu-item> | 55 | </a-menu-item> |
55 | </a-menu> | 56 | </a-menu> |
56 | <a-button style="margin-left: 8px"> | 57 | <a-button style="margin-left: 8px"> |
57 | 批量操作 | 58 | 批量操作 |
58 | - <a-icon type="down" /> | 59 | + <a-icon type="down"/> |
59 | </a-button> | 60 | </a-button> |
60 | </a-dropdown> | 61 | </a-dropdown> |
62 | + <j-super-query :fieldList="superFieldList" v-has="'zone:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
61 | </div> | 63 | </div> |
62 | 64 | ||
63 | <!-- table区域-begin --> | 65 | <!-- table区域-begin --> |
@@ -82,7 +84,7 @@ | @@ -82,7 +84,7 @@ | ||
82 | class="j-table-force-nowrap" | 84 | class="j-table-force-nowrap" |
83 | @change="handleTableChange" | 85 | @change="handleTableChange" |
84 | > | 86 | > |
85 | - <span slot="locationTypeCodes" slot-scope="locationTypeCodes" > | 87 | + <span slot="locationTypeCodes" slot-scope="locationTypeCodes"> |
86 | <a-tag v-for="locationTypeCode in locationTypeCodes" :key="locationTypeCode" color=pink> | 88 | <a-tag v-for="locationTypeCode in locationTypeCodes" :key="locationTypeCode" color=pink> |
87 | {{ solutionLocationType(locationTypeCode) }} | 89 | {{ solutionLocationType(locationTypeCode) }} |
88 | </a-tag> | 90 | </a-tag> |
@@ -133,10 +135,10 @@ | @@ -133,10 +135,10 @@ | ||
133 | 135 | ||
134 | <script> | 136 | <script> |
135 | import '@/assets/less/TableExpand.less' | 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 | import ZoneModal from './modules/ZoneModal' | 140 | import ZoneModal from './modules/ZoneModal' |
139 | -import { getLocationTypeList } from '@/api/api' | 141 | +import {getLocationTypeList} from '@/api/api' |
140 | 142 | ||
141 | export default { | 143 | export default { |
142 | name: 'ZoneList', | 144 | name: 'ZoneList', |
@@ -156,7 +158,7 @@ export default { | @@ -156,7 +158,7 @@ export default { | ||
156 | key: 'rowIndex', | 158 | key: 'rowIndex', |
157 | width: 60, | 159 | width: 60, |
158 | align: 'center', | 160 | align: 'center', |
159 | - customRender: function(t, r, index) { | 161 | + customRender: function (t, r, index) { |
160 | return parseInt(index) + 1 | 162 | return parseInt(index) + 1 |
161 | } | 163 | } |
162 | }, | 164 | }, |
@@ -203,7 +205,7 @@ export default { | @@ -203,7 +205,7 @@ export default { | ||
203 | align: 'center', | 205 | align: 'center', |
204 | fixed: 'right', | 206 | fixed: 'right', |
205 | width: 147, | 207 | width: 147, |
206 | - scopedSlots: { customRender: 'action' } | 208 | + scopedSlots: {customRender: 'action'} |
207 | } | 209 | } |
208 | ], | 210 | ], |
209 | url: { | 211 | url: { |
@@ -222,22 +224,23 @@ export default { | @@ -222,22 +224,23 @@ export default { | ||
222 | this.loadFrom() | 224 | this.loadFrom() |
223 | }, | 225 | }, |
224 | computed: { | 226 | computed: { |
225 | - importExcelUrl: function() { | 227 | + importExcelUrl: function () { |
226 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 228 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
227 | } | 229 | } |
228 | }, | 230 | }, |
229 | methods: { | 231 | methods: { |
230 | - initDictConfig() {}, | 232 | + initDictConfig() { |
233 | + }, | ||
231 | getSuperFieldList() { | 234 | getSuperFieldList() { |
232 | let fieldList = [] | 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 | this.superFieldList = fieldList | 244 | this.superFieldList = fieldList |
242 | }, | 245 | }, |
243 | loadFrom() { | 246 | loadFrom() { |
ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | </a-col> | 47 | </a-col> |
48 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 48 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
49 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 51 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
52 | <!-- <a @click="handleToggleSearch" style="margin-left: 8px"> | 52 | <!-- <a @click="handleToggleSearch" style="margin-left: 8px"> |
53 | {{ toggleSearchStatus ? '收起' : '展开' }} | 53 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -70,6 +70,7 @@ | @@ -70,6 +70,7 @@ | ||
70 | </a-upload> | 70 | </a-upload> |
71 | <a-button v-has="'inventoryHeader:quickShipmentInventoryHeader'" @click="quickShipment()" type="primary">快速出库</a-button> | 71 | <a-button v-has="'inventoryHeader:quickShipmentInventoryHeader'" @click="quickShipment()" type="primary">快速出库</a-button> |
72 | <a-button v-has="'inventoryHeader:together'" @click="together()" type="primary">合托</a-button> | 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 | </div> | 74 | </div> |
74 | 75 | ||
75 | <!-- table区域-begin --> | 76 | <!-- table区域-begin --> |
@@ -183,6 +184,7 @@ export default { | @@ -183,6 +184,7 @@ export default { | ||
183 | zoneList: [], | 184 | zoneList: [], |
184 | description: '库存表管理页面', | 185 | description: '库存表管理页面', |
185 | zoneOptions:[], | 186 | zoneOptions:[], |
187 | + firstLoad:0, | ||
186 | // 表头 | 188 | // 表头 |
187 | columns: [ | 189 | columns: [ |
188 | { | 190 | { |
@@ -285,6 +287,21 @@ export default { | @@ -285,6 +287,21 @@ export default { | ||
285 | this.getSuperFieldList(); | 287 | this.getSuperFieldList(); |
286 | this.loadFrom(); | 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 | computed: { | 305 | computed: { |
289 | importExcelUrl: function () { | 306 | importExcelUrl: function () { |
290 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 307 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a-row :gutter="24"> | 6 | <a-row :gutter="24"> |
7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | <a-form-item label="库区"> | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | 9 | + <a-form-model-item prop="zoneOptions"> |
10 | <j-multi-select-tag | 10 | <j-multi-select-tag |
11 | v-model="queryParam.zoneCode" | 11 | v-model="queryParam.zoneCode" |
12 | :options="zoneOptions" | 12 | :options="zoneOptions" |
@@ -53,11 +53,11 @@ | @@ -53,11 +53,11 @@ | ||
53 | </template> | 53 | </template> |
54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
55 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 57 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
58 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 58 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
59 | {{ toggleSearchStatus ? '收起' : '展开' }} | 59 | {{ toggleSearchStatus ? '收起' : '展开' }} |
60 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | 60 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
61 | </a> | 61 | </a> |
62 | </span> | 62 | </span> |
63 | </a-col> | 63 | </a-col> |
@@ -69,7 +69,11 @@ | @@ -69,7 +69,11 @@ | ||
69 | <!-- 操作按钮区域 --> | 69 | <!-- 操作按钮区域 --> |
70 | <div class="table-operator"> | 70 | <div class="table-operator"> |
71 | <!-- <a-button v-has="'inventoryMaterialSummary:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> --> | 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 | </div> | 77 | </div> |
74 | 78 | ||
75 | <!-- table区域-begin --> | 79 | <!-- table区域-begin --> |
@@ -110,7 +114,7 @@ | @@ -110,7 +114,7 @@ | ||
110 | 114 | ||
111 | <a-tabs defaultActiveKey="1"> | 115 | <a-tabs defaultActiveKey="1"> |
112 | <a-tab-pane tab="库存详情" key="1"> | 116 | <a-tab-pane tab="库存详情" key="1"> |
113 | - <InventoryDetailSubTable :mainId="selectedMainId" /> | 117 | + <InventoryDetailSubTable :mainId="selectedMainId"/> |
114 | </a-tab-pane> | 118 | </a-tab-pane> |
115 | </a-tabs> | 119 | </a-tabs> |
116 | 120 | ||
@@ -120,10 +124,10 @@ | @@ -120,10 +124,10 @@ | ||
120 | 124 | ||
121 | <script> | 125 | <script> |
122 | import '@/assets/less/TableExpand.less' | 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 | // import InventoryDetailList from './InventoryDetailList' | 131 | // import InventoryDetailList from './InventoryDetailList' |
128 | import InventoryDetailSubTable from './subTables/InventoryDetailSubTable' | 132 | import InventoryDetailSubTable from './subTables/InventoryDetailSubTable' |
129 | 133 | ||
@@ -136,9 +140,10 @@ export default { | @@ -136,9 +140,10 @@ export default { | ||
136 | data() { | 140 | data() { |
137 | return { | 141 | return { |
138 | zoneList: [], | 142 | zoneList: [], |
139 | - zoneOptions:[], | 143 | + zoneOptions: [], |
140 | companyList: [], | 144 | companyList: [], |
141 | selectedMainId: '', | 145 | selectedMainId: '', |
146 | + firstLoad:0, | ||
142 | description: '物料汇总主表管理页面', | 147 | description: '物料汇总主表管理页面', |
143 | // 表头 | 148 | // 表头 |
144 | columns: [ | 149 | columns: [ |
@@ -147,14 +152,14 @@ export default { | @@ -147,14 +152,14 @@ export default { | ||
147 | align: 'center', | 152 | align: 'center', |
148 | dataIndex: 'zoneCode', | 153 | dataIndex: 'zoneCode', |
149 | key: 'zoneCode', | 154 | key: 'zoneCode', |
150 | - scopedSlots: { customRender: 'zoneCode' } | 155 | + scopedSlots: {customRender: 'zoneCode'} |
151 | }, | 156 | }, |
152 | { | 157 | { |
153 | title: '货主', | 158 | title: '货主', |
154 | align: 'center', | 159 | align: 'center', |
155 | dataIndex: 'companyCode', | 160 | dataIndex: 'companyCode', |
156 | key: 'companyCode', | 161 | key: 'companyCode', |
157 | - scopedSlots: { customRender: 'companyCode' } | 162 | + scopedSlots: {customRender: 'companyCode'} |
158 | }, | 163 | }, |
159 | { | 164 | { |
160 | title: '物料编码', | 165 | title: '物料编码', |
@@ -195,8 +200,23 @@ export default { | @@ -195,8 +200,23 @@ export default { | ||
195 | this.getSuperFieldList() | 200 | this.getSuperFieldList() |
196 | this.loadFrom() | 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 | computed: { | 218 | computed: { |
199 | - importExcelUrl: function() { | 219 | + importExcelUrl: function () { |
200 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 220 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
201 | } | 221 | } |
202 | }, | 222 | }, |
@@ -239,13 +259,13 @@ export default { | @@ -239,13 +259,13 @@ export default { | ||
239 | if (res.success) { | 259 | if (res.success) { |
240 | this.zoneList = res.result | 260 | this.zoneList = res.result |
241 | //延迟半秒执行,避免组件未加载完,数据已经加载完 | 261 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
242 | - setTimeout(()=>{ | 262 | + setTimeout(() => { |
243 | //slice可以在数组的任何位置进行删除/添加操作 | 263 | //slice可以在数组的任何位置进行删除/添加操作 |
244 | this.zoneOptions.splice(0, 1); | 264 | this.zoneOptions.splice(0, 1); |
245 | for (let i = 0; i < res.result.length; i++) { | 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 | ajaxGetDictItems('box_type').then(res => { | 271 | ajaxGetDictItems('box_type').then(res => { |
@@ -269,7 +289,7 @@ export default { | @@ -269,7 +289,7 @@ export default { | ||
269 | } | 289 | } |
270 | }, | 290 | }, |
271 | onSelectChange(selectedRowKeys, selectionRows) { | 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 | this.selectedRowKeys = selectedRowKeys | 293 | this.selectedRowKeys = selectedRowKeys |
274 | this.selectionRows = selectionRows | 294 | this.selectionRows = selectionRows |
275 | }, | 295 | }, |
@@ -278,16 +298,17 @@ export default { | @@ -278,16 +298,17 @@ export default { | ||
278 | this.selectedRowKeys = [] | 298 | this.selectedRowKeys = [] |
279 | this.selectionRows = [] | 299 | this.selectionRows = [] |
280 | }, | 300 | }, |
281 | - initDictConfig() {}, | 301 | + initDictConfig() { |
302 | + }, | ||
282 | getSuperFieldList() { | 303 | getSuperFieldList() { |
283 | let fieldList = [] | 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 | this.superFieldList = fieldList | 312 | this.superFieldList = fieldList |
292 | } | 313 | } |
293 | } | 314 | } |
ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a-row :gutter="24"> | 6 | <a-row :gutter="24"> |
7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | <a-form-item label="库区"> | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | 9 | + <a-form-model-item prop="zoneOptions"> |
10 | <j-multi-select-tag | 10 | <j-multi-select-tag |
11 | v-model="queryParam.zoneCode" | 11 | v-model="queryParam.zoneCode" |
12 | :options="zoneOptions" | 12 | :options="zoneOptions" |
@@ -51,12 +51,14 @@ | @@ -51,12 +51,14 @@ | ||
51 | </a-col> | 51 | </a-col> |
52 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 52 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
53 | <a-form-item label="交易类型"> | 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 | </a-form-item> | 56 | </a-form-item> |
56 | </a-col> | 57 | </a-col> |
57 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 58 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
58 | <a-form-item label="库存状态"> | 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 | </a-form-item> | 62 | </a-form-item> |
61 | </a-col> | 63 | </a-col> |
62 | <template v-if="toggleSearchStatus"> | 64 | <template v-if="toggleSearchStatus"> |
@@ -102,7 +104,7 @@ | @@ -102,7 +104,7 @@ | ||
102 | </template> | 104 | </template> |
103 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 105 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
104 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 108 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
107 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 109 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
108 | {{ toggleSearchStatus ? '收起' : '展开' }} | 110 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -117,10 +119,15 @@ | @@ -117,10 +119,15 @@ | ||
117 | 119 | ||
118 | <!-- 操作按钮区域 --> | 120 | <!-- 操作按钮区域 --> |
119 | <div class="table-operator"> | 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 | <a-button type="primary" icon="import">导入</a-button> | 127 | <a-button type="primary" icon="import">导入</a-button> |
123 | </a-upload> | 128 | </a-upload> |
129 | + <j-super-query :fieldList="superFieldList" v-has="'inventoryTransaction:superQuery'" | ||
130 | + @handleSuperQuery="handleSuperQuery"/> | ||
124 | </div> | 131 | </div> |
125 | 132 | ||
126 | <!-- table区域-begin --> | 133 | <!-- table区域-begin --> |
@@ -218,7 +225,8 @@ export default { | @@ -218,7 +225,8 @@ export default { | ||
218 | description: '库存交易记录管理页面', | 225 | description: '库存交易记录管理页面', |
219 | companyList: [], | 226 | companyList: [], |
220 | zoneList: [], | 227 | zoneList: [], |
221 | - zoneOptions:[], | 228 | + zoneOptions: [], |
229 | + firstLoad:0, | ||
222 | // 表头 | 230 | // 表头 |
223 | columns: [ | 231 | columns: [ |
224 | { | 232 | { |
@@ -233,7 +241,7 @@ export default { | @@ -233,7 +241,7 @@ export default { | ||
233 | align: 'center', | 241 | align: 'center', |
234 | dataIndex: 'zoneCode', | 242 | dataIndex: 'zoneCode', |
235 | key: 'zoneCode', | 243 | key: 'zoneCode', |
236 | - scopedSlots: { customRender: 'zoneCode' } | 244 | + scopedSlots: {customRender: 'zoneCode'} |
237 | }, | 245 | }, |
238 | // { | 246 | // { |
239 | // title: '货主', | 247 | // title: '货主', |
@@ -363,6 +371,21 @@ export default { | @@ -363,6 +371,21 @@ export default { | ||
363 | this.getSuperFieldList(); | 371 | this.getSuperFieldList(); |
364 | this.loadFrom(); | 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 | computed: { | 389 | computed: { |
367 | importExcelUrl: function () { | 390 | importExcelUrl: function () { |
368 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 391 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
@@ -386,13 +409,13 @@ export default { | @@ -386,13 +409,13 @@ export default { | ||
386 | if (res.success) { | 409 | if (res.success) { |
387 | this.zoneList = res.result | 410 | this.zoneList = res.result |
388 | //延迟半秒执行,避免组件未加载完,数据已经加载完 | 411 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
389 | - setTimeout(()=>{ | 412 | + setTimeout(() => { |
390 | //slice可以在数组的任何位置进行删除/添加操作 | 413 | //slice可以在数组的任何位置进行删除/添加操作 |
391 | this.zoneOptions.splice(0, 1); | 414 | this.zoneOptions.splice(0, 1); |
392 | for (let i = 0; i < res.result.length; i++) { | 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 | getCompanyList().then((res) => { | 421 | getCompanyList().then((res) => { |
ant-design-vue-jeecg/src/views/system/inventory/SimpleInventoryDetailList.vue
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | <a-row :gutter="24"> | 6 | <a-row :gutter="24"> |
7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 7 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
8 | <a-form-item label="库区"> | 8 | <a-form-item label="库区"> |
9 | - <a-form-model-item prop="zoneOptions"> | 9 | + <a-form-model-item prop="zoneOptions"> |
10 | <j-multi-select-tag | 10 | <j-multi-select-tag |
11 | v-model="queryParam.zoneCode" | 11 | v-model="queryParam.zoneCode" |
12 | :options="zoneOptions" | 12 | :options="zoneOptions" |
@@ -105,7 +105,7 @@ | @@ -105,7 +105,7 @@ | ||
105 | </template> | 105 | </template> |
106 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 106 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
107 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 109 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
110 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 110 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
111 | {{ toggleSearchStatus ? '收起' : '展开' }} | 111 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -120,6 +120,7 @@ | @@ -120,6 +120,7 @@ | ||
120 | 120 | ||
121 | <!-- 操作按钮区域 --> | 121 | <!-- 操作按钮区域 --> |
122 | <div class="table-operator"> | 122 | <div class="table-operator"> |
123 | + | ||
123 | <a-button v-has="'inventoryDetail:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 124 | <a-button v-has="'inventoryDetail:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> |
124 | <a-button v-has="'inventoryDetail:export'" type="primary" icon="download" @click="handleExportXls('库存详情')" | 125 | <a-button v-has="'inventoryDetail:export'" type="primary" icon="download" @click="handleExportXls('库存详情')" |
125 | >导出 | 126 | >导出 |
@@ -137,15 +138,14 @@ | @@ -137,15 +138,14 @@ | ||
137 | <a-button type="primary" icon="import">导入</a-button> | 138 | <a-button type="primary" icon="import">导入</a-button> |
138 | </a-upload> | 139 | </a-upload> |
139 | <a-button v-has="'inventoryDetail:controller'" @click='controller()' type='primary'>冻结</a-button> | 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 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> | 149 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> |
150 | <!-- <a-menu slot="overlay">--> | 150 | <!-- <a-menu slot="overlay">--> |
151 | <!-- <a-menu-item v-has="'inventoryDetail:delete'" key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>--> | 151 | <!-- <a-menu-item v-has="'inventoryDetail:delete'" key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>--> |
@@ -156,10 +156,11 @@ | @@ -156,10 +156,11 @@ | ||
156 | 156 | ||
157 | <!-- table区域-begin --> | 157 | <!-- table区域-begin --> |
158 | <div> | 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 | <a-table | 165 | <a-table |
165 | ref="table" | 166 | ref="table" |
@@ -220,7 +221,8 @@ | @@ -220,7 +221,8 @@ | ||
220 | </template> | 221 | </template> |
221 | <template slot="fileSlot" slot-scope="text"> | 222 | <template slot="fileSlot" slot-scope="text"> |
222 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | 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 | </template> | 226 | </template> |
225 | <span slot="action" slot-scope="text, record"> | 227 | <span slot="action" slot-scope="text, record"> |
226 | <a v-has="'inventoryDetail:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical"/></a> | 228 | <a v-has="'inventoryDetail:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical"/></a> |
@@ -242,7 +244,7 @@ import {mixinDevice} from '@/utils/mixin' | @@ -242,7 +244,7 @@ import {mixinDevice} from '@/utils/mixin' | ||
242 | import {JeecgListMixin} from '@/mixins/JeecgListMixin' | 244 | import {JeecgListMixin} from '@/mixins/JeecgListMixin' |
243 | import SimpleInventoryDetailModal from './modules/SimpleInventoryDetailModal' | 245 | import SimpleInventoryDetailModal from './modules/SimpleInventoryDetailModal' |
244 | import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' | 246 | import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' |
245 | -import {getCompanyList, getZoneList, } from "@api/api"; | 247 | +import {getCompanyList, getZoneList,} from "@api/api"; |
246 | import {postAction} from '@/api/manage' | 248 | import {postAction} from '@/api/manage' |
247 | import QuickShipmentDetailModel from "@views/system/shipment/modules/QuickShipmentDetailModal"; | 249 | import QuickShipmentDetailModel from "@views/system/shipment/modules/QuickShipmentDetailModal"; |
248 | 250 | ||
@@ -256,8 +258,9 @@ export default { | @@ -256,8 +258,9 @@ export default { | ||
256 | data() { | 258 | data() { |
257 | return { | 259 | return { |
258 | zoneList: [], | 260 | zoneList: [], |
259 | - zoneOptions:[], | 261 | + zoneOptions: [], |
260 | companyList: [], | 262 | companyList: [], |
263 | + firstLoad:0, | ||
261 | description: '库存详情管理页面', | 264 | description: '库存详情管理页面', |
262 | // 表头 | 265 | // 表头 |
263 | columns: [ | 266 | columns: [ |
@@ -409,13 +412,28 @@ export default { | @@ -409,13 +412,28 @@ export default { | ||
409 | }, | 412 | }, |
410 | dictOptions: {}, | 413 | dictOptions: {}, |
411 | superFieldList: [], | 414 | superFieldList: [], |
412 | - selectRecord:[], | 415 | + selectRecord: [], |
413 | } | 416 | } |
414 | }, | 417 | }, |
415 | created() { | 418 | created() { |
416 | this.loadFrom() | 419 | this.loadFrom() |
417 | this.getSuperFieldList() | 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 | computed: { | 437 | computed: { |
420 | importExcelUrl: function () { | 438 | importExcelUrl: function () { |
421 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 439 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
@@ -438,13 +456,13 @@ export default { | @@ -438,13 +456,13 @@ export default { | ||
438 | if (res.success) { | 456 | if (res.success) { |
439 | this.zoneList = res.result | 457 | this.zoneList = res.result |
440 | //延迟半秒执行,避免组件未加载完,数据已经加载完 | 458 | //延迟半秒执行,避免组件未加载完,数据已经加载完 |
441 | - setTimeout(()=>{ | 459 | + setTimeout(() => { |
442 | //slice可以在数组的任何位置进行删除/添加操作 | 460 | //slice可以在数组的任何位置进行删除/添加操作 |
443 | this.zoneOptions.splice(0, 1); | 461 | this.zoneOptions.splice(0, 1); |
444 | for (let i = 0; i < res.result.length; i++) { | 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 | getCompanyList().then(res => { | 468 | getCompanyList().then(res => { |
@@ -453,7 +471,7 @@ export default { | @@ -453,7 +471,7 @@ export default { | ||
453 | } | 471 | } |
454 | }) | 472 | }) |
455 | }, | 473 | }, |
456 | - controller: function() { | 474 | + controller: function () { |
457 | if (this.selectedRowKeys.length <= 0) { | 475 | if (this.selectedRowKeys.length <= 0) { |
458 | this.$message.warning('请选择一条记录!') | 476 | this.$message.warning('请选择一条记录!') |
459 | } else { | 477 | } else { |
@@ -461,7 +479,7 @@ export default { | @@ -461,7 +479,7 @@ export default { | ||
461 | this.$confirm({ | 479 | this.$confirm({ |
462 | title: '确认冻结', | 480 | title: '确认冻结', |
463 | content: '是否冻结选中数据?', | 481 | content: '是否冻结选中数据?', |
464 | - onOk: function() { | 482 | + onOk: function () { |
465 | that.loading = true; | 483 | that.loading = true; |
466 | postAction(that.url.controller, that.selectedRowKeys).then((res) => { | 484 | postAction(that.url.controller, that.selectedRowKeys).then((res) => { |
467 | if (res.success) { | 485 | if (res.success) { |
@@ -489,7 +507,7 @@ export default { | @@ -489,7 +507,7 @@ export default { | ||
489 | this.$confirm({ | 507 | this.$confirm({ |
490 | title: '释放冻结', | 508 | title: '释放冻结', |
491 | content: '释放冻结选中数据?', | 509 | content: '释放冻结选中数据?', |
492 | - onOk: function() { | 510 | + onOk: function () { |
493 | that.loading = true; | 511 | that.loading = true; |
494 | postAction(that.url.releaseController, that.selectedRowKeys).then((res) => { | 512 | postAction(that.url.releaseController, that.selectedRowKeys).then((res) => { |
495 | if (res.success) { | 513 | if (res.success) { |
ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
@@ -6,7 +6,8 @@ | @@ -6,7 +6,8 @@ | ||
6 | <a-row :gutter="24"> | 6 | <a-row :gutter="24"> |
7 | <a-col :xl='6' :lg='7' :md='8' :sm='24'> | 7 | <a-col :xl='6' :lg='7' :md='8' :sm='24'> |
8 | <a-form-item label='接口名称'> | 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 | <a-select-option v-for='name in apiNameList' :key='name' :value='name'> | 11 | <a-select-option v-for='name in apiNameList' :key='name' :value='name'> |
11 | {{ name }} | 12 | {{ name }} |
12 | </a-select-option> | 13 | </a-select-option> |
@@ -73,7 +74,7 @@ | @@ -73,7 +74,7 @@ | ||
73 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 74 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
74 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 75 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
75 | {{ toggleSearchStatus ? '收起' : '展开' }} | 76 | {{ toggleSearchStatus ? '收起' : '展开' }} |
76 | - <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> | 77 | + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
77 | </a> | 78 | </a> |
78 | </span> | 79 | </span> |
79 | </a-col> | 80 | </a-col> |
@@ -85,7 +86,10 @@ | @@ -85,7 +86,10 @@ | ||
85 | <!-- 操作按钮区域 --> | 86 | <!-- 操作按钮区域 --> |
86 | <div class="table-operator"> | 87 | <div class="table-operator"> |
87 | <a-button v-has="'apiLog:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | </div> | 93 | </div> |
90 | 94 | ||
91 | <!-- table区域-begin --> | 95 | <!-- table区域-begin --> |
@@ -106,22 +110,40 @@ | @@ -106,22 +110,40 @@ | ||
106 | <template :slot="expandedRowRender" slot-scope="record"> | 110 | <template :slot="expandedRowRender" slot-scope="record"> |
107 | <div style="margin: 0"> | 111 | <div style="margin: 0"> |
108 | <div> | 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 | </div> | 123 | </div> |
114 | <div> | 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 | </div> | 131 | </div> |
118 | <div> | 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 | </div> | 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 | </div> | 147 | </div> |
126 | </div> | 148 | </div> |
127 | </template> | 149 | </template> |
@@ -139,8 +161,8 @@ | @@ -139,8 +161,8 @@ | ||
139 | <script> | 161 | <script> |
140 | import moment from 'moment' | 162 | import moment from 'moment' |
141 | import '@/assets/less/TableExpand.less' | 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 | import ApiLogModal from './modules/ApiLogModal' | 166 | import ApiLogModal from './modules/ApiLogModal' |
145 | import JEllipsis from '@comp/jeecg/JEllipsis' | 167 | import JEllipsis from '@comp/jeecg/JEllipsis' |
146 | import {getApiNameList} from '@api/api' | 168 | import {getApiNameList} from '@api/api' |
@@ -238,7 +260,7 @@ export default { | @@ -238,7 +260,7 @@ export default { | ||
238 | this.expandedRowRender = "expandedRowRender"; | 260 | this.expandedRowRender = "expandedRowRender"; |
239 | }, | 261 | }, |
240 | computed: { | 262 | computed: { |
241 | - importExcelUrl: function() { | 263 | + importExcelUrl: function () { |
242 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` | 264 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` |
243 | } | 265 | } |
244 | }, | 266 | }, |
@@ -272,26 +294,27 @@ export default { | @@ -272,26 +294,27 @@ export default { | ||
272 | 294 | ||
273 | clipboard.onClick(event); // 添加这一行来触发点击事件 | 295 | clipboard.onClick(event); // 添加这一行来触发点击事件 |
274 | }, | 296 | }, |
275 | - initDictConfig() {}, | 297 | + initDictConfig() { |
298 | + }, | ||
276 | getSuperFieldList() { | 299 | getSuperFieldList() { |
277 | let fieldList = [] | 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 | this.superFieldList = fieldList | 318 | this.superFieldList = fieldList |
296 | } | 319 | } |
297 | } | 320 | } |
ant-design-vue-jeecg/src/views/system/monitor/ApkInfoList.vue
@@ -53,23 +53,31 @@ | @@ -53,23 +53,31 @@ | ||
53 | </a-upload> | 53 | </a-upload> |
54 | <!--<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> | 54 | <!--<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>--> |
55 | <a-button type="primary" icon="download" @click="handleExportXls('apk_info')">导出</a-button> | 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 | <a-button type="primary" icon="import">导入</a-button> | 58 | <a-button type="primary" icon="import">导入</a-button> |
58 | </a-upload> | 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 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 63 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
62 | <a-menu slot="overlay"> | 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 | </a-menu> | 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 | </a-dropdown> | 73 | </a-dropdown> |
67 | </div> | 74 | </div> |
68 | 75 | ||
69 | <!-- table区域-begin --> | 76 | <!-- table区域-begin --> |
70 | <div> | 77 | <div> |
71 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | 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 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> | 81 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
74 | </div> | 82 | </div> |
75 | 83 | ||
@@ -92,7 +100,8 @@ | @@ -92,7 +100,8 @@ | ||
92 | </template> | 100 | </template> |
93 | <template slot="imgSlot" slot-scope="text"> | 101 | <template slot="imgSlot" slot-scope="text"> |
94 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | 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 | </template> | 105 | </template> |
97 | <template slot="fileSlot" slot-scope="text"> | 106 | <template slot="fileSlot" slot-scope="text"> |
98 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | 107 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
@@ -110,9 +119,9 @@ | @@ -110,9 +119,9 @@ | ||
110 | <span slot="action" slot-scope="text, record"> | 119 | <span slot="action" slot-scope="text, record"> |
111 | <a @click="handleEdit(record)">编辑</a> | 120 | <a @click="handleEdit(record)">编辑</a> |
112 | <a @click="handleDetail(record)">详情</a> | 121 | <a @click="handleDetail(record)">详情</a> |
113 | - <a-divider type="vertical" /> | 122 | + <a-divider type="vertical"/> |
114 | <a-dropdown> | 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 | <a-menu slot="overlay"> | 125 | <a-menu slot="overlay"> |
117 | <a-menu-item> | 126 | <a-menu-item> |
118 | <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> | 127 | <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> |
@@ -131,147 +140,147 @@ | @@ -131,147 +140,147 @@ | ||
131 | </template> | 140 | </template> |
132 | 141 | ||
133 | <script> | 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 | this.getSuperFieldList(); | 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 | this.$message.error(`${info.file.response.message}`); | 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 | parent.loadData() | 264 | parent.loadData() |
256 | - }else{ | 265 | + } else { |
257 | alert("解析apk失败!") | 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 | </script> | 283 | </script> |
275 | <style scoped> | 284 | <style scoped> |
276 | - @import '~@assets/less/common.less'; | 285 | +@import '~@assets/less/common.less'; |
277 | </style> | 286 | </style> |
278 | \ No newline at end of file | 287 | \ No newline at end of file |
ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | </a-col> | 11 | </a-col> |
12 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 12 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
13 | <a-form-item label="业务类型"> | 13 | <a-form-item label="业务类型"> |
14 | - <j-input placeholder="请选择业务类型" v-model="queryParam.bizType" /> | 14 | + <j-input placeholder="请选择业务类型" v-model="queryParam.bizType"/> |
15 | </a-form-item> | 15 | </a-form-item> |
16 | </a-col> | 16 | </a-col> |
17 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 17 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
@@ -35,21 +35,31 @@ | @@ -35,21 +35,31 @@ | ||
35 | </a-col> | 35 | </a-col> |
36 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 36 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
37 | <a-form-item label="操作结果状态"> | 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 | </a-form-item> | 40 | </a-form-item> |
40 | </a-col> | 41 | </a-col> |
41 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 42 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
42 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 43 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
43 | <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 47 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
46 | </span> | 48 | </span> |
47 | </a-col> | 49 | </a-col> |
50 | + | ||
48 | </a-row> | 51 | </a-row> |
52 | + | ||
49 | </a-form> | 53 | </a-form> |
50 | </div> | 54 | </div> |
51 | <!-- 查询区域-END --> | 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 | <!-- table区域-begin --> | 63 | <!-- table区域-begin --> |
54 | <div> | 64 | <div> |
55 | <a-table | 65 | <a-table |
@@ -70,7 +80,8 @@ | @@ -70,7 +80,8 @@ | ||
70 | </template> | 80 | </template> |
71 | <template slot="imgSlot" slot-scope="text"> | 81 | <template slot="imgSlot" slot-scope="text"> |
72 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | 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 | </template> | 85 | </template> |
75 | <template slot="fileSlot" slot-scope="text"> | 86 | <template slot="fileSlot" slot-scope="text"> |
76 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | 87 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
@@ -94,130 +105,131 @@ | @@ -94,130 +105,131 @@ | ||
94 | </a-card> | 105 | </a-card> |
95 | </template> | 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 | </script> | 232 | </script> |
221 | <style scoped> | 233 | <style scoped> |
222 | - @import '~@assets/less/common.less'; | 234 | +@import '~@assets/less/common.less'; |
223 | </style> | 235 | </style> |
224 | \ No newline at end of file | 236 | \ No newline at end of file |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | </template> | 52 | </template> |
53 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 53 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
54 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 56 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
57 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 57 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
58 | {{ toggleSearchStatus ? '收起' : '展开' }} | 58 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -75,6 +75,8 @@ | @@ -75,6 +75,8 @@ | ||
75 | <a-button v-has="'receiptContainerHeader:createTask'" @click="createBatchTask" type="primary" >批量生成任务</a-button> | 75 | <a-button v-has="'receiptContainerHeader:createTask'" @click="createBatchTask" type="primary" >批量生成任务</a-button> |
76 | <a-button v-has="'receiptContainerHeader:delete'" @click="cancelBatchTask" type="primary" >批量取消组盘</a-button> | 76 | <a-button v-has="'receiptContainerHeader:delete'" @click="cancelBatchTask" type="primary" >批量取消组盘</a-button> |
77 | <a-button v-has="'receiptContainerHeader:suppleReceipt'" @click="suppleReceipt" type="primary" >补充入库</a-button> | 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 | </div> | 80 | </div> |
79 | 81 | ||
80 | <!-- table区域-begin --> | 82 | <!-- table区域-begin --> |
@@ -183,6 +185,7 @@ export default { | @@ -183,6 +185,7 @@ export default { | ||
183 | selectIndex: null, | 185 | selectIndex: null, |
184 | description: '入库组盘管理页面', | 186 | description: '入库组盘管理页面', |
185 | querySource: {}, | 187 | querySource: {}, |
188 | + firstLoad:0, | ||
186 | isorter: { | 189 | isorter: { |
187 | column: 'status', | 190 | column: 'status', |
188 | order: 'asc', | 191 | order: 'asc', |
@@ -285,6 +288,21 @@ export default { | @@ -285,6 +288,21 @@ export default { | ||
285 | created() { | 288 | created() { |
286 | this.getSuperFieldList(); | 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 | computed: { | 306 | computed: { |
289 | importExcelUrl: function () { | 307 | importExcelUrl: function () { |
290 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 308 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
@@ -170,6 +170,11 @@ export default { | @@ -170,6 +170,11 @@ export default { | ||
170 | dataIndex: 'taskQty' | 170 | dataIndex: 'taskQty' |
171 | }, | 171 | }, |
172 | { | 172 | { |
173 | + title: '入库数量', | ||
174 | + align: "center", | ||
175 | + dataIndex: 'receiptQty' | ||
176 | + }, | ||
177 | + { | ||
173 | title: '库存状态', | 178 | title: '库存状态', |
174 | align: "center", | 179 | align: "center", |
175 | dataIndex: 'inventoryStatus_dictText', | 180 | dataIndex: 'inventoryStatus_dictText', |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue
@@ -102,6 +102,9 @@ | @@ -102,6 +102,9 @@ | ||
102 | @change='handleImportExcel'> | 102 | @change='handleImportExcel'> |
103 | <!-- <a-button type="primary" icon="import">导入</a-button>--> | 103 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
104 | </a-upload> | 104 | </a-upload> |
105 | + | ||
106 | + <j-super-query :fieldList="superFieldList" v-has="'receiptHeaderHistory:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
107 | + | ||
105 | </div> | 108 | </div> |
106 | 109 | ||
107 | <!-- table区域-begin --> | 110 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -102,6 +102,8 @@ | @@ -102,6 +102,8 @@ | ||
102 | <a-button type="primary" icon="import">导入</a-button> | 102 | <a-button type="primary" icon="import">导入</a-button> |
103 | <a-button v-has="'receiptHeader:print'" @click="batchPrint()" type="primary">打印</a-button> | 103 | <a-button v-has="'receiptHeader:print'" @click="batchPrint()" type="primary">打印</a-button> |
104 | </a-upload> | 104 | </a-upload> |
105 | + <j-super-query :fieldList="superFieldList" v-has="'receiptHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
106 | + | ||
105 | </div> | 107 | </div> |
106 | 108 | ||
107 | <!-- table区域-begin --> | 109 | <!-- table区域-begin --> |
@@ -254,6 +256,7 @@ export default { | @@ -254,6 +256,7 @@ export default { | ||
254 | receiptTypeList: [], | 256 | receiptTypeList: [], |
255 | supplierList: [], | 257 | supplierList: [], |
256 | flowOff:'', | 258 | flowOff:'', |
259 | + firstLoad:0, | ||
257 | // 表头 | 260 | // 表头 |
258 | columns: [ | 261 | columns: [ |
259 | { | 262 | { |
@@ -392,6 +395,10 @@ export default { | @@ -392,6 +395,10 @@ export default { | ||
392 | } | 395 | } |
393 | }, | 396 | }, |
394 | mounted() { | 397 | mounted() { |
398 | + if(this.firstLoad == 0) { | ||
399 | + this.firstLoad = 1; | ||
400 | + return; | ||
401 | + } | ||
395 | //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 | 402 | //页面没加载完,此时methods里的方法找不到,使用定时器模拟点击 |
396 | let timeSearch=setInterval(()=>{ | 403 | let timeSearch=setInterval(()=>{ |
397 | let eleSearch= document.getElementById("search"); | 404 | let eleSearch= document.getElementById("search"); |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
@@ -53,7 +53,7 @@ | @@ -53,7 +53,7 @@ | ||
53 | </template> | 53 | </template> |
54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 54 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
55 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 57 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
58 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 58 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
59 | {{ toggleSearchStatus ? '收起' : '展开' }} | 59 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -76,6 +76,8 @@ | @@ -76,6 +76,8 @@ | ||
76 | </a-upload> | 76 | </a-upload> |
77 | <a-button @click="createBatchTask" type="primary" >批量生成任务</a-button> | 77 | <a-button @click="createBatchTask" type="primary" >批量生成任务</a-button> |
78 | <a-button @click="cancelBatchTask" type="primary" >批量取消配盘</a-button> | 78 | <a-button @click="cancelBatchTask" type="primary" >批量取消配盘</a-button> |
79 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentContainerHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
80 | + | ||
79 | </div> | 81 | </div> |
80 | 82 | ||
81 | <!-- table区域-begin --> | 83 | <!-- table区域-begin --> |
@@ -160,6 +162,7 @@ export default { | @@ -160,6 +162,7 @@ export default { | ||
160 | querySource: {}, | 162 | querySource: {}, |
161 | portList: [], | 163 | portList: [], |
162 | hh:'123', | 164 | hh:'123', |
165 | + firstLoad:0, | ||
163 | // 表头 | 166 | // 表头 |
164 | columns: [ | 167 | columns: [ |
165 | { | 168 | { |
@@ -253,6 +256,21 @@ export default { | @@ -253,6 +256,21 @@ export default { | ||
253 | created() { | 256 | created() { |
254 | this.getSuperFieldList(); | 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 | computed: { | 274 | computed: { |
257 | importExcelUrl: function () { | 275 | importExcelUrl: function () { |
258 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 276 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderHistoryList.vue
@@ -106,6 +106,8 @@ | @@ -106,6 +106,8 @@ | ||
106 | @change="handleImportExcel"> | 106 | @change="handleImportExcel"> |
107 | <!-- <a-button type="primary" icon="import">导入</a-button>--> | 107 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
108 | </a-upload> | 108 | </a-upload> |
109 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentHeaderHistory:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
110 | + | ||
109 | </div> | 111 | </div> |
110 | 112 | ||
111 | <!-- table区域-begin --> | 113 | <!-- table区域-begin --> |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
@@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
103 | </template> | 103 | </template> |
104 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 104 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
105 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 107 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
108 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 108 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
109 | {{ toggleSearchStatus ? '收起' : '展开' }} | 109 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -128,6 +128,8 @@ | @@ -128,6 +128,8 @@ | ||
128 | <!-- <!– 高级查询区域 –>--> | 128 | <!-- <!– 高级查询区域 –>--> |
129 | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"--> | 129 | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"--> |
130 | <!-- @handleSuperQuery="handleSuperQuery"></j-super-query>--> | 130 | <!-- @handleSuperQuery="handleSuperQuery"></j-super-query>--> |
131 | + <j-super-query :fieldList="superFieldList" v-has="'shipmentHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> | ||
132 | + | ||
131 | </div> | 133 | </div> |
132 | 134 | ||
133 | <!-- table区域-begin --> | 135 | <!-- table区域-begin --> |
@@ -292,6 +294,7 @@ export default { | @@ -292,6 +294,7 @@ export default { | ||
292 | username: '', | 294 | username: '', |
293 | flowStatus: '', | 295 | flowStatus: '', |
294 | flowOff:'', | 296 | flowOff:'', |
297 | + firstLoad:0, | ||
295 | // 表头 | 298 | // 表头 |
296 | columns: [ | 299 | columns: [ |
297 | { | 300 | { |
@@ -429,6 +432,21 @@ export default { | @@ -429,6 +432,21 @@ export default { | ||
429 | this.username = store.getters.userInfo.username | 432 | this.username = store.getters.userInfo.username |
430 | this.getDocumentAduitFlowStaus(); | 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 | computed: { | 450 | computed: { |
433 | importExcelUrl: function () { | 451 | importExcelUrl: function () { |
434 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 452 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/stocktaking/CycleCountHeaderList.vue
@@ -12,22 +12,34 @@ | @@ -12,22 +12,34 @@ | ||
12 | <!-- 操作按钮区域 --> | 12 | <!-- 操作按钮区域 --> |
13 | <div class="table-operator"> | 13 | <div class="table-operator"> |
14 | <a-button v-has="'cycleCountHeader:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button> | 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 | <a-button type="primary" icon="import">导入</a-button> | 20 | <a-button type="primary" icon="import">导入</a-button> |
18 | </a-upload> | 21 | </a-upload> |
19 | <a-dropdown v-if="selectedRowKeys.length > 0"> | 22 | <a-dropdown v-if="selectedRowKeys.length > 0"> |
20 | <a-menu slot="overlay"> | 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 | </a-menu> | 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 | </a-dropdown> | 32 | </a-dropdown> |
33 | + | ||
34 | + <j-super-query :fieldList="superFieldList" v-has="'cycleCountHeader:superQuery'" | ||
35 | + @handleSuperQuery="handleSuperQuery"/> | ||
25 | </div> | 36 | </div> |
26 | 37 | ||
27 | <!-- table区域-begin --> | 38 | <!-- table区域-begin --> |
28 | <div> | 39 | <div> |
29 | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | 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 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> | 43 | <a style="margin-left: 24px" @click="onClearSelected">清空</a> |
32 | </div> | 44 | </div> |
33 | 45 | ||
@@ -74,7 +86,8 @@ | @@ -74,7 +86,8 @@ | ||
74 | </template> | 86 | </template> |
75 | <template slot="imgSlot" slot-scope="text"> | 87 | <template slot="imgSlot" slot-scope="text"> |
76 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span> | 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 | </template> | 91 | </template> |
79 | <template slot="fileSlot" slot-scope="text"> | 92 | <template slot="fileSlot" slot-scope="text"> |
80 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> | 93 | <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span> |
@@ -89,10 +102,11 @@ | @@ -89,10 +102,11 @@ | ||
89 | </a-button> | 102 | </a-button> |
90 | </template> | 103 | </template> |
91 | <span slot="action" slot-scope="text, record"> | 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 | <a-dropdown> | 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 | <a-menu slot="overlay"> | 110 | <a-menu slot="overlay"> |
97 | <a-menu-item> | 111 | <a-menu-item> |
98 | <a v-has="'cycleCountHeader:edit'" @click="handleEdit(record)">编辑</a> | 112 | <a v-has="'cycleCountHeader:edit'" @click="handleEdit(record)">编辑</a> |
@@ -101,7 +115,8 @@ | @@ -101,7 +115,8 @@ | ||
101 | <a @click="handleDetail(record)">详情</a> | 115 | <a @click="handleDetail(record)">详情</a> |
102 | </a-menu-item> | 116 | </a-menu-item> |
103 | <a-menu-item> | 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 | <a>删除</a> | 120 | <a>删除</a> |
106 | </a-popconfirm> | 121 | </a-popconfirm> |
107 | </a-menu-item> | 122 | </a-menu-item> |
@@ -118,206 +133,206 @@ | @@ -118,206 +133,206 @@ | ||
118 | 133 | ||
119 | <script> | 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 | this.getSuperFieldList(); | 265 | this.getSuperFieldList(); |
251 | this.loadFrom(); | 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 | </script> | 335 | </script> |
321 | <style scoped> | 336 | <style scoped> |
322 | - @import '~@assets/less/common.less'; | 337 | +@import '~@assets/less/common.less'; |
323 | </style> | 338 | </style> |
324 | \ No newline at end of file | 339 | \ No newline at end of file |
ant-design-vue-jeecg/src/views/system/task/AgvTaskList.vue
@@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
36 | </a-col> | 36 | </a-col> |
37 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 37 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
38 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 40 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
41 | </span> | 41 | </span> |
42 | </a-col> | 42 | </a-col> |
@@ -53,6 +53,9 @@ | @@ -53,6 +53,9 @@ | ||
53 | <a-upload v-has="'agvTask:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" | 53 | <a-upload v-has="'agvTask:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" |
54 | :action="importExcelUrl" @change="handleImportExcel"> | 54 | :action="importExcelUrl" @change="handleImportExcel"> |
55 | <a-button type="primary" icon="import">导入</a-button> | 55 | <a-button type="primary" icon="import">导入</a-button> |
56 | + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" | ||
57 | + @handleSuperQuery="handleSuperQuery"/> | ||
58 | + | ||
56 | </a-upload> | 59 | </a-upload> |
57 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> | 60 | <!-- <a-dropdown v-if="selectedRowKeys.length > 0">--> |
58 | <!-- <a-menu slot="overlay">--> | 61 | <!-- <a-menu slot="overlay">--> |
@@ -92,7 +95,8 @@ | @@ -92,7 +95,8 @@ | ||
92 | <span slot="action" slot-scope="text, record"> | 95 | <span slot="action" slot-scope="text, record"> |
93 | <a v-if="record.status == 1" v-has="'agvTask:executeTask'" @click="executeAgvTask(record)"> | 96 | <a v-if="record.status == 1" v-has="'agvTask:executeTask'" @click="executeAgvTask(record)"> |
94 | <a-button type="primary">执行</a-button><a-divider type="vertical"/></a> | 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 | <a><a-button type="danger">取消</a-button><a-divider type="vertical"/></a> | 100 | <a><a-button type="danger">取消</a-button><a-divider type="vertical"/></a> |
97 | </a-popconfirm> | 101 | </a-popconfirm> |
98 | <a-dropdown> | 102 | <a-dropdown> |
@@ -134,6 +138,7 @@ export default { | @@ -134,6 +138,7 @@ export default { | ||
134 | data() { | 138 | data() { |
135 | return { | 139 | return { |
136 | description: 'AGV任务管理页面', | 140 | description: 'AGV任务管理页面', |
141 | + firstLoad:0, | ||
137 | isorter: { | 142 | isorter: { |
138 | column: 'status', | 143 | column: 'status', |
139 | order: 'asc', | 144 | order: 'asc', |
@@ -226,6 +231,21 @@ export default { | @@ -226,6 +231,21 @@ export default { | ||
226 | created() { | 231 | created() { |
227 | this.getSuperFieldList(); | 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 | computed: { | 249 | computed: { |
230 | importExcelUrl: function () { | 250 | importExcelUrl: function () { |
231 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 251 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/task/AllTaskHeaderList.vue
@@ -68,7 +68,7 @@ | @@ -68,7 +68,7 @@ | ||
68 | </template> | 68 | </template> |
69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | {{ toggleSearchStatus ? '收起' : '展开' }} | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -87,6 +87,8 @@ | @@ -87,6 +87,8 @@ | ||
87 | <!-- <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button>--> | 87 | <!-- <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button>--> |
88 | <!-- <a-button @click="openDemo()" type="primary">弹出demo</a-button>--> | 88 | <!-- <a-button @click="openDemo()" type="primary">弹出demo</a-button>--> |
89 | <!-- </div>--> | 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 | <!-- table区域-begin --> | 93 | <!-- table区域-begin --> |
92 | <div> | 94 | <div> |
@@ -213,6 +215,7 @@ export default { | @@ -213,6 +215,7 @@ export default { | ||
213 | description: '任务表管理页面', | 215 | description: '任务表管理页面', |
214 | zoneList: [], | 216 | zoneList: [], |
215 | zoneOptions:[], | 217 | zoneOptions:[], |
218 | + firstLoad:0, | ||
216 | isorter: { | 219 | isorter: { |
217 | column: 'status', | 220 | column: 'status', |
218 | order: 'asc' | 221 | order: 'asc' |
@@ -353,6 +356,21 @@ export default { | @@ -353,6 +356,21 @@ export default { | ||
353 | this.getSuperFieldList(); | 356 | this.getSuperFieldList(); |
354 | this.loadFrom(); | 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 | computed: { | 374 | computed: { |
357 | importExcelUrl: function () { | 375 | importExcelUrl: function () { |
358 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 376 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
@@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
69 | </template> | 69 | </template> |
70 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 70 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
71 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 73 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
74 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 74 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
75 | {{ toggleSearchStatus ? '收起' : '展开' }} | 75 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -91,6 +91,8 @@ | @@ -91,6 +91,8 @@ | ||
91 | <!-- </a-upload>--> | 91 | <!-- </a-upload>--> |
92 | <!-- <!– 高级查询区域 –>--> | 92 | <!-- <!– 高级查询区域 –>--> |
93 | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>--> | 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 | </div> | 96 | </div> |
95 | 97 | ||
96 | <!-- table区域-begin --> | 98 | <!-- table区域-begin --> |
@@ -213,6 +215,7 @@ export default { | @@ -213,6 +215,7 @@ export default { | ||
213 | description: '任务表管理页面', | 215 | description: '任务表管理页面', |
214 | zoneList: [], | 216 | zoneList: [], |
215 | zoneOptions:[], | 217 | zoneOptions:[], |
218 | + firstLoad:0, | ||
216 | isorter: { | 219 | isorter: { |
217 | column: 'status', | 220 | column: 'status', |
218 | order: 'asc', | 221 | order: 'asc', |
@@ -352,6 +355,21 @@ export default { | @@ -352,6 +355,21 @@ export default { | ||
352 | this.getSuperFieldList(); | 355 | this.getSuperFieldList(); |
353 | this.loadFrom(); | 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 | computed: { | 373 | computed: { |
356 | importExcelUrl: function () { | 374 | importExcelUrl: function () { |
357 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 375 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
@@ -68,7 +68,7 @@ | @@ -68,7 +68,7 @@ | ||
68 | </template> | 68 | </template> |
69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | {{ toggleSearchStatus ? '收起' : '展开' }} | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -88,6 +88,8 @@ | @@ -88,6 +88,8 @@ | ||
88 | <a-button v-has="'taskHeader:quickReceipt'" @click="quickReceipt()" type="primary">快速入库</a-button> | 88 | <a-button v-has="'taskHeader:quickReceipt'" @click="quickReceipt()" type="primary">快速入库</a-button> |
89 | <a-button v-has="'taskHeader:callReceiptBox'" @click="callReceiptBox()" type="primary" >呼叫入库有货托盘</a-button> | 89 | <a-button v-has="'taskHeader:callReceiptBox'" @click="callReceiptBox()" type="primary" >呼叫入库有货托盘</a-button> |
90 | <a-button v-has="'taskHeader:callReceiptBox'" @click="callReceiptEmptyBox()" type="primary" >呼叫入库空托盘</a-button> | 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 | </div> | 93 | </div> |
92 | 94 | ||
93 | <!-- table区域-begin --> | 95 | <!-- table区域-begin --> |
@@ -222,6 +224,7 @@ export default { | @@ -222,6 +224,7 @@ export default { | ||
222 | description: '任务表管理页面', | 224 | description: '任务表管理页面', |
223 | zoneList: [], | 225 | zoneList: [], |
224 | zoneOptions:[], | 226 | zoneOptions:[], |
227 | + firstLoad:0, | ||
225 | isorter: { | 228 | isorter: { |
226 | column: 'status', | 229 | column: 'status', |
227 | order: 'asc' | 230 | order: 'asc' |
@@ -362,6 +365,21 @@ export default { | @@ -362,6 +365,21 @@ export default { | ||
362 | this.getSuperFieldList(); | 365 | this.getSuperFieldList(); |
363 | this.loadFrom(); | 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 | computed: { | 383 | computed: { |
366 | importExcelUrl: function () { | 384 | importExcelUrl: function () { |
367 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 385 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
@@ -68,7 +68,7 @@ | @@ -68,7 +68,7 @@ | ||
68 | </template> | 68 | </template> |
69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | {{ toggleSearchStatus ? '收起' : '展开' }} | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -86,6 +86,8 @@ | @@ -86,6 +86,8 @@ | ||
86 | <a-button @click="createEmptyOut()" v-has="'taskHeader:emptyOut'" type="primary">空托出库</a-button> | 86 | <a-button @click="createEmptyOut()" v-has="'taskHeader:emptyOut'" type="primary">空托出库</a-button> |
87 | <a-button @click="createManyEmptyOut()" v-has="'taskHeader:manyEmptyOut'" type="primary">空托组出库</a-button> | 87 | <a-button @click="createManyEmptyOut()" v-has="'taskHeader:manyEmptyOut'" type="primary">空托组出库</a-button> |
88 | <a-button v-has="'taskHeader:callShipmentBox'" @click="callShipmentBox()" type="primary" >呼叫出库托盘</a-button> | 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 | </div> | 91 | </div> |
90 | 92 | ||
91 | <!-- table区域-begin --> | 93 | <!-- table区域-begin --> |
@@ -162,6 +164,11 @@ | @@ -162,6 +164,11 @@ | ||
162 | <a-divider type="vertical"/></a> | 164 | <a-divider type="vertical"/></a> |
163 | <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> | 165 | <a-popconfirm v-if="record.status <= 10" v-has="'taskHeader:cancelTask'" title="确定取消任务吗?" @confirm="() => cancelTask(record)"> |
164 | <a-button type="danger">取消</a-button> | 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 | </a-popconfirm> | 172 | </a-popconfirm> |
166 | </span> | 173 | </span> |
167 | 174 | ||
@@ -192,7 +199,7 @@ import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelec | @@ -192,7 +199,7 @@ import {initDictOptions, filterMultiDictText} from '@/components/dict/JDictSelec | ||
192 | import '@/assets/less/TableExpand.less' | 199 | import '@/assets/less/TableExpand.less' |
193 | import {completeTaskByWMS, cancelTask} from '@/api/api' | 200 | import {completeTaskByWMS, cancelTask} from '@/api/api' |
194 | import {execute} from '@/api/api' | 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 | import EmptyOutTaskModal from './modules/EmptyOutTaskModal' | 203 | import EmptyOutTaskModal from './modules/EmptyOutTaskModal' |
197 | import ManyEmptyOutTaskModal from "./modules/ManyEmptyOutTaskModal"; | 204 | import ManyEmptyOutTaskModal from "./modules/ManyEmptyOutTaskModal"; |
198 | import CallShipmentBoxModal from "@views/system/task/modules/CallShipmentBoxModal"; | 205 | import CallShipmentBoxModal from "@views/system/task/modules/CallShipmentBoxModal"; |
@@ -212,6 +219,7 @@ export default { | @@ -212,6 +219,7 @@ export default { | ||
212 | selectIndex: null, | 219 | selectIndex: null, |
213 | description: '任务表管理页面', | 220 | description: '任务表管理页面', |
214 | zoneList: [], | 221 | zoneList: [], |
222 | + firstLoad:0, | ||
215 | isorter: { | 223 | isorter: { |
216 | column: 'status', | 224 | column: 'status', |
217 | order: 'asc', | 225 | order: 'asc', |
@@ -352,6 +360,21 @@ export default { | @@ -352,6 +360,21 @@ export default { | ||
352 | this.getSuperFieldList(); | 360 | this.getSuperFieldList(); |
353 | this.loadFrom(); | 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 | computed: { | 378 | computed: { |
356 | importExcelUrl: function () { | 379 | importExcelUrl: function () { |
357 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 380 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
@@ -457,6 +480,19 @@ export default { | @@ -457,6 +480,19 @@ export default { | ||
457 | this.loading = false; | 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 | cancelTask(record) { | 496 | cancelTask(record) { |
461 | this.loading = true; | 497 | this.loading = true; |
462 | this.model = Object.assign({}, record); | 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,7 +68,7 @@ | ||
68 | </template> | 68 | </template> |
69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> | 69 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
70 | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> | 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 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> | 72 | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
73 | <a @click="handleToggleSearch" style="margin-left: 8px"> | 73 | <a @click="handleToggleSearch" style="margin-left: 8px"> |
74 | {{ toggleSearchStatus ? '收起' : '展开' }} | 74 | {{ toggleSearchStatus ? '收起' : '展开' }} |
@@ -85,7 +85,8 @@ | @@ -85,7 +85,8 @@ | ||
85 | <div class="table-operator"> | 85 | <div class="table-operator"> |
86 | <a-button @click="createTransfer()" v-has="'taskHeader:transfer'" type="primary">移库任务</a-button> | 86 | <a-button @click="createTransfer()" v-has="'taskHeader:transfer'" type="primary">移库任务</a-button> |
87 | <a-button @click="createOverStation()" v-has="'taskHeader:overStation'" type="primary">跨站任务</a-button> | 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 | <!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> | 90 | <!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> |
90 | <!-- <a-button type="primary" icon="import">导入</a-button>--> | 91 | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
91 | <!-- </a-upload>--> | 92 | <!-- </a-upload>--> |
@@ -210,6 +211,7 @@ export default { | @@ -210,6 +211,7 @@ export default { | ||
210 | description: '任务表管理页面', | 211 | description: '任务表管理页面', |
211 | zoneList: [], | 212 | zoneList: [], |
212 | zoneOptions:[], | 213 | zoneOptions:[], |
214 | + firstLoad:0, | ||
213 | isorter: { | 215 | isorter: { |
214 | column: 'status', | 216 | column: 'status', |
215 | order: 'asc', | 217 | order: 'asc', |
@@ -353,6 +355,21 @@ export default { | @@ -353,6 +355,21 @@ export default { | ||
353 | this.getSuperFieldList(); | 355 | this.getSuperFieldList(); |
354 | this.loadFrom(); | 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 | computed: { | 373 | computed: { |
357 | importExcelUrl: function () { | 374 | importExcelUrl: function () { |
358 | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; | 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,7 +153,7 @@ public class ErpServiceImpl implements IErpService { | ||
153 | receiptDetail.setReceiptId(receiptHeader.getId()); | 153 | receiptDetail.setReceiptId(receiptHeader.getId()); |
154 | receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD); | 154 | receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD); |
155 | receiptDetail.setQty(qty); | 155 | receiptDetail.setQty(qty); |
156 | - Material material = materialService.getMaterialByCode(materialCode); | 156 | + Material material = materialService.isMaterialExsit(materialCode); |
157 | if (material == null) { | 157 | if (material == null) { |
158 | material = new Material(); | 158 | material = new Material(); |
159 | material.setCode(materialCode); | 159 | material.setCode(materialCode); |
@@ -287,7 +287,7 @@ public class ErpServiceImpl implements IErpService { | @@ -287,7 +287,7 @@ public class ErpServiceImpl implements IErpService { | ||
287 | shipmentDetail.setShipmentId(shipmentHeader.getId()); | 287 | shipmentDetail.setShipmentId(shipmentHeader.getId()); |
288 | shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); | 288 | shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); |
289 | shipmentDetail.setQty(qty); | 289 | shipmentDetail.setQty(qty); |
290 | - Material material = materialService.getMaterialByCode(materialCode); | 290 | + Material material = materialService.isMaterialExsit(materialCode); |
291 | if (material == null) { | 291 | if (material == null) { |
292 | throw new JeecgBootException("出库单下发, 没有找到物料信息" + materialCode); | 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,7 +3,8 @@ package org.jeecg.modules.wms.api.wms.controller; | ||
3 | import javax.annotation.Resource; | 3 | import javax.annotation.Resource; |
4 | 4 | ||
5 | import org.jeecg.common.api.vo.Result; | 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 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; | 8 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; |
8 | import org.jeecg.modules.wms.api.wms.service.WmsService; | 9 | import org.jeecg.modules.wms.api.wms.service.WmsService; |
9 | import org.jeecg.modules.wms.framework.controller.HuahengBaseController; | 10 | import org.jeecg.modules.wms.framework.controller.HuahengBaseController; |
@@ -23,8 +24,9 @@ public class WisController extends HuahengBaseController { | @@ -23,8 +24,9 @@ public class WisController extends HuahengBaseController { | ||
23 | 24 | ||
24 | @Resource | 25 | @Resource |
25 | private WmsService wmsService; | 26 | private WmsService wmsService; |
27 | + @Resource | ||
28 | + private IErpService erpService; | ||
26 | 29 | ||
27 | - @AutoLog(value = "下发WMS任务") | ||
28 | @PostMapping("/sendWmsTask") | 30 | @PostMapping("/sendWmsTask") |
29 | @ResponseBody | 31 | @ResponseBody |
30 | @ApiOperation("下发WMS任务") | 32 | @ApiOperation("下发WMS任务") |
@@ -39,4 +41,29 @@ public class WisController extends HuahengBaseController { | @@ -39,4 +41,29 @@ public class WisController extends HuahengBaseController { | ||
39 | }); | 41 | }); |
40 | return result; | 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,23 +28,33 @@ public interface WmsService { | ||
28 | Result createShipmentTask(WmsEntity wmsEntity); | 28 | Result createShipmentTask(WmsEntity wmsEntity); |
29 | 29 | ||
30 | /** | 30 | /** |
31 | - * 创建空托入库 | 31 | + * 创建整出出库任务通过托盘 |
32 | * @param wmsEntity | 32 | * @param wmsEntity |
33 | * @return | 33 | * @return |
34 | */ | 34 | */ |
35 | - Result createEmptyIn(WmsEntity wmsEntity); | 35 | + Result createShipmentTaskByContainer(WmsEntity wmsEntity); |
36 | 36 | ||
37 | /** | 37 | /** |
38 | - * 创建空托出库 | 38 | + * 创建出库任务通过托盘 |
39 | * @param wmsEntity | 39 | * @param wmsEntity |
40 | * @return | 40 | * @return |
41 | */ | 41 | */ |
42 | - Result createEmptyOut(WmsEntity wmsEntity); | 42 | + Result createShipmentTaskByDetail(WmsEntity wmsEntity); |
43 | 43 | ||
44 | /** | 44 | /** |
45 | - * 创建出库查看 | 45 | + * 创建空托入库 |
46 | * @param wmsEntity | 46 | * @param wmsEntity |
47 | * @return | 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 | package org.jeecg.modules.wms.api.wms.service; | 1 | package org.jeecg.modules.wms.api.wms.service; |
2 | 2 | ||
3 | +import java.math.BigDecimal; | ||
3 | import java.util.ArrayList; | 4 | import java.util.ArrayList; |
4 | import java.util.List; | 5 | import java.util.List; |
5 | import java.util.stream.Collectors; | 6 | import java.util.stream.Collectors; |
@@ -13,6 +14,10 @@ import org.jeecg.modules.wms.api.erp.service.IErpService; | @@ -13,6 +14,10 @@ import org.jeecg.modules.wms.api.erp.service.IErpService; | ||
13 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; | 14 | import org.jeecg.modules.wms.api.wms.entity.WmsEntity; |
14 | import org.jeecg.modules.wms.api.wms.entity.WmsInventory; | 15 | import org.jeecg.modules.wms.api.wms.entity.WmsInventory; |
15 | import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService; | 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 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; | 21 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; |
17 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; | 22 | import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; |
18 | import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; | 23 | import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; |
@@ -30,12 +35,16 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; | @@ -30,12 +35,16 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; | ||
30 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; | 35 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; |
31 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; | 36 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; |
32 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; | 37 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService; |
38 | +import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; | ||
33 | import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; | 39 | import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; |
34 | import org.jeecg.utils.StringUtils; | 40 | import org.jeecg.utils.StringUtils; |
35 | import org.jeecg.utils.constant.QuantityConstant; | 41 | import org.jeecg.utils.constant.QuantityConstant; |
36 | import org.springframework.stereotype.Service; | 42 | import org.springframework.stereotype.Service; |
37 | import org.springframework.transaction.annotation.Transactional; | 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 | import lombok.extern.slf4j.Slf4j; | 48 | import lombok.extern.slf4j.Slf4j; |
40 | 49 | ||
41 | /** | 50 | /** |
@@ -71,6 +80,10 @@ public class WmsServiceImpl implements WmsService { | @@ -71,6 +80,10 @@ public class WmsServiceImpl implements WmsService { | ||
71 | private IShipmentContainerHeaderService shipmentContainerHeaderService; | 80 | private IShipmentContainerHeaderService shipmentContainerHeaderService; |
72 | @Resource | 81 | @Resource |
73 | private IShipmentContainerDetailService shipmentContainerDetailService; | 82 | private IShipmentContainerDetailService shipmentContainerDetailService; |
83 | + @Resource | ||
84 | + private IInventoryDetailService inventoryDetailService; | ||
85 | + @Resource | ||
86 | + private IInventoryHeaderService inventoryHeaderService; | ||
74 | 87 | ||
75 | @Override | 88 | @Override |
76 | @Transactional(rollbackFor = Exception.class) | 89 | @Transactional(rollbackFor = Exception.class) |
@@ -83,12 +96,21 @@ public class WmsServiceImpl implements WmsService { | @@ -83,12 +96,21 @@ public class WmsServiceImpl implements WmsService { | ||
83 | result = wmsService.createReceiptTask(wmsEntity); | 96 | result = wmsService.createReceiptTask(wmsEntity); |
84 | break; | 97 | break; |
85 | case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: | 98 | case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: |
99 | + result = wmsService.createShipmentTaskByContainer(wmsEntity); // 指定托盘,整盘出库 | ||
100 | +// result = wmsService.createShipmentTask(wmsEntity); // 不指定托盘出库,只指定物料和数量。适用于客户不管理每个托盘的库存 | ||
101 | + break; | ||
86 | case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: | 102 | case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: |
87 | - result = wmsService.createShipmentTask(wmsEntity); | 103 | + result = wmsService.createShipmentTaskByDetail(wmsEntity); // 指定托盘出库 |
104 | +// result = wmsService.createShipmentTask(wmsEntity); // 不指定托盘出库,只指定物料和数量。适用于客户不管理每个托盘的库存 | ||
88 | break; | 105 | break; |
89 | case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: | 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 | break; | 111 | break; |
112 | + default: | ||
113 | + throw new JeecgBootException("WMS下发入库任务失败,任务类型不匹配"); | ||
92 | } | 114 | } |
93 | return result; | 115 | return result; |
94 | } | 116 | } |
@@ -166,6 +188,12 @@ public class WmsServiceImpl implements WmsService { | @@ -166,6 +188,12 @@ public class WmsServiceImpl implements WmsService { | ||
166 | if (!result.isSuccess()) { | 188 | if (!result.isSuccess()) { |
167 | throw new JeecgBootException(result.getMessage()); | 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 | return result; | 197 | return result; |
170 | } | 198 | } |
171 | 199 | ||
@@ -248,10 +276,94 @@ public class WmsServiceImpl implements WmsService { | @@ -248,10 +276,94 @@ public class WmsServiceImpl implements WmsService { | ||
248 | 276 | ||
249 | @Override | 277 | @Override |
250 | @Transactional(rollbackFor = Exception.class) | 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 | public Result createEmptyIn(WmsEntity wmsEntity) { | 365 | public Result createEmptyIn(WmsEntity wmsEntity) { |
252 | String warehouseCode = wmsEntity.getWarehouseCode(); | 366 | String warehouseCode = wmsEntity.getWarehouseCode(); |
253 | -// String toPort = wmsEntity.getToPort(); | ||
254 | -// String referCode = wmsEntity.getTaskNo(); | ||
255 | String contaienrCode = wmsEntity.getContainerCode(); | 367 | String contaienrCode = wmsEntity.getContainerCode(); |
256 | 368 | ||
257 | Result result = taskHeaderService.createEmptyIn(contaienrCode, QuantityConstant.EMPTY_STRING, warehouseCode); | 369 | Result result = taskHeaderService.createEmptyIn(contaienrCode, QuantityConstant.EMPTY_STRING, warehouseCode); |
@@ -263,7 +375,6 @@ public class WmsServiceImpl implements WmsService { | @@ -263,7 +375,6 @@ public class WmsServiceImpl implements WmsService { | ||
263 | public Result createEmptyOut(WmsEntity wmsEntity) { | 375 | public Result createEmptyOut(WmsEntity wmsEntity) { |
264 | String warehouseCode = wmsEntity.getWarehouseCode(); | 376 | String warehouseCode = wmsEntity.getWarehouseCode(); |
265 | String toPort = wmsEntity.getToPort(); | 377 | String toPort = wmsEntity.getToPort(); |
266 | -// String referCode = wmsEntity.getTaskNo(); | ||
267 | String contaienrCode = wmsEntity.getContainerCode(); | 378 | String contaienrCode = wmsEntity.getContainerCode(); |
268 | 379 | ||
269 | Result result = taskHeaderService.createEmptyOut(contaienrCode, toPort, warehouseCode); | 380 | Result result = taskHeaderService.createEmptyOut(contaienrCode, toPort, warehouseCode); |
@@ -271,15 +382,8 @@ public class WmsServiceImpl implements WmsService { | @@ -271,15 +382,8 @@ public class WmsServiceImpl implements WmsService { | ||
271 | } | 382 | } |
272 | 383 | ||
273 | @Override | 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,6 +19,7 @@ import org.jeecg.modules.wms.config.location.entity.Location; | ||
19 | import org.jeecg.modules.wms.config.location.service.ILocationService; | 19 | import org.jeecg.modules.wms.config.location.service.ILocationService; |
20 | import org.jeecg.utils.HuahengJwtUtil; | 20 | import org.jeecg.utils.HuahengJwtUtil; |
21 | import org.jeecg.utils.StringUtils; | 21 | import org.jeecg.utils.StringUtils; |
22 | +import org.jeecg.utils.constant.QuantityConstant; | ||
22 | import org.springframework.beans.factory.annotation.Autowired; | 23 | import org.springframework.beans.factory.annotation.Autowired; |
23 | import org.springframework.web.bind.annotation.*; | 24 | import org.springframework.web.bind.annotation.*; |
24 | import org.springframework.web.servlet.ModelAndView; | 25 | import org.springframework.web.servlet.ModelAndView; |
@@ -62,8 +63,17 @@ public class ContainerController extends JeecgController<Container, IContainerSe | @@ -62,8 +63,17 @@ public class ContainerController extends JeecgController<Container, IContainerSe | ||
62 | public Result<IPage<Container>> queryPageList(Container container, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | 63 | public Result<IPage<Container>> queryPageList(Container container, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, |
63 | @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { | 64 | @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { |
64 | HuahengJwtUtil.setWarehouseCode(req, container); | 65 | HuahengJwtUtil.setWarehouseCode(req, container); |
66 | + Integer inLocation = container.haveInLocation(); | ||
67 | + container.setInLocation(null); | ||
65 | QueryWrapper<Container> queryWrapper = QueryGenerator.initQueryWrapper(container, null); | 68 | QueryWrapper<Container> queryWrapper = QueryGenerator.initQueryWrapper(container, null); |
66 | LambdaQueryWrapper<Container> containerLambdaQueryWrapper = queryWrapper.lambda(); | 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 | containerLambdaQueryWrapper.orderByAsc(Container::getId); | 77 | containerLambdaQueryWrapper.orderByAsc(Container::getId); |
68 | Page<Container> page = new Page<Container>(pageNo, pageSize); | 78 | Page<Container> page = new Page<Container>(pageNo, pageSize); |
69 | IPage<Container> pageList = containerService.page(page, containerLambdaQueryWrapper); | 79 | IPage<Container> pageList = containerService.page(page, containerLambdaQueryWrapper); |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/entity/Container.java
1 | package org.jeecg.modules.wms.config.container.entity; | 1 | package org.jeecg.modules.wms.config.container.entity; |
2 | 2 | ||
3 | import java.io.Serializable; | 3 | import java.io.Serializable; |
4 | -import java.io.UnsupportedEncodingException; | ||
5 | import java.util.Date; | 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 | import com.baomidou.mybatisplus.annotation.IdType; | 11 | import com.baomidou.mybatisplus.annotation.IdType; |
8 | import com.baomidou.mybatisplus.annotation.TableField; | 12 | import com.baomidou.mybatisplus.annotation.TableField; |
9 | import com.baomidou.mybatisplus.annotation.TableId; | 13 | import com.baomidou.mybatisplus.annotation.TableId; |
10 | import com.baomidou.mybatisplus.annotation.TableName; | 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 | import io.swagger.annotations.ApiModel; | 16 | import io.swagger.annotations.ApiModel; |
17 | import io.swagger.annotations.ApiModelProperty; | 17 | import io.swagger.annotations.ApiModelProperty; |
18 | +import lombok.Data; | ||
18 | import lombok.EqualsAndHashCode; | 19 | import lombok.EqualsAndHashCode; |
19 | import lombok.experimental.Accessors; | 20 | import lombok.experimental.Accessors; |
20 | 21 | ||
@@ -69,16 +70,21 @@ public class Container implements Serializable { | @@ -69,16 +70,21 @@ public class Container implements Serializable { | ||
69 | @Dict(dicCode = "fill_status") | 70 | @Dict(dicCode = "fill_status") |
70 | @ApiModelProperty(value = "填充状态") | 71 | @ApiModelProperty(value = "填充状态") |
71 | private String fillStatus; | 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 | /** 备用字段1 */ | 81 | /** 备用字段1 */ |
73 | - @Excel(name = "备用字段1", width = 15) | ||
74 | @ApiModelProperty(value = "备用字段1") | 82 | @ApiModelProperty(value = "备用字段1") |
75 | private String userdef1; | 83 | private String userdef1; |
76 | /** 备用字段2 */ | 84 | /** 备用字段2 */ |
77 | - @Excel(name = "备用字段2", width = 15) | ||
78 | @ApiModelProperty(value = "备用字段2") | 85 | @ApiModelProperty(value = "备用字段2") |
79 | private String userdef2; | 86 | private String userdef2; |
80 | /** 备用字段3 */ | 87 | /** 备用字段3 */ |
81 | - @Excel(name = "备用字段3", width = 15) | ||
82 | @ApiModelProperty(value = "备用字段3") | 88 | @ApiModelProperty(value = "备用字段3") |
83 | private String userdef3; | 89 | private String userdef3; |
84 | /** 创建人 */ | 90 | /** 创建人 */ |
@@ -93,4 +99,20 @@ public class Container implements Serializable { | @@ -93,4 +99,20 @@ public class Container implements Serializable { | ||
93 | /** 更新日期 */ | 99 | /** 更新日期 */ |
94 | @ApiModelProperty(value = "更新日期") | 100 | @ApiModelProperty(value = "更新日期") |
95 | private Date updateTime; | 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,6 +77,9 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container | ||
77 | 77 | ||
78 | @Override | 78 | @Override |
79 | public Container getContainerByCode(String containCode, String warehouseCode) { | 79 | public Container getContainerByCode(String containCode, String warehouseCode) { |
80 | + if (StringUtils.isEmpty(containCode)) { | ||
81 | + throw new JeecgBootException("容器编码为空"); | ||
82 | + } | ||
80 | if (StringUtils.havaLowerCase(containCode)) { | 83 | if (StringUtils.havaLowerCase(containCode)) { |
81 | throw new JeecgBootException("容器不能有小字母" + containCode); | 84 | throw new JeecgBootException("容器不能有小字母" + containCode); |
82 | } | 85 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/entity/Material.java
1 | package org.jeecg.modules.wms.config.material.entity; | 1 | package org.jeecg.modules.wms.config.material.entity; |
2 | 2 | ||
3 | import java.io.Serializable; | 3 | import java.io.Serializable; |
4 | -import java.io.UnsupportedEncodingException; | ||
5 | -import java.util.Date; | ||
6 | import java.math.BigDecimal; | 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 | import com.baomidou.mybatisplus.annotation.IdType; | 10 | import com.baomidou.mybatisplus.annotation.IdType; |
8 | import com.baomidou.mybatisplus.annotation.TableId; | 11 | import com.baomidou.mybatisplus.annotation.TableId; |
9 | import com.baomidou.mybatisplus.annotation.TableName; | 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 | import io.swagger.annotations.ApiModel; | 14 | import io.swagger.annotations.ApiModel; |
16 | import io.swagger.annotations.ApiModelProperty; | 15 | import io.swagger.annotations.ApiModelProperty; |
16 | +import lombok.Data; | ||
17 | import lombok.EqualsAndHashCode; | 17 | import lombok.EqualsAndHashCode; |
18 | import lombok.experimental.Accessors; | 18 | import lombok.experimental.Accessors; |
19 | 19 | ||
@@ -63,6 +63,14 @@ public class Material implements Serializable { | @@ -63,6 +63,14 @@ public class Material implements Serializable { | ||
63 | @Excel(name = "类别", width = 15) | 63 | @Excel(name = "类别", width = 15) |
64 | @ApiModelProperty(value = "类别") | 64 | @ApiModelProperty(value = "类别") |
65 | private String type; | 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 | /** ABC分类 */ | 74 | /** ABC分类 */ |
67 | @Excel(name = "ABC分类", width = 15) | 75 | @Excel(name = "ABC分类", width = 15) |
68 | @ApiModelProperty(value = "ABC分类") | 76 | @ApiModelProperty(value = "ABC分类") |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/service/IMaterialService.java
1 | package org.jeecg.modules.wms.config.material.service; | 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 | import org.jeecg.modules.wms.config.material.entity.Material; | 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 | * @Description: 物料管理 | 10 | * @Description: 物料管理 |
@@ -16,5 +16,7 @@ public interface IMaterialService extends IService<Material> { | @@ -16,5 +16,7 @@ public interface IMaterialService extends IService<Material> { | ||
16 | 16 | ||
17 | public Material getMaterialByCode(String code); | 17 | public Material getMaterialByCode(String code); |
18 | 18 | ||
19 | + public Material isMaterialExsit(String code); | ||
20 | + | ||
19 | public List<Material> searchMaterialByCode(String code); | 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,6 +34,17 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i | ||
34 | } | 34 | } |
35 | 35 | ||
36 | @Override | 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 | public List<Material> searchMaterialByCode(String code) { | 48 | public List<Material> searchMaterialByCode(String code) { |
38 | LambdaQueryWrapper<Material> materialLambdaQueryWrapper = Wrappers.lambdaQuery(); | 49 | LambdaQueryWrapper<Material> materialLambdaQueryWrapper = Wrappers.lambdaQuery(); |
39 | materialLambdaQueryWrapper.like(StringUtils.isNotEmpty(code), Material::getCode, code); | 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,6 +130,9 @@ public class InventoryDetail implements Serializable { | ||
130 | @Dict(dicCode = "inventory_enable") | 130 | @Dict(dicCode = "inventory_enable") |
131 | @ApiModelProperty(value = "是否可用") | 131 | @ApiModelProperty(value = "是否可用") |
132 | private Integer enable; | 132 | private Integer enable; |
133 | + /** 巷道 */ | ||
134 | + @ApiModelProperty(value = "巷道") | ||
135 | + private Integer roadWay; | ||
133 | /** 备用字段1 */ | 136 | /** 备用字段1 */ |
134 | @Excel(name = "备用字段1", width = 15) | 137 | @Excel(name = "备用字段1", width = 15) |
135 | @ApiModelProperty(value = "备用字段1") | 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,6 +78,9 @@ public class InventoryHeader implements Serializable { | ||
78 | @TableField(exist = false) | 78 | @TableField(exist = false) |
79 | @ApiModelProperty(value = "物料编码") | 79 | @ApiModelProperty(value = "物料编码") |
80 | private String materialCode; | 80 | private String materialCode; |
81 | + /** 巷道 */ | ||
82 | + @ApiModelProperty(value = "巷道") | ||
83 | + private Integer roadWay; | ||
81 | /** 备用字段1 */ | 84 | /** 备用字段1 */ |
82 | @Excel(name = "备用字段1", width = 15) | 85 | @Excel(name = "备用字段1", width = 15) |
83 | @ApiModelProperty(value = "备用字段1") | 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,6 +29,10 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { | ||
29 | 29 | ||
30 | List<InventoryDetail> getInventoryDetailListByMaterialCode(String materialCode, String warehouseCode); | 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 | BigDecimal getInventorySumQty(InventoryDetail inventoryDetail); | 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,7 +34,7 @@ public interface IInventoryHeaderService extends IService<InventoryHeader> { | ||
34 | 34 | ||
35 | boolean updateInventoryLocationAndZoneById(String locationCode, String zoneCode, Integer id); | 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 | boolean updateContainerStatusById(String containerStatus, Integer id); | 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,6 +98,30 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe | ||
98 | } | 98 | } |
99 | 99 | ||
100 | @Override | 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 | public BigDecimal getInventorySumQty(InventoryDetail inventoryDetail) { | 125 | public BigDecimal getInventorySumQty(InventoryDetail inventoryDetail) { |
102 | LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | 126 | LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); |
103 | inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getInventoryStatus, inventoryDetail.getInventoryStatus()) | 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,12 +149,13 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe | ||
149 | } | 149 | } |
150 | 150 | ||
151 | @Override | 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 | InventoryHeader inventoryHeader = new InventoryHeader(); | 153 | InventoryHeader inventoryHeader = new InventoryHeader(); |
154 | inventoryHeader.setId(id); | 154 | inventoryHeader.setId(id); |
155 | inventoryHeader.setContainerCode(containerCode); | 155 | inventoryHeader.setContainerCode(containerCode); |
156 | inventoryHeader.setLocationCode(locationCode); | 156 | inventoryHeader.setLocationCode(locationCode); |
157 | inventoryHeader.setZoneCode(zoneCode); | 157 | inventoryHeader.setZoneCode(zoneCode); |
158 | + inventoryHeader.setRoadWay(roadWay); | ||
158 | return inventoryHeaderService.updateById(inventoryHeader); | 159 | return inventoryHeaderService.updateById(inventoryHeader); |
159 | } | 160 | } |
160 | 161 | ||
@@ -455,7 +456,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe | @@ -455,7 +456,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe | ||
455 | return false; | 456 | return false; |
456 | } | 457 | } |
457 | String zoneCode = toLocation.getZoneCode(); | 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 | if (!success) { | 461 | if (!success) { |
460 | return success; | 462 | return success; |
461 | } | 463 | } |
@@ -466,6 +468,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe | @@ -466,6 +468,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe | ||
466 | inventoryDetail1.setContainerCode(containerCode); | 468 | inventoryDetail1.setContainerCode(containerCode); |
467 | inventoryDetail1.setLocationCode(locationCode); | 469 | inventoryDetail1.setLocationCode(locationCode); |
468 | inventoryDetail1.setZoneCode(zoneCode); | 470 | inventoryDetail1.setZoneCode(zoneCode); |
471 | + inventoryDetail1.setRoadWay(toLocation.getRoadWay()); | ||
469 | updateInventoryDetailList.add(inventoryDetail1); | 472 | updateInventoryDetailList.add(inventoryDetail1); |
470 | } | 473 | } |
471 | success = inventoryDetailService.updateBatchById(updateInventoryDetailList); | 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,6 +71,10 @@ public class ReceiptDetail implements Serializable { | ||
71 | @Excel(name = "组盘数量", width = 15) | 71 | @Excel(name = "组盘数量", width = 15) |
72 | @ApiModelProperty(value = "组盘数量") | 72 | @ApiModelProperty(value = "组盘数量") |
73 | private java.math.BigDecimal taskQty; | 73 | private java.math.BigDecimal taskQty; |
74 | + /** 入库数量 */ | ||
75 | + @Excel(name = "入库数量", width = 15) | ||
76 | + @ApiModelProperty(value = "入库数量") | ||
77 | + private java.math.BigDecimal receiptQty; | ||
74 | /** 库存状态 */ | 78 | /** 库存状态 */ |
75 | @Excel(name = "库存状态", width = 15) | 79 | @Excel(name = "库存状态", width = 15) |
76 | @Dict(dicCode = "inventory_status") | 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,6 +65,14 @@ public interface IShipmentContainerHeaderService extends IService<ShipmentContai | ||
65 | boolean updateTaskTypeById(int taskType, int id); | 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 | * @param status | 77 | * @param status |
70 | * @param id | 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,7 +217,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
217 | } | 217 | } |
218 | int status = shipmentContainerHeader.getStatus(); | 218 | int status = shipmentContainerHeader.getStatus(); |
219 | if (status >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { | 219 | if (status >= QuantityConstant.SHIPMENT_CONTAINER_TASK) { |
220 | - return Result.error("取消出库配盘失败,已经生成出库任务"); | 220 | + return Result.error("取消出库配盘失败,出库配盘状态是生成出库任务"); |
221 | } | 221 | } |
222 | List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(id); | 222 | List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByHeaderId(id); |
223 | for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetailList) { | 223 | for (ShipmentContainerDetail shipmentContainerDetail : shipmentContainerDetailList) { |
@@ -264,6 +264,15 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | @@ -264,6 +264,15 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
264 | } | 264 | } |
265 | 265 | ||
266 | @Override | 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 | public boolean updateStatusById(int status, int id) { | 276 | public boolean updateStatusById(int status, int id) { |
268 | ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); | 277 | ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); |
269 | shipmentContainerHeader.setStatus(status); | 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,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 | @AutoLog(value = "任务表-执行任务") | 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,6 +36,10 @@ public class TaskHeader implements Serializable { | ||
36 | @Excel(name = "前置任务号", width = 15) | 36 | @Excel(name = "前置任务号", width = 15) |
37 | @ApiModelProperty(value = "前置任务号") | 37 | @ApiModelProperty(value = "前置任务号") |
38 | private Integer preTaskNo; | 38 | private Integer preTaskNo; |
39 | + /** 上游任务号 */ | ||
40 | + @Excel(name = "上游任务号", width = 15) | ||
41 | + @ApiModelProperty(value = "上游任务号") | ||
42 | + private String upstreamTaskNo; | ||
39 | /** 入库组盘ID */ | 43 | /** 入库组盘ID */ |
40 | @Excel(name = "入库组盘ID", width = 15) | 44 | @Excel(name = "入库组盘ID", width = 15) |
41 | @ApiModelProperty(value = "入库组盘ID") | 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,6 +36,8 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | ||
36 | */ | 36 | */ |
37 | boolean haveUncompleteTaskInNear(Location location); | 37 | boolean haveUncompleteTaskInNear(Location location); |
38 | 38 | ||
39 | + boolean updateUpstreamTaskNoById(String upstreamTaskNo, int id); | ||
40 | + | ||
39 | /** | 41 | /** |
40 | * 通过AGV任务ID,获取任务信息 | 42 | * 通过AGV任务ID,获取任务信息 |
41 | * @param agvTaskId | 43 | * @param agvTaskId |
@@ -107,6 +109,13 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | @@ -107,6 +109,13 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | ||
107 | Result cancelTask(Integer taskId); | 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 | * 下发任务给WCS | 119 | * 下发任务给WCS |
111 | * @param taskId | 120 | * @param taskId |
112 | * @return | 121 | * @return |
@@ -374,4 +383,12 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | @@ -374,4 +383,12 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | ||
374 | * @return | 383 | * @return |
375 | */ | 384 | */ |
376 | Result quickReceipt(QucikReceiptEntity qucikReceiptEntity); | 385 | Result quickReceipt(QucikReceiptEntity qucikReceiptEntity); |
386 | + | ||
387 | + /** | ||
388 | + * 切换任务 | ||
389 | + * @param id | ||
390 | + * @return | ||
391 | + */ | ||
392 | + Result switchTask(int id); | ||
393 | + | ||
377 | } | 394 | } |