jufubao-base 1.0.262 → 1.0.263-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.262",
3
+ "version": "1.0.263-beta1",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -518,6 +518,19 @@ export default {
518
518
  },
519
519
  inline: false,
520
520
  },
521
+ {
522
+ label: '查看服务进度路径:',
523
+ ele: 'xd-select-pages-path',
524
+ valueKey: 'serviceStepPath',
525
+ groupKey:'advanced',
526
+ placeholder: '查看服务进度路径',
527
+ value: data['serviceStepPath'] || null,
528
+ setting: {
529
+ router: XdBus.getParentApi('getPagesTree'),
530
+ },
531
+ inline: false,
532
+ },
533
+
521
534
 
522
535
  // 废弃 - 隐藏
523
536
  {
@@ -902,6 +902,7 @@ export default {
902
902
  codeSrc: "",
903
903
  packageListPath: "", //包裹列表路径
904
904
  payPath: "", //支付路径
905
+ serviceStepPath: "", //服务进度路径
905
906
  // logisticsPath: "", //物流详情路径
906
907
  webViewPath: "", //容器路径
907
908
  viewStatus: "", //业务类型预览
@@ -1269,9 +1270,9 @@ export default {
1269
1270
  this.bgColor = this.$colorChange(this.mainColor).alpha(0.1).toString();
1270
1271
  this.brandPath = getContainerPropsValue(container, "content.brandPath", {value: "",}).value;
1271
1272
  this.payPath = getContainerPropsValue(container, "content.payPath", {value: "",}).value;
1273
+ this.serviceStepPath = getContainerPropsValue(container, "content.serviceStepPath", { value: "" }).value;
1272
1274
  this.refundPath = getContainerPropsValue(container, "content.refundPath", {value: "",}).value;
1273
1275
  this.refundFastPath = getContainerPropsValue(container, "content.refundFastPath", {value: "",}).value;
1274
-
1275
1276
  this.packageListPath = getContainerPropsValue(container, "content.packageListPath", { value: "" }).value;
1276
1277
  this.webViewPath = getContainerPropsValue(container, "content.webViewPath", {value: "",}).value;
1277
1278
  this.margin = getContainerPropsValue(container, "content.margin", {top: 0, left: 0, right: 0, bottom: 0,});
@@ -1457,6 +1458,10 @@ export default {
1457
1458
  },
1458
1459
  });
1459
1460
  }
