model.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import consts from '@/consts'
  2. import { queryCompilationList, queryProvinceList } from '@/services/product'
  3. import { roadpricingEnum } from './index'
  4. export default {
  5. namespace: 'cloud',
  6. state: {
  7. compilation: {
  8. [roadpricingEnum.BUILDING]: [],
  9. [roadpricingEnum.CURING]: [],
  10. [roadpricingEnum.GS]: [],
  11. [roadpricingEnum.HIGHWAY]: []
  12. },
  13. province: {
  14. [roadpricingEnum.BUILDING]: [],
  15. [roadpricingEnum.CURING]: [],
  16. [roadpricingEnum.GS]: [],
  17. [roadpricingEnum.HIGHWAY]: []
  18. }
  19. },
  20. effects: {
  21. *fetchCompilation({ payload }, { call, put }) {
  22. const response = yield call(queryCompilationList, payload)
  23. if (response && response.code === consts.RET_CODE.SUCCESS) {
  24. yield put({
  25. type: 'changeCompilationState',
  26. payload: {
  27. key: payload?.projectPype,
  28. data: response.data
  29. }
  30. })
  31. }
  32. },
  33. *fetchProvince({ payload }, { call, put }) {
  34. const response = yield call(queryProvinceList, payload)
  35. if (response && response.code === consts.RET_CODE.SUCCESS) {
  36. yield put({
  37. type: 'changeProvinceState',
  38. payload: {
  39. key: payload?.projectPype,
  40. data: response.data.map((item, idx) => ({ label: item, value: idx + 1 }))
  41. }
  42. })
  43. }
  44. }
  45. },
  46. reducers: {
  47. changeCompilationState(state, action) {
  48. return {
  49. ...state,
  50. compilation: { ...state.compilation, [action.payload.key]: action.payload.data }
  51. }
  52. },
  53. changeProvinceState(state, action) {
  54. return {
  55. ...state,
  56. province: { ...state.province, [action.payload.key]: action.payload.data }
  57. }
  58. }
  59. }
  60. }