@cloudbase/weda-ui 0.2.17 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/README.md +3 -0
  2. package/package.json +10 -5
  3. package/src/configs/components/button.json +0 -2
  4. package/src/configs/components/calendar.json +9 -3
  5. package/src/configs/components/carousel.json +18 -9
  6. package/src/configs/components/chart/bar.json +31 -12
  7. package/src/configs/components/chart/line.json +27 -10
  8. package/src/configs/components/chart/pie.json +22 -8
  9. package/src/configs/components/chart/statisticsCard.json +61 -13
  10. package/src/configs/components/container.json +7 -2
  11. package/src/configs/components/dataView.json +31 -11
  12. package/src/configs/components/form/checkbox.json +97 -5
  13. package/src/configs/components/form/radio.json +123 -4
  14. package/src/configs/components/form/select.json +247 -13
  15. package/src/configs/components/graphicCard.json +90 -75
  16. package/src/configs/components/image.json +19 -8
  17. package/src/configs/components/link.json +25 -6
  18. package/src/configs/components/listView.json +83 -27
  19. package/src/configs/components/lottery.json +153 -0
  20. package/src/configs/components/modal.json +37 -5
  21. package/src/configs/components/navLayout.json +97 -79
  22. package/src/configs/components/navigationBar.json +59 -0
  23. package/src/configs/components/richtextview.json +6 -2
  24. package/src/configs/components/scrollVeiw.json +98 -34
  25. package/src/configs/components/swiper.json +22 -10
  26. package/src/configs/components/tabs.json +54 -9
  27. package/src/configs/components/text.json +43 -30
  28. package/src/configs/components/wxOpenApi/phone.json +141 -0
  29. package/src/configs/components/wxOpenApi/phoneCode.json +121 -0
  30. package/src/configs/components/wxOpenApi/share.json +167 -0
  31. package/src/configs/components/wxOpenApi/userInfo.json +174 -0
  32. package/src/configs/index.js +13 -0
  33. package/src/docs/common/format.tsx +112 -0
  34. package/src/docs/common/tableView.css +164 -0
  35. package/src/docs/common/tableView.tsx +273 -0
  36. package/src/docs/compsdocs/chart/Bar.mdx +159 -0
  37. package/src/docs/compsdocs/chart/Line.mdx +100 -0
  38. package/src/docs/compsdocs/chart/Pie.mdx +83 -0
  39. package/src/docs/compsdocs/chart/_category_.json +1 -0
  40. package/src/docs/compsdocs/chart/statisticsCard.mdx +51 -0
  41. package/src/docs/compsdocs/database/DataView.mdx +33 -0
  42. package/src/docs/compsdocs/database/ListView.mdx +33 -0
  43. package/src/docs/compsdocs/database/_category_.json +1 -0
  44. package/src/docs/compsdocs/form/Form.mdx +35 -0
  45. package/src/docs/compsdocs/form/FormCheckbox.mdx +35 -0
  46. package/src/docs/compsdocs/form/FormDate.mdx +30 -0
  47. package/src/docs/compsdocs/form/FormEmail.mdx +30 -0
  48. package/src/docs/compsdocs/form/FormImageUploader.mdx +31 -0
  49. package/src/docs/compsdocs/form/FormInput.mdx +30 -0
  50. package/src/docs/compsdocs/form/FormLocation.mdx +64 -0
  51. package/src/docs/compsdocs/form/FormPhone.mdx +30 -0
  52. package/src/docs/compsdocs/form/FormRadio.mdx +35 -0
  53. package/src/docs/compsdocs/form/FormRegion.mdx +30 -0
  54. package/src/docs/compsdocs/form/FormSelect.mdx +36 -0
  55. package/src/docs/compsdocs/form/FormSwitch.mdx +30 -0
  56. package/src/docs/compsdocs/form/FormTextarea.mdx +30 -0
  57. package/src/docs/compsdocs/form/FormTime.mdx +30 -0
  58. package/src/docs/compsdocs/form/FormUploadFile.mdx +30 -0
  59. package/src/docs/compsdocs/form/FormUrl.mdx +30 -0
  60. package/src/docs/compsdocs/form/_category_.json +1 -0
  61. package/src/docs/compsdocs/grid/Card.mdx +32 -0
  62. package/src/docs/compsdocs/grid/Container.mdx +42 -0
  63. package/src/docs/compsdocs/grid/Footer.mdx +31 -0
  64. package/src/docs/compsdocs/grid/GridLayout.mdx +32 -0
  65. package/src/docs/compsdocs/grid/Header.mdx +31 -0
  66. package/src/docs/compsdocs/grid/Layout.mdx +25 -0
  67. package/src/docs/compsdocs/grid/List.mdx +31 -0
  68. package/src/docs/compsdocs/grid/ScrollView.mdx +37 -0
  69. package/src/docs/compsdocs/grid/Swiper.mdx +58 -0
  70. package/src/docs/compsdocs/grid/_category_.json +1 -0
  71. package/src/docs/compsdocs/media/Icon.mdx +31 -0
  72. package/src/docs/compsdocs/media/Image.mdx +55 -0
  73. package/src/docs/compsdocs/media/_category_.json +1 -0
  74. package/src/docs/compsdocs/model/ModelCreate.mdx +20 -0
  75. package/src/docs/compsdocs/model/ModelDetail.mdx +20 -0
  76. package/src/docs/compsdocs/model/ModelTable.mdx +24 -0
  77. package/src/docs/compsdocs/model/ModelUpdate.mdx +21 -0
  78. package/src/docs/compsdocs/model/PageLayout.mdx +21 -0
  79. package/src/docs/compsdocs/model/_category_.json +1 -0
  80. package/src/docs/compsdocs/navmenu/Classification.mdx +38 -0
  81. package/src/docs/compsdocs/navmenu/NavBar.mdx +43 -0
  82. package/src/docs/compsdocs/navmenu/NavLayout.mdx +30 -0
  83. package/src/docs/compsdocs/navmenu/TabBar.mdx +43 -0
  84. package/src/docs/compsdocs/navmenu/TabBarItem.mdx +29 -0
  85. package/src/docs/compsdocs/navmenu/_category_.json +1 -0
  86. package/src/docs/compsdocs/senior/Lottery.mdx +48 -0
  87. package/src/docs/compsdocs/senior/Modal.mdx +58 -0
  88. package/src/docs/compsdocs/senior/SlotMachine.mdx +52 -0
  89. package/src/docs/compsdocs/senior/_category_.json +1 -0
  90. package/src/docs/compsdocs/show/Calendar.mdx +29 -0
  91. package/src/docs/compsdocs/show/Divider.mdx +31 -0
  92. package/src/docs/compsdocs/show/GraphicCard.mdx +30 -0
  93. package/src/docs/compsdocs/show/Item.mdx +32 -0
  94. package/src/docs/compsdocs/show/ItemList.mdx +47 -0
  95. package/src/docs/compsdocs/show/Media.mdx +25 -0
  96. package/src/docs/compsdocs/show/StatusTip.mdx +25 -0
  97. package/src/docs/compsdocs/show/Swiper.mdx +33 -0
  98. package/src/docs/compsdocs/show/Tabs.mdx +38 -0
  99. package/src/docs/compsdocs/show/_category_.json +1 -0
  100. package/src/docs/compsdocs/show/button.mdx +25 -0
  101. package/src/docs/compsdocs/text/Link.mdx +43 -0
  102. package/src/docs/compsdocs/text/RichTextView.mdx +36 -0
  103. package/src/docs/compsdocs/text/Text.mdx +31 -0
  104. package/src/docs/compsdocs/text/Title.mdx +32 -0
  105. package/src/docs/compsdocs/text/_category_.json +1 -0
  106. package/src/docs/compsdocs/wxOpen/Phone.mdx +60 -0
  107. package/src/docs/compsdocs/wxOpen/Share.mdx +46 -0
  108. package/src/docs/compsdocs/wxOpen/UserInfo.mdx +60 -0
  109. package/src/docs/compsdocs/wxOpen/_category_.json +4 -0
  110. package/src/index.js +2 -0
  111. package/src/mp/components/button/index.js +18 -2
  112. package/src/mp/components/button/index.wxml +7 -4
  113. package/src/mp/components/chart/bar/index.js +6 -2
  114. package/src/mp/components/chart/common/core/eChartBar.js +9 -8
  115. package/src/mp/components/chart/common/core/eChartBase.js +20 -16
  116. package/src/mp/components/chart/common/core/eChartLine.js +6 -5
  117. package/src/mp/components/chart/line/index.js +10 -6
  118. package/src/mp/components/chart/pie/index.js +6 -2
  119. package/src/mp/components/chart/statisticsCard/index.js +33 -6
  120. package/src/mp/components/dataView/index.json +1 -1
  121. package/src/mp/components/form/checkbox/index.js +41 -2
  122. package/src/mp/components/form/checkbox/index.wxml +1 -1
  123. package/src/mp/components/form/form/index.wxml +1 -2
  124. package/src/mp/components/form/formcell/index.wxml +1 -1
  125. package/src/mp/components/form/formcell/index.wxss +17 -0
  126. package/src/mp/components/form/input/index.js +1 -1
  127. package/src/mp/components/form/input/index.wxss +15 -0
  128. package/src/mp/components/form/location/index.js +43 -2
  129. package/src/mp/components/form/location/index.wxss +4 -6
  130. package/src/mp/components/form/radio/index.js +34 -1
  131. package/src/mp/components/form/select/index.js +351 -41
  132. package/src/mp/components/form/select/index.wxml +17 -2
  133. package/src/mp/components/form/select/index.wxss +4 -0
  134. package/src/mp/components/form/select/region/index.js +101 -0
  135. package/src/mp/components/form/textarea/index.js +1 -1
  136. package/src/mp/components/form/textarea/index.wxss +4 -0
  137. package/src/mp/components/form/uploader/index.js +39 -27
  138. package/src/mp/components/form/uploader/index.json +3 -2
  139. package/src/mp/components/form/uploader/index.wxml +11 -7
  140. package/src/mp/components/form/uploader/index.wxss +20 -2
  141. package/src/mp/components/form/uploader/weui-uploader.js +209 -0
  142. package/src/mp/components/form/uploader/weui-uploader.json +7 -0
  143. package/src/mp/components/form/uploader/weui-uploader.wxml +45 -0
  144. package/src/mp/components/form/uploader/weui-uploader.wxss +1 -0
  145. package/src/mp/components/form/uploaderFile/index.js +10 -6
  146. package/src/mp/components/form/uploaderFile/index.wxss +4 -4
  147. package/src/mp/components/image/index.wxss +3 -2
  148. package/src/mp/components/listView/index.js +38 -43
  149. package/src/mp/components/listView/index.wxml +1 -1
  150. package/src/mp/components/listView/index.wxss +5 -0
  151. package/src/mp/components/lottery/index.js +270 -0
  152. package/src/mp/components/{internals/listView → lottery}/index.json +0 -0
  153. package/src/mp/components/lottery/index.wxml +43 -0
  154. package/src/mp/components/lottery/index.wxss +317 -0
  155. package/src/mp/components/navigationBar/index.js +193 -0
  156. package/src/mp/components/navigationBar/index.json +6 -0
  157. package/src/mp/components/navigationBar/index.wxml +88 -0
  158. package/src/mp/components/navigationBar/index.wxss +1257 -0
  159. package/src/mp/components/tabs/index.js +7 -2
  160. package/src/mp/components/tabs/index.wxml +2 -1
  161. package/src/mp/components/text/index.js +0 -25
  162. package/src/mp/components/text/index.wxml +3 -3
  163. package/src/mp/components/wxOpenApi/phone/index.js +117 -0
  164. package/src/mp/components/wxOpenApi/phone/index.json +4 -0
  165. package/src/mp/components/wxOpenApi/phone/index.wxml +15 -0
  166. package/src/mp/components/wxOpenApi/phone/index.wxss +22 -0
  167. package/src/mp/components/wxOpenApi/phoneCode/index.js +89 -0
  168. package/src/mp/components/wxOpenApi/phoneCode/index.json +4 -0
  169. package/src/mp/components/wxOpenApi/phoneCode/index.wxml +15 -0
  170. package/src/mp/components/wxOpenApi/phoneCode/index.wxss +22 -0
  171. package/src/mp/components/wxOpenApi/share/index.js +117 -0
  172. package/src/mp/components/wxOpenApi/share/index.json +4 -0
  173. package/src/mp/components/wxOpenApi/share/index.wxml +15 -0
  174. package/src/mp/components/wxOpenApi/share/index.wxss +22 -0
  175. package/src/mp/components/wxOpenApi/userInfo/index.js +88 -0
  176. package/src/mp/components/wxOpenApi/userInfo/index.json +4 -0
  177. package/src/mp/components/wxOpenApi/userInfo/index.wxml +14 -0
  178. package/src/mp/components/wxOpenApi/userInfo/index.wxss +22 -0
  179. package/src/mp/index.json +7 -1
  180. package/src/mp/style/weda-ui.wxss +16 -0
  181. package/src/mp/utils/constant.js +15 -0
  182. package/src/mp/utils/destr.js +48 -0
  183. package/src/mp/utils/lodash.js +2 -0
  184. package/src/mp/utils/platform.js +10 -0
  185. package/src/mp/utils/tcb.js +44 -0
  186. package/src/web/components/button/index.css +8 -1
  187. package/src/web/components/button/index.tsx +10 -9
  188. package/src/web/components/calendar/index.jsx +1 -1
  189. package/src/web/components/carousel/index.tsx +8 -8
  190. package/src/web/components/chart/bar/index.tsx +40 -39
  191. package/src/web/components/chart/common/config/line.js +1 -1
  192. package/src/web/components/chart/common/core/eChartBar.js +7 -6
  193. package/src/web/components/chart/common/core/eChartBase.ts +20 -16
  194. package/src/web/components/chart/common/core/eChartLine.js +8 -6
  195. package/src/web/components/chart/line/index.tsx +40 -39
  196. package/src/web/components/chart/statisticsCard/index.tsx +29 -8
  197. package/src/web/components/form/checkbox/index.tsx +61 -23
  198. package/src/web/components/form/form/index.css +5 -1
  199. package/src/web/components/form/form/index.tsx +3 -1
  200. package/src/web/components/form/formcell/index.css +22 -1
  201. package/src/web/components/form/formcell/index.tsx +11 -6
  202. package/src/web/components/form/input/index.css +7 -12
  203. package/src/web/components/form/location/components/LocationH5/index.css +4 -7
  204. package/src/web/components/form/location/components/LocationH5/location.h5.jsx +1 -1
  205. package/src/web/components/form/radio/index.tsx +90 -53
  206. package/src/web/components/form/select/h5.tsx +370 -73
  207. package/src/web/components/form/select/index.css +15 -0
  208. package/src/web/components/form/select/index.tsx +392 -145
  209. package/src/web/components/form/select/region/index.ts +122 -31
  210. package/src/web/components/form/select/time.jsx +89 -0
  211. package/src/web/components/form/select/year.tsx +170 -0
  212. package/src/web/components/form/textarea/index.css +4 -0
  213. package/src/web/components/form/textarea/index.tsx +2 -2
  214. package/src/web/components/form/tips/index.css +4 -0
  215. package/src/web/components/form/tips/index.tsx +4 -3
  216. package/src/web/components/form/uploader/index.css +26 -2
  217. package/src/web/components/form/uploader/uploader.h5.tsx +89 -57
  218. package/src/web/components/form/uploader/uploader.pc.tsx +4 -4
  219. package/src/web/components/form/uploaderFile/index.css +2 -4
  220. package/src/web/components/form/uploaderFile/uploadFile.h5.tsx +13 -7
  221. package/src/web/components/form/uploaderFile/uploadFile.pc.tsx +13 -5
  222. package/src/web/components/image/image.tsx +1 -1
  223. package/src/web/components/image/index.css +3 -3
  224. package/src/web/components/image/index.tsx +6 -7
  225. package/src/web/components/index.js +8 -0
  226. package/src/web/components/link/index.tsx +7 -4
  227. package/src/web/components/listView/index.css +4 -0
  228. package/src/web/components/listView/index.tsx +12 -20
  229. package/src/web/components/lottery/index.css +327 -0
  230. package/src/web/components/lottery/index.tsx +567 -0
  231. package/src/web/components/lottery/lotteryUtil.ts +130 -0
  232. package/src/web/components/modal/index.tsx +3 -1
  233. package/src/web/components/navLayout/index.tsx +2 -2
  234. package/src/web/components/navigationBar/chevron-right--double.svg +3 -0
  235. package/src/web/components/navigationBar/common.tsx +198 -0
  236. package/src/web/components/navigationBar/h5Menu.tsx +179 -0
  237. package/src/web/components/navigationBar/horizontalMenu.tsx +200 -0
  238. package/src/web/components/navigationBar/index.css +762 -0
  239. package/src/web/components/navigationBar/index.tsx +230 -0
  240. package/src/web/components/navigationBar/type.d.ts +111 -0
  241. package/src/web/components/navigationBar/verticalMenu.tsx +81 -0
  242. package/src/web/components/phone/index.css +0 -0
  243. package/src/web/components/phone/index.tsx +22 -0
  244. package/src/web/components/phoneCode/index.css +0 -0
  245. package/src/web/components/phoneCode/index.tsx +22 -0
  246. package/src/web/components/picker/timePicker.tsx +2 -2
  247. package/src/web/components/richTextView/index.tsx +3 -5
  248. package/src/web/components/share/index.css +0 -0
  249. package/src/web/components/share/index.tsx +38 -0
  250. package/src/web/components/slot/index.tsx +1 -1
  251. package/src/web/components/tabs/index.tsx +2 -0
  252. package/src/web/components/tabs/tabs.h5.tsx +43 -33
  253. package/src/web/components/tabs/tabs.pc.tsx +23 -10
  254. package/src/web/components/text/index.tsx +12 -20
  255. package/src/web/components/userInfo/index.css +0 -0
  256. package/src/web/components/userInfo/index.tsx +30 -0
  257. package/src/web/utils/{constant.js → constant.ts} +17 -2
  258. package/src/web/utils/lodash.ts +2 -0
  259. package/src/web/utils/platform.js +9 -0
  260. package/src/web/utils/tcb.js +26 -0
  261. package/src/web/weda-ui.css +7 -1
  262. package/src/mp/components/internals/listView/arrow-right-line.svg +0 -3
  263. package/src/mp/components/internals/listView/index.js +0 -286
  264. package/src/mp/components/internals/listView/index.wxml +0 -40
  265. package/src/mp/components/internals/listView/index.wxss +0 -150
  266. package/src/mp/components/internals/listView/more-line.svg +0 -3
  267. package/src/web/components/form/select/region/cities.ts +0 -2410
  268. package/src/web/components/form/select/region/provinces.ts +0 -240
  269. package/src/web/components/form/select/region/regions.ts +0 -20645
