|
1
2
3
4
5
6
|
/**
* 新增修改完成调用 modalFormOk方法 编辑弹框组件ref定义为modalForm
* 高级查询按钮调用 superQuery方法 高级查询组件ref定义为superQueryModal
* data中url定义 list为查询列表 delete为删除单条记录 deleteBatch为批量删除
*/
import { filterObj } from '@/utils/util';
|
|
7
|
import { deleteAction, getAction,downFile,getFileAccessHttpUrl } from '@/api/manage'
|
|
8
|
import Vue from 'vue'
|
|
9
|
import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types"
|
|
10
|
import store from '@/store'
|
|
11
|
|
|
12
13
14
|
export const JeecgListMixin = {
data(){
return {
|
|
15
|
/* 查询条件-请不要在queryParam中声明非字符串值的属性 */
|
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
queryParam: {},
/* 数据源 */
dataSource:[],
/* 分页参数 */
ipagination:{
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => {
return range[0] + "-" + range[1] + " 共" + total + "条"
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
},
/* 排序参数 */
isorter:{
column: 'createTime',
order: 'desc',
},
/* 筛选参数 */
filters: {},
/* table加载状态 */
loading:false,
/* table选中keys*/
selectedRowKeys: [],
/* table选中records*/
selectionRows: [],
/* 查询折叠 */
toggleSearchStatus:false,
/* 高级查询条件生效状态 */
superQueryFlag:false,
/* 高级查询条件 */
|
|
49
50
51
|
superQueryParams: '',
/** 高级查询拼接方式 */
superQueryMatchType: 'and',
|
|
52
53
54
|
}
},
created() {
|
|
55
56
57
58
59
60
|
if(!this.disableMixinCreated){
console.log(' -- mixin created -- ')
this.loadData();
//初始化字典配置 在自己页面定义
this.initDictConfig();
}
|
|
61
|
},
|
|
62
63
64
65
66
67
|
computed: {
//token header
tokenHeader(){
let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)}
let tenantid = Vue.ls.get(TENANT_ID)
if(tenantid){
|
|
68
|
head['tenant-id'] = tenantid
|
|
69
70
71
72
|
}
return head;
}
},
|
|
73
74
75
76
77
78
79
80
81
82
83
|
methods:{
loadData(arg) {
if(!this.url.list){
this.$message.error("请设置url.list属性!")
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1;
}
var params = this.getQueryParams();//查询条件
|
|
84
|
this.loading = true;
|
|
85
86
|
getAction(this.url.list, params).then((res) => {
if (res.success) {
|
|
87
88
89
90
91
|
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records||res.result;
if(res.result.total)
{
this.ipagination.total = res.result.total;
|
|
92
93
|
}else{
this.ipagination.total = 0;
|
|
94
95
|
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
|
|
96
|
}else{
|
|
97
98
|
this.$message.warning(res.message)
}
|
|
99
100
|
}).finally(() => {
this.loading = false
|
|
101
102
103
104
105
|
})
},
initDictConfig(){
console.log("--这是一个假的方法!")
},
|
|
106
|
handleSuperQuery(params, matchType) {
|
|
107
|
//高级查询方法
|
|
108
|
if(!params){
|
|
109
110
111
112
|
this.superQueryParams=''
this.superQueryFlag = false
}else{
this.superQueryFlag = true
|
|
113
114
|
this.superQueryParams=JSON.stringify(params)
this.superQueryMatchType = matchType
|
|
115
|
}
|
|
116
|
this.loadData(1)
|
|
117
118
119
120
121
122
|
},
getQueryParams() {
//获取查询条件
let sqp = {}
if(this.superQueryParams){
sqp['superQueryParams']=encodeURI(this.superQueryParams)
|
|
123
|
sqp['superQueryMatchType'] = this.superQueryMatchType
|
|
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
}
var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters);
param.field = this.getQueryField();
param.pageNo = this.ipagination.current;
param.pageSize = this.ipagination.pageSize;
return filterObj(param);
},
getQueryField() {
//TODO 字段权限控制
var str = "id,";
this.columns.forEach(function (value) {
str += "," + value.dataIndex;
});
return str;
},
onSelectChange(selectedRowKeys, selectionRows) {
this.selectedRowKeys = selectedRowKeys;
this.selectionRows = selectionRows;
},
onClearSelected() {
this.selectedRowKeys = [];
this.selectionRows = [];
},
searchQuery() {
this.loadData(1);
|
|
150
151
152
153
|
// 点击查询清空列表选中行
// https://gitee.com/jeecg/jeecg-boot/issues/I4KTU1
this.selectedRowKeys = []
this.selectionRows = []
|
|
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
},
superQuery() {
this.$refs.superQueryModal.show();
},
searchReset() {
this.queryParam = {}
this.loadData(1);
},
batchDel: function () {
if(!this.url.deleteBatch){
this.$message.error("请设置url.deleteBatch属性!")
return
}
if (this.selectedRowKeys.length <= 0) {
this.$message.warning('请选择一条记录!');
return;
} else {
var ids = "";
for (var a = 0; a < this.selectedRowKeys.length; a++) {
ids += this.selectedRowKeys[a] + ",";
}
var that = this;
this.$confirm({
title: "确认删除",
content: "是否删除选中数据?",
onOk: function () {
|
|
180
|
that.loading = true;
|
|
181
182
|
deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
if (res.success) {
|
|
183
184
|
//重新计算分页问题
that.reCalculatePage(that.selectedRowKeys.length)
|
|
185
186
187
188
189
190
|
that.$message.success(res.message);
that.loadData();
that.onClearSelected();
} else {
that.$message.warning(res.message);
}
|
|
191
192
|
}).finally(() => {
that.loading = false;
|
|
193
194
195
196
197
198
199
200
201
202
203
204
205
|
});
}
});
}
},
handleDelete: function (id) {
if(!this.url.delete){
this.$message.error("请设置url.delete属性!")
return
}
var that = this;
deleteAction(that.url.delete, {id: id}).then((res) => {
if (res.success) {
|
|
206
207
|
//重新计算分页问题
that.reCalculatePage(1)
|
|
208
209
210
211
212
213
214
|
that.$message.success(res.message);
that.loadData();
} else {
that.$message.warning(res.message);
}
});
},
|
|
215
216
217
218
219
220
221
222
223
224
225
|
reCalculatePage(count){
//总数量-count
let total=this.ipagination.total-count;
//获取删除后的分页数
let currentIndex=Math.ceil(total/this.ipagination.pageSize);
//删除后的分页数<所在当前页
if(currentIndex<this.ipagination.current){
this.ipagination.current=currentIndex;
}
console.log('currentIndex',currentIndex)
},
|
|
226
227
228
|
handleEdit: function (record) {
this.$refs.modalForm.edit(record);
this.$refs.modalForm.title = "编辑";
|
|
229
|
this.$refs.modalForm.disableSubmit = false;
|
|
230
231
232
233
|
},
handleAdd: function () {
this.$refs.modalForm.add();
this.$refs.modalForm.title = "新增";
|
|
234
|
this.$refs.modalForm.disableSubmit = false;
|
|
235
236
237
238
|
},
handleTableChange(pagination, filters, sorter) {
//分页、排序、筛选变化时触发
//TODO 筛选
|
|
239
|
console.log(pagination)
|
|
240
241
242
243
244
245
246
247
248
249
|
if (Object.keys(sorter).length > 0) {
this.isorter.column = sorter.field;
this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
}
this.ipagination = pagination;
this.loadData();
},
handleToggleSearch(){
this.toggleSearchStatus = !this.toggleSearchStatus;
},
|
|
250
251
252
253
|
// 给popup查询使用(查询区域不支持回填多个字段,限制只返回一个字段)
getPopupField(fields){
return fields.split(',')[0]
},
|
|
254
255
256
|
modalFormOk() {
// 新增/修改 成功时,重载列表
this.loadData();
|
|
257
258
|
//清空列表选中
this.onClearSelected()
|
|
259
260
261
262
263
264
265
|
},
handleDetail:function(record){
this.$refs.modalForm.edit(record);
this.$refs.modalForm.title="详情";
this.$refs.modalForm.disableSubmit = true;
},
/* 导出 */
|
|
266
|
handleExportXls2(){
|
|
267
268
269
270
|
let paramsStr = encodeURI(JSON.stringify(this.getQueryParams()));
let url = `${window._CONFIG['domianURL']}/${this.url.exportXlsUrl}?paramsStr=${paramsStr}`;
window.location.href = url;
},
|
|
271
272
273
274
|
handleExportXls(fileName){
if(!fileName || typeof fileName != "string"){
fileName = "导出文件"
}
|
|
275
|
let param = this.getQueryParams();
|
|
276
277
278
279
280
281
282
283
284
285
|
if(this.selectedRowKeys && this.selectedRowKeys.length>0){
param['selections'] = this.selectedRowKeys.join(",")
}
console.log("导出参数",param)
downFile(this.url.exportXlsUrl,param).then((data)=>{
if (!data) {
this.$message.warning("文件下载失败")
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
|
286
|
window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls')
|
|
287
|
}else{
|
|
288
|
let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'}))
|
|
289
290
291
292
293
294
295
296
297
298
299
|
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName+'.xls')
document.body.appendChild(link)
link.click()
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象
}
})
},
|
|
300
301
|
/* 导入 */
handleImportExcel(info){
|
|
302
|
this.loading = true;
|
|
303
304
305
306
|
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
|
|
307
|
this.loading = false;
|
|
308
309
310
311
312
313
314
|
if (info.file.response.success) {
// this.$message.success(`${info.file.name} 文件上传成功`);
if (info.file.response.code === 201) {
let { message, result: { msg, fileUrl, fileName } } = info.file.response
let href = window._CONFIG['domianURL'] + fileUrl
this.$warning({
title: message,
|
|
315
|
content: (<div>
|
|
316
317
318
319
320
321
322
323
324
|
<span>{msg}</span><br/>
<span>具体详情请 <a href={href} target="_blank" download={fileName}>点击下载</a> </span>
</div>
)
})
} else {
this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
}
this.loadData()
|
|
325
326
327
|
} else {
this.$message.error(`${info.file.name} ${info.file.response.message}.`);
}
|
|
328
|
} else if (info.file.status === 'error') {
|
|
329
|
this.loading = false;
|
|
330
331
332
333
|
if (info.file.response.status === 500) {
let data = info.file.response
const token = Vue.ls.get(ACCESS_TOKEN)
if (token && data.message.includes("Token失效")) {
|
|
334
|
this.$error({
|
|
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
|
title: '登录已过期',
content: '很抱歉,登录已过期,请重新登录',
okText: '重新登录',
mask: false,
onOk: () => {
store.dispatch('Logout').then(() => {
Vue.ls.remove(ACCESS_TOKEN)
window.location.reload();
})
}
})
}
} else {
this.$message.error(`文件上传失败: ${info.file.msg} `);
}
|
|
350
351
352
353
354
355
356
|
}
},
/* 图片预览 */
getImgView(text){
if(text && text.indexOf(",")>0){
text = text.substring(0,text.indexOf(","))
}
|
|
357
|
return getFileAccessHttpUrl(text)
|
|
358
359
|
},
/* 文件下载 */
|
|
360
361
|
// update--autor:lvdandan-----date:20200630------for:修改下载文件方法名uploadFile改为downloadFile------
downloadFile(text){
|
|
362
363
364
365
366
367
|
if(!text){
this.$message.warning("未知的文件")
return;
}
if(text.indexOf(",")>0){
text = text.substring(0,text.indexOf(","))
|
|
368
|
}
|
|
369
370
|
let url = getFileAccessHttpUrl(text)
window.open(url);
|
|
371
372
373
374
|
},
}
}
|