jufubao-base 1.0.307-beta1 → 1.0.308

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.
@@ -8,8 +8,6 @@ module.exports = {
8
8
 
9
9
  removeCodeFilmAddress:{},
10
10
 
11
- addCodeFilmcart: {},
12
- getOpenBaseUserInfo: { "user_name": "", "user_code": "Uf4zx6EPfV", "nickname": "未来~", "real_name": "", "head_url": "https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJsajZzh53IB56crRSdmKvRbjT4V1Ha8v5uCOkASbWS0GibgLeic8OKBzAwUyBa3vZGhjwmd6RfpG9g\/132", "province_code": "", "city_code": "", "province_name": "", "city_name": "", "sex": "", "sex_name": "未知", "birthday_date": "", "phone_number": "13611111111", "show_user_name": "未来~", "user_level": "", "vip_expire_time": 1745026677, "request_id": "250e5709e6c95066" },
13
-
11
+ addCodeFilmcart:{},
14
12
 
15
13
  }
@@ -197,13 +197,6 @@
197
197
  </view>
198
198
  </view>
199
199
  </view>
200
- <CusVipOpenDialog
201
- v-if="is_vip==='N'"
202
- :bgImg="openVipBgImg"
203
- :btnBgImg="openVipBtnBgImg"
204
- @onOpen="handleToOpen"
205
- @onClose="handleCloseOpenVip"
206
- ></CusVipOpenDialog>
207
200
  </view>
208
201
  </template>
209
202
 
@@ -224,7 +217,7 @@
224
217
  import componentsMixins from "@/mixins/componentsMixins";
225
218
  import extsMixins from "@/mixins/extsMixins";
226
219
  import { mapState } from 'vuex';
227
- import CusVipOpenDialog from "@/components/CusVipOpenDialog/CusVipOpenDialog"
220
+
228
221
  export default {
229
222
  //#ifdef MP-WEIXIN
230
223
  options: { styleIsolation: 'shared' },
@@ -236,8 +229,7 @@
236
229
  XdButton,
237
230
  XdDownDrawer,
238
231
  ShopList,
239
- XdDeductSort,
240
- CusVipOpenDialog
232
+ XdDeductSort
241
233
  },
242
234
  mixins: [
243
235
  componentsMixins, extsMixins, JfbBaseConsumpCodeMixin, QPMixin, JHDMixin, shopListMixin
@@ -294,8 +286,7 @@
294
286
  QPIconType: "",
295
287
  QPIcon: "",
296
288
  QPImg: "",
297
- openVipBtnBgImg: "",
298
- openVipBgImg: "",
289
+
299
290
  }
300
291
  },
