java-mall-app/store/index.js
2025-05-07 16:41:49 +08:00

1145 lines
33 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Vue from 'vue';
import Vuex from 'vuex';
import $ from '../helpers/util';
import Socket from '../helpers/useSocket.js';
import apiconfig from '../helpers/apiconfig.js';
// #ifdef H5
import $cookies from '../helpers/vue-cookies';
// #endif
import Config from '../config/config';
import StateCode from '../config/statecode';
import Lang from '../config/lang';
import notice from '../helpers/notice';
const MSG_INDEX = null;
const CART_INDEX = 3;
const FORCED_LOGIN_STATE = false; //true不提示登录tips直接跳转
Vue.use(Vuex);
// 管理账号信息
const USERS_KEY = 'USERS_KEY';
const STATE_KEY = 'STATE_KEY';
var ret = uni.getStorageSync(USERS_KEY);
let default_user_info = {
user_nickname: Lang.__('未注册用户'),
user_avatar:
'https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/demodata/assets/data/avatar.png',
user_is_new: 1,
};
uni.getSystemInfo({
success: (res) => {
Config.systemInfo = res;
},
});
const store = new Vuex.Store({
state: {
/**
* 是否需要强制登录
*/
forcedLoginState: FORCED_LOGIN_STATE,
hasLogin: uni.getStorageSync('ukey') ? true : false,
userName: '',
cartNum: 0,
cartList: [],
cartMap: {},
newMsgNum: 0,
showLoginPopup: false,
plantformInfo: {
return_state_list: [
{
ext1: null,
label: '提交退单',
enable: null,
value: 3100,
ext2: null,
},
{
ext1: null,
label: '退单审核',
enable: null,
value: 3105,
ext2: null,
},
{
ext1: null,
label: '收货确认',
enable: null,
value: 3110,
ext2: null,
},
{
ext1: null,
label: '退款确认',
enable: null,
value: 3115,
ext2: null,
},
{
ext1: null,
label: '收款确认',
enable: null,
value: 3120,
ext2: null,
},
{
ext1: null,
label: '完成',
enable: null,
value: 3125,
ext2: null,
},
{
ext1: null,
label: '拒绝退货',
enable: null,
value: 3130,
ext2: null,
},
{
ext1: null,
label: '买家取消',
enable: null,
value: 3135,
ext2: null,
},
],
order_state_list: [
{
ext1: null,
label: '待支付',
enable: null,
value: 2010,
ext2: null,
},
{
ext1: null,
label: '待出库',
enable: null,
value: 2020,
ext2: null,
},
{
ext1: null,
label: '待发货',
enable: null,
value: 2030,
ext2: null,
},
{
ext1: null,
label: '待收货',
enable: null,
value: 2040,
ext2: null,
},
{
ext1: null,
label: '交易完成',
enable: null,
value: 2060,
ext2: null,
},
{
ext1: null,
label: '交易取消',
enable: null,
value: 2070,
ext2: null,
},
],
}, //平台信息
districtTree: null, //地址信息
shopInfo: {},
chainInfo: {},
Config: Config, //配置信息
StateCode: StateCode, //状态码
$: $,
sprintf: $.sprintf,
$Socket: Socket,
$apiconfig: apiconfig,
//用户信息
userInfo: ret ? JSON.parse(ret) : Object.assign({}, default_user_info),
userData: null, //废弃 userInfo 取代
userResource: null, //废弃 userInfo 取代
//start Im
getMsg: {},
adduser: {},
addgroup: {},
msgboxuser: '',
msgboxgroup: '',
userstate: '', ///用户状态
chatTolist: {}, ///当前聊天对话的里面是聊天的对象和
currentChatPuid: '', ///当前聊天对话用户
//end Im
//start music
historyList: $.getStorageSync('HISTORY') || [],
paused: true,
playInfo: $.getStorageSync('PLAY_INFO') || {},
//end music
notice: notice,
__: Lang.__,
Lang: Lang,
},
mutations: {
setShowLoginPopup(state, showLoginPopup) {
state.showLoginPopup = Object.assign(
state.showLoginPopup,
showLoginPopup
);
},
login(state, userInfo) {
if ('user_avatar' in userInfo) {
if (userInfo.user_avatar) {
if (
state.Config.HTTPS &&
userInfo.user_avatar.indexOf('https') == 0
) {
} else {
if (userInfo.user_avatar.indexOf('http') == 0) {
} else {
if (state.Config.HTTPS) {
userInfo.user_avatar = 'https:' + userInfo.user_avatar;
} else {
userInfo.user_avatar = 'http:' + userInfo.user_avatar;
}
}
}
} else {
userInfo.user_avatar =
'https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/demodata/assets/data/avatar.png';
}
}
userInfo = Object.assign(state.userInfo, userInfo);
state.userInfo = userInfo;
state.userName = userInfo.user_nickname || Lang.__('未注册用户');
state.hasLogin = true;
//保存基本信息
uni.setStorageSync(USERS_KEY, JSON.stringify(userInfo));
//强制授权读取小程序或者公众号手机号
if ('as' in userInfo) {
if (userInfo.as) {
} else {
if (Config.FORCE_BIND_MOBILE) {
// setTimeout(()=>{
// $.confirm(Lang.__('绑定手机号码'),
// function(data) {
// if (data.confirm) {
// //绑定手机操作
// $.gopage("/member/member/bindphone");
// }
// },true);
// }, 2000)
}
}
}
},
logout(state, payload) {
if ($.source_data.source_type == StateCode.SOURCE_TYPE_APP) {
plus.navigator.removeAllCookie();
}
if ($.source_data.source_type == StateCode.SOURCE_TYPE_H5) {
console.info($cookies.keys());
let arr = $cookies.keys();
for (var i = 0; i < arr.length; i++) {
$cookies.remove(arr[i]);
}
//$cookies.remove('uid');
//$cookies.remove('ukey');
}
state.userInfo = Object.assign({}, default_user_info);
state.userName = state.userInfo.user_nickname;
state.hasLogin = false;
//IM
state.getMsg = {};
state.adduser = {};
state.addgroup = {};
state.msgboxuser = '';
state.msgboxgroup = '';
state.userstate = ''; ///用户状态
state.chatTolist = {}; ///当前聊天对话的里面是聊天的对象和
state.currentChatPuid = '';
try {
uni.closeSocket();
} catch (s) {}
if (payload) {
uni.switchTab({
url: '/pages/index/member',
});
// $.toLogin(state.forcedLoginState);
}
},
forceUserInfo(state, callback) {
var that = this;
//记录来源页面
var pages = getCurrentPages();
var page = pages[pages.length - 1];
//page.route != 'pagesub/login/login' && page.route != 'pages/index/member'
if (page.route.indexOf('/login/') != -1) {
uni.setStorageSync('pre_route', page.route);
if (page.options) {
uni.setStorageSync('pre_options', page.options);
}
}
if (!state.hasLogin) {
if (state.forcedLoginState) {
$.toLogin(true);
} else {
// #ifdef MP-WEIXIN
// #endif
// $loginPopup({show:true})
// this.commit("setShowLoginPopup",true);
// $.showModal({
// title: Lang.__('未登录'),
// content: Lang.__('您未登录,需要登录后才能继续'),
// /**
// * 如果需要强制登录,不显示取消按钮
// */
// showCancel: !state.forcedLoginState,
// success: (res) => {
// if (res.confirm) {
// /**
// * 如果需要强制登录使用reLaunch方式
// */
// $.toLogin(state.forcedLoginState);
// }
// else{
// uni.navigateBack();
// }
// }
// });
}
} else {
//判断当前用户是否存在,不存在读取?
callback &&
callback($.isEmptyObject(state.userInfo) ? null : state.userInfo);
}
},
setUserInfo: function (state, payload) {
state.userInfo = Object.assign(state.userInfo, payload);
},
getUserInfo(state, callback) {
callback &&
callback($.isEmptyObject(state.userInfo) ? null : state.userInfo);
},
//读取APP信息平台 or 店铺)
getStoreInfo: function (state, payload) {
var that = this;
var store_id = payload.store_id;
let force_refresh = true;
if (typeof payload.force_refresh == 'undefined') {
force_refresh = true;
}
//读取APP信息平台 or 店铺)
$.request({
url: state.Config.URL.store.info,
data: { action: 'intro', store_id: store_id },
loading: false,
ajaxCache: {
timeout: Config.CACHE_EXPIRE,
forceRefresh: force_refresh,
},
success: function (data, status, msg, code) {
//data.
state.shopInfo = {
ChannelCode: '1217898988',
IsChannel: false,
store_id: data.base.store_id,
user_id: data.base.user_id,
//"Id": 5854,
store_name: data.base.store_name,
store_grade_id: data.base.store_grade_id,
store_grade_name: data.base.store_grade_name,
CompanyName: data.company.company_name,
LegalNumber: data.info.store_tel,
WapLogoPath: data.base.store_logo,
VendorInfo: data.company.company_description || '', //店铺公告
LegalAdress: data.base.store_address,
AllProduct: data.analytics.store_product_num,
store_slogan: data.base.store_slogan || '', //店铺公告
BusinessTime: null,
NewProduct: data.analytics.store_product_new_num,
BackGroundPath: data.info.store_banner,
LegalPerson: data.company.contacts_name,
store_latitude: data.base.store_latitude,
store_longitude: data.base.store_longitude,
rows: 10,
IsDistribution: false,
Level1Discount: 0,
Level2Discount: 0,
ValidDays: 0,
PromotionRule: null, //活动信息
RuleEnabled: false,
VendorFeatureSet: '',
ShopConfig: {
AppIconPath:
'https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/',
},
store_star_num: data.analytics.store_evaluation_num
? (data.analytics.store_deliverycredit +
data.analytics.store_deliverycredit +
data.analytics.store_deliverycredit) /
3 /
data.analytics.store_evaluation_num
: 5,
analytics: data.analytics,
info: data.info,
base: data.base,
company: data.company,
im_enable: data.info.im_chat,
};
if (state.shopInfo.im_enable) {
state.shopInfo.im_user_id = data.base.user_id;
state.shopInfo.puid = data.info.puid;
} else {
state.shopInfo.im_user_id = data.base.user_id;
state.shopInfo.puid = '';
}
state.shopInfo.imgPath = state.shopInfo.ShopConfig.AppIconPath;
payload.callback && payload.callback(state.shopInfo);
},
fail: function (err) {},
});
},
//读取门店信息
getChainInfo: function (state, payload) {
var that = this;
var chain_id = payload.chain_id;
//读取门店信息
$.request({
url: state.Config.URL.store.getChain,
data: { action: 'intro', chain_id: chain_id },
loading: false,
ajaxCache: {
timeout: Config.CACHE_EXPIRE,
},
success: function (data, status, msg, code) {
//data.
state.chainInfo = data;
payload.callback && payload.callback(state.chainInfo);
},
fail: function (err) {},
});
},
setPlantformInfo: function (state, payload) {
state.plantformInfo = Object.assign(state.plantformInfo, payload);
state.Config = Object.assign(state.Config, state.plantformInfo);
},
getPlantformInfo: function (state, callback) {
callback && callback(state.plantformInfo);
return state.plantformInfo;
},
setDistrictTree: function (state, payload) {
state.districtTree = payload;
},
getDistrictTree: function (state, callback) {
callback && callback(state.districtTree);
return state.districtTree;
},
//用户中心资料
reloadUserResource: function (state, callback) {
$.request({
url: Config.URL.user.overview,
data: { action: 'reload' },
loading: false,
success: function (data, status, msg, code) {
if (status == 200) {
let userInfo = Object.assign(state.userInfo, data.member_info);
state.userInfo = userInfo;
callback && callback(state.userInfo);
} else {
callback && callback(state.userInfo);
}
},
});
},
setCartList: function (state, payload) {
state.cartList = payload;
},
getCartList(state, callback) {
callback && callback(state.cartList);
},
setCartMap: function (state, payload) {
state.cartMap = payload;
},
getCartMap(state, callback) {
callback && callback(state.cartMap);
},
setCartNum(state, payload) {
if ($.isObject(payload)) {
if (payload.type == 'add') {
state.cartNum = state.cartNum + payload.num;
} else {
state.cartNum = state.cartNum - payload.num;
}
} else {
state.cartNum = payload;
}
},
showCartNum(state, payload) {
try {
var pages = getCurrentPages();
var page = pages[pages.length - 1];
let url = page.route;
try {
if (Config.tabBar.list instanceof Array || true) {
var n = false;
for (var r = 0; r < Config.tabBar.list.length; r++) {
if (!n) {
var i = Config.tabBar.list[r];
i.pagePath == url ? (n = true) : (n = false);
}
}
if (n && null !== CART_INDEX) {
if (state.cartNum > 0) {
uni.setTabBarBadge({
index: CART_INDEX,
text: state.cartNum + '',
});
} else {
state.cartNum = 0;
uni.removeTabBarBadge({
index: CART_INDEX,
});
}
}
} else {
}
} catch (s) {}
} catch (e) {}
},
setMsgNum(state, payload) {
if ($.isObject(payload)) {
if (payload.type == 'add') {
state.newMsgNum = state.newMsgNum + payload.num;
} else {
state.newMsgNum = state.newMsgNum - payload.num;
}
} else {
state.newMsgNum = payload;
}
if (null !== MSG_INDEX) {
if (state.newMsgNum > 0) {
uni.setTabBarBadge({
index: MSG_INDEX,
text: state.newMsgNum + '',
});
} else {
state.newMsgNum = 0;
uni.removeTabBarBadge({
index: MSG_INDEX,
});
}
}
},
//start im
setCurrentMsg(state, provider) {
provider.type = provider.type;
state.getMsg = provider;
///存储最后一句话
},
setmsgboxuser(state, provider) {
state.msgboxuser = provider;
},
setmsgboxgroup(state, provider) {
state.msgboxgroup = provider;
},
addChater(state, provider) {
let nowDate = new Date();
if (provider.type == 'user' || provider.type == 'friend') {
state.chatTolist['user' + provider.val] = provider.data;
state.chatTolist['user' + provider.val]['weidu'] = 0;
state.chatTolist['user' + provider.val]['lasttime'] =
nowDate.getHours() + ':' + nowDate.getMinutes();
} else {
state.chatTolist['group' + provider.val] = provider.data;
state.chatTolist['group' + provider.val]['weidu'] = 0;
state.chatTolist['group' + provider.val]['lasttime'] =
nowDate.getHours() + ':' + nowDate.getMinutes();
}
//
let msg_num = 0;
for (let tmp_key in state.chatTolist) {
msg_num = msg_num + state.chatTolist[tmp_key]['weidu'];
}
this.commit('setMsgNum', msg_num);
},
updateFriendlist(state, provider) {
state.adduser = provider;
state.userInfo.data.friend['usercharacter' + provider.firstchrater].list[
'user' + provider.id
] = provider;
},
updateGrouplist(state, provider) {
state.addgroup = provider;
state.userInfo.data.group['group' + provider.id] = provider;
},
resetWeidu(state, provider) {
if (provider.type == 'user' || provider.type == 'friend') {
state.chatTolist['user' + provider.val]['weidu'] = 0;
} else {
state.chatTolist['group' + provider.val]['weidu'] = 0;
}
//
let msg_num = 0;
for (let tmp_key in state.chatTolist) {
msg_num = msg_num + state.chatTolist[tmp_key]['weidu'];
}
this.commit('setMsgNum', msg_num);
},
setFriendstue(state, provider) {
if (typeof state.chatTolist['user' + provider.val] == 'undefined') {
} else {
state.chatTolist['user' + provider.val]['status'] = provider.data; ///将状态设置为在线
}
state.userInfo.data.friend['usercharacter' + provider.character].list[
'user' + provider.val
]['status'] = provider.data;
state.userstate = 'setFriendstue' + provider.val + provider.data;
},
////更新某个回话的最后聊天内容
updateChaterAttr(state, provider) {
let nowDate = new Date();
if (provider.type == 'user' || provider.type == 'friend') {
console.info(provider);
if (typeof state.chatTolist['user' + provider.val] == 'undefined') {
this.commit('addChater', {
data: provider.addinfo,
type: 'user',
val: provider.addinfo.id,
});
}
state.chatTolist['user' + provider.val][provider.attr] = provider.data;
state.chatTolist['user' + provider.val]['weidu']++;
state.chatTolist['user' + provider.val]['lasttime'] =
nowDate.getHours() + ':' + nowDate.getMinutes();
} else {
if (typeof state.chatTolist['group' + provider.val] == 'undefined') {
this.commit('addChater', {
data: provider.addinfo,
type: 'group',
val: provider.addinfo.id,
});
}
state.chatTolist['group' + provider.val][provider.attr] = provider.data;
state.chatTolist['group' + provider.val]['weidu']++;
state.chatTolist['group' + provider.val]['lasttime'] =
nowDate.getHours() + ':' + nowDate.getMinutes();
}
//
let msg_num = 0;
for (let tmp_key in state.chatTolist) {
msg_num = msg_num + state.chatTolist[tmp_key]['weidu'];
}
this.commit('setMsgNum', msg_num);
},
////更新某个回话的最后聊天内容
setCurrentPuid(state, puid) {
state.currentChatPuid = puid;
},
//end im
//start music
SET_HISROTY(state, val) {
if (state.historyList.indexOf(val) == -1) {
state.historyList.unshift(val);
$.setStorageSync('HISTORY', state.historyList);
}
},
CLEAR_HISTORY(state) {
state.historyList = [];
$.setStorageSync('HISTORY', []);
},
SET_PLAY_INFO(state, playInfo) {
state.playInfo = playInfo;
$.setStorageSync('PLAY_INFO', playInfo);
},
SET_PASUED(state, paused) {
state.paused = paused;
},
//end music
},
getters: {
currentdilog: (state, getters) => {
return state.chatTolist;
},
hasLogin: (state, getters) => {
return state.hasLogin;
},
userinfo: (state, getters) => {
return state.userInfo;
},
},
actions: {
async getUserInfo({ state, commit }, callback) {
await $.request({
url: Config.URL.userInfo,
loading: false,
success: function (data, status, msg, code) {
commit('setUserInfo', data);
callback && callback(state.userInfo);
},
});
},
async getSysInfo({ state, commit }, callback) {
var that = this;
console.info(31);
//读取APP信息平台 or 店铺)
await $.request({
url: Config.URL.info,
data: {
action: 'intro',
source_ucc_code: $.getStorageSync('source_ucc_code'),
},
loading: false,
/*
ajaxCache: {
timeout: Config.CACHE_EXPIRE
},
*/
success: function (data, status, msg, code) {
(data = Object.assign(data, data.config)),
(data.hall_b2b_enable = data.config.hall_b2b_enable);
state.plantformInfo = Object.assign(state.plantformInfo, data);
//state.plantformInfo['versionNumber'] = '2.01';
//修改配置信息
Config.MULTISHOP_ENABLE = data.config.multishop_enable;
Config.EVALUATION_ENABLE = data.config.evaluation_enable;
Config.SAAS_STATUS = data.config.saas_status;
Config.VIRTUAL_ENABLE = data.config.virtual_enable;
Config.O2O_ENABLE = data.config.o2o_enable;
Config.CHAIN_ENABLE = data.config.chain_enable;
Config.POINTS_VAUE_RATE = data.config.points_vaue_rate;
Config.SP_VAUE_RATE = data.config.sp_vaue_rate;
Config.PLANTFORM_FX_ENABLE = data.config.plantform_fx_enable;
Config.STORE_FX_ENABLE = data.config.store_fx_enable;
Config.PLANTFORM_SP_PRIZE_ENABLE =
data.config.plantform_sp_prize_enable;
Config.PLANTFORM_FX_AGENT_ENABLE =
data.config.plantform_fx_agent_enable;
Config.PLANTFORM_FX_PT_ENABLE = data.config.plantform_fx_pt_enable;
Config.PLANTFORM_FX_WESTORE_ENABLE =
data.config.plantform_fx_westore_enable;
Config.PLANTFORM_DELIVERY_TIME_ENABLE =
data.config.plantform_delivery_time_enable;
Config.STORE_SUPPLIER_ENABLE = data.config.store_supplier_enable;
Config.PAOTUI_ENABLE = data.config.paotui_enable;
Config.USERSTOCK_ENABLE = data.config.userstock_enable;
Config.ORDERCONFIRM_ENABLE = data.config.orderconfirm_enable;
Config.MARKETORDER_ENABLE = data.config.marketorder_enable;
Config.PLANTFORM_REBATE_ENABLE = data.config.plantform_rebate_enable;
Config.REDPACKET_ENABLE = data.config.redpacket_enable;
Config.CREDIT_ENABLE = data.config.credit_enable;
Config.POINT_ENABLE = data.config.point_enable;
Config.SP_ENABLE = data.config.sp_enable;
Config.EXCHANGECARD_ENABLE = data.config.exchangecard_enable;
Config.MONEY_TRANSFER_ENABLE = data.config.money_transfer_enable;
Config.SNS_ENABLE = data.config.sns_enable;
Config.IM_ENABLE = data.config.im_enable;
Config.SUBSITE_ENABLE = data.config.subsite_enable;
Config.FORCE_BIND_MOBILE = data.config.force_bind_mobile;
Config.PLANTFORM_DELIVERY_TIME_ENABLE =
data.config.delivery_time_enable;
Config.PLANTFORM_USER_LEVEL_RATE_ENABLE =
data.config.user_level_rate_enable;
Config.LANG_ENABLE = data.config.multilang_enable;
Config.B2B_FLAG = data.config.b2b_flag;
Config.PRODUCT_SALENUM_FLAG = data.config.product_salenum_flag;
Config.PRODUCT_ZITI_FLAG = data.config.product_ziti_flag;
Config.CACHE_EXPIRE = data.config.cache_expire;
Config.CACHE = data.config.cache;
commit('setPlantformInfo', data);
callback && callback(state.plantformInfo);
},
fail: function (err) {
$.showModal({
title: Lang.__('提示'),
content: Lang.__('网络异常,请重试'),
showCancel: false,
success: (res) => {
if (res.confirm) {
that.dispatch(`getSysInfo`, callback);
} else if (res.cancel) {
that.dispatch(`getSysInfo`, callback);
}
},
});
},
});
},
async getDistrictTree({ state, commit }, callback) {
var that = this;
if (state.districtTree != null) {
callback && callback(state.districtTree);
return;
}
//读取APP信息平台 or 店铺)
await $.request({
url: Config.URL.getDistrictTree,
data: {},
loading: false,
ajaxCache: {
timeout: Config.CACHE_EXPIRE,
},
success: function (data, status, msg, code) {
state.districtTree = data;
commit('setDistrictTree', data);
callback && callback(state.districtTree);
},
fail: function (err) {
$.showModal({
title: Lang.__('提示'),
content: Lang.__('网络异常,请重试'),
showCancel: false,
success: (res) => {
if (res.confirm) {
that.dispatch(`getDistrictTree`, callback);
} else if (res.cancel) {
that.dispatch(`getDistrictTree`, callback);
}
},
});
},
});
},
//start cart
// 获取购物车信息
async getCartList({ state, commit }, callback) {
let that = this;
let param = {};
//发送购物车请求
await $.request({
url: Config.URL.cart.lists,
method: 'GET',
data: param,
loading: false,
success: function (data, status, msg) {
let cartMap = {};
if (status == 250) {
uni.showToast({
title: 'shop/userCart/lists' + msg,
icon: 'error',
duration: 1000,
});
return;
}
//循环所有店铺
if (!$.isNull(data.items) && data.items.length > 0) {
let total = 0;
for (var store_item_index in data.items) {
var i = 0;
var cart_items = data.items[store_item_index].items;
for (var item in cart_items) {
//按照item计算 i
if (cart_items[item].cart_select) {
i = i + cart_items[item].cart_quantity;
}
if (typeof cartMap[cart_items[item].item_id] == 'undefined') {
cartMap[cart_items[item].item_id] = {};
}
cartMap[cart_items[item].item_id]['cart_id'] =
cart_items[item].cart_id;
cartMap[cart_items[item].item_id]['quantity'] =
cart_items[item].cart_quantity;
}
total = total + i;
}
data.Total = total;
}
commit('setCartList', data.items);
commit('setCartMap', cartMap);
commit('setCartNum', data.Total);
commit('showCartNum');
callback && callback(data);
},
fail: function (data) {
$.alert('网络异常请重试!');
callback && callback(null);
},
});
},
async addCart({ state, commit }, provider) {
let that = this;
await $.request({
url: Config.URL.cart.add,
method: 'POST',
data: provider.params,
loading: false,
success: (data, status, msg, code) => {
console.log(status);
if (status == 200) {
commit('setCartNum', {
type: provider.params.cart_quantity > 0 ? 'add' : 'sub',
num: parseInt(provider.params.cart_quantity),
});
provider.callback && provider.callback(data, status, msg, code);
} else {
// $.alert(msg);
$.alert('点击太快了');
}
},
fail: (err) => {
$.alert(Lang.__('网络异常,请重试'));
},
});
},
async editCartQuantity({ state, commit }, provider) {
let that = this;
await $.request({
url: Config.URL.cart.quantity,
method: 'POST',
data: provider.params,
loading: false,
success: (data, status, msg, code) => {
if (status == 200) {
commit('setCartNum', {
type: 'add',
num: parseInt(provider.params.cart_quantity),
});
provider.callback && provider.callback(data, status, msg, code);
} else {
$.alert(msg);
}
},
fail: (err) => {
$.alert(Lang.__('网络异常,请重试'));
},
});
},
//end cart
//start music
addHistoryList({ commit }, val) {
commit('SET_HISROTY', val);
},
clearHistoryList({ commit }) {
commit('CLEAR_HISTORY');
},
changePlay({ state, commit, dispatch }, count) {
if (audio.audiolist.length == 1) {
audio.operate(0);
commit('SET_PASUED', false);
return;
}
audio.changeplay(count);
let playIndex = audio.audiolist.findIndex(
(item) => item.id == state.playInfo.id
);
let tempIndex = -1;
if (count === 1) {
//下一首
if (playIndex == audio.audiolist.length - 1) {
tempIndex = 0;
} else {
tempIndex = playIndex + 1;
}
} else {
if (playIndex == 0) {
tempIndex = audio.audiolist.length - 1;
} else {
tempIndex = playIndex - 1;
}
}
dispatch('playMusic', audio.audiolist[tempIndex]);
},
//从对应歌曲列表中删除 当前歌曲
removeMusic({ state, commit }, val) {
let audioList = [...audio.audiolist];
let index = audioList.findIndex((item) => item.id == val.id);
audioList.splice(index, 1);
audio.setAudio(audioList);
$.setStorageSync('PLAY_LIST', audioList);
if (audioList.length == 0) {
commit('SET_PASUED', true);
commit('SET_PLAY_INFO', {});
}
},
//播放全部
async playAllMUsic({ state, commit }, list) {
//const data = await getMusic(list[0].id);
const data = list[0];
list[0].src = data.url;
audio.setAudio(list);
$.setStorageSync('PLAY_LIST', list);
audio.operate(0);
commit('SET_PLAY_INFO', list[0]);
commit('SET_PASUED', false);
},
//点击播放
async playMusic({ state, commit }, val) {
let audioList = [...audio.audiolist];
let index = audioList.findIndex((item) => item.id === val.id);
//如果当前播放列表不存在当前音乐
if (index === -1) {
//const data = await getMusic(val.id);
const data = val;
val.src = data.url;
let playIndex = 0;
if (state.playInfo) {
playIndex = audioList.findIndex(
(item) => item.id == state.playInfo.id
);
}
audioList.splice(playIndex + 1, 0, val);
audio.setAudio(audioList);
$.setStorageSync('PLAY_LIST', audioList);
audio.operate(playIndex === -1 ? 0 : playIndex + 1);
commit('SET_PLAY_INFO', val);
commit('SET_PASUED', false);
} else {
//如果不存在src
if (!val.src) {
//const data = await getMusic(val.id);
const data = val;
val.src = data.url;
audioList[index] = val;
audio.setAudio(audioList);
$.setStorageSync('PLAY_LIST', audioList);
} else {
//val.src = `https://music.163.com/song/media/outer/url?id=${val.id}.mp3`;
}
audio.operate(index);
commit('SET_PLAY_INFO', audioList[index]);
commit('SET_PASUED', false);
}
},
//end music
},
});
const getMusic = (id) => {
return new Promise(async (resolve, reject) => {
/*
let res = await getMusicUrl({
id: id,
});
*/
let res = {
data: [
{
url: 'http://lancerdt.oss-accelerate.aliyuncs.com/mall/images/media/store/1001/20220510/6b80db5feb09416c95706ee88b0620ef.mp3',
},
],
};
let musicList = res.data || [];
if (musicList.length > 0) {
resolve(musicList[0]);
} else {
uni.showToast({
title: '暂无该音乐版权',
icon: 'none',
duration: 2000,
});
reject();
}
});
};
export default store;