jufubao-base 1.0.290-beta3 → 1.0.290

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 (30) hide show
  1. package/package.json +1 -1
  2. package/src/components/CusCouponChose/CusCouponChose.vue +1027 -0
  3. package/src/components/CusCouponItem/CusCouponItem.vue +298 -0
  4. package/src/components/CusEnter/CusEnter.vue +360 -0
  5. package/src/components/CusPoster/CusPoster.vue +212 -0
  6. package/src/components/CusPoster/CusSwiperDot.vue +234 -0
  7. package/src/components/CusProduct/CusProduct.vue +372 -0
  8. package/src/components/CusShops/CusShops.vue +518 -0
  9. package/src/components/CusSwiperDot/CusSwiperDot.vue +234 -0
  10. package/src/components/CusTab/CusTab.vue +411 -0
  11. package/src/components/CusVideo/CusVideo.vue +170 -0
  12. package/src/components/JfbBaseFooter/Attr.js +10 -155
  13. package/src/components/JfbBaseFooter/JfbBaseFooter.vue +98 -44
  14. package/src/components/JfbBaseFooter/XdFooterBar.vue +324 -0
  15. package/src/components/JfbBaseFooter/cusAttr/advanced.js +12 -0
  16. package/src/components/JfbBaseFooter/cusAttr/content.js +475 -0
  17. package/src/components/JfbBaseFooter/cusAttr/style.js +7 -0
  18. package/src/components/JfbBaseFooter/cusAttr/tools.js +17 -0
  19. package/src/components/JfbBaseSavingDetail/JfbBaseSavingDetail.vue +3 -15
  20. package/src/components/JfbBaseTfkSearch/Api.js +15 -0
  21. package/src/components/JfbBaseTfkSearch/CustomList.vue +10 -0
  22. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +255 -7
  23. package/src/components/JfbBaseTfkSearch/XdQueryFilter.vue +347 -0
  24. package/src/components/JfbBaseTfkSearch/XdQuerySort.vue +192 -0
  25. package/src/components/JfbBaseTfkSearch/listMixins.js +8 -6
  26. package/src/components/JfbBaseUserInfo/Attr.js +12 -0
  27. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +8 -2
  28. package/src/mixins/componentsMixins.js +363 -55
  29. package/src/mixins/posterMixins.js +27 -199
  30. package/src/mixins/productCompMixins.js +252 -0
