util.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import { PageConfigProperty } from '@/components/DiyEditor/components/mobile/PageConfig/config'
  2. import { NavigationBarProperty } from '@/components/DiyEditor/components/mobile/NavigationBar/config'
  3. import { TabBarProperty } from '@/components/DiyEditor/components/mobile/TabBar/config'
  4. // 页面装修组件
  5. export interface DiyComponent<T> {
  6. // 用于区分同一种组件的不同实例
  7. uid?: number
  8. // 组件唯一标识
  9. id: string
  10. // 组件名称
  11. name: string
  12. // 组件图标
  13. icon: string
  14. /*
  15. 组件位置:
  16. top: 固定于手机顶部,例如 顶部的导航栏
  17. bottom: 固定于手机底部,例如 底部的菜单导航栏
  18. center: 位于手机中心,每个组件占一行,顺序向下排列
  19. 空:同center
  20. fixed: 由组件自己决定位置,如弹窗位于手机中心、浮动按钮一般位于手机右下角
  21. */
  22. position?: 'top' | 'bottom' | 'center' | '' | 'fixed'
  23. // 组件属性
  24. property: T
  25. }
  26. // 页面装修组件库
  27. export interface DiyComponentLibrary {
  28. // 组件库名称
  29. name: string
  30. // 是否展开
  31. extended: boolean
  32. // 组件列表
  33. components: string[]
  34. }
  35. // 组件样式
  36. export interface ComponentStyle {
  37. // 背景类型
  38. bgType: 'color' | 'img'
  39. // 背景颜色
  40. bgColor: string
  41. // 背景图片
  42. bgImg: string
  43. // 外边距
  44. margin: number
  45. marginTop: number
  46. marginRight: number
  47. marginBottom: number
  48. marginLeft: number
  49. // 内边距
  50. padding: number
  51. paddingTop: number
  52. paddingRight: number
  53. paddingBottom: number
  54. paddingLeft: number
  55. // 边框圆角
  56. borderRadius: number
  57. borderTopLeftRadius: number
  58. borderTopRightRadius: number
  59. borderBottomRightRadius: number
  60. borderBottomLeftRadius: number
  61. }
  62. // 页面配置
  63. export interface PageConfig {
  64. // 页面属性
  65. page: PageConfigProperty
  66. // 顶部导航栏属性
  67. navigationBar: NavigationBarProperty
  68. // 底部导航菜单属性
  69. tabBar?: TabBarProperty
  70. // 页面组件列表
  71. components: PageComponent[]
  72. }
  73. // 页面组件,只保留组件ID,组件属性
  74. export interface PageComponent extends Pick<DiyComponent<any>, 'id' | 'property'> {}
  75. // 页面组件库
  76. export const PAGE_LIBS = [
  77. {
  78. name: '基础组件',
  79. extended: true,
  80. components: [
  81. 'SearchBar',
  82. 'NoticeBar',
  83. 'MenuSwiper',
  84. 'MenuGrid',
  85. 'MenuList',
  86. 'Popover',
  87. 'FloatingActionButton'
  88. ]
  89. },
  90. {
  91. name: '图文组件',
  92. extended: true,
  93. components: [
  94. 'ImageBar',
  95. 'Carousel',
  96. 'TitleBar',
  97. 'VideoPlayer',
  98. 'Divider',
  99. 'MagicCube',
  100. 'HotZone'
  101. ]
  102. },
  103. { name: '商品组件', extended: true, components: ['ProductCard', 'ProductList'] },
  104. {
  105. name: '用户组件',
  106. extended: true,
  107. components: ['UserCard', 'UserOrder', 'UserWallet', 'UserCoupon']
  108. },
  109. {
  110. name: '营销组件',
  111. extended: true,
  112. components: [
  113. 'PromotionCombination',
  114. 'PromotionSeckill',
  115. 'PromotionPoint',
  116. 'CouponCard',
  117. 'PromotionArticle'
  118. ]
  119. }
  120. ] as DiyComponentLibrary[]