jufubao-base 1.0.181 → 1.0.182-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.181",
3
+ "version": "1.0.182-beta1",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  import StyleForm from "@/utils/StyleForm";
3
+ import IConList from "@/ICONS"
3
4
  let styleForm = new StyleForm(
4
5
  {border: null, shadow: null, spacing: '', bgColor:'', margin: null},
5
6
  null,
@@ -11,6 +12,35 @@ export default {
11
12
  advanced: [],
12
13
  content: (data)=>{
13
14
  return [
15
+ {
16
+ label: "布局样式配置",
17
+ ele: "xd-radio",
18
+ valueKey: "layout_style",
19
+ value: data.layout_style || 'old',
20
+ list: [
21
+ {label: '原有布局', value: 'old'},
22
+ {label: '淘福客布局', value: 'tfk'},
23
+ ],
24
+ groupKey: "content",
25
+ },
26
+ {
27
+ label: "编辑图标",
28
+ ele: "xd-select-list",
29
+ valueKey: "edit_icon",
30
+ value: data.edit_icon || 'iconbianji-01',
31
+ list: IConList,
32
+ className: 'input80',
33
+ groupKey: "content",
34
+ },
35
+ {
36
+ label: "删除图标",
37
+ ele: "xd-select-list",
38
+ valueKey: "delete_icon",
39
+ value: data.delete_icon || 'iconshanchu-01',
40
+ list: IConList,
41
+ className: 'input80',
42
+ groupKey: "content",
43
+ },
14
44
  {
15
45
  label: '选取地区路径:',
16
46
  ele: 'xd-select-pages-path',
@@ -23,7 +53,26 @@ export default {
23
53
  },
24
54
  inline: false,
25
55
  },
26
- ...styleForm.getForm(data, '内容列表样式配置')
56
+ ...styleForm.getForm(data, '内容列表样式配置'),
57
+ {
58
+ label: "圆角设置",
59
+ ele: 'xd-site-select-list',
60
+ valueKey: 'cardRadius',
61
+ value: data['cardRadius'] || '',
62
+ groupKey:'style',
63
+ placeholder: '请选择内容圆角设置',
64
+ multiple: false,
65
+ className: 'input80',
66
+ handleCustom({ action, data }) {
67
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
68
+ .then(res => {
69
+ data.cb(res.list)
70
+ })
71
+ .catch(error => {
72
+ console.error(error);
73
+ });
74
+ },
75
+ }
27
76
  ].filter(i=>i)
28
77
  },
29
78
  }
@@ -26,81 +26,108 @@
26
26
  class="jfb-base-address__body-address"
27
27
  v-if="addressList && addressList.length > 0"
28
28
  >
29
- <view
30
- :style="{
31
- marginBottom: jfbListSpacing + 'rpx',
32
- boxShadow: jfbListShadowComputed,
33
- border: jfbListBorderComputed,
34
- backgroundColor: jfbListBgColor,
35
- }"
36
- class="jfb-base-address__body-address-item"
37
- v-for="(item, index) in addressList"
38
- @click="handleSelectAddress(item)"
39
- :key="index"
40
- >
41
- <view class="jfb-base-address__body-address-item-top">
42
- <view
43
- v-if="item.is_default === 'Y'"
44
- :style="{
45
- backgroundColor: mainColor,
46
- color: '#fff',
47
- fontSize: '24rpx',
48
- padding: '4rpx 10rpx',
49
- borderRadius: '4rpx',
50
- marginRight: '20rpx',
51
- }"
52
- >默认</view
53
- >
29
+ <template v-if="layout_style === 'old'">
30
+ <view
31
+ :style="{
32
+ marginBottom: jfbListSpacing + 'rpx',
33
+ boxShadow: jfbListShadowComputed,
34
+ border: jfbListBorderComputed,
35
+ backgroundColor: jfbListBgColor,
36
+ borderRadius: cardRadius + 'rpx'
37
+ }"
38
+ class="jfb-base-address__body-address-item"
39
+ v-for="(item, index) in addressList"
40
+ @click="handleSelectAddress(item)"
41
+ :key="index"
42
+ >
43
+ <view class="jfb-base-address__body-address-item-top">
44
+ <view
45
+ v-if="item.is_default === 'Y'"
46
+ :style="{
47
+ backgroundColor: mainColor,
48
+ color: '#fff',
49
+ fontSize: '24rpx',
50
+ padding: '4rpx 10rpx',
51
+ borderRadius: '4rpx',
52
+ marginRight: '20rpx',
53
+ }"
54
+ >默认</view
55
+ >
56
+ <view
57
+ :style="{
58
+ color: '#999999',
59
+ flex: 1,
60
+ paddingRight: item.is_valid === 'N' ? '40rpx' : '',
61
+ }"
62
+ >
63
+ <view>
64
+ {{ item | getCodeName }}
65
+ </view>
66
+ </view>
67
+ <view
68
+ style="position: absolute; right: 40rpx; width: 50rpx"
69
+ v-if="item.is_valid === 'N'"
70
+ >
71
+ <xd-font-icon
72
+ size="32"
73
+ :color="dangerColor"
74
+ icon="iconmingchengtubiao"
75
+ ></xd-font-icon>
76
+ </view>
77
+ </view>
78
+ <view class="jfb-base-address__body-address-item-middle">
79
+ {{ item.address_detail }} {{ item.house_number }}
80
+ </view>
54
81
  <view
