jufubao-base 1.0.437 → 1.0.438-beta1

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.437",
3
+ "version": "1.0.438-beta1",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -51,7 +51,7 @@
51
51
  "dingtalk-jsapi": "^3.0.31",
52
52
  "flyio": "^0.6.2",
53
53
  "gxd-commands-bussiness": "^1.0.12",
54
- "gxd-uni-library-editx": "1.0.198-beta1",
54
+ "gxd-uni-library-editx": "1.0.202-beta3",
55
55
  "jweixin-module": "^1.6.0",
56
56
  "md5": "^2.3.0",
57
57
  "path-to-regexp": "^6.2.1",
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+ /**
3
+ * @description 接口配置,
4
+ * 在设置方法名字当时候,别忘记加上【模块名字】:Express
5
+ * @type {*[]}
6
+ */
7
+ module.exports = [
8
+ {
9
+ //设置方法名字当别忘记加上【模块名字】:Express
10
+ mapFnName: 'getExpressCount',
11
+ title: '订单 - 快递包裹数量(代签收/运输中)',
12
+ path: '/order/v1/logistics/express-package-count',
13
+ isRule: false,
14
+ params: {
15
+
16
+ },
17
+ isConsole: true,
18
+ disabled: true,
19
+ },
20
+ {
21
+ //设置方法名字当别忘记加上【模块名字】:Express
22
+ mapFnName: 'getExpressList',
23
+ title: '订单 - 快递包裹分类列表',
24
+ path: '/order/v1/logistics/express-package-list',
25
+ isRule: false,
26
+ params: {
27
+ logistics_status: ['物流状态', 'String', '必选'],
28
+ page_size: ['每页数量', 'Number', '必选'],
29
+ page_token: ['分页token', 'String', '必选'],
30
+ },
31
+ isConsole: true,
32
+ disabled: true,
33
+ },
34
+ ];
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: (data) => {
9
+ return [
10
+ {
11
+ label: '物流详情路径:',
12
+ groupKey:'advanced',
13
+ className: 'input100',
14
+ labelInline:true,
15
+ ele: 'xd-select-pages-path',
16
+ valueKey: 'select-pages-path',
17
+ value: data['select-pages-path'] || null,
18
+ setting: {
19
+ router: XdBus.getParentApi('getPagesTree')
20
+ },
21
+ },
22
+ ].filter(i=>i)
23
+ },
24
+ advanced: [],
25
+ };
@@ -0,0 +1,487 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-express-list"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx : isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-express-list__edit"
10
+ :class="{ editx : isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-express-list__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-express-list__body">
17
+ <!--状态tab栏-->
18
+ <view class="jfb-base-express-list__status" v-if="statusList.length > 0">
19
+ <view
20
+ class="jfb-base-express-list__status-item"
21
+ :class="{ 'is-active': activeStatus === item.status }"
22
+ v-for="(item, index) in statusList"
23
+ :key="index"
24
+ @click="handleStatusChange(item.status)"
25
+ >
26
+ <view class="jfb-base-express-list__status-text">
27
+ <view class="jfb-base-express-list__status-name">
28
+ <text>{{ item.label }}</text>
29
+ <view class="jfb-base-express-list__status-line" :class="{ 'is-visible': activeStatus === item.status }"></view>
30
+ </view>
31
+ <view class="jfb-base-express-list__status-count" v-if="item.count">{{ item.count > 99 ? '99+' : item.count }}</view>
32
+ </view>
33
+ </view>
34
+ </view>
35
+ <!--包裹列表-->
36
+ <view class="jfb-base-express-list__list">
37
+ <view
38
+ class="jfb-base-express-list__item"
39
+ v-for="(item, index) in express"
40
+ :key="index"
41
+ >
42
+ <view class="jfb-base-express-list__item-title">
43
+ <view class="jfb-base-express-list__item-title-left">
44
+ <xd-font-icon icon="iconbaoguo" size="30" color="#999"></xd-font-icon>
45
+ <text class="jfb-base-express-list__item-title-text">包裹 {{ index + 1 }}</text>
46
+ </view>
47
+ <view class="jfb-base-express-list__item-title-right" @click="handleToDetail(item)">
48
+ <text>查看详情</text>
49
+ <xd-font-icon icon="iconxiangyou_xian" size="24" color="#999"></xd-font-icon>
50
+ </view>
51
+ </view>
52
+ <view class="jfb-base-express-list__item-number">
53
+ <view class="jfb-base-express-list__item-number-info">
54
+ <text class="jfb-base-express-list__item-number-company">{{ item.logistics_company_name }}</text>
55
+ <text class="jfb-base-express-list__item-number-no">{{ item.logistics_number }}</text>
56
+ </view>
57
+ <view
58
+ class="jfb-base-express-list__item-number-copy"
59
+ @click.stop="copy(item.logistics_number)"
60
+ >复制单号</view>
61
+ </view>
62
+ <view class="jfb-base-express-list__item-goods">
63
+ <view
64
+ class="jfb-base-express-list__item-goods-item"
65
+ v-for="(Sitem, Sindex) in item.product_list"
66
+ :key="Sindex"
67
+ >
68
+ <image
69
+ class="jfb-base-express-list__item-goods-image"
70
+ :src="Sitem.product_thumb"
71
+ mode="aspectFill"
72
+ ></image>
73
+ <view class="jfb-base-express-list__item-goods-info">
74
+ <view class="jfb-base-express-list__item-goods-name">{{ Sitem.product_name }}</view>
75
+ <view class="jfb-base-express-list__item-goods-brand" v-if="Sitem.brand_name">{{ Sitem.brand_name }}</view>
76
+ <view class="jfb-base-express-list__item-goods-bottom">
77
+ <view class="jfb-base-express-list__item-goods-price">
78
+ <xd-unit :isOld="false" :price="Sitem.price" :color="mainColor" :fontSize="36"></xd-unit>
79
+ </view>
80
+ <view class="jfb-base-express-list__item-goods-num">x{{ Sitem.product_num }}</view>
81
+ </view>
82
+ </view>
83
+ </view>
84
+ </view>
85
+ </view>
86
+ </view>
87
+ <!--空状态-->
88
+ <view class="jfb-base-express-list__empty" v-if="express.length === 0">暂无数据</view>
89
+ </view>
90
+ </view>
91
+ </template>
92
+
93
+ <script>
94
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
95
+ import XdUnit from "@/components/XdUnit/XdUnit";
96
+ import { jfbRootExec } from "@/utils/xd.event";
97
+ import JfbBaseExpressListMixin from "./JfbBaseExpressListMixin";
98
+ import { getContainerPropsValue } from "@/utils/xd.base";
99
+ import getServiceUrl from "@/common/getServiceUrl";
100
+ import componentsMixins from "@/mixins/componentsMixins";
101
+ import extsMixins from "@/mixins/extsMixins";
102
+ export default {
103
+ // #ifdef MP-WEIXIN
104
+ options: { styleIsolation: 'shared' },
105
+ // #endif
106
+ name: "JfbBaseExpressList",
107
+ components: {
108
+ XdFontIcon,
109
+ XdUnit,
110
+ },
111
+ mixins: [
112
+ componentsMixins, extsMixins, JfbBaseExpressListMixin
113
+ ],
114
+ data() {
115
+ return {
116
+ expressPath: "", //物流详情路径
117
+ activeStatus: "logistics_status_p", //当前选中状态
118
+ statusList: [], //状态tab列表
119
+ express: [], //包裹列表
120
+ page_token: "1", //当前页码
121
+ page_size: 20, //每页数量
122
+ hasNext: false, //是否有下一页
123
+ next_page_token: "", //下一页token
124
+ }
125
+ },
126
+ watch: {
127
+ container(value, oldValue) {
128
+ if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
129
+ if (this.$configProject['isPreview']) this.init(value)
130
+ },
131
+ },
132
+ created() {
133
+ this.init(this.container);
134
+ },
135
+ methods: {
136
+ onJfbLoad(options) {
137
+ if(options.tab) {
138
+ this.activeStatus = options.tab
139
+ }
140
+ //加载状态tab数量与包裹列表
141
+ this.getExpressCount();
142
+ this.getExpressList();
143
+ },
144
+ /**
145
+ * @description 监听事件变化
146
+ * @param container {object} 业务组件对象自己
147
+ */
148
+ init(container) {
149
+ this.expressPath = getContainerPropsValue(container, 'content.select-pages-path', {value: ""}).value;
150
+ },
151
+ /**
152
+ * @description 获取各状态包裹数量
153
+ */
154
+ getExpressCount() {
155
+ jfbRootExec("getExpressCount", {
156
+ vm: this,
157
+ data: {
158
+ page_id: this.pageAttr['page_id'], //页面ID
159
+ container_id: this.containerId, //组件ID
160
+ },
161
+ })
162
+ .then((res) => {
163
+ //已签收状态不显示数量
164
+ this.statusList = [
165
+ { status: 'logistics_status_p', label: '待签收', count: res.proxy_sign_count },
166
+ { status: 'logistics_status_n', label: '运输中', count: res.transport_count },
167
+ { status: 'logistics_status_y', label: '已签收', count: 0 },
168
+ ];
169
+ })
170
+ .catch((err) => {
171
+ this.$xdLog.catch(err);
172
+ this.statusList = [];
173
+ });
174
+ },
175
+ /**
176
+ * @description 获取包裹列表
177
+ */
178
+ getExpressList() {
179
+ jfbRootExec("getExpressList", {
180
+ vm: this,
181
+ data: this.$xdUniHelper.deleteParamEmptyKey({
182
+ page_id: this.pageAttr['page_id'], //页面ID
183
+ container_id: this.containerId, //组件ID
184
+ logistics_status: this.activeStatus, //当前状态
185
+ page_token: this.page_token, //当前页码
186
+ page_size: this.page_size, //每页数量
187
+ }),
188
+ })
189
+ .then((res) => {
190
+ const list = (res.list || []).map((item) => {
191
+ item.product_list = (item.product_list || []).map((Sitem) => {
192
+ Sitem.product_thumb = Sitem.product_thumb ? getServiceUrl(Sitem.product_thumb, "size3") : "";
193
+ return Sitem;
194
+ });
195
+ return item;
196
+ });
197
+ //追加列表(首屏替换,分页累加)
198
+ this.express = this.page_token === '1' ? list : (this.express || []).concat(list);
199
+ this.next_page_token = res.next_page_token;
200
+ this.hasNext = !!res.next_page_token;
201
+ })
202
+ .catch((err) => {
203
+ this.$xdLog.catch(err);
204
+ if (this.page_token === '1') this.express = [];
205
+ });
206
+ },
207
+ /**
208
+ * @description 切换状态
209
+ * @param status {string} 状态值
210
+ */
211
+ handleStatusChange(status) {
212
+ this.activeStatus = status;
213
+ this.page_token = '1';
214
+ this.getExpressList();
215
+ },
216
+ /**
217
+ * @description 查看物流详情
218
+ * @param item {object} 包裹对象
219
+ */
220
+ handleToDetail(item) {
221
+ console.log(this.expressPath,'this.expressPath')
222
+ if (this.$configProject['isPreview']) return;
223
+ this.$xdUniHelper.navigateTo({
224
+ url: `${this.expressPath}?package_id=${item.package_id}`,
225
+ });
226
+ },
227
+ /**
228
+ * @description 复制功能
229
+ * @param text {string} 复制内容
230
+ */
231
+ copy(text) {
232
+ // #ifdef H5
233
+ this.$copyText(text).then((res) => {
234
+ this.$xdAlert({ content: "复制成功" });
235
+ });
236
+ // #endif
237
+ // #ifndef H5
238
+ uni.setClipboardData({
239
+ data: text,
240
+ showToast: false,
241
+ success: () => {
242
+ //this.$xdAlert({ content: "复制成功" });
243
+ },
244
+ });
245
+ // #endif
246
+ },
247
+ onJfbScroll(options) {
248
+ console.log('event.onJfbScroll', options)
249
+ },
250
+ onJfbReachBottom(options) {
251
+ if (this.hasNext) {
252
+ this.page_token = this.next_page_token;
253
+ this.getExpressList();
254
+ }
255
+ },
256
+ onJfbShow(options) {
257
+ console.log('event.onJfbShow', options)
258
+ },
259
+ onJfbHide(options) {
260
+ console.log('event.onJfbHide', options)
261
+ },
262
+ onJfbBack(options) {
263
+ console.log('event.onJfbBack', options)
264
+ },
265
+ onJfbUpdate(...data) {
266
+ console.log('event.onJfbUpdate', data)
267
+ },
268
+ onJfbCustomEvent(options) {
269
+ console.log('event.onJfbReachBottom', options)
270
+ },
271
+ }
272
+ }
273
+
274
+ </script>
275
+
276
+ <style scoped lang="less">
277
+ @import "./JfbBaseExpressListLess.less";
278
+
279
+ .jfb-base-express-list {
280
+ &__body {
281
+ background: #f8f8f8;
282
+ }
283
+
284
+ //状态tab栏
285
+ &__status {
286
+ background: #fff;
287
+ display: flex;
288
+ align-items: center;
289
+
290
+ &-item {
291
+ flex: 1;
292
+ height: 88rpx;
293
+ display: flex;
294
+ justify-content: center;
295
+ align-items: center;
296
+ color: #666;
297
+
298
+ &.is-active {
299
+ color: #333;
300
+ font-weight: 600;
301
+ }
302
+ }
303
+
304
+ &-text {
305
+ display: flex;
306
+ align-items: center;
307
+ }
308
+
309
+ &-name {
310
+ position: relative;
311
+ font-size: 28rpx;
312
+ }
313
+
314
+ &-line {
315
+ position: absolute;
316
+ left: 0;
317
+ bottom: -8rpx;
318
+ width: 100%;
319
+ height: 6rpx;
320
+ border-radius: 3rpx;
321
+ background: #333;
322
+ visibility: hidden;
323
+
324
+ &.is-visible {
325
+ visibility: visible;
326
+ }
327
+ }
328
+
329
+ &-count {
330
+ width: 50rpx;
331
+ height: 40rpx;
332
+ line-height: 40rpx;
333
+ margin-left: 8rpx;
334
+ border-radius: 24rpx;
335
+ background: rgba(240, 31, 31, 1);
336
+ box-shadow: 0px 2rpx 4rpx rgba(240, 31, 31, 0.25);
337
+ color: #fff;
338
+ font-size: 22rpx;
339
+ text-align: center;
340
+ box-sizing: border-box;
341
+ }
342
+ }
343
+
344
+ //包裹列表
345
+ &__list {
346
+ padding: 16rpx;
347
+ }
348
+
349
+ &__item {
350
+ background: #fff;
351
+ border-radius: 16rpx;
352
+ overflow: hidden;
353
+ margin-bottom: 16rpx;
354
+
355
+ &:last-child {
356
+ margin-bottom: 0;
357
+ }
358
+
359
+ &-title {
360
+ padding: 24rpx;
361
+ display: flex;
362
+ justify-content: space-between;
363
+ align-items: center;
364
+ font-size: 24rpx;
365
+ color: #999;
366
+
367
+ &-left,
368
+ &-right {
369
+ display: flex;
370
+ align-items: center;
371
+ }
372
+
373
+ &-text {
374
+ margin-left: 12rpx;
375
+ }
376
+ }
377
+
378
+ &-number {
379
+ margin: 0 24rpx;
380
+ padding-bottom: 24rpx;
381
+ display: flex;
382
+ justify-content: space-between;
383
+ align-items: center;
384
+
385
+ &-info {
386
+ display: flex;
387
+ align-items: center;
388
+ overflow: hidden;
389
+ }
390
+
391
+ &-company {
392
+ font-size: 28rpx;
393
+ font-weight: 600;
394
+ color: #333;
395
+ margin-right: 16rpx;
396
+ flex-shrink: 0;
397
+ }
398
+
399
+ &-no {
400
+ font-size: 26rpx;
401
+ color: #999;
402
+ }
403
+
404
+ &-copy {
405
+ flex-shrink: 0;
406
+ border: 2rpx solid #e5e5e5;
407
+ border-radius: 30rpx;
408
+ color: #999;
409
+ font-size: 24rpx;
410
+ padding: 6rpx 20rpx;
411
+ }
412
+ }
413
+
414
+ &-goods {
415
+ border-top: 2rpx solid #f5f5f5;
416
+ padding: 24rpx;
417
+
418
+ &-item {
419
+ display: flex;
420
+ align-items: center;
421
+ margin-bottom: 24rpx;
422
+
423
+ &:last-child {
424
+ margin-bottom: 0;
425
+ }
426
+ }
427
+
428
+ &-image {
429
+ width: 160rpx;
430
+ height: 160rpx;
431
+ border-radius: 8rpx;
432
+ flex-shrink: 0;
433
+ }
434
+
435
+ &-info {
436
+ flex: 1;
437
+ display: flex;
438
+ flex-direction: column;
439
+ justify-content: space-between;
440
+ min-height: 160rpx;
441
+ margin-left: 20rpx;
442
+ overflow: hidden;
443
+ }
444
+
445
+ &-name {
446
+ font-size: 28rpx;
447
+ color: #333;
448
+ line-height: 40rpx;
449
+ .uni-max-cut(2, 80);
450
+ word-break: break-all;
451
+ }
452
+
453
+ &-brand {
454
+ font-size: 24rpx;
455
+ color: #999;
456
+ margin-top: 6rpx;
457
+ .uni-max-cut(1, 32);
458
+ }
459
+
460
+ &-bottom {
461
+ display: flex;
462
+ justify-content: space-between;
463
+ align-items: center;
464
+ margin-top: 12rpx;
465
+ }
466
+
467
+ &-price {
468
+ display: flex;
469
+ align-items: center;
470
+ }
471
+
472
+ &-num {
473
+ flex-shrink: 0;
474
+ font-size: 24rpx;
475
+ color: #999;
476
+ }
477
+ }
478
+ }
479
+
480
+ &__empty {
481
+ padding: 80rpx 0;
482
+ text-align: center;
483
+ font-size: 26rpx;
484
+ color: #999;
485
+ }
486
+ }
487
+ </style>
@@ -0,0 +1,79 @@
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-express-list {
16
+ box-sizing: border-box;
17
+
18
+ &__body{
19
+ position: relative;
20
+ overflow: hidden;
21
+ z-index: 2
22
+ }
23
+
24
+ &.editx,&.editx:hover {
25
+ position: relative;
26
+ min-height: unit(100, rpx);
27
+ z-index: 3;
28
+ &::after {
29
+ border: 2rpx dashed blue;
30
+ content: " ";
31
+ position: absolute;
32
+ top:0;
33
+ left:0;
34
+ bottom:0;
35
+ right:0;
36
+ z-index: 4;
37
+ cursor: pointer;
38
+ }
39
+
40
+ }
41
+
42
+
43
+ &__edit {
44
+ cursor: pointer;
45
+ position: absolute;
46
+ right: unit(0, rpx);
47
+ top: unit(-52, rpx);
48
+ height: unit(50, rpx);
49
+ line-height: unit(50, rpx);
50
+ display: flex;
51
+ justify-content: center;
52
+ align-items: center;
53
+ background: rgba(0, 0, 0, .6);
54
+ border-radius: unit(10, rpx);
55
+ box-shadow: 0 0 10px rbga(0, 0, 0, 0.3);
56
+ color: #fff;
57
+ font-size: unit(22, rpx);
58
+
59
+ &-icon{
60
+ padding: 0 unit(20, rpx);
61
+ }
62
+
63
+ &.editx {
64
+ box-sizing: border-box;
65
+
66
+ }
67
+ }
68
+ }
69
+ //end
70
+
71
+
72
+ /**notPreview**/
73
+ .jfb-base-express-list {
74
+ //&:before {
75
+ //content: " ";
76
+ //display: table;
77
+ //}
78
+ }
79
+ /**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-express-list'
20
+ }
21
+ },
22
+ created() {
23
+
24
+ //@AttrDataCreated
25
+ this.Attr = this.$xdUniHelper.customClone(Attr);
26
+ //@EndAttrDataCreated
27
+
28
+
29
+ },
30
+ }