@leevan/jtui 2.0.3 → 2.0.7-npm

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.
@@ -7,6 +7,7 @@
7
7
  <vxe-toolbar class="jt-toolbar" :custom="{icon:'jtIcon iconpeizhi41 colStyle'}"></vxe-toolbar>
8
8
  </div>
9
9
  <vxe-table
10
+ :header-cell-class-name="headerClass"
10
11
  size="mini"
11
12
  class="jt-table-class-only"
12
13
  v-if="tableType === 'default'"
@@ -78,26 +79,16 @@
78
79
  fixed="left"
79
80
  ></vxe-table-column>
80
81
  <!-- 后台数据列 -->
81
- <template v-for="(item,index) in data.retjson.header">
82
- <vxe-table-column
83
- :edit-render="item.edit"
84
- :key="index"
85
- show-overflow
86
- :field="item.prop"
87
- :align="item.align"
88
- :title="item.label"
89
- :type="item.html ? 'html': ''"
90
- :min-width="item.width"
91
- :sortable="item.isSort"
92
- :visible="item.width!=0"
93
- :fixed="item.isFixed"
94
- :filters="filterData(item.filterRender)"
95
- :filter-render="{name: item.filterRender}"
96
- :formatter="formatEnum"
97
- :cell-render="cellRenderData(item.cellRender)"
98
- >
99
- </vxe-table-column>
100
- </template>
82
+ <template v-for="(item,index) in data.retjson.header">
83
+ <table-column
84
+ :item="item"
85
+ :key="index"
86
+ :index="index"
87
+ :cellRenderData="cellRenderData"
88
+ :filterData="filterData"
89
+ :formatEnum="formatEnum"
90
+ ></table-column>
91
+ </template>
101
92
  <!-- 展开行 -->
102
93
  <vxe-table-column
103
94
  v-if="expandConfig.isOpen"
@@ -170,6 +161,7 @@
170
161
  </vxe-table>
171
162
  <!-- 大数据 -->
172
163
  <vxe-table
164
+ :header-cell-class-name="headerClass"
173
165
  size="mini"
174
166
  class="jt-table-class-only"
175
167
  v-if="tableType === 'bigData'"
@@ -191,6 +183,7 @@
191
183
  }"
192
184
  highlight-current-row
193
185
  highlight-current-column
186
+
194
187
  :radio-config="{checkRowKey: null}"
195
188
  :keyboard-config="{isArrow: true}"
196
189
  export-config
@@ -236,24 +229,15 @@
236
229
  fixed="left"
237
230
  ></vxe-table-column>
238
231
  <!-- 后台数据列 -->
239
- <template v-for="(item,index) in data.retjson.header">
240
- <vxe-table-column
241
- :edit-render="item.edit"
242
- :key="index"
243
- show-overflow
244
- :type="item.html ? 'html': ''"
245
- :field="item.prop"
246
- :align="item.align"
247
- :title="item.label"
248
- :min-width="item.width"
249
- :sortable="item.isSort"
250
- :visible="item.width!=0"
251
- :fixed="item.isFixed"
252
- :filters="filterData(item.filterRender)"
253
- :filter-render="{name: item.filterRender}"
254
- :formatter="formatEnum"
255
- >
256
- </vxe-table-column>
232
+ <template v-for="(item, index) in data.retjson.header">
233
+ <table-column
234
+ :item="item"
235
+ :key="index"
236
+ :index="index"
237
+ :cellRenderData="cellRenderData"
238
+ :filterData="filterData"
239
+ :formatEnum="formatEnum"
240
+ ></table-column>
257
241
  </template>
258
242
  <!-- 操作列 -->
259
243
  <vxe-table-column title="操作"
@@ -642,10 +626,14 @@
642
626
 
643
627
  <script>
644
628
  import XEUtils from 'xe-utils';
629
+ import tableColumn from './components/tableColumn.vue'
645
630
  import axios from 'axios';
646
631
  import { importData } from './importData';
