jufubao-base 1.0.169-beta2 → 1.0.169-beta20

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 (42) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseHeader/JfbBaseHeader.vue +2 -2
  3. package/src/components/JfbBaseLogin/Attr.js +54 -16
  4. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +3 -1
  5. package/src/components/JfbBaseMapSearch/MapSearchMp.vue +1 -1
  6. package/src/components/JfbBaseNotice/JfbBaseNotice.vue +2 -2
  7. package/src/components/JfbBaseOrderDetail/Api.js +12 -7
  8. package/src/components/JfbBaseOrderDetail/Attr.js +28 -14
  9. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +68 -18
  10. package/src/components/JfbBaseOrderDetail/Mock.js +3 -1
  11. package/src/components/JfbBaseTfkCardBind/Api.js +49 -30
  12. package/src/components/JfbBaseTfkCardBind/Attr.js +139 -15
  13. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +217 -19
  14. package/src/components/JfbBaseTfkCardBind/Mock.js +19 -9
  15. package/src/components/JfbBaseTfkCardDetail/Api.js +11 -0
  16. package/src/components/JfbBaseTfkCardDetail/Attr.js +158 -7
  17. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +159 -17
  18. package/src/components/JfbBaseTfkCardLogin/Attr.js +490 -4
  19. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +393 -106
  20. package/src/components/JfbBaseTfkCardLogin/Mock.js +6 -536
  21. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +75 -19
  22. package/src/components/JfbBaseTfkCardLogin/XdNotice.vue +550 -0
  23. package/src/components/JfbBaseTfkSearch/AllList.vue +350 -0
  24. package/src/components/JfbBaseTfkSearch/Api.js +11 -42
  25. package/src/components/JfbBaseTfkSearch/Attr.js +344 -32
  26. package/src/components/JfbBaseTfkSearch/ContentCinema.vue +157 -0
  27. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +218 -0
  28. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +317 -0
  29. package/src/components/JfbBaseTfkSearch/ContentShop.vue +186 -0
  30. package/src/components/JfbBaseTfkSearch/CusAttr.js +213 -0
  31. package/src/components/JfbBaseTfkSearch/CustomList.vue +453 -0
  32. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +286 -35
  33. package/src/components/JfbBaseTfkSearch/Mock.js +242 -11
  34. package/src/components/JfbBaseTfkSearch/SkeletonCinema.vue +45 -0
  35. package/src/components/JfbBaseTfkSearch/SkeletonFilm.vue +109 -0
  36. package/src/components/JfbBaseTfkSearch/SkeletonProduct.vue +246 -0
  37. package/src/components/JfbBaseTfkSearch/SkeletonShop.vue +81 -0
  38. package/src/components/JfbBaseTfkSearch/handleKeyword.js +24 -0
  39. package/src/components/JfbBaseTfkSearch/listMixins.js +187 -0
  40. package/src/mixins/colorCardMixins.js +71 -9
  41. package/src/mixins/componentsMixins.js +376 -23
  42. package/src/mixins/posterMixins.js +122 -0
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ import CusAttr from "./CusAttr";
2
3
 