@@ -0,0 +1,475 @@
1
+ 'use strict';
2
+
3
+ import tools from "./tools";
4
+ import ICONS from "@/ICONS";
5
+ import {
6
+ dataVal,
7
+ customVal,
8
+ statusDataVal,
9
+ statusShow
10
+ } from "@/utils/AttrTools";
11
+
12
+ export default function (data, gValue, gColor, oldData){
13
+ const {footerSettingImage, footerSetting} = tools(data);
14
+
15
+ let footerTpl = dataVal({data, key:'footerTpl', dValue:'normal', gValue});
16
+
17
+
18
+ let iconStyle = {
19
+ cusColor:{
20
+ iconColor: '#333',
21
+ color: '#333'
22
+ },
23
+ cusActColor:{
24
+ iconColor: gColor.mainColor,
25
+ color:gColor.mainColor
26
+ }
27
+ }
28
+ if(data.color) {
29
+ iconStyle['cusColor'] = {
30
+ iconColor: data.color,
31
+ color: data.color
32
+ }
33
+ }
34
+ if(data.selectedColor) {
35
+ iconStyle['cusActColor'] = {
36
+ iconColor: data.selectedColor,
37
+ color: data.selectedColor
38
+ }
39
+ }
40
+ if(data.iconStyle !== undefined) iconStyle = data.iconStyle;
41
+
42
+
43
+ return [
44
+ {
45
+ label: '',
46
+ ele: 'slot',
47
+ slot: 'is_reference_title',
48
+ groupKey: 'content',
49
+ labelInline:true,
50
+ },
51
+ {
52
+ ele: 'title',
53
+ label: '基础',
54
+ size: 'small',
55
+ groupKey:'content',
56
+ },
57
+ {
58
+ label: "组件样式",
59
+ ele: "xd-style-image",
60
+ groupKey: 'content',
61
+ valueKey: "footerTpl",
62
+ value: dataVal({data, key:'footerTpl', dValue:'normal', gValue}),
63
+ labelInline:true,
64
+ className: 'input100',
65
+ handleCustom(cusRes) {
66
+ XdBus.getParentApi('getCompStylesOptions')({
67
+ layout_ids: 'lynkWnvoDmMLIdOR1AhSt',
68
+ key: Date.now()
69
+ })
70
+ .then(res => {
71
+ cusRes.data.cb(res)
72
+ })
73
+ .catch(error => {
74
+ console.error(error);
75
+ });
76
+ },
77
+ },
78
+
79
+ footerTpl === 'itemCenterBig'&&{ele: 'group_start'},
80
+ {
81
+ label: '中间图标',
82
+ ele: 'xd-radio',
83
+ groupKey: 'content',
84
+ valueKey: 'iconCenterStatus',
85
+ value: statusDataVal({data, key:'iconCenterStatus', fields:['centerColor','centerWidth'],gValue}),
86
+ hidden: !(footerTpl === 'itemCenterBig'),
87
+ labelInline:true,
88
+ list: [
89
+ {label: '默认', value: 'D'},
90
+ {label: '自定义', value: 'C'},
91
+ ]
92
+ },
93
+ {
94
+ label: '边框大小',
95
+ ele: 'el-input',
96
+ type: 'number',
97
+ groupKey: 'content',
98
+ valueKey: 'centerWidth',
99
+ cusStyle: {paddingLeft: '80px'},
100
+ labelInline:true,
101
+ value: dataVal({data, key:'centerWidth', dValue:12, gValue}),
102
+ hidden:!(footerTpl === 'itemCenterBig') || !statusShow({data, key: 'iconCenterStatus', fields:['centerColor','centerWidth'], gValue}),
103
+ className: 'input100',
104
+ },
105
+ {
106
+ label: '边框颜色',
107
+ ele: 'xd-color',
108
+ valueKey: 'centerColor',
109
+ groupKey:'content',
110
+ labelInline:true,
111
+ cusStyle: {paddingLeft: '80px'},
112
+ value: dataVal({data, key:'centerColor', dValue:'', gValue}),
113
+ hidden:!(footerTpl === 'itemCenterBig') || !statusShow({data, key: 'iconCenterStatus', fields:['centerColor','centerWidth'], gValue}),
114
+ placeholder: '请选择边框颜色',
115
+ setting: {
116
+ showAlpha: true
117
+ },
118
+ className: 'input100',
119
+ },
120
+ footerTpl === 'itemCenterBig'&& {ele: 'group_end'},
121
+
122
+ {
123
+ label: "菜单名称",
124
+ ele: "xd-radio",
125
+ valueKey: "isShowTitle",
126
+ labelInline:true,
127
+ value: dataVal({data, key:'isShowTitle', dValue:'Y', gValue}),
128
+ groupKey:'content',
129
+ list: [
130
+ {"label": "显示", "value": "Y"},
131
+ {"label": "隐藏", "value": "N"},
132
+ ],
133
+ },
134
+
135
+ {
136
+ label: '图标配色',
137
+ ele: 'xd-radio',
138
+ groupKey: 'content',
139
+ valueKey: 'iconStyleStatus',
140
+ value: statusDataVal({data, key:'iconStyleStatus', fields:['iconStyle','color','selectedColor'],gValue}),
141
+ labelInline:true,
142
+ list: [
143
+ {label: '默认', value: 'D'},
144
+ {label: '自定义', value: 'C'},
145
+ ]
146
+ },
147
+ {ele: 'group_start'},
148
+ {
149
+ label: '',
150
+ ele: 'xd-text-and-bgc',
151
+ groupKey:'content',
152
+ valueKey: 'iconStyle',
153
+ value: iconStyle,
154
+ hidden: !statusShow({data, key: 'iconStyleStatus', fields:['iconStyle','color','selectedColor'], gValue}),
155
+ labelInline:true,
156
+ setting: {
157
+ fontSize: false,
158
+ weight:false,
159
+ bgColor: false,
160
+ selected:true,
161
+ color: false,
162
+ cusColor: [
163
+ {label: '图标色', value: 'iconColor'},
164
+ {label: '文字色', value: 'color'},
165
+ ],
166
+ default:{
167
+ cusColor:{
168
+ iconColor: '#333',
169
+ color: '#333'
170
+ },
171
+ cusActColor:{
172
+ color: gColor.mainColor,
173
+ iconColor: gColor.mainColor
174
+ }
175
+ }
176
+ },
177
+ handleCustom({action, data}) {
178
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_font_size'})
179
+ .then(res => {
180
+ data.cb(res.list)
181
+ })
182
+ .catch(error => {
183
+ console.error(error);
184
+ data.cb([])
185
+ });
186
+ },
187
+ },
188
+ {ele: 'group_end'},
189
+
190
+ {
191
+ label: '导航样式',
192
+ ele: 'xd-radio',
193
+ groupKey: 'content',
194
+ valueKey: 'navStatus',
195
+ value: statusDataVal({data, key:'navStatus', fields:['backgroundImage','bgColor','borderColor'], gValue}),
196
+ labelInline:true,
197
+ list: [
198
+ {label: '默认', value: 'D'},
199
+ {label: '自定义', value: 'C'},
200
+ ]
201
+ },
202
+ {ele: 'group_start'},
203
+ {
204
+ label: '背景色',
205
+ ele: 'xd-color',
206
+ valueKey: 'bgColor',
207
+ groupKey:'content',
208
+ value: dataVal({data, key:'bgColor', dValue:'', gValue}),
209
+ hidden:!statusShow({data, key: 'navStatus', fields:['bgColor','backgroundImage','borderColor'], gValue}),
210
+ labelInline:true,
211
+ placeholder: '请选择背景颜色',
212
+ setting: {
213
+ showAlpha: true
214
+ },
215
+ classNmae: 'input800',
216
+ },
217
+ {
218
+ label: '边框色:',
219
+ ele: 'xd-color',
220
+ valueKey: 'borderColor',
221
+ groupKey:'content',
222
+ value: dataVal({data, key:'borderColor', dValue:'', gValue}),
223
+ hidden:!statusShow({data, key: 'navStatus', fields:['bgColor','backgroundImage','borderColor'], gValue}),
224
+ placeholder: '请选择边框颜色',
225
+ labelInline:true,
226
+ setting: {
227
+ showAlpha: true
228
+ },
229
+ classNmae: 'input800',
230
+ },
231
+ {
232
+ label: '背景图',
233
+ labelInline:true,
234
+ ele: 'xd-upload',
235
+ valueKey: 'backgroundImage',
236
+ groupKey:'content',
237
+ value: dataVal({data, key:'backgroundImage', dValue:{}, gValue}),
238
+ hidden:!statusShow({data, key: 'navStatus', fields:['bgColor','backgroundImage','borderColor'], gValue}),
239
+ defaultValue: dataVal({data, key:'backgroundImage', dValue:null, gValue}),
240
+ slot: true,
241
+ oneWidth: 260,
242
+ oneHeight: 260*110/750,
243
+ elinputClassName: 'input40',
244
+ tipsformet: '<span style="font-size: 12px; color: #999">上传文件格式:@imageType@,不超过@size@MB。建议尺寸:<span style="color:red">750*110</span>像素</span>',
245
+ type: ['jpg', 'png', 'jpeg'],
246
+ styleType: 'one',
247
+ uploadType: 'aliyun',
248
+ size: .5,
249
+ action: 'action',
250
+ sort: true,
251
+ maxlen: 1,
252
+ },
253
+ {ele: 'group_end'},
254
+ //--弃用-----
255
+ {
256
+ label: '菜单图片配置:',
257
+ ele: 'xd-footer-setting',
258
+ valueKey: 'footerSettingImage',
259
+ groupKey:'content',
260
+ value: footerSettingImage,
261
+ hidden: true,
262
+ setting: {
263
+ router: XdBus.getParentApi('getPagesTree'),
264
+ hideAdd: true,
265
+ showField: {
266
+ path: true,
267
+ icon: false,
268
+ notice: false,
269
+ image: true,
270
+ actImage: true
271
+ },
272
+ disabel:{
273
+ path: true,
274
+ icon: true,
275
+ notice: true,
276
+ image: true,
277
+ actImage: true
278
+ },
279
+ },
280
+ handleCustom({action,data}){
281
+ if(action === 'number') {
282
+ XdBus.getParentApi('getOptionsNoticeNumber')()
283
+ .then(res => {
284
+ data.cb(res.list)
285
+ })
286
+ .catch();
287
+ }
288
+ },
289
+ },
290
+ {
291
+ label: '选中',
292
+ ele: 'xd-color',
293
+ valueKey: 'selectedColor',
294
+ groupKey:'content',
295
+ labelInline:true,
296
+ hidden: true,
297
+ setting: {
298
+ showAlpha: true
299
+ },
300
+ value: dataVal({data, key:'selectedColor', dValue:'', gValue}),
301
+ placeholder: '请选择菜单文字选中颜色',
302
+ classNmae: 'input100',
303
+ },
304
+ {
305
+ label: '未选中',
306
+ ele: 'xd-color',
307
+ valueKey: 'color',
308
+ groupKey:'content',
309
+ value: dataVal({data, key:'color', dValue:'', gValue}),
310
+ hidden: true,
311
+ labelInline:true,
312
+ setting: {
313
+ showAlpha: true
314
+ },
315
+ placeholder: '请选择菜单文字颜色',
316
+ classNmae: 'input100',
317
+ },
318
+ //--弃用-----
319
+ {
320
+ ele: 'title',
321
+ label: '菜单内容',
322
+ size: 'small',
323
+ groupKey:'content',
324
+ },
325
+ {
326
+ label: '',
327
+ ele: 'xd-footer-new-setting',
328
+ valueKey: 'footer-setting',
329
+ groupKey:'content',
330
+ value: footerSetting,
331
+ labelInline:true,
332
+ hidden: !(dataVal({data, key:'footerTpl', dValue:'normal', gValue}) === 'normal') ,
333
+ cusStyle: {marginLeft: 0,paddingLeft:0,paddingRight:0},
334
+ setting: {
335
+ router: XdBus.getParentApi('getPagesTree'),
336
+ icons:ICONS,
337
+ mode: 'new',
338
+ tplMode: footerTpl,
339
+ iconColor:{
340
+ color: data['iconStyleStatus'] === 'D'? '#333': iconStyle.cusColor.iconColor,
341
+ actColor : data['iconStyleStatus'] === 'D'?gColor.mainColor: iconStyle.cusActColor.iconColor
342
+ },
343
+ showField: {
344
+ path: true,
345
+ icon: true,
346
+ notice: true,
347
+ }
348
+ },
349
+ handleCustom({action,data}){
350
+ console.log(`handleCustom.${action}`, data);
351
+ if(action === 'number') {
352
+ XdBus.getParentApi('getOptionsNoticeNumber')()
353
+ .then(res => {
354
+ data.cb(res.list)
355
+ })
356
+ .catch();
357
+ }
358
+ },
359
+ className: 'input100',
360
+ rules: [
361
+ {
362
+ required: false,
363
+ validator: (rule, value, callback) => {
364
+ let setTpl = dataVal({data, key:'footerTpl', dValue:'normal', gValue});
365
+ if(setTpl === 'normal') {
366
+ if(value && value.length === 0) callback('请设置菜单');
367
+ else {
368
+ let errorStr = '';
369
+ if(value && value.length > 0) {
370
+ let len = value.length;
371
+ for(let i = 0; i < len; i++) {
372
+ if(value[i].name.length > 5) {
373
+ errorStr = `菜单${i}最大长度不能超过5个汉字`;
374
+ break
375
+ }
376
+ }
377
+ }
378
+ if(errorStr) {
379
+ callback(errorStr)
380
+ }else callback();
381
+ }
382
+ }
383
+ else callback()
384
+ },
385
+ trigger: ['blur','change']
386
+ }
387
+ ],
388
+ },
389
+ {
390
+ label: '',
391
+ ele: 'xd-footer-new-setting',
392
+ valueKey: 'footer-setting-center-big',
393
+ groupKey:'content',
394
+ value: dataVal({data, key:'footer-setting-center-big', dValue:[], gValue}),
395
+ labelInline:true,
396
+ cusStyle: {marginLeft: 0,paddingLeft:0},
397
+ setting: {
398
+ router: XdBus.getParentApi('getPagesTree'),
399
+ icons:ICONS,
400
+ mode: 'new',
401
+ tplMode: footerTpl,
402
+
403
+ showField: {
404
+ path: true,
405
+ icon: true,
406
+ notice: true,
407
+ }
408
+ },
409
+ handleCustom({action,data}){
410
+ console.log(`handleCustom.${action}`, data);
411
+ if(action === 'number') {
412
+ XdBus.getParentApi('getOptionsNoticeNumber')()
413
+ .then(res => {
414
+ data.cb(res.list)
415
+ })
416
+ .catch();
417
+ }
418
+ },
419
+ hidden: !(dataVal({data, key:'footerTpl', dValue:'normal', gValue}) === 'itemCenterBig'),
420
+ rules: [
421
+ {
422
+ required: false,
423
+ validator: (rule, value, callback) => {
424
+ let setTpl = dataVal({data, key:'footerTpl', dValue:'normal', gValue});
425
+ if(setTpl === 'itemCenterBig') {
426
+ if(value && value.length === 0) callback('请设置菜单');
427
+ else {
428
+ let errorStr = '';
429
+ if(value && value.length > 0) {
430
+ let len = value.length;
431
+ for(let i = 0; i < len; i++) {
432
+ if(value[i].name.length > 5) {
433
+ errorStr = `菜单${i}最大长度不能超过5个汉字`;
434
+ break
435
+ }
436
+ }
437
+ }
438
+ if(errorStr) {
439
+ callback(errorStr)
440
+ }else callback();
441
+ }
442
+ }
443
+ else callback()
444
+ },
445
+ trigger: 'blur'
446
+ }
447
+ ],
448
+ className: 'input100',
449
+ },
450
+ {
451
+ label: '版本号:',
452
+ ele: 'el-input',
453
+ type: 'text',
454
+ groupKey: 'content',
455
+ valueKey: 'version',
456
+ value: 'v2.0',
457
+ hidden: true,
458
+ },
459
+ {
460
+ label: '引用过滤字段设置:',
461
+ ele: 'el-input',
462
+ type: 'text',
463
+ groupKey: 'content',
464
+ valueKey: 'refFilterContent',
465
+ value: '[]',
466
+ hidden: true,
467
+ },
468
+ {
469
+ label: '',
470
+ ele: 'slot',
471
+ slot: 'is_reference',
472
+ groupKey: 'content',
473
+ },
474
+ ].filter(i=>i)
475
+ }
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ export default function (data, gValue,gColor,oldData){
4
+ return [
5
+ ].filter(i=>i)
6
+ }
7
+
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ export default (data)=>{
4
+ let footerSettingImage = [];
5
+ let footerSetting = []
6
+ if(data['footerSettingImage'] && data['footerSettingImage'].length > 0 ) {
7
+ footerSettingImage = data['footerSettingImage'];
8
+ }
9
+ if(data['footer-setting'] && data['footer-setting'].length > 0){
10
+ footerSetting = data['footer-setting'];
11
+ footerSetting.map((item,index)=>{
12
+ if(!footerSettingImage[index]) footerSettingImage[index] = {};
13
+ footerSettingImage[index] = Object.assign({},JSON.parse(JSON.stringify(item)),footerSettingImage[index])
14
+ })
15
+ }
16
+ return {footerSettingImage, footerSetting}
17
+ }
@@ -513,7 +513,7 @@
513
513
  },
