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.

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