jufubao-base 1.0.105 → 1.0.106-beta2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.105",
3
+ "version": "1.0.106-beta2",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -106,7 +106,7 @@
106
106
 
107
107
  <script>
108
108
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
109
- import { jfbRootExec } from "@/utils/xd.event";
109
+ import { jfbRootExec, jfbRootFnExec } from "@/utils/xd.event";
110
110
  import { Base64 } from "js-base64";
111
111
  import JfbBaseCardInfoMixin from "./JfbBaseCardInfoMixin";
112
112
  import componentsMixins from "@/mixins/componentsMixins";
@@ -162,6 +162,7 @@ export default {
162
162
 
163
163
  qrcode: "", //二维码
164
164
  showForm: true,
165
+ hasCon: "", //是否有优惠券
165
166
 
166
167
  //页面跳转地址
167
168
  backUrl: "",
@@ -174,6 +175,12 @@ export default {
174
175
  },
175
176
  created() {},
176
177
  methods: {
178
+ toShowCouponDialog(){
179
+ // jfbRootFnExec(this, 'onCustomEvent')("@showBaseConDialog", {user_card_number: "10001000001133"})
180
+ if(this.info){
181
+ jfbRootFnExec(this, 'onCustomEvent')("@showBaseConDialog", {user_card_number: this.info.card_number})
182
+ }
183
+ },
177
184
  handleToLink(path) {
178
185
  if (this.qrcode) {
179
186
  jfbRootExec("qrCardBind", {
@@ -183,14 +190,7 @@ export default {
183
190
  },
184
191
  })
185
192
  .then((res) => {
186
- this.$xdAlert({
187
- content: "绑定成功",
188
- close: () => {
189
- this.$xdUniHelper.redirectTo({
190
- url: this.backUrl,
191
- });
192
- },
193
- });
193
+ this.handlerAfterBindCard();
194
194
  })
195
195
  .catch();
196
196
  } else {
@@ -202,19 +202,32 @@ export default {
202
202
  },
203
203
  })
204
204
  .then((res) => {
205
- console.log(this.$xdAlert, "this.$xdAlertfsdfs");
206
- this.$xdAlert({
207
- content: "绑定成功",
208
- close: () => {
209
- this.$xdUniHelper.redirectTo({
210
- url: this.backUrl,
211
- });
212
- },
213
- });
205
+ this.handlerAfterBindCard();
214
206
  })
215
207
  .catch();
216
208
  }
217
209
  },
