zoukankan      html  css  js  c++  java
  • vue规格新增一对多的例子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>规格测试</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <!-- 引入样式 -->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <!-- 引入组件库 -->
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
        <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
        <div id="app">
            <ul>
                <li  v-for="(list,index) in list_init" :key="index">
                    <a class="btn_a" style="border: 0">{{list.name}}</a>
                    <a class="btn_a" @click="btn_a(list1, list.name)" v-for="(list1,index1) in list.content" :key="index1" style="border: 1px solid rgb(204, 204, 204)">
                        {{list1}}
                    </a>
                    <el-button type="primary" plain @click="addnew_content(list.content)">新增规格</el-button>
                </li>
                <li>
                    <el-button type="primary" plain @click="addnew_name">新增名称</el-button>
                </li>
            </ul>
            <table style="margin-top: 50px;">
                <tr>
                    <td>序号</td>
                    <td>规格</td>
                    <td>价格</td>
                    <td>操作</td>
                </tr>
                <tr v-for="(list,index) in guige_see" :key="index" v-if="list.guige">
                     <td>
                         {{index + 1}}
                    </td>
                    <td>
                        {{list.guige}}
                    </td>
                    <td>
                        <el-input v-model="list.price" placeholder="请输入内容"></el-input>
                    </td>
                    <td>
                        <el-button @click="del_one(index)" type="danger" icon="el-icon-delete" circle></el-button>
                    </td>
                </tr>
            </table>
            <el-dialog
                :title="title"
                :visible.sync="dialogVisible"
                width="30%">
                <span v-if="guige_add_state">新增规格</span>
                <span v-else>新增名称</span>
                <h1></h1>
                <el-input v-model="input" placeholder="请输入内容"></el-input>
                <span slot="footer" class="dialog-footer">
                    <el-button @click="dialogVisible = false">取 消</el-button>
                    <el-button v-if="guige_add_state" type="primary" @click="add_content">新增内容</el-button>
                    <el-button v-else type="primary" @click="add_name">新增名称</el-button>
                </span>
            </el-dialog>
        </div>
        <script>
            var app = new Vue({
                el: '#app',
                data () {
                    return {
                        list_init: [],
                        dialogVisible: false, // 弹框控制
                        guige_add_state: true, // 控制新增的名称或是规格
                        title: '', // 控制弹框标题
                        content: [], // 暂存规格内容
                        input: '', // 弹框的输入内容
                        guige_josn: [],
                        arr_cun: [],
                        guige_see: []
                    }
                },
                methods: {
                    btn_a (list1, name) {
                        var this_1 = this
                        var obj = event.target 
                        var color = obj.style.borderColor
                        console.log(list1)
                        console.log(name)
                        if(color == 'rgb(204, 204, 204)'){
                            obj.style.border = '1px solid red'
                            if(this_1.guige_josn.length == 0){
                                console.log('没有数据')
                                this_1.guige_josn.push({
                                    name: name,
                                    content: [list1]
                                })
                            }else{
                                 // 假如已经添加过了
                                var addstate = false
                                for(var i in this_1.guige_josn){
                                    if(this_1.guige_josn[i].name == name){
                                        console.log('已经添加过name')
                                        var index = this_1.guige_josn[i].content.indexOf(list1)
                                        if(index == -1){
                                            this_1.guige_josn[i].content.push(list1)
                                        }
                                        
                                        addstate = true
                                    }
                                }
                                // 如果没添加过的
                                if(addstate == false){
                                    console.log('没有添加过name')
                                    this_1.guige_josn.push({
                                        name: name,
                                        content: [list1]
                                    })
                                }
                            }
                           
                            console.log(this_1.guige_josn)
                        }
                        else{
                            color = 'rgb(204, 204, 204)'
                            obj.style.border = '1px solid rgb(204, 204, 204)'
                            for(var i in this_1.guige_josn){
                                if(this_1.guige_josn[i].name == name){
                                    var index = this_1.guige_josn[i].content.indexOf(list1)
                                    this_1.guige_josn[i].content.splice(index, 1)
                                    if(this_1.guige_josn[i].content.length == 0){
                                        delete this_1.guige_josn[i]
                                    }
                                }
                            }
    
                        }
                       this_1.computed_guige()
                    },
                    computed_guige () {
                        var this_1 = this
                        this_1.arr_cun = []
                        this_1.guige_see = []
                        for(var i in  this_1.guige_josn){
                            this_1.arr_cun.push(this_1.guige_josn[i].content)
                        }
                        console.log('arr_cun')
                        console.log(this_1.arr_cun)
                        // 计算n个数组,每组取出一个,生成所以的序列
                        var arr = this_1.arr_cun
                        var sarr = [[]];
                        for (var i = 0; i < arr.length; i++) {
                            var tarr = [];
                            for (var j = 0; j < sarr.length; j++)
                                for (var k = 0; k < arr[i].length; k++)
                                    tarr.push(sarr[j].concat(arr[i][k]));
                                    sarr = tarr;
                        }
                        for(var i=0;i<sarr.length;i++){
                            sarr[i] = sarr[i].join(',')
                        }
                        for(var i in sarr){
                            this_1.guige_see.push({
                                guige: sarr[i],
                                price: ''
                            })
                        }
                        // this_1.guige_see = sarr
                        console.log(this_1.guige_see)
                    },
                    // 删除一个规格
                    del_one (index) {
                        var this_1 = this
                        console.log(index)
                        this_1.guige_see.splice(index, 1)
                    },
                    get_spec () {
                        var this_1 = this
                        $.ajax({
                            type: 'post',
                            data: '',
                            url: 'http://test.interface.carmanclub.com.cn/cym_back/backStage/goods/spec/findSpec',
                            success: function(json){
                                console.log(json)
                                this_1.list_init = json.data.list
                                for(var i in this_1.list_init){
                                    this_1.list_init[i].content = this_1.list_init[i].content.split(',')
                                }
                            }
                        })
                    },
                    addnew_content (content) {
                        var this_1 = this
                        this_1.dialogVisible = true
                        this_1.guige_add_state = true
                        this_1.title = '新增规格'
                        this_1.input = ''
                        console.log(content)
                        this_1.content = content
                    },
                    add_content(){
                        var this_1 = this
                        if(this_1.input) this_1.content.push(this_1.input)
                        this_1.dialogVisible = false
                    },
                    addnew_name () {
                        var this_1 = this
                        this_1.input = ''
                        this_1.dialogVisible = true
                        this_1.guige_add_state = false
                        this_1.title = '新增名称'
                    },
                    add_name () {
                        var this_1 = this
                        if(this_1.input){
                            this_1.list_init.push({
                                name: this_1.input,
                                content: []
                            })
                        }
                        this_1.dialogVisible = false
                    }
                },
                mounted () {
                    var this_1 = this
                    this_1.get_spec()
                    var obj = [
                        {
                            name: '尺码',
                            content: ['X', 'L', 'M']
                        },
                        {
                            name: '颜色',
                            content: ['黑', '白']
                        },
                        {
                            name: '形状',
                            content: ['方', '圆', '正']
                        }
                    ]
                    for(var i in obj){
                        
                    }
                }
            })
        </script>
    <style>
        ul,li{
            list-style: none;
            padding: 0;
            margin: 0;
        }
        .btn_a{
            display: inline-block;
            padding:10px;
            margin: 10px;
        }
        .red{
            border: 1px solid red;
        }
        td{
            padding: 50px;
        }
    </style>
    </body>
    </html>
    

      

  • 相关阅读:
    python爬虫scrapy之登录知乎
    python爬虫scrapy之downloader_middleware设置proxy代理
    python爬虫scrapy之如何同时执行多个scrapy爬行任务
    python爬虫之scrapy的pipeline的使用
    TotoiseSVN使用教程
    Office办公软件各版本下载(一键安装)
    如何彻底卸载系统自带的IE浏览器
    Sublime Text 3使用方法
    计算机常用键盘快捷键
    WordPress TinyMCE 编辑器增强技巧大全
  • 原文地址:https://www.cnblogs.com/cengjingdeshuige/p/9407129.html
Copyright © 2011-2022 走看看