jufubao-base 1.0.233-beta2 → 1.0.233-beta31

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.
@@ -1,516 +0,0 @@
1
- <template>
2
- <view
3
- class="jfb-base-header-column"
4
- @click="handleEditxSelect"
5
- :class="{ editx : isEditx && active }"
6
- >
7
- <!--#ifdef H5-->
8
- <view
9
- class="jfb-base-header-column__edit"
10
- :class="{ editx : isEditx && active }"
11
- v-if="isEditx && active"
12
- >
13
- <view class="jfb-base-header-column__edit-icon" @click="delEdit">删除</view>
14
- </view>
15
- <!-- #endif -->
16
- <view class="jfb-base-header-column__body">
17
- <view
18
- class="header_wrap"
19
- :style="{
20
- background: backgroundColor,
21
- borderBottom: bottomBorder
22
- }"
23
- >
24
- <view class="header_sec header_top">
25
- <view class="header_wrap-back" @click="onJfbBack" v-if="showBack==='Y'">
26
- <xd-font-icon :size="30" :color="textColor" icon="iconxiangzuo_xian"/>
27
- </view>
28
- <view class="site_wrap" :style="[siteBoxStyle]">
29
- <view v-if="showPartner==='Y'" class="name_logo">
30
- <view v-if="logo" class="logo">
31
- <image :src="logo" mode="heightFix"></image>
32
- </view>
33
- <view v-if="showPartnerName==='Y'" class="name" :style="{color: textColor}">{{partnerName}}</view>
34
- </view>
35
- </view>
36
-
37
- </view>
38
- <view class="header_sec header_bottom">
39
- <view v-if="loaded && showLocation==='Y' && searchBoxPosition==='out'" class="header_wrap-city">
40
- <xd-city-show-api
41
- @done="handleCityDone"
42
- @onChange="handleCityChange"
43
- :color="textColor"
44
- :icon="locationIcon"
45
- :bgColor="locationBackgroundColor"
46
- :key="showLocationKey"
47
- ></xd-city-show-api>
48
- </view>
49
- <view
50
- class="search_wrap"
51
- @click="toSearch"
52
- :style="{
53
- background:inputBackgroundColor,
54
- color:inputTextColor,
55
- borderRadius: searchBoxRadius + 'rpx',
56
- border: inputBorder
57
- }"
58
- >
59
- <view v-if="loaded && showLocation==='Y' && searchBoxPosition==='in'" class="header-city-in" @click.stop>
60
- <xd-city-show-api
61
- @done="handleCityDone"
62
- @onChange="handleCityChange"
63
- :color="textColor"
64
- :icon="locationIcon"
65
- :bgColor="locationBackgroundColor"
66
- :key="showLocationKey"
67
- ></xd-city-show-api>
68
- </view>
69
- <xd-font-icon v-if="searchIconPosition==='left'" :icon="icon" :color="iconColor" size="32"/>
70
- <input
71
- v-if="useSearch==='Y'"
72
- :placeholder="placeholder"
73
- class="search_input"
74
- :value="keyword"
75
- @input="handleInput"
76
- @click="toSearch"
77
- :placeholder-style="'color:' + inputTextColor"
78
- />
79
- <view v-else class="search_placeholder">{{placeholder}}</view>
80
- <xd-font-icon v-if="searchIconPosition==='right'" :icon="icon" :color="iconColor" size="32"/>
81
- <view v-if="showSearchBtn==='Y' && searchBtnPosition==='in'"
82
- class="search_btn_in"
83
- :style="[searchBtnStyle]"
84
- @click.stop="doSearch"
85
- >{{searchBtnText || '搜索'}}</view>
86
- </view>
87
- <view v-if="showSearchBtn==='Y' && searchBtnPosition==='out'"
88
- class="search_btn_out"
89
- :style="[searchBtnStyle]"
90
- @click="doSearch"
91
- >{{searchBtnText || '搜索'}}</view>
92
- <!-- 非预览情况下,H5隐藏客服功能 -->
93
- <!--#ifdef H5-->
94
- <view v-if="isPreview">
95
- <view v-if="showQuickEntry==='Y'" @click="handleQuickEntry" :style="{backgroundColor:quickBackgroundColor}" class="quick">
96
- <xd-font-icon size="32" :style="{color:quickTextColor||mainColor}" :icon="quickIcon"></xd-font-icon>
97
- </view>
98
- </view>
99
- <view v-else>
100
- <view v-if="showQuickEntry==='Y'&&quickEntryType!=='service'" @click="handleQuickEntry" :style="{backgroundColor:quickBackgroundColor}" class="quick">
101
- <xd-font-icon size="32" :style="{color:quickTextColor||mainColor}" :icon="quickIcon"></xd-font-icon>
102
- </view>
103
- </view>
104
- <!-- #endif -->
105
- <!-- #ifdef MP-WEIXIN -->
106
- <view v-if="showQuickEntry==='Y'&&quickEntryType!=='service'" @click="handleQuickEntry" :style="{backgroundColor:quickBackgroundColor}" class="quick">
107
- <xd-font-icon size="32" :style="{color:quickTextColor||mainColor}" :icon="quickIcon"></xd-font-icon>
108
- </view>
109
- <button v-if="showQuickEntry==='Y'&&quickEntryType==='service'" :style="{backgroundColor:quickBackgroundColor}" class="quick-button" open-type="contact">
110
- <xd-font-icon size="32" :style="{color:quickTextColor||mainColor}" :icon="quickIcon"></xd-font-icon>
111
- </button>
112
- <!-- #endif -->
113
- </view>
114
-
115
- </view>
116
- </view>
117
- </view>
118
- </template>
119
-
120
- <script>
121
- import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
122
- import XdCityShowApi from "@/components/XdCityShowApi/XdCityShowApi"
123
- import { jfbRootExec, jfbRootFnExec } from "@/utils/xd.event";
124
- import JfbBaseHeaderColumnMixin from "./JfbBaseHeaderColumnMixin";
125
- import { getContainerPropsValue } from "@/utils/xd.base";
126
- import componentsMixins from "@/mixins/componentsMixins";
127
- import extsMixins from "@/mixins/extsMixins";
128
- import getServiceUrl from "@/common/getServiceUrl";
129
- import {mapState, mapMutations } from 'vuex';
130
- export default {
131
- name: "JfbBaseHeaderColumn",
132
- components: {
133
- XdFontIcon,
134
- XdCityShowApi
135
- },
136
- mixins: [
137
- componentsMixins, extsMixins, JfbBaseHeaderColumnMixin
138
- ],
139
- computed:{
140
- ...mapState(['siteInfo']),
141
- searchBtnStyle(){
142
- return {
143
- background: this.searchBtnBgColor,
144
- color: this.searchBtnTextColor,
145
- borderRadius: this.searchBtnRadius + 'rpx'
146
- }
147
- },
148
- siteBoxStyle(){
149
- return {
150
- justifyContent: this.sitePosition
151
- }
152
- },
153
- },
154
- data() {
155
- return {
156
- timer: null,
157
- saveKey: 'xd_user_current_access_city', //用户选中城市存储key
158
- loaded: false,
159
- keyword: "",
160
- isPreview: false,
161
-
162
- //面板
163
- showLocation: "",
164
- showLocationKey: 'showLocationKey',
165
- showBack: "",
166
- showPartner: "",
167
- showPartnerName: "",
168
- logo: "",
169
- partnerName: "",
170
- useSearch: "N", //Y:用于搜索; N:用于跳转搜索页面
171
- searchPagePath: "",
172
- placeholder: "请输入关键词",
173
- choseCityPath: "", //选择城市i
174
- quickEntryPath: "", //快速入口
175
- quickBackgroundColor: "",
176
- quickTextColor: "",
177
- quickIcon: "",
178
- showQuickEntry: '',
179
- quickEntryType: "",
180
-
181
- //基础
182
- textColor: '',
183
- backgroundColor: '',
184
- inputBackgroundColor: '',
185
- inputTextColor: '',
186
-
187
-
188
- //ICON
189
- icon: '',
190
- iconColor: '',
191
-
192
- //边框
193
- is_border: 'Y',
194
- is_border_w: 0,
195
- is_border_c: '',
196
-
197
- //定位ICON
198
- locationIcon: "",
199
- locationBackgroundColor: "",
200
-
201
- sitePosition: "left",
202
-
203
- //
204
- searchBoxPosition: "out",
205
- searchIconPosition: "right",
206
- showSearchBtn: "",
207
- searchBtnPosition: "out",
208
- searchBtnText: "",
209
- searchBtnBgColor: "",
210
- searchBtnTextColor: "",
211
- searchBtnRadius: 0,
212
- searchBoxRadius: 30,
213
- bottomBorder: "",
214
- inputBorder: "",
215
- }
216
- },
217
- watch: {
218
- container(value, oldValue) {
219
- if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
220
- if (this.$configProject['isPreview']) this.init(value)
221
- },
222
- },
223
- created() {
224
- this.init(this.container);
225
- this.isPreview = this.$configProject['isPreview'];
226
- //todo
227
- },
228
- methods: {
229
- ...mapMutations(['setShowSwitchCity', 'setCityInfo']),
230
- onJfbLoad(options) {
231
- this.loaded = true;
232
- },
233
- /**
234
- * @description 监听事件变化
235
- * @param container {object} 业务组件对象自己
236
- */
237
- init(container) {
238
- this.showLocation = getContainerPropsValue(container, "content.showLocation", "Y");
239
- this.showBack = getContainerPropsValue(container, "content.showBack", "Y");
240
- this.showPartner = getContainerPropsValue(container, "content.showPartner", "Y")
241
- this.showPartnerName = getContainerPropsValue(container, "content.showPartnerName", "N");
242
- this.placeholder = getContainerPropsValue(container, "content.placeholder",'请输入关键词');
243
- this.useSearch = getContainerPropsValue(container, "content.useSearch", "Y");
244
- this.searchPagePath = getContainerPropsValue(container, "content.searchPagePath", {value:""}).value;
245
- this.choseCityPath = getContainerPropsValue(container, "content.choseCityPath", {value:""}).value;
246
-
247
-
248
- //基础
249
- this.backgroundColor = getContainerPropsValue(container, "content.backgroundColor", '#fff');
250
- this.icon = getContainerPropsValue(container, "content.icon", 'iconsousuo_mian');
251
- this.iconColor = getContainerPropsValue(container, "content.iconColor", '#333');
252
- this.inputBackgroundColor = getContainerPropsValue(container, "content.inputBackgroundColor", '#eee');
253
- this.inputTextColor = getContainerPropsValue(container, "content.inputTextColor", '#999');
254
- this.textColor = getContainerPropsValue(container, "content.textColor", '#333');
255
- this.locationIcon = getContainerPropsValue(container, "content.locationIcon", "icondizhitubiao")
256
- this.locationBackgroundColor = getContainerPropsValue(container, "content.locationBackgroundColor", "")
257
-
258
- this.is_border = getContainerPropsValue(container, 'content.is_border', 'N');
259
- this.is_border_c = getContainerPropsValue(container, 'content.is_border_c', '#fff');
260
- this.is_border_w = getContainerPropsValue(container, 'content.is_border_w', '2');
261
-
262
- this.sitePosition = getContainerPropsValue(container, 'content.sitePosition', "left");
263
-
264
- this.searchBoxPosition = getContainerPropsValue(container, 'content.searchBoxPosition', "out");
265
- this.searchIconPosition = getContainerPropsValue(container, 'content.searchIconPosition', "right");
266
- this.showSearchBtn = getContainerPropsValue(container, 'content.showSearchBtn', "");
267
- this.searchBtnPosition = getContainerPropsValue(container, 'content.searchBtnPosition', "out");
268
- this.searchBtnText = getContainerPropsValue(container, 'content.searchBtnText', "");
269
- this.searchBtnBgColor = getContainerPropsValue(container, 'content.searchBtnBgColor', "");
270
- this.searchBtnTextColor = getContainerPropsValue(container, 'content.searchBtnTextColor', "");
271
- this.searchBtnRadius = getContainerPropsValue(container, 'content.searchBtnRadius', 100);
272
- this.searchBoxRadius = getContainerPropsValue(container, 'content.searchBoxRadius', 30);
273
- let bottomBorder = getContainerPropsValue(container, 'content.bottomBorder', "Y");
274
- console.log("this.bottomBorder", this.bottomBorder)
275
- this.bottomBorder = this.getBorderCompatibleOldStyle(bottomBorder, {})
276
- this.inputBorder = this.getXdBorder({}, getContainerPropsValue(container, 'content.inputBorder', {}))
277
-
278
- //快捷入口
279
- this.quickBackgroundColor = getContainerPropsValue(container, 'content.quickBackgroundColor', "#FFEDDB");
280
- this.quickTextColor = getContainerPropsValue(container, 'content.quickTextColor', "");
281
- this.quickIcon = getContainerPropsValue(container, 'content.quickIcon', "iconkefu");
282
- this.showQuickEntry = getContainerPropsValue(container, 'content.showQuickEntry', "N");
283
- this.quickEntryType = getContainerPropsValue(container, 'content.quickEntryType', "");
284
- this.quickEntryPath = getContainerPropsValue(container, 'content.quickEntryPath', {value:""}).value;
285
-
286
- let name , logo, platform_logo;
287
- if (this.projectAttr['site_name']) name = this.projectAttr['site_name'];
288
- if (this['siteInfo'] && this['siteInfo']['mapping'] && this['siteInfo']['mapping']['site_name']) name = this['siteInfo']['mapping']['site_name'];
289
- if (this.projectAttr['site_logo']) logo = getServiceUrl(this.projectAttr['site_logo'], 'size3');
290
- if (this.projectAttr['platform_logo']) platform_logo = getServiceUrl(this.projectAttr['platform_logo'], 'size3');
291
- this.logo = platform_logo || logo || '//dummyimage.com/100x100';
292
- this.partnerName = name || '聚福宝福利';
293
-
294
- if(this.isPreview){
295
- document.querySelector('.xd-Layout__top').style.zIndex = 149099;
296
- }
297
- },
298
- handleInput(e){
299
- this.keyword = e.detail.value;
300
- //如果有搜索按钮,则不自动执行搜索
301
- if(this.showSearchBtn === 'Y') return;
302
- if(this.timer) clearTimeout(this.timer);
303
- this.timer = setTimeout(() => {
304
- jfbRootFnExec(this, 'onCustomEvent')("baseHeader@search", e.detail.value);
305
- }, 300)
306
- },
307
- doSearch(){
308
- if(this.useSearch === "N"){
309
- this.$xdUniHelper.navigateTo({
310
- url: this.searchPagePath
311
- })
312
- }else{
313
- jfbRootFnExec(this, 'onCustomEvent')("baseHeader@search", this.keyword);
314
- }
315
- },
316
- toSearch(){
317
- if(this.useSearch === 'N'){
318
- this.$xdUniHelper.navigateTo({
319
- url: this.searchPagePath
320
- })
321
- }
322
- },
323
-
324
- /***
325
- * @description 定位完成事件
326
- * @param city
327
- */
328
- handleCityDone({city}) {
329
- if(JSON.stringify(this.city) === JSON.stringify(city)) return false;
330
- this.city = city;
331
- jfbRootFnExec(this, 'onCustomEvent')("baseHeader@city", city);
332
- },
333
-
334
- handleCityChange() {
335
- this.$xdUniHelper.navigateTo({
336
- url: this.choseCityPath
337
- },true)
338
- },
339
-
340
- handleQuickEntry() {
341
- this.$xdUniHelper.navigateTo({
342
- url: this.quickEntryPath
343
- })
344
- },
345
-
346
- onJfbBack(options) {
347
- if(getCurrentPages().length === 1 ) {
348
- this.$xdUniHelper.redirectTo({
349
- url: this.$settings.index
350
- })
351
- return
352
- }
353
- this.$xdUniHelper.navigateBack();
354
- },
355
- onJfbCustomEvent({action, data}){
356
- if(action === 'baseTfkSearch@keyword'){
357
- this.keyword = data;
358
- }
359
- }
360
- }
361
- }
362
-
363
- </script>
364
-
365
- <style scoped lang="less">
366
- @import "./JfbBaseHeaderColumnLess.less";
367
-
368
- .jfb-base-header-column {
369
- &__body{
370
- height: unit(200, rpx);
371
- .header_wrap{
372
- box-sizing: border-box;
373
- width: 100%;
374
- z-index: 2;
375
- height: unit(200, rpx);
376
- padding: 0 unit(20, rpx) 0 0;
377
- display: flex;
378
- flex-direction: column;
379
- justify-content: space-between;
380
- align-items: stretch;
381
- .header_sec{
382
- display: flex;
383
- align-items: center;
384
- justify-content: space-between;
385
- height: unit(100, rpx);
386
- .site_wrap{
387
- flex: 1;
388
- display: flex;
389
- align-items: center;
390
- }
391
- }
392
- .quick {
393
- display: flex;
394
- align-items: center;
395
- justify-content: center;
396
- padding: 12rpx 24rpx;
397
- border-radius: 36rpx;
398
- margin-left: 16rpx;
399
- }
400
- .quick-button {
401
- display: flex;
402
- align-items: center;
403
- justify-content: center;
404
- padding: 12rpx 24rpx;
405
- border-radius: 36rpx;
406
- margin-left: 16rpx;
407
- line-height: inherit;
408
- }
409
- .quick-button::after{
410
- border: none !important;
411
- }
412
-
413
- &-back {
414
- padding-left: unit(20, rpx);
415
- height: unit(110, rpx);
416
- display: flex;
417
- justify-content: center;
418
- align-items: center;
419
- flex-shrink: 0;
420
- }
421
-
422
- &-city {
423
- height: unit(110, rpx);
424
- // padding-left: unit(20, rpx);
425
- display: flex;
426
- justify-content: center;
427
- align-items: center;
428
- flex-shrink: 0;
429
- }
430
-
431
- .name_logo{
432
- display: flex;
433
- align-items: center;
434
- flex-shrink: 0;
435
- height: unit(60, rpx);
436
- padding-left: unit(20, rpx);
437
-
438
- .logo{
439
- margin-right: unit(20, rpx);
440
- height: 100%;
441
- max-width: 140px;
442
- display: flex;
443
- justify-content: center;
444
- align-items: center;
445
- image{
446
- max-width: 100%;
447
- max-height: 100%;
448
- }
449
- }
450
- .name{
451
- font-size: unit(28, rpx);
452
- }
453
- }
454
-
455
- .search_wrap{
456
- margin-left: unit(20, rpx);
457
- flex: 1;
458
- padding: 0rpx 20rpx;
459
- height: 64rpx;
460
- border-radius: unit(50, rpx);
461
- display: flex;
462
- align-items: center;
463
- .header-city-in{
464
- position: relative;
465
- padding-right: 28rpx;
466
- margin-right: 20rpx;
467
- &::before{
468
- content: " ";
469
- position: absolute;
470
- width: 2rpx;
471
- height: 100%;
472
- background-color: #CCCCCC;
473
- right: -0rpx;
474
- top: 0rpx;
475
- }
476
- ::v-deep .xd-city{
477
- padding: 0;
478
- }
479
- }
480
- .search_input{
481
- flex: 1;
482
- text-align: left;
483
- font-size: unit(28,rpx);
484
- padding-left: 20rpx;
485
- }
486
- .search_placeholder{
487
- flex: 1;
488
- width: 100%;
489
- text-align: left;
490
- font-size: unit(28, rpx);
491
- padding-left: 20rpx;
492
- }
493
- .search_btn_in{
494
- height: 48rpx;
495
- display: flex;
496
- align-items: center;
497
- justify-content: center;
498
- padding: 4rpx 32rpx;
499
- font-size: 28rpx;
500
- box-sizing: border-box;
501
- }
502
- }
503
- .search_btn_out{
504
- height: 64rpx;
505
- margin-left: 4px;
506
- padding: 8rpx 32rpx;
507
- font-size: 28rpx;
508
- box-sizing: border-box;
509
- display: flex;
510
- align-items: center;
511
- justify-content: center;
512
- }
513
- }
514
- }
515
- }
516
- </style>
@@ -1,79 +0,0 @@
1
- /**
2
- * @desc 获取绝对路径完整地址
3
- * @param @path
4
- **/
5
- //例如:https://image.jufubao.cn/20220501010108/image/bg/default_gonghui_bg.png
6
- @basePath: 'business/';
7
- @doMain: '//sandbox-img.jufubao.cn/';
8
-
9
- .getBusinessImageUrl(@path, @size: 'size8') {
10
- @url: "@{doMain}@{basePath}@{path}?x-oss-process=style/@{size}";
11
- background-image: url(@url);
12
- }
13
-
14
- //start
15
- .jfb-base-header-column {
16
- box-sizing: border-box;
17
-
18
- &__body{
19
- position: relative;
20
- overflow: hidden;
21
- z-index: 2
22
- }
23
-
24
- &.editx,&.editx:hover {
25
- position: relative;
26
- min-height: unit(100, rpx);
27
- z-index: 3;
28
- &::after {
29
- border: 2rpx dashed blue;
30
- content: " ";
31
- position: absolute;
32
- top:0;
33
- left:0;
34
- bottom:0;
35
- right:0;
36
- z-index: 4;
37
- cursor: pointer;
38
- }
39
-
40
- }
41
-
42
-
43
- &__edit {
44
- cursor: pointer;
45
- position: absolute;
46
- right: unit(0, rpx);
47
- top: unit(-52, rpx);
48
- height: unit(50, rpx);
49
- line-height: unit(50, rpx);
50
- display: flex;
51
- justify-content: center;
52
- align-items: center;
53
- background: rgba(0, 0, 0, .6);
54
- border-radius: unit(10, rpx);
55
- box-shadow: 0 0 10px rbga(0, 0, 0, 0.3);
56
- color: #fff;
57
- font-size: unit(22, rpx);
58
-
59
- &-icon{
60
- padding: 0 unit(20, rpx);
61
- }
62
-
63
- &.editx {
64
- box-sizing: border-box;
65
-
66
- }
67
- }
68
- }
69
- //end
70
-
71
-
72
- /**notPreview**/
73
- .jfb-base-header-column {
74
- //&:before {
75
- //content: " ";
76
- //display: table;
77
- //}
78
- }
79
- /**endNotPreview**/
@@ -1,30 +0,0 @@
1
- 'use strict';
2
-
3
-
4
- //@AttrImport
5
- import Attr from "./Attr";
6
- //@EndAttrImport
7
-
8
-
9
- export default {
10
- data() {
11
- return {
12
- //#ifdef H5
13
-
14
- //@AttrData
15
- Attr:{}, //对外开发编辑属性
16
- //@EndAttrData
17
-
18
- // #endif
19
- cssRoot: 'jfb-base-header-column'
20
- }
21
- },
22
- created() {
23
-
24
- //@AttrDataCreated
25
- this.Attr = this.$xdUniHelper.customClone(Attr);
26
- //@EndAttrDataCreated
27
-
28
-
29
- },
30
- }
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = {
4
- getCityInfoByLocation: {
5
- "data": {
6
- "province_code": "110000",
7
- "province_name": "北京",
8
- "city_code": "110100",
9
- "city_name": "北京市",
10
- "area_code": "371525",
11
- "area_name": "冠县",
12
- "street_code": "371525002",
13
- "street_name": "崇文街道"
14
- },
15
- "request_id": "6777935abebcfb20"
16
- }
17
- }