@shijiu/jsview-vue 0.9.246 → 0.9.254

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 (173) hide show
  1. package/dom/bin/package.json +11 -11
  2. package/dom/browser-root-style.css +21 -21
  3. package/loader/jsview-main.js +41 -41
  4. package/loader/jsview.config.default.js +37 -37
  5. package/loader/jsview.default.config.js +37 -37
  6. package/package.json +6 -6
  7. package/patches/node_modules/@babel/preset-env/lib/available-plugins.js +218 -218
  8. package/patches/node_modules/@vue/cli-plugin-typescript/index.js +100 -100
  9. package/patches/node_modules/@vue/cli-service/lib/commands/serve.js +395 -395
  10. package/patches/node_modules/@vue/cli-service/lib/config/app.js +272 -272
  11. package/patches/node_modules/@vue/cli-service/lib/config/assets.js +70 -70
  12. package/patches/node_modules/@vue/cli-service/lib/config/base.js +212 -212
  13. package/patches/node_modules/postcss-js/objectifier.js +90 -90
  14. package/patches/node_modules/vue-loader/dist/resolveScript.js +70 -70
  15. package/samples/AdvanceMetroWidget/App.vue +122 -122
  16. package/samples/AdvanceMetroWidget/Frame.vue +100 -100
  17. package/samples/AdvanceMetroWidget/Item.vue +57 -57
  18. package/samples/AdvanceMetroWidget/data.js +136 -136
  19. package/samples/AnimPicture/App.vue +223 -223
  20. package/samples/Basic/App.vue +128 -128
  21. package/samples/Basic/components/TitleBar.vue +28 -28
  22. package/samples/Basic/components/anim/AnimGroup.vue +67 -67
  23. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +101 -101
  24. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +52 -52
  25. package/samples/Basic/components/anim/AnimTransition.vue +116 -116
  26. package/samples/Basic/components/div/DivBackground.vue +14 -14
  27. package/samples/Basic/components/div/DivClip.vue +80 -80
  28. package/samples/Basic/components/div/DivCssScoped.vue +26 -26
  29. package/samples/Basic/components/div/DivCssVar.vue +49 -49
  30. package/samples/Basic/components/div/DivGroup1.vue +32 -32
  31. package/samples/Basic/components/div/DivGroup2.vue +40 -40
  32. package/samples/Basic/components/div/DivLayout.vue +11 -11
  33. package/samples/Basic/components/div/DivRadius.vue +46 -46
  34. package/samples/Basic/components/text/TextAlign.vue +47 -47
  35. package/samples/Basic/components/text/TextFontStyle.vue +57 -57
  36. package/samples/Basic/components/text/TextGroup.vue +31 -31
  37. package/samples/Basic/components/text/TextOverflow.vue +77 -77
  38. package/samples/BasicFocusControl/App.vue +124 -124
  39. package/samples/BasicFocusControl/components/BaseBlock.vue +50 -50
  40. package/samples/BasicFocusControl/components/MainArea.vue +97 -97
  41. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +20 -20
  42. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +29 -29
  43. package/samples/BasicFocusControl/components/SideBar.vue +72 -72
  44. package/samples/BasicFocusControl/components/SideBarBlock.vue +29 -29
  45. package/samples/ClassNameDemo/App.vue +119 -119
  46. package/samples/ClassNameDemo/components/ContentItem.vue +252 -252
  47. package/samples/ClassNameDemo/components/LoadingView.vue +43 -43
  48. package/samples/ClassNameDemo/components/TitleView.vue +24 -24
  49. package/samples/ClassNameDemo/data.js +24 -24
  50. package/samples/ColorSpace/App.vue +134 -134
  51. package/samples/DemoHomepage/App.vue +31 -31
  52. package/samples/DemoHomepage/components/BodyFrame.vue +81 -81
  53. package/samples/DemoHomepage/components/Dialog.vue +93 -93
  54. package/samples/DemoHomepage/components/Item.vue +76 -76
  55. package/samples/DemoHomepage/components/TabFrame.vue +86 -86
  56. package/samples/DemoHomepage/router.js +132 -132
  57. package/samples/DemoHomepage/views/Homepage.vue +186 -186
  58. package/samples/FlipCard/App.vue +80 -80
  59. package/samples/FlipCard/FlipCard.vue +123 -123
  60. package/samples/FlipCard/data.js +12 -12
  61. package/samples/FlowMultiWidget/App.vue +90 -90
  62. package/samples/FlowMultiWidget/components/Block.vue +106 -106
  63. package/samples/FlowMultiWidget/components/FlowPage.vue +59 -59
  64. package/samples/FlowMultiWidget/components/Item.vue +102 -102
  65. package/samples/FlowMultiWidget/components/MenuItem.vue +71 -71
  66. package/samples/FlowMultiWidget/components/MyMenu.vue +89 -89
  67. package/samples/FlowMultiWidget/data.js +446 -446
  68. package/samples/HashHistory/App.vue +124 -124
  69. package/samples/HashHistory/components/HorizontalButtonList.vue +113 -113
  70. package/samples/HashHistory/components/Item.vue +73 -73
  71. package/samples/HashHistory/router.js +29 -29
  72. package/samples/HashHistory/views/BasePage.vue +18 -18
  73. package/samples/HashHistory/views/MainPage.vue +67 -67
  74. package/samples/HashHistory/views/SubPage.vue +78 -78
  75. package/samples/HashHistory/views/SubPageFirst.vue +9 -9
  76. package/samples/HashHistory/views/SubPageSecond.vue +9 -9
  77. package/samples/LongImage/App.vue +96 -96
  78. package/samples/LongImage/Button.vue +153 -153
  79. package/samples/LongImage/LongImageScroll.vue +126 -126
  80. package/samples/LongImage/Scroll.vue +15 -15
  81. package/samples/LongText/App.vue +111 -111
  82. package/samples/LongText/Button.vue +153 -153
  83. package/samples/LongText/LongTextScroll.vue +224 -224
  84. package/samples/LongText/Scroll.vue +15 -15
  85. package/samples/Preload/App.vue +145 -145
  86. package/samples/Preload/data.js +22 -22
  87. package/samples/Preload/preloadItem.vue +21 -21
  88. package/samples/QrcodeDemo/App.vue +72 -72
  89. package/samples/SimpleWidgetDemo/App.vue +203 -203
  90. package/samples/SimpleWidgetDemo/Item.vue +82 -82
  91. package/samples/SimpleWidgetDemo/components/ContentItem.vue +411 -411
  92. package/samples/SimpleWidgetDemo/components/MyTab.vue +116 -116
  93. package/samples/SimpleWidgetDemo/data.js +110 -110
  94. package/samples/SprayView/App.vue +269 -269
  95. package/samples/SpriteImage/App.vue +174 -174
  96. package/samples/SpriteImage/images/egg_break.json +116 -116
  97. package/samples/TextBox/App.vue +178 -178
  98. package/samples/TextBox/RenderCenter.vue +108 -108
  99. package/samples/TextBox/RenderLeft.vue +108 -108
  100. package/samples/TextBox/RenderOneLine.vue +119 -119
  101. package/samples/TextBox/RenderRight.vue +106 -106
  102. package/samples/TextShadowDemo/App.vue +97 -97
  103. package/samples/TextureSize/App.vue +141 -141
  104. package/samples/ThrowMoveDemo/AccelerateDemo.vue +117 -117
  105. package/samples/ThrowMoveDemo/App.vue +113 -113
  106. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +115 -115
  107. package/samples/ThrowMoveDemo/TargetDemo.vue +116 -116
  108. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +121 -121
  109. package/samples/TransitPage/App.vue +40 -40
  110. package/samples/VideoDemo/App.vue +137 -137
  111. package/samples/VideoDemo/components/Button.vue +68 -68
  112. package/samples/VideoDemo/components/Controllor.vue +195 -195
  113. package/samples/VideoDemo/components/VideoFrame.vue +152 -152
  114. package/scripts/common.js +115 -92
  115. package/scripts/deploy-fast-pack.js +17 -0
  116. package/scripts/deploy-fast-publish.js +44 -0
  117. package/scripts/{git-commit-empty.js → deploy-git-commit-empty.js} +21 -21
  118. package/scripts/{pre-pack.js → deploy-prepare.js} +56 -39
  119. package/scripts/{install-local-packages.js → jsview-install-local-packages.js} +73 -73
  120. package/scripts/{post-build.js → jsview-post-build.js} +127 -127
  121. package/scripts/{post-install.js → jsview-post-install.js} +78 -78
  122. package/scripts/{run-android.js → jsview-run-android.js} +64 -64
  123. package/scripts/make-js.sh +181 -181
  124. package/utils/JsViewEngineWidget/bin/index.js +1 -1
  125. package/utils/JsViewEngineWidget/bin/package.json +11 -11
  126. package/utils/JsViewVueTools/JsvHashHistory.js +111 -111
  127. package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -417
  128. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -80
  129. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +147 -147
  130. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +54 -54
  131. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +28 -28
  132. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +123 -123
  133. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -83
  134. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -25
  135. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -61
  136. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -119
  137. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -106
  138. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -141
  139. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -20
  140. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -204
  141. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +63 -63
  142. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +426 -426
  143. package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -12
  144. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +178 -178
  145. package/utils/JsViewVueWidget/JsvApic/index.js +17 -17
  146. package/utils/JsViewVueWidget/JsvMarquee.vue +196 -196
  147. package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -76
  148. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +350 -350
  149. package/utils/JsViewVueWidget/JsvPreload/index.js +21 -21
  150. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -140
  151. package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -18
  152. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +139 -139
  153. package/utils/JsViewVueWidget/JsvSpray/index.js +14 -14
  154. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +447 -447
  155. package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +56 -56
  156. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -6
  157. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +34 -34
  158. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +494 -494
  159. package/utils/JsViewVueWidget/JsvSwiper/index.js +9 -9
  160. package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +34 -34
  161. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +403 -403
  162. package/utils/JsViewVueWidget/JsvSwiper3D/index.js +9 -9
  163. package/utils/JsViewVueWidget/JsvTextBox.vue +110 -110
  164. package/utils/JsViewVueWidget/JsvVideo.vue +35 -35
  165. package/vetur.config.js +5 -5
  166. package/.gitmodules +0 -6
  167. package/README.md +0 -15
  168. package/doc/IMPORT_CHANGE_LOG.txt +0 -3
  169. package/doc/about-project-postinstall.md +0 -0
  170. package/doc/git_commit.md +0 -15
  171. package/doc/test_version_up.txt +0 -1
  172. package/scripts/update-version.js +0 -32
  173. package/shijiu-jsview-vue-0.9.246.tgz +0 -0
