jufubao-base 1.0.40 → 1.0.41-beta10

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.40",
3
+ "version": "1.0.41-beta10",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -4,6 +4,16 @@ export default {
4
4
  style: [],
5
5
  advanced: [],
6
6
  content: [
7
+ {
8
+ label: "票券布局",
9
+ ele: "xd-radio",
10
+ valueKey: "cardLayout",
11
+ value: "1",
12
+ list: [
13
+ {label: "布局1", value: "1"},
14
+ {label: "布局2", value: "2"},
15
+ ]
16
+ },
7
17
  {
8
18
  label: '失效卡列表地址:', //label
9
19
  ele: 'xd-select-pages-path', //package 名称
@@ -127,58 +127,71 @@
127
127
  v-if="tabIndex === 2 || tabIndex === 1"
128
128
  class="jfb-base-card__body-card"
129
129
  >
130
- <view
131
- v-for="(item, index) in showList"
132
- :key="index"
133
- @click="handleBindLogin(item)"
134
- class="jfb-base-card__body-card-item"
135
- >
136
- <view class="jfb-base-card__body-card-item-left">
137
- <xd-font-icon
138
- size="100"
139
- :color="mainColor"
140
- icon="iconyouhuiquan1-011"
141
- ></xd-font-icon>
142
- <view>{{ tabIndex === 1 ? "登录" : "转换" }}</view>
143
- </view>
144
- <view class="jfb-base-card__body-card-item-right">
145
- <view class="jfb-base-card__body-card-item-right-top">
146
- <view>
147
- <xd-font-icon
148
- icon="iconkaquan"
149
- size="38"
150
- style="margin-right: 18rpx"
151
- :color="mainColor"
152
- ></xd-font-icon>
153
- <view>{{ item.card_type_name }}</view>
154
- </view>
155
- <view>
156
- <view>{{ item.card_number }}</view>
157
- <view>有效期至:{{ item.end_time }}</view>
158
- </view>
130
+ <template v-if="cardLayout === '1'">
131
+ <view
132
+ v-for="(item, index) in showList"
133
+ :key="index"
134
+ @click="handleBindLogin(item)"
135
+ class="jfb-base-card__body-card-item"
136
+ >
137
+ <view class="jfb-base-card__body-card-item-left">
138
+ <xd-font-icon
139
+ size="100"
140
+ :color="mainColor"
141
+ icon="iconyouhuiquan1-011"
142
+ ></xd-font-icon>
143
+ <view>{{ tabIndex === 1 ? "登录" : "转换" }}</view>
159
144
  </view>
160
- <view class="jfb-base-card__body-card-item-right-bottom">
161
- <view class="jfb-base-card__body-card-item-right-bottom-info">
162
- <view
163
- class="jfb-base-card__body-card-item-right-bottom-info-residue"
164
- >
165
- 剩余{{ item.unit }}数:{{ item.card_point }}{{ item.unit }}
145
+ <view class="jfb-base-card__body-card-item-right">
146
+ <view class="jfb-base-card__body-card-item-right-top">
147
+ <view>
148
+ <xd-font-icon
149
+ icon="iconkaquan"
150
+ size="38"
151
+ style="margin-right: 18rpx"
152
+ :color="mainColor"
153
+ ></xd-font-icon>
154
+ <view>{{ item.card_type_name }}</view>
155
+ </view>
156
+ <view>
157
+ <view>{{ item.card_number }}</view>
158
+ <view>有效期至:{{ item.end_time }}</view>
159
+ </view>
160
+ </view>
161
+ <view class="jfb-base-card__body-card-item-right-bottom">
162
+ <view class="jfb-base-card__body-card-item-right-bottom-info">
163
+ <view
164
+ class="jfb-base-card__body-card-item-right-bottom-info-residue"
165
+ >
166
+ 剩余{{ item.unit }}数:{{ item.card_point }}{{ item.unit }}
167
+ </view>
168
+ <view
169
+ v-if="item.other_card_point && item.card_point_type !== 1"
170
+ class="jfb-base-card__body-card-item-right-bottom-info-deduction"
171
+ >
172
+ 购买其他物品可抵:{{ item.other_card_point }}
173
+ </view>
166
174
  </view>
167
175
  <view
168
- v-if="item.other_card_point && item.card_point_type !== 1"
169
- class="jfb-base-card__body-card-item-right-bottom-info-deduction"
176
+ @click.stop="toDetail(item)"
177
+ :style="{ background: mainColor }"
178
+ >查看</view
170
179
  >
171
- 购买其他物品可抵:{{ item.other_card_point }}
172
- </view>
173
180
  </view>
174
- <view
175
- @click.stop="toDetail(item)"
176
- :style="{ background: mainColor }"
177
- >查看</view
178
- >
179
181
  </view>
180
182
  </view>
181
- </view>
183
+ </template>
184
+ <template v-else>
185
+ <xd-card-v2
186
+ v-for="(item, index) in showList"
187
+ :mainColor="mainColor"
188
+ :key="index"
189
+ :cardInfo="item"
190
+ :tabIndex="tabIndex"
191
+ @toDetail="toDetail(item)"
192
+ @bindLogin="handleBindLogin(item)">
193
+ </xd-card-v2>
194
+ </template>
182
195
  </view>
183
196
  <view v-if="showDisabled==='Y'" @click="handleToDisabled" class="jfb-base-card__body-disabled">
184
197
  已失效票券>>>
@@ -208,6 +221,7 @@
208
221
  <script>
209
222
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
210
223
  import XdButton from "@/components/XdButton/XdButton";
224
+ import XdCardV2 from "@/components/XdCardV2/XdCardV2";
211
225
  import { jfbRootExec } from "@/utils/xd.event";
212
226
  import JfbBaseCardMixin from "./JfbBaseCardMixin";
213
227
  import componentsMixins from "@/mixins/componentsMixins";
@@ -223,6 +237,7 @@ export default {
223
237
  XdFontIcon,
224
238
  XdButton,
225
239
  XdNoticeBar,
240
+ XdCardV2
226
241
  },
227
242
  mixins: [componentsMixins, extsMixins, JfbBaseCardMixin],
228
243
  computed: {
@@ -265,6 +280,7 @@ export default {
265
280
  confirmUrl: "",
266
281
  allEntryPath: "", //综合福利入口页
267
282
  disabledUrl: "",
283
+ cardLayout: "1", //票券布局
268
284
 
269
285
  showDisabled: 'Y',
270
286
 
@@ -296,6 +312,11 @@ export default {
296
312
  // #endif
297
313
 
298
314
  //设置
315
+ this.cardLayout = getContainerPropsValue(
316
+ this.container,
317
+ "content.cardLayout",
318
+ "1"
319
+ );
299
320
  this.changeUrl = getContainerPropsValue(
300
321
  this.container,
301
322
  "content.change_url",
@@ -0,0 +1,37 @@
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: 'pwdCardBind',
16
+ isRule: false,
17
+ title: '根据卡号密码绑定卡',
18
+ prefix: 'pwd',
19
+ path: '/card/v1/card-bind/bind-card-by-password',
20
+ data: {
21
+ card_number: ['卡号', 'String', '必选'],
22
+ card_password: ['密码', 'String', '可选'],
23
+ },
24
+ disabled: true,
25
+ },
26
+ {
27
+ mapFnName: 'qrCardBind',
28
+ isRule: false,
29
+ title: '根据二维码绑定卡',
30
+ prefix: 'qrcode',
31
+ path: '/card/v1/card-bind/bind-card-by-qrcode',
32
+ data: {
33
+ card_qrcode: ['二维码', 'String', '必选'],
34
+ },
35
+ disabled: true,
36
+ },
37
+ ];
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: (data) => {
9
+ return [
10
+ ].filter(i=>i)
11
+ },
12
+ advanced: [],
13
+ };
@@ -0,0 +1,235 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-card-bind-v-2"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx : isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-card-bind-v-2__edit"
10
+ :class="{ editx : isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-card-bind-v-2__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-card-bind-v-2__body">
17
+ <xd-form class="form-wrap" content-align="left" :paddingBetween="0">
18
+ <xd-form-item content-align="left" labelWidth="60" leftIcon="iconpiaoju-01">
19
+ <view class="card_wrap">
20
+ <xd-form-input v-model="cardForm.card_number" placeholder="请输入票券号"></xd-form-input>
21
+ <view
22
+ class="scan_icon"
23
+ @click="doScanCode"
24
+ >
25
+ <xd-font-icon icon="iconsaoma"></xd-font-icon>
26
+ </view>
27
+ </view>
28
+ </xd-form-item>
29
+ <xd-form-item content-align="left" labelWidth="60" leftIcon="iconyuechi">
30
+ <xd-form-input placeholder="请输入票券密码" type="password"></xd-form-input>
31
+ </xd-form-item>
32
+ <xd-form-item content-align="left" labelWidth="60" leftIcon="iconyuechi">
33
+ <view class="img_wrap">
34
+ <xd-form-input placeholder="请输入验证码" type="text"></xd-form-input>
35
+ <view
36
+ class="capture"
37
+ @click="switchValidToken"
38
+ >
39
+ <image
40
+ style="width: 100%;height:100%"
41
+ :src="validImageAPIUrl + '?image_width=180&image_height=80&token='+cardForm.valid_token"
42
+ />
43
+ </view>
44
+ </view>
45
+ </xd-form-item>
46
+ </xd-form>
47
+ <xd-button class="confirm_btn" width="540rpx" type="primary" @click="handleBindCard">确定</xd-button>
48
+ <view class="warm_tip">温馨提示:如果只有密码,无需输入票券号</view>
49
+ </view>
50
+ </view>
51
+ </template>
52
+
53
+ <script>
54
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
55
+ import XdFormInput from "@/components/XdFormInput/XdFormInput";
56
+ import XdForm from "@/components/XdForm/XdForm"
57
+ import XdFormItem from "@/components/XdFormItem/XdFormItem"
58
+ import XdButton from "@/components/XdButton/XdButton"
59
+ import { jfbRootExec } from "@/utils/xd.event";
60
+ import JfbBaseCardBindV2Mixin from "./JfbBaseCardBindV2Mixin";
61
+ import { getContainerPropsValue } from "@/utils/xd.base";
62
+ import componentsMixins from "@/mixins/componentsMixins";
63
+ import extsMixins from "@/mixins/extsMixins";
64
+ export default {
65
+ name: "JfbBaseCardBindV2",
66
+ components: {
67
+ XdFontIcon,
68
+ XdForm,
69
+ XdFormItem,
70
+ XdFormInput,
71
+ XdButton
72
+ },
73
+ mixins: [
74
+ componentsMixins, extsMixins, JfbBaseCardBindV2Mixin
75
+ ],
76
+ data() {
77
+ return {
78
+ cardForm: {
79
+ card_number: '',
80
+ card_password: '',
81
+ valid_token: this.$xdUniHelper.randomChar(20),
82
+ valid_code: '',
83
+ },
84
+ jwxSDK: null,
85
+ validImageAPIUrl: "",
86
+ //todo
87
+ }
88
+ },
89
+ watch: {
90
+ container(value) {
91
+ this.init(value)
92
+ }
93
+ },
94
+ created() {
95
+ this.init(this.container);
96
+ this.validImageAPIUrl = this.brandInfo['api_host'] + '/common/v1/valid_code/image/show'
97
+
98
+ //#ifdef H5
99
+ if (!this.$configProject.isPreview) {
100
+ jfbRootExec("getH5WxAuthorize", {
101
+ vm: this,
102
+ data: {site_id: "wx_pub"},
103
+ })
104
+ .then(res => {
105
+ this.jwxSDK = res.jwxSDK;
106
+ })
107
+ .catch(error=>{
108
+ this.$xdAlert({
109
+ content: error,
110
+ });
111
+ })
112
+ }
113
+ // #endif
114
+ },
115
+ methods: {
116
+ onJfbLoad(options) {
117
+
118
+ },
119
+ /**
120
+ * @description 监听事件变化
121
+ * @param container {object} 业务组件对象自己
122
+ */
123
+ init(container) {
124
+
125
+ //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
126
+
127
+ //this.height = getContainerPropsValue(container, 'content.height', 10);
128
+ },
129
+ handleBindCard(){
130
+ jfbRootExec("pwdCardBind", {
131
+ vm: this,
132
+ data: this.cardForm
133
+ }).then(res => {
134
+ console.log(res);
135
+ }).catch(err => {
136
+ console.log(err);
137
+ })
138
+ },
139
+ switchValidToken(){
140
+ let valid_token = this.$xdUniHelper.randomChar(20);
141
+ this.$set(this.cardForm, "valid_token", valid_token);
142
+ },
143
+
144
+ doScanCode(){
145
+ this.jwxSDK.scanQRCode({
146
+ needResult: 1,
147
+ scanType: ["qrCode", "barCode"],
148
+ success: res => {
149
+ let result = res.resultStr;
150
+ this.cardForm.card_qrcode = result;
151
+
152
+ jfbRootExec("qrCardBind", {
153
+ vm: this,
154
+ data: {
155
+ card_qrcode: result
156
+ }
157
+ }).then(res => {
158
+ console.log(res);
159
+ }).catch(err => {
160
+ console.log(err);
161
+ })
162
+ },
163
+ fail: err => {
164
+ this.$xdAlert({
165
+ content: err.errMsg,
166
+ });
167
+ }
168
+ })
169
+ },
170
+ onJfbScroll(options) {
171
+ console.log('event.onJfbScroll', options)
172
+ },
173
+ onJfbReachBottom(options) {
174
+ console.log('event.onJfbReachBottom', options)
175
+ },
176
+ onJfbShow(options) {
177
+ console.log('event.onJfbShow', options)
178
+ },
179
+ onJfbHide(options) {
180
+ console.log('event.onJfbHide', options)
181
+ },
182
+ onJfbBack(options) {
183
+ console.log('event.onJfbBack', options)
184
+ },
185
+ onJfbUpdate(...data) {
186
+ console.log('event.onJfbUpdate', data)
187
+ },
188
+ onJfbCustomEvent(options) {
189
+ console.log('event.onJfbReachBottom', options)
190
+ },
191
+ }
192
+ }
193
+
194
+ </script>
195
+
196
+ <style scoped lang="less">
197
+ @import "./JfbBaseCardBindV2Less.less";
198
+
199
+ .jfb-base-card-bind-v-2 {
200
+ &__body{
201
+ padding: 40rpx;
202
+
203
+ .form-wrap{
204
+ /deep/ .uni-forms-item__inner{
205
+ border-bottom: 1px solid #EEEEEE;
206
+ padding-bottom: 0;
207
+ margin-bottom: 24rpx;
208
+ }
209
+ }
210
+
211
+ .card_wrap{
212
+ display: flex;
213
+ align-items: center;
214
+ }
215
+ .img_wrap{
216
+ display: flex;
217
+ align-items: center;
218
+ .capture{
219
+ width: 180rpx;
220
+ height: 80rpx;
221
+ background: #DDD;
222
+ }
223
+ }
224
+ .confirm_btn{
225
+ margin-top: 56rpx;
226
+ }
227
+ .warm_tip{
228
+ font-size: 24rpx;
229
+ color: #666666;
230
+ text-align: center;
231
+ margin-top: 24rpx;
232
+ }
233
+ }
234
+ }
235
+ </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-card-bind-v2 {
16
+ border: 1px dashed rgba(0, 0, 0, 0);
17
+ box-sizing: border-box;
18
+ min-height: unit(100, 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-card-bind-v2 {
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-card-bind-v2'
20
+ }
21
+ },
22
+ created() {
23
+
24
+ //@AttrDataCreated
25
+ this.Attr = this.$xdUniHelper.customClone(Attr);
26
+ //@EndAttrDataCreated
27
+
28
+
29
+ },
30
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ aaaa: {}
5
+ }
@@ -52,6 +52,7 @@
52
52
  :fontSize="28"
53
53
  :price="info.card_point"
54
54
  :is-old="true"
55
+ :unit="info.unit || ''"
55
56
  ></xd-unit>
56
57
  </view>
57
58
  <view
@@ -76,6 +76,7 @@
76
76
  fontSize="28"
77
77
  :price="info.card_point"
78
78
  :is-old="true"
79
+ :unit="info.unit || ''"
79
80
  ></xd-unit>
80
81
  </view>
81
82
  <view
@@ -262,9 +263,8 @@ export default {
262
263
  res[key],
263
264
  100
264
265
  );
265
- // temp[key] = res[key];
266
266
  } else if (key === "unit") {
267
- temp[key] = res[key] + "卡";
267
+ temp[key] = res[key];
268
268
  } else {
269
269
  temp[key] = res[key];
270
270
  }
@@ -292,7 +292,7 @@ export default {
292
292
  temp[key] = this.$xdUniHelper.divisionFloatNumber(res[key], 100);
293
293
  // temp[key] = res[key];
294
294
  } else if (key === "unit") {
295
- temp[key] = res[key] + "卡";
295
+ temp[key] = res[key];
296
296
  } else {
297
297
  temp[key] = res[key];
298
298
  }
@@ -39,6 +39,7 @@
39
39
  :fontSize="28"
40
40
  :price="info.card_point"
41
41
  :is-old="true"
42
+ :unit="info.unit|| ''"
42
43
  ></xd-unit>
43
44
  </view>
44
45
  <view
@@ -198,7 +199,7 @@ export default {
198
199
  temp[key] = this.$xdUniHelper.divisionFloatNumber(res[key],100);
199
200
  }
200
201
  else if (key === "unit") {
201
- temp[key] = res[key] + "卡";
202
+ temp[key] = res[key];
202
203
  } else {
203
204
  temp[key] = res[key];
204
205
  }
@@ -0,0 +1,34 @@
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: 'getListCardBind',
16
+ isRule: false,
17
+ title: '获得绑定卡',
18
+ prefix: 'list',
19
+ path: '/card/v1/card-bind/list-bind-card',
20
+ params: {},
21
+ disabled: true,
22
+ },
23
+ {
24
+ mapFnName: 'loginCardBind',
25
+ isRule: false,
26
+ title: '登录卡',
27
+ prefix: 'login',
28
+ path: '/card/v1/card-bind/login-card',
29
+ data: {
30
+ card_number: ['卡号', 'String', '必选'],
31
+ },
32
+ disabled: true,
33
+ },
34
+ ];
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: (data) => {
9
+ return [
10
+ {
11
+ label: '卡券绑定地址:', //label
12
+ ele: 'xd-select-pages-path', //package 名称
13
+ valueKey: 'cardBindPath', //form[valueKey]
14
+ placeholder: '请选择卡券绑定地址',
15
+ value: data.cardBindPath || null,
16
+ setting: {
17
+ router: XdBus.getParentApi('getPagesTree'),
18
+ },
19
+ inline: false,
20
+ },
21
+ {
22
+ label: '卡券转换地址:', //label
23
+ ele: 'xd-select-pages-path', //package 名称
24
+ valueKey: 'changeUrl', //form[valueKey]
25
+ placeholder: '请选择卡券转换地址',
26
+ value: data.changeUrl || null,
27
+ setting: {
28
+ router: XdBus.getParentApi('getPagesTree'),
29
+ },
30
+ inline: false,
31
+ },
32
+ {
33
+ label: '卡券详情地址:', //label
34
+ ele: 'xd-select-pages-path', //package 名称
35
+ valueKey: 'detailUrl', //form[valueKey]
36
+ placeholder: '请选择卡券详情地址',
37
+ value: data.detailUrl || null,
38
+ setting: {
39
+ router: XdBus.getParentApi('getPagesTree'),
40
+ },
41
+ inline: false,
42
+ },
43
+ ].filter(i=>i)
44
+ },
45
+ advanced: [
46
+
47
+ ],
48
+ };
@@ -0,0 +1,227 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-card-v-3"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx : isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-card-v-3__edit"
10
+ :class="{ editx : isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-card-v-3__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-card-v-3__body">
17
+ <view class="v3_title">选择登入票券</view>
18
+ <view class="card_list">
19
+ <xd-card-v2 v-for="(item, index) in cardList"
20
+ :mainColor="mainColor"
21
+ :key="index"
22
+ :cardInfo="item"
23
+ :tabIndex="1"
24
+ @toDetail="toDetail(item)"
25
+ @bindLogin="handleBindLogin(item)"
26
+ ></xd-card-v2>
27
+ </view>
28
+ <view class="bottom_fix" :style="button_bottom">
29
+ <xd-button type="primary" @click="toBindCard">绑定新票券</xd-button>
30
+ </view>
31
+ </view>
32
+ </view>
33
+ </template>
34
+
35
+ <script>
36
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
37
+ import XdCardV2 from "@/components/XdCardV2/XdCardV2";
38
+ import XdButton from "@/components/XdButton/XdButton";
39
+ import { jfbRootExec } from "@/utils/xd.event";
40
+ import JfbBaseCardV3Mixin from "./JfbBaseCardV3Mixin";
41
+ import { getContainerPropsValue } from "@/utils/xd.base";
42
+ import componentsMixins from "@/mixins/componentsMixins";
43
+ import extsMixins from "@/mixins/extsMixins";
44
+ export default {
45
+ name: "JfbBaseCardV3",
46
+ components: {
47
+ XdFontIcon,
48
+ XdCardV2,
49
+ XdButton
50
+ },
51
+ mixins: [
52
+ componentsMixins, extsMixins, JfbBaseCardV3Mixin
53
+ ],
54
+ data() {
55
+ return {
56
+ cardList: [],
57
+ inCallback: "",
58
+ tabIndex: 1,
59
+ //todo
60
+ cardBindPath: "",
61
+ changeUrl: "",
62
+ detailUrl: "",
63
+ }
64
+ },
65
+ watch: {
66
+ container(value) {
67
+ this.init(value)
68
+ }
69
+ },
70
+ computed: {
71
+ button_bottom() {
72
+ return this.fixedStyle({paddingBottom: 24, zIndex: 111})
73
+ },
74
+ },
75
+ created() {
76
+ this.init(this.container);
77
+
78
+ //todo
79
+ },
80
+ methods: {
81
+ onJfbLoad(options) {
82
+ let { inCallback } = options;
83
+ if (inCallback) inCallback = Base64.decode(inCallback);
84
+ this.inCallback = inCallback || this.settings.index;
85
+
86
+ jfbRootExec("getListCardBind", {
87
+ vm: this,
88
+ data: {},
89
+ }).then((res) => {
90
+ this.cardList = res.list.map((item) => {
91
+ item['card_point'] = this.$xdUniHelper.divisionFloatNumber(item.card_point,100);
92
+ item['other_card_point'] = this.$xdUniHelper.divisionFloatNumber(item.other_card_point,100);
93
+ return item;
94
+ });
95
+ });
96
+ },
97
+ /**
98
+ * @description 监听事件变化
99
+ * @param container {object} 业务组件对象自己
100
+ */
101
+ init(container) {
102
+ this.cardBindPath = getContainerPropsValue(container, "content.cardBindPath", {value: ""}).value;
103
+ this.changeUrl = getContainerPropsValue(container, "content.changeUrl", {value: ""}).value;
104
+ this.detailUrl = getContainerPropsValue(container, "content.detailUrl", {value: ""}).value;
105
+ },
106
+ toBindCard(){
107
+ this.$xdUniHelper.navigateTo({
108
+ url: this.cardBindPath
109
+ })
110
+ },
111
+ toDetail(item) {
112
+ this.$xdUniHelper.navigateTo(
113
+ {
114
+ url: `${this.detailUrl}?card_number=${item["card_number"]}`,
115
+ },
116
+ false
117
+ );
118
+ },
119
+ /**
120
+ * @description 已绑定卡登录
121
+ * @param item
122
+ */
123
+ handleBindLogin(item) {
124
+ if (this.tabIndex === 1) {
125
+ console.log("bindCardLogin", this.inCallback);
126
+
127
+ //无效卡
128
+ if (item["is_valid"] !== "Y") {
129
+ console.log(
130
+ item,
131
+ item["is_valid"],
132
+ item["is_valid"] !== "Y",
133
+ "itemitem"
134
+ );
135
+ return;
136
+ }
137
+ this.$xdShowLoading({});
138
+ jfbRootExec("loginCardBind", {
139
+ vm: this,
140
+ data: { card_number: item["card_number"] },
141
+ })
142
+ .then((res) => {
143
+ console.log(res);
144
+ this.$xdHideLoading();
145
+ //#ifdef MP-WEIXIN
146
+ if (this.jfbAuthorize !== null) {
147
+ this.jfbAuthorize.setToken("card", res["card_token"], {
148
+ expires: res["card_expire_in"] / 60 / 60,
149
+ });
150
+ }
151
+ //#endif
152
+
153
+ if (this.$configProject.isPreview) {
154
+ console.log("handleBindLogin", "预览模式不跳转", this.inCallback);
155
+ } else {
156
+ this.$xdUniHelper.redirectTo({
157
+ url: this.inCallback,
158
+ });
159
+ }
160
+ })
161
+ .catch((res) => {
162
+ this.$xdHideLoading();
163
+ });
164
+ } else {
165
+ this.$xdUniHelper.navigateTo(
166
+ {
167
+ url: `${this.changeUrl}?card_number=${item["card_number"]}`,
168
+ },
169
+ false
170
+ );
171
+ }
172
+ },
173
+ onJfbScroll(options) {
174
+ console.log('event.onJfbScroll', options)
175
+ },
176
+ onJfbReachBottom(options) {
177
+ console.log('event.onJfbReachBottom', options)
178
+ },
179
+ onJfbShow(options) {
180
+ console.log('event.onJfbShow', options)
181
+ },
182
+ onJfbHide(options) {
183
+ console.log('event.onJfbHide', options)
184
+ },
185
+ onJfbBack(options) {
186
+ console.log('event.onJfbBack', options)
187
+ },
188
+ onJfbUpdate(...data) {
189
+ console.log('event.onJfbUpdate', data)
190
+ },
191
+ onJfbCustomEvent(options) {
192
+ console.log('event.onJfbReachBottom', options)
193
+ },
194
+ }
195
+ }
196
+
197
+ </script>
198
+
199
+ <style scoped lang="less">
200
+ @import "./JfbBaseCardV3Less.less";
201
+
202
+ .jfb-base-card-v-3 {
203
+ &__body{
204
+ padding: 0 24rpx;
205
+ .v3_title{
206
+ padding: 16rpx 40rpx;
207
+ border-radius: 40rpx;
208
+ background: #FAFAFA;
209
+ font-size: 36rpx;
210
+ color: #333333;
211
+ line-height: 40rpx;
212
+ display: inline-block;
213
+ margin: 24rpx 0;
214
+ }
215
+ .bottom_fix{
216
+ position: fixed;
217
+ right: 0;
218
+ left: 0;
219
+ bottom: 0;
220
+ background: #FFFFFF;
221
+ padding: 24rpx 54rpx;
222
+ box-sizing: border-box;
223
+ box-shadow: 0px 0px 8rpx 0px rgba(179, 193, 196, 0.5);
224
+ }
225
+ }
226
+ }
227
+ </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-card-v3 {
16
+ border: 1px dashed rgba(0, 0, 0, 0);
17
+ box-sizing: border-box;
18
+ min-height: unit(100, 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-card-v3 {
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-card-v3'
20
+ }
21
+ },
22
+ created() {
23
+
24
+ //@AttrDataCreated
25
+ this.Attr = this.$xdUniHelper.customClone(Attr);
26
+ //@EndAttrDataCreated
27
+
28
+
29
+ },
30
+ }
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ aaaa: {}
5
+ }