vue如何实现即点即改

vue即点即改

视图部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
    <style>
        @import url("//unpkg.com/element-plus/lib/theme-chalk/index.css");
    </style>
</head>
<body>
<script src="//unpkg.com/vue@next"></script>
<script src="//unpkg.com/element-plus/lib/index.full.js"></script>
<div id="app">
    <el-button type="text" @click="dialogFormVisible = true">添加</el-button>

    <el-dialog title="添加" v-model="dialogFormVisible">
        <el-form :model="form">
            <el-form-item label="用户名称" :label-width="formLabelWidth">
                <el-input v-model="form.name" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="手机号码" :label-width="formLabelWidth">
                <el-input v-model="form.tel" autocomplete="off"></el-input>
            </el-form-item>
        </el-form>
        <template #footer>
    <span class="dialog-footer">
      <el-button @click="dialogFormVisible = false">取 消</el-button>
      <el-button type="primary" @click="sub">确 定</el-button>
    </span>
        </template>
    </el-dialog>

    <el-dialog title="修改" v-model="updateFormVisible">
        <el-form :model="form">
            <el-form-item label="用户名称" :label-width="formLabelWidth">
                <el-input v-model="editForm.name" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="手机号码" :label-width="formLabelWidth">
                <el-input v-model="editForm.tel" autocomplete="off"></el-input>
            </el-form-item>
        </el-form>
        <template #footer>
    <span class="dialog-footer">
      <el-button @click="updateFormVisible = false">取 消</el-button>
      <el-button type="primary" @click="updateform">确 定</el-button>
    </span>
        </template>
    </el-dialog>

    <el-table
            :data="tableData"
            style="width: 100%;align-items: center">
        <el-table-column
                prop="id"
                label="ID"
                width="180">
        </el-table-column>
        <el-table-column
                prop="username"
                label="姓名"
                width="180">
            <template #default="scope">
                <div v-show="arr.indexOf(scope.row.id) == -1" @click="arr.push(scope.row.id)"  >
                    {{ scope.row.username }}
                </div>
                <div v-show="arr.indexOf(scope.row.id) != -1">
                    <el-input size="small" v-model="scope.row.username" @blur="updateUsername(scope.row.id,scope.row.username)"
                    ></el-input>
                </div>
            </template>
        </el-table-column>
        <el-table-column
                prop="tel"
                label="手机号码"
                width="180">
        </el-table-column>
        <el-table-column>
                fixed="right"
                label="操作"
                width="100">
            <template #default="scope">
                <el-button @click="del(scope.row.id)" type="text" size="small">删除</el-button>
                <el-button type="text" size="small" @click="edit(scope.row)">修改</el-button>
            </template>
        </el-table-column>
    </el-table>
</div>
</body>
</html>

js部分

<script>
    var Main = {
            data() {
                return {
                    arr:[],
                    updateFormVisible:false,
                    dialogFormVisible: false,
                    editForm:{
                        id:'',
                        name: '',
                        tel: '',
                        pageSize:5
                    },
                    form: {
                        date1: '',
                        date2: '',
                        delivery: false,
                        type: [],
                        resource: '',
                        desc: ''
                    },
                    formLabelWidth: '120px',
                    tableData: []
                }
            },
            // 初始化方法
            mounted(){
                this.table();
            },
            methods: {
                handleEdit(index, row) {
                    console.log(index, row);
                },
                handleDelete(index, row) {
                    console.log(index, row);
                },
                table(){
                    axios
                        .get('indexData')
                        .then(res => (this.tableData = res.data.data))
                        .catch(function (error) { // 请求失败处理
                            console.log(error);
                        });
                },
                sub(){
                    // 关闭表单
                    this.dialogFormVisible = false;
                    // 异步请求
                    axios
                        .post('save',{name:this.form.name,tel:this.form.tel})
                        .then(res => {
                            if (res.data.code == 200){
                                this.table()
                                this.$message({
                                    type: 'success',
                                    message: '添加成功!'
                                });
                            }else {
                                this.$message({
                                    type: 'error',
                                    message: '添加失败!'
                                });
                            }
                        })
                        .catch(function (error) { // 请求失败处理
                            console.log(error);
                        });
                },
                edit(data){
                    this.updateFormVisible = true
                    this.editForm.name = data.username
                    this.editForm.tel = data.tel
                    this.editForm.id = data.id
                },
                updateform() {
                    // 关闭表单
                    this.updateFormVisible = false;
                    // 异步请求
                    axios
                        .post('update',{id:this.editForm.id,username:this.editForm.name,tel:this.editForm.tel})
                        .then(res => {
                            if (res.data.code == 200){
                                this.table()
                                this.$message({
                                    type: 'success',
                                    message: '修改成功!'
                                });
                            }else {
                                this.$message({
                                    type: 'error',
                                    message: '修改失败!'
                                });
                            }
                        })
                        .catch(function (error) { // 请求失败处理
                            console.log(error);
                        });
                },
                del(id){
                    axios
                        .get('delete?id='+id)
                        .then(res => {
                            if (res.data.code == 200){
                                this.table()
                                this.$message({
                                    type: 'success',
                                    message: '删除成功!'
                                });
                            }else {
                                this.$message({
                                    type: 'error',
                                    message: '删除失败!'
                                });
                            }
                        })
                        .catch(function (error) { // 请求失败处理
                            console.log(error);
                        });
                },
                updateUsername(id,username){
                    axios
                        .post('updateUsername',{id:id,username:username})
                        .then(res => {
                            if (res.data.code == 200){
                                this.arr = [];
                            }else {
                                this.$message({
                                    type: 'error',
                                    message: '修改失败!'
                                });
                            }
                        })
                        .catch(function (error) { // 请求失败处理
                            console.log(error);
                        });
                }
            }
        }
    ;const app = Vue.createApp(Main);
    app.use(ElementPlus);
    app.mount("#app")
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值