xiaoe_mp_npm 1.0.0-live9 → 1.0.0

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 (49) hide show
  1. package/miniprogram_dist/Task/TaskBubble/index.js +18 -18
  2. package/miniprogram_dist/Task/TaskBubble/index.wxml +2 -7
  3. package/miniprogram_dist/Task/TaskPopup/component/RewardList/index.js +10 -0
  4. package/miniprogram_dist/Task/TaskPopup/component/RewardList/index.scss +40 -0
  5. package/miniprogram_dist/Task/TaskPopup/component/RewardList/index.wxml +8 -1
  6. package/miniprogram_dist/Task/TaskPopup/component/RewardList/index.wxss +18 -0
  7. package/miniprogram_dist/Task/TaskPopup/component/TaskItem/index.js +31 -9
  8. package/miniprogram_dist/Task/TaskPopup/component/TaskItem/index.scss +6 -1
  9. package/miniprogram_dist/Task/TaskPopup/component/TaskItem/index.wxml +2 -2
  10. package/miniprogram_dist/Task/TaskPopup/component/TaskItem/index.wxss +24 -4
  11. package/miniprogram_dist/Task/TaskPopup/component/TaskList/index.js +43 -16
  12. package/miniprogram_dist/Task/TaskPopup/component/TaskList/index.scss +4 -0
  13. package/miniprogram_dist/Task/TaskPopup/component/TaskList/index.wxml +11 -3
  14. package/miniprogram_dist/Task/TaskPopup/component/TaskList/index.wxss +20 -0
  15. package/miniprogram_dist/Task/TaskPopup/component/TaskType/index.js +39 -3
  16. package/miniprogram_dist/Task/TaskPopup/component/TaskType/index.wxml +1 -1
  17. package/miniprogram_dist/Task/TaskPopup/index.js +45 -2
  18. package/miniprogram_dist/Task/TaskPopup/index.scss +14 -1
  19. package/miniprogram_dist/Task/TaskPopup/index.wxml +25 -13
  20. package/miniprogram_dist/Task/TaskPopup/index.wxss +60 -4
  21. package/miniprogram_dist/Task/taskReceivePopup/index.wxml +2 -1
  22. package/package.json +1 -1
  23. package/src/Task/TaskBubble/index.js +18 -18
  24. package/src/Task/TaskBubble/index.wxml +2 -7
  25. package/src/Task/TaskBubble/index.wxss +289 -1
  26. package/src/Task/TaskIcon/index.wxss +130 -1
  27. package/src/Task/TaskPopup/component/RewardList/index.js +10 -0
  28. package/src/Task/TaskPopup/component/RewardList/index.scss +40 -0
  29. package/src/Task/TaskPopup/component/RewardList/index.wxml +8 -1
  30. package/src/Task/TaskPopup/component/RewardList/index.wxss +18 -0
  31. package/src/Task/TaskPopup/component/TaskItem/index.js +31 -9
  32. package/src/Task/TaskPopup/component/TaskItem/index.scss +6 -1
  33. package/src/Task/TaskPopup/component/TaskItem/index.wxml +2 -2
  34. package/src/Task/TaskPopup/component/TaskItem/index.wxss +394 -1
  35. package/src/Task/TaskPopup/component/TaskList/index.js +43 -16
  36. package/src/Task/TaskPopup/component/TaskList/index.scss +4 -0
  37. package/src/Task/TaskPopup/component/TaskList/index.wxml +11 -3
  38. package/src/Task/TaskPopup/component/TaskList/index.wxss +118 -98
  39. package/src/Task/TaskPopup/component/TaskType/index.js +39 -3
  40. package/src/Task/TaskPopup/component/TaskType/index.wxml +1 -1
  41. package/src/Task/TaskPopup/component/TaskType/index.wxss +98 -98
  42. package/src/Task/TaskPopup/index.js +45 -2
  43. package/src/Task/TaskPopup/index.scss +14 -1
  44. package/src/Task/TaskPopup/index.wxml +25 -13
  45. package/src/Task/TaskPopup/index.wxss +306 -250
  46. package/src/Task/taskReceivePopup/coupon/index.wxss +187 -1
  47. package/src/Task/taskReceivePopup/index.wxml +2 -1
  48. package/src/Task/taskReceivePopup/index.wxss +1 -1
  49. package/src/Task/taskReceivePopup/integral/index.wxss +94 -94
