UNPKG

w-vue-middle

Version:

统一公共服务组件

209 lines (205 loc) 6.14 kB
/* * @Author: Jason Liu * @Date: 2023-01-10 10:20:24 * @Desc: */ export default { name: "fieldSettings", props: { value: { type: Array, default: () => { return []; }, }, loading: { type: Boolean, default: false, }, type: { type: Number, default: 0, }, dimensionList: { //维度列表 type: Array, default: () => { return []; }, }, talbeKey: { type: Number, default: 0, }, }, data() { return { tables: this.value, dataList: [], dataKey: this.talbeKey, choiceDimensionList: [] }; }, created() { this.parseDimension(); this.parseTable(); }, methods: { /** * @Author: Jason Liu * @description: 获取表组信息行效果 */ getTablesRow({ row }) { if (row.isTable) { if (row.type == "2") { return "compound_column"; } else { return "table_column"; } } else { if (!row.visible) { return "column_hide"; } else { return ""; } } }, /** * @Author: Jason Liu * @description: 合并单元格 */ rowspanMethod({ row, _rowIndex, column, visibleData }) { if (column.type == "seq" || column.field == "option") { return { rowspan: 1, colspan: 1 }; } else if (row.isTable) { if (column.field == "code") { return { rowspan: 1, colspan: 14 }; } else { return { rowspan: 0, colspan: 0 }; } } else { return { rowspan: 1, colspan: 1 }; } }, /** * @Author: Jason Liu * @description: 显示复合字段 */ viewCompoundField(row = undefined) { this.$emit("compound", row); }, /** * @Author: Jason Liu * @description: 删除表格column信息 */ deleteTableColumns(row) { let index = this.dataList.findIndex(col => { return col.id == row.id }); if (index > -1) { this.dataList.splice(index, 1); } this.$emit("delete", row); }, /** * @Author: Jason Liu * @description: 查询表内容信息 */ search(val) { const xTable = this.$refs.table; const column = xTable.getColumnByField("code"); // 修改第二个选项为勾选状态 const option = column.filters[0]; option.data = val; option.checked = !!val; // 修改条件之后,需要手动调用 updateData 处理表格数据 xTable.updateData(); }, /** * @Author: Jason Liu * @description: 搜索表格列信息 */ filterName({ option, row }) { let val = option.data.toLocaleLowerCase(); let name = row.name || ""; let code = row.code || ""; if (name) { name = row.name.toLocaleLowerCase(); } if (code) { code = row.code.toLocaleLowerCase(); } return (name.indexOf(val) > -1) || (code.indexOf(val) > -1) }, /** * @Author: Jason Liu * @description: 标准化表格 */ parseTable() { this.dataList = []; this.tables.forEach((table) => { table.columns.forEach((column) => { if (!column.parentId) { column.parentId = table.tableId; } column.visible = !!column.visible; this.dataList.push(column); }); this.dataList.push({ ...table, isTable: true, }); }); this.dataKey++; }, /** * @Author: Jason Liu * @description: 标准化维度 */ parseDimension() { this.choiceDimensionList = this.dimensionList.map(item => { let column = item.modelTable.columns[0]; return { key: item.id, name: `${item.name}`, options: [{ value: `${item.id}.${item.modelTable.id}.${column.code}`, label: `${column.name}`, }] } }) }, /** * @Author: Jason Liu * @description: 设置维度key内容 */ setDimensionKey(row) { this.dimensionList.forEach(item => { let column = item.modelTable.columns[0]; if (`${item.id}.${item.modelTable.id}.${column.code}` == row.dimkey) { row.dimName = `${item.name}.${column.name}`; } }) }, /** * @Author: Jason Liu * @description: 字段追加脚本 */ viewScript(row) { this.$emit("changeScript", row) } }, watch: { value(val) { this.tables = this.value; this.parseTable(); this.parseDimension(); }, tables(val) { this.$emit("input", val); }, dimensionList() { this.parseDimension(); }, talbeKey() { this.parseTable(); } }, };