jufubao-base 1.0.310 → 1.0.311-beta101
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 +1 -1
- package/src/components/JfbBaseBlock/Attr.js +167 -34
- package/src/components/JfbBaseBlock/JfbBaseBlock.vue +12 -9
- package/src/components/JfbBaseEntry/Attr.js +5 -72
- package/src/components/JfbBaseEntry/JfbBaseEntry.vue +183 -47
- package/src/components/JfbBaseEntry/cusAttr/content.js +77 -0
- package/src/components/JfbBaseEntry/cusAttr/style.js +288 -0
- package/src/components/JfbBaseImageBlock/Attr.js +150 -23
- package/src/components/JfbBaseImageBlock/JfbBaseImageBlock.vue +29 -27
- package/src/components/JfbBaseNotice/Attr.js +5 -512
- package/src/components/JfbBaseNotice/JfbBaseNotice.vue +188 -181
- package/src/components/JfbBaseNotice/cusAttr/content.js +308 -0
- package/src/components/JfbBaseNotice/cusAttr/cssOne.js +395 -0
- package/src/components/JfbBaseNotice/cusAttr/cssThree.js +101 -0
- package/src/components/JfbBaseNotice/cusAttr/cssTwo.js +208 -0
- package/src/components/JfbBaseNotice/cusAttr/style.js +31 -0
- package/src/components/JfbBaseVideo/Attr.js +5 -297
- package/src/components/JfbBaseVideo/JfbBaseVideo.vue +36 -62
- package/src/components/JfbBaseVideo/cusAttr/content.js +236 -0
- package/src/components/JfbBaseVideo/cusAttr/image.js +213 -0
- package/src/components/JfbBaseVideo/cusAttr/style.js +172 -0
|
@@ -18,19 +18,12 @@
|
|
|
18
18
|
<view
|
|
19
19
|
v-if="isShow"
|
|
20
20
|
class="x-video"
|
|
21
|
-
:style="
|
|
22
|
-
backgroundColor:bgColor,
|
|
23
|
-
margin:outMargin,
|
|
24
|
-
borderRadius:radius + 'rpx',
|
|
25
|
-
padding:outPadding,
|
|
26
|
-
width: contentWidth + 'rpx',
|
|
27
|
-
height:contentHeight + 'rpx'
|
|
28
|
-
}"
|
|
21
|
+
:style="[boxStyleComp]"
|
|
29
22
|
>
|
|
30
23
|
<xd-video
|
|
31
|
-
v-if="
|
|
24
|
+
v-if="!['',null].includes(video)"
|
|
32
25
|
:key="videoKey"
|
|
33
|
-
:poster="
|
|
26
|
+
:poster="videoConf"
|
|
34
27
|
:video="video"
|
|
35
28
|
></xd-video>
|
|
36
29
|
<view class="not-video" v-if="isPreview && video === ''">
|
|
@@ -47,7 +40,7 @@
|
|
|
47
40
|
import JfbBaseVideoMixin from "./JfbBaseVideoMixin";
|
|
48
41
|
import componentsMixins from "@/mixins/componentsMixins";
|
|
49
42
|
import extsMixins from "@/mixins/extsMixins"
|
|
50
|
-
import {
|
|
43
|
+
import {gCPVal } from "@/utils/xd.base";
|
|
51
44
|
import XdVideo from "./XdVideo.vue";
|
|
52
45
|
|
|
53
46
|
|
|
@@ -59,60 +52,46 @@
|
|
|
59
52
|
mixins: [componentsMixins,extsMixins,JfbBaseVideoMixin],
|
|
60
53
|
data() {
|
|
61
54
|
return {
|
|
55
|
+
closeMask: true,
|
|
62
56
|
isPreview: false,
|
|
63
57
|
page_size: 1,
|
|
64
|
-
options:{},
|
|
65
58
|
|
|
66
|
-
|
|
67
|
-
video: null,
|
|
68
|
-
|
|
59
|
+
//视频配置
|
|
60
|
+
video: null, //视频内容
|
|
61
|
+
videoKey : Date.now(),
|
|
62
|
+
videoConf: null, //视频配置
|
|
63
|
+
|
|
64
|
+
//样式
|
|
69
65
|
margin:{},
|
|
70
66
|
padding:{},
|
|
71
|
-
height:
|
|
72
|
-
width:
|
|
73
|
-
bgColor:'',
|
|
67
|
+
height:388,
|
|
68
|
+
width:690,
|
|
69
|
+
bgColor:'rgba(0,0,0,0)',
|
|
74
70
|
radius:0,
|
|
75
|
-
videoKey : Date.now(),
|
|
76
71
|
}
|
|
77
72
|
},
|
|
78
73
|
computed: {
|
|
74
|
+
boxStyleComp(){
|
|
75
|
+
return {
|
|
76
|
+
backgroundColor: this.bgColor,
|
|
77
|
+
borderRadius: this.radius + 'rpx',
|
|
78
|
+
margin: this.getMarginAndPadding(this.margin, 0),
|
|
79
|
+
padding: this.getMarginAndPadding(this.padding, 0),
|
|
80
|
+
width: this.contentWidth + 'rpx',
|
|
81
|
+
height: this.contentHeight + 'rpx'
|
|
82
|
+
}
|
|
83
|
+
},
|
|
79
84
|
isShow(){
|
|
80
85
|
if(this.isPreview) return true;
|
|
81
86
|
else return this.video
|
|
82
87
|
},
|
|
83
|
-
iconFont(){
|
|
84
|
-
if(this.autoplay === 'N') return 'iconplayright'
|
|
85
|
-
if(this.autoplay === 'E') return 'iconshibai';
|
|
86
|
-
if(this.autoplay === 'R') return 'iconplayreplay';
|
|
87
|
-
},
|
|
88
88
|
contentWidth(){
|
|
89
|
-
let
|
|
90
|
-
let
|
|
91
|
-
|
|
92
|
-
//if(this.isPreview) border = 2;
|
|
93
|
-
return this.width - (padding + margin + border);
|
|
89
|
+
let marginRL = this.getPMValue(this.margin,'RL',0);
|
|
90
|
+
let paddingRL = this.getPMValue(this.padding,'RL',0);
|
|
91
|
+
return 750 - (marginRL + paddingRL)
|
|
94
92
|
},
|
|
95
93
|
contentHeight(){
|
|
96
|
-
|
|
97
|
-
let padding = Number(this.checkValue(this.padding.left, 0)) + Number(this.checkValue(this.padding.right, 0));
|
|
98
|
-
let border = 0;
|
|
99
|
-
//if(this.isPreview) border = 2;
|
|
100
|
-
let winWidth = this.width - (padding + margin + border);
|
|
101
|
-
return winWidth * this.height/this.width;
|
|
102
|
-
},
|
|
103
|
-
outMargin(){
|
|
104
|
-
let str = `${this.checkValue(this.margin.top, 0)}rpx`;
|
|
105
|
-
str = `${str} ${this.checkValue(this.margin.right, 0)}rpx`;
|
|
106
|
-
str = `${str} ${this.checkValue(this.margin.bottom, 0)}rpx`;
|
|
107
|
-
str = `${str} ${this.checkValue(this.margin.left, 0)}rpx`;
|
|
108
|
-
return str
|
|
109
|
-
},
|
|
110
|
-
outPadding(){
|
|
111
|
-
let str = `${this.checkValue(this.padding.top, 0)}rpx`;
|
|
112
|
-
str = `${str} ${this.checkValue(this.padding.right, 0)}rpx`;
|
|
113
|
-
str = `${str} ${this.checkValue(this.padding.bottom, 0)}rpx`;
|
|
114
|
-
str = `${str} ${this.checkValue(this.padding.left, 0)}rpx`;
|
|
115
|
-
return str
|
|
94
|
+
return (this.height*this.contentWidth)/this.width;
|
|
116
95
|
},
|
|
117
96
|
getVideoSrc(){
|
|
118
97
|
let width = Math.floor(this.contentWidth * this.$rpxNum);
|
|
@@ -125,7 +104,7 @@
|
|
|
125
104
|
if(JSON.stringify(value) === JSON.stringify(oldValue)) return;
|
|
126
105
|
if (this.$configProject['isPreview']) {
|
|
127
106
|
this.init(value);
|
|
128
|
-
this.onJfbLoad(
|
|
107
|
+
this.onJfbLoad()
|
|
129
108
|
}
|
|
130
109
|
}
|
|
131
110
|
},
|
|
@@ -140,19 +119,14 @@
|
|
|
140
119
|
* @param container {object} 业务组件对象自己
|
|
141
120
|
*/
|
|
142
121
|
init(container) {
|
|
143
|
-
this.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
this.margin = getContainerPropsValue(container, 'content.margin', {});
|
|
149
|
-
this.padding = getContainerPropsValue(container, 'content.padding', {});
|
|
150
|
-
this.radius = getContainerPropsValue(container, 'content.radius', 0);
|
|
151
|
-
this.bgColor = getContainerPropsValue(container, 'content.bgColor', 'rgba(0,0,0,0)');
|
|
122
|
+
this.videoConf = gCPVal(container, 'video', { size: {width:690, height: 388}, type: '1'});
|
|
123
|
+
this.radius = gCPVal(container, 'radius', [this.gStyleValue.radius,0],{sKey: 'radiusStatus', fields: ['radius']})||0;
|
|
124
|
+
this.bgColor = gCPVal(container, 'bgColor', '#fff',{sKey: 'bgColorStatus', fields: ['bgColor']});
|
|
125
|
+
this.margin = gCPVal(container, 'margin', [0],{sKey: 'marginStatus', fields: ['margin'], isPMR: true});
|
|
126
|
+
this.padding = gCPVal(container, 'padding', [0],{sKey: 'paddingStatus', fields: ['padding'], isPMR: true});
|
|
152
127
|
},
|
|
153
128
|
|
|
154
|
-
onJfbLoad(
|
|
155
|
-
this.options = options;
|
|
129
|
+
onJfbLoad() {
|
|
156
130
|
jfbRootExec('getListVideoContent', {
|
|
157
131
|
vm: this,
|
|
158
132
|
data: {
|
|
@@ -174,7 +148,7 @@
|
|
|
174
148
|
},
|
|
175
149
|
|
|
176
150
|
onJfbUpdate() {
|
|
177
|
-
this.onJfbLoad(
|
|
151
|
+
this.onJfbLoad();
|
|
178
152
|
},
|
|
179
153
|
|
|
180
154
|
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import {
|
|
3
|
+
dataVal ,
|
|
4
|
+
statusShow,
|
|
5
|
+
statusDataVal,
|
|
6
|
+
customVal,
|
|
7
|
+
cusDisabled ,
|
|
8
|
+
getCustomAttr,
|
|
9
|
+
isArray,
|
|
10
|
+
isObject
|
|
11
|
+
} from "@/utils/AttrTools";
|
|
12
|
+
|
|
13
|
+
export default (data, gValue,gColor,oldData)=>{
|
|
14
|
+
let video = { size: {width:690, height: 388}, type:'1', position: {}};
|
|
15
|
+
return[
|
|
16
|
+
{
|
|
17
|
+
ele: 'title',
|
|
18
|
+
label: '基础',
|
|
19
|
+
size: 'small',
|
|
20
|
+
groupKey:'content',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: '组件样式',
|
|
24
|
+
ele: 'xd-site-poster',
|
|
25
|
+
valueKey: 'video',
|
|
26
|
+
groupKey:'content',
|
|
27
|
+
className: 'input100',
|
|
28
|
+
value: video,
|
|
29
|
+
labelInline:true,
|
|
30
|
+
setting: {
|
|
31
|
+
count: 1,
|
|
32
|
+
scene: {label: '视频', value: 'video'},
|
|
33
|
+
sizeDisabled: {
|
|
34
|
+
wDisabled:true,
|
|
35
|
+
hDisabled: false,
|
|
36
|
+
},
|
|
37
|
+
isNew: 'video',
|
|
38
|
+
},
|
|
39
|
+
handleCustom({action, data}) {
|
|
40
|
+
//设置场景参数
|
|
41
|
+
if(data) {
|
|
42
|
+
data.params = Object.assign({}, {scene: 'video'}, data.params || {})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//获取显示内容
|
|
46
|
+
if (action === 'screenList') {
|
|
47
|
+
XdBus.getParentApi('getOptionsSettingList')({setting_id: 'editx_base_ad_split_screen'})
|
|
48
|
+
.then(res => {
|
|
49
|
+
data.cb(res['list'])
|
|
50
|
+
})
|
|
51
|
+
.catch(error => {
|
|
52
|
+
console.error(error);
|
|
53
|
+
});
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//获取返回参数(广告位高度必选项)
|
|
58
|
+
if (action === 'getPosterInfo') {
|
|
59
|
+
XdBus.getParentApi('cmsGetPublishEditxContent')(data.params)
|
|
60
|
+
.then(res => {
|
|
61
|
+
data.cb({list: res.list, selectId: res.selected})
|
|
62
|
+
})
|
|
63
|
+
.catch(error => {
|
|
64
|
+
console.error(error);
|
|
65
|
+
});
|
|
66
|
+
return
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//使用内容分类
|
|
70
|
+
if (action === 'cmsPublishEditxContent') {
|
|
71
|
+
XdBus.getParentApi('cmsPublishEditxContent')(data.params)
|
|
72
|
+
.then(res => {
|
|
73
|
+
data.cb(res)
|
|
74
|
+
})
|
|
75
|
+
.catch(error => {
|
|
76
|
+
console.error(error);
|
|
77
|
+
});
|
|
78
|
+
return
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let loading = XdBus.getParentApi('loading')({});
|
|
82
|
+
//位置列表
|
|
83
|
+
if (action === 'getListPostion') {
|
|
84
|
+
XdBus.getParentApi('getListPosterPosition')(data.params)
|
|
85
|
+
.then(res => {
|
|
86
|
+
loading.close();
|
|
87
|
+
data.cb(res)
|
|
88
|
+
})
|
|
89
|
+
.catch(error => {
|
|
90
|
+
loading.close();
|
|
91
|
+
console.error(error);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//位置创建
|
|
96
|
+
if (action === 'addPostion') {
|
|
97
|
+
XdBus.getParentApi('addPosterPosition')(data.params)
|
|
98
|
+
.then(res => {
|
|
99
|
+
loading.close();
|
|
100
|
+
data.cb(true)
|
|
101
|
+
})
|
|
102
|
+
.catch(error => {
|
|
103
|
+
console.error(error);
|
|
104
|
+
loading.close();
|
|
105
|
+
data.cb(false)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//位置编辑
|
|
110
|
+
if (action === 'editPostion') {
|
|
111
|
+
XdBus.getParentApi('updatePosterPosition')(data.params)
|
|
112
|
+
.then(res => {
|
|
113
|
+
loading.close();
|
|
114
|
+
data.cb(true)
|
|
115
|
+
})
|
|
116
|
+
.catch(error => {
|
|
117
|
+
console.error(error);
|
|
118
|
+
loading.close();
|
|
119
|
+
data.cb(false)
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
//位置删除
|
|
124
|
+
if (action === 'deleltePostion') {
|
|
125
|
+
XdBus.getParentApi('deletePosterPosition')(data.params)
|
|
126
|
+
.then(res => {
|
|
127
|
+
loading.close();
|
|
128
|
+
data.cb(true)
|
|
129
|
+
})
|
|
130
|
+
.catch(error => {
|
|
131
|
+
console.error(error);
|
|
132
|
+
loading.close();
|
|
133
|
+
data.cb(false)
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
//获取广告位内容列表
|
|
138
|
+
if (action === 'getListContent') {
|
|
139
|
+
XdBus.getParentApi('getListPosterContent')(data.params)
|
|
140
|
+
.then(res => {
|
|
141
|
+
loading.close();
|
|
142
|
+
data.cb(res)
|
|
143
|
+
})
|
|
144
|
+
.catch(error => {
|
|
145
|
+
loading.close();
|
|
146
|
+
console.error(error);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//广告内容创建
|
|
151
|
+
if (action === 'addContent') {
|
|
152
|
+
XdBus.getParentApi('addPosterContent')(data.params)
|
|
153
|
+
.then(res => {
|
|
154
|
+
loading.close();
|
|
155
|
+
data.cb(true)
|
|
156
|
+
})
|
|
157
|
+
.catch(error => {
|
|
158
|
+
console.error(error);
|
|
159
|
+
loading.close();
|
|
160
|
+
data.cb(false)
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//广告内容编辑
|
|
165
|
+
if (action === 'editContent') {
|
|
166
|
+
XdBus.getParentApi('updatePosterContent')(data.params)
|
|
167
|
+
.then(res => {
|
|
168
|
+
loading.close();
|
|
169
|
+
data.cb(true)
|
|
170
|
+
})
|
|
171
|
+
.catch(error => {
|
|
172
|
+
console.error(error);
|
|
173
|
+
loading.close();
|
|
174
|
+
data.cb(false)
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
//广告内容删除
|
|
179
|
+
if (action === 'deleteContent') {
|
|
180
|
+
XdBus.getParentApi('deletePosterContent')(data.params)
|
|
181
|
+
.then(res => {
|
|
182
|
+
loading.close();
|
|
183
|
+
data.cb(true)
|
|
184
|
+
})
|
|
185
|
+
.catch(error => {
|
|
186
|
+
console.error(error);
|
|
187
|
+
loading.close();
|
|
188
|
+
data.cb(false)
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
//获取广告内容跳转地址类型
|
|
193
|
+
if (action === 'jumpPosterContentType') {
|
|
194
|
+
XdBus.getParentApi('getOptionsSettingList')({setting_id: "cms_setting"})
|
|
195
|
+
.then(res => {
|
|
196
|
+
loading.close();
|
|
197
|
+
data.cb(res['redirect_type'])
|
|
198
|
+
})
|
|
199
|
+
.catch(error => {
|
|
200
|
+
loading.close();
|
|
201
|
+
console.error(error);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
//发布
|
|
206
|
+
if (action === 'publish') {
|
|
207
|
+
console.log('publish', data.params)
|
|
208
|
+
XdBus.getParentApi('cmsPublishContent')(data.params)
|
|
209
|
+
.then(res => {
|
|
210
|
+
loading.close();
|
|
211
|
+
data.cb(res)
|
|
212
|
+
})
|
|
213
|
+
.catch(error => {
|
|
214
|
+
loading.close();
|
|
215
|
+
console.error(error);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
//获取站内页面地址
|
|
220
|
+
if (action === 'router') {
|
|
221
|
+
loading.close()
|
|
222
|
+
return XdBus.getParentApi('getPagesTree');
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
//通知页面进行刷新
|
|
227
|
+
if(action === 'update') {
|
|
228
|
+
XdBus.getParentApi('getXdBusUpdateView')('onUpdateView', {});
|
|
229
|
+
loading.close()
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
notice:`建议尺寸:${video.size.width}*${video.size.height}`,
|
|
233
|
+
inline: false,
|
|
234
|
+
},
|
|
235
|
+
]
|
|
236
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import {
|
|
3
|
+
dataVal,
|
|
4
|
+
statusShow,
|
|
5
|
+
getPMarginRLTB,
|
|
6
|
+
getAttrData,
|
|
7
|
+
getBorOrShaHeight,
|
|
8
|
+
cRaBorShadow
|
|
9
|
+
} from "@/utils/AttrTools";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export default (data, gValue, gColor, oldData ,isBody=false)=> {
|
|
13
|
+
let listLayout = 'slide';
|
|
14
|
+
if(data['listLayout'] !== undefined) listLayout = data['listLayout'];
|
|
15
|
+
|
|
16
|
+
let listRow = 1;
|
|
17
|
+
let enterMode = 'round';
|
|
18
|
+
let carouselHeight = 0; //滚动高度
|
|
19
|
+
if(listLayout === 'carousel') {
|
|
20
|
+
listRow = 2;
|
|
21
|
+
if(data['listRow'] !== undefined) listRow = data['listRow'];
|
|
22
|
+
if(data['enterMode'] !== undefined) enterMode = data['enterMode'];
|
|
23
|
+
if(enterMode === 'normal') carouselHeight = 10;
|
|
24
|
+
else carouselHeight = 46;
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//品牌内容显示
|
|
29
|
+
let itemHeight = 0, bodyHeight = 0, bodyWidth = 0, tabHeight = 56;
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
//滑动效果
|
|
33
|
+
if(listLayout === 'slide') {
|
|
34
|
+
let text = 36;
|
|
35
|
+
let image = 120;
|
|
36
|
+
itemHeight = text + image + getAttrData(data,'imageText', [16,44],{
|
|
37
|
+
sKey: 'imageTextStatus',
|
|
38
|
+
fields:['imageText'],
|
|
39
|
+
isData: true,
|
|
40
|
+
gValue
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//轮廓外边距
|
|
45
|
+
let defMargin = {top:0,left:16,right:16, bottom:16},oldDefMargin = {top:0,left:0,right:0, bottom:20};
|
|
46
|
+
let bodyMargin = getAttrData(data,'margin', [defMargin,oldDefMargin],{
|
|
47
|
+
sKey: 'marginStatus',
|
|
48
|
+
fields:['margin'],
|
|
49
|
+
isPM:true,
|
|
50
|
+
isData: true,
|
|
51
|
+
gValue
|
|
52
|
+
});
|
|
53
|
+
bodyWidth = 750 - getPMarginRLTB(bodyMargin,'RL', 0);
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
//轮廓内填充
|
|
57
|
+
let defBgImagePadding = 0, oldDefBgImagePadding = 32;
|
|
58
|
+
if(listLayout === 'carousel') {
|
|
59
|
+
defBgImagePadding = 0;
|
|
60
|
+
oldDefBgImagePadding = 0;
|
|
61
|
+
}
|
|
62
|
+
let bodyPadding = getAttrData(data,'bgImagePadding', [defBgImagePadding,oldDefBgImagePadding],{
|
|
63
|
+
sKey: 'bgImagePaddingStatus',
|
|
64
|
+
fields:['bgImagePadding'],
|
|
65
|
+
isPM:true,
|
|
66
|
+
isData: true,
|
|
67
|
+
gValue
|
|
68
|
+
});
|
|
69
|
+
let bodyPaddingTB = getPMarginRLTB(bodyPadding,'TB', 0);
|
|
70
|
+
if(isBody === false) bodyWidth = bodyWidth - getPMarginRLTB(bodyPadding,'RL', 0);
|
|
71
|
+
|
|
72
|
+
//内容区域投影
|
|
73
|
+
let itemShadow = cRaBorShadow( data, 'itemShadow', {dValue:'N', old:['is_shadow','is_shadow_w','is_shadow_bg']},gValue);
|
|
74
|
+
let itemShadowWidth = getBorOrShaHeight(itemShadow,{width:0, type:'N'});
|
|
75
|
+
|
|
76
|
+
//内容区域边距
|
|
77
|
+
let defItemPadding = {top:16,left:16,right:0, bottom:16}, oldDefItemPadding = {top:32,left:0,right:0, bottom:0};
|
|
78
|
+
if(listLayout === 'carousel') {
|
|
79
|
+
defItemPadding = 16;
|
|
80
|
+
oldDefItemPadding = 20;
|
|
81
|
+
}
|
|
82
|
+
let itemPadding = getAttrData(data,'itemPadding', [defItemPadding,oldDefItemPadding],{
|
|
83
|
+
sKey: 'itemPaddingStatus',
|
|
84
|
+
fields:['itemPadding'],
|
|
85
|
+
isPM:true,
|
|
86
|
+
isData: true,
|
|
87
|
+
gValue
|
|
88
|
+
});
|
|
89
|
+
itemPadding.top = Math.max(itemPadding.top,itemShadowWidth);
|
|
90
|
+
itemPadding.bottom = Math.max(itemPadding.bottom,itemShadowWidth);
|
|
91
|
+
itemPadding.left = Math.max(itemPadding.left,itemShadowWidth);
|
|
92
|
+
itemPadding.right = Math.max(itemPadding.right,itemShadowWidth);
|
|
93
|
+
let itemPaddingTB = getPMarginRLTB(itemPadding,'TB', 0);
|
|
94
|
+
|
|
95
|
+
//品牌填充
|
|
96
|
+
let defContPadding = 16,defOldContPadding = {top:32, left:32, right:32, bottom:16};
|
|
97
|
+
if(listLayout === 'carousel') {
|
|
98
|
+
defContPadding = 0;
|
|
99
|
+
defOldContPadding = 0;
|
|
100
|
+
}
|
|
101
|
+
let contPadding = getAttrData(data,'contPadding', [defContPadding,defOldContPadding],{
|
|
102
|
+
sKey: 'contPaddingStatus',
|
|
103
|
+
fields:['contPadding'],
|
|
104
|
+
isPM:true,
|
|
105
|
+
isData: true,
|
|
106
|
+
gValue
|
|
107
|
+
});
|
|
108
|
+
if(listLayout === 'carousel') contPadding = {top:0, bottom:0, left: 0, right:0}
|
|
109
|
+
let contPaddingTB = getPMarginRLTB(contPadding,'TB', 0);
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
//品牌边框
|
|
113
|
+
let tabBorder = cRaBorShadow( data, 'tabBorder', {dValue:'N'},gValue);
|
|
114
|
+
let tabBorderWidth = getBorOrShaHeight(tabBorder,{width:0, type:'N'}) * 2;
|
|
115
|
+
|
|
116
|
+
//标题边距
|
|
117
|
+
let tabPadding = getAttrData(data,'tabPadding', [24,{top:0, left:0, right:0, bottom:0}],{
|
|
118
|
+
sKey: 'tabPaddingStatus',
|
|
119
|
+
fields:['tabPadding'],
|
|
120
|
+
isPM:true,
|
|
121
|
+
isData: true,
|
|
122
|
+
gValue
|
|
123
|
+
});
|
|
124
|
+
let tabPaddingTB = getPMarginRLTB(tabPadding,'TB', 0);
|
|
125
|
+
|
|
126
|
+
//标题描边
|
|
127
|
+
let itemBorder = cRaBorShadow( data, 'itemBorder', {dValue:'D'},gValue);
|
|
128
|
+
let itemBorderWidth = getBorOrShaHeight(itemBorder,{width:2, type:'Y'}) * 2;
|
|
129
|
+
|
|
130
|
+
//间距设置
|
|
131
|
+
let spacing = listLayout === 'slide'?16:24;
|
|
132
|
+
let itemSpacing = getAttrData(data,'padding', [spacing,32],{
|
|
133
|
+
sKey: 'paddingStatus',
|
|
134
|
+
fields:['itemSpacing'],
|
|
135
|
+
isData: true,
|
|
136
|
+
gValue
|
|
137
|
+
});
|
|
138
|
+
let rowSpacing = getAttrData(data,'rowSpacing', [spacing,10],{
|
|
139
|
+
sKey: 'paddingStatus',
|
|
140
|
+
fields:['rowSpacing'],
|
|
141
|
+
isData: true,
|
|
142
|
+
gValue
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
//轮播图
|
|
147
|
+
if(listLayout === 'carousel'){
|
|
148
|
+
const cell = 5;
|
|
149
|
+
const textHeight = 40; //品牌标题高度
|
|
150
|
+
const bodyPaddingRL = getPMarginRLTB(bodyPadding,'RL', 0);
|
|
151
|
+
const bodyMarginRL = getPMarginRLTB(bodyMargin,'RL', 0);
|
|
152
|
+
const itemPaddingRL = getPMarginRLTB(itemPadding,'RL', 0);
|
|
153
|
+
const cellWidth = itemSpacing * (cell - 1);
|
|
154
|
+
const rowWidth = rowSpacing * (listRow - 1);
|
|
155
|
+
let itemWidth = 750 - bodyPaddingRL - bodyMarginRL - itemPaddingRL - cellWidth - itemBorderWidth * (cell - 1);
|
|
156
|
+
itemWidth = itemWidth/5;
|
|
157
|
+
const textMarginTop = 8;//标题间距
|
|
158
|
+
itemHeight = (itemWidth + textHeight + textMarginTop) * listRow + rowWidth;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
//内容区域高度
|
|
162
|
+
let contentHeight = carouselHeight + itemHeight + itemPaddingTB + contPaddingTB + itemBorderWidth * listRow;
|
|
163
|
+
//标题区域高度
|
|
164
|
+
let titleHeight = tabHeight + tabPaddingTB + tabBorderWidth + bodyPaddingTB;
|
|
165
|
+
|
|
166
|
+
if(isBody) bodyHeight = contentHeight + titleHeight;
|
|
167
|
+
else bodyHeight = contentHeight;
|
|
168
|
+
|
|
169
|
+
bodyHeight = Math.floor(bodyHeight);
|
|
170
|
+
bodyWidth = Math.floor(bodyWidth);
|
|
171
|
+
|
|
172
|
+
return [
|
|
173
|
+
isBody === true && {
|
|
174
|
+
label: '背景图',
|
|
175
|
+
ele: 'xd-upload',
|
|
176
|
+
valueKey: 'bgImage',
|
|
177
|
+
defaultValue: dataVal({data, key:'bgImage', dValue: {}, gValue}),
|
|
178
|
+
value: dataVal({data, key:'bgImage', dValue:{}, gValue}),
|
|
179
|
+
hidden: !statusShow({data, key: 'outBgColorStatus', fields:['outBgColor','bgImage'], gValue}),
|
|
180
|
+
labelInline:true,
|
|
181
|
+
slot: true,
|
|
182
|
+
tipsformet: `上传文件格式:@imageType@,不超过@size@MB.,建议尺寸为:<span style="color:red">${bodyWidth}*${bodyHeight}</span>像素。`,
|
|
183
|
+
type: ['jpg', 'png', 'jpeg'],
|
|
184
|
+
styleType: 'one',
|
|
185
|
+
uploadType: 'aliyun',
|
|
186
|
+
size: 2,
|
|
187
|
+
action: 'aliyun',
|
|
188
|
+
oneWidth: 275,
|
|
189
|
+
oneHeight: 275 * (bodyHeight)/ bodyWidth,
|
|
190
|
+
groupKey: 'style'
|
|
191
|
+
},
|
|
192
|
+
isBody === false && {
|
|
193
|
+
label: '背景图',
|
|
194
|
+
ele: 'xd-upload',
|
|
195
|
+
valueKey: 'contBgImage',
|
|
196
|
+
defaultValue: dataVal({data, key:'contBgImage', dValue: {}, gValue}),
|
|
197
|
+
value: dataVal({data, key:'contBgImage', dValue:{}, gValue}),
|
|
198
|
+
hidden: !statusShow({data, key: 'contBgColorStatus', fields:['contBgColor','contBgImage'], gValue}),
|
|
199
|
+
labelInline:true,
|
|
200
|
+
slot: true,
|
|
201
|
+
tipsformet: `上传文件格式:@imageType@,不超过@size@MB.,建议尺寸为:<span style="color:red">${bodyWidth}*${bodyHeight}</span>像素。`,
|
|
202
|
+
type: ['jpg', 'png', 'jpeg'],
|
|
203
|
+
styleType: 'one',
|
|
204
|
+
uploadType: 'aliyun',
|
|
205
|
+
size: 2,
|
|
206
|
+
action: 'aliyun',
|
|
207
|
+
oneWidth: 275,
|
|
208
|
+
oneHeight: 275 * (bodyHeight)/ bodyWidth,
|
|
209
|
+
groupKey: 'style'
|
|
210
|
+
}
|
|
211
|
+
].filter(i=>i);
|
|
212
|
+
}
|
|
213
|
+
|