514
514
  getYearAndMonth(dateStr) {
515
515
  // 将输入的日期字符串转换为Date对象
516
- const date = new Date(this.convertDateFormat(dateStr));
516
+ const date = new Date(dateStr.replace("年", "-").replace("月", "-01"));
517
517
 
518
518
  // 获取年份和月份
519
519
  const year = date.getFullYear();
@@ -529,20 +529,8 @@
529
529
  const month = String(date.getMonth() + 1);
530
530
  return `${year}年${month}月`;
531
531
  },
532
- convertDateFormat(dateStr) {
533
- if(!dateStr)return''
534
- // 提取年份和月份
535
- const year = dateStr.match(/(\d{4})年/)[1];
536
- const month = dateStr.match(/(\d+)月/)[1];
537
-
538
- // 确保月份是两位数
539
- const formattedMonth = month.padStart(2, '0');
540
-
541
- // 组合成目标格式
542
- return `${year}-${formattedMonth}-01`;
543
- },
544
532
  handleLastMonth() {
545
- const dateRange = new Date(this.convertDateFormat(this.monthDateRange));
533
+ const dateRange = new Date(this.monthDateRange.replace("年", "-").replace("月", "-01"));
546
534
  // 获取上一个月的日期范围
547
535
  const previousMonth = new Date(dateRange);
548
536
  previousMonth.setMonth(dateRange.getMonth() - 1);
@@ -552,7 +540,7 @@
552
540
  this.getMonthData()
553
541
  },