@@ -1,412 +1,412 @@
1
- <!--
2
- * @Author: ChenChanghua
3
- * @Date: 2021-06-10 14:17:17
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2021-10-18 14:14:05
6
- * @Description: file content
7
- -->
8
- <script>
9
- import { Options, Vue, setup } from "vue-class-component";
10
- import posterHolder from "../assets/holder_logo.png";
11
- import couponLeft from "../assets/coupon_left.png";
12
- import couponRight from "../assets/coupon_right.png";
13
- import couponMid from "../assets/coupon_mid.png";
14
- import borderLeft from "../assets/line_left.png";
15
- import borderMid from "../assets/line_mid.png";
16
- import borderRight from "../assets/line_right.png";
17
-
18
- @Options({
19
- props: {
20
- data: Object,
21
- query: Object,
22
- onEdge: Function,
23
- onAction: Object,
24
- },
25
- })
26
- class ContentItem extends Vue {
27
- constructor(props) {
28
- super(props);
29
- // console.log("cchtest2 ContentItem constructor " + new Date().getTime());
30
- this.focused = false;
31
- this.setup = setup(() => {
32
- return {
33
- posterHolder,
34
- couponLeft,
35
- couponMid,
36
- couponRight,
37
- borderLeft,
38
- borderMid,
39
- borderRight,
40
- };
41
- });
42
- }
43
-
44
- onFocus() {
45
- this.focused = true;
46
- }
47
-
48
- onBlur() {
49
- this.focused = false;
50
- }
51
-
52
- onClick() {}
53
-
54
- created() {
55
- this.onAction.register("onFocus", this.onFocus);
56
- this.onAction.register("onBlur", this.onBlur);
57
- this.onAction.register("onClick", this.onClick);
58
- }
59
-
60
- get focusTransform() {
61
- return this.focused ? "scale3d(1.2, 1.2, 1)" : null;
62
- }
63
-
64
- get savePrizeWidth() {
65
- return 10 * this.data.savePrize.length + 26;
66
- }
67
-
68
- get soldTotalWidth() {
69
- let width = 44 + 22; //base width;
70
- if (this.data.soldTotal >= 10000) {
71
- let text = parseInt(this.data.soldTotal / 10000) + "";
72
- width += text.length * 12 + 22;
73
- } else {
74
- width += (this.data.soldTotal + "").length * 12;
75
- }
76
- return width;
77
- }
78
-
79
- get soldTotalText() {
80
- let text = "";
81
- if (this.data.soldTotal >= 10000) {
82
- text = parseInt(this.data.soldTotal / 10000) + "万";
83
- } else {
84
- text = this.data.soldTotal;
85
- }
86
- return text;
87
- }
88
- }
89
-
90
- export default ContentItem;
91
- </script>
92
-
93
- <template>
94
- <div
95
- class="frame-background"
96
- :style="{
97
- transform: focusTransform,
98
- }"
99
- >
100
- <div class="poster-holder">
101
- <div
102
- :style="{
103
- width: 107,
104
- height: 23,
105
- left: 53,
106
- top: 95,
107
- backgroundImage: setup.posterHolder,
108
- }"
109
- />
110
- </div>
111
- <div
112
- class="poster"
113
- :style="{
114
- backgroundImage: `url(${data.pictUrl})`,
115
- }"
116
- />
117
- <div class="title-font title-layout">
118
- {{ data.index + data.name }}
119
- </div>
120
- <div
121
- :style="{
122
- height: 24,
123
- left: 13,
124
- top: 256,
125
- width: savePrizeWidth,
126
- }"
127
- >
128
- <div
129
- :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
130
- />
131
- <div
132
- :style="{
133
- left: 5,
134
- width: savePrizeWidth - 11,
135
- height: 24,
136
- backgroundImage: setup.couponMid,
137
- }"
138
- />
139
- <div
140
- :style="{
141
- left: savePrizeWidth - 6,
142
- width: 5,
143
- height: 24,
144
- backgroundImage: setup.couponRight,
145
- }"
146
- />
147
- <div
148
- class="ticket-text"
149
- :style="{
150
- width: savePrizeWidth,
151
- }"
152
- >
153
- {{ `${data.savePrize}元券` }}
154
- </div>
155
- </div>
156
-
157
- <div
158
- :style="{
159
- top: 256,
160
- left: 27 + savePrizeWidth,
161
- }"
162
- >
163
- <div
164
- :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
165
- />
166
- <div
167
- :style="{
168
- left: 7,
169
- width: soldTotalWidth - 13,
170
- height: 25,
171
- backgroundImage: setup.borderMid,
172
- }"
173
- />
174
- <div
175
- :style="{
176
- left: soldTotalWidth - 7,
177
- width: 7,
178
- height: 25,
179
- backgroundImage: setup.borderRight,
180
- }"
181
- />
182
- <div
183
- class="sold-text"
184
- :style="{
185
- width: soldTotalWidth,
186
- }"
187
- >
188
- {{ `已售${soldTotalText}件` }}
189
- </div>
190
- </div>
191
-
192
- <div
193
- :style="{
194
- height: 24,
195
- left: 13,
196
- top: 270,
197
- width: savePrizeWidth,
198
- }"
199
- >
200
- <div
201
- :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
202
- />
203
- <div
204
- :style="{
205
- left: 5,
206
- width: savePrizeWidth - 11,
207
- height: 24,
208
- backgroundImage: setup.couponMid,
209
- }"
210
- />
211
- <div
212
- :style="{
213
- left: savePrizeWidth - 6,
214
- width: 5,
215
- height: 24,
216
- backgroundImage: setup.couponRight,
217
- }"
218
- />
219
- <div
220
- class="ticket-text"
221
- :style="{
222
- width: savePrizeWidth,
223
- }"
224
- >
225
- {{ `${data.savePrize}元券` }}
226
- </div>
227
- </div>
228
- <div
229
- :style="{
230
- top: 270,
231
- left: 27 + savePrizeWidth,
232
- }"
233
- >
234
- <div
235
- :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
236
- />
237
- <div
238
- :style="{
239
- left: 7,
240
- width: soldTotalWidth - 13,
241
- height: 25,
242
- backgroundImage: setup.borderMid,
243
- }"
244
- />
245
- <div
246
- :style="{
247
- left: soldTotalWidth - 7,
248
- width: 7,
249
- height: 25,
250
- backgroundImage: setup.borderRight,
251
- }"
252
- />
253
- <div
254
- class="sold-text"
255
- :style="{
256
- width: soldTotalWidth,
257
- }"
258
- >
259
- {{ `已售${soldTotalText}件` }}
260
- </div>
261
- </div>
262
-
263
- <div
264
- :style="{
265
- height: 24,
266
- left: 13,
267
- top: 280,
268
- width: savePrizeWidth,
269
- }"
270
- >
271
- <div
272
- :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
273
- />
274
- <div
275
- :style="{
276
- left: 5,
277
- width: savePrizeWidth - 11,
278
- height: 24,
279
- backgroundImage: setup.couponMid,
280
- }"
281
- />
282
- <div
283
- :style="{
284
- left: savePrizeWidth - 6,
285
- width: 5,
286
- height: 24,
287
- backgroundImage: setup.couponRight,
288
- }"
289
- />
290
- <div
291
- class="ticket-text"
292
- :style="{
293
- width: savePrizeWidth,
294
- }"
295
- >
296
- {{ `${data.savePrize}元券` }}
297
- </div>
298
- </div>
299
- <div
300
- :style="{
301
- top: 280,
302
- left: 27 + savePrizeWidth,
303
- }"
304
- >
305
- <div
306
- :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
307
- />
308
- <div
309
- :style="{
310
- left: 7,
311
- width: soldTotalWidth - 13,
312
- height: 25,
313
- backgroundImage: setup.borderMid,
314
- }"
315
- />
316
- <div
317
- :style="{
318
- left: soldTotalWidth - 7,
319
- width: 7,
320
- height: 25,
321
- backgroundImage: setup.borderRight,
322
- }"
323
- />
324
- <div
325
- class="sold-text"
326
- :style="{
327
- width: soldTotalWidth,
328
- }"
329
- >
330
- {{ `已售${soldTotalText}件` }}
331
- </div>
332
- </div>
333
-
334
- <div class="prize-title-font prize-title-layout">券后</div>
335
- <div class="prize-font">
336
- {{ `¥${data.prize - data.savePrize}` }}
337
- </div>
338
- </div>
339
- </template>
340
-
341
- <style scoped>
342
- .frame-background {
343
- width: 213px;
344
- height: 337px;
345
- border-radius: 10px 10px 10px 10px;
346
- background-color: #f7f7f4;
347
- transition: transform 0.2s linear;
348
- }
349
-
350
- .poster-holder {
351
- width: 213px;
352
- height: 213px;
353
- border-radius: 10px 10px 0px 0px;
354
- background-color: #cfcac6;
355
- }
356
- .poster {
357
- width: 213px;
358
- height: 213px;
359
- border-radius: 7px 7px 0px 0px;
360
- }
361
-
362
- .title-font {
363
- font-size: 21px;
364
- color: #73665c;
365
- line-height: 29px;
366
- overflow: hidden;
367
- white-space: nowrap;
368
- text-overflow: ellipsis;
369
- text-align: center;
370
- }
371
- .title-layout {
372
- top: 221;
373
- left: 13;
374
- width: 193px;
375
- height: 29px;
376
- }
377
- .ticket-text {
378
- height: 24;
379
- color: #ffffff;
380
- font-size: 16px;
381
- text-align: center;
382
- line-height: 24px;
383
- }
384
- .sold-text {
385
- height: 25px;
386
- color: #ff7a00;
387
- font-size: 20px;
388
- text-align: center;
389
- line-height: 25px;
390
- }
391
- .prize-title-layout {
392
- width: 35px;
393
- height: 24px;
394
- top: 296;
395
- left: 13;
396
- }
397
- .prize-title-font {
398
- color: #de2825;
399
- text-align: center;
400
- font-size: 17px;
401
- line-height: 24px;
402
- }
403
- .prize-font {
404
- top: 289;
405
- left: 53;
406
- width: 158; /*213 - 55*/
407
- height: 37px;
408
- line-height: 37px;
409
- font-size: 28px;
410
- color: #de2825;
411
- }
1
+ <!--
2
+ * @Author: ChenChanghua
3
+ * @Date: 2021-06-10 14:17:17
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2021-10-18 14:14:05
6
+ * @Description: file content
7
+ -->
8
+ <script>
9
+ import { Options, Vue, setup } from "vue-class-component";
10
+ import posterHolder from "../assets/holder_logo.png";
11
+ import couponLeft from "../assets/coupon_left.png";
12
+ import couponRight from "../assets/coupon_right.png";
13
+ import couponMid from "../assets/coupon_mid.png";
14
+ import borderLeft from "../assets/line_left.png";
15
+ import borderMid from "../assets/line_mid.png";
16
+ import borderRight from "../assets/line_right.png";
17
+
18
+ @Options({
19
+ props: {
20
+ data: Object,
21
+ query: Object,
22
+ onEdge: Function,
23
+ onAction: Object,
24
+ },
25
+ })
26
+ class ContentItem extends Vue {
27
+ constructor(props) {
28
+ super(props);
29
+ // console.log("cchtest2 ContentItem constructor " + new Date().getTime());
30
+ this.focused = false;
31
+ this.setup = setup(() => {
32
+ return {
33
+ posterHolder,
34
+ couponLeft,
35
+ couponMid,
36
+ couponRight,
37
+ borderLeft,
38
+ borderMid,
39
+ borderRight,
40
+ };
41
+ });
42
+ }
43
+
44
+ onFocus() {
45
+ this.focused = true;
46
+ }
47
+
48
+ onBlur() {
49
+ this.focused = false;
50
+ }
51
+
52
+ onClick() {}
53
+
54
+ created() {
55
+ this.onAction.register("onFocus", this.onFocus);
56
+ this.onAction.register("onBlur", this.onBlur);
57
+ this.onAction.register("onClick", this.onClick);
58
+ }
59
+
60
+ get focusTransform() {
61
+ return this.focused ? "scale3d(1.2, 1.2, 1)" : null;
62
+ }
63
+
64
+ get savePrizeWidth() {
65
+ return 10 * this.data.savePrize.length + 26;
66
+ }
67
+
68
+ get soldTotalWidth() {
69
+ let width = 44 + 22; //base width;
70
+ if (this.data.soldTotal >= 10000) {
71
+ let text = parseInt(this.data.soldTotal / 10000) + "";
72
+ width += text.length * 12 + 22;
73
+ } else {
74
+ width += (this.data.soldTotal + "").length * 12;
75
+ }
76
+ return width;
77
+ }
78
+
79
+ get soldTotalText() {
80
+ let text = "";
81
+ if (this.data.soldTotal >= 10000) {
82
+ text = parseInt(this.data.soldTotal / 10000) + "万";
83
+ } else {
84
+ text = this.data.soldTotal;
85
+ }
86
+ return text;
87
+ }
88
+ }
89
+
90
+ export default ContentItem;
91
+ </script>
92
+
93
+ <template>
94
+ <div
95
+ class="frame-background"
96
+ :style="{
97
+ transform: focusTransform,
98
+ }"
99
+ >
100
+ <div class="poster-holder">
101
+ <div
102
+ :style="{
103
+ width: 107,
104
+ height: 23,
105
+ left: 53,
106
+ top: 95,
107
+ backgroundImage: setup.posterHolder,
108
+ }"
109
+ />
110
+ </div>
111
+ <div
112
+ class="poster"
113
+ :style="{
114
+ backgroundImage: `url(${data.pictUrl})`,
115
+ }"
116
+ />
117
+ <div class="title-font title-layout">
118
+ {{ data.index + data.name }}
119
+ </div>
120
+ <div
121
+ :style="{
122
+ height: 24,
123
+ left: 13,
124
+ top: 256,
125
+ width: savePrizeWidth,
126
+ }"
127
+ >
128
+ <div
129
+ :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
130
+ />
131
+ <div
132
+ :style="{
133
+ left: 5,
134
+ width: savePrizeWidth - 11,
135
+ height: 24,
136
+ backgroundImage: setup.couponMid,
137
+ }"
138
+ />
139
+ <div
140
+ :style="{
141
+ left: savePrizeWidth - 6,
142
+ width: 5,
143
+ height: 24,
144
+ backgroundImage: setup.couponRight,
145
+ }"
146
+ />
147
+ <div
148
+ class="ticket-text"
149
+ :style="{
150
+ width: savePrizeWidth,
151
+ }"
152
+ >
153
+ {{ `${data.savePrize}元券` }}
154
+ </div>
155
+ </div>
156
+
157
+ <div
158
+ :style="{
159
+ top: 256,
160
+ left: 27 + savePrizeWidth,
161
+ }"
162
+ >
163
+ <div
164
+ :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
165
+ />
166
+ <div
167
+ :style="{
168
+ left: 7,
169
+ width: soldTotalWidth - 13,
170
+ height: 25,
171
+ backgroundImage: setup.borderMid,
172
+ }"
173
+ />
174
+ <div
175
+ :style="{
176
+ left: soldTotalWidth - 7,
177
+ width: 7,
178
+ height: 25,
179
+ backgroundImage: setup.borderRight,
180
+ }"
181
+ />
182
+ <div
183
+ class="sold-text"
184
+ :style="{
185
+ width: soldTotalWidth,
186
+ }"
187
+ >
188
+ {{ `已售${soldTotalText}件` }}
189
+ </div>
190
+ </div>
191
+
192
+ <div
193
+ :style="{
194
+ height: 24,
195
+ left: 13,
196
+ top: 270,
197
+ width: savePrizeWidth,
198
+ }"
199
+ >
200
+ <div
201
+ :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
202
+ />
203
+ <div
204
+ :style="{
205
+ left: 5,
206
+ width: savePrizeWidth - 11,
207
+ height: 24,
208
+ backgroundImage: setup.couponMid,
209
+ }"
210
+ />
211
+ <div
212
+ :style="{
213
+ left: savePrizeWidth - 6,
214
+ width: 5,
215
+ height: 24,
216
+ backgroundImage: setup.couponRight,
217
+ }"
218
+ />
219
+ <div
220
+ class="ticket-text"
221
+ :style="{
222
+ width: savePrizeWidth,
223
+ }"
224
+ >
225
+ {{ `${data.savePrize}元券` }}
226
+ </div>
227
+ </div>
228
+ <div
229
+ :style="{
230
+ top: 270,
231
+ left: 27 + savePrizeWidth,
232
+ }"
233
+ >
234
+ <div
235
+ :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
236
+ />
237
+ <div
238
+ :style="{
239
+ left: 7,
240
+ width: soldTotalWidth - 13,
241
+ height: 25,
242
+ backgroundImage: setup.borderMid,
243
+ }"
244
+ />
245
+ <div
246
+ :style="{
247
+ left: soldTotalWidth - 7,
248
+ width: 7,
249
+ height: 25,
250
+ backgroundImage: setup.borderRight,
251
+ }"
252
+ />
253
+ <div
254
+ class="sold-text"
255
+ :style="{
256
+ width: soldTotalWidth,
257
+ }"
258
+ >
259
+ {{ `已售${soldTotalText}件` }}
260
+ </div>
261
+ </div>
262
+
263
+ <div
264
+ :style="{
265
+ height: 24,
266
+ left: 13,
267
+ top: 280,
268
+ width: savePrizeWidth,
269
+ }"
270
+ >
271
+ <div
272
+ :style="{ width: 5, height: 24, backgroundImage: setup.couponLeft }"
273
+ />
274
+ <div
275
+ :style="{
276
+ left: 5,
277
+ width: savePrizeWidth - 11,
278
+ height: 24,
279
+ backgroundImage: setup.couponMid,
280
+ }"
281
+ />
282
+ <div
283
+ :style="{
284
+ left: savePrizeWidth - 6,
285
+ width: 5,
286
+ height: 24,
287
+ backgroundImage: setup.couponRight,
288
+ }"
289
+ />
290
+ <div
291
+ class="ticket-text"
292
+ :style="{
293
+ width: savePrizeWidth,
294
+ }"
295
+ >
296
+ {{ `${data.savePrize}元券` }}
297
+ </div>
298
+ </div>
299
+ <div
300
+ :style="{
301
+ top: 280,
302
+ left: 27 + savePrizeWidth,
303
+ }"
304
+ >
305
+ <div
306
+ :style="{ width: 7, height: 25, backgroundImage: setup.borderLeft }"
307
+ />
308
+ <div
309
+ :style="{
310
+ left: 7,
311
+ width: soldTotalWidth - 13,
312
+ height: 25,
313
+ backgroundImage: setup.borderMid,
314
+ }"
315
+ />
316
+ <div
317
+ :style="{
318
+ left: soldTotalWidth - 7,
319
+ width: 7,
320
+ height: 25,
321
+ backgroundImage: setup.borderRight,
322
+ }"
323
+ />
324
+ <div
325
+ class="sold-text"
326
+ :style="{
327
+ width: soldTotalWidth,
328
+ }"
329
+ >
330
+ {{ `已售${soldTotalText}件` }}
331
+ </div>
332
+ </div>
333
+
334
+ <div class="prize-title-font prize-title-layout">券后</div>
335
+ <div class="prize-font">
336
+ {{ `¥${data.prize - data.savePrize}` }}
337
+ </div>
338
+ </div>
339
+ </template>
340
+
341
+ <style scoped>
342
+ .frame-background {
343
+ width: 213px;
344
+ height: 337px;
345
+ border-radius: 10px 10px 10px 10px;
346
+ background-color: #f7f7f4;
347
+ transition: transform 0.2s linear;
348
+ }
349
+
350
+ .poster-holder {
351
+ width: 213px;
352
+ height: 213px;
353
+ border-radius: 10px 10px 0px 0px;
354
+ background-color: #cfcac6;
355
+ }
356
+ .poster {
357
+ width: 213px;
358
+ height: 213px;
359
+ border-radius: 7px 7px 0px 0px;
360
+ }
361
+
362
+ .title-font {
363
+ font-size: 21px;
364
+ color: #73665c;
365
+ line-height: 29px;
366
+ overflow: hidden;
367
+ white-space: nowrap;
368
+ text-overflow: ellipsis;
369
+ text-align: center;
370
+ }
371
+ .title-layout {
372
+ top: 221;
373
+ left: 13;
374
+ width: 193px;
375
+ height: 29px;
376
+ }
377
+ .ticket-text {
378
+ height: 24;
379
+ color: #ffffff;
380
+ font-size: 16px;
381
+ text-align: center;
382
+ line-height: 24px;
383
+ }
384
+ .sold-text {
385
+ height: 25px;
386
+ color: #ff7a00;
387
+ font-size: 20px;
388
+ text-align: center;
389
+ line-height: 25px;
390
+ }
391
+ .prize-title-layout {
392
+ width: 35px;
393
+ height: 24px;
394
+ top: 296;
395
+ left: 13;
396
+ }
397
+ .prize-title-font {
398
+ color: #de2825;
399
+ text-align: center;
400
+ font-size: 17px;
401
+ line-height: 24px;
402
+ }
403
+ .prize-font {
404
+ top: 289;
405
+ left: 53;
406
+ width: 158; /*213 - 55*/
407
+ height: 37px;
408
+ line-height: 37px;
409
+ font-size: 28px;
410
+ color: #de2825;
411
+ }
412
412
  </style>