1461
+ else if(item.action === 'service_process_list'){
1462
+ this.$xdUniHelper.navigateTo({
1463
+ url: `${this.serviceStepPath}?main_order_id=${this.main_order_id}`,
1464
+ });
1460
1465
  else if(item.action === 'apply_refund'){
1461
1466
  this.$xdShowLoading({});
1462
1467
  jfbRootExec("getSupportQuickRefund", {
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+ /**
3
+ * @description 接口配置,
4
+ * 在设置方法名字当时候,别忘记加上【模块名字】:Order
5
+ * @type {*[]}
6
+ */
7
+ module.exports = [
8
+ {
9
+ mapFnName: 'getServiceProcess',
10
+ title: '获取服务单进度',
11
+ path: '/order/v1/service-process',
12
+ isRule: false,
13
+ params: {
14
+ main_order_id: ['main_order_id', 'String', '必选'],
15
+ },
16
+ isConsole: true,
17
+ disabled: true,
18
+ },
19
+ ];
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: (data) => {
9
+ return [
10
+
11
+ ].filter(i=>i)
12
+ },
13
+ advanced: [],
14
+ };
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-order-service-step"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx : isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-order-service-step__edit"
10
+ :class="{ editx : isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-order-service-step__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-order-service-step__body" :style=[bodyWrapStyle]>
17
+ <view class="steps_box">
18
+ <view class="order_id">渠道订单号:{{ channel_order_id }}</view>
19
+ <view class="service_box">
20
+ <view class="mtb40">服务进度</view>
21
+ <uni-steps :options="list" active-color="#007AFF" :active="active" direction="column" />
22
+ </view>
23
+ </view>
24
+ </view>
25
+ </view>
26
+ </template>
27
+
28
+ <script>
29
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
30
+ import UniSteps from "./uni-steps.vue"
31
+ import { jfbRootExec } from "@/utils/xd.event";
32
+ import JfbBaseOrderServiceStepMixin from "./JfbBaseOrderServiceStepMixin";
33
+ import { getContainerPropsValue } from "@/utils/xd.base";
34
+ import componentsMixins from "@/mixins/componentsMixins";
35
+ import extsMixins from "@/mixins/extsMixins";
36
+ export default {
37
+ name: "JfbBaseOrderServiceStep",
38
+ components: {
39
+ XdFontIcon,
40
+ UniSteps
41
+ },
42
+ mixins: [
43
+ componentsMixins, extsMixins, JfbBaseOrderServiceStepMixin
44
+ ],
45
+ data() {
46
+ return {
47
+ main_order_id: "",
48
+ channel_order_id: "",
49
+ active: 2,
50
+ list: []
51
+ //todo
52
+ }
53
+ },
54
+ computed: {
55
+ bodyWrapStyle(){
56
+ return {
57
+ minHeight: this.layoutInfo.bodyMinHeightRpx + 'rpx',
58
+ }
59
+ }
60
+ },
61
+ watch: {
62
+ container(value, oldValue) {
63
+ if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
64
+ if (this.$configProject['isPreview']) this.init(value)
65
+ },
66
+ },
67
+ created() {
68
+ this.init(this.container);
69
+
70
+ //todo
71
+ },
72
+ methods: {
73
+ onJfbLoad(options) {
74
+ this.main_order_id = options.main_order_id;
75
+ this.p_getServiceProcess();
76
+ },
77
+ /**
78
+ * @description 监听事件变化
79
+ * @param container {object} 业务组件对象自己
80
+ */
81
+ init(container) {
82
+ //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
83
+ //this.height = getContainerPropsValue(container, 'content.height', 10);
84
+ },
85
+ p_getServiceProcess(){
86
+ jfbRootExec("getServiceProcess", {
87
+ vm: this,
88
+ data: {
89
+ main_order_id: this.main_order_id
90
+ }
91
+ }).then(res => {
92
+ this.list = res.list.map(item => {
93
+ item.title = item.process_desc;
94
+ item.desc = item.process_desc;
95
+ item.time = this.$xdUniHelper.getDate(
96
+ item.process_time * 1000
97
+ ).fullTime;
98
+ return item;
99
+ });
100
+ this.active = res.list.length - 1;
101
+ this.channel_order_id = res.channel_order_id;
102
+ })
103
+ },
104
+ onJfbScroll(options) {
105
+ // console.log('event.onJfbScroll', options)
106
+ },
107
+ onJfbReachBottom(options) {
108
+ console.log('event.onJfbReachBottom', options)
109
+ },
110
+ onJfbShow(options) {
111
+ console.log('event.onJfbShow', options)
112
+ },
113
+ onJfbHide(options) {
114
+ console.log('event.onJfbHide', options)
115
+ },
116
+ onJfbBack(options) {
117
+ console.log('event.onJfbBack', options)
118
+ },
119
+ onJfbUpdate(...data) {
120
+ console.log('event.onJfbUpdate', data)
121
+ },
122
+ onJfbCustomEvent(options) {
123
+ console.log('event.onJfbReachBottom', options)
124
+ },
125
+ }
126
+ }
127
+
128
+ </script>
129
+
130
+ <style scoped lang="less">
131
+ @import "./JfbBaseOrderServiceStepLess.less";
132
+
133
+ .jfb-base-order-service-step {
134
+ &__body{
135
+ padding: 40rpx;
136
+ .steps_box{
137
+ border: 1px solid #E5E5E5;
138
+ border-radius: 16rpx;
139
+ padding: 40rpx;
140
+ background: #FFFFFF;
141
+
142
+ .order_id{
143
+ font-size: 32rpx;
144
+ color: #777777;
145
+ }
146
+ .service_box{
147
+ font-size: 32rpx;
148
+ }
149
+
150
+ .mtb40{
151
+ margin-top: 60rpx;
152
+ margin-bottom: 60rpx;
153
+ }
154
+
155
+ }
156
+ }
157
+ }
158
+ </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-order-service-step {
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-order-service-step {
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-order-service-step'
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
+ getServiceProcess: {"total_size":1,"next_page_token":"","list":[{"id":1,"process_desc":"洗护服务单-配送中","process_time":1749541227}],"channel_order_id":"20250610154015710702","request_id":"98b5a154fd1c60c1"}
5
+ }
@@ -0,0 +1,285 @@
1
+ <template>
2
+ <view class="uni-steps">
3
+ <view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
4
+ <view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
5
+ <view v-for="(item,index) in options" :key="index"
6
+ :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
7
+ <text :style="{
8
+ color:index < active?activeColor:(index == active ? '#333' :deactiveColor)
9
+ }"
10
+ :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.title}}</text>
11
+ <text :style="{
12
+ color:index < active?activeColor:(index == active ? '#333' :deactiveColor)
13
+ }"
14
+ :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.desc}}</text>
15
+ <text class="uni-steps__column-time">{{ item.time }}</text>
16
+ </view>
17
+ </view>
18
+ <view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
19
+ <view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']"
20
+ v-for="(item,index) in options" :key="index">
21
+ <view
22
+ :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']"
23
+ :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}">
24
+ </view>
25
+ <view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-check']"
26
+ v-if="index === active">
27
+ {{ index + 1}}
28
+ </view>
29
+ <view v-else :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']"
30
+ :style="{
31
+ borderColor: index<active?activeColor:deactiveColor,
32
+ color: index<active?activeColor:deactiveColor
33
+ }">{{ index + 1}}</view>
34
+ <view
35
+ :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
36
+ :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}">
37
+ </view>
38
+ </view>
39
+ </view>
40
+ </view>
41
+ </view>
42
+ </template>
43
+
44
+ <script>
45
+ /**
46
+ * Steps 步骤条
47
+ * @description 评分组件
48
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=34
49
+ * @property {Number} active 当前步骤
50
+ * @property {String} direction = [row|column] 当前步骤
51
+ * @value row 横向
52
+ * @value column 纵向
53
+ * @property {String} activeColor 选中状态的颜色
54
+ * @property {Array} options 数据源,格式为:[{title:'xxx',desc:'xxx'},{title:'xxx',desc:'xxx'}]
55
+ */
56
+
57
+ export default {
58
+ name: 'UniSteps',
59
+ props: {
60
+ direction: {
61
+ // 排列方向 row column
62
+ type: String,
63
+ default: 'row'
64
+ },
65
+ activeColor: {
66
+ // 激活状态颜色
67
+ type: String,
68
+ default: '#2979FF'
69
+ },
70
+ deactiveColor: {
71
+ // 未激活状态颜色
72
+ type: String,
73
+ default: '#B7BDC6'
74
+ },
75
+ active: {
76
+ // 当前步骤
77
+ type: Number,
78
+ default: 0
79
+ },
80
+ activeIcon: {
81
+ // 当前步骤
82
+ type: String,
83
+ default: 'checkbox-filled'
84
+ },
85
+ options: {
86
+ type: Array,
87
+ default () {
88
+ return []
89
+ }
90
+ } // 数据
91
+ },
92
+ data() {
93
+ return {}
94
+ }
95
+ }
96
+ </script>
97
+
98
+ <style lang="scss">
99
+ $uni-primary: #2979ff !default;
100
+ $uni-border-color:#EDEDED;
101
+ .uni-steps {
102
+ /* #ifndef APP-NVUE */
103
+ display: flex;
104
+ width: 100%;
105
+ /* #endif */
106
+ /* #ifdef APP-NVUE */
107
+ flex: 1;
108
+ /* #endif */
109
+ flex-direction: column;
110
+ }
111
+
112
+ .uni-steps__row {
113
+ /* #ifndef APP-NVUE */
114
+ display: flex;
115
+ /* #endif */
116
+ flex-direction: column;
117
+ }
118
+
119
+ .uni-steps__column {
120
+ /* #ifndef APP-NVUE */
121
+ display: flex;
122
+ /* #endif */
123
+ flex-direction: row-reverse;
124
+ }
125
+
126
+ .uni-steps__row-text-container {
127
+ /* #ifndef APP-NVUE */
128
+ display: flex;
129
+ /* #endif */
130
+ flex-direction: row;
131
+ align-items: flex-end;
132
+ margin-bottom: 8px;
133
+ }
134
+
135
+ .uni-steps__column-text-container {
136
+ /* #ifndef APP-NVUE */
137
+ display: flex;
138
+ /* #endif */
139
+ flex-direction: column;
140
+ flex: 1;
141
+ margin-left: 12rpx;
142
+ }
143
+
144
+ .uni-steps__row-text {
145
+ /* #ifndef APP-NVUE */
146
+ display: inline-flex;
147
+ /* #endif */
148
+ flex: 1;
149
+ flex-direction: column;
150
+ }
151
+
152
+ .uni-steps__column-text {
153
+ padding: 6px 0px;
154
+ /* #ifndef APP-NVUE */
155
+ display: flex;
156
+ /* #endif */
157
+ flex-direction: column;
158
+ }
159
+
160
+ .uni-steps__row-title {
161
+ font-size: 14px;
162
+ line-height: 16px;
163
+ text-align: center;
164
+ }
165
+
166
+ .uni-steps__column-title {
167
+ font-size: 14px;
168
+ text-align: left;
169
+ line-height: 18px;
170
+ color: #333;
171
+ }
172
+
173
+ .uni-steps__row-desc {
174
+ font-size: 12px;
175
+ line-height: 14px;
176
+ text-align: center;
177
+ }
178
+
179
+ .uni-steps__column-desc {
180
+ font-size: 12px;
181
+ text-align: left;
182
+ line-height: 18px;
183
+ margin-top: 10rpx;
184
+ }
185
+ .uni-steps__column-time{
186
+ font-size: 26rpx;
187
+ color: #999;
188
+ }
189
+
190
+ .uni-steps__row-container {
191
+ /* #ifndef APP-NVUE */
192
+ display: flex;
193
+ /* #endif */
194
+ flex-direction: row;
195
+ }
196
+
197
+ .uni-steps__column-container {
198
+ /* #ifndef APP-NVUE */
199
+ display: inline-flex;
200
+ /* #endif */
201
+ width: 30px;
202
+ flex-direction: column;
203
+ }
204
+
205
+ .uni-steps__row-line-item {
206
+ /* #ifndef APP-NVUE */
207
+ display: inline-flex;
208
+ /* #endif */
209
+ flex-direction: row;
210
+ flex: 1;
211
+ height: 14px;
212
+ line-height: 14px;
213
+ align-items: center;
214
+ justify-content: center;
215
+ }
216
+
217
+ .uni-steps__column-line-item {
218
+ /* #ifndef APP-NVUE */
219
+ display: flex;
220
+ /* #endif */
221
+ flex-direction: column;
222
+ flex: 1;
223
+ align-items: center;
224
+ justify-content: center;
225
+ }
226
+
227
+ .uni-steps__row-line {
228
+ flex: 1;
229
+ height: 1px;
230
+ background-color: #B7BDC6;
231
+ }
232
+
233
+ .uni-steps__column-line {
234
+ width: 1px;
235
+ background-color: #B7BDC6;
236
+ }
237
+
238
+ .uni-steps__row-line--after {
239
+ transform: translateX(1px);
240
+ }
241
+
242
+ .uni-steps__column-line--after {
243
+ flex: 1;
244
+ transform: translate(0px, 1px);
245
+ }
246
+
247
+ .uni-steps__row-line--before {
248
+ transform: translateX(-1px);
249
+ }
250
+
251
+ .uni-steps__column-line--before {
252
+ height: 6px;
253
+ transform: translate(0px, -13px);
254
+ }
255
+
256
+ .uni-steps__row-circle {
257
+ width: 5px;
258
+ height: 5px;
259
+ border-radius: 50%;
260
+ background-color: #B7BDC6;
261
+ margin: 0px 3px;
262
+ }
263
+
264
+ .uni-steps__column-circle {
265
+ width: 40rpx;
266
+ height: 40rpx;
267
+ font-size: 24rpx;
268
+ border-radius: 50%;
269
+ margin: 0px 0px 5px 0px;
270
+ display: flex;
271
+ justify-content: center;
272
+ align-items: center;
273
+ border: 1px solid #333333;
274
+ }
275
+
276
+ .uni-steps__row-check {
277
+ margin: 0px 6px;
278
+ }
279
+
280
+ .uni-steps__column-check {
281
+ height: 14px;
282
+ line-height: 14px;
283
+ margin: 2px 0px;
284
+ }
285
+ </style>