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