301
292
  watch: {
@@ -330,9 +321,6 @@
330
321
  created() {
331
322
  this.isPreview = this.$configProject['isPreview']
332
323
  this.is_vip = this.getTokenForKey('user_level') && this.getTokenForKey('user_level') === 'VIP' ? 'Y' : 'N'
333
- if (this.$configProject['isPreview']) {
334
- this.is_vip='Y'
335
- }
336
324
  this.init(this.container);
337
325
  // #ifdef H5
338
326
  if (!this.$configProject.isPreview && (isWechat() || isWechatTools())) {
@@ -417,12 +405,7 @@
417
405
  this.QPIconType = gCPVal(container, 'QPIconType', "icon");
418
406
  this.QPIcon = gCPVal(container, 'QPIcon', 'iconerweima');
419
407
  this.QPImg = getServiceUrl(gCPVal(container, 'QPImg', {url: ""}).url);
420
- this.openVipBgImg = getServiceUrl(
421
- getContainerPropsValue(container, "content.openVipBgImg", { url: "" }).url,
422
- );
423
- this.openVipBtnBgImg = getServiceUrl(
424
- getContainerPropsValue(container, "content.openVipBtnBgImg", { url: "" }).url
425
- );
408
+
426
409
  console.log("this.scanImg", this.scanImg);
427
410
  },
428
411
  handleConsumeType(consumeType){
@@ -545,9 +528,6 @@
545
528
  if (this.statusTimer) clearTimeout(this.statusTimer);
546
529
  if (this.orderTimer) clearTimeout(this.orderTimer);
547
530
  },
548
- handleCloseOpenVip() {
549
- this.$xdUniHelper.navigateBack()
550
- },
551
531
 
552
532
  onJfbUnload(options) {
553
533
  console.log('event.onJfbUnload', options)
@@ -68,7 +68,7 @@ export default (data)=>{
68
68
  className: 'input100',
69
69
  },
70
70
  {
71
- label: '选取城市',
71
+ label: '选取城市:',
72
72
  ele: 'xd-select-pages-path',
73
73
  valueKey: 'cityPath',
74
74
  placeholder: '请选择选取城市跳转页面',
@@ -89,48 +89,6 @@ export default function (data={},gValue={},gColor={},oldData) {
89
89
  maxlen: 100,
90
90
  labelInline: true,
91
91
  },
92
- { ele: 'group_end' },
93
- {
94
- label: "开通PLUS背景图",
95
- ele: 'xd-upload',
96
- valueKey: "openVipBgImg",
97
- groupKey: "style",
98
- labelInline: true,
99
- value: data.openVipBgImg || {},
100
- defaultValue: data.openVipBgImg || null,
101
- slot: true,
102
- oneWidth: 355,
103
- oneHeight: 355,
104
- elinputClassName: 'input40',
105
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">710px</span>,高度为<span style="color:red">710px</span>',
106
- type: ['jpg', 'png', 'jpeg'],
107
- styleType: 'one',
108
- uploadType: 'aliyun',
109
- size: 5,
110
- action: 'action',
111
- sort: true,
112
- maxlen: 100,
113
- },
114
- {
115
- label: "开通PLUS按钮背景图",
116
- ele: 'xd-upload',
117
- valueKey: "openVipBtnBgImg",
118
- groupKey: "style",
119
- labelInline: true,
120
- value: data.openVipBtnBgImg || {},
121
- defaultValue: data.openVipBtnBgImg || null,
122
- slot: true,
123
- oneWidth: 223,
124
- oneHeight: 44,
125
- elinputClassName: 'input40',
126
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">446px</span>,宽度为<span style="color:red">88px</span>',
127
- type: ['jpg', 'png', 'jpeg'],
128
- styleType: 'one',
129
- uploadType: 'aliyun',
130
- size: 5,
131
- action: 'action',
132
- sort: true,
133
- maxlen: 100,
134
- },
92
+ {ele: 'group_end'},
135
93
  ].filter(i=>i)
136
94
  }
@@ -115,7 +115,7 @@
115
115
  :style="{
116
116
  fontSize: fontSize + 'rpx',
117
117
  }"
118
- v-html="$xdUniHelper.filterHtml(content)"
118
+ v-html="contentComp"
119
119
  @click="handleShowStatic"
120
120
  >
121
121
  </view>
@@ -282,6 +282,10 @@
282
282
  },
283
283
  },
