626 lines
14 KiB
JavaScript
626 lines
14 KiB
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
import util from '../common/we7/util';
|
|
import api from '../common/api';
|
|
import utils from '@/common/utils.js'
|
|
Vue.use(Vuex)
|
|
|
|
import dndc from './dndc'
|
|
|
|
const store = new Vuex.Store({
|
|
state: {
|
|
system: {
|
|
custom: {
|
|
live: '',
|
|
takeOut: '',
|
|
integral: '',
|
|
balance: '',
|
|
informationTitle: '',
|
|
hbfh: '',
|
|
hbmc: '',
|
|
inStore: '',
|
|
},
|
|
powerList: {},
|
|
},
|
|
user: {},
|
|
isLogin: false,
|
|
isIpx: false,
|
|
carList: [],
|
|
scarList: {
|
|
out: {
|
|
data: []
|
|
},
|
|
fast: {
|
|
data: []
|
|
},
|
|
ins: {
|
|
data: []
|
|
},
|
|
},
|
|
sjxx: {},
|
|
layout: {
|
|
index: {},
|
|
personalcenter: {},
|
|
custom: {},
|
|
},
|
|
config: {
|
|
// showloading: true,
|
|
showTips: !uni.getStorageSync('tips'),
|
|
hasKp: false,
|
|
enterset: {},
|
|
orderset: {
|
|
outName: '',
|
|
},
|
|
citys: {
|
|
sArr: []
|
|
},
|
|
isshopdl: false,
|
|
storeInfo: {},
|
|
payConfig: {},
|
|
recharge: {},
|
|
vipset: {},
|
|
payVipset: {},
|
|
storageset: {},
|
|
},
|
|
},
|
|
mutations: {
|
|
setUser(state, data) {
|
|
uni.setStorageSync('userId', data.id)
|
|
data.integral = data.integral || 0
|
|
data.balance = data.balance || 0
|
|
state.user = data
|
|
// #ifndef H5
|
|
if (data.portrait) state.isLogin = true
|
|
// #endif
|
|
// #ifdef H5
|
|
state.isLogin = true
|
|
// #endif
|
|
// console.log('setUsersetUsersetUser', data, state.isLogin)
|
|
},
|
|
setSystem(state, data) {
|
|
state.system = data
|
|
},
|
|
setCarList(state, data) {
|
|
state.carList = data
|
|
},
|
|
setScarList(state, data) {
|
|
// console.log('setScarList', data, state.scarList)
|
|
if (!data.key) {
|
|
state.scarList['out'] = data.data
|
|
} else {
|
|
state.scarList[data.key] = data.data
|
|
}
|
|
},
|
|
setSjxx(state, data) {
|
|
state.sjxx = data
|
|
uni.setStorageSync('storeId', data.shopData.id)
|
|
},
|
|
setLayout(state, {
|
|
params,
|
|
data
|
|
}) {
|
|
// console.log(state.layout, {
|
|
// params,
|
|
// data
|
|
// })
|
|
state.layout[params.page] = data
|
|
// console.log(params,data)
|
|
},
|
|
setConfig(state, {
|
|
params,
|
|
data
|
|
}) {
|
|
// console.log(state.config, {
|
|
// params,
|
|
// data
|
|
// })
|
|
state.config[params.key] = data
|
|
},
|
|
},
|
|
getters: {
|
|
hcCar: state => () => {
|
|
let hcCar = uni.getStorageSync('hcCar') || [],
|
|
item = hcCar.find(v => v.storeId == state.sjxx.storeInfo.id)
|
|
if (item) {
|
|
item.list = state.carList
|
|
} else {
|
|
if (hcCar.length < 5) {
|
|
hcCar.push({
|
|
storeId: state.sjxx.storeInfo.id,
|
|
list: state.carList
|
|
})
|
|
} else {
|
|
hcCar.splice(0, 1)
|
|
hcCar.push({
|
|
storeId: state.sjxx.storeInfo.id,
|
|
list: state.carList
|
|
})
|
|
}
|
|
}
|
|
uni.setStorageSync('hcCar', hcCar)
|
|
// console.log('getters hcCar', state.sjxx.storeInfo.id, state.carList, uni.getStorageSync('hcCar'))
|
|
}
|
|
},
|
|
actions: {
|
|
async getSystem({
|
|
commit,
|
|
state
|
|
}, params = {}) {
|
|
// console.log('state', state, params)
|
|
if (!state.system.color || params.get) {
|
|
let res = {};
|
|
state.isIpx = util.getSb().model.search('iPhone X') != -1 || util.getSb().model.search(
|
|
'iPhone 1') != -1 || util
|
|
.getSb().model.search('iPhone1') != -1
|
|
//console.log(state.isIpx)
|
|
res = await util.request({
|
|
'url': api.config,
|
|
data: {
|
|
ident: 'system'
|
|
}
|
|
})
|
|
res.data.color = res.data.color || '#FF5F2F'
|
|
// res.data.pm = api.platform
|
|
commit("setSystem", res.data);
|
|
params.setNB && util.setNB(res.data.color, params.nofc)
|
|
} else {
|
|
params.setNB && util.setNB(state.system.color, params.nofc)
|
|
}
|
|
// // #ifndef MP-TOUTIAO
|
|
// // #endif
|
|
},
|
|
async checkBindTel({
|
|
commit,
|
|
rootState
|
|
}, params) {
|
|
return new Promise((reslove, reject) => {
|
|
if (!rootState.user.userTel) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '请先绑定手机号',
|
|
confirmText: '前往绑定',
|
|
cancelText: '暂不绑定',
|
|
success: res => {
|
|
if (res.confirm) {
|
|
uni.navigateTo({
|
|
url: '/yb_o2o/my/login/index',
|
|
});
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
reslove()
|
|
}
|
|
})
|
|
},
|
|
async getLoginInfo({
|
|
commit,
|
|
state
|
|
}, params = {}) {
|
|
if (state.user.id) {
|
|
return
|
|
} else {
|
|
return await new Promise(async (resolve, reject) => {
|
|
// #ifndef H5
|
|
// util.showLoading()
|
|
uni.login({
|
|
// #ifdef MP-ALIPAY
|
|
scopes: 'auth_base',
|
|
// #endif
|
|
success: async (lres) => {
|
|
// console.log('uni.login', res)
|
|
let res = await util.request({
|
|
'url': api.login,
|
|
// mask: 1,
|
|
data: {
|
|
code: lres.code,
|
|
inviteId: params.inviteId || '',
|
|
type: params.type || '',
|
|
}
|
|
})
|
|
if (res) {
|
|
// console.timeEnd('login')
|
|
commit('setUser', res.data)
|
|
resolve()
|
|
if (res.data.session_key) {
|
|
getApp().globalData.session_key = res.data
|
|
.session_key
|
|
}
|
|
} else {
|
|
reject()
|
|
util.modal('请检查小程序秘钥等相关配置')
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
console.log('接口调用失败,将无法正常使用开放接口等服务', err)
|
|
if (err.errMsg.indexOf('permission') > -1) {
|
|
resolve()
|
|
}
|
|
reject(err)
|
|
}
|
|
})
|
|
// #endif
|
|
// #ifdef H5
|
|
if (api.platform == 'weChat') {
|
|
// console.log('%c api.platform ', 'color: white; background-color: #95B46A', api.platform)
|
|
if (!getApp().globalData.siteInfo.isDev) {
|
|
util.showLoading()
|
|
let {
|
|
data
|
|
} = await util.request({
|
|
'url': api.login,
|
|
mask: 1,
|
|
data: {
|
|
inviteId: params.inviteId || '',
|
|
}
|
|
})
|
|
if (data && data.id) {
|
|
commit('setUser', data)
|
|
resolve()
|
|
} else {
|
|
let {
|
|
data
|
|
} = await util.request({
|
|
'url': api.wechatLogin,
|
|
mask: 1,
|
|
data: {
|
|
url: window.location.href
|
|
}
|
|
})
|
|
window.location.href = data;
|
|
}
|
|
// let [error, res] = await uni.request({
|
|
// 'url': `${getApp().globalData.siteInfo.siteroot}/login/login?uniacid=${getApp().globalData.siteInfo.uniacid}`,
|
|
// 'data': {
|
|
// inviteId: params.inviteId || '',
|
|
// },
|
|
// 'method': 'GET',
|
|
// 'header': {
|
|
// 'content-type': 'application/x-www-form-urlencoded',
|
|
// "appType": api.platform,
|
|
// }
|
|
// });
|
|
// if (res.data.errno == 0) {
|
|
// uni.hideLoading();
|
|
// commit('setUser', res.data.data)
|
|
// resolve()
|
|
// } else {
|
|
// util.message(res.data.message || res.data, 3, 2000)
|
|
// }
|
|
// console.log('%c login data ',
|
|
// 'color: white; background-color: #34aaff', data)
|
|
} else {
|
|
let {
|
|
data
|
|
} = await util.request({
|
|
'url': api.login,
|
|
mask: 1,
|
|
data: {
|
|
inviteId: params.inviteId || '',
|
|
}
|
|
})
|
|
commit('setUser', data)
|
|
resolve()
|
|
}
|
|
} else {
|
|
commit('setUser', {
|
|
id: "1",
|
|
userId: '1',
|
|
openId: "123",
|
|
userName: "小",
|
|
userTel: "13823515936",
|
|
portrait: ""
|
|
})
|
|
resolve()
|
|
console.log('%c api.platform ',
|
|
'color: white; background-color: #95B46A', api.platform)
|
|
}
|
|
// #endif
|
|
})
|
|
}
|
|
|
|
},
|
|
async refreshUser({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
// console.log(params)
|
|
// return
|
|
let {
|
|
data
|
|
} = await util.request({
|
|
'url': api.xgyh,
|
|
method: params.get ? 'GET' : 'POST',
|
|
mask: params.nomask ? 0 : 1,
|
|
data: params
|
|
})
|
|
if (params.now) {
|
|
data && commit('setUser', data)
|
|
} else {
|
|
setTimeout(() => {
|
|
data && commit('setUser', data)
|
|
}, 200);
|
|
}
|
|
return data
|
|
},
|
|
async loginBind({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let res = await util.request({
|
|
'url': api.bind,
|
|
method: 'POST',
|
|
mask: 1,
|
|
data: params
|
|
})
|
|
res && commit('setUser', res.data)
|
|
return res
|
|
},
|
|
addCar({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let i, isVip = state.user.rankId > 0,
|
|
obj = {
|
|
gnum: params.gnum || 1
|
|
}
|
|
if (params.g.isSpec != 1 && params.g.isMaterial != 1 && params.g.isAttribute != 1) {
|
|
i = state.carList.findIndex(v => v.goodsId == params.g.goodsId)
|
|
} else {
|
|
i = state.carList.findIndex(v => v.goodsId == params.g.goodsId && v.groupId == params.g
|
|
.groupId && v.jlids ==
|
|
params.g.jlids && v.attribute == params.g.attribute)
|
|
}
|
|
if (params.outin == 1) {
|
|
let item = state.carList.find(v => v.goodsId == params.g.goodsId && v.groupId == params.g
|
|
.groupId && v.jlids ==
|
|
params.g.jlids && v.attribute == params.g.attribute) || {
|
|
num: 0
|
|
}
|
|
if (item.num >= params.g.outStock) {
|
|
util.message('此商品库存不足', 3)
|
|
return {
|
|
isxg: true
|
|
}
|
|
} else if (item.num >= 99) {
|
|
util.message('最多添加99个', 3)
|
|
return {
|
|
isxg: true
|
|
}
|
|
}
|
|
}
|
|
if (i > -1) {
|
|
if (params.g.maxNum > 0 && state.carList[i].num >= params.g.maxNum) {
|
|
util.message(`此商品限购${params.g.maxNum}份`, 3)
|
|
return {
|
|
isxg: true
|
|
}
|
|
}
|
|
state.carList[i].num++
|
|
} else {
|
|
if (params.g.minNum > 1 && params.outin == 1) {
|
|
obj.gnum = +params.g.minNum
|
|
}
|
|
let goods = Object.assign({}, params.g)
|
|
goods.num = obj.gnum
|
|
goods.price = params.outin == 1 ? isVip && params.g.outVipPrice > 0 ? +params.g.outVipPrice : +
|
|
params.g.outSalesPrice :
|
|
+params.g.inSalesPrice
|
|
goods.price += params.g.jlmoney || 0
|
|
goods.price = +goods.price.toFixed(2)
|
|
state.carList.push(goods)
|
|
// console.log(goods)
|
|
}
|
|
//
|
|
if (params.outin == 1) store.getters.hcCar()
|
|
// console.log('index.js,addCar', params, i)
|
|
return obj
|
|
},
|
|
decCar({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let i, obj = {
|
|
gnum: params.gnum || 1
|
|
}
|
|
if (params.g.isSpec != 1 && params.g.isMaterial != 1 && params.g.isAttribute != 1) {
|
|
i = state.carList.findIndex(v => v.goodsId == params.g.goodsId)
|
|
} else {
|
|
i = state.carList.findIndex(v => v.goodsId == params.g.goodsId && v.groupId == params.g
|
|
.groupId && v.jlids ==
|
|
params.g.jlids && v.attribute == params.g.attribute)
|
|
}
|
|
if (i > -1) {
|
|
if (params.g.minNum > 1 && params.outin == 1 && params.g.minNum == state.carList[i].num) {
|
|
obj.gnum = +params.g.minNum
|
|
}
|
|
state.carList[i].num -= obj.gnum
|
|
state.carList[i].num == 0 && state.carList.splice(i, 1)
|
|
}
|
|
//
|
|
if (params.outin == 1) store.getters.hcCar()
|
|
return obj
|
|
//console.log(params, i, state.carList)
|
|
},
|
|
cshCar({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let hcCar = uni.getStorageSync('hcCar') || [],
|
|
item = hcCar.find(v => v.storeId == params)
|
|
if (item) {
|
|
commit('setCarList', item.list)
|
|
} else {
|
|
commit('setCarList', [])
|
|
}
|
|
// console.log(hcCar, item)
|
|
},
|
|
//数据库car
|
|
async clearMycar({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let res = await util.request({
|
|
'url': api.qkgwc,
|
|
method: 'POST',
|
|
mask: 1,
|
|
data: params
|
|
})
|
|
res && commit('setScarList', {
|
|
key: params.key,
|
|
data: {}
|
|
})
|
|
},
|
|
async getMycar({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let res = await util.request({
|
|
'url': api.wdgwc,
|
|
mask: params.mask,
|
|
data: params
|
|
})
|
|
res && commit('setScarList', {
|
|
key: params.key,
|
|
data: res.data
|
|
})
|
|
// console.log('index.js,getMycar', params, state.scarList)
|
|
},
|
|
async supdCar({
|
|
dispatch,
|
|
commit,
|
|
state
|
|
}, params) {
|
|
let res = await util.request({
|
|
'url': api.xggwc,
|
|
ct: 1,
|
|
method: 'POST',
|
|
// mask: 1,
|
|
data: params
|
|
})
|
|
// console.log('index.js,SaveShopCar', res)
|
|
if (res) {
|
|
commit('setScarList', {
|
|
key: params.key,
|
|
data: res.data
|
|
})
|
|
return +res.count
|
|
// dispatch('getMycar', {
|
|
// userId: params.userId,
|
|
// item: params.item,
|
|
// storeId: params.storeId,
|
|
// tableId: params.tableId,
|
|
// })
|
|
// console.log(this)
|
|
}
|
|
// console.log('index.js,supdCar', params)
|
|
},
|
|
async getSjxx({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
// if (state.sjxx.shopData) return
|
|
// console.time('sjxx')
|
|
let {
|
|
data
|
|
} = await util.request({
|
|
'url': api.shopGoodsInfo,
|
|
// mask: '接口',
|
|
data: params
|
|
})
|
|
// console.timeEnd('sjxx')
|
|
if (!data.newStoreSet || !data.newStoreSet.data) {
|
|
data.newStoreSet = {
|
|
data: []
|
|
}
|
|
}
|
|
if (!data.storeSet || !data.storeSet.data) {
|
|
data.storeSet = {
|
|
data: []
|
|
}
|
|
}
|
|
if (!data.vipStoreSet || !data.vipStoreSet.data) {
|
|
data.vipStoreSet = {
|
|
data: []
|
|
}
|
|
}
|
|
commit('setSjxx', data)
|
|
return data
|
|
},
|
|
async getLayout({
|
|
commit,
|
|
state
|
|
}, params = {
|
|
page: 'index',
|
|
id: '1',
|
|
}) {
|
|
// console.time('getLayout')
|
|
if (state.layout[params.page].id) {
|
|
if (params.page == 'custom') {
|
|
|
|
} else {
|
|
return
|
|
}
|
|
}
|
|
let res = await util.request({
|
|
'url': api.layout,
|
|
data: params
|
|
})
|
|
// console.timeEnd('getLayout')
|
|
if (res) {
|
|
commit('setLayout', {
|
|
params,
|
|
data: res.data
|
|
})
|
|
}
|
|
},
|
|
async getConfig({
|
|
commit,
|
|
state
|
|
}, params) {
|
|
if (params.api) {
|
|
if (state.config[params.key].isget) {
|
|
return
|
|
}
|
|
let res = await util.request({
|
|
'url': api[params.api],
|
|
method: 'POST',
|
|
data: params.params
|
|
})
|
|
if (res) {
|
|
if (!state.config[params.key].sArr) {
|
|
commit('setConfig', {
|
|
params,
|
|
data: {
|
|
isget: true,
|
|
...res.data
|
|
}
|
|
})
|
|
} else {
|
|
commit('setConfig', {
|
|
params,
|
|
data: {
|
|
isget: true,
|
|
sArr: res.data
|
|
}
|
|
})
|
|
}
|
|
}
|
|
} else {
|
|
if (params.key == 'storeInfo') {
|
|
params.data.distance = Number((params.data.distance / 1000).toFixed(params.data
|
|
.distance < 100 ? 2 : 1)) + 'km'
|
|
}
|
|
commit('setConfig', {
|
|
params,
|
|
data: params.data
|
|
})
|
|
}
|
|
},
|
|
},
|
|
modules: {
|
|
dndc,
|
|
}
|
|
})
|
|
|
|
export default store |