123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- 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)
- })
- }
|