284
284
  computed:{
285
+ contentComp(){
286
+ if(this.show_tip_icon==='Y') return this.$xdUniHelper.filterHtml(this.content,'')
287
+ return this.content
288
+ },
285
289
  marginUi() {
286
290
  let str = `${this.checkValue(this.margin.top, 20)}rpx`;
287
291
  str = `${str} ${this.checkValue(this.margin.right, 20)}rpx`;
@@ -350,13 +354,19 @@
350
354
  this.time = Number(getContainerPropsValue(container, 'content.time', 3));
351
355
  this.textColor = getContainerPropsValue(container, 'content.textColor', this.warningColor);
352
356
  this.textAlign = getContainerPropsValue(container, 'content.textAlign', 'left');
357
+
353
358
  this.bgc = getContainerPropsValue(container, 'content.bgc', `rgba(${colorBg.join(',')})`);
354
- this.borderTitleColor = Color(this.bgc).lighten(.15).hex();
359
+ if(Color(this.bgc).isDark()) this.borderTitleColor = Color(this.bgc).lighten(0.9).toString();
360
+ else if(Color(this.bgc).isLight()) this.borderTitleColor = Color(this.bgc).darken(0.05).toString();
361
+
362
+
363
+
355
364
  this.margin = getContainerPropsValue(container, 'content.margin', {top: 0, left: 0, bottom: 0, right: 0});
356
365
  this.padding = getContainerPropsValue(container, 'content.padding', {top: 8, left: 10, bottom: 8, right: 10});
357
366
  this.scrollMargin = getContainerPropsValue(container, 'content.scrollMargin', {});
358
367
  this.radius = getContainerPropsValue(container, 'content.radius', 0);
359
368
  this.fontSize = Number(getContainerPropsValue(container, 'content.fontSize', '20'));
369
+ this.titleFontSize = this.fontSize * 1.2;
360
370
  this.btnConfirmWidth = getContainerPropsValue(container, 'content.btnConfirmWidth', '');
361
371
  this.btnConfirmBgColor = getContainerPropsValue(container, 'content.btnConfirmBgColor', '');
362
372
  this.btnConfirmTextColor = getContainerPropsValue(container, 'content.btnConfirmTextColor', '');
@@ -364,13 +374,13 @@
364
374
  let staticTipIcon = getContainerPropsValue(container, 'content.staticTipIcon', '');
365
375
  this.staticTipIcon = staticTipIcon ? getServiceUrl(staticTipIcon.url) : '';
366
376
  this.tipIconHeight = getContainerPropsValue(container, 'content.tipIconHeight', 50);
377
+
378
+
367
379
  if (this.fontSize === 20) this.titleFontSize = 28;
368
380
  if (this.fontSize === 26) this.titleFontSize = 36;
369
381
  if (this.fontSize === 36) this.titleFontSize = 44;
370
382
  this.isTitle = getContainerPropsValue(container, 'content.isTitle', false);
371
383
 
372
- console.log("this.staticTipIcon", this.staticTipIcon);
373
-
374
384
  if(this.style === '2') {
375
385
  this.num = getContainerPropsValue(container, 'content.num', 1);
376
386
  //#ifdef H5
@@ -384,19 +394,20 @@
384
394
  this.is_hide_dailog = getContainerPropsValue(container, 'content.is_hide_dailog', 'N');
385
395
  },
386
396
  handleShowStatic(){
387
- this.$xdConfirm({
388
- styles: this.styles,
389
- isTitle: false,
390
- content: this.content,
391
- isHtml: true,
392
- zIndex: 2000,
393
- cancel: false,
394
- width: '700rpx'
395
- });
397
+ if(this.show_tip_icon === 'Y') {
398
+ this.$xdConfirm({
399
+ styles: this.styles,
400
+ isTitle: false,
401
+ content: this.content,
402
+ isHtml: true,
403
+ zIndex: 2000,
404
+ cancel: false,
405
+ width: '700rpx'
406
+ });
407
+ }
396
408
  },
397
409
 
398
410
  handlePop(){
399
- console.log('this.time', this.time * 60 + '分钟');
400
411
  storage.set(this.containerId, 1, this.time);
401
412
  this.$xdConfirm({
402
413
  styles: this.styles,
@@ -243,56 +243,6 @@ export default {
243
243
  inline: false,
244
244
  notice: '',
245
245
  },
246
- {
247
- label: "用户信息背景颜色:",
248
- ele: "xd-color",
249
- valueKey: "userBgColor",
250
- value: data.userBgColor || null,
251
- groupKey: "style",
252
- },
253
- {
254
- label: "用户信息背景图",
255
- ele: 'xd-upload',
256
- valueKey: "userBgImg",
257
- groupKey: "content",
258
- value: data.userBgImg || {},
259
- defaultValue: data.userBgImg || null,
260
- slot: true,
261
- oneWidth: 355,
262
- oneHeight: 84,
263
- elinputClassName: 'input40',
264
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">710px</span>,高度<span style="color:red">196px</span>',
265
- type: ['jpg', 'png', 'jpeg'],
266
- styleType: 'one',
267
- uploadType: 'aliyun',
268
- size: 5,
269
- action: 'action',
270
- sort: true,
271
- maxlen: 100,
272
- },
273
- {
274
- label: "激活码开通",
275
- ele: 'xd-upload',
276
- valueKey: "codeImg",
277
- groupKey: "content",
278
- value: data.codeImg || {},
279
- defaultValue: data.codeImg || null,
280
- slot: true,
281
- oneWidth: 355,
282
- oneHeight: 100,
283
- elinputClassName: 'input40',
284
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">710px</span>,高度<span style="color:red">200px</span>',
285
- type: ['jpg', 'png', 'jpeg'],
286
- styleType: 'one',
287
- uploadType: 'aliyun',
288
- size: 5,
289
- action: 'action',
290
- sort: true,
291
- maxlen: 100,
292
- rules: [
293
- { required: true, message: '请添加背景图', trigger: 'change' },
294
- ],
295
- },
296
246
  {
297
247
  label: "PLUS会员banner背景图",
298
248
  ele: 'xd-upload',
@@ -302,9 +252,9 @@ export default {
302
252
  defaultValue: data.bannerBgImg || null,
303
253
  slot: true,
304
254
  oneWidth: 355,
305
- oneHeight: 170,
255
+ oneHeight: 92,
306
256
  elinputClassName: 'input40',
307
- tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">710px</span>,高度<span style="color:red">340px</span>',
257
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.建议宽度为<span style="color:red">710px</span>,高度<span style="color:red">184px</span>',
308
258
  type: ['jpg', 'png', 'jpeg'],
309
259
  styleType: 'one',
310
260
  uploadType: 'aliyun',
@@ -15,7 +15,7 @@
15
15
  <!-- #endif -->
16
16
  <view class="jfb-base-open-vip__body" :style="[bodyStyle]">
17
17
  <!-- 用户信息 -->
18
- <view class="u_header" :style="[userStyle]">
18
+ <view class="u_header">
19
19
  <view class="u_avatar">
20
20
  <image :src="uInfo.head_url" mode="aspectFill"></image>
21
21
  </view>
@@ -26,12 +26,11 @@
26
26
  <view v-else class="vip_level">普通用户</view>
27
27
  </view>
28
28
  <view class="u_sub">
29
- <!-- <view v-if="isVip" style="color:#999999;" @click="handleToDetail">已省{{ $xdUniHelper.divisionFloatNumber(save_amount, 100) }}</view> -->
30
- <view v-if="isVip" style="color:#666666;">到期时间:{{ vip_expire_time }}</view>
31
- <view v-else style="color:#666666;">您暂未开通PLUS会员</view>
29
+ <view v-if="isVip" style="color:#999999;" @click="handleToDetail">已省{{ $xdUniHelper.divisionFloatNumber(save_amount, 100) }}</view>
30
+ <view v-else style="color:#333333;">{{ uInfo.phone_number }}</view>
32
31
  </view>
33
32
  </view>
34
- <!-- <view v-if="isVip" class="buy_btn" @click="showDrawer=true">立即续费</view> -->
33
+ <view v-if="isVip" class="buy_btn" @click="showDrawer=true">立即续费</view>
35
34
  <!-- <view v-else class="buy_btn" @click="showDrawer=true">立即开通</view> -->
36
35
  </view>
37
36
 
@@ -40,28 +39,17 @@
40
39
  <view class="vip_box" :style="{
41
40
  backgroundImage: `url(${bannerBgImg})`,
42
41
  }">
43
- <!-- <view class="vip_box-left">
42
+ <view class="vip_box-left">
44
43
  <view class="vip_box-title">PLUS会员</view>
45
44
  <view v-if="isVip">有效期至:{{ vip_expire_time }}</view>
46
45
  <view v-else>开通享受更多权益</view>
47
- </view> -->
46
+ </view>
48
47
  <!-- <view class="vip_logo">
49
48
  <image :src="siteLogo" mode="aspectFill"></image>
50
49
  </view> -->
51
50
  </view>
52
51
  </view>
53
- <xd-vip-list :list="showVipCardList"
54
- @handlePrivacy="handlePrivacy"
55
- @toVipDetail="toVipDetail"
56
- :mainColor="mainColor"
57
- ></xd-vip-list>
58
- <view>
59
- <view v-if="showExchangeCode==='Y'" @click="toVipDetail(-1)" class="vip_code_info">
60
- <view class="vip_code_box" :style="{
61
- backgroundImage: `url(${codeImg})`,
62
- }">
63
- </view>
64
- </view>
52
+ <view>
65
53
  <image :src="specialImage" mode="widthFix" style="width: 100%;"></image>
66
54
  <!--
67
55
  <view class="vip_banner">
@@ -86,17 +74,22 @@
86
74
  </view>
87
75
  </view> -->
88
76
  </view>
89
- <!-- <view :style="{height: '342rpx'}"></view> -->
90
- <!-- <view :style="prod_bottom"> -->
91
- <!-- </view> -->
77
+ <view :style="{height: '342rpx'}"></view>
78
+ <view :style="prod_bottom">
79
+ <xd-vip-list v-if="!isVip" :list="showVipCardList"
80
+ @handlePrivacy="handlePrivacy"
81
+ @toVipDetail="toVipDetail"
82
+ ></xd-vip-list>
83
+ </view>
92
84
 
93
- <!-- <xd-down-drawer :show.sync="showDrawer" height="480rpx">
85
+ <xd-down-drawer :show.sync="showDrawer" height="480rpx">
94
86
  <view class="drawer_title">立即续费</view>
95
87
  <xd-vip-list :list="showVipCardList"
96
88
  @handlePrivacy="handlePrivacy"
97
89
  @toVipDetail="toVipDetail"
98
90
  ></xd-vip-list>
99
- </xd-down-drawer> -->
91
+ </xd-down-drawer>
92
+
100
93
  </view>
101
94
  </view>
102
95
  </template>
@@ -106,7 +99,6 @@
106
99
  import XdButton from "@/components/XdButton/XdButton";
107
100
  import XdVipList from "./XdVipList.vue";
108
101
  import XdDownDrawer from "@/components/XdDownDrawer/XdDownDrawer.vue"
109
- import XdDailog from "@/components/XdDailog/XdDailog";
110
102
  import { jfbRootExec } from "@/utils/xd.event";
111
103
  import JfbBaseOpenVipMixin from "./JfbBaseOpenVipMixin";
112
104
  import { getContainerPropsValue } from "@/utils/xd.base";
@@ -120,8 +112,7 @@
120
112
  XdFontIcon,
121
113
  XdButton,
122
114
  XdVipList,
123
- XdDownDrawer,
124
- XdDailog
115
+ XdDownDrawer
125
116
  },
126
117
  mixins: [
127
118
  componentsMixins, extsMixins, JfbBaseOpenVipMixin
@@ -149,9 +140,6 @@
149
140
  showExchangeCode: "",
150
141
  exchangeCodePath: "",
151
142
  moneyDetailPath: "",
152
- userBgImg: '',
153
- userBgColor: '',
154
- codeImg: '',
155
143
  }
156
144
  },
157
145
  computed: {
@@ -165,20 +153,11 @@
165
153
  return this.uInfo.user_level === 'VIP';
166
154
  },
167
155
  showVipCardList(){
168
- // return this.showExchangeCode === 'Y' ? [this.exchangeCodeVip, ...this.vipCardList] : [...this.vipCardList]
169
- return [...this.vipCardList]
156
+ return this.showExchangeCode === 'Y' ? [this.exchangeCodeVip, ...this.vipCardList] : [...this.vipCardList]
170
157
  },
171
158
  prod_bottom() {
172
159
  return this.fixedStyle({height: 0, zIndex: 111});
173
160
  },
174
- userStyle() {
175
- return {
176
- backgroundImage: `url(${this.userBgImg})`,
177
- backgroundColor: this.userBgColor,
178
- backgroundRepeat: 'no-repeat',
179
- backgroundSize: '100% 100%',
180
- }
181
- }
182
161
  },
183
162
  watch: {
184
163
  container(value, oldValue) {
@@ -207,10 +186,7 @@
207
186
  this.specialImage = getServiceUrl(getContainerPropsValue(container, 'content.specialImage', {url: ""}).url);
208
187
  this.exchangeCodePath = getContainerPropsValue(container, 'content.exchangeCodePath', {value: ""}).value;
209
188
  this.showExchangeCode = getContainerPropsValue(container, 'content.showExchangeCode', '');
210
- this.moneyDetailPath = getContainerPropsValue(container, 'content.moneyDetailPath', { value: "" }).value;
211
- this.userBgImg = getServiceUrl(getContainerPropsValue(container, 'content.userBgImg', { url: "" }).url);
212
- this.userBgColor = getContainerPropsValue(container, "content.userBgColor", "#FFFFFF");
213
- this.codeImg = getServiceUrl(getContainerPropsValue(container, 'content.codeImg', {url: ""}).url);
189
+ this.moneyDetailPath = getContainerPropsValue(container, 'content.moneyDetailPath', {value: ""}).value;
214
190
  },
215
191
  p_getBaseUserInfo(){
216
192
  jfbRootExec("getOpenBaseUserInfo", {
@@ -298,7 +274,7 @@
298
274
  display: flex;
299
275
  align-items: center;
300
276
  padding: 24rpx 40rpx;
301
- margin-bottom: 20rpx;
277
+ margin: 20rpx;
302
278
 
303
279
  .u_avatar{
304
280
  width: 120rpx;
@@ -350,35 +326,13 @@
350
326
  }
351
327
  }
352
328
 
353
- .vip_code_info{
354
- margin-bottom: 20rpx;
355
- background: #fff;
356
- .vip_code_box{
357
- width: 710rpx;
358
- height: 200rpx;
359
- margin: auto;
360
- border-radius: 60rpx;
361
- background-color: #E8A841;
362
- // background: linear-gradient(90deg, #E8A841 0%, #FAD48E 100%);
363
- background-size: 100% 100%;
364
- background-repeat: no-repeat;
365
- display: flex;
366
- align-items: center;
367
- justify-content: space-between;
368
- padding: 40rpx;
369
- box-sizing: border-box;
370
- }
371
- }
372
-
373
329
  .vip_info{
374
330
  // padding: 20rpx;
375
- margin-bottom: 20rpx;
376
- background: #fff;
377
331
  .vip_box{
378
332
  width: 710rpx;
379
- height: 340rpx;
333
+ height: 184rpx;
380
334
  margin: auto;
381
- border-radius: 32rpx;
335
+ border-radius: 24rpx;
382
336
  background-color: #E8A841;
383
337
  // background: linear-gradient(90deg, #E8A841 0%, #FAD48E 100%);
384
338
  background-size: 100% 100%;
@@ -425,7 +379,7 @@
425
379
  width: 108rpx;
426
380
  height: 108rpx;
427
381
  border-radius: 108rpx;
428
- // background-color: #EBB963;
382
+ background-color: #EBB963;
429
383
  }
430
384
  .banner_text{
431
385
  color: #333333;
@@ -2,6 +2,6 @@
2
2
 
3
3
  module.exports = {
4
4
  getOpenBaseUserInfo: {"user_name":"","user_code":"Uf4zx6EPfV","nickname":"未来~","real_name":"","head_url":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJsajZzh53IB56crRSdmKvRbjT4V1Ha8v5uCOkASbWS0GibgLeic8OKBzAwUyBa3vZGhjwmd6RfpG9g\/132","province_code":"","city_code":"","province_name":"","city_name":"","sex":"","sex_name":"未知","birthday_date":"","phone_number":"13611111111","show_user_name":"未来~","user_level":"","vip_expire_time":1745026677,"request_id":"250e5709e6c95066"},
5
- getOpenVipList: {"total_size":3,"next_page_token":"","list":[{"vip_card_id":3,"product_id":60038520,"product_name":"体验卡","sale_price":200,"vip_card_icon":""},{"vip_card_id":2,"product_id":60038519,"product_name":"月卡","sale_price":2678,"vip_card_icon":""},{"vip_card_id":1,"product_id":60038515,"product_name":"测1","sale_price":9999,"vip_card_icon":""}],"request_id":"6b4aef5e06411d8a"},
5
+ getOpenVipList: {"total_size":3,"next_page_token":"","list":[{"vip_card_id":3,"product_id":60038520,"product_name":"体验卡","sale_price":200,"vip_card_icon":""},{"vip_card_id":2,"product_id":60038519,"product_name":"月卡","sale_price":2678,"vip_card_icon":""},{"vip_card_id":1,"product_id":60038515,"product_name":"测1","sale_price":20085,"vip_card_icon":""}],"request_id":"6b4aef5e06411d8a"},
6
6
  getVipMoneySaving: { "save_amount": 100 , "request_id": "6b4aef5e06411d8a" }
7
7
  }