静态数据编辑器改造完成
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
<script>
|
||||
import Vue from 'vue'
|
||||
import AiDialogBtn from "dui/packages/layout/AiDialogBtn.vue";
|
||||
|
||||
export default {
|
||||
name: "tableEditor",
|
||||
components: {AiDialogBtn},
|
||||
model: {
|
||||
event: "input",
|
||||
prop: "tableData"
|
||||
@@ -14,7 +16,8 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
records: []
|
||||
records: [],
|
||||
form: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -49,12 +52,26 @@ export default {
|
||||
this.$emit("data", this.getFormatData())
|
||||
done()
|
||||
},
|
||||
rowDel(form, index) {
|
||||
this.$confirm("是否要删除该行?").then(() => {
|
||||
this.records.splice(index, 1)
|
||||
this.$emit("data", this.getFormatData())
|
||||
}).catch(() => 0)
|
||||
},
|
||||
getFormatData() {
|
||||
return this.configs.map((c, i) => {
|
||||
const item = {name: c.label}
|
||||
this.records.map((row, j) => item[`v${j || ""}`] = row[`c${i || ""}`])
|
||||
return item
|
||||
})
|
||||
},
|
||||
addColumn() {
|
||||
return this.$refs.addColumn.validate().then(() => {
|
||||
const cols = this.$copy(this.configs)
|
||||
const prop = `c${cols.length}`
|
||||
cols.push({label: this.form.label, prop})
|
||||
return this.$emit("update:configs", cols)
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -70,12 +87,22 @@ export default {
|
||||
|
||||
<template>
|
||||
<section class="tableEditor">
|
||||
<avue-crud :option="option" :data="records" @row-save="rowSave" @row-cancel="rowSave">
|
||||
<avue-crud :option="option" :data="records" @row-save="rowSave" @row-cancel="rowSave" @row-del="rowDel">
|
||||
<template v-if="label" v-slot:menuLeft>
|
||||
<div class="label" v-text="label"/>
|
||||
</template>
|
||||
<template v-slot:menuRight>
|
||||
<div class="el-icon-plus pointer" @click="records.push({$cellEdit: true})">增加数据</div>
|
||||
<div class="flex">
|
||||
<ai-dialog-btn dialogTitle="增加列" appendToBody :submit="addColumn" @closed="form={}" width="400px">
|
||||
<div slot="btn" class="el-icon-plus pointer">增加列</div>
|
||||
<el-form ref="addColumn" :model="form" size="small" labelWidth="60px">
|
||||
<el-form-item label="列名" :rule="{required:true, message:'请输入列名'}">
|
||||
<el-input v-model="form.label" clearable placeholder="请输入列名"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ai-dialog-btn>
|
||||
<div class="el-icon-plus pointer mar-l8" @click="records.push({$cellEdit: true})">增加数据</div>
|
||||
</div>
|
||||
</template>
|
||||
</avue-crud>
|
||||
</section>
|
||||
@@ -99,7 +126,7 @@ export default {
|
||||
|
||||
.el-table__cell {
|
||||
color: white;
|
||||
background-color: transparent;
|
||||
background-color: #1D2127;
|
||||
|
||||
input:disabled {
|
||||
background-color: transparent;
|
||||
@@ -107,6 +134,10 @@ export default {
|
||||
color: white;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
@@ -119,6 +150,7 @@ export default {
|
||||
.el-icon-plus {
|
||||
font-size: 12px;
|
||||
color: $primaryColor;
|
||||
line-height: 18px;
|
||||
|
||||
&:before {
|
||||
margin-right: 4px;
|
||||
|
||||
Reference in New Issue
Block a user