@@ -1,17 +1,6 @@
1
- const isNull = (val) => [undefined, null].includes(val);
2
- const REL_DICT = {
3
- equal: 'eq', // 等于
4
- unequal: 'neq', // 不等于
5
- include: 'search', // 包含
6
- exclude: '_exclude', // 不包含
7
- begin_with: '_begin_with', // 开头是
8
- greater: 'gt', // 大于
9
- greater_or_equal: 'gte', // 大于等于
10
- less: 'lt', // 小于
11
- less_or_equal: 'lte', // 小于等于
12
- in: 'in', // 多选值
13
- not_in: 'nin', // 不在多选值
14
- };
1
+ import { REL_DICT } from '../../utils/constant';
2
+ import { isNil } from '../../utils/lodash';
3
+
15
4
  const ORDERTYPE = ['asc', 'desc'];
16
5
  const getWhereList = (where) => {
17
6
  let result = [];
@@ -28,7 +17,7 @@ const getWhereList = (where) => {
28
17
  rel = 'regex';
29
18
  val = `^((?!${val}).)*$`;
30
19
  }
31
- if (item2?.logic !== 'or' && item2?.key && rel && !isNull(val)) {
20
+ if (item2?.logic !== 'or' && item2?.key && rel && !isNil(val)) {
32
21
  result.push({ key: item2.key, rel, val });
33
22
  }
34
23
  });
