import Vue from 'vue' export default function getCategory (payload = {}) { return new Promise(async (resolve, reject) => { const id = payload.id // 名称 const nameComponentData = { nodeType: 'item', required: true, label: '分类名称', nodeList: [ { nodeType: 'input', keyword: 'name', hub: 'category-detail', props: { placeholder: '输入分类名称', }, }, ], } // 分类 const levelComponentData = { nodeType: 'item', required: false, label: '上级分类', tip: '默认添加一级分类', nodeList: [ { nodeType: 'select', keyword: 'category_id1', hub: 'category-detail', props: { placeholder: '选择一级分类', filterable: true, clearable: !id, // disabled: !!id, }, }, { nodeType: 'select', keyword: 'category_id2', hub: 'category-detail', props: { placeholder: '选择二级分类', filterable: true, clearable: !id, // disabled: !!id, }, dependency: { type: 'hide', keyword: 'category_id1', }, }, ], } // 图标 const icoComponentData = { nodeType: 'item', required: true, label: '分类图标', tip: '图标尺寸还不知道', nodeList: [ { nodeType: 'uploader', keyword: 'ico', hub: 'category-detail', props: {}, }, ], } // 描述 const descComponentData = { nodeType: 'item', required: false, label: '分类描述', nodeList: [ { nodeType: 'input', keyword: 'desc', hub: 'category-detail', props: { type: 'textarea', }, }, ], } // 整体组件数据 const componentData = [ { nodeType: 'block', nodeList: [ { nodeType: 'note', text: '默认添加一级分类', }, nameComponentData, levelComponentData, icoComponentData, descComponentData, ], }, ] const value = { name: null, category_id1: null, category_id2: null, ico: null, desc: null, } const error = { name: '', category_id1: '', category_id2: '', ico: '', desc: '', } const option = { category_id1: { type: 'async', list: [], refresh: true, }, category_id2: { type: 'async', dependency: { keyword: 'category_id1', }, list: [], refresh: true, }, } const categoryDetailData = { componentData, value, error, option, } if (id) { try { const { data } = await Vue.http.get(`/product/category/detail?id=${id}`) const { name, category1, category2, ico, desc } = data if (category1.id) { option.category_id1.list.push({ value: category1.id, label: category1.name }) value.category_id1 = category1.id } if (category2.id) { option.category_id2.list.push({ value: category2.id, label: category2.name }) value.category_id2 = category2.id } value.id = data.id value.name = name value.ico = ico value.desc = desc levelComponentData.nodeList[0].props.disabled = !value.category_id1 levelComponentData.nodeList[1].props.disabled = !value.category_id2 resolve({ componentData, value, error, option, }) } catch (e) { console.log(e) } } else resolve(categoryDetailData) }) }