用iview的render函数渲染可输入表格

本文参考是:https://run.iviewui.com/TB1hMmfe
首先我要完成这个页面:

1.png

当我点击添加按钮,就会出现表格一行
2.png

之前用饿了么ui比较多,相对简单。
然而iView这个框架有一个render函数(现在用的不熟,等熟悉了再介绍哈)

   <FormItem label="奖品设置">
                                   <Table ref="myTable" border :columns="columns" :data="prizesetData">
<!--                                        奖品名称-->
                                       <template slot="prizename" slot-scope="props">
                                           <Input v-model="props.row.prizename"></Input>
                                       </template>
<!--                                       奖品设置-->
                                       <template slot="prizeselect" slot-scope="props">
                                           <Select v-model="props.row.prizeselect" >
                                               <Option v-for="item in prizeList" :value="item.value" :key="item.value">{{ item.label }}</Option>
                                           </Select>
                                       </template>
<!--                                       奖品信息-->
                                       <template slot="prizecontent" slot-scope="props">
                                           <Input v-model="props.row.prizecontent"></Input>
                                       </template>
<!--                                       奖品数量-->
                                       <template slot="prizecount" slot-scope="props">
                                           <InputNumber :max="100" :min="0" v-model="props.row.prizecount"></InputNumber>
                                       </template>
<!--                                       中奖概率-->
                                       <template slot="prizechance" slot-scope="props">
                                           <InputNumber :max="100" v-model="props.row.prizechance" :formatter="value => `${value}%`" :parser="value => value.replace('%', '')"></InputNumber>
                                       </template>
<!--                                       奖品图片-->
                                       <template slot="prizeimg" slot-scope="props">
                                           <ImageUploader :currentList="props.row.prizeimg?[{'path':data.img}]:[]" type="image" @selectSource="getImgUrl($event)"></ImageUploader>
                                       </template>
                                       <template slot="prizechance" slot-scope="props">
                                           <InputNumber :max="100" v-model="props.row.prizechance" :formatter="value => `${value}%`" :parser="value => value.replace('%', '')"></InputNumber>
                                       </template>
                                   </Table>

                                   <Button @click="addRow" style="margin:10px auto;">添加抽奖信息</Button>
                                   {{prizesetData}}  //这里是我渲染的数据,可以在页面上看到数据的变化
                               </FormItem>

利用插槽,在data中声明插槽的名字等数据(现在还不知道具体是啥,以后知道了会补充的)


 // 表格数据
                prizesetData:[
                    {
                        prizename:'积分',
                        prizeselect:'jifen',
                        prizecontent:'满100减100',
                        prizecount:'10',
                        prizechance:'50',
                    }
                ],
                //表格的表头
                columns:[
                    //序号
                    {
                        type: 'index',
                        width: 60,
                        title:'序号',
                        align: 'center'
                    },
                    {
                        title: '奖品名称',
                        key: 'prizename',
                        width: 100,
                        align: 'center',
                        render:(h,params) => {
                            return h('Input',{
                                props: {
                                    value:params.row.prizename,
                                    size:'small',
                                },
                                on: {
                                    input: (val) => {
                                        this.prizesetData[params.index].prizename = val
                                    }
                                },
                            })
                        }
                    },
                    {
                         title: '奖品设置',
                         key: 'prizeselect',
                         width: 100,
                         align: 'center',
                         render:(h,params) => {
                             let a = []
                             //表格里的奖品设置下拉框
                             let  prizeList =[
                                 {
                                     value: 'none',
                                     label: '无'
                                 },
                                 {
                                     value: 'youhuijuan',
                                     label: '优惠券'
                                 },
                                 {
                                     value: 'jifen',
                                     label: '积分'
                                 },
                             ]
                                 prizeList.forEach(item=>{
                                 a.push(h('Option',{
                                     props: {
                                         label:item.label,
                                         value:item.value
                                     }
                                 },item))
                             })
                             return h('Select',{

                                     props: {
                                         value:'',
                                         size:'small',
                                         },
                                 on: {
                                         input: (val) => {
                                                 this.prizesetData[params.index].prizeselect = val
                                             }
                                     },
                             },a)
                         }
                 },
                    {
                        title: '奖品信息',
                        key: 'prizecontent',
                        width: 100,
                        align: 'center',
                        render:(h,params) => {
                            return h('Input',{
                                props: {
                                    value:params.row.prizecontent,
                                    size:'small',
                                },
                                on: {
                                    input: (val) => {
                                        this.prizesetData[params.index].prizecontent = val
                                    }
                                },
                            })
                        }
                    },
                    {
                        title: '奖品数量',
                        key: 'prizecount',
                        render: (h, params) => {
                            return h('Input',{
                                props: {
                                    value:params.row.prizecount,
                                    size:'small',
                                },
                                on: {
                                    input: (val) => {
                                        this.prizesetData[params.index].prizecount = val
                                    }
                                },
                            })
                        }
                    },
                    {
                        title: '中奖概率%',
                        key: 'prizechance',
                        render: (h, params) => {
                            return h('Input',{
                                props: {
                                    value:params.row.prizechance,
                                    size:'small',
                                },
                                on: {
                                    input: (val) => {
                                        this.prizesetData[params.index].prizechance = val
                                    }
                                },
                            })
                        }
                    },
                    {
                        title: '奖品图片',
                        key: 'prizeimg',
                        render: (h, params) => {
                            return h('Input',{
                                props: {
                                    value:params.row.prizechance,
                                    size:'small',
                                },
                                on: {
                                    input: (val) => {
                                        this.prizesetData[params.index].prizechance = val
                                    }
                                },
                            })
                        }
                    },
                    {
                        title: '操作', width: 80,key: 'action',
                        render: (h, params) => {
                            return h('div', {}, [
                                h('span', {
                                    style: {
                                        cursor: 'pointer'
                                    },
                                    on: {
                                        click: () => {
                                            if (!this.disabled) {
                                                this.deleteCredit(params.row._index)
                                            }
                                        }
                                    },
                                    class: 'es-primary-text es-text',
                                }, '删除')
                            ])
                        }
                    }
                ],
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容