daShangDao_miniProgram/store/modules/price.js
2026-06-15 16:37:57 +08:00

139 lines
3.0 KiB
JavaScript

/**
* Vuex Price Module - 价格配置状态管理
* @module store/modules/price
*
* 用于管理图书上传/克隆时的价格调整配置
*/
// 从本地存储获取初始状态
const getPriceInitialState = () => {
return {
// 价格调整模式
// 1: 折扣模式(按百分比调整)
// 2: 加减值模式(按固定金额调整)
// 3: 指定金额模式(直接设置价格)
priceMode: parseInt(uni.getStorageSync('current1') || '1'),
// 价格类型(用于不同场景的价格策略)
priceType: parseInt(uni.getStorageSync('current2') || '1'),
// 均价范围(用于计算参考价格时的范围)
averageRange: parseInt(uni.getStorageSync('averageRange') || '3'),
// 运费设置
freight: parseFloat(uni.getStorageSync('value3') || '0'),
// 最低价格限制
minValue: parseFloat(uni.getStorageSync('value4') || '0.01')
}
}
const state = getPriceInitialState()
const mutations = {
/**
* 更新价格模式
* @param {Number} mode - 价格模式 (1=折扣, 2=加减值, 3=指定金额)
*/
updatePriceMode(state, mode) {
state.priceMode = mode
uni.setStorageSync('current1', mode)
},
/**
* 更新价格类型
* @param {Number} type - 价格类型
*/
updatePriceType(state, type) {
state.priceType = type
uni.setStorageSync('current2', type)
},
/**
* 更新均价范围
* @param {Number} range - 均价范围
*/
updateAverageRange(state, range) {
state.averageRange = range
uni.setStorageSync('averageRange', range)
},
/**
* 更新运费
* @param {Number} value - 运费金额
*/
updateFreight(state, value) {
state.freight = value
uni.setStorageSync('value3', value)
},
/**
* 更新最低价格
* @param {Number} value - 最低价格
*/
updateMinValue(state, value) {
state.minValue = value
uni.setStorageSync('value4', value)
},
/**
* 重置所有价格配置
*/
resetPriceConfig(state) {
state.priceMode = 1
state.priceType = 1
state.averageRange = 3
state.freight = 0
state.minValue = 0.01
uni.removeStorageSync('current1')
uni.removeStorageSync('current2')
uni.removeStorageSync('averageRange')
uni.removeStorageSync('value3')
uni.removeStorageSync('value4')
}
}
const getters = {
/**
* 获取当前价格模式
*/
priceMode: state => state.priceMode,
/**
* 获取当前价格类型
*/
priceType: state => state.priceType,
/**
* 获取均价范围
*/
averageRange: state => state.averageRange,
/**
* 获取运费设置
*/
freight: state => state.freight,
/**
* 获取最低价格限制
*/
minValue: state => state.minValue,
/**
* 获取完整价格配置对象
*/
priceConfig: state => ({
mode: state.priceMode,
type: state.priceType,
averageRange: state.averageRange,
freight: state.freight,
minValue: state.minValue
})
}
export default {
namespaced: true,
state,
mutations,
getters
}