参数tag删除 用到动态添加tag(点击按钮变成输入框)
This commit is contained in:
parent
9c7c7b688a
commit
23ea410a90
@ -40,6 +40,22 @@
|
|||||||
<el-table-column
|
<el-table-column
|
||||||
type="expand"
|
type="expand"
|
||||||
>
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.attr_vals" >
|
||||||
|
<el-tag closable :key="i" v-for="(tag,i) in scope.row.attr_vals.split(' ')" @close="delTag(tag,scope.row)">{{tag}}</el-tag>
|
||||||
|
</span>
|
||||||
|
<el-input
|
||||||
|
class="input-new-tag"
|
||||||
|
v-if="scope.row.inputVisible"
|
||||||
|
v-model="scope.row.inputValue"
|
||||||
|
ref="saveTagInput"
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleInputConfirm(scope.row)"
|
||||||
|
@blur="handleInputConfirm(scope.row)"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
<el-button v-else class="button-new-tag" size="small" @click="showInput(scope.row)">+ New Tag</el-button>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="#"
|
label="#"
|
||||||
@ -69,6 +85,11 @@
|
|||||||
<el-table-column
|
<el-table-column
|
||||||
type="expand"
|
type="expand"
|
||||||
>
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.attr_vals" >
|
||||||
|
<el-tag closable :key="i" v-for="(tag,i) in scope.row.attr_vals.split(' ')">{{tag}}</el-tag>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="#"
|
label="#"
|
||||||
@ -142,6 +163,42 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
|
delTag (tag, row) {
|
||||||
|
const tmp = row.attr_vals.split(' ')
|
||||||
|
tmp.splice(tmp.indexOf(tag), 1)
|
||||||
|
row.attr_vals = tmp.join(' ')
|
||||||
|
this.save(row)
|
||||||
|
},
|
||||||
|
showInput (row) {
|
||||||
|
row.inputVisible = true
|
||||||
|
// 当页面被重新渲染之后执行的回调函数
|
||||||
|
this.$nextTick(_ => {
|
||||||
|
this.$refs.saveTagInput.$refs.input.focus()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
async save (row) {
|
||||||
|
const { data: res } = await this.$http.put(`categories/${this.cateId}/attributes/${row.attr_id}`, {
|
||||||
|
attr_name: row.attr_name,
|
||||||
|
attr_sel: row.attr_sel,
|
||||||
|
attr_vals: row.attr_vals
|
||||||
|
})
|
||||||
|
if (res.meta.status !== 200) {
|
||||||
|
return this.$message.error(res.meta.msg)
|
||||||
|
}
|
||||||
|
this.$message.success(res.meta.msg)
|
||||||
|
},
|
||||||
|
|
||||||
|
async handleInputConfirm (row) {
|
||||||
|
const inputValue = row.inputValue.trim()
|
||||||
|
if (inputValue.length > 0) {
|
||||||
|
row.attr_vals += (row.attr_vals.length > 0 ? ' ' : '') + inputValue
|
||||||
|
await this.save(row)
|
||||||
|
}
|
||||||
|
row.inputVisible = false
|
||||||
|
row.inputValue = ''
|
||||||
|
},
|
||||||
sub () {
|
sub () {
|
||||||
this.$refs.form.validate(valid => {
|
this.$refs.form.validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
@ -197,6 +254,10 @@ export default {
|
|||||||
if (res.meta.status !== 200) {
|
if (res.meta.status !== 200) {
|
||||||
return this.$message.error(res.meta.msg)
|
return this.$message.error(res.meta.msg)
|
||||||
}
|
}
|
||||||
|
res.data.forEach((item, i) => {
|
||||||
|
res.data[i].inputVisible = false
|
||||||
|
res.data[i].inputValue = ''
|
||||||
|
})
|
||||||
this[this.tab] = res.data
|
this[this.tab] = res.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -232,4 +293,7 @@ export default {
|
|||||||
.el-alert{
|
.el-alert{
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
.el-tag {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
Reference in New Issue
Block a user