【店滴云】后台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); } }, }, }
还没有评论,来说两句吧...