three-trees-ui 1.0.76 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/three-trees-ui.common.js +17135 -16344
- package/lib/three-trees-ui.css +1 -1
- package/lib/three-trees-ui.umd.js +17135 -16344
- package/lib/three-trees-ui.umd.min.js +1 -1
- package/package.json +1 -1
- package/packages/CustomDialog/src/customDialog.vue +78 -17
- package/packages/DataLists/src/main.vue +2 -3
- package/packages/QuerySqlPreview/src/QuerySqlPreview.vue +43 -1
- package/packages/Subtable/src/SubImportDialog.vue +3 -3
- package/packages/Subtable/src/SubPagination.vue +3 -3
- package/packages/Table/src/Table.vue +15 -1
- package/packages/TableSearchField/src/main.vue +5 -0
- package/packages/TemplateFormDialog/src/main.vue +6 -1
- package/packages/TemplatePreview/src/TemplatePreview.vue +43 -0
- package/src/mixins/querySqlPreview.js +354 -32
- package/src/mixins/templatePreview.js +525 -41
|
@@ -10,6 +10,7 @@ const axios = require('axios')
|
|
|
10
10
|
const { saveAs } = require('file-saver')
|
|
11
11
|
import _ from 'lodash'
|
|
12
12
|
import { decode } from '@/util/base64'
|
|
13
|
+
import moment from 'moment'
|
|
13
14
|
|
|
14
15
|
const req = function (url, data = {}, option = {}) {
|
|
15
16
|
const requestData = {
|
|
@@ -41,6 +42,7 @@ export default {
|
|
|
41
42
|
},
|
|
42
43
|
data() {
|
|
43
44
|
return {
|
|
45
|
+
defaultQuerys: [],
|
|
44
46
|
treeQuerys: [],
|
|
45
47
|
alias_new: 'statement',
|
|
46
48
|
loading: false,
|
|
@@ -51,6 +53,7 @@ export default {
|
|
|
51
53
|
selectRows: [],
|
|
52
54
|
querys: '',
|
|
53
55
|
},
|
|
56
|
+
exportBtnDisabled: false,
|
|
54
57
|
dialogExportVisible: false,
|
|
55
58
|
exportData: {
|
|
56
59
|
getType: 'all',
|
|
@@ -59,6 +62,8 @@ export default {
|
|
|
59
62
|
displayFields: [],
|
|
60
63
|
exportSellection: [],
|
|
61
64
|
searchForm: {},
|
|
65
|
+
bindKey: {},
|
|
66
|
+
bindValue: {},
|
|
62
67
|
queryForm: {
|
|
63
68
|
queryData: '',
|
|
64
69
|
},
|
|
@@ -112,7 +117,9 @@ export default {
|
|
|
112
117
|
pageSize: 10,
|
|
113
118
|
total: 1,
|
|
114
119
|
},
|
|
120
|
+
lastPage: 1, //上一次输入的分页数、默认为1
|
|
115
121
|
paginationLayout: 'total, sizes, prev, pager, next, jumper',
|
|
122
|
+
paginationLayoutWithoutTotal: 'sizes, prev, pager, next, jumper',
|
|
116
123
|
total: 0,
|
|
117
124
|
permission: {
|
|
118
125
|
print: true,
|
|
@@ -222,6 +229,45 @@ export default {
|
|
|
222
229
|
: 0.85 * window.innerHeight,
|
|
223
230
|
needRequestTotal: false, // 需不需要后端统计列表全部数据
|
|
224
231
|
tableDataTotal: {},
|
|
232
|
+
loadingTotal: false, // 统计按钮加载中
|
|
233
|
+
pageSizeArray: [
|
|
234
|
+
{
|
|
235
|
+
label: '10条/页',
|
|
236
|
+
value: 10,
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
label: '20条/页',
|
|
240
|
+
value: 20,
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
label: '30条/页',
|
|
244
|
+
value: 30,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
label: '40条/页',
|
|
248
|
+
value: 40,
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
label: '50条/页',
|
|
252
|
+
value: 50,
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
label: '100条/页',
|
|
256
|
+
value: 100,
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
label: '200条/页',
|
|
260
|
+
value: 200,
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
label: '300条/页',
|
|
264
|
+
value: 300,
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
label: '500条/页',
|
|
268
|
+
value: 500,
|
|
269
|
+
},
|
|
270
|
+
],
|
|
225
271
|
}
|
|
226
272
|
},
|
|
227
273
|
watch: {
|
|
@@ -262,7 +308,7 @@ export default {
|
|
|
262
308
|
immediate: true,
|
|
263
309
|
},
|
|
264
310
|
templateInfo: {
|
|
265
|
-
handler: function (newVal) {
|
|
311
|
+
handler: async function (newVal) {
|
|
266
312
|
if (newVal && newVal.id) {
|
|
267
313
|
let _me = this
|
|
268
314
|
_me.templateInfo = newVal
|
|
@@ -335,7 +381,7 @@ export default {
|
|
|
335
381
|
)
|
|
336
382
|
params.pagination.querys = querys
|
|
337
383
|
}
|
|
338
|
-
let defaultQuery = this.
|
|
384
|
+
let defaultQuery = await this.newBuildDefaultQuerys()
|
|
339
385
|
if (defaultQuery.length > 0) {
|
|
340
386
|
if (params.pagination.querys) {
|
|
341
387
|
params.pagination.querys.concat(defaultQuery)
|
|
@@ -485,11 +531,31 @@ export default {
|
|
|
485
531
|
this_.calcScriptBtnPermission()
|
|
486
532
|
})
|
|
487
533
|
this.$emit('afterMounted')
|
|
534
|
+
if (this.templateInfo.jsScript) {
|
|
535
|
+
// 执行js脚本
|
|
536
|
+
this.handleDiyScript(this.templateInfo.jsScript)
|
|
537
|
+
}
|
|
488
538
|
// setTimeout(() => {
|
|
489
539
|
// this.$refs.multipleTemplateTable.handleFilterChange(this.filterMap)
|
|
490
540
|
// }, 100)
|
|
491
541
|
},
|
|
492
542
|
methods: {
|
|
543
|
+
handleDiyScript(scriptValue) {
|
|
544
|
+
//执行前置脚本内容
|
|
545
|
+
const _this = this
|
|
546
|
+
// 用户信息
|
|
547
|
+
const account = this.$requestConfig.getAccount()
|
|
548
|
+
const userId = this.$requestConfig.getUserId()
|
|
549
|
+
const userName = this.$requestConfig.getUsername()
|
|
550
|
+
const preScript = `const scriptFunction = function(_this, account, userId, userName){
|
|
551
|
+
${scriptValue}
|
|
552
|
+
};`
|
|
553
|
+
try {
|
|
554
|
+
eval(`${preScript}scriptFunction(_this, account, userId, userName);`)
|
|
555
|
+
} catch (err) {
|
|
556
|
+
this.$message.error(`脚本事件执行错误:${err}`)
|
|
557
|
+
}
|
|
558
|
+
},
|
|
493
559
|
//因为row.id_ 或row.id可能会有重复,所以加随机值使其唯一
|
|
494
560
|
getRowKey(row) {
|
|
495
561
|
/** 检查row.id是否有重复的缓存对象 */
|
|
@@ -1341,8 +1407,10 @@ export default {
|
|
|
1341
1407
|
}
|
|
1342
1408
|
for (let x = 0; x < display.length; x++) {
|
|
1343
1409
|
let item = JSON.parse(display[x])
|
|
1344
|
-
if (this.rows[index][item.name]) {
|
|
1345
|
-
|
|
1410
|
+
if (this.rows[index][item.name] || this.rows[index][item.fieldsAlias]) {
|
|
1411
|
+
const qrCode =
|
|
1412
|
+
this.rows[index][item.name] || this.rows[index][item.fieldsAlias]
|
|
1413
|
+
this.QRCodeDesc.push(`${item.desc}:${qrCode}`)
|
|
1346
1414
|
}
|
|
1347
1415
|
}
|
|
1348
1416
|
this.mobileFormAlias = mobileFormAlias
|
|
@@ -1358,8 +1426,8 @@ export default {
|
|
|
1358
1426
|
this.$refs.multipleTemplateTable.handleFilterChange()
|
|
1359
1427
|
},
|
|
1360
1428
|
handleCurrentChange: function (currentPage) {
|
|
1361
|
-
|
|
1362
|
-
this.pagination.page = currentPage
|
|
1429
|
+
//点击第几页,如果当前页数没有值,则默认用上一次页数
|
|
1430
|
+
this.pagination.page = currentPage ? currentPage : this.lastPage
|
|
1363
1431
|
this.$refs.multipleTemplateTable.handleFilterChange()
|
|
1364
1432
|
},
|
|
1365
1433
|
getParam(str) {
|
|
@@ -1407,7 +1475,7 @@ export default {
|
|
|
1407
1475
|
return params
|
|
1408
1476
|
},
|
|
1409
1477
|
//列表数据查询入口
|
|
1410
|
-
search(param, cb, isSearchBtn, needRequestTotal = false) {
|
|
1478
|
+
async search(param, cb, isSearchBtn, needRequestTotal = false) {
|
|
1411
1479
|
// 不需要请求后端接口统计列表数据
|
|
1412
1480
|
this.needRequestTotal = needRequestTotal
|
|
1413
1481
|
// 如果是高级查询,页码重置为首页
|
|
@@ -1520,8 +1588,7 @@ export default {
|
|
|
1520
1588
|
}
|
|
1521
1589
|
//初始化时,把查询字段和筛选字段的默认值也加进去
|
|
1522
1590
|
if (this.isInit) {
|
|
1523
|
-
this.
|
|
1524
|
-
this.handleInitQuery(params)
|
|
1591
|
+
await this.handleInitQuery(params)
|
|
1525
1592
|
}
|
|
1526
1593
|
//数据视图控件
|
|
1527
1594
|
if (this.dataView) {
|
|
@@ -1538,12 +1605,196 @@ export default {
|
|
|
1538
1605
|
params.taskType = this_.taskType
|
|
1539
1606
|
params.defKey = this_.defKey
|
|
1540
1607
|
}
|
|
1608
|
+
// 检查是否有必填字段
|
|
1609
|
+
if (this.checkHaveRequired() && this.isInit) {
|
|
1610
|
+
this.$refs.multipleTemplateTable.showAdvancedSearch = true
|
|
1611
|
+
}
|
|
1612
|
+
// 查询字段 校验是否必填,如果是必填没数据,需返回提示
|
|
1613
|
+
let errorMsg = this.validateSearchRequired(params.pagination.querys)
|
|
1614
|
+
if (errorMsg) {
|
|
1615
|
+
!this.isInit && this.$message.warning(errorMsg)
|
|
1616
|
+
cb && cb()
|
|
1617
|
+
this.isInit = false
|
|
1618
|
+
this.$emit('data-reload-success')
|
|
1619
|
+
return
|
|
1620
|
+
}
|
|
1621
|
+
this.isInit = false
|
|
1541
1622
|
if ($.isEmptyObject(this.searchForm)) {
|
|
1542
1623
|
this.getBpmTemplateByPagination(params, cb)
|
|
1543
1624
|
} else {
|
|
1544
1625
|
this.getBpmTemplateByPagination(params, cb)
|
|
1545
1626
|
}
|
|
1546
1627
|
},
|
|
1628
|
+
// 校验查询字段必填
|
|
1629
|
+
validateSearchRequired(querys = []) {
|
|
1630
|
+
let errorMsg = ''
|
|
1631
|
+
let conditions = JSON.parse(this.templateInfo.conditionField)
|
|
1632
|
+
if (conditions) {
|
|
1633
|
+
conditions.forEach((item) => {
|
|
1634
|
+
if (item.isRequired) {
|
|
1635
|
+
let queryPre = this.getQueryPre(conditions, item.name)
|
|
1636
|
+
let index = querys.findIndex((k) => {
|
|
1637
|
+
return k.property == queryPre + item.name
|
|
1638
|
+
})
|
|
1639
|
+
if (index == -1) {
|
|
1640
|
+
errorMsg = `字段【${item.cm}】为必填查询字段,不能为空!`
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
})
|
|
1644
|
+
}
|
|
1645
|
+
return errorMsg
|
|
1646
|
+
},
|
|
1647
|
+
checkHaveRequired() {
|
|
1648
|
+
let haveRequired = false
|
|
1649
|
+
try {
|
|
1650
|
+
let conditions = JSON.parse(this.templateInfo.conditionField)
|
|
1651
|
+
if (conditions) {
|
|
1652
|
+
haveRequired = conditions.some((item) => {
|
|
1653
|
+
return item.isRequired
|
|
1654
|
+
})
|
|
1655
|
+
}
|
|
1656
|
+
} catch (e) {
|
|
1657
|
+
console.log(e)
|
|
1658
|
+
}
|
|
1659
|
+
return haveRequired
|
|
1660
|
+
},
|
|
1661
|
+
searchCountTotal(param, cb, isSearchBtn, needRequestTotal = false) {
|
|
1662
|
+
// 不需要请求后端接口统计列表数据
|
|
1663
|
+
this.needRequestTotal = needRequestTotal
|
|
1664
|
+
// 如果是高级查询,页码重置为首页
|
|
1665
|
+
if (isSearchBtn) {
|
|
1666
|
+
this.pagination.page = 1
|
|
1667
|
+
}
|
|
1668
|
+
let params = {}
|
|
1669
|
+
//判断为合并查询还是高级查询
|
|
1670
|
+
let showAdvancedSearch = this.$refs.multipleTemplateTable
|
|
1671
|
+
? this.$refs.multipleTemplateTable.showAdvancedSearch
|
|
1672
|
+
: false
|
|
1673
|
+
//高级查询
|
|
1674
|
+
if (showAdvancedSearch) {
|
|
1675
|
+
params = this.getQueryFilter()
|
|
1676
|
+
} else {
|
|
1677
|
+
//合并查询
|
|
1678
|
+
// 快速查询时,需处理添加快速查询字段前缀
|
|
1679
|
+
param = this.handleQuickParams(param)
|
|
1680
|
+
params = this.getConditionQuery(param)
|
|
1681
|
+
}
|
|
1682
|
+
this.templateSearchQuery =
|
|
1683
|
+
(params.pagination && params.pagination.querys) || []
|
|
1684
|
+
if (!params.pagination) {
|
|
1685
|
+
params.pagination = {}
|
|
1686
|
+
}
|
|
1687
|
+
if (!params.pagination.querys) {
|
|
1688
|
+
params.pagination.querys = []
|
|
1689
|
+
}
|
|
1690
|
+
//处理排序字段
|
|
1691
|
+
if (param && param.sorter && param.sorter.length > 0) {
|
|
1692
|
+
let sortField = JSON.parse(this.templateInfo.sortField)
|
|
1693
|
+
params.pagination = params.pagination || {}
|
|
1694
|
+
params.pagination.sorter = []
|
|
1695
|
+
param.sorter.forEach((s) => {
|
|
1696
|
+
let prefix = this.getColPreFix(sortField, s.property)
|
|
1697
|
+
let queryPre = this.getQueryPre(sortField, s.property)
|
|
1698
|
+
// 关联表时需特殊处理
|
|
1699
|
+
let relevancyProperty = this.getRelevancyProperty(
|
|
1700
|
+
sortField,
|
|
1701
|
+
s.property
|
|
1702
|
+
)
|
|
1703
|
+
if (relevancyProperty) {
|
|
1704
|
+
s.property = relevancyProperty
|
|
1705
|
+
}
|
|
1706
|
+
params.pagination.sorter.push({
|
|
1707
|
+
property: queryPre + prefix + s.property,
|
|
1708
|
+
direction: s.direction,
|
|
1709
|
+
})
|
|
1710
|
+
})
|
|
1711
|
+
} else if (this.templateInfo.sortField) {
|
|
1712
|
+
let sortField = JSON.parse(this.templateInfo.sortField)
|
|
1713
|
+
let sorter = []
|
|
1714
|
+
for (let x = 0; x < sortField.length; x++) {
|
|
1715
|
+
const s = sortField[x]
|
|
1716
|
+
// 默认排序字段的排序方向为空或者不为指定值时放弃
|
|
1717
|
+
if (!s.sort || (s.sort != 'ASC' && s.sort != 'DESC')) {
|
|
1718
|
+
continue
|
|
1719
|
+
}
|
|
1720
|
+
let prefix = this.getColPreFix(sortField, s.name)
|
|
1721
|
+
let queryPre = this.getQueryPre(sortField, s.name)
|
|
1722
|
+
if (!queryPre) {
|
|
1723
|
+
if (s.joinTableField && s.tableName) {
|
|
1724
|
+
prefix = `${s.tableName}.${prefix}`
|
|
1725
|
+
} else {
|
|
1726
|
+
prefix = `t.${prefix}`
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
sorter.push({
|
|
1730
|
+
property: queryPre + prefix + s.name,
|
|
1731
|
+
direction: s.sort,
|
|
1732
|
+
})
|
|
1733
|
+
}
|
|
1734
|
+
params.pagination.sorter = sorter
|
|
1735
|
+
} else if (param.querys && param.querys.length > 0) {
|
|
1736
|
+
params.pagination.querys.concat(param.querys)
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
if (params.pagination && params.pagination.querys) {
|
|
1740
|
+
let tempQueryS = []
|
|
1741
|
+
let betweenConditions = {}
|
|
1742
|
+
params.pagination.querys.forEach((q) => {
|
|
1743
|
+
if (
|
|
1744
|
+
q.value != undefined &&
|
|
1745
|
+
(q.operation != 'BETWEEN' || q.value.constructor == Array)
|
|
1746
|
+
) {
|
|
1747
|
+
tempQueryS.push(q)
|
|
1748
|
+
} else if (q.value) {
|
|
1749
|
+
let conditions = q
|
|
1750
|
+
if (betweenConditions[q.property]) {
|
|
1751
|
+
conditions = betweenConditions[q.property]
|
|
1752
|
+
conditions.value = [conditions.value]
|
|
1753
|
+
conditions.value.push(q.value)
|
|
1754
|
+
}
|
|
1755
|
+
betweenConditions[q.property] = conditions
|
|
1756
|
+
}
|
|
1757
|
+
})
|
|
1758
|
+
for (const key in betweenConditions) {
|
|
1759
|
+
tempQueryS.push(betweenConditions[key])
|
|
1760
|
+
}
|
|
1761
|
+
params.pagination.querys = tempQueryS
|
|
1762
|
+
params.pagination.querys = params.pagination.querys
|
|
1763
|
+
? params.pagination.querys.concat(this.treeQuerys)
|
|
1764
|
+
: this.treeQuerys
|
|
1765
|
+
}
|
|
1766
|
+
//把过滤树的条件也拼接进去
|
|
1767
|
+
if (this.treeQuerys && this.treeQuerys.length > 0) {
|
|
1768
|
+
params.pagination.querys = params.pagination.querys
|
|
1769
|
+
? params.pagination.querys.concat(this.treeQuerys)
|
|
1770
|
+
: this.treeQuerys
|
|
1771
|
+
}
|
|
1772
|
+
//初始化时,把查询字段和筛选字段的默认值也加进去
|
|
1773
|
+
if (this.isInit) {
|
|
1774
|
+
this.isInit = false
|
|
1775
|
+
this.handleInitQuery(params)
|
|
1776
|
+
}
|
|
1777
|
+
//数据视图控件
|
|
1778
|
+
if (this.dataView) {
|
|
1779
|
+
this.handelBindFiledValua()
|
|
1780
|
+
params.refIdValue = this.dataView.refIdValue
|
|
1781
|
+
//关联查询字段
|
|
1782
|
+
if (this.dataView.selectList && this.dataView.selectList.length > 0) {
|
|
1783
|
+
params.selectList = this.dataView.selectList
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
const this_ = this
|
|
1787
|
+
if (this_.isJoinFlow) {
|
|
1788
|
+
params.isJoinFlow = true
|
|
1789
|
+
params.taskType = this_.taskType
|
|
1790
|
+
params.defKey = this_.defKey
|
|
1791
|
+
}
|
|
1792
|
+
if ($.isEmptyObject(this.searchForm)) {
|
|
1793
|
+
this.getBpmTemplateByPaginationTotal(params, cb)
|
|
1794
|
+
} else {
|
|
1795
|
+
this.getBpmTemplateByPaginationTotal(params, cb)
|
|
1796
|
+
}
|
|
1797
|
+
},
|
|
1547
1798
|
// 处理快速查询参数
|
|
1548
1799
|
handleQuickParams(param) {
|
|
1549
1800
|
if (param && param.querys && param.querys.length) {
|
|
@@ -1562,20 +1813,24 @@ export default {
|
|
|
1562
1813
|
}
|
|
1563
1814
|
return param
|
|
1564
1815
|
},
|
|
1565
|
-
handleInitQuery(params) {
|
|
1816
|
+
async handleInitQuery(params) {
|
|
1566
1817
|
const conditionFields = JSON.parse(this.templateInfo.conditionField) || []
|
|
1567
1818
|
const querys = []
|
|
1568
|
-
conditionFields.
|
|
1819
|
+
for (let i = 0; i < conditionFields.length; i++) {
|
|
1820
|
+
let item = conditionFields[i]
|
|
1569
1821
|
if (item.defaultValue) {
|
|
1822
|
+
let defaultValue = item.isScriptDefault
|
|
1823
|
+
? await this.getScriptDefaultValue(item.defaultValue)
|
|
1824
|
+
: item.defaultValue
|
|
1570
1825
|
querys.push({
|
|
1571
1826
|
property: `${item.queryPre || ''}${item.colPrefix}${item.name}`,
|
|
1572
|
-
value:
|
|
1827
|
+
value: defaultValue,
|
|
1573
1828
|
operation: item.qt.toUpperCase(),
|
|
1574
1829
|
relation: 'AND',
|
|
1575
1830
|
group: 'defaultQuery',
|
|
1576
1831
|
})
|
|
1577
1832
|
}
|
|
1578
|
-
}
|
|
1833
|
+
}
|
|
1579
1834
|
const filteringFields = JSON.parse(this.templateInfo.filteringField) || []
|
|
1580
1835
|
filteringFields.forEach((item) => {
|
|
1581
1836
|
if (item.defaultValue && item.defaultValue.length) {
|
|
@@ -1628,13 +1883,15 @@ export default {
|
|
|
1628
1883
|
})
|
|
1629
1884
|
}
|
|
1630
1885
|
this.$requestConfig
|
|
1631
|
-
.
|
|
1886
|
+
.getDataTemplateDataListWithoutTotal(dataTemplateQueryVo)
|
|
1632
1887
|
.then((response) => {
|
|
1633
1888
|
this.rows = response.rows
|
|
1634
|
-
this.total = response.total
|
|
1635
1889
|
this.$set(this.pagination, 'page', response.page)
|
|
1636
1890
|
this.$set(this.pagination, 'pageSize', response.pageSize)
|
|
1637
|
-
|
|
1891
|
+
//每次请求后不再统计总数,而是在统计按钮中去统计,当数量统计过一次后,再重新设置到当前页
|
|
1892
|
+
if (this.total) {
|
|
1893
|
+
this.$set(this.pagination, 'total', this.total)
|
|
1894
|
+
}
|
|
1638
1895
|
this.$set(this, 'flowBtnPermission', {})
|
|
1639
1896
|
this.$emit('data-reload-success')
|
|
1640
1897
|
if (response.summary && response.summary.length) {
|
|
@@ -1658,6 +1915,46 @@ export default {
|
|
|
1658
1915
|
cb2 && cb2()
|
|
1659
1916
|
})
|
|
1660
1917
|
},
|
|
1918
|
+
getBpmTemplateByPaginationTotal(params, cb1, cb2) {
|
|
1919
|
+
const dataTemplateQueryVo = {
|
|
1920
|
+
templateId: params.templateId,
|
|
1921
|
+
queryFilter: params.pagination,
|
|
1922
|
+
}
|
|
1923
|
+
if (params.isJoinFlow && params.taskType && params.defKey) {
|
|
1924
|
+
dataTemplateQueryVo.isJoinFlow = params.isJoinFlow
|
|
1925
|
+
dataTemplateQueryVo.taskType = params.taskType
|
|
1926
|
+
dataTemplateQueryVo.defKey = params.defKey
|
|
1927
|
+
}
|
|
1928
|
+
if (params.selectField) {
|
|
1929
|
+
dataTemplateQueryVo.selectField = params.selectField
|
|
1930
|
+
dataTemplateQueryVo.selectValue = params.selectValue
|
|
1931
|
+
}
|
|
1932
|
+
if (params.selectList) {
|
|
1933
|
+
dataTemplateQueryVo.selectList = params.selectList
|
|
1934
|
+
}
|
|
1935
|
+
dataTemplateQueryVo.refIdValue = params.refIdValue
|
|
1936
|
+
this.curSelectParams = dataTemplateQueryVo
|
|
1937
|
+
//加载按钮
|
|
1938
|
+
this.loadingTotal = true
|
|
1939
|
+
this.$requestConfig
|
|
1940
|
+
.getDataTemplateDataListWithTotal(dataTemplateQueryVo)
|
|
1941
|
+
.then((response) => {
|
|
1942
|
+
//设置总数
|
|
1943
|
+
this.total = response.value
|
|
1944
|
+
this.$set(this.pagination, 'total', response.value)
|
|
1945
|
+
this.loadingTotal = false
|
|
1946
|
+
this.$emit('data-reload-success')
|
|
1947
|
+
this.$nextTick(() => {
|
|
1948
|
+
this.$refs.multipleTemplateTable &&
|
|
1949
|
+
this.$refs.multipleTemplateTable.doLayout()
|
|
1950
|
+
})
|
|
1951
|
+
})
|
|
1952
|
+
.finally(() => {
|
|
1953
|
+
this.loadingTotal = false
|
|
1954
|
+
cb1 && cb1()
|
|
1955
|
+
cb2 && cb2()
|
|
1956
|
+
})
|
|
1957
|
+
},
|
|
1661
1958
|
getQueryFilter() {
|
|
1662
1959
|
let operationMap = this.getSearchItems()
|
|
1663
1960
|
let fieldTypeMap = this.getFieldType()
|
|
@@ -1674,6 +1971,12 @@ export default {
|
|
|
1674
1971
|
params.pagination = pageBean
|
|
1675
1972
|
if (!$.isEmptyObject(this.searchForm)) {
|
|
1676
1973
|
let conditionField = utils.parseToJson(this.templateInfo.conditionField)
|
|
1974
|
+
//处理绑定字段
|
|
1975
|
+
this.bindValue = this.searchForm.bindValue || this.bindValue
|
|
1976
|
+
this.bindKey = this.searchForm.bindKey || this.bindKey
|
|
1977
|
+
//记录后再删除
|
|
1978
|
+
delete this.searchForm.bindValue
|
|
1979
|
+
delete this.searchForm.bindKey
|
|
1677
1980
|
for (let key in this.searchForm) {
|
|
1678
1981
|
if (
|
|
1679
1982
|
typeof this.searchForm[key] != 'undefined' &&
|
|
@@ -1711,6 +2014,16 @@ export default {
|
|
|
1711
2014
|
if (fieldTypeMap[key] && fieldTypeMap[key] == 'number') {
|
|
1712
2015
|
value = parseFloat(this.searchForm[key])
|
|
1713
2016
|
}
|
|
2017
|
+
//在表单列表的查询字段中添加的对话框控件 此处逻辑对应 packages/CustomDialog/src/customDialog.vue:1920行
|
|
2018
|
+
if (
|
|
2019
|
+
this.bindValue &&
|
|
2020
|
+
Object.keys(this.bindValue).length &&
|
|
2021
|
+
this.bindValue[key] &&
|
|
2022
|
+
Object.keys(this.bindKey).length
|
|
2023
|
+
) {
|
|
2024
|
+
//获得绑定字段的值
|
|
2025
|
+
value = this.bindValue[key][this.bindKey[key]]
|
|
2026
|
+
}
|
|
1714
2027
|
let queryPre = this.getQueryPre(conditionField, key)
|
|
1715
2028
|
querys.push({
|
|
1716
2029
|
property: queryPre + key,
|
|
@@ -1723,7 +2036,14 @@ export default {
|
|
|
1723
2036
|
}
|
|
1724
2037
|
}
|
|
1725
2038
|
this.clearQueryByGroupName(querys, 'filter')
|
|
1726
|
-
//
|
|
2039
|
+
// 将过滤条件添加查询参数数组中,不是高级查询时使用
|
|
2040
|
+
if (
|
|
2041
|
+
this.$refs.multipleTemplateTable &&
|
|
2042
|
+
this.$refs.multipleTemplateTable.querys &&
|
|
2043
|
+
!this.$refs.multipleTemplateTable.showAdvancedSearch
|
|
2044
|
+
) {
|
|
2045
|
+
querys.push(...this.$refs.multipleTemplateTable.querys)
|
|
2046
|
+
}
|
|
1727
2047
|
this.buildFilterParams(querys)
|
|
1728
2048
|
}
|
|
1729
2049
|
// 判断table中是否含有filter查询
|
|
@@ -2309,7 +2629,9 @@ export default {
|
|
|
2309
2629
|
handledUrlParams(url, row, fieldName) {
|
|
2310
2630
|
if (this.templateInfo.displayField) {
|
|
2311
2631
|
let displayFields = JSON.parse(this.templateInfo.displayField)
|
|
2312
|
-
let params =
|
|
2632
|
+
let params =
|
|
2633
|
+
this.getParentId(displayFields, fieldName, 'name') ||
|
|
2634
|
+
this.getParentId(displayFields, fieldName, 'fieldsAlias')
|
|
2313
2635
|
if (params && params.urlParams && params.urlParams.length > 0) {
|
|
2314
2636
|
let urlParams = params.urlParams
|
|
2315
2637
|
let suffix = ''
|
|
@@ -2464,10 +2786,19 @@ export default {
|
|
|
2464
2786
|
selectedQuery,
|
|
2465
2787
|
]
|
|
2466
2788
|
}
|
|
2789
|
+
// 校验
|
|
2790
|
+
let errorMsg = this.validateSearchRequired(
|
|
2791
|
+
this.curSelectParams.queryFilter.querys
|
|
2792
|
+
)
|
|
2793
|
+
if (errorMsg) {
|
|
2794
|
+
this.$message.warning(errorMsg)
|
|
2795
|
+
return
|
|
2796
|
+
}
|
|
2467
2797
|
//导出全部数据按钮
|
|
2468
2798
|
if (type == 'all') {
|
|
2469
2799
|
this.curSelectParams.queryFilter.querys = []
|
|
2470
2800
|
}
|
|
2801
|
+
this.exportBtnDisabled = true
|
|
2471
2802
|
let loadingInstance = Loading.service({
|
|
2472
2803
|
fullscreen: true,
|
|
2473
2804
|
}) //开始
|
|
@@ -2476,24 +2807,30 @@ export default {
|
|
|
2476
2807
|
id: this.templateInfo.id,
|
|
2477
2808
|
params: this.curSelectParams,
|
|
2478
2809
|
})
|
|
2479
|
-
.then(
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
)
|
|
2810
|
+
// .then(
|
|
2811
|
+
// ({ data, headers }) => {
|
|
2812
|
+
// const fileName = decodeURIComponent(
|
|
2813
|
+
// headers['content-disposition'].split(';')[1].split('filename=')[1]
|
|
2814
|
+
// )
|
|
2815
|
+
// const blob = new Blob([data])
|
|
2816
|
+
// saveAs(blob, fileName)
|
|
2817
|
+
// loadingInstance.close() // 结束
|
|
2818
|
+
// },
|
|
2819
|
+
// (e) => {
|
|
2820
|
+
// loadingInstance.close() // 结束
|
|
2821
|
+
// let enc = new TextDecoder('utf-8')
|
|
2822
|
+
// let uint8_msg = JSON.parse(
|
|
2823
|
+
// enc.decode(new Uint8Array(e.response.data))
|
|
2824
|
+
// )
|
|
2825
|
+
// this.$message.error(uint8_msg.message)
|
|
2826
|
+
// }
|
|
2827
|
+
// )
|
|
2828
|
+
.then(() => {
|
|
2829
|
+
this.$message.success('正在导出,请稍后前往报表附件管理查看')
|
|
2830
|
+
})
|
|
2831
|
+
.finally(() => {
|
|
2832
|
+
loadingInstance.close()
|
|
2833
|
+
})
|
|
2497
2834
|
},
|
|
2498
2835
|
importCommand(params) {
|
|
2499
2836
|
switch (params.command) {
|
|
@@ -3100,7 +3437,7 @@ export default {
|
|
|
3100
3437
|
}
|
|
3101
3438
|
this.dialogSubVisible = true
|
|
3102
3439
|
},
|
|
3103
|
-
nodeClick(node) {
|
|
3440
|
+
async nodeClick(node) {
|
|
3104
3441
|
this.pagination.page = 1
|
|
3105
3442
|
//每次点击过滤树,应该把右边的table 与分页全部重置为初始
|
|
3106
3443
|
|
|
@@ -3135,7 +3472,9 @@ export default {
|
|
|
3135
3472
|
pageBean.querys.push({
|
|
3136
3473
|
property: item.isMain
|
|
3137
3474
|
? `t.${item.key_.oldTableField}`
|
|
3138
|
-
: `${item.key_.
|
|
3475
|
+
: `${item.key_.alias ? item.key_.alias : item.key_.tableName}.${
|
|
3476
|
+
item.key_.oldTableField
|
|
3477
|
+
}`,
|
|
3139
3478
|
value,
|
|
3140
3479
|
group: 'main',
|
|
3141
3480
|
operation,
|
|
@@ -3164,7 +3503,13 @@ export default {
|
|
|
3164
3503
|
params.taskType = this_.taskType
|
|
3165
3504
|
params.defKey = this_.defKey
|
|
3166
3505
|
}
|
|
3167
|
-
this.handleInitQuery(params)
|
|
3506
|
+
await this.handleInitQuery(params)
|
|
3507
|
+
// 查询字段 校验是否必填,如果是必填没数据,需返回提示
|
|
3508
|
+
let errorMsg = this.validateSearchRequired(params.pagination.querys)
|
|
3509
|
+
if (errorMsg) {
|
|
3510
|
+
this.$message.warning(errorMsg)
|
|
3511
|
+
return
|
|
3512
|
+
}
|
|
3168
3513
|
this.getBpmTemplateByPagination(params)
|
|
3169
3514
|
},
|
|
3170
3515
|
filterChange(filters) {
|
|
@@ -3820,7 +4165,7 @@ export default {
|
|
|
3820
4165
|
}
|
|
3821
4166
|
this.$requestConfig
|
|
3822
4167
|
.batchUpdateTemplateData(data)
|
|
3823
|
-
.then((data) => {
|
|
4168
|
+
.then(async (data) => {
|
|
3824
4169
|
if (data.state) {
|
|
3825
4170
|
this.$message({
|
|
3826
4171
|
type: 'success',
|
|
@@ -3830,8 +4175,9 @@ export default {
|
|
|
3830
4175
|
// 以服务的方式调用的 Loading 需要异步关闭
|
|
3831
4176
|
loadingInstance.close()
|
|
3832
4177
|
})
|
|
4178
|
+
let defaultValue = await this.newBuildDefaultQuerys()
|
|
3833
4179
|
this.search({
|
|
3834
|
-
querys:
|
|
4180
|
+
querys: defaultValue || [],
|
|
3835
4181
|
})
|
|
3836
4182
|
// 更新成功后需执行后置js
|
|
3837
4183
|
if (afterScriptValue) {
|
|
@@ -3945,6 +4291,120 @@ export default {
|
|
|
3945
4291
|
})
|
|
3946
4292
|
return querys
|
|
3947
4293
|
},
|
|
4294
|
+
async newBuildDefaultQuerys(isSetSearchForm = true) {
|
|
4295
|
+
let this_ = this
|
|
4296
|
+
let querys = []
|
|
4297
|
+
let conditions = JSON.parse(this_.templateInfo.conditionField)
|
|
4298
|
+
//条件字段默认值判断
|
|
4299
|
+
for (let i = 0; i < conditions.length; i++) {
|
|
4300
|
+
let condition = conditions[i]
|
|
4301
|
+
if (condition.defaultValue) {
|
|
4302
|
+
let field = condition.colPrefix + condition.na
|
|
4303
|
+
let defaultValue = condition.isScriptDefault
|
|
4304
|
+
? await this.getScriptDefaultValue(condition.defaultValue)
|
|
4305
|
+
: condition.defaultValue
|
|
4306
|
+
if (isSetSearchForm) {
|
|
4307
|
+
this_.$set(this_.searchForm, field, defaultValue)
|
|
4308
|
+
}
|
|
4309
|
+
let value = defaultValue
|
|
4310
|
+
if (condition.ty == 'number') {
|
|
4311
|
+
value = parseFloat(value)
|
|
4312
|
+
}
|
|
4313
|
+
querys.push({
|
|
4314
|
+
property: condition.queryPre ? condition.queryPre + field : field,
|
|
4315
|
+
value: value,
|
|
4316
|
+
group: 'main',
|
|
4317
|
+
operation: condition.qt.toUpperCase(),
|
|
4318
|
+
relation: 'AND',
|
|
4319
|
+
})
|
|
4320
|
+
}
|
|
4321
|
+
}
|
|
4322
|
+
//筛选字段默认值判断
|
|
4323
|
+
|
|
4324
|
+
if (this.parameterqQuerys) {
|
|
4325
|
+
let parameterQuerys = JSON.parse(Base64.decode(this.parameterqQuerys))
|
|
4326
|
+
if (parameterQuerys && parameterQuerys.length > 0) {
|
|
4327
|
+
parameterQuerys.forEach((query) => {
|
|
4328
|
+
let prefix = this.templateInfo.isExternal === 1 ? '' : 'F_'
|
|
4329
|
+
query.property = prefix + query.property
|
|
4330
|
+
if (isSetSearchForm) {
|
|
4331
|
+
this_.$set(this_.searchForm, query.property, query.value)
|
|
4332
|
+
}
|
|
4333
|
+
querys.push(query)
|
|
4334
|
+
})
|
|
4335
|
+
}
|
|
4336
|
+
}
|
|
4337
|
+
let filters = JSON.parse(this_.templateInfo.filteringField)
|
|
4338
|
+
filters.forEach((filter) => {
|
|
4339
|
+
if (filter.defaultValue && filter.defaultValue.length > 0) {
|
|
4340
|
+
this_.filterMap[filter.name] = filter.defaultValue
|
|
4341
|
+
filter.defaultValue.forEach((val) => {
|
|
4342
|
+
querys.push({
|
|
4343
|
+
property: `${filter.queryPre || ''}${filter.colPrefix}${
|
|
4344
|
+
filter.name
|
|
4345
|
+
}`,
|
|
4346
|
+
value: val,
|
|
4347
|
+
group: 'defVal_' + filter.name,
|
|
4348
|
+
operation: 'EQUAL',
|
|
4349
|
+
relation: 'OR',
|
|
4350
|
+
})
|
|
4351
|
+
})
|
|
4352
|
+
}
|
|
4353
|
+
})
|
|
4354
|
+
this_.$on('afterMounted', () => {
|
|
4355
|
+
const tab = document.getElementById(this_.templateInfo.alias)
|
|
4356
|
+
if (tab && tab.__vue__) {
|
|
4357
|
+
let headerColumns = tab.__vue__.$refs.tableHeader
|
|
4358
|
+
? tab.__vue__.$refs.tableHeader.columns
|
|
4359
|
+
: []
|
|
4360
|
+
headerColumns.forEach((column) => {
|
|
4361
|
+
if (this_.filterMap.hasOwnProperty(column.property)) {
|
|
4362
|
+
this_.filterMap[column.property].forEach((val) => {
|
|
4363
|
+
column.filteredValue.push(val)
|
|
4364
|
+
})
|
|
4365
|
+
}
|
|
4366
|
+
})
|
|
4367
|
+
}
|
|
4368
|
+
})
|
|
4369
|
+
this.defaultQuerys = querys
|
|
4370
|
+
return querys
|
|
4371
|
+
},
|
|
4372
|
+
getScriptDefaultValue(scriptValue) {
|
|
4373
|
+
return new Promise((resolve) => {
|
|
4374
|
+
//执行前置脚本内容
|
|
4375
|
+
const _this = this
|
|
4376
|
+
// 用户信息
|
|
4377
|
+
const account = this.$requestConfig.getAccount()
|
|
4378
|
+
const userId = this.$requestConfig.getUserId()
|
|
4379
|
+
const userName = this.$requestConfig.getUsername()
|
|
4380
|
+
const _moment = moment
|
|
4381
|
+
const preScript = `const scriptFunction = function(_this, account, userId, userName, _moment){
|
|
4382
|
+
${scriptValue}
|
|
4383
|
+
};`
|
|
4384
|
+
let result = ''
|
|
4385
|
+
try {
|
|
4386
|
+
result = eval(
|
|
4387
|
+
`${preScript}scriptFunction(_this, account, userId, userName, _moment);`
|
|
4388
|
+
)
|
|
4389
|
+
if (result && result.then && typeof result.then === 'function') {
|
|
4390
|
+
result.then(
|
|
4391
|
+
(t) => {
|
|
4392
|
+
resolve(t)
|
|
4393
|
+
},
|
|
4394
|
+
(fail) => {
|
|
4395
|
+
//接口返回失败则终止按钮操作,并输出错误信息
|
|
4396
|
+
resolve('')
|
|
4397
|
+
}
|
|
4398
|
+
)
|
|
4399
|
+
} else {
|
|
4400
|
+
resolve(result)
|
|
4401
|
+
}
|
|
4402
|
+
} catch (err) {
|
|
4403
|
+
resolve('')
|
|
4404
|
+
this.$message.error(`查询值默认脚本事件执行错误:${err}`)
|
|
4405
|
+
}
|
|
4406
|
+
})
|
|
4407
|
+
},
|
|
3948
4408
|
handleClose() {
|
|
3949
4409
|
this.dataViewDialogVisible = false
|
|
3950
4410
|
},
|
|
@@ -4632,6 +5092,30 @@ export default {
|
|
|
4632
5092
|
)
|
|
4633
5093
|
: customColumns
|
|
4634
5094
|
},
|
|
5095
|
+
countPageTotal() {
|
|
5096
|
+
this.searchCountTotal(this.getParam())
|
|
5097
|
+
},
|
|
5098
|
+
switchPage(type) {
|
|
5099
|
+
if (type == 'prev') this.pagination.page--
|
|
5100
|
+
if (type == 'next') this.pagination.page++
|
|
5101
|
+
this.handleCurrentChange(this.pagination.page)
|
|
5102
|
+
},
|
|
5103
|
+
handleInput(value) {
|
|
5104
|
+
if (!value) {
|
|
5105
|
+
return
|
|
5106
|
+
}
|
|
5107
|
+
// 使用正则表达式匹配正整数
|
|
5108
|
+
const regex = /^[1-9]\d*$/
|
|
5109
|
+
|
|
5110
|
+
// 如果输入的值不符合正整数的模式,则将其重置为1
|
|
5111
|
+
if (!regex.test(value)) {
|
|
5112
|
+
//如果上一次输入的页数有值,则用上一次输入的页数,否则默认为1
|
|
5113
|
+
this.pagination.page = this.lastPage ? this.lastPage : 1
|
|
5114
|
+
} else {
|
|
5115
|
+
//本次分页数,赋值给上一次分页数
|
|
5116
|
+
this.lastPage = this.pagination.page
|
|
5117
|
+
}
|
|
5118
|
+
},
|
|
4635
5119
|
},
|
|
4636
5120
|
// asyncComputed: {
|
|
4637
5121
|
// showDraftList() {
|