@leevan/jtui 2.0.54-beta.5 → 2.0.54-beta.7
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/jtui.common.js +209 -45
- package/lib/jtui.umd.js +209 -45
- package/lib/jtui.umd.min.js +3 -3
- package/package.json +1 -1
- package/packages/jt-table/components/edit-components/EditInput.vue +1 -4
- package/packages/jt-table/components/tableColumn.vue +8 -8
- package/packages/jt-table/index.vue +48 -0
package/package.json
CHANGED
|
@@ -132,10 +132,6 @@ export default {
|
|
|
132
132
|
watch: {
|
|
133
133
|
value(newVal) {
|
|
134
134
|
this.currentValue = newVal;
|
|
135
|
-
},
|
|
136
|
-
// 监听 currentValue 变化,实时同步给父组件
|
|
137
|
-
currentValue(newVal) {
|
|
138
|
-
this.$emit('input', newVal);
|
|
139
135
|
}
|
|
140
136
|
},
|
|
141
137
|
mounted() {
|
|
@@ -156,6 +152,7 @@ export default {
|
|
|
156
152
|
this.doComplete();
|
|
157
153
|
},
|
|
158
154
|
doComplete() {
|
|
155
|
+
this.$emit('input', this.currentValue);
|
|
159
156
|
this.closeEdit();
|
|
160
157
|
},
|
|
161
158
|
closeEdit() {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
</div>
|
|
60
60
|
<EditInput
|
|
61
61
|
v-else-if="item && item.edit && item.edit.name == '$input'"
|
|
62
|
-
|
|
62
|
+
v-model="row[subSubItem.prop]"
|
|
63
63
|
:type="(item.edit.props && item.edit.props.type) || 'text'"
|
|
64
64
|
@input="(val) => handleInputChange(val, row, subSubItem.prop)"
|
|
65
65
|
/>
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
</div>
|
|
112
112
|
<EditInput
|
|
113
113
|
v-else-if="item && item.edit && item.edit.name == '$input'"
|
|
114
|
-
|
|
114
|
+
v-model="row[subItem.prop]"
|
|
115
115
|
:type="(item.edit.props && item.edit.props.type) || 'text'"
|
|
116
116
|
@input="(val) => handleInputChange(val, row, subItem.prop)"
|
|
117
117
|
/>
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
</div>
|
|
165
165
|
<EditInput
|
|
166
166
|
v-else-if="item && item.edit && item.edit.name == '$input'"
|
|
167
|
-
|
|
167
|
+
v-model="row[item.prop]"
|
|
168
168
|
:type="(item.edit.props && item.edit.props.type) || 'text'"
|
|
169
169
|
@input="(val) => handleInputChange(val, row, item.prop)"
|
|
170
170
|
/>
|
|
@@ -181,7 +181,7 @@ export default {
|
|
|
181
181
|
components: {
|
|
182
182
|
EditInput
|
|
183
183
|
},
|
|
184
|
-
|
|
184
|
+
|
|
185
185
|
data() {
|
|
186
186
|
return {
|
|
187
187
|
isOpen: false,
|
|
@@ -226,7 +226,7 @@ export default {
|
|
|
226
226
|
default: 0
|
|
227
227
|
}
|
|
228
228
|
},
|
|
229
|
-
|
|
229
|
+
|
|
230
230
|
methods: {
|
|
231
231
|
findVxeTable() {
|
|
232
232
|
// 向上查找vxe-table实例
|
|
@@ -262,8 +262,8 @@ export default {
|
|
|
262
262
|
return findItem ? findItem.label : (value || '请选择');
|
|
263
263
|
},
|
|
264
264
|
handleInputChange(val, row, prop) {
|
|
265
|
-
//
|
|
266
|
-
|
|
265
|
+
// 这个方法现在主要是为了保持接口兼容性
|
|
266
|
+
// 实际的值更新由 v-model 处理
|
|
267
267
|
},
|
|
268
268
|
toggleDropdown() {
|
|
269
269
|
this.isOpen = !this.isOpen;
|
|
@@ -414,4 +414,4 @@ export default {
|
|
|
414
414
|
width: 100%;
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
-
</style>
|
|
417
|
+
</style>
|
|
@@ -975,6 +975,7 @@ export default {
|
|
|
975
975
|
setTimeout(() => {
|
|
976
976
|
const temp = this.$refs[this.id].getTableData()
|
|
977
977
|
if(temp.fullData.length > 0){
|
|
978
|
+
this.initRowFields(temp.fullData);
|
|
978
979
|
this.isShowEmpty = false
|
|
979
980
|
}else{
|
|
980
981
|
if(n){
|
|
@@ -1651,6 +1652,53 @@ export default {
|
|
|
1651
1652
|
syncData() {
|
|
1652
1653
|
this.$refs[this.id].syncData();
|
|
1653
1654
|
},
|
|
1655
|
+
// 收集所有表头字段(包括嵌套表头)
|
|
1656
|
+
getAllHeaderFields(headers) {
|
|
1657
|
+
const fields = [];
|
|
1658
|
+
const collect = (items) => {
|
|
1659
|
+
items.forEach(item => {
|
|
1660
|
+
if (item.children && item.children.length) {
|
|
1661
|
+
collect(item.children);
|
|
1662
|
+
} else if (item.prop) {
|
|
1663
|
+
fields.push(item.prop);
|
|
1664
|
+
}
|
|
1665
|
+
});
|
|
1666
|
+
};
|
|
1667
|
+
collect(headers);
|
|
1668
|
+
return fields;
|
|
1669
|
+
},
|
|
1670
|
+
// 初始化所有行的字段,确保每个行对象都有所有表头字段
|
|
1671
|
+
initRowFields(dataArray) {
|
|
1672
|
+
console.log('=== initRowFields 开始执行 ===');
|
|
1673
|
+
const rows = dataArray || this.data?.DataArray;
|
|
1674
|
+
console.log('传入的 dataArray:', dataArray);
|
|
1675
|
+
console.log('使用的 rows:', rows);
|
|
1676
|
+
if (!rows || !rows.length || !this.data?.retjson?.header) {
|
|
1677
|
+
console.log('数据不完整,跳过初始化');
|
|
1678
|
+
return;
|
|
1679
|
+
}
|
|
1680
|
+
const fields = this.getAllHeaderFields(this.data.retjson.header);
|
|
1681
|
+
console.log('收集到的表头字段:', fields);
|
|
1682
|
+
console.log('初始化前的第一行数据:', rows[0]);
|
|
1683
|
+
// 递归处理行(包括树形结构的子节点)
|
|
1684
|
+
const processRow = (row, rowIndex) => {
|
|
1685
|
+
console.log(`处理第 ${rowIndex} 行,处理前:`, { ...row });
|
|
1686
|
+
fields.forEach(field => {
|
|
1687
|
+
if (!(field in row)) {
|
|
1688
|
+
console.log(` 字段 ${field} 不存在,用 $set 添加`);
|
|
1689
|
+
this.$set(row, field, '');
|
|
1690
|
+
}
|
|
1691
|
+
});
|
|
1692
|
+
console.log(` 处理后:`, { ...row });
|
|
1693
|
+
// 处理子节点
|
|
1694
|
+
if (row.children && row.children.length) {
|
|
1695
|
+
row.children.forEach((child, idx) => processRow(child, `${rowIndex}-${idx}`));
|
|
1696
|
+
}
|
|
1697
|
+
};
|
|
1698
|
+
rows.forEach((row, idx) => processRow(row, idx));
|
|
1699
|
+
console.log('初始化后的第一行数据:', rows[0]);
|
|
1700
|
+
console.log('=== initRowFields 执行完成 ===');
|
|
1701
|
+
},
|
|
1654
1702
|
},
|
|
1655
1703
|
};
|
|
1656
1704
|
</script>
|