/** * 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 }