jufubao-base 1.0.184-beta1 → 1.0.184-beta2

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.184-beta1",
3
+ "version": "1.0.184-beta2",
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: '布局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,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>
@@ -332,95 +332,39 @@ export default {
332
332
  notice: '间距设置,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
333
333
  },
334
334
  {
335
- ele: 'title',
336
- label: '投影设置',
337
- size: 'small',
338
- groupKey:'style',
339
- },
340
- {
341
- label: '是否有投影:',
342
- ele: 'xd-radio',
335
+ label: "主体信息行间距:",
336
+ ele: 'el-input',
337
+ type: 'number',
338
+ valueKey: 'lineHeight',
343
339
  groupKey:'style',
344
- valueKey: 'is_shadow',
345
- value: data['is_shadow'] || 'N',
346
- placeholder: '请选择是否投影',
347
- multiple: false,
340
+ value: data['lineHeight'] || 20,
341
+ placeholder: '请输入主体信息行间距',
348
342
  className: 'input80',
349
- list: [
350
- { label: '是', value: 'Y' },
351
- { label: '否', value: 'N' },
352
- ]
353
- },
354
- data['is_shadow'] === 'Y' && {
355
- label: '投影颜色:',
356
- ele: 'xd-color',
357
- groupKey:'style',
358
- valueKey: 'is_shadow_bg',
359
- value: data['is_shadow_bg'] || '',
360
- placeholder: '请选择投影颜色',
361
- classNmae: 'input80',
362
343
  },
363
- data['is_shadow'] === 'Y' && {
364
- label: '投影范围:',
365
- ele: 'xd-site-select-list',
366
- valueKey: 'is_shadow_w',
344
+ {
345
+ label: '投影设置:',
346
+ ele: "xd-shadow",
347
+ valueKey: "sectionShadow",
348
+ value: data.sectionShadow || {},
367
349
  groupKey:'style',
368
- value: data['is_shadow_w'] || '10',
369
- placeholder: '请选择投影范围',
370
- multiple: false,
371
- className: 'input80',
372
- handleCustom({ action, data }) {
373
- XdBus.getParentApi('getOptionsSettingList')({
374
- setting_id: 'edtix_style_radius',
375
- key: Date.now()
376
- })
350
+ handleCustom({action, data}) {
351
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
377
352
  .then(res => {
378
353
  data.cb(res.list)
379
354
  })
380
355
  .catch(error => {
381
356
  console.error(error);
357
+ data.cb([])
382
358
  });
383
359
  },
384
360
  },
385
361
  {
386
- ele: 'title',
387
- label: '边框设置',
388
- size: 'small',
362
+ label: "边框设置:",
363
+ ele: "xd-border",
364
+ valueKey: "sectionBorder",
365
+ value: data.sectionBorder || {},
389
366
  groupKey:'style',
390
367
  },
391
- {
392
- label: '是否有边框:',
393
- ele: 'xd-radio',
394
- valueKey: 'is_border',
395
- value: data['is_border'] || 'N',
396
- groupKey:'style',
397
- placeholder: '请选择是否有边框',
398
- multiple: false,
399
- className: 'input80',
400
- list: [
401
- { label: '是', value: 'Y' },
402
- { label: '否', value: 'N' },
403
- ]
404
- },
405
- data['is_border'] === 'Y' && {
406
- label: '边框颜色:',
407
- ele: 'xd-color',
408
- groupKey:'style',
409
- valueKey: 'is_border_c',
410
- value: data['is_border_c'] || '',
411
- placeholder: '请选择边框颜色',
412
- classNmae: 'input80',
413
- },
414
- data['is_border'] === 'Y' && {
415
- label: '边框大小:',
416
- groupKey:'style',
417
- ele: 'el-input',
418
- type: 'number',
419
- valueKey: 'is_border_w',
420
- value: data['is_border_w'] || '',
421
- placeholder: '请输入边框颜色',
422
- className: 'input80',
423
- },
424
368
  {
425
369
  label: '内容圆角设置:',
426
370
  ele: 'xd-site-select-list',
@@ -489,48 +433,6 @@ export default {
489
433
  },
490
434
  inline: false,
491
435
  },
492
- {
493
- label: '是否展开票券信息:',
494
- ele: 'xd-radio',
495
- valueKey: 'is_open',
496
- value: data['is_open'] || 'N',
497
- groupKey:'content',
498
- placeholder: '请选择是否展开票券信息',
499
- multiple: false,
500
- className: 'input80',
501
- list: [
502
- { label: '展开', value: 'Y' },
503
- { label: '收起', value: 'N' },
504
- ]
505
- },
506
- {
507
- label: '是否展开商品详情:',
508
- ele: 'xd-radio',
509
- valueKey: 'is_show_all_detail',
510
- value: data['is_show_all_detail'] || 'N',
511
- groupKey:'content',
512
- placeholder: '请选择是否展开商品详情',
513
- multiple: false,
514
- className: 'input80',
515
- list: [
516
- { label: '展开', value: 'Y' },
517
- { label: '收起', value: 'N' },
518
- ]
519
- },
520
- {
521
- label: '提货码展示/隐藏:',
522
- ele: 'xd-radio',
523
- valueKey: 'is_show',
524
- value: data['is_show'] || 'Y',
525
- groupKey:'content',
526
- placeholder: '请选择提货码展示/隐藏',
527
- multiple: false,
528
- className: 'input80',
529
- list: [
530
- { label: '显示', value: 1 },
531
- { label: '隐藏', value: 0 },
532
- ]
533
- },
534
436
  ].filter(i=>i)
535
437
  },
536
438
  }