123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import { deepClone, clearTypeListZeros, clearGoodTypeListZero, mergeGoodToShopcar, clearShoplistConfirmed } from '@/common/util/index.js'
- export default {
- namespaced: true,
- state: {
- list: []
- },
- getters: {
- shopcarNum: state => {
- return state.list.reduce((t, e) => {
- return e.typeList.reduce((tt, ee) => {
- return Object.keys(ee.size).reduce((ttt, eee) => {
- return ttt + ee.size[eee]
- }, tt)
- }, t)
- }, 0)
- },
- choosedNum: state => {
- return state.list.reduce((t, e) => {
- return e.typeList.reduce((tt, ee) => {
- return Object.keys(ee.size).reduce((ttt, eee) => {
- return ttt + (ee.choosed[eee] ? ee.size[eee] : 0)
- }, tt)
- }, t)
- }, 0)
- },
- choosedPrice: state => {
- return state.list.reduce((t, e) => {
- return e.typeList.reduce((tt, ee) => {
- return Object.keys(ee.size).reduce((ttt, eee) => {
- return ttt + (ee.choosed[eee] ? ee.size[eee] : 0) * e.price
- }, tt)
- }, t)
- }, 0)
- },
- choosedList: state => {
- const list = deepClone(state.list)
- for(let i = list.length - 1; i >= 0; i --) {
- if (!list[i].choosed) {
- list.splice(i, 1)
- } else {
- list[i].typeList.forEach(ee => {
- Object.keys(ee.choosed).forEach(eee => {
- if (!ee.choosed[eee]) {
- delete ee.size[eee]
- delete ee.choosed[eee]
- }
- })
- })
- }
- }
- return list
- },
- choosedAll: state => {
- return state.list.every(e => {
- return e.typeList.every(ee => {
- return Object.keys(ee.choosed).every(eee => {
- return ee.choosed[eee]
- })
- })
- })
- }
- },
- mutations: {
- ADD(state, payload) {
- const index = state.list.findIndex(e => e.id === payload.id)
- setTimeout(() => {
- if(state.list.length === 0 || index === -1) {
- state.list.push(payload)
- } else {
- mergeGoodToShopcar(state.list[index], payload)
- }
- }, 567)
- },
- DEL(state, index) {
- state.list.splice(index, 1)
- },
- CLEARCONFIRM(state, payload) {
- clearShoplistConfirmed(state.list, payload)
- },
- COUNTCHANGE(state, payload) {
- const index = payload[0], typeIndex = payload[1], key = payload[2], value = payload[3]
- state.list[index].typeList[typeIndex].size[key] = value
- if (value === 0) {
- clearTypeListZeros(state.list[index].typeList)
- clearGoodTypeListZero(state.list)
- }
- },
- CHOOSEDCHANGE(state, payload) {
- const index = payload[0], typeIndex = payload[1], key = payload[2]
- if (payload.length === 3) {
- state.list[index].typeList[typeIndex].choosed[key] = !state.list[index].typeList[typeIndex].choosed[key]
- state.list[index].choosed = state.list[index].typeList.some(e => Object.keys(e.choosed).some(ee => e.choosed[ee] === true))
- } else if (payload.length === 1) {
- state.list[index].choosed = !state.list[index].choosed
- state.list[index].typeList.forEach(e => Object.keys(e.choosed).forEach(ee => e.choosed[ee] = state.list[index].choosed))
- } else {
- const status = this.getters['shopcar/choosedAll']
- state.list.forEach(e => {
- e.choosed = !status
- e.typeList.forEach(ee => {
- Object.keys(ee.choosed).forEach(eee => {
- ee.choosed[eee] = !status
- })
- })
- })
- }
- }
- }
- }
|