"tableForm": {
"head": {
"th": [
"опции",
"текст1",
"текст2",
"текст3"
]
},
"body": {
"tr": [
{
"td": [
{
"id": 0,
"label": "Какой-то текст",
"tooltip": "Тут должно быть описание",
"name": "text1",
"type": "select",
"select": {
"value": "",
"fields": [
{
"id": 0,
"label": "Нет",
"value": "Нет"
},
{
"id": 1,
"label": "Да",
"value": "Да"
}
]
}
},
{
"check": true
},
{
"check": true
},
{
"check": false
}
]
},
{
"td": [
{
"id": 0,
"label": "Какой-то текст",
"name": "text1",
"type": "select",
"tooltip": "Тут должно быть описание 2",
"select": {
"value": "",
"fields": [
{
"id": 0,
"label": "Нет",
"value": "Нет"
},
{
"id": 1,
"label": "Да",
"value": "Да"
}
]
}
},
{
"check": false
},
{
"check": true
},
{
"check": true
}
]
},
{
"td": [
{
"id": 0,
"label": "Какой-то текст",
"tooltip": "Тут должно быть описание 3",
"name": "text1",
"type": "select",
"select": {
"value": "",
"fields": [
{
"id": 0,
"label": "Нет",
"value": "Нет"
},
{
"id": 1,
"label": "Да",
"value": "Да"
}
]
}
},
{
"check": true
},
{
"check": false
},
{
"check": true
}
]
}
]
}
}
<template>
<div>
<table>
<thead>
<tr>
<th v-for="(item, index) in options.head.th" :key="index">
{{ item }}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in options.body.tr" :key="index">
<td v-for="(item2, index) in item.td" :key="index">
<el-tooltip class="item" effect="dark" :content="item2.tooltip" placement="right-start">
<span>{{ item2.label }}</span><br/>
</el-tooltip>
<span class="el-icon-check" v-if="item2.check"></span>
<el-select v-if="item2.type == 'select'" v-model="item2.select.value" placeholder="Выберите значение" @change="update">
<el-option
v-for="item in item2.select.fields"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</td>
</tr>
</tbody>
</table>
</div>
</template>
Do not mutate vuex store state outside mutation
<el-select :value="item2.select.value" @input="onInput(item2.name, $event)">
methods: {
onInput(propName, propVal) {
this.$store.commit('updateForm', { propName, propVal });
},
},