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 { uni.showModal({ title: '友情提示', content: msg }); // $.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;