You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.9 KiB

5 months ago
5 months ago
5 months ago
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import user from '@/store/modules/user'
  4. import getters from './getters'
  5. import { getConfigList } from '@/api/system/configList'
  6. import { getPersonalInfo } from "@/api/system/personal.js"
  7. Vue.use(Vuex)
  8. const store = new Vuex.Store({
  9. state : {
  10. price_config : {},
  11. configList : {},
  12. configMap : {},
  13. position : {},//用户选择的定位信息
  14. buyInfo : {
  15. teacher : null,//用户选择的购买老师
  16. },//用户选择的购买信息
  17. userInfo : {},//用户信息
  18. //会员泽口
  19. memberRate : 1,
  20. //技师等级规则列表
  21. teacherLevelList : [],
  22. //新人优惠劵
  23. NewUserCoupon : {},
  24. },
  25. mutations : {
  26. // 初始化配置
  27. initConfig(state) {
  28. const price_config = uni.getStorageSync('price_config')
  29. if(price_config){
  30. state.price_config = price_config
  31. }
  32. const teacherLevelList = uni.getStorageSync('teacherLevelList')
  33. if(teacherLevelList){
  34. state.teacherLevelList = teacherLevelList
  35. }
  36. getConfigList().then(res => {
  37. const configList = {
  38. ...state.configList,
  39. }
  40. state.teacherLevelList = []
  41. res.forEach(n => {
  42. configList[n.paramCode] = n.paramValueText;
  43. configList[n.paramCode + '_keyValue'] = n.keyValue;
  44. state.configMap[n.paramCode] = n;
  45. if(n.paramCode == 'price_config'){
  46. state.price_config = JSON.parse(n.paramValueText)
  47. uni.setStorageSync('price_config', state.price_config)
  48. }
  49. if(n.paramClass == 'order_mall'){
  50. state.teacherLevelList.push(n)
  51. }
  52. });
  53. uni.setStorageSync('teacherLevelList', state.teacherLevelList)
  54. console.log('state.teacherLevelList', state.teacherLevelList)
  55. state.configList = configList
  56. uni.$emit('initConfig', state.configList)
  57. })
  58. },
  59. setPosition(state, position){
  60. state.position = position;
  61. },
  62. setUserInfo(state, userInfo){
  63. state.userInfo = userInfo;
  64. },
  65. setNewUserCoupon(state, coupon){
  66. state.NewUserCoupon = coupon
  67. },
  68. getUserInfo(state){
  69. getPersonalInfo().then(res=>{
  70. if(res&&(res.id || res.id === 0)){
  71. state.userInfo = res;
  72. let memberDiscountKey = ['', 'new', 'regular', 'silver', 'gold']
  73. let key = memberDiscountKey[res.levelKey]
  74. if (state.price_config && key) {
  75. state.memberRate = state.price_config.memberDiscount[key] || 1
  76. }
  77. }
  78. })
  79. },
  80. },
  81. modules: {
  82. user
  83. },
  84. getters
  85. })
  86. export default store