jufubao-base 1.0.198-beta1 → 1.0.200-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.
Files changed (28) hide show
  1. package/commands.js +1 -1
  2. package/package.json +1 -1
  3. package/src/ICONS.js +1128 -0
  4. package/src/components/JfbBaseAddress/Attr.js +109 -1
  5. package/src/components/JfbBaseAddress/JfbBaseAddress.vue +152 -77
  6. package/src/components/JfbBaseAddress/XdTfkItem.vue +117 -0
  7. package/src/components/JfbBaseConDialog/JfbBaseConDialog.vue +13 -41
  8. package/src/components/JfbBaseFastLink/Attr.js +24 -8
  9. package/src/components/JfbBaseFastLink/JfbBaseFastLink.vue +37 -21
  10. package/src/components/JfbBaseFooter/Attr.js +141 -75
  11. package/src/components/JfbBaseFooter/JfbBaseFooter.vue +50 -15
  12. package/src/components/JfbBaseOrderDetail/Attr.js +147 -65
  13. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +96 -46
  14. package/src/components/JfbBaseOrderList/Attr.js +59 -2
  15. package/src/components/JfbBaseOrderList/JfbBaseOrderList.vue +139 -92
  16. package/src/components/JfbBaseOrderList/Mock.js +3 -0
  17. package/src/components/JfbBaseOrderList/XdTfkOrderItem.vue +267 -0
  18. package/src/components/JfbBasePosterBigSmall/JfbBasePosterBigSmall.vue +14 -13
  19. package/src/components/JfbBasePosterBigSmall/getWidthHeight.js +6 -8
  20. package/src/components/JfbBaseUserCenter/Attr.js +297 -52
  21. package/src/components/JfbBaseUserCenter/JfbBaseUserCenter.vue +135 -44
  22. package/src/components/JfbBaseUserInfo/Attr.js +212 -37
  23. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +89 -60
  24. package/src/components/JfbBaseUserOrder/Attr.js +332 -30
  25. package/src/components/JfbBaseUserOrder/JfbBaseUserOrder.vue +183 -55
  26. package/src/components/JfbBaseWallet/Attr.js +376 -8
  27. package/src/components/JfbBaseWallet/JfbBaseWallet.vue +185 -49
  28. package/src/mixins/componentsMixins.js +210 -35
@@ -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: '布局1', value: 'old'},
22
+ {label: '布局2', value: 'tfk'},
23
+ ],
24
+ groupKey: "style",
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,85 @@ 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
+ },
76
+ {
77
+ label: "底部按钮配置",
78
+ ele: "title",
79
+ groupKey: "style",
80
+ size: "small"
81
+ },
82
+ {
83
+ label: "容器内边距:",
84
+ ele: "xd-margin-padding",
85
+ valueKey: "bottomPadding",
86
+ value: data.bottomPadding || null,
87
+ groupKey: "style",
88
+ setting: {
89
+ type: 'padding',
90
+ },
91
+ placeholder: '请设置边距',
92
+ inline: false,
93
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
94
+ },
95
+ {
96
+ label: "容器背景颜色:",
97
+ ele: "xd-color",
98
+ valueKey: "bottomBgColor",
99
+ value: data.bottomBgColor || null,
100
+ groupKey: "style",
101
+ },
102
+ {
103
+ label: "按钮背景颜色:",
104
+ ele: "xd-color",
105
+ valueKey: "bottomBtnBgColor",
106
+ value: data.bottomBtnBgColor || null,
107
+ groupKey: "style",
108
+ },
109
+ {
110
+ label: "按钮文字颜色:",
111
+ ele: "xd-color",
112
+ valueKey: "bottomBtnTextColor",
113
+ value: data.bottomBtnTextColor || null,
114
+ groupKey: "style",
115
+ },
116
+ {
117
+ label: "按钮圆角:",
118
+ ele: "xd-site-select-list",
119
+ valueKey: "bottomBtnRadius",
120
+ value: data['bottomBtnRadius'] || '',
121
+ groupKey:'style',
122
+ placeholder: '请选择内容圆角设置',
123
+ multiple: false,
124
+ className: 'input80',
125
+ handleCustom({ action, data }) {
126
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
127
+ .then(res => {
128
+ data.cb(res.list)
129
+ })
130
+ .catch(error => {
131
+ console.error(error);
132
+ });
133
+ },
134
+ }
27
135
  ].filter(i=>i)
