Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
0b0ba1f3
authored
Nov 05, 2023
by
owen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
营销:优化装修编辑器样式
parent
984351fb
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
46 deletions
+55
-46
src/components/DiyEditor/components/ComponentContainer.vue
+5
-4
src/components/DiyEditor/components/ComponentLibrary.vue
+1
-0
src/components/DiyEditor/components/mobile/SearchBar/index.vue
+0
-1
src/components/DiyEditor/index.vue
+49
-41
No files found.
src/components/DiyEditor/components/ComponentContainer.vue
View file @
0b0ba1f3
<
template
>
<
template
>
<div
<div
:style=
"
{
:style=
"
{
...style,
...style
background: property.bgType === 'color' ? property.bgColor : `url(${property.bgImg})`
}"
}"
>
>
<slot></slot>
<slot></slot>
...
@@ -18,7 +17,7 @@ import { ComponentStyle } from '@/components/DiyEditor/util'
...
@@ -18,7 +17,7 @@ import { ComponentStyle } from '@/components/DiyEditor/util'
*/
*/
defineOptions
({
name
:
'ComponentContainer'
})
defineOptions
({
name
:
'ComponentContainer'
})
const
props
=
defineProps
<
{
property
:
ComponentStyle
}
>
()
const
props
=
defineProps
<
{
property
:
ComponentStyle
|
undefined
}
>
()
const
style
=
computed
(()
=>
{
const
style
=
computed
(()
=>
{
if
(
!
props
.
property
)
{
if
(
!
props
.
property
)
{
...
@@ -37,7 +36,9 @@ const style = computed(() => {
...
@@ -37,7 +36,9 @@ const style = computed(() => {
borderTopRightRadius
:
`
${
props
.
property
.
borderTopRightRadius
||
0
}
px`
,
borderTopRightRadius
:
`
${
props
.
property
.
borderTopRightRadius
||
0
}
px`
,
borderBottomRightRadius
:
`
${
props
.
property
.
borderBottomRightRadius
||
0
}
px`
,
borderBottomRightRadius
:
`
${
props
.
property
.
borderBottomRightRadius
||
0
}
px`
,
borderBottomLeftRadius
:
`
${
props
.
property
.
borderBottomLeftRadius
||
0
}
px`
,
borderBottomLeftRadius
:
`
${
props
.
property
.
borderBottomLeftRadius
||
0
}
px`
,
overflow
:
'hidden'
overflow
:
'hidden'
,
background
:
props
.
property
.
bgType
===
'color'
?
props
.
property
.
bgColor
:
`url(
${
props
.
property
.
bgImg
}
)`
}
}
})
})
</
script
>
</
script
>
...
...
src/components/DiyEditor/components/ComponentLibrary.vue
View file @
0b0ba1f3
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
<draggable
<draggable
class=
"component-container"
class=
"component-container"
ghost-class=
"draggable-ghost"
ghost-class=
"draggable-ghost"
item-key=
"index"
:list=
"group.components"
:list=
"group.components"
:sort=
"false"
:sort=
"false"
:group=
"
{ name: 'component', pull: 'clone', put: false }"
:group=
"
{ name: 'component', pull: 'clone', put: false }"
...
...
src/components/DiyEditor/components/mobile/SearchBar/index.vue
View file @
0b0ba1f3
...
@@ -42,7 +42,6 @@ defineProps<{ property: SearchProperty }>()
...
@@ -42,7 +42,6 @@ defineProps<{ property: SearchProperty }>()
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.search-bar
{
.search-bar
{
width
:
375px
;
/* 搜索框 */
/* 搜索框 */
.inner
{
.inner
{
position
:
relative
;
position
:
relative
;
...
...
src/components/DiyEditor/index.vue
View file @
0b0ba1f3
...
@@ -33,7 +33,6 @@
...
@@ -33,7 +33,6 @@
<ComponentLibrary
ref=
"componentLibrary"
:list=
"libs"
v-if=
"libs && libs.length > 0"
/>
<ComponentLibrary
ref=
"componentLibrary"
:list=
"libs"
v-if=
"libs && libs.length > 0"
/>
<!-- 中心设计区域 -->
<!-- 中心设计区域 -->
<div
class=
"editor-center page-prop-area"
@
click=
"handlePageSelected"
>
<div
class=
"editor-center page-prop-area"
@
click=
"handlePageSelected"
>
<div
class=
"editor-design"
>
<!-- 手机顶部 -->
<!-- 手机顶部 -->
<div
class=
"editor-design-top"
>
<div
class=
"editor-design-top"
>
<!-- 手机顶部状态栏 -->
<!-- 手机顶部状态栏 -->
...
@@ -51,10 +50,11 @@
...
@@ -51,10 +50,11 @@
/>
/>
</div>
</div>
<!-- 手机页面编辑区域 -->
<!-- 手机页面编辑区域 -->
<el-scrollbar
class=
"editor-design-center"
height=
"100%"
view-class=
"page-prop-area"
>
<el-scrollbar
<div
height=
"100%"
class=
"phone-container"
wrap-class=
"editor-design-center page-prop-area"
:style=
"
{
view-class=
"phone-container"
:view-style=
"
{
backgroundColor: pageConfigComponent.property.backgroundColor,
backgroundColor: pageConfigComponent.property.backgroundColor,
backgroundImage: `url(${pageConfigComponent.property.backgroundImage})`
backgroundImage: `url(${pageConfigComponent.property.backgroundImage})`
}"
}"
...
@@ -71,21 +71,22 @@
...
@@ -71,21 +71,22 @@
@
change=
"handleComponentChange"
@
change=
"handleComponentChange"
>
>
<template
#
item=
"
{ element, index }">
<template
#
item=
"
{ element, index }">
<div
class=
"component-container"
@
click=
"handleComponentSelected(element, index)"
>
<div
class=
"component"
@
click=
"handleComponentSelected(element, index)"
>
<!-- 左侧组件名 -->
<div
:class=
"['component-name',
{ active: selectedComponentIndex === index }]"
v-if="element.name"
>
{{
element
.
name
}}
</div>
<!-- 组件内容区 -->
<!-- 组件内容区 -->
<div
:class=
"['component',
{ active: selectedComponentIndex === index }]
">
<ComponentContainer
:property=
"element.property.style
"
>
<component
<component
:is=
"element.id"
:is=
"element.id"
:property=
"element.property"
:property=
"element.property"
:data-type=
"element.id"
:data-type=
"element.id"
/>
/>
</ComponentContainer>
<div
:class=
"['component-wrap',
{ active: selectedComponentIndex === index }]">
<!-- 左侧组件名 -->
<div
:class=
"['component-name',
{ active: selectedComponentIndex === index }]"
v-if="element.name"
>
{{
element
.
name
}}
</div>
</div>
<!-- 左侧:组件操作工具栏 -->
<!-- 左侧:组件操作工具栏 -->
<div
<div
...
@@ -122,9 +123,9 @@
...
@@ -122,9 +123,9 @@
</el-button-group>
</el-button-group>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
</draggable>
</draggable>
</div>
</el-scrollbar>
</el-scrollbar>
<!-- 手机底部导航 -->
<!-- 手机底部导航 -->
<div
<div
...
@@ -139,7 +140,6 @@
...
@@ -139,7 +140,6 @@
<TabBar
:property=
"tabBarComponent.property"
@
click=
"handleTabBarSelected"
/>
<TabBar
:property=
"tabBarComponent.property"
@
click=
"handleTabBarSelected"
/>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧属性面板 -->
<!-- 右侧属性面板 -->
<el-aside
class=
"editor-right"
width=
"350px"
v-if=
"selectedComponent?.property"
>
<el-aside
class=
"editor-right"
width=
"350px"
v-if=
"selectedComponent?.property"
>
<el-card
<el-card
...
@@ -383,6 +383,7 @@ onMounted(() => setDefaultSelectedComponent())
...
@@ -383,6 +383,7 @@ onMounted(() => setDefaultSelectedComponent())
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
/* 手机宽度 */
/* 手机宽度 */
$
phone-width
:
375px
;
$
phone-width
:
375px
;
$
toolbar-height
:
42px
;
/* 根节点样式 */
/* 根节点样式 */
.editor
{
.editor
{
height
:
100%
;
height
:
100%
;
...
@@ -394,7 +395,7 @@ $phone-width: 375px;
...
@@ -394,7 +395,7 @@ $phone-width: 375px;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
space-between
;
height
:
auto
;
height
:
$
toolbar-height
;
padding
:
0
;
padding
:
0
;
border-bottom
:
solid
1px
var
(
--el-border-color
);
border-bottom
:
solid
1px
var
(
--el-border-color
);
background-color
:
var
(
--el-bg-color
);
background-color
:
var
(
--el-bg-color
);
...
@@ -416,12 +417,14 @@ $phone-width: 375px;
...
@@ -416,12 +417,14 @@ $phone-width: 375px;
/* 中心操作区 */
/* 中心操作区 */
.editor-container
{
.editor-container
{
height
:
calc
(
height
:
calc
(
100vh
-
var
(
--top-tool-height
)
-
var
(
--tags-view-height
)
-
var
(
--app-footer-height
)
-
42px
100vh
-
var
(
--top-tool-height
)
-
var
(
--tags-view-height
)
-
var
(
--app-footer-height
)
-
$
toolbar-height
);
);
/* 右侧属性面板 */
/* 右侧属性面板 */
.editor-right
{
.editor-right
{
flex-shrink
:
0
;
flex-shrink
:
0
;
box-shadow
:
-8px
0
8px
-8px
rgba
(
0
,
0
,
0
,
0.12
);
box-shadow
:
-8px
0
8px
-8px
rgba
(
0
,
0
,
0
,
0.12
);
overflow
:
hidden
;
/* 属性面板顶部:减少内边距 */
/* 属性面板顶部:减少内边距 */
:deep(.el-card__header)
{
:deep(.el-card__header)
{
padding
:
8px
16px
;
padding
:
8px
16px
;
...
@@ -440,29 +443,24 @@ $phone-width: 375px;
...
@@ -440,29 +443,24 @@ $phone-width: 375px;
/* 中心区域 */
/* 中心区域 */
.editor-center
{
.editor-center
{
position
:
relative
;
flex
:
1
1
0
;
flex
:
1
1
0
;
padding
:
16px
0
;
background-color
:
var
(
--app-content-bg-color
);
background-color
:
var
(
--app-content-bg-color
);
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
/* 中心设计区域 */
.editor-design
{
position
:
relative
;
height
:
100%
;
width
:
100%
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
margin
:
16px
0
0
0
;
overflow
:
hidden
;
overflow
:
hidden
;
width
:
100%
;
/* 组件 */
/* 组件 */
.component
{
.component
{
border
:
1px
solid
#fff
;
width
:
$
phone-width
;
width
:
$
phone-width
;
cursor
:
move
;
cursor
:
move
;
/* 鼠标放到组件上时 */
/* 鼠标放到组件上时 */
&:hover
{
&:hover
{
border
:
1px
dashed
var
(
--el-color-primary
);
border
:
1px
dashed
var
(
--el-color-primary
);
box-shadow
:
0
0
5px
0
rgba
(
24
,
144
,
255
,
0.3
);
}
}
}
}
/* 组件选中 */
/* 组件选中 */
...
@@ -472,6 +470,7 @@ $phone-width: 375px;
...
@@ -472,6 +470,7 @@ $phone-width: 375px;
/* 手机顶部 */
/* 手机顶部 */
.editor-design-top
{
.editor-design-top
{
width
:
$
phone-width
;
width
:
$
phone-width
;
margin
:
0
auto
;
/* 手机顶部状态栏 */
/* 手机顶部状态栏 */
.status-bar
{
.status-bar
{
height
:
20px
;
height
:
20px
;
...
@@ -482,33 +481,42 @@ $phone-width: 375px;
...
@@ -482,33 +481,42 @@ $phone-width: 375px;
/* 手机底部导航 */
/* 手机底部导航 */
.editor-design-bottom
{
.editor-design-bottom
{
width
:
$
phone-width
;
width
:
$
phone-width
;
margin
:
0
auto
;
}
}
/* 手机页面编辑区域 */
/* 手机页面编辑区域 */
.editor-design-center
{
:deep
(
.editor-design-center
)
{
width
:
100%
;
width
:
100%
;
flex
:
1
1
0
;
:deep(.el-scrollbar__view)
{
height
:
100%
;
}
/* 主体内容 */
/* 主体内容 */
.phone-container
{
.phone-container
{
height
:
100%
;
box-sizing
:
border-box
;
position
:
relative
;
position
:
relative
;
background-repeat
:
no-repeat
;
background-repeat
:
no-repeat
;
background-size
:
100%
100%
;
background-size
:
100%
100%
;
height
:
100%
;
width
:
$
phone-width
;
width
:
$
phone-width
;
margin
:
0
auto
;
margin
:
0
auto
;
.drag-area
{
.drag-area
{
height
:
100%
;
height
:
100%
;
width
:
100%
;
}
}
/* 组件容器(左侧:组件名称,中间:组件,右侧:操作工具栏) */
.component
{
.component-container
{
width
:
100%
;
position
:
relative
;
position
:
relative
;
cursor
:
move
;
.component-wrap
{
display
:
none
;
position
:
absolute
;
left
:
-2px
;
top
:
0
;
width
:
100%
;
height
:
100%
;
&.active
{
display
:
block
;
border
:
2px
solid
var
(
--el-color-primary
);
box-shadow
:
0
0
10px
0
rgba
(
24
,
144
,
255
,
0.3
);
}
/* 左侧:组件名称 */
/* 左侧:组件名称 */
.component-name
{
.component-name
{
position
:
absolute
;
position
:
absolute
;
...
@@ -518,7 +526,7 @@ $phone-width: 375px;
...
@@ -518,7 +526,7 @@ $phone-width: 375px;
height
:
25px
;
height
:
25px
;
background
:
#fff
;
background
:
#fff
;
font-size
:
12px
;
font-size
:
12px
;
left
:
-8
5
px
;
left
:
-8
8
px
;
top
:
0
;
top
:
0
;
box-shadow
:
box-shadow
:
0
0
4px
#00000014
,
0
0
4px
#00000014
,
...
@@ -548,7 +556,7 @@ $phone-width: 375px;
...
@@ -548,7 +556,7 @@ $phone-width: 375px;
.component-toolbar
{
.component-toolbar
{
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
right
:
-5
7
px
;
right
:
-5
5
px
;
/* 左侧小三角 */
/* 左侧小三角 */
&:before
{
&:before
{
position
:
absolute
;
position
:
absolute
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment