jufubao-base 1.0.243-beta1 → 1.0.243-beta201

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.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseAfterOrderList/Attr.js +13 -0
  3. package/src/components/JfbBaseAfterOrderList/JfbBaseAfterOrderList.vue +33 -1
  4. package/src/components/JfbBaseAfterSales/Api.js +58 -0
  5. package/src/components/JfbBaseAfterSales/Attr.js +25 -0
  6. package/src/components/JfbBaseAfterSales/JfbBaseAfterSales.vue +550 -0
  7. package/src/components/JfbBaseAfterSales/JfbBaseAfterSalesLess.less +79 -0
  8. package/src/components/JfbBaseAfterSales/JfbBaseAfterSalesMixin.js +30 -0
  9. package/src/components/JfbBaseAfterSales/Mock.js +13 -0
  10. package/src/components/JfbBaseAfterSales/refundOrderInfo.vue +150 -0
  11. package/src/components/JfbBaseAfterSalesDetail/Api.js +41 -0
  12. package/src/components/JfbBaseAfterSalesDetail/Attr.js +25 -0
  13. package/src/components/JfbBaseAfterSalesDetail/JfbBaseAfterSalesDetail.vue +538 -0
  14. package/src/components/JfbBaseAfterSalesDetail/JfbBaseAfterSalesDetailLess.less +79 -0
  15. package/src/components/JfbBaseAfterSalesDetail/JfbBaseAfterSalesDetailMixin.js +30 -0
  16. package/src/components/JfbBaseAfterSalesDetail/Mock.js +60 -0
  17. package/src/components/JfbBaseAfterSalesDetail/secProd.vue +58 -0
  18. package/src/components/JfbBaseAfterSalesFast/Api.js +30 -0
  19. package/src/components/JfbBaseAfterSalesFast/Attr.js +32 -0
  20. package/src/components/JfbBaseAfterSalesFast/JfbBaseAfterSalesFast.vue +297 -0
  21. package/src/components/JfbBaseAfterSalesFast/JfbBaseAfterSalesFastLess.less +79 -0
  22. package/src/components/JfbBaseAfterSalesFast/JfbBaseAfterSalesFastMixin.js +30 -0
  23. package/src/components/JfbBaseAfterSalesFast/Mock.js +38 -0
  24. package/src/components/JfbBaseAfterSalesList/Api.js +40 -0
  25. package/src/components/JfbBaseAfterSalesList/Attr.js +107 -0
  26. package/src/components/JfbBaseAfterSalesList/JfbBaseAfterSalesList.vue +463 -0
  27. package/src/components/JfbBaseAfterSalesList/JfbBaseAfterSalesListLess.less +79 -0
  28. package/src/components/JfbBaseAfterSalesList/JfbBaseAfterSalesListMixin.js +30 -0
  29. package/src/components/JfbBaseAfterSalesList/Mock.js +362 -0
  30. package/src/components/JfbBaseOrderDetail/Attr.js +36 -0
  31. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +21 -1
  32. package/src/components/JfbBaseOrderList/Attr.js +36 -0
  33. package/src/components/JfbBaseOrderList/JfbBaseOrderList.vue +30 -0
  34. package/src/components/JfbBaseOrderList/Mock.js +1 -1
  35. package/src/components/JfbBaseOrderList/XdTfkOrderItem.vue +17 -5
  36. package/src/components/JfbBasePhoneLogin/JfbBasePhoneLogin.vue +24 -13
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <view class="prod_item">
3
+ <view class="prod_img">
4
+ <image :src="item.thumb" mode="aspectFit"></image>
5
+ </view>
6
+ <view class="prod_info">
7
+ <view class="prod_title">{{ item.product_name }}</view>
8
+ <view class="prod_number">申请数量:×{{ item.after_count }}</view>
9
+ </view>
10
+ </view>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ props: {
16
+ item: {
17
+ type: Object,
18
+ default() {
19
+ return {}
20
+ }
21
+ }
22
+ }
23
+ }
24
+ </script>
25
+
26
+ <style lang="less" scoped>
27
+ .prod_item{
28
+ display: flex;
29
+ align-items: center;
30
+ .prod_img{
31
+ width: 140rpx;
32
+ height: 140rpx;
33
+ border-radius: 16rpx;
34
+ background-color: #EEE;
35
+ image{
36
+ width: 100%;
37
+ height: 100%;
38
+ }
39
+ }
40
+ .prod_info{
41
+ margin-left: 20rpx;
42
+ flex: 1;
43
+ align-self: stretch;
44
+ display: flex;
45
+ flex-direction: column;
46
+ justify-content: space-between;
47
+ .prod_title{
48
+ margin-bottom: 10rpx;
49
+ font-size: 32rpx;
50
+ color: #333333;
51
+ }
52
+ .prod_number{
53
+ color: #999999;
54
+ font-size: 24rpx;
55
+ }
56
+ }
57
+ }
58
+ </style>
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+ /**
3
+ * @description 接口配置,
4
+ * 在设置方法名字当时候,别忘记加上【模块名字】:After
5
+ * @type {*[]}
6
+ */
7
+ module.exports = [
8
+ {
9
+ mapFnName: "getAfterSalesTypeList",
10
+ path: "/aftersale/v1/service-order/after-sales-type-list",
11
+ title: "售后类型列表",
12
+ isRule: false,
13
+ params: {},
14
+ isConsole: true,
15
+ disabled: true,
16
+ },
17
+ {
18
+ mapFnName: "createAfterServiceOrderQuick",
19
+ path: "/aftersale/v1/service-order/quick-refund",
20
+ title: "快速退款",
21
+ isRule: false,
22
+ data: {
23
+ main_order_id: ['主订单号', 'String', true],
24
+ after_sale_type: ['售后类型', 'String', true],
25
+ db_from: ['来源', 'String', true],
26
+ },
27
+ isConsole: true,
28
+ disabled: true,
29
+ }
30
+ ];
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
5
+ */
6
+ export default {
7
+ style: [],
8
+ content: (data) => {
9
+ return [
10
+ {
11
+ label: "温馨提示:",
12
+ ele: "xd-tinymce",
13
+ valueKey: "warmTips",
14
+ groupKey: "content",
15
+ value: data['warmTips'] || '',
16
+ },
17
+ {
18
+ label: '售后详情页面路径:',
19
+ ele: 'xd-select-pages-path',
20
+ valueKey: 'refundStepPath',
21
+ groupKey:'advanced',
22
+ placeholder: '请选择售后详情页面路径',
23
+ value: data['refundStepPath'] || null,
24
+ setting: {
25
+ router: XdBus.getParentApi('getPagesTree'),
26
+ },
27
+ inline: false,
28
+ },
29
+ ].filter(i=>i)
30
+ },
31
+ advanced: [],
32
+ };
@@ -0,0 +1,297 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-after-sales-fast"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx : isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-after-sales-fast__edit"
10
+ :class="{ editx : isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-after-sales-fast__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view class="jfb-base-after-sales-fast__body" :style="{
17
+ minHeight: layoutInfo.bodyMinHeightRpx + 'rpx',
18
+ '--main-color': mainColor
19
+ }">
20
+ <view class="list_section section_inline" @click="toChoseReason">
21
+ <view class="sec_label">
22
+ <view class="label_require">*</view>
23
+ <view>申请原因</view>
24
+ </view>
25
+ <view class="sec_content">
26
+ <view>{{ afterSaleTypeText }}</view>
27
+ <xd-font-icon icon="iconxiangyou_xian" :size="28" style="margin-left: 8rpx;"></xd-font-icon>
28
+ </view>
29
+ </view>
30
+ <view class="refund_warm_tip">
31
+ <view class="tip_title">温馨提示</view>
32
+ <xd-content-xss :html="warmTips"></xd-content-xss>
33
+ </view>
34
+ <view class="bottom_fixed" :style="prod_bottom">
35
+ <xd-button type="primary" @click="handleApplyRefund">提交申请</xd-button>
36
+ </view>
37
+ <xd-down-drawer :show.sync="reasonShow" :isClose="false">
38
+ <view class="refund_reason_head">申请原因</view>
39
+ <view class="refund_reason_body" style="min-height: 50vh;max-height: 75vh;">
40
+ <view class="reason_cont">
41
+ <view class="reason_item" v-for="item in afterSalesTypes" :key="item.id">
42
+ <view>{{ item.type_name }}</view>
43
+ <xd-radio :value="temp_type === item.id" @change="selectApplyReason(item.id)"></xd-radio>
44
+ </view>
45
+ </view>
46
+ <view class="reason_foot">
47
+ <xd-button type="primary" @click="handleChoseReason">确定</xd-button>
48
+ </view>
49
+ </view>
50
+ </xd-down-drawer>
51
+ </view>
52
+ </view>
53
+ </template>
54
+
55
+ <script>
56
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
57
+ import XdContentXss from "@/components/XdContentXss/XdContentXss"
58
+ import XdButton from "@/components/XdButton/XdButton";
59
+ import XdDownDrawer from "@/components/XdDownDrawer/XdDownDrawer"
60
+ import XdRadio from "@/components/XdRadio/XdRadio"
61
+ import { jfbRootExec } from "@/utils/xd.event";
62
+ import JfbBaseAfterSalesFastMixin from "./JfbBaseAfterSalesFastMixin";
63
+ import { getContainerPropsValue } from "@/utils/xd.base";
64
+ import componentsMixins from "@/mixins/componentsMixins";
65
+ import extsMixins from "@/mixins/extsMixins";
66
+ export default {
67
+ name: "JfbBaseAfterSalesFast",
68
+ components: {
69
+ XdFontIcon,
70
+ XdContentXss,
71
+ XdButton,
72
+ XdDownDrawer,
73
+ XdRadio
74
+ },
75
+ mixins: [
76
+ componentsMixins, extsMixins, JfbBaseAfterSalesFastMixin
77
+ ],
78
+ data() {
79
+ return {
80
+ reasonShow: false,
81
+ // content: `1.遇订单拆分,京券将换成同价值京豆返还;<br/>2.本单支付券退还以实际使用规则为准;<br/>3.订单一旦取消,无法恢复;<br/>4.微信搜一搜订单返现金额会从退款中扣除`,
82
+ order_id: "",
83
+ //todo
84
+ warmTips: "",
85
+ after_sale_type: "",
86
+ temp_type: "",
87
+ afterSalesTypes: [],
88
+
89
+ refundStepPath: "",
90
+ }
91
+ },
92
+ watch: {
93
+ container(value, oldValue) {
94
+ if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
95
+ if (this.$configProject['isPreview']) this.init(value)
96
+ },
97
+ },
98
+ computed: {
99
+ afterSaleTypeText(){
100
+ if(!this.after_sale_type) return "";
101
+ let item = this.afterSalesTypes.find(i => i.id === this.after_sale_type);
102
+ return item ? item.type_name : "";
103
+ },
104
+ prod_bottom() {
105
+ return this.fixedStyle({ height: 20, zIndex: 111 });
106
+ },
107
+ },
108
+
109
+ created() {
110
+ this.init(this.container);
111
+
112
+ //todo
113
+ },
114
+ methods: {
115
+ onJfbLoad(options) {
116
+ this.order_id = options.order_id;
117
+ this.p_getAfterSalesTypeList();
118
+ },
119
+ /**
120
+ * @description 监听事件变化
121
+ * @param container {object} 业务组件对象自己
122
+ */
123
+ init(container) {
124
+ this.warmTips = getContainerPropsValue(container, 'content.warmTips', "");
125
+ this.refundStepPath = getContainerPropsValue(container, 'content.refundStepPath', {value: ""}).value;
126
+ },
127
+ p_getAfterSalesTypeList(){
128
+ jfbRootExec("getAfterSalesTypeList", {
129
+ vm: this,
130
+ data: {}
131
+ }).then(res => {
132
+ this.afterSalesTypes = res.list;
133
+ })
134
+ },
135
+ selectApplyReason(id){
136
+ this.temp_type = id;
137
+ },
138
+ handleApplyRefund(){
139
+ if(!this.after_sale_type) {
140
+ this.$xdAlert({
141
+ content: '请选择申请原因',
142
+ type: "error"
143
+ })
144
+ return;
145
+ }
146
+ jfbRootExec("createAfterServiceOrderQuick", {
147
+ vm: this,
148
+ data: {
149
+ main_order_id: this.order_id,
150
+ after_sale_type: this.after_sale_type,
151
+ }
152
+ }).then(res => {
153
+ this.$xdUniHelper.navigateTo({
154
+ url: `${this.refundStepPath}?service_order_id=${res.service_order_id}`,
155
+ });
156
+ })
157
+ },
158
+ toChoseReason(){
159
+ this.reasonShow = true;
160
+ },
161
+ handleChoseReason(){
162
+ this.reasonShow = false;
163
+ this.after_sale_type = this.temp_type;
164
+ },
165
+ onJfbScroll(options) {
166
+ // console.log('event.onJfbScroll', options)
167
+ },
168
+ onJfbReachBottom(options) {
169
+ console.log('event.onJfbReachBottom', options)
170
+ },
171
+ onJfbShow(options) {
172
+ console.log('event.onJfbShow', options)
173
+ },
174
+ onJfbHide(options) {
175
+ console.log('event.onJfbHide', options)
176
+ },
177
+ onJfbBack(options) {
178
+ console.log('event.onJfbBack', options)
179
+ },
180
+ onJfbUpdate(...data) {
181
+ console.log('event.onJfbUpdate', data)
182
+ },
183
+ onJfbCustomEvent(options) {
184
+ console.log('event.onJfbReachBottom', options)
185
+ },
186
+ }
187
+ }
188
+
189
+ </script>
190
+
191
+ <style scoped lang="less">
192
+ @import "./JfbBaseAfterSalesFastLess.less";
193
+
194
+ .jfb-base-after-sales-fast {
195
+ &__body{
196
+ padding: 20rpx 20rpx 120rpx;
197
+ box-sizing: border-box;
198
+ background-color: #EEEEEE;
199
+ .list_section{
200
+ padding: 24rpx 36rpx;
201
+ border-radius: 16rpx;
202
+ background-color: #FFFFFF;
203
+ display: flex;
204
+ flex-direction: column;
205
+ margin: 20rpx 0;
206
+ color: #333333;
207
+ font-size: 28rpx;
208
+ &.section_inline{
209
+ flex-direction: row;
210
+ justify-content: space-between;
211
+ .sec_label{
212
+ margin-bottom: 0;
213
+ }
214
+ }
215
+ .sec_label{
216
+ display: flex;
217
+ align-items: center;
218
+ margin-bottom: 24rpx;
219
+ .label_require{
220
+ color: #FF5733;
221
+ margin-right: 4rpx;
222
+ }
223
+ .label_sub{
224
+ color: #CCCCCC;
225
+ font-size: 24rpx;
226
+ margin-left: 16rpx;
227
+ }
228
+ }
229
+ .sec_content{
230
+ display: flex;
231
+ align-items: center;
232
+ color: #666666;
233
+
234
+ .img_list{
235
+ display: flex;
236
+ flex-wrap: wrap;
237
+ .img_box{
238
+ width: 160rpx;
239
+ height: 160rpx;
240
+ border-radius: 8rpx;
241
+ border: 1px solid #E0E0E0;
242
+ margin-right: 28rpx;
243
+ margin-bottom: 28rpx;
244
+ }
245
+ }
246
+ }
247
+ }
248
+ .refund_warm_tip{
249
+ padding: 24rpx;
250
+ .tip_title{
251
+ font-size: 26rpx;
252
+ color: #333333;
253
+ font-weight: 500;
254
+ margin-bottom: 24rpx;
255
+ }
256
+ }
257
+ .bottom_fixed{
258
+ position: fixed;
259
+ bottom: 0;
260
+ left: 0;
261
+ width: 100%;
262
+ padding: 20rpx;
263
+ box-sizing: border-box;
264
+ }
265
+ .refund_reason_head{
266
+ padding: 32rpx 0;
267
+ text-align: center;
268
+ border-bottom: 1px solid #F2F2F2;
269
+ margin: 0 32rpx;
270
+ font-size: 28rpx;
271
+ color: #333333;
272
+ font-weight: bold;
273
+ }
274
+ .refund_reason_body{
275
+ display: flex;
276
+ flex-direction: column;
277
+ .reason_cont{
278
+ flex: 1;
279
+ padding: 0 40rpx;
280
+ overflow: auto;
281
+ .reason_item{
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: space-between;
285
+ padding: 20rpx 20rpx;
286
+ font-size: 28rpx;
287
+ color: #333333;
288
+ }
289
+ }
290
+ .reason_foot{
291
+ padding: 32rpx;
292
+ border-top: 1px solid #F2F2F2;
293
+ }
294
+ }
295
+ }
296
+ }
297
+ </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-after-sales-fast {
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-after-sales-fast {
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-after-sales-fast'
20
+ }
21
+ },
22
+ created() {
23
+
24
+ //@AttrDataCreated
25
+ this.Attr = this.$xdUniHelper.customClone(Attr);
26
+ //@EndAttrDataCreated
27
+
28
+
29
+ },
30
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ module.exports = {
4
+ getAfterSalesTypeList: {
5
+ list: [
6
+ {
7
+ id: 57,
8
+ type_name: "接口问题导致退款",
9
+ status: "Y",
10
+ description: "影院网络问题、网售系统问题、接口商品下架等",
11
+ created_time: 1733302517,
12
+ updated_time: 1733302517,
13
+ is_show_web: "Y"
14
+ },
15
+ {
16
+ id: 56,
17
+ type_name: "客户原因",
18
+ status: "Y",
19
+ description: "客户原因",
20
+ created_time: 1717726245,
21
+ updated_time: 1717726245,
22
+ is_show_web: "Y"
23
+ },
24
+ {
25
+ id: 55,
26
+ type_name: "账号已达到充值上限",
27
+ status: "Y",
28
+ description: "账号已达到充值上限",
29
+ created_time: 1717726196,
30
+ updated_time: 1717726196,
31
+ is_show_web: "Y"
32
+ }
33
+ ],
34
+ next_page_token: "",
35
+ total_size: "3",
36
+ request_id: "2ff3227604479b81"
37
+ }
38
+ };
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+ /**
3
+ * @description 接口配置,
4
+ * 在设置方法名字当时候,别忘记加上【模块名字】:After
5
+ * @type {*[]}
6
+ */
7
+ module.exports = [
8
+ {
9
+ mapFnName: 'getAfterServiceOrderList',
10
+ title: '获取服务单列表',
11
+ path: '/aftersale/v1/service-order/list',
12
+ isRule: false,
13
+ params: {
14
+ },
15
+ isConsole: true,
16
+ disabled: true,
17
+ },
18
+ {
19
+ mapFnName: "delAfterServiceOrder",
20
+ path: "/aftersale/v1/service-order/del",
21
+ title: "删除服务单",
22
+ isRule: false,
23
+ params: {
24
+ service_order_id: ['服务单订单号', 'String', true],
25
+ },
26
+ isConsole: true,
27
+ disabled: true,
28
+ },
29
+ {
30
+ mapFnName: "cancelAfterServiceOrder",
31
+ path: "/aftersale/v1/service-order/cancel",
32
+ title: "服务单取消",
33
+ isRule: false,
34
+ params: {
35
+ service_order_id: ['服务单订单号', 'String', true],
36
+ },
37
+ isConsole: true,
38
+ disabled: true,
39
+ },
40
+ ];