@@ -114,7 +103,7 @@ Component({
114
103
  const tcbParams = {};
115
104
 
116
105
  // tcb分页参数
117
- if (!isNull(pageNo) && !isNull(pageSize)) {
106
+ if (!isNil(pageNo) && !isNil(pageSize)) {
118
107
  tcbParams['pageNo'] = pageNo;
119
108
  tcbParams['pageSize'] = pageSize;
120
109
  }
@@ -127,34 +116,40 @@ Component({
127
116
  const whereEffected = [].concat(getWhereList(where));
128
117
  whereEffected.length > 0 && (tcbParams['where'] = whereEffected);
129
118
  // tcb结果和事件
130
- const data = await callDataSource({
131
- dataSourceName,
132
- methodName,
133
- params: tcbParams,
134
- });
135
- let records = data?.records || [];
136
- let total = data?.total || 0;
137
- if (
138
- ['loadMoreButton', 'bottomLoad'].includes(this.properties.pagination) &&
139
- !isReLoad
140
- ) {
141
- records = [...this.data.records, ...records]; // TODO 可能存在单次 setData 数据量过大引起小程序性能问题
142
- }
143
- this.setData(
144
- {
145
- total,
146
- records,
147
- loading: false,
148
- isReLoad: false,
149
- pageStr: `${total > 0 ? pageNo : 0}/${
150
- Math.ceil(total / pageSize) || 0
151
- }`,
152
- },
153
- () => {
154
- this._handleEvents(data);
155
- setTimeout(() => this._firstScreenLoadMore(), 150);
119
+ try {
120
+ const data = await callDataSource({
121
+ dataSourceName,
122
+ methodName,
123
+ params: tcbParams,
124
+ });
125
+ let records = data?.records || [];
126
+ let total = data?.total || 0;
127
+ if (
128
+ ['loadMoreButton', 'bottomLoad'].includes(
129
+ this.properties.pagination
130
+ ) &&
131
+ !isReLoad
132
+ ) {
133
+ records = [...this.data.records, ...records]; // TODO 可能存在单次 setData 数据量过大引起小程序性能问题
156
134
  }
157
- );
135
+ this.setData(
136
+ {
137
+ total,
138
+ records,
139
+ loading: false,
140
+ isReLoad: false,
141
+ pageStr: `${total > 0 ? pageNo : 0}/${
142
+ Math.ceil(total / pageSize) || 0
143
+ }`,
144
+ },
145
+ () => {
146
+ this._handleEvents(data);
147
+ setTimeout(() => this._firstScreenLoadMore(), 150);
148
+ }
149
+ );
150
+ } catch (e) {
151
+ this.setData({ loading: false });
152
+ }
158
153
  },
159
154
  /**
160
155
  * 下一页
@@ -5,7 +5,7 @@
5
5
  <slot></slot>
6
6
  </view>
7
7
 
8
- <view class="weda-list-view__more">
8
+ <view class="weda-list-view__more {{'weda-list-view__more-' + pagination}}">
9
9
  <!-- 加载更多 -->
10
10
  <block wx:if="{{pagination==='loadMoreButton' && pageSize * pageNo < total}}">
11
11
  <view class="weda-list-view__more-text" bindtap="handleNext">加载更多</view>
@@ -34,6 +34,11 @@
34
34
  background: #fff;
35
35
  }
36
36
 
37
+ .weda-list-view__containor
38
+ .weda-list-view__more.weda-list-view__more-bottomLoad {
39
+ background: transparent;
40
+ }
41
+
37
42
  .weda-list-view__bottom-load {
38
43
  padding-top: 1px;
39
44
  }
@@ -0,0 +1,270 @@
1
+ Component({
2
+ /** 页面的初始数据 */
3
+ data: {
4
+ lotteryList: [
5
+ {
6
+ src: '',
7
+ desc: '',
8
+ actived: true,
9
+ selected: false,
10
+ },
11
+ {
12
+ src: '',
13
+ desc: '',
14
+ actived: false,
15
+ selected: false,
16
+ },
17
+ {
18
+ src: '',
19
+ desc: '',
20
+ actived: false,
21
+ selected: true,
22
+ },
23
+ {
24
+ src: '',
25
+ desc: '',
26
+ actived: false,
27
+ selected: false,
28
+ },
29
+ {
30
+ src: '',
31
+ desc: '',
32
+ actived: false,
33
+ selected: false,
34
+ },
35
+ {
36
+ src: '',
37
+ desc: '',
38
+ actived: false,
39
+ selected: false,
40
+ },
41
+ {
42
+ src: '',
43
+ desc: '',
44
+ actived: false,
45
+ selected: false,
46
+ },
47
+ {
48
+ src: '',
49
+ desc: '',
50
+ actived: false,
51
+ selected: false,
52
+ },
53
+ ],
54
+ dotList: [
55
+ {
56
+ single: true,
57
+ position: 'left-top',
58
+ direction: '',
59
+ list: [],
60
+ },
61
+ {
62
+ single: true,
63
+ position: 'left-bottom',
64
+ direction: '',
65
+ list: [],
66
+ },
67
+ {
68
+ single: true,
69
+ position: 'right-top',
70
+ direction: '',
71
+ list: [],
72
+ },
73
+ {
74
+ single: true,
75
+ position: 'right-bottom',
76
+ direction: '',
77
+ list: [],
78
+ },
79
+ {
80
+ single: false,
81
+ position: 'top',
82
+ direction: 'horizontal',
83
+ list: ['1', '2', '3', '4', '5'],
84
+ },
85
+ {
86
+ single: false,
87
+ position: 'bottom',
88
+ direction: 'horizontal',
89
+ list: ['1', '2', '3', '4', '5'],
90
+ },
91
+ {
92
+ single: false,
93
+ position: 'left',
94
+ direction: 'vertical',
95
+ list: ['1', '2', '3', '4', '5'],
96
+ },
97
+ {
98
+ single: false,
99
+ position: 'right',
100
+ direction: 'vertical',
101
+ list: ['1', '2', '3', '4', '5'],
102
+ },
103
+ ],
104
+ btnActived: false,
105
+ clickLotteryEnable: true,
106
+ checkedIndex: -1,
107
+ },
108
+ options: {
109
+ virtualHost: true,
110
+ },
111
+ properties: {
112
+ id: {
113
+ type: String,
114
+ value: '',
115
+ },
116
+ className: {
117
+ type: String,
118
+ value: '',
119
+ },
120
+ style: {
121
+ type: String,
122
+ value: '',
123
+ },
124
+ prizeResult: {
125
+ type: String,
126
+ value: '',
127
+ },
128
+ enablePrize: {
129
+ value: true,
130
+ type: Boolean,
131
+ },
132
+ prizeList: {
133
+ type: Array,
134
+ value: [],
135
+ },
136
+ },
137
+ methods: {
138
+ clickLotteryButton: function () {
139
+ const { lotteryList } = this.data;
140
+ const { prizeResult, enablePrize, clickLotteryEnable } = this.properties;
141
+ //是否正在抽奖
142
+ if (clickLotteryEnable) {
143
+ this.setData({
144
+ clickLotteryEnable: false,
145
+ });
146
+ } else {
147
+ return;
148
+ }
149
+ //支持抽奖
150
+ if (!enablePrize) {
151
+ return;
152
+ }
153
+ //触发外部事件
154
+ this.triggerEvent('clickLotteryButton');
155
+ //动画旋转次数
156
+ let count = 0;
157
+ //是否超时
158
+ let isTimeout = false;
159
+ //开启循环抽奖
160
+ let intervalId = setInterval(() => {
161
+ //再次获取抽奖结果
162
+ let prizeResultNew = this.properties.prizeResult;
163
+ if (prizeResultNew == null || !this.properties.enablePrize) {
164
+ //如果是禁止,立马停止
165
+ clearInterval();
166
+ this.setData({
167
+ clickLotteryEnable: true,
168
+ });
169
+ return;
170
+ }
171
+ //触发抽奖动画
172
+ let index = count % lotteryList.length;
173
+ let tempList = [];
174
+ lotteryList.forEach((item, i) => {
175
+ if (index === i) {
176
+ item.actived = true;
177
+ } else {
178
+ item.actived = false;
179
+ }
180
+ item.selected = false;
181
+ tempList.push(item);
182
+ //如果超时,则终止
183
+ if (isTimeout) {
184
+ let reg = /^\+?[1-9]\d*$/;
185
+ if (!reg.test(prizeResult)) {
186
+ isTimeout = false;
187
+ clearInterval(intervalId);
188
+ wx.showToast({
189
+ title: '网络异常',
190
+ icon: 'none',
191
+ });
192
+ }
193
+ if (index === parseInt(prizeResultNew) - 1) {
194
+ isTimeout = false;
195
+ this.setData({
196
+ checkedIndex: index,
197
+ });
198
+ clearInterval(intervalId);
199
+ setTimeout(() => {
200
+ this.triggerEvent('finishLottery', {
201
+ prize: prizeResultNew,
202
+ result: lotteryList[i],
203
+ });
204
+ }, 600);
205
+ }
206
+ setTimeout(() => {
207
+ //防止暴力点击误触,影响抽奖可用次数结果,延迟1.5s,才可点击
208
+ this.setData({
209
+ clickLotteryEnable: true,
210
+ });
211
+ }, 1500);
212
+ }
213
+ });
214
+ let checkedIndex = this.data.checkedIndex;
215
+ this.setData({
216
+ btnActived: checkedIndex < 0,
217
+ lotteryList:
218
+ checkedIndex < 0
219
+ ? tempList
220
+ : tempList.map((item, index) => {
221
+ if (index === checkedIndex) {
222
+ item.selected = true;
223
+ } else {
224
+ item.selected = false;
225
+ }
226
+ item.actived = false;
227
+ return item;
228
+ }),
229
+ });
230
+ //设置默认数据
231
+ this.setData({
232
+ checkedIndex: -1,
233
+ });
234
+ count++;
235
+ }, 150);
236
+ setTimeout(() => {
237
+ isTimeout = true;
238
+ }, 3000);
239
+ },
240
+ },
241
+ observers: {
242
+ prizeList: function (prizeList) {
243
+ //获取初始化默认数据,数据不足8条设置默认,超过8条获取前8条
244
+ let list = [];
245
+ for (let i = 0; i < 8; i++) {
246
+ if (i < prizeList.length) {
247
+ let prize = prizeList[i];
248
+ list.push({
249
+ idx: i + 1,
250
+ selected: false,
251
+ actived: false,
252
+ desc: prize.title,
253
+ src: prize.image,
254
+ });
255
+ } else {
256
+ list.push({
257
+ idx: i + 1,
258
+ selected: false,
259
+ actived: false,
260
+ desc: '',
261
+ src: '',
262
+ });
263
+ }
264
+ }
265
+ this.setData({
266
+ lotteryList: list,
267
+ });
268
+ },
269
+ },
270
+ });
@@ -0,0 +1,43 @@
1
+ <view class="weda-lottery">
2
+ <view class="weda-lottery__wrap">
3
+ <block wx:for="{{dotList}}" wx:key="dotIndex" wx:for-item="dot">
4
+ <view wx-if="{{dot.single}}" class="weda-lottery__dot-single weda-lottery__dot-{{dot.position}}"></view>
5
+ <block wx-if="{{!dot.single}}">
6
+ <view class="weda-lottery__dot-{{dot.position}}">
7
+ <view class="weda-lottery__dot weda-lottery__dot-{{dot.direction}}">
8
+ <block wx:for="{{dot.list}}" wx:key="index" wx:for-item="item">
9
+ <view class="weda-lottery__dot-item"></view>
10
+ </block>
11
+ </view>
12
+ </view>
13
+ </block>
14
+ </block>
15
+ <view class="weda-lottery__inner">
16
+ <view class="weda-lottery__inner-wrap">
17
+ <view class="weda-lottery__list">
18
+ <block wx:for="{{lotteryList}}" wx:key="index" wx:for-item="item">
19
+ <view key="{{index}}" class="weda-lottery__turntable-item {{item.actived ? 'is-actived' : ''}}, {{item.selected ? 'is-selected' : ''}}">
20
+ <view class="weda-lottery__turntable-cell">
21
+ <view class="weda-lottery__turntable-cell-image" wx-if="{{item.src}}">
22
+ <image mode="aspectFit" src="{{item.src}}" alt="{{item.desc}}" class="weda-lottery__turntable-cell-icon"></image>
23
+ </view>
24
+ <view class="weda-lottery__turntable-cell-desc" wx-if="{{item.desc}}">
25
+ {{item.desc}}
26
+ </view>
27
+ </view>
28
+ </view>
29
+ </block>
30
+ </view>
31
+ <view class="weda-lottery__turntable-btn {{btnActived ? 'is-actived' : ''}}">
32
+ <view class="weda-lottery__btn-inner" bindtap="{{clickLotteryEnable ? 'clickLotteryButton' : ''}}">
33
+ <view class="weda-lottery__btn">
34
+ <view class="weda-lottery__btn-image">
35
+ <text class="weda-lottery__btn-text">开始抽奖</text>
36
+ </view>
37
+ </view>
38
+ </view>
39
+ </view>
40
+ </view>
41
+ </view>
42
+ </view>
43
+ </view>