28
136
  },
29
137
  }
@@ -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
- </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
104
  </view>
75
105
  </view>
76
- <view class="jfb-base-address__body-address-item-middle">
77
- {{ item.address_detail }} {{ item.house_number }}
78
- </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>
@@ -108,13 +135,19 @@
108
135
  </view>
109
136
  <view style="height: 110rpx"></view>
110
137
  <view class="jfb-base-address__body-footer" :style="prod_bottom">
111
- <xd-button
112
- width="80%"
113
- type="primary"
114
- :bg-color="mainColor"
115
- @click="showAddress = !showAddress"
116
- >+新增收货地址
117
- </xd-button>
138
+ <view :style="[bottomBoxStyle]">
139
+ <xd-button
140
+ width="100%"
141
+ type="primary"
142
+ :style="{
143
+ background: bottomBtnBgColor,
144
+ color: bottomBtnTextColor
145
+ }"
146
+ :radius="bottomBtnRadius+'rpx'"
147
+ @click="showAddress = !showAddress"
148
+ >+新增收货地址
149
+ </xd-button>
150
+ </view>
118
151
  <xd-down-drawer
119
152
  v-if="showAddress"
120
153
  :show.sync="showAddress"
@@ -150,6 +183,7 @@ import componentsMixins from "@/mixins/componentsMixins";
150
183
  import extsMixins from "@/mixins/extsMixins";
151
184
  import StyleForm from "@/utils/StyleForm";
152
185
  import { getContainerPropsValue } from "@/utils/xd.base";
186
+ import XdTfkItem from "./XdTfkItem"
153
187
  let styleForm = new StyleForm(
154
188
  {
155
189
  border: null,
@@ -174,6 +208,7 @@ export default {
174
208
  XdButton,
175
209
  XdDownDrawer,
176
210
  XdAddress,
211
+ XdTfkItem,
177
212
  },
178
213
  mixins: [componentsMixins, extsMixins, JfbBaseAddressMixin],
179
214
  data() {
@@ -185,7 +220,16 @@ export default {
185
220
  addressList: null,
186
221
  ...styleForm.getDataItem(),
187
222
  version: '',
188
- cache_key: ''
223
+ cache_key: '',
224
+ layout_style: "old",
225
+ edit_icon: "",
226
+ delete_icon: "",
227
+ cardRadius: 16,
228
+ bottomPadding: "",
229
+ bottomBgColor: "",
230
+ bottomBtnBgColor: "",
231
+ bottomBtnTextColor: "",
232
+ bottomBtnRadius: "",
189
233
  };
190
234
  },
191
235
  filters: {
@@ -211,6 +255,16 @@ export default {
211
255
  return this.fixedStyle({ height: 0, zIndex: 111 });
212
256
  },
213
257
  ...styleForm.getComputedItem(),
258
+ bottomBoxStyle(){
259
+ let padding = `${this.checkValue(this.bottomPadding.top, 20)}rpx`;
260
+ padding = `${padding} ${this.checkValue(this.bottomPadding.right, 20)}rpx`;
261
+ padding = `${padding} ${this.checkValue(this.bottomPadding.bottom, 20)}rpx`;
262
+ padding = `${padding} ${this.checkValue(this.bottomPadding.left, 20)}rpx`;
263
+ return {
264
+ padding: padding,
265
+ backgroundColor: this.bottomBgColor,
266
+ }
267
+ }
214
268
  },
215
269
  methods: {
216
270
  onJfbLoad(options) {
@@ -240,6 +294,16 @@ export default {
240
294
  { value: "" }
241
295
  ).value;
242
296
  styleForm.getInitItem(this, value);
297
+ this.layout_style = getContainerPropsValue(value, "content.layout_style", "old");
298
+ this.edit_icon = getContainerPropsValue(value, "content.edit_icon", "iconbianji-01");
299
+ this.delete_icon = getContainerPropsValue(value, "content.delete_icon", "iconshanchu-01");
300
+ this.cardRadius = getContainerPropsValue(value, "content.cardRadius", 16);
301
+ this.bottomPadding = getContainerPropsValue(value, "content.bottomPadding", {});
302
+ this.bottomBgColor = getContainerPropsValue(value, "content.bottomBgColor", "#FFFFFF");
303
+ this.bottomBtnBgColor = getContainerPropsValue(value, "content.bottomBtnBgColor", this.mainColor);
304
+ this.bottomBtnTextColor = getContainerPropsValue(value, "content.bottomBtnTextColor", "#FFFFFF");
305
+ this.bottomBtnRadius = getContainerPropsValue(value, "content.bottomBtnRadius", 40);
306
+ console.log("bottomBtnRadius", this.bottomBtnRadius)
243
307
  },
244
308
  getList(callback) {
245
309
  this.$xdShowLoading({});
@@ -498,7 +562,8 @@ export default {
498
562
  })
499
563
  .catch(this.$xdLog.catch);
500
564
  },
501
- handleEdit(item) {
565
+ //接口数据接口映射到组件数据接口
566
+ apiDataMapCompData(item){
502
567
  let city_name = [
503
568
  item["province_name"],
504
569
  item["city_name"],
@@ -511,13 +576,15 @@ export default {
511
576
  item["area_code"],
512
577
  item["street_code"],
513
578
  ];
514
- this.defaultValue = {
579
+ return {
515
580
  receipt_username: item["name"],
516
581
  receipt_address: item["address_detail"],
517
582
  receipt_phone: item["phone"],
518
583
  receipt_default: item["is_default"] === "Y" ? true : false,
519
584
  city_name: city_name,
520
585
  city_code: city_code,
586
+ receipt_city_code: city_code,
587
+ receipt_city_name: city_name,
521
588
  receipt_region_name: city_name.join(" "),
522
589
  city_selected_data: city_name.map((item, index) => {
523
590
  return { label: item, value: city_code[index] };
@@ -526,11 +593,20 @@ export default {
526
593
  latitude: item["latitude"] || null,
527
594
  longitude: item["longitude"] || null,
528
595
  house_number: item["house_number"],
529
- };
596
+ }
597
+ },
598
+ handleEdit(item) {
599
+ this.defaultValue = this.apiDataMapCompData(item);
530
600
 
531
601
  console.log("handleEdit", item, this.defaultValue);
532
602
  this.showAddress = true;
533
603
  },
604
+ handleSetDefault(item){
605
+ let is_default = item.is_default === "Y" ? "N" : "Y";
606
+ this.$set(item, 'is_default', is_default);
607
+ let saveData = this.apiDataMapCompData({...item, is_default});
608
+ this.handleSave(saveData);
609
+ },
534
610
  handleDel(item) {
535
611
  console.log("handleDel", item);
536
612
  this.$xdConfirm({
@@ -679,9 +755,10 @@ export default {
679
755
 
680
756
  &-address {
681
757
  &-item {
682
- border-radius: unit(16, rpx);
758
+ // border-radius: unit(16, rpx);
683
759
  margin-bottom: unit(20, rpx);
684
760
  box-shadow: 0px 0px unit(20, rpx) 0px rgba(0, 0, 0, 0.1);
761
+ overflow: hidden;
685
762
 
686
763
  &-top {
687
764
  display: flex;
@@ -704,7 +781,7 @@ export default {
704
781
  padding: unit(20, rpx) unit(40, rpx);
705
782
  font-size: unit(28, rpx);
706
783
  color: #fff;
707
- border-radius: 0px 0px unit(16, rpx) unit(16, rpx);
784
+ // border-radius: 0px 0px unit(16, rpx) unit(16, rpx);
708
785
 
709
786
  & > view {
710
787
  display: flex;
@@ -718,9 +795,7 @@ export default {
718
795
  position: fixed;
719
796
  left: 0;
720
797
  right: 0;
721
- padding-top: unit(20, rpx);
722
798
  background: #fff;
723
- height: unit(100, rpx);
724
799
  }
725
800
  }
726
801
  }
@@ -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>