210
+ handlerAfterBindCard(){
211
+ if(this.hasCon){
212
+ this.toShowCouponDialog();
213
+ this.$bus.$on("onCloseConDialog",(container_id) => {
214
+ if(container_id === this.hasCon){
215
+ this.$xdUniHelper.redirectTo({
216
+ url: this.backUrl,
217
+ });
218
+ }
219
+ })
220
+ }else{
221
+ this.$xdAlert({
222
+ content: "票券绑定成功",
223
+ close: () => {
224
+ this.$xdUniHelper.redirectTo({
225
+ url: this.backUrl,
226
+ });
227
+ },
228
+ });
229
+ }
230
+ },
218
231
  init() {
219
232
  this.backUrl = getContainerPropsValue(
220
233
  this.container,
@@ -327,6 +340,12 @@ export default {
327
340
  onJfbShow(options) {
328
341
  this.onJfbLoad(options);
329
342
  },
343
+ onJfbCustomEvent({action, data}){
344
+ if(action === 'baseConDialog@hasCon'){
345
+ this.hasCon = data;
346
+ }
347
+ console.log('onJfbCustomEvent',action, data);
348
+ }
330
349
  },
331
350
  };
332
351
  </script>
@@ -124,7 +124,7 @@
124
124
 
125
125
  <script>
126
126
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
127
- import { jfbRootExec } from "@/utils/xd.event";
127
+ import { jfbRootExec, jfbRootFnExec } from "@/utils/xd.event";
128
128
  import JfbBaseCardInfoEntryMixin from "./JfbBaseCardInfoEntryMixin";
129
129
  import { getContainerPropsValue } from "@/utils/xd.base";
130
130
  import getServiceUrl from "@/common/getServiceUrl";
@@ -157,6 +157,7 @@ export default {
157
157
 
158
158
  qrcode: "", //二维码
159
159
  showForm: true,
160
+ hasCon: "",
160
161
 
161
162
  //页面跳转地址
162
163
  backUrl: "",
@@ -175,6 +176,12 @@ export default {
175
176
  },
176
177
  created() {},
177
178
  methods: {
179
+ toShowCouponDialog(){
180
+ // jfbRootFnExec(this, 'onCustomEvent')("@showBaseConDialog", {user_card_number: "10001000001133"})
181
+ if(this.info){
182
+ jfbRootFnExec(this, 'onCustomEvent')("@showBaseConDialog", {user_card_number: this.info.card_number})
183
+ }
184
+ },
178
185
  handleToLink() {
179
186
  if(this.info.card_point===0) {
180
187
  this.$xdConfirm({
@@ -200,14 +207,7 @@ export default {
200
207
  },
201
208
  })
202
209
  .then((res) => {
203
- this.$xdAlert({
204
- content: "票券绑定成功",
205
- close: () => {
206
- this.$xdUniHelper.redirectTo({
207
- url: this.backUrl,
208
- });
209
- },
210
- });
210
+ this.handlerAfterBindCard();
211
211
  })
212
212
  .catch();
213
213
  } else {
@@ -221,18 +221,32 @@ export default {
221
221
  })
222
222
  .then((res) => {
223
223
  console.log(this.$xdAlert, "this.$xdAlertfsdfs");
224
- this.$xdAlert({
225
- content: "票券绑定成功",
226
- close: () => {
227
- this.$xdUniHelper.redirectTo({
228
- url: this.backUrl,
229
- });
230
- },
231
- });
224
+ this.handlerAfterBindCard();
232
225
  })
233
226
  .catch();
234
227
  }
235
228
  },
229
+ handlerAfterBindCard(){
230
+ if(this.hasCon){
231
+ this.toShowCouponDialog();
232
+ this.$bus.$on("onCloseConDialog",(container_id) => {
233
+ if(container_id === this.hasCon){
234
+ this.$xdUniHelper.redirectTo({
235
+ url: this.backUrl,
236
+ });
237
+ }
238
+ })
239
+ }else{
240
+ this.$xdAlert({
241
+ content: "票券绑定成功",
242
+ close: () => {
243
+ this.$xdUniHelper.redirectTo({
244
+ url: this.backUrl,
245
+ });
246
+ },
247
+ });
248
+ }
249
+ },
236
250
  init() {
237
251
  this.backUrl = getContainerPropsValue(
238
252
  this.container,
@@ -362,6 +376,12 @@ export default {
362
376
  onJfbShow(options) {
363
377
  this.onJfbLoad(options);
364
378
  },
379
+ onJfbCustomEvent({action, data}){
380
+ if(action === 'baseConDialog@hasCon'){
381
+ this.hasCon = data;
382
+ }
383
+ console.log('onJfbCustomEvent',action, data);
384
+ }
365
385
  },
366
386
  };
367
387
  </script>
@@ -16,4 +16,39 @@ module.exports = [
16
16
  isConsole: true,
17
17
  disabled: true,
18
18
  },
19
+ {
20
+ mapFnName: 'getCouponList', //自定义方法名字(必选)
21
+ title: '获取优惠券列表',
22
+ path: '/sms-coupon/v1/activity-prizes-user/list',
23
+ isRule: false,
24
+ params: {
25
+ distribution_method: ['发放方式 entry=主动发放, homed=首页发放,paid=消费后发放,card_binded=绑定卡后发放', 'String', '选填'],
26
+ namespace: ['业务线', 'String', '必填'],
27
+ },
28
+ isConsole: true,
29
+ disabled: true,
30
+ },
31
+ {
32
+ mapFnName: 'getAllCoupon', //自定义方法名字(必选)
33
+ title: '领取优惠券',
34
+ path: '/sms-coupon/v1/activity-prizes-user/set',
35
+ isRule: false,
36
+ params: {
37
+ distribution_method: ['发放方式 entry=主动发放, homed=首页发放,paid=消费后发放,card_binded=绑定卡后发放', 'String', '选填'],
38
+ namespace: ['业务线', 'String', '必填'],
39
+ },
40
+ isConsole: true,
41
+ disabled: true,
42
+ },
43
+ {
44
+ mapFnName: 'getCouponResult', //自定义方法名字(必选)
45
+ title: '轮询查询活动结果',
46
+ path: '/sms-coupon/v1/activity-prizes-user/get',
47
+ isRule: false,
48
+ params: {
49
+ tmp_order_number: ['tmp_order_number', 'String', '选填'],
50
+ },
51
+ isConsole: true,
52
+ disabled: true,
53
+ },
19
54
  ];
@@ -31,6 +31,19 @@ export default {
31
31
  { label: '切换', value: 2 },
32
32
  ]
33
33
  },
34
+ {
35
+ label: "触发事件:",
36
+ ele: "xd-select-list",
37
+ valueKey: "distribution_method",
38
+ value: data.distribution_method || "",
39
+ placeholder: "请选择触发事件",
40
+ className: 'input80',
41
+ list: [
42
+ { label: "首页发放", value: "homed" },
43
+ { label: "支付成功", value: "paid" },
44
+ { label: "绑卡成功", value: "card_binded" },
45
+ ]
46
+ },
34
47
  {
35
48
  label: '弹窗间隔:',
36
49
  ele: 'el-input',
@@ -17,9 +17,9 @@
17
17
  </view>
18
18
  <!-- #endif -->
19
19
  <view class="jfb-base-con-dialog__body">
20
- <view class="jfb-base-con-dialog__body-dialog" v-if="isShow">
20
+ <view v-if="isShow" class="jfb-base-con-dialog__body-dialog">
21
21
  <view class="jfb-base-con-dialog__body-dialog-mask"></view>
22
- <view class="jfb-base-con-dialog__body-dialog-content">
22
+ <view v-if="distribution_method !== 'card_binded'" class="jfb-base-con-dialog__body-dialog-content">
23
23
  <view v-if="list.length>1" class="jfb-base-con-dialog__body-dialog-content-num">
24
24
  <text>{{ currentIndex + 1 }}/{{ list.length }}</text>
25
25
  </view>
@@ -51,7 +51,16 @@
51
51
  size="64"
52
52
  ></xd-font-icon>
53
53
  </view>
54
+ <view v-else class="jfb-base-con-dialog__body-dialog-content">
55
+ <xd-cou-card-bind
56
+ :list="couponList"
57
+ :setting="couponOther"
58
+ @closeDialog="handleCardBindClose"
59
+ @getCoupont="handleGetCoupon"
60
+ ></xd-cou-card-bind>
61
+ </view>
54
62
  </view>
63
+
55
64
  <view
56
65
  :style="{ background: backgroundColor, color: warningColor }"
57
66
  class="jfb-base-con-dialog__body-pop"
@@ -64,7 +73,7 @@
64
73
 
65
74
  <script>
66
75
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
67
- import { jfbRootExec, JfbEvent } from "@/utils/xd.event";
76
+ import { jfbRootExec, JfbEvent, jfbRootFnExec } from "@/utils/xd.event";
68
77
  import JfbBaseConDialogMixin from "./JfbBaseConDialogMixin";
69
78
  import componentsMixins from "@/mixins/componentsMixins";
70
79
  import extsMixins from "@/mixins/extsMixins";
@@ -74,11 +83,13 @@ import colorCardMixins from "@/mixins/colorCardMixins";
74
83
  const Color = require("color");
75
84
  import { mapState } from "vuex";
76
85
  import storage from "@/common/storage";
86
+ import XdCouCardBind from "./XdCouCardBind";
77
87
 
78
88
  export default {
79
89
  name: "JfbBaseConDialog",
80
90
  components: {
81
91
  XdFontIcon,
92
+ XdCouCardBind
82
93
  },
83
94
  mixins: [componentsMixins, extsMixins, JfbBaseConDialogMixin],
84
95
  data() {
@@ -93,6 +104,15 @@ export default {
93
104
  isPreview: false, //是否预览
94
105
  activity_id: "",
95
106
  backgroundColor: "",
107
+ distribution_method: "homed", //触发事件
108
+ dispatchData: "", //触发事件参数
109
+
110
+ couponList: [],
111
+ couponOther: {},
112
+ order_num: null,
113
+ timer: null,
114
+ timeNum: 0,
115
+
96
116
  };
97
117
  },
98
118
  computed: {
@@ -114,6 +134,7 @@ export default {
114
134
  this.list_url = getContainerPropsValue(value, "content.list_url", {
115
135
  value: "",
116
136
  }).value;
137
+ this.distribution_method = getContainerPropsValue(value, "content.distribution_method", "homed");
117
138
  this.type = getContainerPropsValue(value, "content.type", 1);
118
139
  this.isHide = getContainerPropsValue(value, "content.isHide", false);
119
140
  this.time = Number(getContainerPropsValue(value, "content.time", 3));
@@ -121,16 +142,107 @@ export default {
121
142
  this.isShow = !this.isHide;
122
143
  }
123
144
  },
124
- getDialogList() {
145
+ //领取优惠券
146
+ handleGetCoupon(item){
147
+ this.$xdShowLoading({});
148
+ jfbRootExec("getAllCoupon", {
149
+ vm: this,
150
+ data: {
151
+ prize_id: item.prize_id,
152
+ distribution_method: this.distribution_method,
153
+ ...this.dispatchData
154
+ }
155
+ }).then(res => {
156
+ if (res.code == 400) {
157
+ this.$xdHideLoading();
158
+ this.$xdAlert({
159
+ content: res.message,
160
+ zIndex: 3200,
161
+ time: 2000,
162
+ isClose: false,
163
+ });
164
+ this.getDialogList();
165
+ return;
166
+ }
167
+ this.order_num = res.tmp_order_number;
168
+ setTimeout(()=>{
169
+ this.getResult();
170
+ },1000)
171
+ }).catch((err) => {
172
+ console.log(err, "err");
173
+ });
174
+ },
175
+ getResult() {
176
+ jfbRootExec("getCouponResult", {
177
+ vm: this,
178
+ data: {
179
+ tmp_order_number: this.order_num,
180
+ },
181
+ })
182
+ .then((res) => {
183
+ if (res.status_type === "success") {
184
+ this.order_num = null;
185
+ this.$xdHideLoading();
186
+ this.$xdAlert({
187
+ content: "领取成功",
188
+ zIndex: 3200,
189
+ time: 2000,
190
+ isClose: false,
191
+ });
192
+ this.getDialogList();
193
+ if (this.timer) {
194
+ this.timeNum = 0;
195
+ clearTimeout(this.timer);
196
+ }
197
+ return;
198
+ }
199
+ if (res.status_type === "error") {
200
+ this.$xdHideLoading();
201
+ this.$xdAlert({
202
+ content: res.message,
203
+ zIndex: 3200,
204
+ time: 2000,
205
+ isClose: false,
206
+ });
207
+ if (res.code == 400) {
208
+ this.getDialogList();
209
+ }
210
+ if (this.timer) {
211
+ this.timeNum = 0;
212
+ clearTimeout(this.timer);
213
+ }
214
+ return;
215
+ }
216
+
217
+ this.timer = setTimeout(() => {
218
+ this.getResult();
219
+ if (this.timeNum > 5) {
220
+ this.$xdLog.setARMSInfo(
221
+ { message: "领取中" },
222
+ `pay_${res.status_type}`
223
+ );
224
+ }
225
+ this.timeNum++;
226
+ }, Math.pow(2, this.timeNum > 5 ? 5 : this.timeNum) * 1000);
227
+ })
228
+ .catch((err) => {
229
+ this.$xdHideLoading();
230
+ console.log(err, "err");
231
+ });
232
+ },
233
+ p_getDialogList(){
125
234
  jfbRootExec("getCouponDialogList", {
126
235
  vm: this,
127
236
  data: {
128
237
  namespace: this.pageBusinessCode,
238
+ distribution_method: this.distribution_method,
239
+ ...this.dispatchData
129
240
  },
130
241
  })
131
242
  .then((res) => {
132
243
  console.log(res, "resresres");
133
244
  this.list = res.list;
245
+ if(res.list.length === 0) return;
134
246
  this.currentImage = getServiceUrl(
135
247
  this.list[this.currentIndex].app_activity_url
136
248
  );
@@ -144,6 +256,31 @@ export default {
144
256
  console.log(err, "err");
145
257
  });
146
258
  },
259
+ p_getCouponList(){
260
+ jfbRootExec("getCouponList", {
261
+ vm: this,
262
+ data: {
263
+ distribution_method: this.distribution_method,
264
+ ...this.dispatchData
265
+ }
266
+ }).then(res => {
267
+ const { list, ...other } = res;
268
+ this.couponList = list;
269
+ this.couponOther = other;
270
+ if(res.can_take === "Y" && res.has_times === "Y" && list.length > 0){
271
+ this.isShow = true;
272
+ }else{
273
+ this.handleCardBindClose();
274
+ }
275
+ })
276
+ },
277
+ getDialogList() {
278
+ if(this.distribution_method === 'card_binded'){
279
+ this.p_getCouponList();
280
+ }else{
281
+ this.p_getDialogList();
282
+ }
283
+ },
147
284
  handlePop() {
148
285
  console.log("this.time", this.time * 60 + "分钟");
149
286
  storage.set(this.containerId, 1, this.time);
@@ -151,12 +288,23 @@ export default {
151
288
  },
152
289
  onJfbLoad(options) {
153
290
  console.log(11111);
291
+ //支付跟绑卡是主动触发
154
292
  try {
155
- if (!storage.get(this.containerId)) this.getDialogList();
293
+ if (!storage.get(this.containerId) &&
294
+ this.distribution_method !== "paid" &&
295
+ this.distribution_method !== "card_binded") this.getDialogList();
156
296
  } catch (error) {
157
297
  console.log(error, "errorerror");
158
298
  }
299
+ if(this.distribution_method === 'card_binded'){
300
+ jfbRootFnExec(this, 'onCustomEvent')("baseConDialog@hasCon", this.containerId);
301
+ }
302
+ },
303
+ handleCardBindClose(){
304
+ this.isShow = false;
305
+ this.$bus.$emit("onCloseConDialog", this.containerId);
159
306
  },
307
+
160
308
  onJfbUpdate(data) {
161
309
  storage.remove(this.containerId);
162
310
  this.getDialogList();
@@ -167,7 +315,7 @@ export default {
167
315
  },
168
316
  handleToList() {
169
317
  this.$xdUniHelper.navigateTo({
170
- url: `${this.list_url}?activity_id=${this.activity_id}&distribution_method=homed`,
318
+ url: `${this.list_url}?activity_id=${this.activity_id}&distribution_method=${this.distribution_method}`,
171
319
  });
172
320
  },
173
321
  handleClose() {
@@ -201,6 +349,13 @@ export default {
201
349
  );
202
350
  this.activity_id = this.list[this.currentIndex].activity_id;
203
351
  },
352
+ onJfbCustomEvent({action, data}){
353
+ if(action === '@showBaseConDialog'){
354
+ this.dispatchData = data;
355
+ this.getDialogList();
356
+ }
357
+ console.log('onJfbCustomEvent',action, data);
358
+ }
204
359
  },
205
360
  };
206
361
  </script>
@@ -0,0 +1,197 @@
1
+ <template>
2
+ <view class="xd-cou-card-bind">
3
+ <view class="ticket_box" :style="{
4
+ backgroundImage: dialogBackground
5
+ }">
6
+ <view class="ticket_list">
7
+ <view class="ticket_item" :class="item.can_take_num"
8
+ v-for="(item,i) in uiList" :key="i"
9
+ :style="{backgroundImage: item.backgroundImage}"
10
+ >
11
+ <view class="ticket_names">
12
+ <view class="name_main">{{item.prize_type}}</view>
13
+ <view class="name_sub">{{item.prize_name}}</view>
14
+ </view>
15
+ <view class="name_tit">{{item.prize_name}}</view>
16
+ <xd-font-icon class="ticket_icon" :icon="item.icon"></xd-font-icon>
17
+ <view class="btn">
18
+ <xd-button
19
+ size="small"
20
+ type="primary"
21
+ :disabled="item.remain_card_count == 0"
22
+ :style="{
23
+ backgroundImage: item.btnImage
24
+ }"
25
+ @click="getCoupont(item)"
26
+ >{{item.btn_txt}}</xd-button>
27
+ </view>
28
+ </view>
29
+ </view>
30
+ </view>
31
+
32
+ <xd-font-icon
33
+ @click="handleClose"
34
+ class="dialog_close"
35
+ icon="iconguanbi_xian"
36
+ color="#fff"
37
+ size="64"
38
+ ></xd-font-icon>
39
+ </view>
40
+ </template>
41
+ <script>
42
+ import XdButton from "@/components/XdButton/XdButton";
43
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
44
+ import getServiceUrl from "@/common/getServiceUrl";
45
+ export default{
46
+ name: "XdCouCardBind",
47
+ components: {
48
+ XdButton,
49
+ XdFontIcon
50
+ },
51
+ props: {
52
+ list: {
53
+ type: Array,
54
+ default(){
55
+ return []
56
+ }
57
+ },
58
+ setting: {}
59
+ },
60
+ computed: {
61
+ uiList(){
62
+ return this.list.map(item => {
63
+ let mapArr = {"Y": "去查看", "P": "领取", "N": "已发完"}
64
+ item.btn_txt = mapArr[item.can_take_num];
65
+ if(item.can_take_num === "Y" || item.can_take_num === "P"){
66
+ item.backgroundImage = `url(${getServiceUrl(this.setting.app_coupon_url)})`;
67
+ item.btnImage = `url(${getServiceUrl(this.setting.app_coupon_button_bg_url)})`;
68
+ item.icon = item.can_take_num === "Y" ? "iconyilingqu" : "icondailingqu";
69
+ }else if(item.can_take_num === "N"){
70
+ item.backgroundImage = `url(${getServiceUrl(this.setting.app_coupon_invalid_url)})`;
71
+ item.btnImage = "";
72
+ item.icon = "iconyifawan";
73
+ }
74
+ return item;
75
+ })
76
+ },
77
+ dialogBackground(){
78
+ return `url(${getServiceUrl(this.setting.background)})`;
79
+ }
80
+ },
81
+ data(){
82
+ return {
83
+
84
+ }
85
+ },
86
+ methods: {
87
+ //领取优惠券
88
+ getCoupont(item){
89
+ if(item.can_take_num === "P"){
90
+ this.$emit("getCoupont", item);
91
+ }
92
+ },
93
+ handleClose(){
94
+ this.$emit("closeDialog");
95
+ }
96
+ }
97
+ }
98
+ </script>
99
+
100
+ <style lang="less" scoped>
101
+ @ticketHeight: 180rpx;
102
+ @bgHeight: @ticketHeight - 40rpx;
103
+ .xd-cou-card-bind{
104
+ width: 600rpx;
105
+ max-height: 800rpx;
106
+ padding-bottom: 80rpx;
107
+ .ticket_box{
108
+ background-color: #fff;
109
+ background-size: 100% auto;
110
+ background-repeat: no-repeat;
111
+ padding-top: 200rpx;
112
+ border-radius: 20rpx;
113
+ box-sizing: border-box;
114
+ padding-bottom: 20rpx;
115
+ }
116
+
117
+ .ticket_item{
118
+ display: flex;
119
+ position: relative;
120
+ width: 540rpx;
121
+ height: @ticketHeight;
122
+ margin: 20rpx auto;
123
+ border-radius: 20rpx;
124
+ padding: 30rpx;
125
+ box-sizing: border-box;
126
+ background: #EEEEEE url("//sandbox-img.jufubao.cn/uploads/20231205/fee9b644b83495c9ba8a4db277600b54.jpg") no-repeat;
127
+ background-size: auto @bgHeight;
128
+ background-position: 30rpx center;
129
+
130
+ &.P,
131
+ &.Y{
132
+
133
+ }
134
+ &.N{
135
+ .ticket_names{
136
+ .name_main{
137
+ color: #BBBBBB;
138
+ }
139
+ }
140
+ .ticket_icon{
141
+ color: #D6D6D6;
142
+
143
+ }
144
+ .btn{
145
+ .xd-button{
146
+ background-color: #DDDDDD !important;
147
+ color: #999999 !important;
148
+ }
149
+ }
150
+ }
151
+ .name_tit{
152
+ font-size: 28rpx;
153
+ margin-left: 20rpx;
154
+ }
155
+ .ticket_names{
156
+ width: 168rpx;
157
+ height: 120rpx;
158
+ text-align: center;
159
+ font-size: 28rpx;
160
+ .name_main{
161
+ margin-bottom: 26rpx;
162
+ margin-top: 20rpx;
163
+ color: #fb5b3f;
164
+ }
165
+ .name_sub{
166
+ font-size: 24rpx;
167
+ color: #FFFFFF;
168
+ }
169
+ }
170
+ .ticket_icon{
171
+ font-size: 80rpx !important;
172
+ position: absolute;
173
+ top: 0;
174
+ right: 0;
175
+ }
176
+ .btn{
177
+ position: absolute;
178
+ right: 20rpx;
179
+ bottom: 20rpx;
180
+ .xd-button{
181
+ height: 30rpx;
182
+ width: 100rpx;
183
+ font-size: 28rpx;
184
+ background-size: cover !important;
185
+ background-color: #fb5b3f;
186
+ }
187
+ }
188
+
189
+ }
190
+ .dialog_close{
191
+ position: absolute;
192
+ bottom: 0rpx;
193
+ left: 50%;
194
+ transform: translateX(-50%);
195
+ }
196
+ }
197
+ </style>
@@ -6,6 +6,17 @@
6
6
  export default {
7
7
  style: [],
8
8
  content: [
9
+ {
10
+ label: '查看已领票券路径:', //label
11
+ ele: 'xd-select-pages-path', //package 名称
12
+ valueKey: 'collectedPath', //form[valueKey]
13
+ placeholder: '请选择查看已领票券路径',
14
+ value: null,
15
+ setting: {
16
+ router: XdBus.getParentApi('getPagesTree'),
17
+ },
18
+ inline: false,
19
+ },
9
20
  // {
10
21
  // label: '领券规则:',
11
22
  // ele: 'xd-site-news',
@@ -16,15 +16,14 @@
16
16
  <view class="jfb-base-con-list__edit-icon" @click="delEdit">删除</view>
17
17
  </view>
18
18
  <!-- #endif -->
19
- <view class="jfb-base-con-list__body" v-if="done">
19
+ <view class="jfb-base-con-list__body" v-if="done" :style="{
20
+ backgroundImage: `url(${background})`,
21
+ backgroundSize: '100%',
22
+ backgroundRepeat: 'no-repeat',
23
+ minHeight: `${layoutInfo.bodyMinHeightRpx}rpx`,
24
+ }">
20
25
  <view
21
26
  v-if="couponList&&couponList.length > 0"
22
- :style="{
23
- backgroundImage: `url(${background})`,
24
- backgroundSize: '100%',
25
- backgroundRepeat: 'no-repeat',
26
- height: `${layoutInfo.bodyMinHeightRpx}rpx`,
27
- }"
28
27
  >
29
28
  <view class="jfb-base-con-list__body-content">
30
29
  <view class="jfb-base-con-list__body-content-header">
@@ -41,7 +40,7 @@
41
40
  <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
42
41
  </view>
43
42
  </view>
44
- <view class="jfb-base-con-list__body-content-list">
43
+ <view v-if="can_take === 'Y' && has_times === 'Y'" class="jfb-base-con-list__body-content-list">
45
44
  <view v-for="(item, index) in couponList" :key="index">
46
45
  <view
47
46
  class="jfb-base-con-list__body-content-list-item"
@@ -106,24 +105,27 @@
106
105
  <view></view>
107
106
 
108
107
  <xd-button
109
- v-if="item.can_take_num !== 'Y'"
110
108
  size="small"
111
- :disabled="item.remain_card_count == 0"
109
+ :disabled="item.can_take_num !=='Y' && item.remain_card_count == 0"
112
110
  @click="getCoupont(item)"
113
111
  type="primary"
112
+ style="width: 170rpx;height: 60rpx;"
114
113
  :style="item.btn"
115
114
  :color="item.infoColor"
116
- >领取</xd-button
117
- >
115
+ >{{ item.btn_txt }}</xd-button>
118
116
  </view>
119
117
  </view>
120
118
  </view>
121
119
  </view>
122
120
  </view>
123
- <view class="jfb-base-con-list__body-content-foot"
124
- >可在我的-我的票券进行查看</view
125
- >
121
+ <view v-else class="jfb-base-con-list__body-content-list" style="padding-bottom: 60rpx;">
122
+ <image mode="widthFix" :src="used_up_url"></image>
123
+ </view>
126
124
  </view>
125
+ <view class="jfb-base-con-list__body-content-foot"
126
+ @click="toCoupon"
127
+ >查看已领票券</view
128
+ >
127
129
  </view>
128
130
  <view
129
131
  v-else
@@ -180,6 +182,9 @@ export default {
180
182
  activity_id: "",
181
183
  background: "",
182
184
  app_coupon_url: "",
185
+ used_up_url: "",
186
+ can_take: "",
187
+ has_times: "",
183
188
  method: "entry",
184
189
  maxTime: 5, //最长轮询2的N次方(秒)
185
190
  date: 2, //时间底数
@@ -188,6 +193,8 @@ export default {
188
193
  order_num: null,
189
194
  done: false,
190
195
  message: "",
196
+
197
+ collectedPath: "",
191
198
  };
192
199
  },
193
200
  computed: {
@@ -213,6 +220,7 @@ export default {
213
220
  init(value) {
214
221
  this.contentBackground = '#FFF8F8';
215
222
  this.iconColor = '#FF4D4A';
223
+ this.collectedPath = getContainerPropsValue(value, "content.collectedPath", {value: ''}).value;
216
224
  },
217
225
  getList() {
218
226
  jfbRootExec("getCouponList", {
@@ -225,16 +233,22 @@ export default {
225
233
  })
226
234
  .then((res) => {
227
235
  this.background = getServiceUrl(res.background);
236
+ this.used_up_url = res.used_up_url && getServiceUrl(res.used_up_url);
237
+ this.can_take = res.can_take;
238
+ this.has_times = res.has_times;
239
+
228
240
  this.couponList =
229
241
  res.list &&
230
242
  res.list.length > 0 &&
231
243
  res.list.map((item) => {
244
+ let mapArr = {"Y": "去查看", "P": "领取", "N": "已发完"}
245
+ item.btn_txt = mapArr[item.can_take_num];
232
246
  if (item.can_take_num === "Y" || item.can_take_num === "P") {
233
247
  //按钮样式
234
248
  item.btn = res.app_coupon_button_bg_url
235
249
  ? {
236
250
  backgroundImage: `url(${getServiceUrl(
237
- res.app_coupon_button_bg_url
251
+ item.can_take_num === "Y" ? res.app_coupon_button_see_url : res.app_coupon_button_bg_url
238
252
  )})`,
239
253
  backgroundSize: "100%",
240
254
  backgroundRepeat: "no-repeat",
@@ -288,7 +302,16 @@ export default {
288
302
  console.log(err, "err");
289
303
  });
290
304
  },
305
+ toCoupon(){
306
+ this.$xdUniHelper.navigateTo({
307
+ url: this.collectedPath,
308
+ });
309
+ },
291
310
  getCoupont(item) {
311
+ if(item.can_take_num === "Y") {
312
+ this.toCoupon();
313
+ return;
314
+ }
292
315
  this.$xdShowLoading({});
293
316
  jfbRootExec("getAllCoupon", {
294
317
  vm: this,
@@ -329,6 +352,7 @@ export default {
329
352
  })
330
353
  .then((res) => {
331
354
  if (res.status_type === "success") {
355
+ this.order_num = null;
332
356
  this.$xdHideLoading();
333
357
  this.$xdAlert({
334
358
  content: "领取成功",
@@ -438,6 +462,9 @@ export default {
438
462
  &__body {
439
463
  position: relative;
440
464
  overflow-y: auto;
465
+ padding-top: 82px;
466
+ box-sizing: border-box;
467
+ background-color: #FAFAFA;
441
468
  .empty_data {
442
469
  text-align: center;
443
470
  color: #999999;
@@ -455,8 +482,6 @@ export default {
455
482
  border-radius: unit(20, rpx);
456
483
  background: #fff;
457
484
  padding: unit(34, rpx);
458
- position: relative;
459
- top: unit(164, rpx);
460
485
  margin-right: auto;
461
486
  margin-left: auto;
462
487
  width: unit(650, rpx);
@@ -534,7 +559,7 @@ export default {
534
559
  color: #a6a6a6;
535
560
  font-size: unit(24, rpx);
536
561
  text-align: center;
537
- margin-top: unit(40, rpx);
562
+ margin: unit(40, rpx) 0;
538
563
  }
539
564
  }
540
565
  }
@@ -1,11 +1,25 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports = {
4
- getCouponList: {"list":[
5
- {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55},
6
- {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55},
7
- {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55}
8
- ],"background":"//sandbox-img.jufubao.cn/uploads/20231204/96b801e0dc27422c183dc90d905dd2ed.jpg","can_take":"Y","message":"","app_coupon_url":"//sandbox-img.jufubao.cn/uploads/20231205/fee9b644b83495c9ba8a4db277600b54.jpg","app_activity_button":"//sandbox-img.jufubao.cn/uploads/20231207/35f3065b2b2bc3fc2dda73d7b5b9eae8.jpg","app_coupon_button_bg_url":"//sandbox-img.jufubao.cn/uploads/20231212/026a3ea901f87f51b531d06c24604676.png","app_coupon_invalid_url":"//sandbox-img.jufubao.cn/uploads/20231208/8b153ce4870686a37295c16fbc992235.jpg","request_id":"a2603f2a480485f4"},
4
+ getCouponList: {
5
+ "list":[
6
+ {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55},
7
+ {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55},
8
+ {"prize_id":153,"prize_name":"满50减50","prize_type":"满减券","prize_num":1,"can_take":"Y","is_over":"N","can_take_num":"P","today_times":1,"today_num":0,"total_times":1,"total_num":0,"remain_card_count":55}
9
+ ],
10
+ "background":"//sandbox-img.jufubao.cn/uploads/20231204/96b801e0dc27422c183dc90d905dd2ed.jpg",
11
+ "used_up_url": "",
12
+ "has_times": "Y",
13
+ "can_take":"Y",
14
+ "message":"",
15
+ "app_coupon_url":"//sandbox-img.jufubao.cn/uploads/20231205/fee9b644b83495c9ba8a4db277600b54.jpg",
16
+ "app_activity_button":"//sandbox-img.jufubao.cn/uploads/20231207/35f3065b2b2bc3fc2dda73d7b5b9eae8.jpg",
17
+ "app_coupon_button_bg_url":"//sandbox-img.jufubao.cn/uploads/20231212/026a3ea901f87f51b531d06c24604676.png",
18
+ "app_coupon_button_see_url": "//sandbox-img.jufubao.cn/uploads/20231212/026a3ea901f87f51b531d06c24604676.png",
19
+ "app_coupon_invalid_url":"//sandbox-img.jufubao.cn/uploads/20231208/8b153ce4870686a37295c16fbc992235.jpg",
20
+ "rule":"<p>打发&middot;</p>",
21
+ "request_id":"a2603f2a480485f4"
22
+ },
9
23
  getAllCoupon: {
10
24
  "request_id": "5987aa28c709d4ef"
11
25
  }
@@ -380,6 +380,7 @@ export default {
380
380
  list: [
381
381
  {"label": "一行", "value": 1},
382
382
  {"label": "两行", "value": 2},
383
+ {"label": "三行", "value": 3},
383
384
  ]
384
385
  },
385
386
  params['isCarousel']===2 && params['rows'] === 1 && {
@@ -112,7 +112,7 @@
112
112
  getHeight() {
113
113
  let height = this.height * this.config.rows;
114
114
  let padding = 0;
115
- if (this.config.rows === 2) padding = Number(this.config.padding) * this.$rpxNum;
115
+ if (this.config.rows >= 2) padding = Number(this.config.padding) * this.$rpxNum * (this.config.rows -1);
116
116
  return height + padding;
117
117
  },
118
118
  },
@@ -321,7 +321,7 @@ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
321
321
  import XdDailog from "@/components/XdDailog/XdDailog";
322
322
  import XdButton from "@/components/XdButton/XdButton";
323
323
  import XdUnit from "@/components/XdUnit/XdUnit";
324
- import { jfbRootExec } from "@/utils/xd.event";
324
+ import { jfbRootExec, jfbRootFnExec } from "@/utils/xd.event";
325
325
  import JfbBaseSuccessMixin from "./JfbBaseSuccessMixin";
326
326
  import componentsMixins from "@/mixins/componentsMixins";
327
327
  import extsMixins from "@/mixins/extsMixins";
@@ -495,6 +495,9 @@ export default {
495
495
  },
496
496
  })
497
497
  .then((res) => {
498
+ if(res.status.status_type === 'success') {
499
+ jfbRootFnExec(this, 'onCustomEvent')("@showBaseConDialog", {order_number: this.order_id});
500
+ }
498
501
  this.handleOrderResolve(res);
499
502
  })
500
503
  .catch((err) => {