554
542
  handleNextMonth() {
555
- const dateRange = new Date(this.convertDateFormat(this.monthDateRange));
543
+ const dateRange = new Date(this.monthDateRange.replace("年", "-").replace("月", "-01"));
556
544
  // 获取下一个月的日期范围
557
545
  const nextMonth = new Date(dateRange);
558
546
  nextMonth.setMonth(dateRange.getMonth() + 1);
@@ -24,4 +24,19 @@ module.exports = [
24
24
  isConsole: true,
25
25
  disabled: true,
26
26
  },
27
+ {
28
+ //设置方法名字当别忘记加上【模块名字】:Tfk
29
+ mapFnName: 'getTfkSearchFilterItems',
30
+ title: '获取搜索筛选条件',
31
+ path: '/mall/v1/msearch/search-filter',
32
+ isRule: false,
33
+ data: {
34
+ type: ['类型', 'String', '必选'],
35
+ namespace: ['业务线', 'Number', '非必选'],
36
+ city_code: ['城市编码', 'Number', '非必选'],
37
+ filter_item: ['纬度', 'Number', '非必选'],
38
+ },
39
+ isConsole: true,
40
+ disabled: true,
41
+ },
27
42
  ];
@@ -177,6 +177,10 @@ export default {
177
177
  tabId:{
178
178
  type:String,
179
179
  required:true
180
+ },
181
+ refresh: {
182
+ type: String | Number,
183
+ default: '',
180
184
  }
181
185
  },
182
186
 
@@ -282,6 +286,12 @@ export default {
282
286
  this.onCusReloadList();
283
287
  },
284
288
 
289
+ refresh() {
290
+ this.handleClear();
291
+ this.parseTab()
292
+ this.onCusReloadList();
293
+ },
294
+
285
295
  stateCity(n, o){
286
296
  if(n && JSON.stringify(n) !== JSON.stringify(o)){
287
297
  this.onCusReloadList()