food/src/store/index.js
air 607ab15cf9 【类 型】:feat
【原  因】:飞行数据传到服务器
【过  程】:订阅飞机状态时候 检测到解锁 就记录飞行数据 切换到加锁之后  将数据长传   数据包括 加解锁时间戳 使用电量 经纬高 飞行距离
【影  响】:

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
2025-06-14 18:37:59 +08:00

1051 lines
35 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 router from '@/router'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'
import api from '@/utils/api'
import { Message, MessageBox, Notification } from 'element-ui'
// 把vuex作为插件引入到Vue示例中 ps:注册
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
shopList: [], // 商铺列表
adminList: [], // 管理员列表
airList: [], // 所有飞机列表
siteList: [], // 站点列表
routeList: [], // 航线列表
noflyData: [], // 禁飞区数据
categoryList: [], // 分类列表(小程序)
spuList: [], // 商品spu列表
skuList: [], // 商品sku列表
paidOrderList: [], // 已付款 和已退款但是发货状态为 已发货 订单列表
logList: [], // 操作日志列表
messageList: [], // 管理员公告列表
crosFrequency: null// 对频macadd
},
mutations: {
/**
* @description: 设置商铺列表
*/
setShopList (state, list) {
state.shopList = list
},
/**
* @description: 设置管理员列表
*/
setAdminList (state, list) {
state.adminList = list
},
/**
* @description: 设置飞机列表
*/
setAirList (state, list) {
state.airList = list
},
/**
* @description:更新飞机的 parameterValue
*/
updateParameterValue (state, { planeId, parameterValue }) {
const plane = state.airList.find(plane => plane.id === planeId) // 根据 planeId 查找飞机
if (plane) {
plane.planeState.parameterValue = parameterValue // 更新 parameterValue
}
},
/**
* @description: 设置站点列表
*/
setSiteList (state, list) {
state.siteList = list
},
/**
* @description: 设置航线列表
*/
setRouteList (state, list) {
state.routeList = list
},
/**
* @description: 设置禁飞区列表
*/
setNoflyData (state, data) {
state.noflyData = data
},
/**
* @description: 设置分类列表
*/
setCategoryList (state, list) {
state.categoryList = list
},
/**
* @description: 设置商品spu列表
*/
setSpuList (state, list) {
state.spuList = list
},
/**
* @description: 设置商品sku列表
*/
setSkuList (state, list) {
state.skuList = list
},
/**
* @description: 设置 已付款 和已退款但是发货状态为 已发货 订单列表
*/
setPaidOrderList (state, list) {
state.paidOrderList = list
},
/**
* @description: 向操作日志列表最后插入新的信息
* @param {*} logData
*/
insertNewLog (state, logData) {
state.logList.push(logData)
},
/**
* @description: 向管理员公告列表最后插入新的信息
* @param {*} list
*/
setMessageList (state, list) {
state.messageList = list
},
/**
* @description: 登记对频信息
*/
setCrosFrequency (state, macAdd) {
state.crosFrequency = macAdd
}
},
actions: {
/**
* @description: 获取商铺列表
*/
async fetchShopList ({ commit }) {
const res = await api.get('getShopList', 'Admin')
if (res.data.status === 1) {
res.data.shopList.forEach((shop, index) => {
shop.remark_presup = JSON.parse(shop.remark_presup)// 反序列化 remark_presup字段
shop.refund_remark_presup = JSON.parse(shop.refund_remark_presup)// 反序列化 refund_remark_presup字段
shop.logo = JSON.parse(shop.logo)// 反序列化 photo字段
shop.logo.forEach((logo, i) => {
res.data.shopList[index].logo[i] = settings.state.logoPath + logo // 把绝对路径加上
})
})
commit('setShopList', res.data.shopList)
} else {
commit('setShopList', [])
Message.error(res.data.msg)
}
},
/**
* @description: 添加商铺
* @param {*} 商铺信息表单
* @return {*} 服务器返回值
*/
async fetchAddShop ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('name', form.name)
params.append('waiter', form.waiter)
params.append('service_wx', form.service_wx)
params.append('tel', form.tel)
params.append('email', form.email)
params.append('price_min', form.price_min)
params.append('weight_max', form.weight_max)
params.append('default_transport_price', form.default_transport_price)
params.append('default_pack_price', form.default_pack_price)
params.append('remark_presup', JSON.stringify(form.remark_presup))
params.append('refund_remark_presup', JSON.stringify(form.refund_remark_presup))
params.append('desc', form.desc)
params.append('upFile', form.upFile)
params.append('opening_time', form.opening_time)
params.append('closeing_time', form.closeing_time)
const res = await api.post('addShop', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchShopList')// 刷新商铺列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新管商铺信息
* @param {*} 商铺信息表单
* @return {*} 服务器返回值
*/
async fetchSaveShop ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('waiter', form.waiter)
params.append('service_wx', form.service_wx)
params.append('tel', form.tel)
params.append('email', form.email)
params.append('price_min', form.price_min)
params.append('weight_max', form.weight_max)
params.append('default_transport_price', form.default_transport_price)
params.append('default_pack_price', form.default_pack_price)
params.append('remark_presup', JSON.stringify(form.remark_presup))
params.append('refund_remark_presup', JSON.stringify(form.refund_remark_presup))
params.append('desc', form.desc)
params.append('upFile', form.upFile)
params.append('oldFile', form.oldFile)
params.append('opening_time', form.opening_time)
params.append('closeing_time', form.closeing_time)
const res = await api.post('saveShop', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchShopList')// 刷新商铺列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 获取管理员列表
*/
async fetchAdminList ({ commit }) {
const res = await api.get('getAdminList', 'Admin')
if (res.data.status === 1) {
res.data.adminList.forEach((item, index) => {
// 判断如果是当前登录用户 最后登录时间字段 从本地缓存中获取 PS:既登陆前缓存到本地的“最后登陆时间” 因为登录后 服务端会把当前登录的时间刷到lasttime字段
if (item.shop_id === store.state.user.shop_id) {
item.lasttime = store.state.user.lasttime
}
// 头像字段反序列化
item.photo = JSON.parse(item.photo)// 反序列化 photo字段
item.photo.forEach((photo, i) => {
res.data.adminList[index].photo[i] = settings.state.photoPath + photo // 把绝对路径加上
})
})
commit('setAdminList', res.data.adminList)
} else {
commit('setAdminList', [])
Message.error(res.data.msg)
}
},
/**
* @description: 添加新的管理员
* @param {*} 管理员信息表单
* @return {*} 服务器返回值
*/
async fetchAddAdmin ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('name', form.name)
params.append('uname', form.uname)
params.append('pwd', form.pwd)
params.append('shop_id', form.shop_id)
params.append('upFile', form.upFile)
const res = await api.post('addAdmin', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchAdminList')// 刷新用户列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新管理员账号信息
* @param {*} 管理员信息表单
* @return {*} 服务器返回值
*/
async fetchSaveAdmin ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('id', form.id)
params.append('shop_id', form.shop_id)
params.append('uname', form.uname)
params.append('pwd', form.pwd)
params.append('upFile', form.upFile)
params.append('oldFile', form.oldFile)
const res = await api.post('saveAdmin', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchAdminList')// 刷新用户列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除账号
* @param {*} 多选id组
*/
async fetchDelAdmin ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteAdmin', params, 'Admin').then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchAdminList')// 刷新管理员列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取飞机列表
*/
async fetchAirList ({ commit, state }) {
const res = await api.get('getAirList')
res.data.airList.forEach(plane => {
plane.planeState = { // 飞机状态初始化字段
flyDataMark: false, // 飞机解锁标记成真
flyDataSave: { // 飞机加锁截至 待上传飞行数据之后 再清空此值
startTime: null, // 解锁时的时间戳(秒)
endTime: null, // 加锁时的时间戳(秒)
startBattery: null, // 解锁时的电池电量(百分比)
endBattery: null, // 加锁时的电池电量(百分比)
path: [] // 飞行路径数组,每项是 [lon, lat, alt]
},
heartBeat: null, // 心跳
heartRandom: null, // 每次接收到心跳创建一个随机数 用于watch监听
voltagBattery: null, // 电压信息
currentBattery: null, // 电流信息
batteryRemaining: null, // 电池电量
positionAlt: null, // 海拔高度信息
groundSpeed: null, // 对地速度
satCount: null, // 卫星数量
fixType: null, // 定位状态
completionPct: 0, // 磁罗盘校准进度
reportCal: null, // 磁罗盘校准结果
questState: 1, // 飞机状态 默认初始状态为1
acceState: null, // 加速度计校准状态
getPlaneMode: null, // 飞机模式
loadweight: null, // 重量
hookstatus: null, // 钩子状态
position: [], // [[经度,维度,相对高度]]累计数组
battCapacity: null, // 电池容量
homePosition: null, // 返航点位置
wpnavSpeed: null, // 飞机返航速度 米/秒
parameterValue: null// 请求的参数键值对 需要序列化
}
})
if (res.data.status === 1) {
commit('setAirList', res.data.airList)
} else {
commit('setAirList', [])
Message.warning(res.data.msg)
}
return res.data.airList
},
/**
* @description: 创建新飞机
* @param {*} form 表单.飞机信息
* @return {*} 服务器返回信息
*/
async fetchAddAir ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('date', form.date)
if (form.onoff) {
params.append('onoff', '1')
} else {
params.append('onoff', '0')
}
params.append('weight_max', form.weight_max)
params.append('desc', form.desc)
const res = await api.post('addAir', params)
if (res.data.status === 1) {
await dispatch('fetchAirList')// 刷新飞机列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新新飞机数据
* @param {*} form 表单.飞机信息
* @return {*} 服务器返回信息
*/
async fetchSaveAir ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('date', form.date)
if (form.onoff) {
params.append('onoff', '1')
} else {
params.append('onoff', '0')
}
params.append('weight_max', form.weight_max)
params.append('desc', form.desc)
params.append('id', form.id)
const res = await api.post('saveAir', params)
if (res.data.status === 1) {
await dispatch('fetchAirList')// 刷新飞机列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除指定序号飞机
* @param {*} idArray 飞机序号数组
*/
fetchDelAir ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteAir', params).then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchAirList')// 刷新飞机列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取站点列表
*/
async fetchSiteList ({ commit }) {
const res = await api.get('getSiteList')
if (res.data.status === 1) {
res.data.siteList.forEach((site, index) => {
site.qr = settings.state.qrPath + site.qr // 把绝对路径加上
})
commit('setSiteList', res.data.siteList)
} else {
commit('setSiteList', [])
Message.warning(res.data.msg)
}
},
/**
* @description: 创建新站点
* @param {*} form 表单.站点信息
* @return {*} 服务器返回信息
*/
async fetchAddSite ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('sitename', form.sitename)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
params.append('size', form.size)
params.append('bindroute', form.bindroute)
const res = await api.post('addSite', params)
if (res.data.status === 1) {
await dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchPaidOrderList')// 刷订单点列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 创建新站点
* @param {*} form 表单.站点信息
* @return {*} 服务器返回信息
*/
async fetchSaveSite ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('id', form.id)
params.append('shop_id', form.shop_id)
params.append('sitename', form.sitename)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
params.append('size', form.size)
params.append('bindroute', form.bindroute)
const res = await api.post('saveSite', params)
if (res.data.status === 1) {
await dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchPaidOrderList')// 刷订单点列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除指定序号站点
* @param {*} idArray 站点序号数组
*/
fetchDelSite ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteSite', params).then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchPaidOrderList')// 刷订单点列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取航线列表
*/
async fetchRouteList ({ commit }) {
const res = await api.get('getRouteList')
if (res.data.status === 1) {
commit('setRouteList', res.data.routeList)
} else {
commit('setRouteList', [])
Message.warning(res.data.msg)
}
return res.data.routeList
},
/**
* @description: 创建新航线
* @param {*} form 表单.航线信息
* @return {*} 服务器返回信息
*/
async fetchAddRoute ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
const res = await api.post('addRoute', params)
if (res.data.status === 1) {
await dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchPaidOrderList')// 刷订单点列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新航线
* @param {*} form 表单.航线信息
* @return {*} 服务器返回信息
*/
async fetchSaveRoute ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('id', form.id)
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
const res = await api.post('saveRoute', params)
if (res.data.status === 1) {
await dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchPaidOrderList')// 刷订单点列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除指定序号航线
* @param {*} idArray 航线序号数组
*/
fetchDelRoute ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteRoute', params).then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchRouteList')// 刷新航线列表
dispatch('fetchSiteList')// 刷新站点列表
dispatch('fetchPaidOrderList')// 刷订单点列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取禁飞区数据
*/
async fetchNoflyData ({ commit }) {
const res = await api.get('getNoflyData')
if (res.data.status === 1) {
commit('setNoflyData', res.data.noflyData)
} else {
commit('setNoflyData', {})
Message.warning(res.data.msg)
}
return res.data.routeData
},
/**
* @description: 获取分类列表
* @return {*} 列表
*/
async fetchCategoryList ({ commit }) {
const res = await api.get('getCategoryList', 'Admin')
if (res.data.status === 1) {
res.data.categoryList.forEach((category, index) => {
category.photo = JSON.parse(category.photo)// 反序列化 photo字段
category.photo.forEach((photo, i) => {
res.data.categoryList[index].photo[i] = settings.state.listPath + photo // 把绝对路径加上
})
})
commit('setCategoryList', res.data.categoryList)
} else {
commit('setCategoryList', [])
}
return res
},
/**
* @description: 添加分类信息
* @param {*} 分类信息表单
* @return {*} 服务器返回值
*/
async fetchAddCategory ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('id', form.id)
params.append('path', form.path)
params.append('name', form.name)
params.append('sort', form.sort)
params.append('show', form.show)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
const res = await api.post('addCategory', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchCategoryList')// 刷新商铺列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新分类信息
* @param {*} 分类信息表单
* @return {*} 服务器返回值
*/
async fetchSaveCategory ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('id', form.id)
params.append('name', form.name)
params.append('sort', form.sort)
params.append('show', form.show)
params.append('desc', form.desc)
params.append('upFile', form.upFile)
params.append('oldFile', form.oldFile)
const res = await api.post('saveCategory', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchCategoryList')// 刷新商铺列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除账号
* @param {*} 多选id组
*/
// eslint-disable-next-line camelcase
async fetchDelCategory ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('delIdArr', form.delIdArr)
params.append('shop_id', form.shop_id)
api.post('deleteCategory', params, 'Admin').then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchCategoryList')// 刷新分类列表
} else {
Message.error(res.data.msg)
}
})
},
/**
* @description: 获取商品spu列表
* @return {*} 列表
*/
async fetchSpuList ({ commit }) {
const res = await api.get('getSpuList', 'Admin')
if (res.data.status === 1) {
res.data.spuList.forEach((spu, index) => {
spu.pro_tag = JSON.parse(spu.pro_tag)// 反序列化 pro_tag字段
spu.bind_sku = JSON.parse(spu.bind_sku)// 反序列化 bind_sku字段
spu.photo = JSON.parse(spu.photo)// 反序列化 photo字段
spu.photo.forEach((photo, i) => {
res.data.spuList[index].photo[i] = settings.state.spuPath + photo // 把绝对路径加上
})
})
commit('setSpuList', res.data.spuList)
} else {
commit('setSpuList', [])
}
return res
},
/**
* @description: spu排序
* @param {*} spu信息
*/
async fetchOrderSpu ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('id', form.id)
params.append('sort', form.sort)
const res = await api.post('orderSpu', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSpuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 商品前端显示隐藏
* @param {*} 商品信息
*/
async fetchShowSpu ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('id', form.id)
params.append('show', form.show)
const res = await api.post('showSpu', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSpuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 商品前端推荐位
* @param {*} 商品信息
*/
async fetchRecommendSpu ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('id', form.id)
params.append('recommend', form.recommend)
const res = await api.post('recommendSpu', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSpuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 添加商品 spu
* @param {*} form 表单.商品信息
* @return {*} 服务器返回信息
*/
async fetchAddSpu ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('path', form.path)
params.append('name', form.name)
params.append('spu_number', form.spu_number)
params.append('sort', form.sort)
params.append('hot', form.hot)
params.append('pro_tag', JSON.stringify(form.pro_tag))
params.append('bind_sku', JSON.stringify(form.bind_sku))
params.append('upFile', form.upFile)
if (form.recommend) {
params.append('recommend', '1')
} else {
params.append('recommend', '0')
}
if (form.show) {
params.append('show', '1')
} else {
params.append('show', '0')
}
const res = await api.post('addSpu', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSpuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新商品 spu
* @param {*} form 表单.商品信息
* @return {*} 服务器返回信息
*/
async fetchSaveSpu ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('id', form.id)
params.append('shop_id', form.shop_id)
params.append('path', form.path)
params.append('name', form.name)
params.append('spu_number', form.spu_number)
params.append('sort', form.sort)
params.append('hot', form.hot)
params.append('pro_tag', JSON.stringify(form.pro_tag))
params.append('bind_sku', JSON.stringify(form.bind_sku))
params.append('oldFile', form.oldFile)
params.append('upFile', form.upFile)
if (form.recommend) {
params.append('recommend', '1')
} else {
params.append('recommend', '0')
}
if (form.show) {
params.append('show', '1')
} else {
params.append('show', '0')
}
const res = await api.post('saveSpu', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSpuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除spu
* @param {*} 多选id组
*/
async fetchDelSpu ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteSpu', params, 'Admin').then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchSpuList')// 刷新列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取商品sku列表
* @return {*} 列表
*/
async fetchSkuList ({ commit }) {
const res = await api.get('getSkuList', 'Admin')
if (res.data.status === 1) {
res.data.skuList.forEach((sku, index) => {
sku.photo = JSON.parse(sku.photo)// 反序列化 photo字段
sku.photo.forEach((photo, i) => {
res.data.skuList[index].photo[i] = settings.state.skuPath + photo // 把绝对路径加上
})
})
commit('setSkuList', res.data.skuList)
} else {
commit('setSkuList', [])
}
return res
},
/**
* @description: 添加商品 sku
* @param {*} form 表单.商品信息
* @return {*} 服务器返回信息
*/
async fetchAddSku ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('sku_number', form.sku_number)
params.append('price', form.price)
params.append('unit', form.unit)
params.append('weight', form.weight)
params.append('stock', form.stock)
params.append('purchase_channel', form.purchase_channel)
params.append('upFile', form.upFile)
const res = await api.post('addSku', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSkuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 更新商品 sku
* @param {*} form 表单.商品信息
* @return {*} 服务器返回信息
*/
async fetchSaveSku ({ dispatch }, form) {
const params = new URLSearchParams()
params.append('id', form.id)
params.append('shop_id', form.shop_id)
params.append('name', form.name)
params.append('sku_number', form.sku_number)
params.append('price', form.price)
params.append('unit', form.unit)
params.append('weight', form.weight)
params.append('stock', form.stock)
params.append('purchase_channel', form.purchase_channel)
params.append('oldFile', form.oldFile)
params.append('upFile', form.upFile)
const res = await api.post('saveSku', params, 'Admin')
if (res.data.status === 1) {
await dispatch('fetchSkuList')// 刷新商品列表
Message.success(res.data.msg)
} else {
Message.error(res.data.msg)
}
return res
},
/**
* @description: 删除sku
* @param {*} 多选id组
*/
async fetchDelSku ({ dispatch }, idArr) {
if (idArr.length === 0) {
Message.error('未勾选记录')
} else {
MessageBox.confirm('请谨慎操作 确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = new URLSearchParams()
params.append('idArr', idArr)
api.post('deleteSku', params, 'Admin').then(res => {
if (res.data.status === 1) {
Message.success(res.data.msg)
dispatch('fetchSkuList')// 刷新列表
} else {
Message.error(res.data.msg)
}
})
}).catch(() => {
Message.info('取消操作')
})
}
},
/**
* @description: 获取已付款 和已退款但是发货状态为 已发货 订单列表
* @return {*} 列表
*/
async fetchPaidOrderList ({ commit }) {
const res = await api.get('getPaidOrderList', 'Admin')
if (res.data.status === 1) {
const list = res.data.paidOrderList
list.forEach((item, index) => { // 拿到订单列表数据 直接把订单列表数据反序列化
if (item.product_snapshot !== '') {
list[index].product_snapshot = JSON.parse(item.product_snapshot)
}
})
commit('setPaidOrderList', list)
} else {
commit('setPaidOrderList', [])
}
return res
},
/**
* @description: 异步获取管理员消息列表 成功获取之后 弹出通知框 显示列表
*/
async fetchMessageList ({ commit }) {
const res = await api.get('getMessageList', 'Admin')
if (res.data.status === 1) {
const list = res.data.messageList || []
commit('setMessageList', list)
// 每条通知之间延迟 800ms显示时间为 8000ms
list.forEach((item, index) => {
setTimeout(() => {
Notification({
title: item.tit || '通知',
message: item.message || '',
duration: 8000, // 显示时间 8 秒
type: 'info' // 可选类型: success / warning / error / info
})
}, index * 800)
})
} else {
Message.error(res.data.msg || '获取消息失败')
commit('setMessageList', [])
}
return res
},
/**
* @description: 向操作日志插入信息 并在积攒多条之后 向服务器提交
* @param {logData} content 日志内容 logData.color 时间
* @param {logData} color 标点颜色 默认#409EFF
* @param {logData} timestamp 插入时间 默认当前时间
*/
fetchLog ({ commit }, logData) {
/* 插入日志 */
logData.color = typeof logData.color !== 'undefined' ? logData.color : '#409EFF'
logData.timestamp = typeof logData.timestamp !== 'undefined' ? logData.color : new Date().getTime()
commit('insertNewLog', logData)
/* 积攒 向服务器提交 日志 待续写... */
}
},
modules: {
app,
settings,
user
},
getters: {
}
})
export default store