647
632
  export default {
648
633
  name: 'jt-table-pc',
634
+ components: {
635
+ tableColumn
636
+ },
649
637
  created () {
650
638
  if(this.isPage){
651
639
  this.tDataCopy = JSON.parse(JSON.stringify(this.data.DataArray));
@@ -835,7 +823,8 @@ export default {
835
823
  },
836
824
  data(){
837
825
  return {
838
- tableData:this.data.DataArray, //表格数据
826
+ tableData: this.data.DataArray, //表格数据
827
+ headerClass: (this.data.retjson.header || []).find(i => (i.children || []).length) ? 'has-sub-header' : 'normal-header',
839
828
  colNum:0,//当前列的数量
840
829
  leftCol:0,//从左起计算合并列的基数
841
830
  //分组表格的配置
@@ -1440,4 +1429,7 @@ export default {
1440
1429
  .isWrap .vxe-header--row .vxe-cell{
1441
1430
  flex-wrap: wrap;
1442
1431
  }
1432
+ .vxe-table--header .vxe-header--row {
1433
+ background: #fff;
1434
+ }
1443
1435
  </style>
@@ -0,0 +1,118 @@
1
+ <!-- 后台数据列 -->
2
+ <template>
3
+ <!-- <template v-for="(item,index) in data.retjson.header"> -->
4
+ <vxe-colgroup
5
+ v-if="item.children && item.children.length"
6
+ :title="item.label"
7
+ :key="index"
8
+ >
9
+ <template v-for="(subItem, subIndex) in item.children">
10
+ <vxe-colgroup
11
+ v-if="subItem.children && subItem.children.length"
12
+ :title="subItem.label"
13
+ :key="subIndex"
14
+ >
15
+ <vxe-table-column
16
+ v-for="(subSubItem, subSubIndex) in subItem.children"
17
+ :edit-render="subSubItem.edit"
18
+ :key="subSubIndex"
19
+ show-overflow
20
+ :field="subSubItem.prop"
21
+ :align="subSubItem.align"
22
+ :title="subSubItem.label"
23
+ :type="subSubItem.html ? 'html': ''"
24
+ :min-width="subSubItem.width"
25
+ :sortable="subSubItem.isSort"
26
+ :visible="subSubItem.width!=0"
27
+ :fixed="subSubItem.isFixed"
28
+ :filters="filterData(subSubItem.filterRender)"
29
+ :filter-render="{name: subSubItem.filterRender}"
30
+ :formatter="formatEnum"
31
+ :cell-render="cellRenderData(subSubItem.cellRender)"
32
+ >
33
+ </vxe-table-column>
34
+ </vxe-colgroup>
35
+ <vxe-table-column
36
+ v-else
37
+ :edit-render="subItem.edit"
38
+ :key="subIndex"
39
+ show-overflow
40
+ :field="subItem.prop"
41
+ :align="subItem.align"
42
+ :title="subItem.label"
43
+ :type="subItem.html ? 'html': ''"
44
+ :min-width="subItem.width"
45
+ :sortable="subItem.isSort"
46
+ :visible="subItem.width!=0"
47
+ :fixed="subItem.isFixed"
48
+ :filters="filterData(subItem.filterRender)"
49
+ :filter-render="{name: subItem.filterRender}"
50
+ :formatter="formatEnum"
51
+ :cell-render="cellRenderData(subItem.cellRender)"
52
+ >
53
+ </vxe-table-column>
54
+ </template>
55
+ </vxe-colgroup>
56
+ <vxe-table-column
57
+ v-else
58
+ :edit-render="item.edit"
59
+ :key="index"
60
+ show-overflow
61
+ :field="item.prop"
62
+ :align="item.align"
63
+ :title="item.label"
64
+ :type="item.html ? 'html': ''"
65
+ :min-width="item.width"
66
+ :sortable="item.isSort"
67
+ :visible="item.width!=0"
68
+ :fixed="item.isFixed"
69
+ :filters="filterData(item.filterRender)"
70
+ :filter-render="{name: item.filterRender}"
71
+ :formatter="formatEnum"
72
+ :cell-render="cellRenderData(item.cellRender)"
73
+ >
74
+ </vxe-table-column>
75
+ </template>
76
+
77
+
78
+ <script>
79
+ export default {
80
+ name: "tableColumn",
81
+ data() {
82
+ return {
83
+
84
+ };
85
+ },
86
+ props: {
87
+ item: Object,
88
+ filterData: {
89
+ type: Function,
90
+ default: () => {
91
+ return {};
92
+ },
93
+ },
94
+ cellRenderData: {
95
+ type: Function,
96
+ default: () => {
97
+ return {};
98
+ },
99
+ },
100
+ formatEnum: {
101
+ type: Function,
102
+ default: () => {
103
+ return {};
104
+ },
105
+ },
106
+ index: {
107
+ type: Number,
108
+ default: 0
109
+ }
110
+ },
111
+
112
+ methods: {
113
+ },
114
+ };
115
+ </script>
116
+
117
+ <style lang="scss" scoped>
118
+ </style>