three-trees-ui 1.0.77 → 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.
@@ -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.buildDefaultQuerys()
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
- this.QRCodeDesc.push(item.desc + ':' + this.rows[index][item.name])
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.isInit = false
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.forEach((item) => {
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: item.defaultValue,
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
- .getDataTemplateDataList(dataTemplateQueryVo)
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
- this.$set(this.pagination, 'total', response.total)
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 = this.getParentId(displayFields, fieldName, 'name')
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
- ({ data, headers }) => {
2481
- const fileName = decodeURIComponent(
2482
- headers['content-disposition'].split(';')[1].split('filename=')[1]
2483
- )
2484
- const blob = new Blob([data])
2485
- saveAs(blob, fileName)
2486
- loadingInstance.close() // 结束
2487
- },
2488
- (e) => {
2489
- loadingInstance.close() // 结束
2490
- let enc = new TextDecoder('utf-8')
2491
- let uint8_msg = JSON.parse(
2492
- enc.decode(new Uint8Array(e.response.data))
2493
- )
2494
- this.$message.error(uint8_msg.message)
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_.tableName}.${item.key_.oldTableField}`,
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: this.buildDefaultQuerys() || [],
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() {