您现在的位置是:首页 > 文章详情

【店滴云】后台 diy 表单生成增强,满足多种输入要求

日期:2023-11-30点击:197

【店滴云】后台diy表单生成增强,满足多种输入要求

1、输入框输入,输入框类型处理

2、二级联动处理

3、编辑器初始化

4、数据联动显示处理


export const form = {
    'blocs': {
        'type': 'cascader-store',
        'label': '选择公司'
    },
    'ishot': {
        'type': 'radio',
        'label': '是否热门',
        isOptions: true,
        options: [{
            text: '是',
            value: 1
        },
            {
                text: '否',
                value: 2
            }
        ]
    },
    pcate: {
        label: '一级分类',
        // 只需要在这里指定为 tree-select 即可
        type: 'tree-select',
        // 属性参考: https://vue-treeselect.js.org/
        attrs: {
            multiple: false,
            clearable: true
        },
        options: async data => {
            console.log('编 号', data.name)

            const res = await initCate(0)
            console.log('编 号', res.data)
            const arr = [{
                id: 0,
                label: '一级分类'
            }]
            console.log('父级菜单', res.data)
            return arr.concat(res.data)
        }

    },
    ccate: {
        label: '二级分类',
        // 只需要在这里指定为 tree-select 即可
        type: 'tree-select',
        // 属性参考: https://vue-treeselect.js.org/
        attrs: {
            multiple: false,
            clearable: true
        },
        vif: data => data.pcate,
        // 这里必须制定 optionsLinkageFields 做为关联字段,当次字段值发生变化时,会重新出发请求
        optionsLinkageFields: ['pcate'],
        options: async data => {
            console.log('编 号', data.name)
            if (data.pcate) {
                const res = await initCate(data.pcate)
                console.log('编 号', res.data)
                const arr = [{
                    id: 0,
                    label: '二级分类'
                }]
                console.log('父级菜单', res.data)
                return arr.concat(res.data)
            }
        }
    },
    'page': {
        'type': 'select',
        'label': '页面标识',
        'isOptions': true,
        'options': [{
            text: '手机端-首页',
            value: 'mobileHome'
        },
            {
                text: '手机端-会展服务',
                value: 'mobileService'
            },
            {
                text: '电脑端-首页',
                value: 'pc-index'
            },
            {
                text: '电脑端-行业资讯',
                value: 'pc-Industry'
            }
        ]
    },
    'page1': {
        'type': 'select',
        'label': '页面标识',
        'isOptions': true,
        'options': async data => {
            console.log('编 号', data.name)
            if (data.pcate) {
                const res = await initCate(data.pcate)
                console.log('编 号', res.data)
                const arr = [{
                    id: 0,
                    label: '二级分类'
                }]
                console.log('父级菜单', res.data)
                return arr.concat(res.data)
            }
        }
    },
    'title': {
        'type': 'input',
        'label': '标题'
    },
    'description': {
        'type': 'textarea',
        'label': '简介'
    },
    'content': {
        'type': 'fire-editor',
        'label': '详情'
    },
    'thumb': {
        'type': 'image-uploader',
        'label': '图片'
    },
    'source': {
        'type': 'input',
        'label': '来源'
    },
    'author': {
        'type': 'input',
        'label': '作者'
    },
    'displayorder': {
        'type': 'input',
        'label': '排序'
    },
    'linkurl': {
        'type': 'input',
        'label': '链接地址'
    },
    'is_top': {
        'type': 'radio',
        'label': '是否置顶',
        'isOptions': true,
        'options': [{
            'text': '是',
            'value': 1
        },
            {
                'text': '否',
                'value': 2
            }
        ]
    },
    'name': {
        'type': 'input',
        'label': '卡券名'
    },
    num_sort: {
        type: 'input',
        label: '排序',
        attrs: {
            type: 'number'
        }
    },
    meal_type: {
        type: 'radio',
        label: '默认套餐类型',
        isOptions: true,
        options: [
            {
                text: '1小时',
                value: 1
            },
            {
                text: '2小时',
                value: 2
            },
            {
                text: '4小时',
                value: 4
            }
        ]
    },
    type: {
        type: 'radio',
        label: '卡券类型',
        isOptions: true,
        options: [
            {
                text: '代金券',
                value: 1
            },
            {
                text: '时长卡',
                value: 2
            },
            {
                text: '次卡',
                value: 3
            },
            {
                text: '折扣券',
                value: 4
            },
            {
                text: '体验券',
                value: 5
            }
        ],
        on: {
            input: (data) => {
                console.log(data)
                this.showNum = data
            }
        }
    },
    explain: {
        type: 'input',
        label: '卡券说明'
    },
    price: {
        type: 'input',
        label: '卡券金额(元)',
        attrs: {
            type: 'number'
        }
    },
    use_start: {
        type: 'time',
        label: '时间限制-开始时间',
        attrs: {
            pickerOptions: {
                start: '00:30',
                step: '00:30',
                end: '24:00'
            }
        }
    },
    use_end: {
        type: 'time',
        label: '时间限制-结束时间',
        attrs: {
            pickerOptions: {
                start: '00:30',
                step: '00:30',
                end: '24:00'
            }
        }
    },
    enable_start: {
        type: 'datetime',
        label: '有效期开始时间',
        attrs: {
            valueFormat: 'yyyy-MM-dd HH🇲🇲ss'
        }
    },
    coupon_img: {
        label: '卡券主图',
        type: 'image-uploader' // 只需要在这里指定为 image-uploader 即可
        // attrs: {
        //   multiple: true,
        //   limit: 10
        // }
    },
    background: {
        label: '卡券背景',
        type: 'image-uploader' // 只需要在这里指定为 image-uploader 即可
    },
    parent: {
        label: "父级菜单",
        // 只需要在这里指定为 tree-select 即可
        type: "tree-select",
        // 属性参考: https://vue-treeselect.js.org/
        attrs: {
            multiple: false,
            clearable: true,
        },
        vif: (data) => data.module_name,
        // 这里必须制定 optionsLinkageFields 做为关联字段,当次字段值发生变化时,会重新出发请求
        optionsLinkageFields: ["module_name"],
        options: async (data) => {
            if (data.name || data.module_name) {
                const obj = {};
                this.$set(obj, "Menu[module_name]", data.module_name);
                const res = await fetchList(obj);
                const arr = [
                    {
                        id: 0,
                        label: "一级菜单",
                    },
                ];
                return arr.concat(res.data.list);
            }
        },
    },
}
原文链接:https://www.oschina.net/news/268816
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章