jufubao-base 1.0.119 → 1.0.120

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.119",
3
+ "version": "1.0.120",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description API模型
5
+ * 建议:Ffff=>模块 Xxxx=>自定义名字
6
+ * 获取单记录(getByIdFfffXxxx)
7
+ * 获取列表记录(getByListFfffXxxx)
8
+ * 添加列表记录(addFfffXxxxx)
9
+ * 删除列表记录(removeFfffXxxxx|deleteFfffXxxx)
10
+ * 更新列表记录(updateFfffXxxxx)
11
+ * @type {*[]}
12
+ */
13
+ module.exports = [
14
+ {
15
+ mapFnName: 'sendMsgConPhone',
16
+ title: '发送验证码',
17
+ path: '/common/v1/valid_code/sms/send',
18
+ isRule: false,
19
+ data: {
20
+ phone_number: ['手机号', 'String', '必选'],
21
+ biz_name: ['业务名称', 'String', '必选']
22
+ },
23
+ isConsole: true,
24
+ disabled: true,
25
+ },
26
+ {
27
+ mapFnName: 'getCouponPhoneList', //自定义方法名字(必选)
28
+ title: '获取优惠券列表',
29
+ path: '/sms-coupon/v1/activity-prizes-user/list',
30
+ isRule: false,
31
+ params: {
32
+ distribution_method: ['发放方式 entry=主动发放, homed=首页发放,paid=消费后发放,card_binded=绑定卡后发放', 'String', '选填'],
33
+ namespace: ['业务线', 'String', '必填'],
34
+ },
35
+ isConsole: true,
36
+ disabled: true,
37
+ },
38
+ {
39
+ mapFnName: 'getAllCouponPhone', //自定义方法名字(必选)
40
+ title: '领取优惠券',
41
+ path: '/sms-coupon/v1/activity-prizes-user/set',
42
+ isRule: false,
43
+ params: {
44
+ distribution_method: ['发放方式 entry=主动发放, homed=首页发放,paid=消费后发放,card_binded=绑定卡后发放', 'String', '选填'],
45
+ namespace: ['业务线', 'String', '必填'],
46
+ },
47
+ isConsole: true,
48
+ disabled: true,
49
+ },
50
+ {
51
+ mapFnName: 'getCouponPhoneResult', //自定义方法名字(必选)
52
+ title: '轮询查询活动结果',
53
+ path: '/sms-coupon/v1/activity-prizes-user/get',
54
+ isRule: false,
55
+ params: {
56
+ tmp_order_number: ['tmp_order_number', 'String', '选填'],
57
+ },
58
+ isConsole: true,
59
+ disabled: true,
60
+ },
61
+ {
62
+ mapFnName: 'getUserPhone',
63
+ title: '获取用户信息',
64
+ path: '/passport/v1/user/get',
65
+ isRule: false,
66
+ params: {},
67
+ isConsole: true,
68
+ disabled: true,
69
+ },
70
+ ];
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: [],
9
+ advanced: [],
10
+ };
@@ -0,0 +1,513 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-con-phone"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx: isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-con-phone__edit"
10
+ :class="{ editx: isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-con-phone__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-con-phone__body" v-if="done">
17
+ <view
18
+ v-if="has_times === 'Y'"
19
+ class="jfb-base-con-phone__body-wrap"
20
+ :style="{
21
+ height: layoutInfo.bodyMinHeightRpx + 'rpx',
22
+ backgroundImage: `url(${background})`,
23
+ backgroundSize: '100% 100%',
24
+ }"
25
+ >
26
+ <view v-if="showCode" class="jfb-base-con-phone__body-wrap-input">
27
+ <view>
28
+ <input
29
+ @input="filterSpaces"
30
+ v-model="phoneNumber"
31
+ placeholder="请输入手机号"
32
+ type="text"
33
+ />
34
+ </view>
35
+ <view
36
+ class="jfb-base-con-phone__body-wrap-input-code"
37
+ style="margin-bottom: 54rpx"
38
+ >
39
+ <input
40
+ v-model="valid_code"
41
+ placeholder="请输入验证码"
42
+ type="text"
43
+ />
44
+ <XdButton
45
+ :disabled="disabled"
46
+ class="jfb-base-con-phone__body-wrap-input-code-btn"
47
+ type="primary"
48
+ :bg-color="mainColor"
49
+ size="small"
50
+ @click="handleSendCode"
51
+ >{{ message }}</XdButton
52
+ >
53
+ </view>
54
+ <XdButton
55
+ type="primary"
56
+ :bg-color="mainColor"
57
+ width="360rpx"
58
+ radius="20rpx"
59
+ size="small"
60
+ :disabled="!phoneNumber || !valid_code"
61
+ @click="handleConfirm"
62
+ >确认领取</XdButton
63
+ >
64
+ </view>
65
+ <view v-else class="jfb-base-con-phone__body-wrap-input">
66
+ <view class="jfb-base-con-phone__body-wrap-input-phone">
67
+ <view class="jfb-base-con-phone__body-wrap-input-phone-change">
68
+ <view>当前登录手机号</view>
69
+ <XdButton
70
+ style="margin: 0"
71
+ type="primary"
72
+ :bg-color="mainColor"
73
+ size="small"
74
+ @click="showCode = true"
75
+ >切换手机号</XdButton
76
+ >
77
+ </view>
78
+ <view>{{ showOhoneNumber }}</view>
79
+ </view>
80
+ <XdButton
81
+ type="primary"
82
+ :bg-color="mainColor"
83
+ width="360rpx"
84
+ radius="20rpx"
85
+ size="small"
86
+ @click="handleConfirm"
87
+ >直接领取</XdButton
88
+ >
89
+ </view>
90
+ <view v-if="showBtn === 'Y'" class="jfb-base-con-phone__body-wrap-btn">
91
+ <XdButton
92
+ size="small"
93
+ type="primary"
94
+ :bg-color="mainColor"
95
+ radius="20rpx"
96
+ @click="handleTo(btnOneUrl)"
97
+ >{{ btnOneName }}</XdButton
98
+ >
99
+ <XdButton
100
+ size="small"
101
+ type="primary"
102
+ :bg-color="mainColor"
103
+ radius="20rpx"
104
+ @click="handleTo(btnTwoUrl)"
105
+ >{{ btnTwoName }}</XdButton
106
+ >
107
+ </view>
108
+ </view>
109
+ <view
110
+ :style="{
111
+ height: layoutInfo.bodyMinHeightRpx + 'rpx',
112
+ }"
113
+ v-else
114
+ class="empty_data"
115
+ >
116
+ <image :src="emptyBg"></image>
117
+ {{ errmessage }}
118
+ </view>
119
+ </view>
120
+ </view>
121
+ </template>
122
+
123
+ <script>
124
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
125
+ import XdButton from "@/components/XdButton/XdButton";
126
+ import { jfbRootExec } from "@/utils/xd.event";
127
+ import JfbBaseConPhoneMixin from "./JfbBaseConPhoneMixin";
128
+ import { getContainerPropsValue } from "@/utils/xd.base";
129
+ import componentsMixins from "@/mixins/componentsMixins";
130
+ import extsMixins from "@/mixins/extsMixins";
131
+ import { mapState } from "vuex";
132
+ import colorCardMixins from "@/mixins/colorCardMixins";
133
+ import getServiceUrl from "@/common/getServiceUrl";
134
+
135
+ export default {
136
+ name: "JfbBaseConPhone",
137
+ components: {
138
+ XdFontIcon,
139
+ XdButton,
140
+ },
141
+ computed: {
142
+ ...mapState(["pageBusinessCode"]),
143
+ emptyBg() {
144
+ return this.getNoData();
145
+ },
146
+ },
147
+ mixins: [componentsMixins, extsMixins, JfbBaseConPhoneMixin, colorCardMixins],
148
+ data() {
149
+ return {
150
+ showCode: true,
151
+ phoneNumber: "", //手机号
152
+ valid_code: "", //验证码
153
+ btnOneName: "",
154
+ btnOneUrl: "",
155
+ btnTwoName: "",
156
+ btnTwoUrl: "",
157
+ message: "发送验证码",
158
+ countdownTimer: null,
159
+ timeRemaining: 120,
160
+ disabled: false,
161
+ background: "",
162
+ method: "entry",
163
+ options: {},
164
+ activity_id: "",
165
+ done: false,
166
+ has_times: "N",
167
+ errmessage: "",
168
+ showOhoneNumber: "", //仅用于展示
169
+ order_num: null,
170
+ maxTime: 5, //最长轮询2的N次方(秒)
171
+ date: 2, //时间底数
172
+ time: 0, //时间幂指数
173
+ timeer: null,
174
+ };
175
+ },
176
+ watch: {
177
+ container(value) {
178
+ this.init(value);
179
+ },
180
+ },
181
+ created() {
182
+ console.log(this.layoutInfo, "layoutInfo");
183
+ this.init(this.container);
184
+ },
185
+ destroyed() {
186
+ if (this.timeer) {
187
+ clearTimeout(this.timeer);
188
+ }
189
+ },
190
+ methods: {
191
+ async onJfbLoad(options) {
192
+ await jfbRootExec("getUserPhone", {
193
+ vm: this,
194
+ data: {},
195
+ }).then((res) => {
196
+ this.showOhoneNumber = res.phone_number;
197
+ if (this.showOhoneNumber) {
198
+ this.showCode = false;
199
+ }
200
+ });
201
+ this.options = options;
202
+ this.activity_id = options.activity_id;
203
+ this.method = options.distribution_method
204
+ ? options.distribution_method
205
+ : "phone";
206
+ await this.getList();
207
+ },
208
+ filterSpaces(event) {
209
+ // 使用replace方法去除用户输入的空格
210
+ let value = event.target.value.replace(/\s+/g, "");
211
+ // 更新数据以移除空格
212
+ this.phoneNumber = value;
213
+ // 将处理后的值反映到视图
214
+ event.target.value = value;
215
+ },
216
+ validatePhoneNumber(phoneNumber) {
217
+ // 定义手机号正则表达式
218
+ const regex = /^1[3-9]\d{9}$/;
219
+
220
+ // 检查输入的手机号是否符合格式
221
+ if (phoneNumber.match(regex)) {
222
+ return true;
223
+ } else {
224
+ return false;
225
+ }
226
+ },
227
+ getList() {
228
+ jfbRootExec("getCouponPhoneList", {
229
+ vm: this,
230
+ data: {
231
+ ...this.options,
232
+ distribution_method: this.method,
233
+ namespace: this.pageBusinessCode,
234
+ activity_id: this.activity_id,
235
+ },
236
+ })
237
+ .then((res) => {
238
+ console.log(res, "res");
239
+ this.has_times = res.has_times;
240
+ this.showBtn = res.phone_button;
241
+ this.btnOneName = res.button_name_one;
242
+ this.btnTwoName = res.button_name_two;
243
+ this.btnOneUrl = res.button_url_one;
244
+ this.btnTwoUrl = res.button_url_two;
245
+ this.background = getServiceUrl(res.background);
246
+ this.errmessage = res.message;
247
+ this.done = true;
248
+ })
249
+ .catch((err) => {
250
+ console.log(err, "err");
251
+ });
252
+ },
253
+ /**
254
+ * @description 监听事件变化
255
+ * @param container {object} 业务组件对象自己
256
+ */
257
+ init(container) {},
258
+ handleTo(url) {
259
+ this.$xdUniHelper.navigateTo({
260
+ url: url,
261
+ });
262
+ },
263
+ handleSendCode() {
264
+ if (this.phoneNumber.length < 11) {
265
+ uni.showToast({
266
+ title: "请输入11位手机号",
267
+ icon: "none",
268
+ });
269
+ return;
270
+ }
271
+ if (!this.validatePhoneNumber(this.phoneNumber)) {
272
+ uni.showToast({
273
+ title: "手机号格式不正确",
274
+ icon: "none",
275
+ });
276
+ return;
277
+ }
278
+ // 发送验证码的异步操作
279
+ uni.showToast({
280
+ title: "发送中",
281
+ icon: "loading",
282
+ });
283
+ jfbRootExec("sendMsgConPhone", {
284
+ vm: this,
285
+ data: {
286
+ phone_number: this.phoneNumber,
287
+ biz_name: "login",
288
+ },
289
+ }).then((res) => {
290
+ this.startCountdown();
291
+ });
292
+ },
293
+ startCountdown() {
294
+ // 设置剩余时间
295
+ this.timeRemaining = 120;
296
+ // 设置定时器,每秒执行一次
297
+ this.countdownTimer = setInterval(() => {
298
+ // 每秒减少1
299
+ this.timeRemaining--;
300
+ // 更新显示
301
+ this.message = `${this.timeRemaining}s`;
302
+ // 禁用按钮
303
+ this.disabled = true;
304
+ // 如果时间小于等于0,则重新开始
305
+ if (this.timeRemaining <= 0) {
306
+ this.message = "重新发送";
307
+ this.disabled = false;
308
+ // 清除定时器
309
+ clearInterval(this.countdownTimer);
310
+ // 重新设置时间
311
+ this.timeRemaining = 120;
312
+ }
313
+ }, 1000);
314
+ },
315
+ handleConfirm() {
316
+ this.$xdShowLoading({});
317
+ jfbRootExec("getAllCouponPhone", {
318
+ vm: this,
319
+ data: {
320
+ ...this.options,
321
+ distribution_method: this.method,
322
+ namespace: this.pageBusinessCode,
323
+ activity_id: this.activity_id,
324
+ phone: this.showCode ? this.phoneNumber : null,
325
+ valid_code: this.showCode ? this.valid_code : null,
326
+ biz_name: "login",
327
+ },
328
+ })
329
+ .then((res) => {
330
+ if (res.code == 400) {
331
+ this.$xdHideLoading();
332
+ this.$xdAlert({
333
+ content: res.message,
334
+ zIndex: 3200,
335
+ time: 2000,
336
+ isClose: false,
337
+ });
338
+ this.getList();
339
+ return;
340
+ }
341
+ this.order_num = res.tmp_order_number;
342
+ setTimeout(() => {
343
+ this.getResult();
344
+ }, 1000);
345
+ })
346
+ .catch((err) => {
347
+ console.log(err, "err");
348
+ });
349
+ },
350
+ getResult() {
351
+ jfbRootExec("getCouponPhoneResult", {
352
+ vm: this,
353
+ data: {
354
+ ...this.options,
355
+ tmp_order_number: this.order_num,
356
+ },
357
+ })
358
+ .then((res) => {
359
+ if (res.status_type === "success") {
360
+ this.order_num = null;
361
+ this.$xdHideLoading();
362
+ this.$xdAlert({
363
+ content: "领取成功",
364
+ zIndex: 3200,
365
+ time: 2000,
366
+ isClose: false,
367
+ });
368
+ this.getList();
369
+ if (this.timeer) {
370
+ this.time = 0;
371
+ clearTimeout(this.timeer);
372
+ }
373
+ return;
374
+ }
375
+ if (res.status_type === "error") {
376
+ this.$xdHideLoading();
377
+ this.$xdAlert({
378
+ content: res.message,
379
+ zIndex: 3200,
380
+ time: 2000,
381
+ isClose: false,
382
+ });
383
+ if (res.code == 400) {
384
+ this.getList();
385
+ }
386
+ if (this.timeer) {
387
+ this.time = 0;
388
+ clearTimeout(this.timeer);
389
+ }
390
+ return;
391
+ }
392
+
393
+ this.timeer = setTimeout(() => {
394
+ this.getResult();
395
+ if (this.time > 5) {
396
+ this.$xdLog.setARMSInfo(
397
+ { message: "领取中" },
398
+ `pay_${res.status_type}`
399
+ );
400
+ }
401
+ this.time++;
402
+ }, Math.pow(this.date, this.time > this.maxTime ? this.maxTime : this.time) * 1000);
403
+ })
404
+ .catch((err) => {
405
+ this.$xdHideLoading();
406
+ console.log(err, "err");
407
+ });
408
+ },
409
+ onJfbShow() {
410
+ if (this.timeer) {
411
+ clearTimeout(this.timeer);
412
+ }
413
+ this.time = 0;
414
+ if (this.order_num) this.getResult();
415
+ },
416
+
417
+ onJfbUnload() {
418
+ if (this.timeer) {
419
+ clearTimeout(this.timeer);
420
+ }
421
+ },
422
+
423
+ onJfbBack(options) {
424
+ if (this.timeer) {
425
+ clearTimeout(this.timeer);
426
+ }
427
+ if (this.$configProject.isPreview) return;
428
+ this.$xdUniHelper.navigateBack();
429
+ },
430
+ },
431
+ };
432
+ </script>
433
+
434
+ <style scoped lang="less">
435
+ @import "./JfbBaseConPhoneLess.less";
436
+
437
+ .jfb-base-con-phone {
438
+ &__body {
439
+ .empty_data {
440
+ text-align: center;
441
+ color: #999999;
442
+ font-size: 28rpx;
443
+ display: flex;
444
+ flex-direction: column;
445
+ align-items: center;
446
+ justify-content: center;
447
+ & > image {
448
+ width: unit(400, rpx);
449
+ height: unit(400, rpx);
450
+ }
451
+ }
452
+ &-wrap {
453
+ display: flex;
454
+ justify-content: center;
455
+ align-items: center;
456
+ flex-direction: column;
457
+ &-input {
458
+ border-radius: 40rpx;
459
+ background: rgba(255, 255, 255, 0.5);
460
+ padding: 70rpx 60rpx;
461
+ input {
462
+ margin-bottom: 26rpx;
463
+ font-size: 28rpx;
464
+ background: #fff;
465
+ border-radius: 16rpx;
466
+ padding: 30rpx;
467
+ width: 540rpx;
468
+ }
469
+ &-code {
470
+ position: relative;
471
+ &-btn {
472
+ position: absolute;
473
+ right: 10rpx;
474
+ top: 20rpx;
475
+ }
476
+ }
477
+ &-phone {
478
+ padding: 30rpx;
479
+ width: 540rpx;
480
+ background: #fff;
481
+ border-radius: 16rpx;
482
+ margin-bottom: 32rpx;
483
+ & > view:nth-child(2) {
484
+ border-radius: 40rpx;
485
+ background: #f2f2f2;
486
+ display: flex;
487
+ justify-content: center;
488
+ align-items: center;
489
+ padding: 16rpx 120rpx 16rpx 120rpx;
490
+ margin-top: 30rpx;
491
+ }
492
+ &-change {
493
+ display: flex;
494
+ justify-content: space-between;
495
+ align-items: center;
496
+ & > view:first-child {
497
+ color: #999999;
498
+ font-size: 28rpx;
499
+ }
500
+ }
501
+ }
502
+ }
503
+ &-btn {
504
+ display: flex;
505
+ justify-content: space-around;
506
+ align-items: center;
507
+ width: 100%;
508
+ margin-top: 64rpx;
509
+ }
510
+ }
511
+ }
512
+ }
513
+ </style>
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @desc 获取绝对路径完整地址
3
+ * @param @path
4
+ **/
5
+ //例如:https://image.jufubao.cn/20220501010108/image/bg/default_gonghui_bg.png
6
+ @basePath: 'business/';
7
+ @doMain: '//sandbox-img.jufubao.cn/';
8
+
9
+ .getBusinessImageUrl(@path, @size: 'size8') {
10
+ @url: "@{doMain}@{basePath}@{path}?x-oss-process=style/@{size}";
11
+ background-image: url(@url);
12
+ }
13
+
14
+ //start
15
+ .jfb-base-con-phone {
16
+ border: 1px dashed rgba(0, 0, 0, 0);
17
+ box-sizing: border-box;
18
+ min-height: unit(50, rpx);
19
+
20
+ &__body{
21
+ position: relative;
22
+ overflow: hidden;
23
+ z-index: 2
24
+ }
25
+
26
+ &.editx {
27
+ position: relative;
28
+ border: 1px dashed blue;
29
+ box-sizing: border-box;
30
+ z-index: 3
31
+
32
+ }
33
+
34
+ &:hover {
35
+ border: 1px dashed blue;
36
+ }
37
+
38
+ &.noBorder {
39
+ border-color: rgba(0,0,0,0);
40
+ border-width: 0;
41
+ }
42
+
43
+
44
+ &__edit {
45
+ cursor: pointer;
46
+ position: absolute;
47
+ right: unit(0, rpx);
48
+ top: unit(-52, rpx);
49
+ height: unit(50, rpx);
50
+ line-height: unit(50, rpx);
51
+ display: flex;
52
+ justify-content: center;
53
+ align-items: center;
54
+ background: rgba(0, 0, 0, .6);
55
+ border-radius: unit(10, rpx);
56
+ box-shadow: 0 0 10px rbga(0, 0, 0, 0.3);
57
+ color: #fff;
58
+ font-size: unit(22, rpx);
59
+
60
+ &-icon{
61
+ padding: 0 unit(20, rpx);
62
+ }
63
+
64
+ &.editx {
65
+ box-sizing: border-box;
66
+
67
+ }
68
+ }
69
+ }
70
+ //end
71
+
72
+
73
+ /**notPreview**/
74
+ .jfb-base-con-phone {
75
+ &:before {
76
+ content: " ";
77
+ display: table;
78
+ }
79
+ }
80
+ /**endNotPreview**/
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+
4
+ //@AttrImport
5
+ import Attr from "./Attr";
6
+ //@EndAttrImport
7
+
8
+
9
+ export default {
10
+ data() {
11
+ return {
12
+ //#ifdef H5
13
+
14
+ //@AttrData
15
+ Attr:{}, //对外开发编辑属性
16
+ //@EndAttrData
17
+
18
+ // #endif
19
+ cssRoot: 'jfb-base-con-phone'
20
+ }
21
+ },
22
+ created() {
23
+
24
+ //@AttrDataCreated
25
+ this.Attr = this.$xdUniHelper.customClone(Attr);
26
+ //@EndAttrDataCreated
27
+
28
+
29
+ },
30
+ }
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ getCouponPhoneList: {
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
+ },
23
+ getAllCouponPhone: {
24
+ "request_id": "5987aa28c709d4ef"
25
+ }
26
+ }