index.js 3.59 KB
import {get} from 'lodash';
import Vue from 'vue';

export default function() {
  return {
    namespaced: true,
    state: {
      categoryParent: [],
      categorySubList: [],
    },
    mutations: {
      addCategoryParentList(state, {data}) {
        let brand = {
            id:'-1',
            name: '品牌',
            image: '',
            linkType: '',
            isSelect: true,
        }
        state.categoryParent.push(brand);
        if (data && data.length) {
            data.forEach(val => {
                val.isSelect = false;
                state.categoryParent.push(val);
            });
        }

      },

      addCategorySubList(state, {data}) {
        if(data && data.category){
            let subList = [];
            data.category.forEach(val => {
                if(val && val.sub){
                    val.sub.forEach(item => {
                        if(item.linkType === 'h5'){
                            item.isShow = true;
                        }else {
                            item.isShow = false;
                        }
                    })
                }
                
                // console.log(val)
                // subList.push(val);
            });
            state.categorySubList = data.category;
        }
      },
      addBrandList(state, {data}){
          if(data && data.brand_list){
            let sub = [];
            
            data.brand_list.forEach(val => {
                val.isSelect = false;
                let subItem = {
                    id: val.id,
                    name: val.brand_name,
                    image: val.brand_logo,
                    type: 1,//表示 品牌
                    linkType: 'brand',
                    link: val.id,
                    isShow: false,
                }
                sub.push(subItem);
            });
            let category = [{
                id:'',
                image:'',
                linkType:'brand',
                name:'全部品牌',
                sub: sub,
            }];
            state.categorySubList = category;

          }
      },
      updateCategoryParentList(state, {id}) {
        if (id) {
            state.categoryParent.forEach((val, index) => {
                if(id === val.id){
                    val.isSelect = true;
                }else {
                    val.isSelect = false;
                }
                Vue.set(state.categoryParent, index, val);
            });
        }
      }   
    },
    actions: {
      async fetchCategoryParentList({commit, state}) {

        const result = await this.$api.get('/api/ufo/category/saleCategory');
        if (result.code === 200) {
          commit('addCategoryParentList', {data: result.data});
        }

        return result.data ? result.data.length : 0;
      },
      async fetchBrandList({commit, state}, {id}) {
        if(id){
        commit('updateCategoryParentList', {id: id});
        }
        
        const result = await this.$api.get('/api/ufo/category/search/brandList');
        
        console.log(result);
        if (result.code === 200) {
          commit('addBrandList', {data: result.data});
        }

        return result.data ? result.data.length : 0;
      },
      async fetchCategorySubList({commit, state},{id}) {

        commit('updateCategoryParentList', {id: id});
        const result = await this.$api.get('/api/ufo/category/saleCategoryDetail',{ id });
        
        console.log(result);
        if (result.code === 200) {
          commit('addCategorySubList', {data: result.data});
        }

        return result.data ? result.data.length : 0;
      },
    },
  };
}