layout.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { LookDomType, UserTableListType } from '@/types'
  2. import { MessageType } from '@/utils/message'
  3. type DownImgType = {
  4. 可见: '可见' | '不可见'
  5. 图片: '原图和缩略图' | '缩略图'
  6. }
  7. export type ExInfoType = {
  8. name: string
  9. show: boolean
  10. arr: { key: string; txt: string }[]
  11. data: any[]
  12. }
  13. // 初始化状态
  14. const initState = {
  15. // 所有图片点击预览查看大图
  16. lookBigImg: {
  17. url: '',
  18. show: false
  19. },
  20. // 查看视频、音频、模型
  21. lookDom: {
  22. src: '',
  23. type: ''
  24. } as LookDomType,
  25. // antd轻提示(兼容360浏览器)
  26. message: {
  27. txt: '',
  28. type: 'info',
  29. duration: 3
  30. } as MessageType,
  31. // 上传文件点击取消
  32. closeUpFile: {
  33. fu: () => {},
  34. state: false
  35. },
  36. // 用户信息
  37. userInfo: {} as UserTableListType,
  38. // 修改密码
  39. passEditShow: false,
  40. // 下载图片的权限
  41. downImg: {
  42. 可见: '不可见',
  43. 图片: '缩略图'
  44. } as DownImgType,
  45. // 批量导出
  46. exInfo: {} as ExInfoType
  47. }
  48. // 定义 action 类型
  49. type LayoutActionType =
  50. | { type: 'layout/lookBigImg'; payload: { url: string; show: boolean } }
  51. | { type: 'layout/lookDom'; payload: LookDomType }
  52. | { type: 'layout/message'; payload: MessageType }
  53. | {
  54. type: 'layout/closeUpFile'
  55. payload: {
  56. fu: () => void
  57. state: boolean
  58. }
  59. }
  60. | { type: 'layout/userInfo'; payload: UserTableListType }
  61. | { type: 'layout/passEditShow'; payload: boolean }
  62. | { type: 'layout/downImg'; payload: DownImgType }
  63. | { type: 'layout/exInfo'; payload: ExInfoType }
  64. // 频道 reducer
  65. export default function layoutReducer(state = initState, action: LayoutActionType) {
  66. switch (action.type) {
  67. // 所有图片点击预览查看大图
  68. case 'layout/lookBigImg':
  69. return { ...state, lookBigImg: action.payload }
  70. // 查看视频
  71. case 'layout/lookDom':
  72. return { ...state, lookDom: action.payload }
  73. // antd轻提示(兼容360浏览器)
  74. case 'layout/message':
  75. return { ...state, message: action.payload }
  76. // 上传文件点击取消
  77. case 'layout/closeUpFile':
  78. return { ...state, closeUpFile: action.payload }
  79. // 设置用户信息
  80. case 'layout/userInfo':
  81. return { ...state, userInfo: action.payload }
  82. // 修改密码
  83. case 'layout/passEditShow':
  84. return { ...state, passEditShow: action.payload }
  85. // 下载图片的权限
  86. case 'layout/downImg':
  87. return { ...state, downImg: action.payload }
  88. // 批量导出
  89. case 'layout/exInfo':
  90. return { ...state, exInfo: action.payload }
  91. default:
  92. return state
  93. }
  94. }