55
82
  :style="{
56
- color: '#999999',
57
- flex: 1,
58
- paddingRight: item.is_valid === 'N' ? '40rpx' : '',
83
+ backgroundColor: item.is_select === 'Y' ? mainColor : '#CCC',
59
84
  }"
85
+ class="jfb-base-address__body-address-item-bottom"
60
86
  >
61
87
  <view>
62
- {{ item | getCodeName }}
88
+ <view style="margin-right: 40rpx">{{ item.name }}</view>
89
+ <view>{{ item.phone }}</view>
90
+ </view>
91
+ <view>
92
+ <xd-font-icon
93
+ @click.native.stop="handleEdit(item)"
94
+ style="margin-right: 40rpx"
95
+ icon="iconbianji-01"
96
+ size="32"
97
+ ></xd-font-icon>
98
+ <xd-font-icon
99
+ @click.native.stop="handleDel(item)"
100
+ icon="iconshanchu-01"
101
+ size="32"
102
+ ></xd-font-icon>
63
103
  </view>
64
104
  </view>
65
- <view
66
- style="position: absolute; right: 40rpx; width: 50rpx"
67
- v-if="item.is_valid === 'N'"
68
- >
69
- <xd-font-icon
70
- size="32"
71
- :color="dangerColor"
72
- icon="iconmingchengtubiao"
73
- ></xd-font-icon>
74
- </view>
75
- </view>
76
- <view class="jfb-base-address__body-address-item-middle">
77
- {{ item.address_detail }} {{ item.house_number }}
78
105
  </view>
106
+ </template>
107
+ <template v-else>
79
108
  <view
80
109
  :style="{
81
- backgroundColor: item.is_select === 'Y' ? mainColor : '#CCC',
110
+ marginBottom: jfbListSpacing + 'rpx',
111
+ boxShadow: jfbListShadowComputed,
112
+ border: jfbListBorderComputed,
113
+ backgroundColor: jfbListBgColor,
114
+ borderRadius: cardRadius + 'rpx'
82
115
  }"
83
- class="jfb-base-address__body-address-item-bottom"
116
+ v-for="(item, index) in addressList"
117
+ @click="handleSelectAddress(item)"
118
+ :key="index"
84
119
  >
85
- <view>
86
- <view style="margin-right: 40rpx">{{ item.name }}</view>
87
- <view>{{ item.phone }}</view>
88
- </view>
89
- <view>
90
- <xd-font-icon
91
- @click.native.stop="handleEdit(item)"
92
- style="margin-right: 40rpx"
93
- icon="iconbianji-01"
94
- size="32"
95
- ></xd-font-icon>
96
- <xd-font-icon
97
- @click.native.stop="handleDel(item)"
98
- icon="iconshanchu-01"
99
- size="32"
100
- ></xd-font-icon>
101
- </view>
120
+ <xd-tfk-item
121
+ :edit_icon="edit_icon"
122
+ :delete_icon="delete_icon"
123
+ :item="item"
124
+ :dangerColor="dangerColor"
125
+ @editAddress="handleEdit(item)"
126
+ @delAddress="handleDel(item)"
127
+ @setDefault="handleSetDefault(item)"
128
+ ></xd-tfk-item>
102
129
  </view>
103
- </view>
130
+ </template>
104
131
  </view>
105
132
  <view class="jfb-base-address__body-empty" v-else>
106
133
  <xd-font-icon icon="iconbianzu-01" size="120"></xd-font-icon>
@@ -150,6 +177,7 @@ import componentsMixins from "@/mixins/componentsMixins";
150
177
  import extsMixins from "@/mixins/extsMixins";
151
178
  import StyleForm from "@/utils/StyleForm";
152
179
  import { getContainerPropsValue } from "@/utils/xd.base";