@@ -9,6 +9,10 @@ Component({
9
9
  type: Object,
10
10
  value: {},
11
11
  },
12
+ zIndex: {
13
+ type: Number,
14
+ value: 1,
15
+ },
12
16
  },
13
17
 
14
18
  /**
@@ -25,7 +29,20 @@ Component({
25
29
  computed: {
26
30
  // 奖品类型
27
31
  rewardValue(data){
28
- return data.taskMsg.live_task?.task_type === 1? this.convertMinutesToHoursAndMinutes(data.taskMsg.live_task?.reward_value) : ['', '发表评论', '转发直播间', '完成点赞'][data.taskMsg.live_task?.task_condition] || ''
32
+ if(data.taskMsg.live_task?.task_type === 1){
33
+ const hours = Math.floor(data.taskMsg.live_task?.task_condition / 60);
34
+ const remainingMinutes = data.taskMsg.live_task?.task_condition % 60;
35
+
36
+ if (hours === 0) {
37
+ return `达${remainingMinutes}分钟`;
38
+ } else if (remainingMinutes === 0) {
39
+ return `达${hours}小时`;
40
+ } else {
41
+ return `达${hours}小时${remainingMinutes}分钟`;
42
+ }
43
+ }else {
44
+ return ['', '发表评论', '转发直播间', '完成点赞'][data.taskMsg.live_task?.task_condition] || ''
45
+ }
29
46
  },
30
47
  // 奖品icon
31
48
  taskIconImg(data){
@@ -96,22 +113,5 @@ Component({
96
113
  animationData: animation.export(),
97
114
  })
98
115
  },
99
-
100
- convertMinutesToHoursAndMinutes(minutes) {
101
- if (isNaN(minutes) || minutes < 0) {
102
- return;
103
- }
104
-
105
- const hours = Math.floor(minutes / 60);
106
- const remainingMinutes = minutes % 60;
107
-
108
- if (hours === 0) {
109
- return `达${remainingMinutes}分钟`;
110
- } else if (remainingMinutes === 0) {
111
- return `达${hours}小时`;
112
- } else {
113
- return `达${hours}小时${remainingMinutes}分钟`;
114
- }
115
- },
116
116
  },
117
117
  })
@@ -1,4 +1,4 @@
1
- <view class="barrage-container" catch:tap="bubbleClick">
1
+ <view class="barrage-container" catch:tap="bubbleClick" style="{{zIndex?'z-index:'+zIndex:''}}">
2
2
  <view class="barrage-wrap">
3
3
  <view class="barrage-item" animation="{{animationData}}">
4
4
  <view class="barrage-content">
@@ -9,11 +9,7 @@
9
9
  />
10
10
  <view wx:if="{{taskMsg.live_task.task_type === 1}}" class="task-type">观看时长</view>
11
11
  <view>{{ rewardValue }}</view>
12
- <image
13
- class="prize-icon"
14
- src="{{taskIconImg}}"
15
- alt="奖励"
16
- />
12
+ <image class="prize-icon" src="{{taskIconImg}}" alt="奖励" />
17
13
  <view class="prize-num">+{{ prizeNum }}</view>
18
14
  <image
19
15
  class="right-arrow-icon"
@@ -24,4 +20,3 @@
24
20
  </view>
25
21
  </view>
26
22
  </view>
27
-
@@ -8,6 +8,10 @@ Component({
8
8
  return []
9
9
  }
10
10
  },
11
+ refreshStatus:{
12
+ type:Boolean,
13
+ value: false
14
+ }
11
15
  },
12
16
  data: {
13
17
  activeNames:["1"],
@@ -24,6 +28,12 @@ Component({
24
28
  btnClick(e){
25
29
  this.triggerEvent("btnClick",e.detail)
26
30
  },
31
+ onLoad(){
32
+ this.triggerEvent("onLoad","rewardList")
33
+ },
34
+ getMoreList(){
35
+ this.triggerEvent("getMoreList","rewardList")
36
+ }
27
37
  },
28
38
  observers: {},
29
39
  })
@@ -0,0 +1,40 @@
1
+ $deviceWidth: 750;
2
+
3
+ @function vmin($rpx) {
4
+ @return #{$rpx * 100 / $deviceWidth}vmin;
5
+ }
6
+
7
+ @mixin reward-list{
8
+ height: 100%;
9
+ }
10
+
11
+ .reward-list {
12
+ @include reward-list;
13
+ }
14
+
15
+ // 竖屏pad
16
+ @media screen and (min-width: 768px) and (orientation: portrait) {
17
+ $deviceWidth: 1536 !global;
18
+
19
+ .reward-list {
20
+ @include reward-list;
21
+ }
22
+ }
23
+
24
+ // PC 放大适配
25
+ @media screen and (min-height: 630px) and (orientation: landscape) {
26
+ $deviceWidth: 1260 !global;
27
+
28
+ .reward-list {
29
+ @include reward-list;
30
+ }
31
+ }
32
+
33
+ // 横屏pad
34
+ @media screen and (min-height: 768px) and (orientation: landscape) {
35
+ $deviceWidth: 1536 !global;
36
+
37
+ .reward-list {
38
+ @include reward-list;
39
+ }
40
+ }
@@ -1,4 +1,11 @@
1
- <scroll-view class="goods-list" scroll-y="true" bindrefresherrefresh="onLoad" refresher-enabled="{{true}}">
1
+ <scroll-view
2
+ class="reward-list"
3
+ scroll-y="true"
4
+ bindrefresherrefresh="onLoad"
5
+ refresher-enabled="{{true}}"
6
+ refresher-triggered="{{ refreshStatus }}"
7
+ bindscrolltolower="getMoreList"
8
+ >
2
9
  <task-item
3
10
  wx:for="{{rewardList}}"
4
11
  wx:for-item="item"
@@ -0,0 +1,18 @@
1
+ .reward-list {
2
+ height: 100%;
3
+ }
4
+ @media screen and (min-width: 768px) and (orientation: portrait) {
5
+ .reward-list {
6
+ height: 100%;
7
+ }
8
+ }
9
+ @media screen and (min-height: 630px) and (orientation: landscape) {
10
+ .reward-list {
11
+ height: 100%;
12
+ }
13
+ }
14
+ @media screen and (min-height: 768px) and (orientation: landscape) {
15
+ .reward-list {
16
+ height: 100%;
17
+ }
18
+ }
@@ -25,6 +25,13 @@ const TASK_TYPE_TEXT = {
25
25
  4: "去点赞",
26
26
  };
27
27
 
28
+ const taskType = {
29
+ 1: "view",
30
+ 2: "input",
31
+ 3: "share",
32
+ 4: "like"
33
+ }
34
+
28
35
  Component({
29
36
  behaviors: [computedBehavior],
30
37
  properties: {
@@ -114,21 +121,25 @@ Component({
114
121
  return "去使用"
115
122
  }
116
123
 
117
- // 任务状态已结束
118
- if(data.taskItem.state === 2){
119
- return "已结束"
120
- }
121
-
122
124
  // 任务同步失败列表
123
125
  if(data.listType === LIST_TYPE.ERROR){
124
126
  return "领奖励"
125
127
  }
126
128
 
127
- // 任务状态 join_state 0-未开始 2-已完成 3-已结束
128
- if (JOIN_STATE_TEXT[data.taskItem.join_state]) {
129
- return JOIN_STATE_TEXT[data.taskItem.join_state];
129
+ // 任务状态已结束
130
+ if(data.taskItem.join_state === 2){
131
+ return "已完成"
130
132
  }
131
133
 
134
+ // 任务状态已结束
135
+ if(data.taskItem.state === 2){
136
+ return "已结束"
137
+ }
138
+
139
+ if(data.taskItem.join_state === 0){
140
+ return "未开始"
141
+ }
142
+
132
143
  // 正常参与任务
133
144
  return TASK_TYPE_TEXT[data.taskBelongType] || "去参与"
134
145
  },
@@ -160,6 +171,7 @@ Component({
160
171
  return `${hours>0?hours+'小时':''}${remainingMinutes>0?remainingMinutes+'分钟':''}`
161
172
  },
162
173
  btnClick(){
174
+ const { reward_type } = this.data.taskItem
163
175
  if(this.data.btnText === TASK_TYPE_TEXT[2]){
164
176
  // 去评论
165
177
  this.triggerEvent("btnClick","toComment")
@@ -169,8 +181,18 @@ Component({
169
181
  this.triggerEvent("btnClick","toShare")
170
182
  return
171
183
  }else if(this.data.btnText === "去使用"){
184
+ // 去使用
185
+ this.triggerEvent("btnClick",{
186
+ type:"reward",
187
+ reward_type
188
+ })
189
+ return
190
+ }else if(this.data.btnText === "领奖励"){
172
191
  // 去转发
173
- this.triggerEvent("btnClick","reward")
192
+ this.triggerEvent("btnClick",{
193
+ type:"toRetry",
194
+ taskBelongType: taskType[this.data.taskBelongType]
195
+ })
174
196
  return
175
197
  }
176
198
 
@@ -35,7 +35,7 @@ $deviceWidth: 750;
35
35
  margin-bottom: vmin(24);
36
36
  }
37
37
  .left{
38
- max-width: vmin(462);
38
+ max-width: vmin(485);
39
39
  .first{
40
40
  line-height: vmin(40);
41
41
  display: flex;
@@ -44,6 +44,9 @@ $deviceWidth: 750;
44
44
  font-size: vmin(28);
45
45
  font-weight: 500;
46
46
  color: #333333;
47
+ word-wrap: break-word;
48
+ word-break: break-all;
49
+ max-width: vmin(290);
47
50
  }
48
51
  .reward{
49
52
  margin-left: vmin(16);
@@ -57,6 +60,8 @@ $deviceWidth: 750;
57
60
  }
58
61
  .reward-text{
59
62
  margin-left: vmin(8);
63
+ word-wrap: break-word;
64
+ word-break: break-all;
60
65
  }
61
66
  }
62
67
  }
@@ -31,13 +31,13 @@
31
31
  <!-- 观看剩余时间 -->
32
32
  <view
33
33
  class="residue-time"
34
- wx:if="{{taskItem.task_type === 1 && listType === 'task' && taskItem.join_state === 1}}"
34
+ wx:if="{{taskItem.task_type === 1 && listType === 'task' && taskItem.join_state === 1 && taskItem.residue_time && taskItem.state !==2}}"
35
35
  >{{taskItem.residue_time > 60 ? '再观看 '+ filter.secondsToMinutes(taskItem.residue_time) + '分钟 '+ '获得奖励':'即将获得奖励'}}</view>
36
36
  </view>
37
37
 
38
38
  <!-- 右侧按钮 -->
39
39
  <view
40
- class="btn {{listType === 'reward'?'reward-btn':''}} {{listType==='task' && (taskItem.join_state === 2 || taskItem.join_state === 3 || taskItem.join_state === 0)?'gray-btn':''}}"
40
+ class="btn {{listType === 'reward'?'reward-btn':''}} {{listType==='task' && (taskItem.join_state === 2 || taskItem.join_state === 3 || taskItem.join_state === 0 || taskItem.state === 2)?'gray-btn':''}}"
41
41
  catch:tap="btnClick"
42
42
  >{{btnText}}</view>
43
43
  </view>
@@ -30,7 +30,7 @@
30
30
  margin-bottom: 3.2vmin;
31
31
  }
32
32
  .item-box .left {
33
- max-width: 61.6vmin;
33
+ max-width: 64.66667vmin;
34
34
  }
35
35
  .item-box .left .first {
36
36
  line-height: 5.33333vmin;
@@ -41,6 +41,9 @@
41
41
  font-size: 3.73333vmin;
42
42
  font-weight: 500;
43
43
  color: #333333;
44
+ word-wrap: break-word;
45
+ word-break: break-all;
46
+ max-width: 38.66667vmin;
44
47
  }
45
48
  .item-box .left .first .reward {
46
49
  margin-left: 2.13333vmin;
@@ -55,6 +58,8 @@
55
58
  }
56
59
  .item-box .left .first .reward .reward-text {
57
60
  margin-left: 1.06667vmin;
61
+ word-wrap: break-word;
62
+ word-break: break-all;
58
63
  }
59
64
  .item-box .left .time {
60
65
  margin-top: 1.06667vmin;
@@ -123,7 +128,7 @@
123
128
  margin-bottom: 1.5625vmin;
124
129
  }
125
130
  .item-box .left {
126
- max-width: 30.07812vmin;
131
+ max-width: 31.57552vmin;
127
132
  }
128
133
  .item-box .left .first {
129
134
  line-height: 2.60417vmin;
@@ -134,6 +139,9 @@
134
139
  font-size: 1.82292vmin;
135
140
  font-weight: 500;
136
141
  color: #333333;
142
+ word-wrap: break-word;
143
+ word-break: break-all;
144
+ max-width: 18.88021vmin;
137
145
  }
138
146
  .item-box .left .first .reward {
139
147
  margin-left: 1.04167vmin;
@@ -148,6 +156,8 @@
148
156
  }
149
157
  .item-box .left .first .reward .reward-text {
150
158
  margin-left: 0.52083vmin;
159
+ word-wrap: break-word;
160
+ word-break: break-all;
151
161
  }
152
162
  .item-box .left .time {
153
163
  margin-top: 0.52083vmin;
@@ -217,7 +227,7 @@
217
227
  margin-bottom: 1.90476vmin;
218
228
  }
219
229
  .item-box .left {
220
- max-width: 36.66667vmin;
230
+ max-width: 38.49206vmin;
221
231
  }
222
232
  .item-box .left .first {
223
233
  line-height: 3.1746vmin;
@@ -228,6 +238,9 @@
228
238
  font-size: 2.22222vmin;
229
239
  font-weight: 500;
230
240
  color: #333333;
241
+ word-wrap: break-word;
242
+ word-break: break-all;
243
+ max-width: 23.01587vmin;
231
244
  }
232
245
  .item-box .left .first .reward {
233
246
  margin-left: 1.26984vmin;
@@ -242,6 +255,8 @@
242
255
  }
243
256
  .item-box .left .first .reward .reward-text {
244
257
  margin-left: 0.63492vmin;
258
+ word-wrap: break-word;
259
+ word-break: break-all;
245
260
  }
246
261
  .item-box .left .time {
247
262
  margin-top: 0.63492vmin;
@@ -311,7 +326,7 @@
311
326
  margin-bottom: 1.5625vmin;
312
327
  }
313
328
  .item-box .left {
314
- max-width: 30.07812vmin;
329
+ max-width: 31.57552vmin;
315
330
  }
316
331
  .item-box .left .first {
317
332
  line-height: 2.60417vmin;
@@ -322,6 +337,9 @@
322
337
  font-size: 1.82292vmin;
323
338
  font-weight: 500;
324
339
  color: #333333;
340
+ word-wrap: break-word;
341
+ word-break: break-all;
342
+ max-width: 18.88021vmin;
325
343
  }
326
344
  .item-box .left .first .reward {
327
345
  margin-left: 1.04167vmin;
@@ -336,6 +354,8 @@
336
354
  }
337
355
  .item-box .left .first .reward .reward-text {
338
356
  margin-left: 0.52083vmin;
357
+ word-wrap: break-word;
358
+ word-break: break-all;
339
359
  }
340
360
  .item-box .left .time {
341
361
  margin-top: 0.52083vmin;
@@ -14,21 +14,28 @@ Component({
14
14
  return []
15
15
  }
16
16
  },
17
+ refreshStatus:{
18
+ type:Boolean,
19
+ value: false
20
+ }
17
21
  },
18
22
  data: {
19
23
  showTaskList: [],
20
24
  typeList: [],
21
- errorsList: []
25
+ showErrorList: [],
22
26
  },
23
27
  observers: {
24
28
  taskList: function (newVal) {
29
+ let showList = newVal
30
+ if(this.data.showErrorList.length){
31
+ showList = newVal.filter(item1 => !this.data.showErrorList.some(item2 => item2.id === item1.id))
32
+ }
25
33
  this.setData({
26
- showTaskList: newVal
34
+ showTaskList: showList
27
35
  })
28
36
  },
29
37
  showTaskList: function (newVal) {
30
38
  // 先给任务列表排个序,观看直播-评论-分享-点赞
31
- newVal.sort(this.customSort);
32
39
  let typeList = []
33
40
  typeList = newVal.reduce((acc,obj)=>{
34
41
  let found = acc.find(item => item.task_type === obj.task_type && (item.task_type === 1 || item.task_condition === obj.task_condition))
@@ -64,27 +71,25 @@ Component({
64
71
 
65
72
  return acc;
66
73
  },[])
74
+ typeList.sort(this.customSort)
67
75
  this.setData({
68
76
  typeList
69
77
  })
70
78
  },
71
79
  errorList: function (newVal) {
72
80
  let list = [];
73
- let filteredTaskList = this.properties.taskList.filter(item => {
74
- return !newVal.includes(item.id);
75
- });
81
+ let filteredTaskList = []
76
82
 
77
83
  this.properties.taskList.forEach(item=>{
78
- newVal.forEach(i=>{
79
- if(item.id === i){
80
- list.push(item)
81
- }
82
- })
84
+ if(newVal.includes(item.id)){
85
+ list.push(item)
86
+ }else{
87
+ filteredTaskList.push(item)
88
+ }
83
89
  })
84
90
 
85
- this.showTaskList = filteredTaskList
86
91
  this.setData({
87
- errorsList: list,
92
+ showErrorList: list,
88
93
  showTaskList: filteredTaskList
89
94
  })
90
95
  }
@@ -98,6 +103,29 @@ Component({
98
103
  detached: function () { },
99
104
  },
100
105
  methods: {
106
+ customSort(a,b){
107
+ const orderMap = {
108
+ 1: 0,
109
+ '2-1': 2,
110
+ '2-2': 3,
111
+ '2-3': 4
112
+ };
113
+
114
+ const getTypeOrder = (item) => {
115
+ if (item.task_type === 1) {
116
+ return 1;
117
+ } else if (item.task_type === 2 && item.task_condition) {
118
+ return orderMap[`2-${item.task_condition}`];
119
+ } else {
120
+ return 0;
121
+ }
122
+ };
123
+
124
+ const typeOrderA = getTypeOrder(a);
125
+ const typeOrderB = getTypeOrder(b);
126
+
127
+ return typeOrderA - typeOrderB;
128
+ },
101
129
  toReward(){
102
130
  this.setData({
103
131
  isShowTaskList: false
@@ -111,9 +139,8 @@ Component({
111
139
  btnClick(e){
112
140
  this.triggerEvent("btnClick",e.detail)
113
141
  },
114
- customSort(a, b) {
115
- const order = { 1: 0, 2: 1, 3: 2, 4: 3 }; // 定义排序顺序
116
- return order[a.task_type] - order[b.task_type];
142
+ onLoad(){
143
+ this.triggerEvent("onLoad","taskList")
117
144
  }
118
145
  },
119
146
  })
@@ -5,6 +5,10 @@ $deviceWidth: 750;
5
5
  }
6
6
 
7
7
  @mixin task-list{
8
+ height: 100%;
9
+ min-height: 40vmin;
10
+ // padding-bottom: vmin(32);
11
+ box-sizing: border-box;
8
12
  .error-box{
9
13
  background: #fff;
10
14
  padding: vmin(2) vmin(2) 0 vmin(2);
@@ -1,14 +1,21 @@
1
- <scroll-view class="task-list" scroll-y="true" bindrefresherrefresh="onLoad" refresher-enabled="{{true}}">
1
+ <scroll-view
2
+ class="task-list"
3
+ scroll-y="true"
4
+ bindrefresherrefresh="onLoad"
5
+ refresher-enabled="{{true}}"
6
+ refresher-triggered="{{ refreshStatus }}"
7
+ >
2
8
  <!-- 任务同步失败列表 -->
3
- <view class="error-box" wx:if="{{errorsList.length}}">
9
+ <view class="error-box" wx:if="{{showErrorList.length}}">
4
10
  <task-item
5
- wx:for="{{errorsList}}"
11
+ wx:for="{{showErrorList}}"
6
12
  wx:for-item="item"
7
13
  wx:for-index="index"
8
14
  taskItem="{{item}}"
9
15
  listType="error"
10
16
  isRadius="{{true}}"
11
17
  itemIndex="{{index}}"
18
+ wx:key="id"
12
19
  bind:btnClick="btnClick"
13
20
  />
14
21
  </view>
@@ -20,6 +27,7 @@
20
27
  wx:for-index="index"
21
28
  typeItem="{{item}}"
22
29
  typeIndex="{{index}}"
30
+ wx:key="id"
23
31
  bind:btnClick="btnClick"
24
32
  ></task-type>
25
33
 
@@ -1,3 +1,8 @@
1
+ .task-list {
2
+ height: 100%;
3
+ min-height: 40vmin;
4
+ box-sizing: border-box;
5
+ }
1
6
  .task-list .error-box {
2
7
  background: #fff;
3
8
  padding: 0.26667vmin 0.26667vmin 0 0.26667vmin;
@@ -22,6 +27,11 @@
22
27
  margin-top: 4.26667vmin;
23
28
  }
24
29
  @media screen and (min-width: 768px) and (orientation: portrait) {
30
+ .task-list {
31
+ height: 100%;
32
+ min-height: 40vmin;
33
+ box-sizing: border-box;
34
+ }
25
35
  .task-list .error-box {
26
36
  background: #fff;
27
37
  padding: 0.13021vmin 0.13021vmin 0 0.13021vmin;
@@ -47,6 +57,11 @@
47
57
  }
48
58
  }
49
59
  @media screen and (min-height: 630px) and (orientation: landscape) {
60
+ .task-list {
61
+ height: 100%;
62
+ min-height: 40vmin;
63
+ box-sizing: border-box;
64
+ }
50
65
  .task-list .error-box {
51
66
  background: #fff;
52
67
  padding: 0.15873vmin 0.15873vmin 0 0.15873vmin;
@@ -72,6 +87,11 @@
72
87
  }
73
88
  }
74
89
  @media screen and (min-height: 768px) and (orientation: landscape) {
90
+ .task-list {
91
+ height: 100%;
92
+ min-height: 40vmin;
93
+ box-sizing: border-box;
94
+ }
75
95
  .task-list .error-box {
76
96
  background: #fff;
77
97
  padding: 0.13021vmin 0.13021vmin 0 0.13021vmin;
@@ -14,7 +14,8 @@ Component({
14
14
  }
15
15
  },
16
16
  data: {
17
- activeNames:[1]
17
+ activeNames:[1],
18
+ detailList:[]
18
19
  },
19
20
  lifetimes: {
20
21
  // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
@@ -26,14 +27,49 @@ Component({
26
27
  },
27
28
  methods: {
28
29
  onChange(event){
29
- console.log("event.detail",event.detail)
30
30
  this.setData({
31
31
  activeNames: event.detail
32
32
  })
33
33
  },
34
34
  btnClick(e){
35
35
  this.triggerEvent("btnClick",e.detail)
36
+ },
37
+ customSort(a,b){
38
+ // 根据参与状态和状态排序顺序
39
+ const stateOrder = { "1": 0, "0": 1, "2": 2 };
40
+ const stateComparison = stateOrder[a.join_state.toString()] - stateOrder[b.join_state.toString()];
41
+ if (stateComparison !== 0) return stateComparison;
42
+
43
+ const liveState = stateOrder[a.state.toString()] - stateOrder[b.state.toString()];
44
+ if (liveState !== 0) return liveState;
45
+
46
+ // 参与中和未参与按开始时间升序排
47
+ if ((a.join_state === 1 || a.join_state === 0) && (b.join_state === 1 || b.join_state === 0)) {
48
+ const startComparison = new Date(a.start_at) - new Date(b.start_at);
49
+ if (startComparison !== 0) return startComparison;
50
+ }
51
+
52
+ // 已结束按结束时间降序排
53
+ if (a.state === 2 && b.state === 2) {
54
+ const endComparison = new Date(b.end_at) - new Date(a.end_at);
55
+ if (endComparison !== 0) return endComparison;
56
+ }
57
+
58
+ // 已完成按完成时间降序排
59
+ if (a.join_state === 2 && b.join_state === 2 && a.complete_at && b.complete_at) {
60
+ return new Date(b.complete_at) - new Date(a.complete_at);
61
+ }
62
+
63
+ return 0;
64
+ }
65
+ },
66
+ observers: {
67
+ "typeItem.detailList"(newVal) {
68
+ let list = JSON.parse(JSON.stringify(newVal))
69
+ list.sort(this.customSort)
70
+ this.setData({
71
+ detailList: list
72
+ })
36
73
  }
37
74
  },
38
- observers: {},
39
75
  })
@@ -31,7 +31,7 @@
31
31
  </view>
32
32
 
33
33
  <task-item
34
- wx:for="{{typeItem.detailList}}"
34
+ wx:for="{{detailList}}"
35
35
  wx:for-item="item"
36
36
  wx:for-index="index"
37
37
  taskItem="{{item}}"