3
4
  /**
4
5
  * @description 当表单组件中有联动操作时候,使用方法进行返回
@@ -8,50 +9,361 @@ export default {
8
9
  content: (data) => {
9
10
  return [
10
11
  {
11
- label: '背景颜色:',
12
- ele: 'xd-color',
13
- valueKey: 'bgcolor',
14
- value: data.bgcolor || '',
15
- placeholder: '请输入占位框背景颜色',
16
- classNmae: 'input80',
12
+ label: '是否支持聚好兑:',
13
+ ele: 'xd-radio',
14
+ valueKey: 'isShowExchange',
15
+ value: data['isShowExchange'] || "N",
16
+ groupKey:'content',
17
17
  rules: [
18
- {
19
- required: true,
20
- message: '请输入占位框背景颜色',
21
- trigger: 'blur'
22
- },
18
+ {required: true, message: '请选择', trigger: ['blur', 'change']}
19
+ ],
20
+ list: [
21
+ {"label": "支持", "value": "Y"},
22
+ {"label": "不支持", "value": "N"},
23
23
  ]
24
24
  },
25
25
  {
26
- label: '选中路径:',
27
- ele: 'xd-select-pages-path',
28
- valueKey: 'select-pages-path',
29
- value: data['select-pages-path'] || null,
26
+ label: '外边间距:',
27
+ ele: 'el-input',
28
+ type: 'number',
29
+ groupKey:'style',
30
+ valueKey: 'outSpacing',
31
+ value: data['outSpacing'] || '',
32
+ notice: '外边间距设置,单位:像素,默认值:<span style="color:red">20</span> px',
33
+ inline: false,
34
+ className: 'input60',
35
+ },
36
+ //todo
37
+ {
38
+ label: '菜单配置',
39
+ ele: "title",
40
+ groupKey:'style',
41
+ size: "small",
42
+ },
43
+ {
44
+ label: "菜单外边距",
45
+ ele: "xd-margin-padding",
46
+ valueKey: 'menuMargin',
47
+ value: data['menuMargin'] || {
48
+ top: 0,
49
+ right: 0,
50
+ bottom: 0,
51
+ left: 0,
52
+ },
53
+ groupKey:'style',
54
+ setting: {
55
+ type: 'padding',
56
+ },
57
+ placeholder: '请设置边距',
58
+ inline: false,
59
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
60
+ },
61
+ {
62
+ label: "菜单内边距",
63
+ ele: "xd-margin-padding",
64
+ valueKey: 'menuPadding',
65
+ value: data['menuPadding'] || {
66
+ top: 0,
67
+ right: 0,
68
+ bottom: 0,
69
+ left: 0,
70
+ },
71
+ groupKey:'style',
72
+ setting: {
73
+ type: 'padding',
74
+ },
75
+ placeholder: '请设置内边距',
76
+ inline: false,
77
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
78
+ },
79
+ {
80
+ label: "菜单背景色",
81
+ ele: "xd-color",
82
+ valueKey: 'menuBgColor',
83
+ value: data['menuBgColor'] || '#FFFFFF',
84
+ groupKey:'style',
85
+ placeholder: '请选择菜单背景色',
86
+ },
87
+ {
88
+ label: "菜单字体设置",
89
+ ele: "xd-text-and-bgc",
90
+ groupKey:'style',
91
+ valueKey: 'menuTabColor',
92
+ value: data['menuTabColor'] || null,
30
93
  setting: {
31
- router: XdBus.getParentApi('getPagesTree')
94
+ fontSize: true, //字体大小选择
95
+ color: true, //文字颜色选项
96
+ bgColor: true, //背景选项
97
+ weight: true, //文字粗细
98
+ },
99
+ handleCustom({action, data}) {
100
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_font_size'})
101
+ .then(res => {
102
+ data.cb(res.list)
103
+ })
104
+ .catch(error => {
105
+ console.error(error);
106
+ data.cb([])
107
+ });
32
108
  },
33
109
  },
34
- data.bgcolor && {
35
- label: '高度:',
110
+ {
111
+ label: "菜单间距设置:",
112
+ groupKey:'style',
36
113
  ele: 'el-input',
37
- type: 'number',
38
- valueKey: 'height',
39
- value: data.height || 100,
40
- placeholder: '请输入占位框高度,单位像素,默认:10px',
114
+ valueKey: 'menuItemMargin',
115
+ value: data.menuItemMargin || 40,
116
+ type: "number",
117
+ className: "input40",
118
+ placeholder: '请输入菜单间距',
119
+ inline: false,
120
+ notice: '设置菜单间距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">40</span>像素',
121
+ },
122
+ {
123
+ label: "菜单底部横线粗细:",
124
+ ele: "el-input",
125
+ valueKey: "menuBorderWidth",
126
+ value: data.menuBorderWidth || 1,
127
+ groupKey: "style",
128
+ type: "number",
129
+ },
130
+ {
131
+ label: '菜单单项内边距设置:',
132
+ groupKey:'style',
133
+ ele: 'xd-margin-padding',
134
+ valueKey: 'menuItemPadding',
135
+ value: data.menuItemPadding || null,
136
+ setting: {
137
+ type: 'padding',
138
+ },
139
+ placeholder: '请设置边距',
140
+ inline: false,
141
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
142
+ },
143
+ {
144
+ label: "全部-业务板块样式配置",
145
+ ele: "title",
146
+ groupKey:'style',
147
+ size: "small",
148
+ },
149
+ {
150
+ label: "业务板块背景色",
151
+ ele: "xd-color",
152
+ valueKey: 'allListBgColor',
153
+ value: data['allListBgColor'] || '#FFFFFF',
154
+ groupKey:'style',
155
+ placeholder: '请选择列表背景色',
156
+ },
157
+ {
158
+ label: "业务板块内边距",
159
+ ele: "xd-margin-padding",
160
+ valueKey: "allModulePadding",
161
+ value: data['allModulePadding'] || null,
162
+ groupKey:'style',
163
+ setting: {
164
+ type: 'padding',
165
+ },
166
+ placeholder: '请设置内边距',
167
+ inline: false,
168
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
169
+ },
170
+ {
171
+ label: "业务板块圆角",
172
+ ele: 'xd-site-select-list',
173
+ valueKey: 'allModuleRadius',
174
+ value: data['allModuleRadius'] || 0,
175
+ groupKey:'style',
176
+ placeholder: '请选择内容圆角设置',
177
+ multiple: false,
41
178
  className: 'input80',
42
- rules: [
43
- {
44
- required: true,
45
- message: '请输入占位框高度',
46
- trigger: 'blur'
47
- },
48
- ]
179
+ handleCustom({ action, data }) {
180
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
181
+ .then(res => {
182
+ data.cb(res.list)
183
+ })
184
+ .catch(error => {
185
+ console.error(error);
186
+ });
187
+ },
49
188
  },
50
189
  {
51
- label: '', //label
52
- ele: 'slot', //package 名称
53
- slot: 'is_reference',
190
+ label: "业务板块标题样式",
191
+ ele: "xd-radio",
192
+ valueKey: "allModuleTitleStyle",
193
+ value: data['allModuleTitleStyle'] || 'underline',
194
+ groupKey:'style',
195
+ placeholder: '请选择标题展示样式',
196
+ list: [
197
+ {label: "底线", value: 'underline'},
198
+ {label: "背景", value: 'background'},
199
+ ],
54
200
  },
201
+ data.allModuleTitleStyle === 'background' &&{
202
+ label: "业务板块标题背景色",
203
+ ele: "xd-color",
204
+ valueKey: 'allModuleTitleBgColor',
205
+ value: data['allModuleTitleBgColor'] || '#FFFFFF',
206
+ groupKey:'style',
207
+ placeholder: '请选择业务板块背景色',
208
+ },
209
+ {
210
+ label: "业务板块标题内边距",
211
+ ele: "xd-margin-padding",
212
+ valueKey: "allModuleTitlePadding",
213
+ value: data['allModuleTitlePadding'] || null,
214
+ groupKey:'style',
215
+ setting: {
216
+ type: 'padding',
217
+ },
218
+ placeholder: '请设置内边距',
219
+ inline: false,
220
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。',
221
+ },
222
+ {
223
+ label: "业务板块查看更多展示样式",
224
+ ele: "xd-radio",
225
+ valueKey: "allModuleMoreStyle",
226
+ value: data['allModuleMoreStyle'] || 'text',
227
+ groupKey:'style',
228
+ placeholder: '请选择查看更多展示样式',
229
+ list: [
230
+ {label: "文案", value: 'text'},
231
+ {label: "按钮", value: 'button'},
232
+ ],
233
+ },
234
+ {
235
+ label: "业务板块间距设置",
236
+ ele: "el-input",
237
+ valueKey: "allModuleMargin",
238
+ value: data.allModuleMargin || 20,
239
+ groupKey: "style",
240
+ type: "number",
241
+ },
242
+ {
243
+ label: "全部 - 列表单个样式配置",
244
+ ele: "title",
245
+ groupKey:'style',
246
+ size: "small",
247
+ },
248
+ {
249
+ label: "业务板块列表单个背景色",
250
+ ele: "xd-color",
251
+ valueKey: 'allModuleItemContBgColor',
252
+ value: data['allModuleItemContBgColor'] || '#FFFFFF',
253
+ groupKey:'style',
254
+ },
255
+ {
256
+ label: "业务板块列表单个间距",
257
+ ele: "el-input",
258
+ valueKey: "allModuleItemContMargin",
259
+ value: data.allModuleItemContMargin || 20,
260
+ groupKey:'style',
261
+ type: "number",
262
+ },
263
+ {
264
+ label: "业务板块列表单个边框",
265
+ ele: "xd-border",
266
+ valueKey: 'allModuleItemContBorder',
267
+ value: data['allModuleItemContBorder'] || null,
268
+ groupKey:'style',
269
+ },
270
+ {
271
+ label: "业务板块列表单个阴影",
272
+ ele: "xd-shadow",
273
+ groupKey:'style',
274
+ valueKey: 'allModuleItemContShadow',
275
+ value: data['allModuleItemContShadow'] || null,
276
+ handleCustom({action, data}) {
277
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
278
+ .then(res => {
279
+ data.cb(res.list)
280
+ })
281
+ .catch(error => {
282
+ console.error(error);
283
+ data.cb([])
284
+ });
285
+ },
286
+ },
287
+ {
288
+ label: "业务板块列表单个内边距",
289
+ ele: "xd-margin-padding",
290
+ valueKey: "allModuleItemContPadding",
291
+ value: data['allModuleItemContPadding'] || null,
292
+ groupKey:'style',
293
+ setting: {
294
+ type: 'padding',
295
+ },
296
+ placeholder: '请设置内边距',
297
+ inline: false,
298
+ notice: '设置内边距,<span style="color: red">单位:像素</span>。默认值:<span style="color: red">20</span>像素',
299
+ },
300
+ {
301
+ label: "业务板块列表单个圆角",
302
+ ele: 'xd-site-select-list',
303
+ valueKey: 'allModuleItemContRadius',
304
+ value: data.allModuleItemContRadius || 16,
305
+ groupKey:'style',
306
+ placeholder: '请选择内容圆角设置',
307
+ multiple: false,
308
+ className: 'input80',
309
+ handleCustom({ action, data }) {
310
+ XdBus.getParentApi('getOptionsSettingList')({ setting_id: 'edtix_style_radius' })
311
+ .then(res => {
312
+ data.cb(res.list)
313
+ })
314
+ .catch(error => {
315
+ console.error(error);
316
+ });
317
+ },
318
+ },
319
+
320
+ {
321
+ label: '选择综合入口类型:',
322
+ ele: 'xd-site-select-list',
323
+ valueKey: 'entryGroupId',
324
+ value: data.entryGroupId || 'default',
325
+ placeholder: '请选择综合入口类型',
326
+ multiple: false,
327
+ groupKey:'content',
328
+ className: 'input50',
329
+ rules: [
330
+ {required: true, message: '请选择综合入口类型', trigger: ['blur', 'change']}
331
+ ],
332
+ handleCustom({action, data}) {
333
+ XdBus.getParentApi('getEntryGroupOption')({key: Date.now()})
334
+ .then(res => {
335
+ data.cb(res.list)
336
+ })
337
+ .catch(error => {
338
+ console.error(error);
339
+ });
340
+ },
341
+ },
342
+ data.entryGroupId && {
343
+ label: "搜索范围",
344
+ ele: "xd-search-setting-options",
345
+ valueKey: 'searchScope',
346
+ value: data['searchScope'] || [],
347
+ groupKey:'content',
348
+ placeholder: '请选择内容圆角设置',
349
+ multiple: false,
350
+ className: 'input80',
351
+ setting: {
352
+ group_id: data.entryGroupId || 'default',
353
+ },
354
+ handleCustom({ action, data }) {
355
+ XdBus.getParentApi('getSearchSettingOptions')({group_id: 'default', ...data.params})
356
+ .then(res => {
357
+ data.cb(res.list)
358
+ })
359
+ .catch(error => {
360
+ console.error(error);
361
+ });
362
+ },
363
+ },
364
+
365
+ //列表相关属性
366
+ ...CusAttr(data),
55
367
  ].filter(i=>i)
56
368
  },
57
369
  advanced: [],
@@ -0,0 +1,157 @@
1
+ <template>
2
+ <view class="content" @click="handleCinemaDetail">
3
+ <view class="title" v-html="cusName"></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
+ import handleKeyword from "./handleKeyword";
32
+
33
+ export default {
34
+ name:'ContentCinema',
35
+ components:{
36
+ XdButton,
37
+ XdFontIcon
38
+ },
39
+ props:{
40
+ keyword:{
41
+ type:String,
42
+ default: '',
43
+ },
44
+ item:Object,
45
+ color: {
46
+ type: Object,
47
+ default: {}
48
+ },
49
+
50
+ },
51
+ computed:{
52
+ cusName(){
53
+ return handleKeyword(this, this.item['cinema_name'], this.keyword)
54
+ },
55
+ },
56
+ data(){
57
+ return {
58
+
59
+ }
60
+ },
61
+ created() {
62
+
63
+ },
64
+ methods:{
65
+ handleCinemaDetail(){
66
+ //优先在线选座
67
+ if(this.item['cinema_type'].includes('SEAT')) {
68
+ this.handleSchedule();
69
+ return
70
+ }
71
+ if(this.item['cinema_type'].includes('CODE')) {
72
+ this.handleCodeDetail();
73
+ return
74
+ }
75
+ if(this.item['cinema_type'].includes('SELL')) {
76
+ this.handleCashierDetail();
77
+ return
78
+ }
79
+ console.error(`${JSON.stringify(this.item['cinema_type'])}`)
80
+ },
81
+
82
+ handleBtn(code){
83
+ if(code === 'SEAT') this.handleSchedule();
84
+ else if(code === 'CODE') this.handleCodeDetail();
85
+ else if(code === 'SELL') this.handleCashierDetail();
86
+ else console.error(`${JSON.stringify(this.item['cinema_type'])}`)
87
+ },
88
+
89
+ //电子码
90
+ handleCodeDetail(){
91
+ console.warn(`handleCodeDetail`)
92
+ this.$emit('on-code-detail', this.item);
93
+ },
94
+ //核销
95
+ handleCashierDetail(){
96
+ console.warn(`handleCashierDetail`)
97
+ this.$emit('on-cashier-detail', this.item);
98
+ },
99
+
100
+ //选座排期
101
+ handleSchedule(){
102
+ console.warn(`handleSchedule`)
103
+ this.$emit('on-schedule', this.item);
104
+ },
105
+ }
106
+ }
107
+ </script>
108
+
109
+ <style scoped lang="less">
110
+ .content {
111
+ .title {
112
+ font-size: 30rpx;
113
+ line-height: 40rpx;
114
+ margin-bottom: 20rpx;
115
+ color: #333;
116
+ font-weight: 500;
117
+ }
118
+ .address {
119
+ font-size: 24rpx;
120
+ line-height: 30rpx;
121
+ color: #999;
122
+ margin-bottom: 15rpx;
123
+ }
124
+
125
+ .bottom {
126
+ display: flex;
127
+ justify-content: space-between;
128
+ align-items: center;
129
+ margin-top: 30rpx;
130
+
131
+ & > .distance {
132
+ display: flex;
133
+ justify-content: flex-start;
134
+ align-items: center;
135
+
136
+ & > text {
137
+ margin-left: 10rpx;
138
+ font-size: 24rpx;
139
+ }
140
+ }
141
+
142
+ & > .btn {
143
+ display: flex;
144
+ justify-content: flex-end;
145
+ align-items: center;
146
+
147
+ & > view {
148
+ margin-left: 10rpx;
149
+ padding: 0 30rpx;
150
+ line-height: 60rpx;
151
+ border-radius: 30rpx;
152
+ font-size: 26rpx;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ </style>