180
+ import XdTfkItem from "./XdTfkItem"
153
181
  let styleForm = new StyleForm(
154
182
  {
155
183
  border: null,
@@ -174,6 +202,7 @@ export default {
174
202
  XdButton,
175
203
  XdDownDrawer,
176
204
  XdAddress,
205
+ XdTfkItem,
177
206
  },
178
207
  mixins: [componentsMixins, extsMixins, JfbBaseAddressMixin],
179
208
  data() {
@@ -184,7 +213,12 @@ export default {
184
213
  location_url: "",
185
214
  addressList: null,
186
215
  ...styleForm.getDataItem(),
187
- version: ''
216
+ version: '',
217
+
218
+ layout_style: "old",
219
+ edit_icon: "",
220
+ delete_icon: "",
221
+ cardRadius: 16,
188
222
  };
189
223
  },
190
224
  filters: {
@@ -236,6 +270,11 @@ export default {
236
270
  { value: "" }
237
271
  ).value;
238
272
  styleForm.getInitItem(this, value);
273
+ this.layout_style = getContainerPropsValue(value, "content.layout_style", "old");
274
+ this.edit_icon = getContainerPropsValue(value, "content.edit_icon", "iconbianji-01");
275
+ this.delete_icon = getContainerPropsValue(value, "content.delete_icon", "iconshanchu-01");
276
+ this.cardRadius = getContainerPropsValue(value, "content.cardRadius", 16);
277
+ console.log("edit_icon", this.edit_icon)
239
278
  },
240
279
  getList(callback) {
241
280
  this.$xdShowLoading({});
@@ -490,7 +529,8 @@ export default {
490
529
  })
491
530
  .catch(this.$xdLog.catch);
492
531
  },
493
- handleEdit(item) {
532
+ //接口数据接口映射到组件数据接口
533
+ apiDataMapCompData(item){
494
534
  let city_name = [
495
535
  item["province_name"],
496
536
  item["city_name"],
@@ -503,13 +543,15 @@ export default {
503
543
  item["area_code"],
504
544
  item["street_code"],
505
545
  ];
506
- this.defaultValue = {
546
+ return {
507
547
  receipt_username: item["name"],
508
548
  receipt_address: item["address_detail"],
509
549
  receipt_phone: item["phone"],
510
550
  receipt_default: item["is_default"] === "Y" ? true : false,
511
551
  city_name: city_name,
512
552
  city_code: city_code,
553
+ receipt_city_code: city_code,
554
+ receipt_city_name: city_name,
513
555
  receipt_region_name: city_name.join(" "),
514
556
  city_selected_data: city_name.map((item, index) => {
515
557
  return { label: item, value: city_code[index] };
@@ -518,11 +560,20 @@ export default {
518
560
  latitude: item["latitude"] || null,
519
561
  longitude: item["longitude"] || null,
520
562
  house_number: item["house_number"],
521
- };
563
+ }
564
+ },
565
+ handleEdit(item) {
566
+ this.defaultValue = this.apiDataMapCompData(item);
522
567
 
523
568
  console.log("handleEdit", item, this.defaultValue);
524
569
  this.showAddress = true;
525
570
  },
571
+ handleSetDefault(item){
572
+ let is_default = item.is_default === "Y" ? "N" : "Y";
573
+ this.$set(item, 'is_default', is_default);
574
+ let saveData = this.apiDataMapCompData({...item, is_default});
575
+ this.handleSave(saveData);
576
+ },
526
577
  handleDel(item) {
527
578
  console.log("handleDel", item);
528
579
  this.$xdConfirm({
@@ -670,9 +721,10 @@ export default {
670
721
 
671
722
  &-address {
672
723
  &-item {
673
- border-radius: unit(16, rpx);
724
+ // border-radius: unit(16, rpx);
674
725
  margin-bottom: unit(20, rpx);
675
726
  box-shadow: 0px 0px unit(20, rpx) 0px rgba(0, 0, 0, 0.1);
727
+ overflow: hidden;
676
728
 
677
729
  &-top {
678
730
  display: flex;
@@ -695,7 +747,7 @@ export default {
695
747
  padding: unit(20, rpx) unit(40, rpx);
696
748
  font-size: unit(28, rpx);
697
749
  color: #fff;
698
- border-radius: 0px 0px unit(16, rpx) unit(16, rpx);
750
+ // border-radius: 0px 0px unit(16, rpx) unit(16, rpx);
699
751
 
700
752
  & > view {
701
753
  display: flex;
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <view class="xd-tfk-item" @click="handleSelectAddress">
3
+ <view class="item_top">
4
+ <view class="user_info">
5
+ {{ item.name }} <text style="margin-left: 20rpx;">{{ item.phone }}</text>
6
+ <view v-if="item.is_valid === 'N'"
7
+ style="position: absolute; right: 40rpx;top: 0;"
8
+ >
9
+ <xd-font-icon
10
+ size="32"
11
+ :color="dangerColor"
12
+ icon="iconmingchengtubiao"
13
+ ></xd-font-icon>
14
+ </view>
15
+ </view>
16
+ <view class="user_adr">{{item.province_name}}{{item.city_name}}{{item.area_name}}{{item.street_name}}{{ item.address_detail }} {{ item.house_number }}</view>
17
+ </view>
18
+ <view class="item_bottom">
19
+ <view class="is_default" @click.native.stop="setDefault">
20
+ <xd-radio :value="item.is_default === 'Y'" :width="52" :height="52" :iconSize="20"></xd-radio>
21
+ <view v-if="item.is_default === 'Y'">默认地址</view>
22
+ <view v-else>设为默认</view>
23
+ </view>
24
+ <view class="item_opera">
25
+ <view class="o_i" style="margin-right: 30rpx;" @click.native.stop="handleEdit">
26
+ <xd-font-icon class="icon" :icon="edit_icon" :size="26"></xd-font-icon> 编辑
27
+ </view>
28
+ <view class="o_i" @click.native.stop="handleDel">
29
+ <xd-font-icon class="icon" :icon="delete_icon" :size="26"></xd-font-icon> 删除
30
+ </view>
31
+ </view>
32
+ </view>
33
+ </view>
34
+ </template>
35
+ <script>
36
+ import XdRadio from "@/components/XdRadio/XdRadio"
37
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon"
38
+ export default{
39
+ name:"XdTfkItem",
40
+ components: {
41
+ XdRadio,
42
+ XdFontIcon,
43
+ },
44
+ props:{
45
+ edit_icon: String,
46
+ delete_icon: String,
47
+ item: Object,
48
+ dangerColor: String,
49
+ },
50
+ data(){
51
+ return{
52
+ }
53
+ },
54
+ created(){
55
+ },
56
+ methods:{
57
+ handleSelectAddress(){
58
+ this.$emit("selectAddress")
59
+ },
60
+ handleEdit(){
61
+ this.$emit("editAddress", this.item)
62
+ },
63
+ handleDel(){
64
+ this.$emit("delAddress", this.item)
65
+ },
66
+ setDefault(){
67
+ this.$emit("setDefault", this.item)
68
+ }
69
+ },
70
+ }
71
+ </script>
72
+ <style lang="less" scoped>
73
+ .xd-tfk-item{
74
+ .item_top{
75
+ padding: 30rpx;
76
+ }
77
+ .user_info{
78
+ color: #191a1b;
79
+ font-size: 30rpx;
80
+ position: relative;
81
+ }
82
+ .user_adr{
83
+ color: #797d82;
84
+ font-size: 26rpx;
85
+ margin-top: 6rpx;
86
+ overflow: hidden;
87
+ text-overflow: ellipsis;
88
+ white-space: nowrap;
89
+ }
90
+ .item_bottom{
91
+ display: flex;
92
+ justify-content: space-between;
93
+ padding: 20rpx;
94
+ border-top: 1px solid #ededed;
95
+ }
96
+ .item_opera{
97
+ display: flex;
98
+ color: #797d82;
99
+ align-items: center;
100
+ .o_i{
101
+ display: flex;
102
+ align-items: center;
103
+ font-size: 26rpx;
104
+
105
+ .icon{
106
+ margin-right: 10rpx;
107
+ }
108
+ }
109
+ }
110
+ .is_default{
111
+ display: flex;
112
+ align-items: center;
113
+ font-size: 26rpx;
114
+ color: #797d82;
115
+ }
116
+ }
117
+ </style>
@@ -331,6 +331,16 @@ export default {
331
331
  inline: false,
332
332
  notice: '间距设置,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
333
333
  },
334
+ {
335
+ label: "主体信息行间距:",
336
+ ele: 'el-input',
337
+ type: 'number',
338
+ valueKey: 'lineHeight',
339
+ groupKey:'style',
340
+ value: data['lineHeight'] || 20,
341
+ placeholder: '请输入主体信息行间距',
342
+ className: 'input80',
343
+ },
334
344
  {
335
345
  ele: 'title',
336
346
  label: '投影设置',
@@ -129,6 +129,9 @@
129
129
  v-for="(Ditem, Dindex) in info.film_show.detail.items"
130
130
  :key="Dindex"
131
131
  class="jfb-base-order-detail__body-delivery-bottom-item"
132
+ :style="{
133
+ marginBottom: lineHeight + 'rpx'
134
+ }"
132
135
  >
133
136
  <view style="width: 130rpx"
134
137
  >{{ Ditem.label }} <span v-if="Ditem.label">:</span>
@@ -214,6 +217,9 @@
214
217
  v-for="(Ditem, Dindex) in item.info"
215
218
  :key="Dindex"
216
219
  class="jfb-base-order-detail__body-delivery-bottom-item"
220
+ :style="{
221
+ marginBottom: lineHeight + 'rpx'
222
+ }"
217
223
  >
218
224
  <view style="width: 130rpx;display: flex;">
219
225
  <view v-html="Ditem.label"></view>
@@ -510,6 +516,9 @@
510
516
  v-for="(item, index) in info.detail"
511
517
  :key="index"
512
518
  class="jfb-base-order-detail__body-order"
519
+ :style="{
520
+ marginBottom: lineHeight + 'rpx'
521
+ }"
513
522
  >
514
523
  <view :style="{ fontWeight: item.style }">
515
524
  <view style="display: flex;">
@@ -541,6 +550,9 @@
541
550
  <view
542
551
  v-if="item.type !== 'line'"
543
552
  class="jfb-base-order-detail__body-price"
553
+ :style="{
554
+ marginBottom: lineHeight + 'rpx'
555
+ }"
544
556
  >
545
557
  <view :style="{ fontWeight: item.style }">{{ item.label }}</view>
546
558
  <xd-unit
@@ -803,6 +815,7 @@ export default {
803
815
  },
804
816
  is_hot: "Y",
805
817
  logo: "",
818
+ lineHeight: 20,
806
819
 
807
820
  noticeBgc:'',
808
821
  };
@@ -1072,6 +1085,7 @@ export default {
1072
1085
  this.viewStatus = getContainerPropsValue(container, "content.viewStatus", "mall");
1073
1086
  this.is_show_support_shop = getContainerPropsValue(container, "content.is_show_support_shop", "N");
1074
1087
  this.is_show_delete_order = getContainerPropsValue(container, "content.is_show_delete_order", "N");
1088
+ this.lineHeight = getContainerPropsValue(container, "content.lineHeight", 20);
1075
1089
  },
1076
1090
  getCountDown() {
1077
1091
  this.timer = setInterval(() => {
@@ -4,6 +4,17 @@ export default {
4
4
  style: [],
5
5
  content: (data)=>{
6
6
  return [
7
+ {
8
+ label: "布局样式配置",
9
+ ele: "xd-radio",
10
+ valueKey: "layout_style",
11
+ value: data.layout_style || 'old',
12
+ list: [
13
+ {label: '原有布局', value: 'old'},
14
+ {label: '淘福客布局', value: 'tfk'},
15
+ ],
16
+ groupKey: "content",
17
+ },
7
18
  {
8
19
  label: '设置订单状态:',
9
20
  ele: 'xd-order-setting',
@@ -30,6 +41,18 @@ export default {
30
41
  {required: true, message: '设置订单配置错误!请检查配置', trigger: 'change'},
31
42
  ],
32
43
  },
44
+ {
45
+ label: "是否展示订单号:",
46
+ ele: 'xd-radio',
47
+ valueKey: 'isShowOrderNo',
48
+ value: data['isShowOrderNo'] || 'Y',
49
+ groupKey:'style',
50
+ list: [
51
+ {label: '是', value: 'Y'},
52
+ {label: '否', value: 'N'},
53
+ ],
54
+ hidden: data.layout_style !== 'tfk'
55
+ },
33
56
  {
34
57
  label: '外填充:',
35
58
  ele: 'xd-margin-padding',
@@ -64,104 +64,129 @@
64
64
  class="jfb-base-order-list__body-order"
65
65
  :style="{ padding: outMargin }"
66
66
  >
67
- <view
68
- @click="handleToLink(detailPath, item)"
69
- class="jfb-base-order-list__body-order-item"
70
- v-for="item in orderList"
71
- :key="item.main_order_id"
72
- :style="{
73
- background: backgroundColor,
74
- border: borderBox,
75
- borderRadius: radius + 'rpx',
76
- boxShadow: shadowBox,
77
- marginBottom: padding + 'rpx',
78
- }"
79
- >
80
- <view class="jfb-base-order-list__body-order-item-biz">
81
- <xd-font-icon
82
- v-if="item.biz_code_icon"
83
- :icon="item.biz_code_icon"
84
- :size="item['biz_code_icon_size']"
85
- ></xd-font-icon>
86
- <view :class="{ marginLeft: item.biz_code_icon }">{{item.biz_code_name }}</view>
87
- </view>
88
- <view class="jfb-base-order-list__body-order-item-title">
89
- <view>订单编号:{{ item.main_order_id }}</view>
90
- <view :style="{color:item.status.status_type !== 'error' ? mainColor : '#999999',}">{{ item.status.status_name }}</view>
91
- </view>
92
- <view class="order-list">
93
- <view
94
- class="jfb-base-order-list__body-order-item-content"
95
- v-for="(Sitem, Sindex) in item.products"
96
- :key="Sitem.key"
97
- v-if="(item['isOpen'] === false && Sindex < showLen) || item['isOpen']"
98
- >
99
- <image :src="Sitem.product_thumb" style="background: #ffffff" mode="aspectFit"></image>
100
- <view class="jfb-base-order-list__body-order-item-content-info">
101
- <view class="jfb-base-order-list__body-order-item-content-info-name">{{ Sitem.product_name }}</view>
102
- <view class="brand-name" v-if="Sitem.brand_name" :style="{color:brandTextColor}">{{ Sitem.brand_name }}</view>
103
- <view v-if="Sitem.product_sku_name" class="jfb-base-order-list__body-order-item-content-info-skuname">规格:{{ Sitem.product_sku_name }}</view>
104
- <view class="jfb-base-order-list__body-order-item-content-info-price">
105
- <view></view>
106
- <view class="info-price">
107
- <text>X</text>
108
- <text>{{ Sitem.product_num }}</text>
67
+ <template v-if="layout_style === 'old'">
68
+ <view
69
+ @click="handleToLink(detailPath, item)"
70
+ class="jfb-base-order-list__body-order-item"
71
+ v-for="item in orderList"
72
+ :key="item.main_order_id"
73
+ :style="{
74
+ background: backgroundColor,
75
+ border: borderBox,
76
+ borderRadius: radius + 'rpx',
77
+ boxShadow: shadowBox,
78
+ marginBottom: padding + 'rpx',
79
+ }"
80
+ >
81
+ <view class="jfb-base-order-list__body-order-item-biz">
82
+ <xd-font-icon
83
+ v-if="item.biz_code_icon"
84
+ :icon="item.biz_code_icon"
85
+ :size="item['biz_code_icon_size']"
86
+ ></xd-font-icon>
87
+ <view :class="{ marginLeft: item.biz_code_icon }">{{item.biz_code_name }}</view>
88
+ </view>
89
+ <view class="jfb-base-order-list__body-order-item-title">
90
+ <view>订单编号:{{ item.main_order_id }}</view>
91
+ <view :style="{color:item.status.status_type !== 'error' ? mainColor : '#999999',}">{{ item.status.status_name }}</view>
92
+ </view>
93
+ <view class="order-list">
94
+ <view
95
+ class="jfb-base-order-list__body-order-item-content"
96
+ v-for="(Sitem, Sindex) in item.products"
97
+ :key="Sitem.key"
98
+ v-if="(item['isOpen'] === false && Sindex < showLen) || item['isOpen']"
99
+ >
100
+ <image :src="Sitem.product_thumb" style="background: #ffffff" mode="aspectFit"></image>
101
+ <view class="jfb-base-order-list__body-order-item-content-info">
102
+ <view class="jfb-base-order-list__body-order-item-content-info-name">{{ Sitem.product_name }}</view>
103
+ <view class="brand-name" v-if="Sitem.brand_name" :style="{color:brandTextColor}">{{ Sitem.brand_name }}</view>
104
+ <view v-if="Sitem.product_sku_name" class="jfb-base-order-list__body-order-item-content-info-skuname">规格:{{ Sitem.product_sku_name }}</view>
105
+ <view class="jfb-base-order-list__body-order-item-content-info-price">
106
+ <view></view>
107
+ <view class="info-price">
108
+ <text>X</text>
109
+ <text>{{ Sitem.product_num }}</text>
110
+ </view>
109
111
  </view>
110
112
  </view>
111
113
  </view>
114
+ <view
115
+ class="order-list-icon"
116
+ :style="{ bottom: item['isOpen'] ? '-30rpx' : '-54rpx' }"
117
+ v-if="item.products.length > showLen"
118
+ @click.stop="switchOpen(item)"
119
+ >
120
+ <view :style="{ background: backgroundColor }">
121
+ <xd-font-icon
122
+ color="#666"
123
+ :icon="item['isOpen'] ? 'iconshang_up' : 'iconxia_down'"
124
+ size="24"
125
+ ></xd-font-icon>
126
+ </view>
127
+ </view>
128
+ </view>
129
+ <view class="jfb-base-order-list__body-order-item-bottom">
130
+ <view>下单时间:{{ item.created_time_text }}</view>
131
+ <view v-if="item.biz_code !== 'gift' && item.is_not_show_price !== 'Y'">
132
+ <text>合计:</text>
133
+ <xd-unit
134
+ :isOld="false"
135
+ :price="item.total_amount"
136
+ :color="mainColor"
137
+ :fontSize="28"
138
+ ></xd-unit>
139
+ </view>
140
+ <view style="color:#999" v-if="item['main_user_server_amount'] !== undefined && item['main_user_server_amount'] > 0">
141
+ <text>(平台服务费:</text>
142
+ <xd-unit
143
+ :isOld="false"
144
+ :price="item['main_user_server_amount']"
145
+ :fontSize="24"
146
+ :is-gray="true"
147
+ color="#999"
148
+ :icon-size=".25"
149
+ ></xd-unit>
150
+ <text>)</text>
151
+ </view>
112
152
  </view>
113
153
  <view
114
- class="order-list-icon"
115
- :style="{ bottom: item['isOpen'] ? '-30rpx' : '-54rpx' }"
116
- v-if="item.products.length > showLen"
117
- @click.stop="switchOpen(item)"
154
+ class="jfb-base-order-list__body-order-item-pay"
155
+ v-if="item.buttons.length"
118
156
  >
119
- <view :style="{ background: backgroundColor }">
120
- <xd-font-icon
121
- color="#666"
122
- :icon="item['isOpen'] ? 'iconshang_up' : 'iconxia_down'"
123
- size="24"
124
- ></xd-font-icon>
157
+ <view v-for="(btn,index) in item.buttons" :key="btn.key">
158
+ <xd-button
159
+ :type="getBtnType(btn.action)"
160
+ size="mini"
161
+ @click="handleBtnEvent(btn.action, item)"
162
+ >{{ btn.text }}</xd-button>
125
163
  </view>
126
164
  </view>
127
165
  </view>
128
- <view class="jfb-base-order-list__body-order-item-bottom">
129
- <view>下单时间:{{ item.created_time_text }}</view>
130
- <view v-if="item.biz_code !== 'gift' && item.is_not_show_price !== 'Y'">
131
- <text>合计:</text>
132
- <xd-unit
133
- :isOld="false"
134
- :price="item.total_amount"
135
- :color="mainColor"
136
- :fontSize="28"
137
- ></xd-unit>
138
- </view>
139
- <view style="color:#999" v-if="item['main_user_server_amount'] !== undefined && item['main_user_server_amount'] > 0">
140
- <text>(平台服务费:</text>
141
- <xd-unit
142
- :isOld="false"
143
- :price="item['main_user_server_amount']"
144
- :fontSize="24"
145
- :is-gray="true"
146
- color="#999"
147
- :icon-size=".25"
148
- ></xd-unit>
149
- <text>)</text>
150
- </view>
151
- </view>
166
+ </template>
167
+ <template v-if="layout_style === 'tfk'">
152
168
  <view
153
- class="jfb-base-order-list__body-order-item-pay"
154
- v-if="item.buttons.length"
169
+ @click="handleToLink(detailPath, item)"
170
+ class="jfb-base-order-list__body-order-item"
171
+ v-for="item in orderList"
172
+ :key="item.main_order_id"
173
+ :style="{
174
+ background: backgroundColor,
175
+ border: borderBox,
176
+ borderRadius: radius + 'rpx',
177
+ boxShadow: shadowBox,
178
+ marginBottom: padding + 'rpx',
179
+ }"
155
180
  >
156
- <view v-for="(btn,index) in item.buttons" :key="btn.key">
157
- <xd-button
158
- :type="getBtnType(btn.action)"
159
- size="mini"
160
- @click="handleBtnEvent(btn.action, item)"
161
- >{{ btn.text }}</xd-button>
162
- </view>
181
+ <xd-tfk-order-item
182
+ :mainColor="mainColor"
183
+ :isShowOrderNo="isShowOrderNo"
184
+ :brandTextColor="brandTextColor"
185
+ :item="item"
186
+ @handleBtnEvent="action => handleBtnEvent(action, item)"
187
+ ></xd-tfk-order-item>
163
188
  </view>
164
- </view>
189
+ </template>
165
190
  </view>
166
191
  <view v-else class="jfb-base-order-list__body-no">
167
192
  <xd-font-icon
@@ -189,6 +214,7 @@ import extsMixins from "@/mixins/extsMixins";
189
214
  import { getContainerPropsValue } from "@/utils/xd.base";
190
215
  import getServiceUrl from "@/common/getServiceUrl";
191
216
  import Color from "color";
217
+ import XdTfkOrderItem from "./XdTfkOrderItem"
192
218
 
193
219
  export default {
194
220
  name: "JfbBaseOrderList",
@@ -197,6 +223,7 @@ export default {
197
223
  XdTab,
198
224
  XdUnit,
199
225
  XdButton,
226
+ XdTfkOrderItem,
200
227
  },
201
228
  mixins: [componentsMixins, extsMixins, JfbBaseOrderListMixin],
202
229
  data() {
@@ -239,6 +266,8 @@ export default {
239
266
  right: 0,
240
267
  bottom: 0,
241
268
  },
269
+ layout_style: "old",
270
+ isShowOrderNo: "Y",
242
271
 
243
272
  noticeBgc:'',
244
273
  };
@@ -315,6 +344,8 @@ export default {
315
344
 
316
345
  this.detailPath = getContainerPropsValue(container, "content.detailPath", { value: "" }).value;
317
346
  this.payPath = getContainerPropsValue(container, "content.payPath", {value: "",}).value;
347
+ this.layout_style = getContainerPropsValue(container, "content.layout_style", "old");
348
+ this.isShowOrderNo = getContainerPropsValue(container, "content.isShowOrderNo", "Y");
318
349
  this.tabList = getContainerPropsValue(container, "content.orderTypeList", []).map((item) => {
319
350
  return {
320
351
  name: item.customName || item.label,
@@ -0,0 +1,246 @@
1
+ <template>
2
+ <view class="xd-tfk-order-item">
3
+ <view class="o_header">
4
+ <view class="h_l">
5
+ <xd-font-icon
6
+ v-if="item.biz_code_icon"
7
+ :icon="item.biz_code_icon"
8
+ :size="item['biz_code_icon_size']"
9
+ ></xd-font-icon>
10
+ <view :class="{ marginLeft: item.biz_code_icon }" style="margin-left: 20rpx;">{{item.biz_code_name }}</view>
11
+ </view>
12
+ <view v-if="isShowOrderNo==='N'" class="o_status" :style="{
13
+ color:item.status.status_type !== 'error' ? mainColor : '#999999',
14
+ }">{{ item.status.status_name }}</view>
15
+ </view>
16
+ <view class="o_title" v-if="isShowOrderNo==='Y'">
17
+ <view class="o_number">订单编号:{{ item.main_order_id }}</view>
18
+ <view class="o_status" :style="{
19
+ color:item.status.status_type !== 'error' ? mainColor : '#999999',
20
+ }">{{ item.status.status_name }}</view>
21
+ </view>
22
+ <view class="prod_list">
23
+ <!-- 单个商品展示商品信息 -->
24
+ <template v-if="item.products.length == 1">
25
+ <view class="one_prod" v-for="Sitem in item.products" :key="Sitem.key">
26
+ <view class="prod_img">
27
+ <image :src="Sitem.product_thumb" style="background: #ffffff" mode="aspectFill"></image>
28
+ </view>
29
+ <view class="prod_info">
30
+ <view class="prod_name">{{ Sitem.product_name }}</view>
31
+ <view v-if="Sitem.brand_name" class="prod_brand" :style="{color: brandTextColor}">{{ Sitem.brand_name }}</view>
32
+ <view v-if="Sitem.product_sku_name" class="prod_sku">规格:{{ Sitem.product_sku_name }}</view>
33
+ <view class="prod_price">
34
+ <view>¥448</view>
35
+ <view class="info-price">
36
+ <text>x</text>
37
+ <text>{{ Sitem.product_num }}</text>
38
+ </view>
39
+ </view>
40
+ </view>
41
+ </view>
42
+ </template>
43
+
44
+ <!-- 多个商品展示更多商品信息 -->
45
+ <view v-if="item.products.length > 1" class="more_prod">
46
+ <view class="img_list">
47
+ <view class="prod_img" v-for="prod in item.products" :key="prod.key">
48
+ <image :src="prod.product_thumb" style="background: #ffffff" mode="aspectFit"></image>
49
+ </view>
50
+ </view>
51
+ <view class="right_arrow">
52
+ <xd-font-icon icon='iconxiangyou_xian' :size="26" color="#bdc0c5"></xd-font-icon>
53
+ </view>
54
+ </view>
55
+ </view>
56
+ <view class="prod_total">
57
+ <view></view>
58
+ <view style="display: flex;align-items: center;">
59
+ 共{{item.products.length}}件商品 实付
60
+ <xd-unit
61
+ :isOld="false"
62
+ :price="item.total_amount"
63
+ :color="mainColor"
64
+ :fontSize="28"></xd-unit>
65
+ </view>
66
+ </view>
67
+ <view v-if="item.buttons.length" class="prod_footer">
68
+ <view style="flex: 1;"></view>
69
+ <view class="btn"
70
+ v-for="(btn,index) in item.buttons" :key="btn.key"
71
+ @click="handleBtnEvent(btn.action, item)"
72
+ >{{btn.text}}</view>
73
+ </view>
74
+ </view>
75
+ </template>
76
+
77
+ <script>
78
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon"
79
+ import XdUnit from "@/components/XdUnit/XdUnit"
80
+ export default{
81
+ name:"XdTfkOrderItem",
82
+ components: {
83
+ XdFontIcon,
84
+ XdUnit,
85
+ },
86
+ props:{
87
+ item: Object,
88
+ mainColor: String,
89
+ isShowOrderNo: {
90
+ type: String,
91
+ },
92
+ brandTextColor: String
93
+ },
94
+ data(){
95
+ return{
96
+ }
97
+ },
98
+ methods:{
99
+ handleBtnEvent(action){
100
+ this.$emit('handleBtnEvent', action)
101
+ },
102
+ }
103
+ }
104
+ </script>
105
+
106
+ <style lang="less" scoped>
107
+ .xd-tfk-order-item{
108
+ padding-left: 30rpx;
109
+ overflow: hidden;
110
+ .o_header{
111
+ height: 90rpx;
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: space-between;
115
+ border-bottom: 1px solid #EDEDED;
116
+ padding-right: 30rpx;
117
+ color: #333333;
118
+ font-size: 28rpx;
119
+
120
+ .h_l{
121
+ display: flex;
122
+ align-items: center;
123
+ }
124
+ }
125
+ .o_title{
126
+ height: 80rpx;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: space-between;
130
+ padding-right: 30rpx;
131
+ color: #333333;
132
+ font-size: 24rpx;
133
+ border-bottom: 1px solid #EDEDED;
134
+ }
135
+ .one_prod{
136
+ display: flex;
137
+ align-items: center;
138
+ width: 100%;
139
+ padding: 30rpx 30rpx 30rpx 0;
140
+ box-sizing: border-box;
141
+ .prod_img{
142
+ width: 140rpx;
143
+ height: 140rpx;
144
+ background-color: #f5f5f9;
145
+ image{
146
+ width: 100%;
147
+ height: 100%;
148
+ }
149
+ }
150
+ .prod_info{
151
+ flex: 1;
152
+ padding-left: 30rpx;
153
+ .prod_name{
154
+ color: #2e2f30;
155
+ font-size: 30rpx;
156
+ }
157
+ .prod_brand{
158
+ font-size: 24rpx;
159
+ margin-top: 8rpx;
160
+ }
161
+ .prod_sku{
162
+ color: #797d82;
163
+ font-size: 24rpx;
164
+ margin-top: 8rpx;
165
+ }
166
+ }
167
+ .prod_price{
168
+ display: flex;
169
+ justify-content: space-between;
170
+ align-items: center;
171
+ color: rgb(46, 47, 48);
172
+ font-size: 30rpx;
173
+ margin-top: 12rpx;
174
+ .info-price{
175
+ display: flex;
176
+ color: #bdc0c5;
177
+ font-size: 26rpx;
178
+ }
179
+ }
180
+ }
181
+ .prod_list{
182
+ position: relative;
183
+ .right_arrow{
184
+ position: absolute;
185
+ right: 0px;
186
+ height: 100%;
187
+ width: 60rpx;
188
+ top: 0;
189
+ background: #FFF;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ }
194
+ }
195
+ .more_prod{
196
+ display: flex;
197
+ flex-wrap: nowrap;
198
+ overflow: auto;
199
+ padding: 30rpx 30rpx 30rpx 0;
200
+ width: 100%;
201
+ .img_list{
202
+ display: flex;
203
+ flex-wrap: nowrap;
204
+ padding-right: 60rpx;
205
+ }
206
+ .prod_img{
207
+ width: 140rpx;
208
+ height: 140rpx;
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ image{
213
+ width: 100%;
214
+ height: 100%;
215
+ }
216
+ }
217
+ }
218
+ .prod_total{
219
+ height: 80rpx;
220
+ display: flex;
221
+ align-items: center;
222
+ justify-content: space-between;
223
+ padding-right: 30rpx;
224
+ border-top: 1px solid #EDEDED;
225
+ color: #2e2f30;
226
+ font-size: 26rpx;
227
+ }
228
+ .prod_footer{
229
+ padding: 16rpx 30rpx 16rpx 0;
230
+ display: flex;
231
+ align-items: center;
232
+ border-top: 1px solid #EDEDED;
233
+ .btn{
234
+ width: 170rpx;
235
+ height: 66rpx;
236
+ border: 1px solid #EDEDED;
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ margin-left: 20rpx;
241
+ color: #2e2f30;
242
+ font-size: 24rpx;
243
+ }
244
+ }
245
+ }
246
+ </style>