jufubao-base 1.0.169-beta4 → 1.0.169-beta6

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 (29) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseMapSearch/MapSearchMp.vue +1 -1
  3. package/src/components/JfbBaseOrderDetail/Api.js +12 -7
  4. package/src/components/JfbBaseOrderDetail/Attr.js +28 -14
  5. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +66 -18
  6. package/src/components/JfbBaseOrderDetail/Mock.js +3 -1
  7. package/src/components/JfbBaseTfkCardBind/Api.js +49 -30
  8. package/src/components/JfbBaseTfkCardBind/Attr.js +25 -1
  9. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +139 -7
  10. package/src/components/JfbBaseTfkCardBind/Mock.js +19 -9
  11. package/src/components/JfbBaseTfkCardDetail/Api.js +11 -0
  12. package/src/components/JfbBaseTfkCardDetail/Attr.js +74 -0
  13. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +133 -8
  14. package/src/components/JfbBaseTfkCardLogin/Attr.js +160 -0
  15. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +215 -27
  16. package/src/components/JfbBaseTfkCardLogin/Mock.js +1 -1
  17. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +68 -16
  18. package/src/components/JfbBaseTfkSearch/Attr.js +24 -37
  19. package/src/components/JfbBaseTfkSearch/ContentCinema.vue +147 -0
  20. package/src/components/JfbBaseTfkSearch/ContentItem.vue +165 -0
  21. package/src/components/JfbBaseTfkSearch/CusAttr.js +201 -0
  22. package/src/components/JfbBaseTfkSearch/CustomList.vue +221 -0
  23. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +46 -14
  24. package/src/components/JfbBaseTfkSearch/SkeletonCinema.vue +46 -0
  25. package/src/components/JfbBaseTfkSearch/SkeletonFilm.vue +109 -0
  26. package/src/components/JfbBaseTfkSearch/SkeletonProduct.vue +166 -0
  27. package/src/components/JfbBaseTfkSearch/SkeletonShop.vue +81 -0
  28. package/src/components/JfbBaseTfkSearch/listMixins.js +76 -0
  29. package/src/components/JfbBaseTfkSearch/search.js +175 -0
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <view class="content" @click="handleCinemaDetail">
3
+ <view class="title">{{item['cinema_name']}}</view>
4
+ <view class="address">{{item['address']}}</view>
5
+ <view class="bottom">
6
+ <view class="distance">
7
+ <template v-if="item['distance']">
8
+ <xd-font-icon size="26" icon="icondizhi" :color="color.SEAT"></xd-font-icon>
9
+ <text :style="{color: color.SEAT}">{{item['distance']}}</text>
10
+ </template>
11
+ </view>
12
+ <view class="btn">
13
+ <!--不展示核销类型【SELL】-->
14
+ <view
15
+ v-for="(name,index) in item['cinema_type_name']"
16
+ v-if="item['cinema_type'][index] !== 'SELL'"
17
+ :key="index"
18
+ @click.stop="handleBtn(item['cinema_type'][index])"
19
+ :style="{
20
+ backgroundColor:color[item['cinema_type'][index]],
21
+ color:'#fff'
22
+ }">{{name}}</view>
23
+ </view>
24
+ </view>
25
+ </view>
26
+ </template>
27
+
28
+ <script>
29
+ import XdButton from "@/components/XdButton/XdButton.vue";
30
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon.vue";
31
+
32
+ export default {
33
+ name:'ContentCinema',
34
+ components:{
35
+ XdButton,
36
+ XdFontIcon
37
+ },
38
+ props:{
39
+ item:Object,
40
+ color: {
41
+ type: Object,
42
+ default: {}
43
+ },
44
+
45
+ },
46
+ data(){
47
+ return {
48
+
49
+ }
50
+ },
51
+ created() {
52
+
53
+ },
54
+ methods:{
55
+ handleCinemaDetail(){
56
+ //优先在线选座
57
+ if(this.item['cinema_type'].includes('SEAT')) {
58
+ this.handleSchedule();
59
+ return
60
+ }
61
+ if(this.item['cinema_type'].includes('CODE')) {
62
+ this.handleCodeDetail();
63
+ return
64
+ }
65
+ if(this.item['cinema_type'].includes('SELL')) {
66
+ this.handleCashierDetail();
67
+ return
68
+ }
69
+ console.error(`${JSON.stringify(this.item['cinema_type'])}`)
70
+ },
71
+
72
+ handleBtn(code){
73
+ if(code === 'SEAT') this.handleSchedule();
74
+ else if(code === 'CODE') this.handleCodeDetail();
75
+ else if(code === 'SELL') this.handleCashierDetail();
76
+ else console.error(`${JSON.stringify(this.item['cinema_type'])}`)
77
+ },
78
+
79
+ //电子码
80
+ handleCodeDetail(){
81
+ console.warn(`handleCodeDetail`)
82
+ this.$emit('on-code-detail', this.item);
83
+ },
84
+ //核销
85
+ handleCashierDetail(){
86
+ console.warn(`handleCashierDetail`)
87
+ this.$emit('on-cashier-detail', this.item);
88
+ },
89
+
90
+ //选座排期
91
+ handleSchedule(){
92
+ console.warn(`handleSchedule`)
93
+ this.$emit('on-schedule', this.item);
94
+ },
95
+ }
96
+ }
97
+ </script>
98
+
99
+ <style scoped lang="less">
100
+ .content {
101
+ .title {
102
+ font-size: 32rpx;
103
+ line-height: 40rpx;
104
+ margin-bottom: 20rpx;
105
+ color: #333;
106
+ font-weight: 500;
107
+ }
108
+ .address {
109
+ font-size: 24rpx;
110
+ line-height: 30rpx;
111
+ color: #999;
112
+ margin-bottom: 15rpx;
113
+ }
114
+
115
+ .bottom {
116
+ display: flex;
117
+ justify-content: space-between;
118
+ align-items: center;
119
+ margin-top: 30rpx;
120
+
121
+ & > .distance {
122
+ display: flex;
123
+ justify-content: flex-start;
124
+ align-items: center;
125
+
126
+ & > text {
127
+ margin-left: 10rpx;
128
+ font-size: 24rpx;
129
+ }
130
+ }
131
+
132
+ & > .btn {
133
+ display: flex;
134
+ justify-content: flex-end;
135
+ align-items: center;
136
+
137
+ & > view {
138
+ margin-left: 10rpx;
139
+ padding: 0 30rpx;
140
+ line-height: 60rpx;
141
+ border-radius: 30rpx;
142
+ font-size: 26rpx;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ </style>
@@ -0,0 +1,165 @@
1
+ <template>
2
+ <view class="content" @click="handleDetail(item)">
3
+ <view
4
+ class="image"
5
+ :style="{marginRight: outSpacing + 'rpx',borderRadius:borderRadius+'rpx'}"
6
+ >
7
+ <image :src="item['poster']" :alt="item['show_name']"></image>
8
+ </view>
9
+ <view class="middle">
10
+ <view class="name">{{item['show_name']}}</view>
11
+ <view class="other">类型:{{item['type']}}</view>
12
+ <view class="other">导演:{{item['director']}}</view>
13
+ <view class="other">主演:{{item['leading_role']}}</view>
14
+ </view>
15
+ <view class="right">
16
+ <view class="score">
17
+ <template v-if="item['remark']">
18
+ <text>评分:</text><text :style="{color:color}">{{item['remark']}}</text>
19
+ </template>
20
+ </view>
21
+ <view class="btn">
22
+ <template v-if="type === 'hot'">
23
+ <xd-button
24
+ v-if="item['show_button'] === '1'"
25
+ type="primary"
26
+ style="display:block;"
27
+ size="small"
28
+ @click.stop="handleBuy(item)">购票</xd-button>
29
+ <xd-button
30
+ v-else-if="item['show_button'] === '2'"
31
+ type="subPrimary"
32
+ style="display:block;"
33
+ size="small"
34
+ @click="handleBuy(item)">预售</xd-button>
35
+ </template>
36
+ <template v-if="type === 'rightnow'">
37
+ <xd-button
38
+ v-if="item['show_button'] === '3'"
39
+ type="success"
40
+ style="display:block;"
41
+ size="small"
42
+ @click.stop="handleDetail(item)"
43
+ >想看</xd-button>
44
+ <xd-button
45
+ v-else-if="item['show_button'] === '2'"
46
+ type="subPrimary"
47
+ style="display:block;"
48
+ size="small"
49
+ @click.stop="handleBuy(item)">预售</xd-button>
50
+ </template>
51
+ </view>
52
+ </view>
53
+ </view>
54
+ </template>
55
+
56
+ <script>
57
+ import XdButton from "@/components/XdButton/XdButton.vue";
58
+
59
+ export default {
60
+ name:'ContentItem',
61
+ components:{
62
+ XdButton
63
+ },
64
+ props:{
65
+ item:Object,
66
+ outSpacing: {
67
+ type: Number|String,
68
+ default: 20
69
+ },
70
+ color: {
71
+ type: String,
72
+ default: ''
73
+ },
74
+ type:{
75
+ type: String,
76
+ default: 'hot'
77
+ },
78
+ borderRadius:{
79
+ type: String,
80
+ default: '10'
81
+ }
82
+
83
+ },
84
+ created() {
85
+
86
+ },
87
+ methods:{
88
+ handleDetail(item){
89
+ console.log('handleDetail.item',item,item.id);
90
+ this.$emit('on-film-detail',item.id);
91
+ },
92
+ handleBuy(item){
93
+ console.log('handleDetail.item',item,item.id);
94
+ this.$emit('on-buy',item.id);
95
+ }
96
+ }
97
+ }
98
+ </script>
99
+
100
+ <style scoped lang="less">
101
+ .content {
102
+ display: flex;
103
+ justify-content: space-between;
104
+ align-items: center;
105
+
106
+ .image {
107
+ width: 160rpx;
108
+ height: 240rpx;
109
+ flex-shrink: 0;
110
+ overflow: hidden;
111
+
112
+ & > image {
113
+ width: 100%;
114
+ height: 100%;
115
+ }
116
+ }
117
+ .middle {
118
+ flex: 1;
119
+ & .name {
120
+ font-size: 36rpx;
121
+ font-weight: 600;
122
+ margin-bottom: 20rpx;
123
+ .uni-max-cut(2, 90);
124
+ line-height: 45rpx;
125
+ }
126
+
127
+ & .other {
128
+ font-size: 25rpx;
129
+ color: #999;
130
+ .uni-max-cut(1,36);
131
+ line-height: 36rpx;
132
+ margin-bottom: 10rpx;
133
+ &:last-child {
134
+ margin-bottom: 0!important;
135
+ }
136
+ }
137
+ }
138
+
139
+ .right {
140
+ flex-shrink: 0;
141
+ display: flex;
142
+ align-content: space-between;
143
+ align-items: flex-end;
144
+ justify-content: flex-end;
145
+ flex-flow: wrap;
146
+ height: 100%;
147
+ box-sizing: border-box;
148
+ width: 160rpx;
149
+
150
+ & .score {
151
+ height: 40rpx;
152
+ width:100%;
153
+ text-align: right;
154
+ & > text:nth-child(1) {
155
+ font-size: 20rpx;
156
+ }
157
+ & > text:nth-child(2) {
158
+ font-size: 28rpx;
159
+ }
160
+
161
+ }
162
+
163
+ }
164
+ }
165
+ </style>
@@ -0,0 +1,201 @@
1
+ 'use strict';
2
+ export default (data)=>{
3
+ return [
4
+ {
5
+ ele: 'title',
6
+ label: '商品搜索相关设置',
7
+ size: 'small',
8
+ groupKey:'content',
9
+ },
10
+ {
11
+ label: '是否展示品牌:',
12
+ ele: 'xd-radio',
13
+ valueKey: 'is_show_brand',
14
+ value: data['is_show_brand'] || 'N',
15
+ placeholder: '请选择是否展示品牌',
16
+ multiple: false,
17
+ className: 'input80',
18
+ groupKey:'content',
19
+ list: [
20
+ {label: '是', value: 'Y'},
21
+ {label: '否', value: 'N'},
22
+ ]
23
+ },
24
+ {
25
+ label: "可否直接加入购物车",
26
+ ele: "xd-radio",
27
+ valueKey: "isAddCart",
28
+ groupKey:'content',
29
+ value: data['isAddCart'] || 'Y',
30
+ list: [
31
+ {label: "是", value: 'Y'},
32
+ {label: "否", value: 'N'}
33
+ ]
34
+ },
35
+ {
36
+ label: '是否显示价格:',
37
+ ele: 'xd-radio',
38
+ groupKey:'content',
39
+ valueKey: 'isPrice',
40
+ value: data['isPrice'] || 'Y',
41
+ placeholder: '请选择是否显示价格',
42
+ multiple: false,
43
+ className: 'input80',
44
+ list: [
45
+ {label: '是', value: 'Y'},
46
+ {label: '否', value: 'N'},
47
+ ]
48
+ },
49
+ data['isPrice']==='Y'&&{
50
+ label: '是否展示原价:',
51
+ ele: 'xd-radio',
52
+ groupKey:'content',
53
+ valueKey: 'isShowDiscount',
54
+ value: data['isShowDiscount'] || "Y",
55
+ rules: [
56
+ {required: true, message: '请选择', trigger: ['blur', 'change']}
57
+ ],
58
+ list: [
59
+ {"label": "显示", "value": "Y"},
60
+ {"label": "隐藏", "value": "N"},
61
+ ]
62
+ },
63
+ data['isShowDiscount']==='Y'&&{
64
+ label: '市场价减去售价大于多少展示:',
65
+ ele: 'el-input',
66
+ type: 'number',
67
+ valueKey: 'differ',
68
+ value: data['differ'] || '',
69
+ groupKey:'content',
70
+ placeholder: '价差',
71
+ className: 'input80',
72
+ },
73
+ data['isPrice']==='Y'&&{
74
+ label: '是否标明活动价:',
75
+ ele: 'xd-radio',
76
+ valueKey: 'showActivityPrice',
77
+ value: data['showActivityPrice'] || 'N',
78
+ placeholder: '请选择是否标明活动价',
79
+ groupKey:'content',
80
+ multiple: false,
81
+ className: 'input80',
82
+ list: [
83
+ {label: '是', value: 'Y'},
84
+ {label: '否', value: 'N'},
85
+ ]
86
+ },
87
+ {
88
+ label: '是否显示标签:',
89
+ ele: 'xd-radio',
90
+ valueKey: "isShowTag",
91
+ value: data['isShowTag'] || 'N',
92
+ groupKey:'content',
93
+ list: [
94
+ {label: '是', value: 'Y'},
95
+ {label: '否', value: 'N'},
96
+ ]
97
+ },
98
+
99
+ {
100
+ ele: 'title',
101
+ label: '列表样式设置',
102
+ size: 'small',
103
+ groupKey:'style',
104
+ },
105
+ {
106
+ label: '填充设置:',
107
+ ele: 'xd-margin-padding',
108
+ groupKey:'style',
109
+ valueKey: 'contMargin',
110
+ value: data['contMargin'] || null,
111
+ setting: {
112
+ type: 'margin',
113
+ },
114
+ inline: false,
115
+ notice: '填充设置,单位:<span style="color: red">像素</span>。默认值:<span style="color: red">20</span> 像素',
116
+ },
117
+ {
118
+ label: '背景颜色:',
119
+ ele: 'xd-color',
120
+ valueKey: 'contBgColor',
121
+ value: data['contBgColor'] || '',
122
+ placeholder: '请选择背景颜色',
123
+ classNmae: 'input80',
124
+ groupKey:'style',
125
+ },
126
+ {
127
+ label: '当前投影设置:',
128
+ ele: 'xd-shadow',
129
+ groupKey:'style',
130
+ valueKey: 'contShadow',
131
+ value: data['contShadow'] || '',
132
+ setting: {
133
+ selected: 'N',
134
+ },
135
+ handleCustom({action, data}) {
136
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
137
+ .then(res => {
138
+ data.cb(res.list)
139
+ })
140
+ .catch(error => {
141
+ console.error(error);
142
+ data.cb([])
143
+ });
144
+ },
145
+ },
146
+ {
147
+ label: '当前边框设置:',
148
+ ele: 'xd-border',
149
+ groupKey:'style',
150
+ valueKey: 'contBorder',
151
+ value: data['contBorder'] || '',
152
+ setting: {
153
+ selected:'N'
154
+ },
155
+ },
156
+ {
157
+ label: '圆角设置:',
158
+ ele: 'xd-site-select-list',
159
+ valueKey: 'contRradius',
160
+ value: data['contRradius'] || '10',
161
+ groupKey:'style',
162
+ placeholder: '请选择内容圆角设置',
163
+ multiple: false,
164
+ className: 'input80',
165
+ handleCustom({action, data}) {
166
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
167
+ .then(res => {
168
+ data.cb(res.list)
169
+ })
170
+ .catch(error => {
171
+ console.error(error);
172
+ });
173
+ },
174
+ },
175
+ {
176
+ ele: 'title',
177
+ label: '图片样式设置',
178
+ size: 'small',
179
+ groupKey:'style',
180
+ },
181
+ {
182
+ label: '圆角设置:',
183
+ ele: 'xd-site-select-list',
184
+ valueKey: 'imgRradius',
185
+ value: data['imgRradius'] || '10',
186
+ groupKey:'style',
187
+ placeholder: '请选择内容圆角设置',
188
+ multiple: false,
189
+ className: 'input80',
190
+ handleCustom({action, data}) {
191
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
192
+ .then(res => {
193
+ data.cb(res.list)
194
+ })
195
+ .catch(error => {
196
+ console.error(error);
197
+ });
198
+ },
199
+ },
200
+ ]
201
+ }