123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- // [{
- // seller_id: 0,
- // seller_nickname: "店铺名称",
- // products: [{
- // id: 0
- // }]
- // }]
- const defaults = []
- const state = JSON.parse(JSON.stringify(defaults));
- const getters = {
- total(state) {
- let sum = 0;
- // console.log(state)
- for (let sellerIndex in state) {
- for (let productIndex in state[sellerIndex].products) {
- if (state[sellerIndex].products[productIndex].checked) {
- sum += state[sellerIndex].products[productIndex].spec_price * state[sellerIndex].products[
- productIndex].num
- }
- }
- }
- return sum.toFixed(2);
- }
- }
- const mutations = {
- add(state, payload) {
- let sellerIsExist = false;
- let productIsExist = false;
- for (let sellerIndex in state) {
- if (payload.seller_id === state[sellerIndex].seller_id) {
- sellerIsExist = true;
- for (let productIndex in state[sellerIndex].products) {
- if (payload.id === state[sellerIndex].products[productIndex].id &&
- payload.spec_index === state[sellerIndex].products[productIndex].spec_index) {
- productIsExist = true;
- state[sellerIndex].products[productIndex].num = payload.num;
- break;
- }
- }
- if (!productIsExist) {
- state[sellerIndex].products.unshift(payload)
- }
- break;
- }
- }
- if (!sellerIsExist) {
- state.unshift({
- seller_id: payload.seller_id,
- seller_nickname: payload.seller_nickname,
- products: [payload],
- checked: false
- })
- }
- // console.log(this)
- this.commit("cart/save", state)
- },
- remove(state, payload) {
- for (let sellerIndex in state) {
- for (let productIndex in state[sellerIndex].products) {
- if (payload.id === state[sellerIndex].products[productIndex].id &&
- payload.spec_index === state[sellerIndex].products[productIndex].spec_index) {
- //如果商品已经存在于购物车
- state[sellerIndex].products.splice(productIndex, 1)
- if (state[sellerIndex].products.length === 0) {
- state.splice(sellerIndex, 1)
- }
- }
- }
- }
- this.commit("cart/save", state)
- },
- selectSeller(state, payload) {
- for (let sellerIndex in state) {
- if (payload.seller_id === state[sellerIndex].seller_id) {
- state[sellerIndex].checked = !state[sellerIndex].checked
- }
- for (let productIndex in state[sellerIndex].products) {
- if (state[sellerIndex].seller_id === payload.seller_id) {
- state[sellerIndex].products[productIndex].checked = state[sellerIndex].checked
- // this._vm.$set(state[sellerIndex].products[productIndex],"checked",state[sellerIndex].checked)
- }
- }
- }
- this.commit("cart/save", state)
- },
- selectAll(state, payload) {
- // console.log(payload)
- for (let sellerIndex in state) {
- state[sellerIndex].checked = payload.checked
- for (let productIndex in state[sellerIndex].products) {
- state[sellerIndex].products[productIndex].checked = payload.checked
- }
- }
- this.commit("cart/save", state)
- },
- select(state, payload) {
- // console.log(payload)
- for (let sellerIndex in state) {
- for (let productIndex in state[sellerIndex].products) {
- if (payload.id === state[sellerIndex].products[productIndex].id &&
- payload.spec_index === state[sellerIndex].products[productIndex].spec_index) {
- state[sellerIndex].products[productIndex].checked = !state[sellerIndex].products[productIndex]
- .checked
- }
- }
- }
- this.commit("cart/save", state)
- },
- numchange(context, payload) {
- for (let sellerIndex in state) {
- for (let productIndex in state[sellerIndex].products) {
- if (payload.id === state[sellerIndex].products[productIndex].id &&
- payload.spec_index === state[sellerIndex].products[productIndex].spec_index) {
- state[sellerIndex].products[productIndex].num = payload.num
- }
- }
- }
- this.commit("cart/save", state)
- },
- save(state) {
- uni.setStorageSync("cart", state)
- }
- }
- const actions = {
- add(context, payload) {
- return new Promise((resolve, reject) => {
- this._vm.$http.get({
- url: "/product",
- data: {
- id: payload.id
- },
- success: (res) => {
- // console.log(res.data.data.specs)
- const spec = JSON.parse(res.data.data.specs)[payload.specIndex];
- const data = {
- id: res.data.data.id,
- images: res.data.data.images,
- name: res.data.data.name,
- spec_index: payload.specIndex,
- spec_name: spec.name,
- spec_image: spec.image,
- spec_org_price: Number(spec.org_price).toFixed(2),
- spec_price: Number(spec.price).toFixed(2),
- spec_stock: spec.stock,
- seller_id: res.data.data.user_id,
- seller_nickname: res.data.data.user.nickname,
- num: payload.num,
- time: new Date().getTime(),
- checked: false
- }
- context.commit('add', data)
- resolve();
- }
- })
- })
- },
- remove(context, payload) {
- context.commit('remove', payload)
- },
- load(context) {
- let cart = uni.getStorageSync("cart");
- for (let sellerIndex in cart) {
- for (let productIndex in cart[sellerIndex].products) {
- context.dispatch("add", {
- id: cart[sellerIndex].products[productIndex].id,
- num: cart[sellerIndex].products[productIndex].num,
- specIndex: cart[sellerIndex].products[productIndex].spec_index
- })
- }
- }
- }
- }
- export default {
- namespaced: true,
- state,
- getters,
- actions,
- mutations
- }
|