Commit 984b11300dc2f29a0de7715e7972686e78d4ed9c

Authored by 陈翱
2 parents ebef57f3 96f920f2

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 &#39;@/utils/mixin&#39; @@ -242,7 +244,7 @@ import {mixinDevice} from &#39;@/utils/mixin&#39;
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>&nbsp;&nbsp; 120 <a @click="handleEdit(record)">编辑</a>&nbsp;&nbsp;
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 <!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;--> 128 <!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
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 <!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;--> 92 <!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
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 &#39;@/components/dict/JDictSelec @@ -192,7 +199,7 @@ import {initDictOptions, filterMultiDictText} from &#39;@/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
@@ -80,6 +80,7 @@ @@ -80,6 +80,7 @@
80 </a-form> 80 </a-form>
81 </div> 81 </div>
82 <!-- 查询区域-END --> 82 <!-- 查询区域-END -->
  83 + <j-super-query :fieldList="superFieldList" v-has="'taskHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/>
83 84
84 85
85 86
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&lt;Container, IContainerSe @@ -62,8 +63,17 @@ public class ContainerController extends JeecgController&lt;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&lt;ContainerMapper, Container @@ -77,6 +77,9 @@ public class ContainerServiceImpl extends ServiceImpl&lt;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&lt;Material&gt; { @@ -16,5 +16,7 @@ public interface IMaterialService extends IService&lt;Material&gt; {
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&lt;MaterialMapper, Material&gt; i @@ -34,6 +34,17 @@ public class MaterialServiceImpl extends ServiceImpl&lt;MaterialMapper, Material&gt; 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&lt;InventoryDetail&gt; { @@ -29,6 +29,10 @@ public interface IInventoryDetailService extends IService&lt;InventoryDetail&gt; {
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&lt;InventoryHeader&gt; { @@ -34,7 +34,7 @@ public interface IInventoryHeaderService extends IService&lt;InventoryHeader&gt; {
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&lt;InventoryDetailMappe @@ -98,6 +98,30 @@ public class InventoryDetailServiceImpl extends ServiceImpl&lt;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&lt;InventoryHeaderMappe @@ -149,12 +149,13 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;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&lt;InventoryHeaderMappe @@ -455,7 +456,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;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&lt;InventoryHeaderMappe @@ -466,6 +468,7 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;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
  1 +package org.jeecg.modules.wms.monitor.job.dto;
  2 +
  3 +import lombok.Data;
  4 +
  5 +@Data
  6 +public class AutoCheckOutDto {
  7 +
  8 + private String zoneCode;
  9 + private String toPort;
  10 +}
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&lt;ShipmentContai @@ -65,6 +65,14 @@ public interface IShipmentContainerHeaderService extends IService&lt;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&lt;ShipmentCont @@ -217,7 +217,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;ShipmentCont @@ -264,6 +264,15 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;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&lt;TaskHeader&gt; { @@ -36,6 +36,8 @@ public interface ITaskHeaderService extends IService&lt;TaskHeader&gt; {
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&lt;TaskHeader&gt; { @@ -107,6 +109,13 @@ public interface ITaskHeaderService extends IService&lt;TaskHeader&gt; {
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&lt;TaskHeader&gt; { @@ -374,4 +383,12 @@ public interface ITaskHeaderService extends IService&lt;TaskHeader&gt; {
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 }