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
Unverified
Commit
a2ef21b2
authored
Jan 18, 2025
by
芋道源码
Committed by
Gitee
Jan 18, 2025
Browse files
Options
Browse Files
Download
Plain Diff
!664 【代码优化】MALL: 修复模板装修时组件属性响应式丢失的问题
Merge pull request !664 from puhui999/dev
parents
48e7e7e5
62542656
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
125 additions
and
144 deletions
+125
-144
src/components/DiyEditor/components/ComponentContainerProperty.vue
+3
-2
src/components/DiyEditor/components/mobile/Carousel/property.vue
+2
-2
src/components/DiyEditor/components/mobile/CouponCard/property.vue
+2
-2
src/components/DiyEditor/components/mobile/Divider/property.vue
+2
-2
src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue
+2
-2
src/components/DiyEditor/components/mobile/HotZone/property.vue
+2
-2
src/components/DiyEditor/components/mobile/ImageBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/MagicCube/property.vue
+2
-2
src/components/DiyEditor/components/mobile/MenuGrid/property.vue
+2
-2
src/components/DiyEditor/components/mobile/MenuList/property.vue
+2
-2
src/components/DiyEditor/components/mobile/MenuSwiper/property.vue
+2
-2
src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue
+1
-1
src/components/DiyEditor/components/mobile/NavigationBar/index.vue
+3
-3
src/components/DiyEditor/components/mobile/NavigationBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/NoticeBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/PageConfig/property.vue
+2
-2
src/components/DiyEditor/components/mobile/Popover/property.vue
+2
-2
src/components/DiyEditor/components/mobile/ProductCard/property.vue
+2
-2
src/components/DiyEditor/components/mobile/ProductList/property.vue
+2
-2
src/components/DiyEditor/components/mobile/PromotionArticle/property.vue
+2
-2
src/components/DiyEditor/components/mobile/PromotionCombination/property.vue
+2
-2
src/components/DiyEditor/components/mobile/PromotionPoint/property.vue
+2
-2
src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue
+2
-2
src/components/DiyEditor/components/mobile/SearchBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/TabBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/TitleBar/property.vue
+2
-2
src/components/DiyEditor/components/mobile/UserCard/property.vue
+2
-2
src/components/DiyEditor/components/mobile/UserCoupon/property.vue
+2
-2
src/components/DiyEditor/components/mobile/UserOrder/property.vue
+2
-2
src/components/DiyEditor/components/mobile/UserWallet/property.vue
+2
-2
src/components/DiyEditor/components/mobile/VideoPlayer/property.vue
+2
-2
src/components/DiyEditor/index.vue
+31
-13
src/components/DiyEditor/util.ts
+0
-29
src/components/Draggable/index.vue
+11
-4
src/components/InputWithColor/index.vue
+4
-28
src/views/mall/promotion/diy/template/decorate.vue
+16
-8
No files found.
src/components/DiyEditor/components/ComponentContainerProperty.vue
View file @
a2ef21b2
...
@@ -51,7 +51,8 @@
...
@@ -51,7 +51,8 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ComponentStyle
,
usePropertyForm
}
from
'@/components/DiyEditor/util'
import
{
ComponentStyle
}
from
'@/components/DiyEditor/util'
import
{
useVModel
}
from
'@vueuse/core'
/**
/**
* 组件容器属性:目前右边部分
* 组件容器属性:目前右边部分
...
@@ -61,7 +62,7 @@ defineOptions({ name: 'ComponentContainer' })
...
@@ -61,7 +62,7 @@ defineOptions({ name: 'ComponentContainer' })
const
props
=
defineProps
<
{
modelValue
:
ComponentStyle
}
>
()
const
props
=
defineProps
<
{
modelValue
:
ComponentStyle
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
const
treeData
=
[
const
treeData
=
[
{
{
...
...
src/components/DiyEditor/components/mobile/Carousel/property.vue
View file @
a2ef21b2
...
@@ -93,14 +93,14 @@
...
@@ -93,14 +93,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
CarouselProperty
}
from
'./config'
import
{
CarouselProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 轮播图属性面板
// 轮播图属性面板
defineOptions
({
name
:
'CarouselProperty'
})
defineOptions
({
name
:
'CarouselProperty'
})
const
props
=
defineProps
<
{
modelValue
:
CarouselProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
CarouselProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/CouponCard/property.vue
View file @
a2ef21b2
...
@@ -73,7 +73,7 @@
...
@@ -73,7 +73,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
CouponCardProperty
}
from
'./config'
import
{
CouponCardProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
*
as
CouponTemplateApi
from
'@/api/mall/promotion/coupon/couponTemplate'
import
*
as
CouponTemplateApi
from
'@/api/mall/promotion/coupon/couponTemplate'
import
{
floatToFixed2
}
from
'@/utils'
import
{
floatToFixed2
}
from
'@/utils'
import
{
PromotionDiscountTypeEnum
}
from
'@/utils/constants'
import
{
PromotionDiscountTypeEnum
}
from
'@/utils/constants'
...
@@ -84,7 +84,7 @@ defineOptions({ name: 'CouponCardProperty' })
...
@@ -84,7 +84,7 @@ defineOptions({ name: 'CouponCardProperty' })
const
props
=
defineProps
<
{
modelValue
:
CouponCardProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
CouponCardProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 优惠券列表
// 优惠券列表
const
couponList
=
ref
<
CouponTemplateApi
.
CouponTemplateVO
[]
>
([])
const
couponList
=
ref
<
CouponTemplateApi
.
CouponTemplateVO
[]
>
([])
...
...
src/components/DiyEditor/components/mobile/Divider/property.vue
View file @
a2ef21b2
...
@@ -45,12 +45,12 @@
...
@@ -45,12 +45,12 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
DividerProperty
}
from
'./config'
import
{
DividerProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 导航栏属性面板
// 导航栏属性面板
defineOptions
({
name
:
'DividerProperty'
})
defineOptions
({
name
:
'DividerProperty'
})
const
props
=
defineProps
<
{
modelValue
:
DividerProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
DividerProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
//线类型
//线类型
const
BORDER_TYPES
=
[
const
BORDER_TYPES
=
[
...
...
src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue
View file @
a2ef21b2
...
@@ -31,14 +31,14 @@
...
@@ -31,14 +31,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
FloatingActionButtonProperty
}
from
'./config'
import
{
FloatingActionButtonProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 悬浮按钮属性面板
// 悬浮按钮属性面板
defineOptions
({
name
:
'FloatingActionButtonProperty'
})
defineOptions
({
name
:
'FloatingActionButtonProperty'
})
const
props
=
defineProps
<
{
modelValue
:
FloatingActionButtonProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
FloatingActionButtonProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/HotZone/property.vue
View file @
a2ef21b2
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
HotZoneProperty
}
from
'@/components/DiyEditor/components/mobile/HotZone/config'
import
{
HotZoneProperty
}
from
'@/components/DiyEditor/components/mobile/HotZone/config'
import
HotZoneEditDialog
from
'./components/HotZoneEditDialog/index.vue'
import
HotZoneEditDialog
from
'./components/HotZoneEditDialog/index.vue'
...
@@ -29,7 +29,7 @@ defineOptions({ name: 'HotZoneProperty' })
...
@@ -29,7 +29,7 @@ defineOptions({ name: 'HotZoneProperty' })
const
props
=
defineProps
<
{
modelValue
:
HotZoneProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
HotZoneProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 热区编辑对话框
// 热区编辑对话框
const
editDialogRef
=
ref
()
const
editDialogRef
=
ref
()
...
...
src/components/DiyEditor/components/mobile/ImageBar/property.vue
View file @
a2ef21b2
...
@@ -21,14 +21,14 @@
...
@@ -21,14 +21,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ImageBarProperty
}
from
'./config'
import
{
ImageBarProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 图片展示属性面板
// 图片展示属性面板
defineOptions
({
name
:
'ImageBarProperty'
})
defineOptions
({
name
:
'ImageBarProperty'
})
const
props
=
defineProps
<
{
modelValue
:
ImageBarProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
ImageBarProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/MagicCube/property.vue
View file @
a2ef21b2
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
MagicCubeProperty
}
from
'@/components/DiyEditor/components/mobile/MagicCube/config'
import
{
MagicCubeProperty
}
from
'@/components/DiyEditor/components/mobile/MagicCube/config'
/** 广告魔方属性面板 */
/** 广告魔方属性面板 */
...
@@ -64,7 +64,7 @@ defineOptions({ name: 'MagicCubeProperty' })
...
@@ -64,7 +64,7 @@ defineOptions({ name: 'MagicCubeProperty' })
const
props
=
defineProps
<
{
modelValue
:
MagicCubeProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
MagicCubeProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 选中的热区
// 选中的热区
const
selectedHotAreaIndex
=
ref
(
-
1
)
const
selectedHotAreaIndex
=
ref
(
-
1
)
...
...
src/components/DiyEditor/components/mobile/MenuGrid/property.vue
View file @
a2ef21b2
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
import
{
EMPTY_MENU_GRID_ITEM_PROPERTY
,
EMPTY_MENU_GRID_ITEM_PROPERTY
,
MenuGridProperty
MenuGridProperty
...
@@ -59,7 +59,7 @@ defineOptions({ name: 'MenuGridProperty' })
...
@@ -59,7 +59,7 @@ defineOptions({ name: 'MenuGridProperty' })
const
props
=
defineProps
<
{
modelValue
:
MenuGridProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
MenuGridProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/MenuList/property.vue
View file @
a2ef21b2
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
import
{
EMPTY_MENU_LIST_ITEM_PROPERTY
,
EMPTY_MENU_LIST_ITEM_PROPERTY
,
MenuListProperty
MenuListProperty
...
@@ -39,7 +39,7 @@ defineOptions({ name: 'MenuListProperty' })
...
@@ -39,7 +39,7 @@ defineOptions({ name: 'MenuListProperty' })
const
props
=
defineProps
<
{
modelValue
:
MenuListProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
MenuListProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/MenuSwiper/property.vue
View file @
a2ef21b2
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
import
{
EMPTY_MENU_SWIPER_ITEM_PROPERTY
,
EMPTY_MENU_SWIPER_ITEM_PROPERTY
,
MenuSwiperProperty
MenuSwiperProperty
...
@@ -70,7 +70,7 @@ defineOptions({ name: 'MenuSwiperProperty' })
...
@@ -70,7 +70,7 @@ defineOptions({ name: 'MenuSwiperProperty' })
const
props
=
defineProps
<
{
modelValue
:
MenuSwiperProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
MenuSwiperProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue
View file @
a2ef21b2
...
@@ -64,7 +64,7 @@
...
@@ -64,7 +64,7 @@
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
NavigationBarCellProperty
}
from
'../config'
import
{
NavigationBarCellProperty
}
from
'../config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 导航栏属性面板
// 导航栏属性面板
defineOptions
({
name
:
'NavigationBarCellProperty'
})
defineOptions
({
name
:
'NavigationBarCellProperty'
})
...
...
src/components/DiyEditor/components/mobile/NavigationBar/index.vue
View file @
a2ef21b2
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<div
v-for=
"(cell, cellIndex) in cellList"
:key=
"cellIndex"
:style=
"getCellStyle(cell)"
>
<div
v-for=
"(cell, cellIndex) in cellList"
:key=
"cellIndex"
:style=
"getCellStyle(cell)"
>
<span
v-if=
"cell.type === 'text'"
>
{{
cell
.
text
}}
</span>
<span
v-if=
"cell.type === 'text'"
>
{{
cell
.
text
}}
</span>
<img
v-else-if=
"cell.type === 'image'"
:src=
"cell.imgUrl"
alt=
""
class=
"h-full w-full"
/>
<img
v-else-if=
"cell.type === 'image'"
:src=
"cell.imgUrl"
alt=
""
class=
"h-full w-full"
/>
<SearchBar
v-else
:property=
"getSearchProp"
/>
<SearchBar
v-else
:property=
"getSearchProp
(cell)
"
/>
</div>
</div>
</div>
</div>
<img
<img
...
@@ -51,14 +51,14 @@ const getCellStyle = (cell: NavigationBarCellProperty) => {
...
@@ -51,14 +51,14 @@ const getCellStyle = (cell: NavigationBarCellProperty) => {
}
as
StyleValue
}
as
StyleValue
}
}
// 获得搜索框属性
// 获得搜索框属性
const
getSearchProp
=
(
cell
:
NavigationBarCellProperty
)
=>
{
const
getSearchProp
=
computed
(()
=>
(
cell
:
NavigationBarCellProperty
)
=>
{
return
{
return
{
height
:
30
,
height
:
30
,
showScan
:
false
,
showScan
:
false
,
placeholder
:
cell
.
placeholder
,
placeholder
:
cell
.
placeholder
,
borderRadius
:
cell
.
borderRadius
borderRadius
:
cell
.
borderRadius
}
as
SearchProperty
}
as
SearchProperty
}
}
)
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.navigation-bar
{
.navigation-bar
{
...
...
src/components/DiyEditor/components/mobile/NavigationBar/property.vue
View file @
a2ef21b2
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
NavigationBarProperty
}
from
'./config'
import
{
NavigationBarProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
NavigationBarCellProperty
from
'@/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue'
import
NavigationBarCellProperty
from
'@/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue'
// 导航栏属性面板
// 导航栏属性面板
defineOptions
({
name
:
'NavigationBarProperty'
})
defineOptions
({
name
:
'NavigationBarProperty'
})
...
@@ -77,7 +77,7 @@ const rules = {
...
@@ -77,7 +77,7 @@ const rules = {
const
props
=
defineProps
<
{
modelValue
:
NavigationBarProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
NavigationBarProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
if
(
!
formData
.
value
.
_local
)
{
if
(
!
formData
.
value
.
_local
)
{
formData
.
value
.
_local
=
{
previewMp
:
true
,
previewOther
:
false
}
formData
.
value
.
_local
=
{
previewMp
:
true
,
previewOther
:
false
}
}
}
...
...
src/components/DiyEditor/components/mobile/NoticeBar/property.vue
View file @
a2ef21b2
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
NoticeBarProperty
}
from
'./config'
import
{
NoticeBarProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 通知栏属性面板
// 通知栏属性面板
defineOptions
({
name
:
'NoticeBarProperty'
})
defineOptions
({
name
:
'NoticeBarProperty'
})
// 表单校验
// 表单校验
...
@@ -40,7 +40,7 @@ const rules = {
...
@@ -40,7 +40,7 @@ const rules = {
const
props
=
defineProps
<
{
modelValue
:
NoticeBarProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
NoticeBarProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/PageConfig/property.vue
View file @
a2ef21b2
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
PageConfigProperty
}
from
'./config'
import
{
PageConfigProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 导航栏属性面板
// 导航栏属性面板
defineOptions
({
name
:
'PageConfigProperty'
})
defineOptions
({
name
:
'PageConfigProperty'
})
// 表单校验
// 表单校验
...
@@ -28,7 +28,7 @@ const rules = {}
...
@@ -28,7 +28,7 @@ const rules = {}
const
props
=
defineProps
<
{
modelValue
:
PageConfigProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PageConfigProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/Popover/property.vue
View file @
a2ef21b2
...
@@ -25,14 +25,14 @@
...
@@ -25,14 +25,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
PopoverProperty
}
from
'./config'
import
{
PopoverProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 弹窗广告属性面板
// 弹窗广告属性面板
defineOptions
({
name
:
'PopoverProperty'
})
defineOptions
({
name
:
'PopoverProperty'
})
const
props
=
defineProps
<
{
modelValue
:
PopoverProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PopoverProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/ProductCard/property.vue
View file @
a2ef21b2
...
@@ -135,7 +135,7 @@
...
@@ -135,7 +135,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ProductCardProperty
}
from
'./config'
import
{
ProductCardProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
SpuShowcase
from
'@/views/mall/product/spu/components/SpuShowcase.vue'
import
SpuShowcase
from
'@/views/mall/product/spu/components/SpuShowcase.vue'
// 商品卡片属性面板
// 商品卡片属性面板
...
@@ -143,7 +143,7 @@ defineOptions({ name: 'ProductCardProperty' })
...
@@ -143,7 +143,7 @@ defineOptions({ name: 'ProductCardProperty' })
const
props
=
defineProps
<
{
modelValue
:
ProductCardProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
ProductCardProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/ProductList/property.vue
View file @
a2ef21b2
...
@@ -85,7 +85,7 @@
...
@@ -85,7 +85,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ProductListProperty
}
from
'./config'
import
{
ProductListProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
SpuShowcase
from
'@/views/mall/product/spu/components/SpuShowcase.vue'
import
SpuShowcase
from
'@/views/mall/product/spu/components/SpuShowcase.vue'
// 商品栏属性面板
// 商品栏属性面板
...
@@ -93,7 +93,7 @@ defineOptions({ name: 'ProductListProperty' })
...
@@ -93,7 +93,7 @@ defineOptions({ name: 'ProductListProperty' })
const
props
=
defineProps
<
{
modelValue
:
ProductListProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
ProductListProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/PromotionArticle/property.vue
View file @
a2ef21b2
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
PromotionArticleProperty
}
from
'./config'
import
{
PromotionArticleProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
*
as
ArticleApi
from
'@/api/mall/promotion/article/index'
import
*
as
ArticleApi
from
'@/api/mall/promotion/article/index'
// 营销文章属性面板
// 营销文章属性面板
...
@@ -33,7 +33,7 @@ defineOptions({ name: 'PromotionArticleProperty' })
...
@@ -33,7 +33,7 @@ defineOptions({ name: 'PromotionArticleProperty' })
const
props
=
defineProps
<
{
modelValue
:
PromotionArticleProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PromotionArticleProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 文章列表
// 文章列表
const
articles
=
ref
<
ArticleApi
.
ArticleVO
>
([])
const
articles
=
ref
<
ArticleApi
.
ArticleVO
>
([])
...
...
src/components/DiyEditor/components/mobile/PromotionCombination/property.vue
View file @
a2ef21b2
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
PromotionCombinationProperty
}
from
'./config'
import
{
PromotionCombinationProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
*
as
CombinationActivityApi
from
'@/api/mall/promotion/combination/combinationActivity'
import
*
as
CombinationActivityApi
from
'@/api/mall/promotion/combination/combinationActivity'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
CombinationShowcase
from
'@/views/mall/promotion/combination/components/CombinationShowcase.vue'
import
CombinationShowcase
from
'@/views/mall/promotion/combination/components/CombinationShowcase.vue'
...
@@ -150,7 +150,7 @@ defineOptions({ name: 'PromotionCombinationProperty' })
...
@@ -150,7 +150,7 @@ defineOptions({ name: 'PromotionCombinationProperty' })
const
props
=
defineProps
<
{
modelValue
:
PromotionCombinationProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PromotionCombinationProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 活动列表
// 活动列表
const
activityList
=
ref
<
CombinationActivityApi
.
CombinationActivityVO
[]
>
([])
const
activityList
=
ref
<
CombinationActivityApi
.
CombinationActivityVO
[]
>
([])
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
...
...
src/components/DiyEditor/components/mobile/PromotionPoint/property.vue
View file @
a2ef21b2
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
PromotionPointProperty
}
from
'./config'
import
{
PromotionPointProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
PointShowcase
from
'@/views/mall/promotion/point/components/PointShowcase.vue'
import
PointShowcase
from
'@/views/mall/promotion/point/components/PointShowcase.vue'
// 秒杀属性面板
// 秒杀属性面板
...
@@ -148,7 +148,7 @@ defineOptions({ name: 'PromotionPointProperty' })
...
@@ -148,7 +148,7 @@ defineOptions({ name: 'PromotionPointProperty' })
const
props
=
defineProps
<
{
modelValue
:
PromotionPointProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PromotionPointProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
></
style
>
src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue
View file @
a2ef21b2
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
PromotionSeckillProperty
}
from
'./config'
import
{
PromotionSeckillProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
*
as
SeckillActivityApi
from
'@/api/mall/promotion/seckill/seckillActivity'
import
*
as
SeckillActivityApi
from
'@/api/mall/promotion/seckill/seckillActivity'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
SeckillShowcase
from
'@/views/mall/promotion/seckill/components/SeckillShowcase.vue'
import
SeckillShowcase
from
'@/views/mall/promotion/seckill/components/SeckillShowcase.vue'
...
@@ -150,7 +150,7 @@ defineOptions({ name: 'PromotionSeckillProperty' })
...
@@ -150,7 +150,7 @@ defineOptions({ name: 'PromotionSeckillProperty' })
const
props
=
defineProps
<
{
modelValue
:
PromotionSeckillProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
PromotionSeckillProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 活动列表
// 活动列表
const
activityList
=
ref
<
SeckillActivityApi
.
SeckillActivityVO
[]
>
([])
const
activityList
=
ref
<
SeckillActivityApi
.
SeckillActivityVO
[]
>
([])
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
...
...
src/components/DiyEditor/components/mobile/SearchBar/property.vue
View file @
a2ef21b2
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
SearchProperty
}
from
'@/components/DiyEditor/components/mobile/SearchBar/config'
import
{
SearchProperty
}
from
'@/components/DiyEditor/components/mobile/SearchBar/config'
/** 搜索框属性面板 */
/** 搜索框属性面板 */
...
@@ -67,7 +67,7 @@ defineOptions({ name: 'SearchProperty' })
...
@@ -67,7 +67,7 @@ defineOptions({ name: 'SearchProperty' })
const
props
=
defineProps
<
{
modelValue
:
SearchProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
SearchProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/TabBar/property.vue
View file @
a2ef21b2
...
@@ -80,13 +80,13 @@
...
@@ -80,13 +80,13 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
TabBarProperty
,
component
,
THEME_LIST
}
from
'./config'
import
{
TabBarProperty
,
component
,
THEME_LIST
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 底部导航栏
// 底部导航栏
defineOptions
({
name
:
'TabBarProperty'
})
defineOptions
({
name
:
'TabBarProperty'
})
const
props
=
defineProps
<
{
modelValue
:
TabBarProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
TabBarProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 将数据库的值更新到右侧属性栏
// 将数据库的值更新到右侧属性栏
component
.
property
.
items
=
formData
.
value
.
items
component
.
property
.
items
=
formData
.
value
.
items
...
...
src/components/DiyEditor/components/mobile/TitleBar/property.vue
View file @
a2ef21b2
...
@@ -101,13 +101,13 @@
...
@@ -101,13 +101,13 @@
</template>
</template>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
TitleBarProperty
}
from
'./config'
import
{
TitleBarProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 导航栏属性面板
// 导航栏属性面板
defineOptions
({
name
:
'TitleBarProperty'
})
defineOptions
({
name
:
'TitleBarProperty'
})
const
props
=
defineProps
<
{
modelValue
:
TitleBarProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
TitleBarProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 表单校验
// 表单校验
const
rules
=
{}
const
rules
=
{}
...
...
src/components/DiyEditor/components/mobile/UserCard/property.vue
View file @
a2ef21b2
...
@@ -4,14 +4,14 @@
...
@@ -4,14 +4,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
UserCardProperty
}
from
'./config'
import
{
UserCardProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 用户卡片属性面板
// 用户卡片属性面板
defineOptions
({
name
:
'UserCardProperty'
})
defineOptions
({
name
:
'UserCardProperty'
})
const
props
=
defineProps
<
{
modelValue
:
UserCardProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
UserCardProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/UserCoupon/property.vue
View file @
a2ef21b2
...
@@ -4,14 +4,14 @@
...
@@ -4,14 +4,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
UserCouponProperty
}
from
'./config'
import
{
UserCouponProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 用户卡券属性面板
// 用户卡券属性面板
defineOptions
({
name
:
'UserCouponProperty'
})
defineOptions
({
name
:
'UserCouponProperty'
})
const
props
=
defineProps
<
{
modelValue
:
UserCouponProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
UserCouponProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/UserOrder/property.vue
View file @
a2ef21b2
...
@@ -4,14 +4,14 @@
...
@@ -4,14 +4,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
UserOrderProperty
}
from
'./config'
import
{
UserOrderProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 用户订单属性面板
// 用户订单属性面板
defineOptions
({
name
:
'UserOrderProperty'
})
defineOptions
({
name
:
'UserOrderProperty'
})
const
props
=
defineProps
<
{
modelValue
:
UserOrderProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
UserOrderProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/UserWallet/property.vue
View file @
a2ef21b2
...
@@ -4,14 +4,14 @@
...
@@ -4,14 +4,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
UserWalletProperty
}
from
'./config'
import
{
UserWalletProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 用户资产属性面板
// 用户资产属性面板
defineOptions
({
name
:
'UserWalletProperty'
})
defineOptions
({
name
:
'UserWalletProperty'
})
const
props
=
defineProps
<
{
modelValue
:
UserWalletProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
UserWalletProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/components/mobile/VideoPlayer/property.vue
View file @
a2ef21b2
...
@@ -42,14 +42,14 @@
...
@@ -42,14 +42,14 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
VideoPlayerProperty
}
from
'./config'
import
{
VideoPlayerProperty
}
from
'./config'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
// 视频播放属性面板
// 视频播放属性面板
defineOptions
({
name
:
'VideoPlayerProperty'
})
defineOptions
({
name
:
'VideoPlayerProperty'
})
const
props
=
defineProps
<
{
modelValue
:
VideoPlayerProperty
}
>
()
const
props
=
defineProps
<
{
modelValue
:
VideoPlayerProperty
}
>
()
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
></
style
>
src/components/DiyEditor/index.vue
View file @
a2ef21b2
...
@@ -110,7 +110,7 @@
...
@@ -110,7 +110,7 @@
<el-tag
<el-tag
v-if=
"showPageConfig"
v-if=
"showPageConfig"
:effect=
"selectedComponent?.uid === pageConfigComponent.uid ? 'dark' : 'plain'"
:effect=
"selectedComponent?.uid === pageConfigComponent.uid ? 'dark' : 'plain'"
:type=
"selectedComponent?.uid === pageConfigComponent.uid ? '' : 'info'"
:type=
"selectedComponent?.uid === pageConfigComponent.uid ? '
primary
' : 'info'"
size=
"large"
size=
"large"
@
click=
"handleComponentSelected(pageConfigComponent)"
@
click=
"handleComponentSelected(pageConfigComponent)"
>
>
...
@@ -121,7 +121,7 @@
...
@@ -121,7 +121,7 @@
<el-tag
<el-tag
v-if=
"component.position === 'fixed'"
v-if=
"component.position === 'fixed'"
:effect=
"selectedComponent?.uid === component.uid ? 'dark' : 'plain'"
:effect=
"selectedComponent?.uid === component.uid ? 'dark' : 'plain'"
:type=
"selectedComponent?.uid === component.uid ? '' : 'info'"
:type=
"selectedComponent?.uid === component.uid ? '
primary
' : 'info'"
closable
closable
size=
"large"
size=
"large"
@
click=
"handleComponentSelected(component)"
@
click=
"handleComponentSelected(component)"
...
@@ -191,7 +191,7 @@ import { cloneDeep, includes } from 'lodash-es'
...
@@ -191,7 +191,7 @@ import { cloneDeep, includes } from 'lodash-es'
import
{
component
as
PAGE_CONFIG_COMPONENT
}
from
'@/components/DiyEditor/components/mobile/PageConfig/config'
import
{
component
as
PAGE_CONFIG_COMPONENT
}
from
'@/components/DiyEditor/components/mobile/PageConfig/config'
import
{
component
as
NAVIGATION_BAR_COMPONENT
}
from
'./components/mobile/NavigationBar/config'
import
{
component
as
NAVIGATION_BAR_COMPONENT
}
from
'./components/mobile/NavigationBar/config'
import
{
component
as
TAB_BAR_COMPONENT
}
from
'./components/mobile/TabBar/config'
import
{
component
as
TAB_BAR_COMPONENT
}
from
'./components/mobile/TabBar/config'
import
{
isString
}
from
'@/utils/is'
import
{
is
Empty
,
is
String
}
from
'@/utils/is'
import
{
DiyComponent
,
DiyComponentLibrary
,
PageConfig
}
from
'@/components/DiyEditor/util'
import
{
DiyComponent
,
DiyComponentLibrary
,
PageConfig
}
from
'@/components/DiyEditor/util'
import
{
componentConfigs
}
from
'@/components/DiyEditor/components/mobile'
import
{
componentConfigs
}
from
'@/components/DiyEditor/components/mobile'
import
{
array
,
oneOfType
}
from
'vue-types'
import
{
array
,
oneOfType
}
from
'vue-types'
...
@@ -238,24 +238,42 @@ const props = defineProps({
...
@@ -238,24 +238,42 @@ const props = defineProps({
watch
(
watch
(
()
=>
props
.
modelValue
,
()
=>
props
.
modelValue
,
()
=>
{
()
=>
{
const
modelValue
=
isString
(
props
.
modelValue
)
const
modelValue
=
?
(
JSON
.
parse
(
props
.
modelValue
)
as
PageConfig
)
isString
(
props
.
modelValue
)
&&
!
isEmpty
(
props
.
modelValue
)
:
props
.
modelValue
?
(
JSON
.
parse
(
props
.
modelValue
)
as
PageConfig
)
pageConfigComponent
.
value
.
property
=
modelValue
?.
page
||
PAGE_CONFIG_COMPONENT
.
property
:
props
.
modelValue
pageConfigComponent
.
value
.
property
=
(
typeof
modelValue
!==
'string'
&&
modelValue
?.
page
)
||
PAGE_CONFIG_COMPONENT
.
property
navigationBarComponent
.
value
.
property
=
navigationBarComponent
.
value
.
property
=
modelValue
?.
navigationBar
||
NAVIGATION_BAR_COMPONENT
.
property
(
typeof
modelValue
!==
'string'
&&
modelValue
?.
navigationBar
)
||
tabBarComponent
.
value
.
property
=
modelValue
?.
tabBar
||
TAB_BAR_COMPONENT
.
property
NAVIGATION_BAR_COMPONENT
.
property
tabBarComponent
.
value
.
property
=
(
typeof
modelValue
!==
'string'
&&
modelValue
?.
tabBar
)
||
TAB_BAR_COMPONENT
.
property
// 查找对应的页面组件
// 查找对应的页面组件
pageComponents
.
value
=
(
modelValue
?.
components
||
[]).
map
((
item
)
=>
{
pageComponents
.
value
=
((
typeof
modelValue
!==
'string'
&&
modelValue
?.
components
)
||
[]).
map
(
const
component
=
componentConfigs
[
item
.
id
]
(
item
)
=>
{
return
{
...
component
,
property
:
item
.
property
}
const
component
=
componentConfigs
[
item
.
id
]
})
return
{
...
component
,
property
:
item
.
property
}
}
)
},
},
{
{
immediate
:
true
immediate
:
true
}
}
)
)
/** 选择组件修改其属性后更新它的配置 */
watch
(
selectedComponent
,
(
val
:
any
)
=>
{
if
(
!
val
||
selectedComponentIndex
.
value
===
-
1
)
{
return
}
pageComponents
.
value
[
selectedComponentIndex
.
value
]
=
selectedComponent
.
value
!
},
{
deep
:
true
}
)
// 保存
// 保存
const
handleSave
=
()
=>
{
const
handleSave
=
()
=>
{
// 发送保存通知
// 发送保存通知
...
...
src/components/DiyEditor/util.ts
View file @
a2ef21b2
import
{
ref
,
Ref
}
from
'vue'
import
{
PageConfigProperty
}
from
'@/components/DiyEditor/components/mobile/PageConfig/config'
import
{
PageConfigProperty
}
from
'@/components/DiyEditor/components/mobile/PageConfig/config'
import
{
NavigationBarProperty
}
from
'@/components/DiyEditor/components/mobile/NavigationBar/config'
import
{
NavigationBarProperty
}
from
'@/components/DiyEditor/components/mobile/NavigationBar/config'
import
{
TabBarProperty
}
from
'@/components/DiyEditor/components/mobile/TabBar/config'
import
{
TabBarProperty
}
from
'@/components/DiyEditor/components/mobile/TabBar/config'
...
@@ -78,34 +77,6 @@ export interface PageConfig {
...
@@ -78,34 +77,6 @@ export interface PageConfig {
// 页面组件,只保留组件ID,组件属性
// 页面组件,只保留组件ID,组件属性
export
interface
PageComponent
extends
Pick
<
DiyComponent
<
any
>
,
'id'
|
'property'
>
{}
export
interface
PageComponent
extends
Pick
<
DiyComponent
<
any
>
,
'id'
|
'property'
>
{}
// 属性表单监听
export
function
usePropertyForm
<
T
>
(
modelValue
:
T
,
emit
:
Function
):
{
formData
:
Ref
<
T
>
}
{
const
formData
=
ref
<
T
>
()
// 监听属性数据变动
watch
(
()
=>
modelValue
,
()
=>
{
formData
.
value
=
modelValue
},
{
deep
:
true
,
immediate
:
true
}
)
// 监听表单数据变动
watch
(
()
=>
formData
.
value
,
()
=>
{
emit
(
'update:modelValue'
,
formData
.
value
)
},
{
deep
:
true
}
)
return
{
formData
}
as
{
formData
:
Ref
<
T
>
}
}
// 页面组件库
// 页面组件库
export
const
PAGE_LIBS
=
[
export
const
PAGE_LIBS
=
[
{
{
...
...
src/components/Draggable/index.vue
View file @
a2ef21b2
...
@@ -13,9 +13,16 @@
...
@@ -13,9 +13,16 @@
class=
"mb-4px flex flex-col gap-4px border border-gray-2 border-rounded rounded border-solid p-8px"
class=
"mb-4px flex flex-col gap-4px border border-gray-2 border-rounded rounded border-solid p-8px"
>
>
<!-- 操作按钮区 -->
<!-- 操作按钮区 -->
<div
class=
"m--8px m-b-4px flex flex-row items-center justify-between p-8px"
style=
"background-color: var(--app-content-bg-color);"
>
<div
class=
"m--8px m-b-4px flex flex-row items-center justify-between p-8px"
style=
"background-color: var(--app-content-bg-color)"
>
<el-tooltip
content=
"拖动排序"
>
<el-tooltip
content=
"拖动排序"
>
<Icon
icon=
"ic:round-drag-indicator"
class=
"drag-icon cursor-move"
style=
"color: #8a909c;"
/>
<Icon
icon=
"ic:round-drag-indicator"
class=
"drag-icon cursor-move"
style=
"color: #8a909c"
/>
</el-tooltip>
</el-tooltip>
<el-tooltip
content=
"删除"
>
<el-tooltip
content=
"删除"
>
<Icon
<Icon
...
@@ -47,7 +54,7 @@
...
@@ -47,7 +54,7 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
// 拖拽组件
// 拖拽组件
import
VueDraggable
from
'vuedraggable'
import
VueDraggable
from
'vuedraggable'
import
{
use
PropertyForm
}
from
'@/components/DiyEditor/util
'
import
{
use
VModel
}
from
'@vueuse/core
'
import
{
any
,
array
}
from
'vue-types'
import
{
any
,
array
}
from
'vue-types'
import
{
propTypes
}
from
'@/utils/propTypes'
import
{
propTypes
}
from
'@/utils/propTypes'
import
{
cloneDeep
}
from
'lodash-es'
import
{
cloneDeep
}
from
'lodash-es'
...
@@ -66,7 +73,7 @@ const props = defineProps({
...
@@ -66,7 +73,7 @@ const props = defineProps({
})
})
// 定义事件
// 定义事件
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
{
formData
}
=
usePropertyForm
(
props
.
modelValue
,
emit
)
const
formData
=
useVModel
(
props
,
'modelValue'
,
emit
)
// 处理添加
// 处理添加
const
handleAdd
=
()
=>
formData
.
value
.
push
(
cloneDeep
(
props
.
emptyItem
||
{}))
const
handleAdd
=
()
=>
formData
.
value
.
push
(
cloneDeep
(
props
.
emptyItem
||
{}))
...
...
src/components/InputWithColor/index.vue
View file @
a2ef21b2
<
template
>
<
template
>
<el-input
v-model=
"
valueRef
"
v-bind=
"$attrs"
>
<el-input
v-model=
"
modelValue
"
v-bind=
"$attrs"
>
<template
#
append
>
<template
#
append
>
<el-color-picker
v-model=
"color
Ref
"
:predefine=
"PREDEFINE_COLORS"
/>
<el-color-picker
v-model=
"color"
:predefine=
"PREDEFINE_COLORS"
/>
</
template
>
</
template
>
</el-input>
</el-input>
</template>
</template>
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
propTypes
}
from
'@/utils/propTypes'
import
{
propTypes
}
from
'@/utils/propTypes'
import
{
PREDEFINE_COLORS
}
from
'@/utils/color'
import
{
PREDEFINE_COLORS
}
from
'@/utils/color'
import
{
useVModels
}
from
'@vueuse/core'
/**
/**
* 带颜色选择器输入框
* 带颜色选择器输入框
...
@@ -19,33 +20,8 @@ const props = defineProps({
...
@@ -19,33 +20,8 @@ const props = defineProps({
modelValue
:
propTypes
.
string
.
def
(
''
).
isRequired
,
modelValue
:
propTypes
.
string
.
def
(
''
).
isRequired
,
color
:
propTypes
.
string
.
def
(
''
).
isRequired
color
:
propTypes
.
string
.
def
(
''
).
isRequired
})
})
watch
(
()
=>
props
.
modelValue
,
(
val
:
string
)
=>
{
if
(
val
===
unref
(
valueRef
))
return
valueRef
.
value
=
val
}
)
const
emit
=
defineEmits
([
'update:modelValue'
,
'update:color'
])
const
emit
=
defineEmits
([
'update:modelValue'
,
'update:color'
])
const
{
modelValue
,
color
}
=
useVModels
(
props
,
emit
)
// 输入框的值
const
valueRef
=
ref
(
props
.
modelValue
)
watch
(
()
=>
valueRef
.
value
,
(
val
:
string
)
=>
{
emit
(
'update:modelValue'
,
val
)
}
)
// 颜色
const
colorRef
=
ref
(
props
.
color
)
watch
(
()
=>
colorRef
.
value
,
(
val
:
string
)
=>
{
emit
(
'update:color'
,
val
)
}
)
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
:deep
(
.el-input-group__append
)
{
:deep
(
.el-input-group__append
)
{
...
...
src/views/mall/promotion/diy/template/decorate.vue
View file @
a2ef21b2
...
@@ -52,7 +52,9 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
...
@@ -52,7 +52,9 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
const
formData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
>
()
const
formData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
>
()
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
// 当前编辑的属性
// 当前编辑的属性
const
currentFormData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
()
const
currentFormData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
({
property
:
''
}
as
DiyPageApi
.
DiyPageVO
)
// templateItem 对应的缓存
// templateItem 对应的缓存
const
currentFormDataMap
=
ref
<
const
currentFormDataMap
=
ref
<
Map
<
string
,
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
Map
<
string
,
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
...
@@ -92,17 +94,21 @@ const handleTemplateItemChange = (val: number) => {
...
@@ -92,17 +94,21 @@ const handleTemplateItemChange = (val: number) => {
// 编辑模板
// 编辑模板
if
(
val
===
0
)
{
if
(
val
===
0
)
{
libs
.
value
=
templateLibs
libs
.
value
=
templateLibs
currentFormData
.
value
=
isEmpty
(
data
)
?
formData
.
value
:
data
currentFormData
.
value
=
(
isEmpty
(
data
)
?
formData
.
value
:
data
)
as
|
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
return
return
}
}
// 编辑页面
// 编辑页面
libs
.
value
=
PAGE_LIBS
libs
.
value
=
PAGE_LIBS
currentFormData
.
value
=
isEmpty
(
data
)
currentFormData
.
value
=
(
?
formData
.
value
!
.
pages
.
find
(
isEmpty
(
data
)
(
page
:
DiyPageApi
.
DiyPageVO
)
=>
page
.
name
===
templateItems
[
val
].
name
?
formData
.
value
!
.
pages
.
find
(
)
(
page
:
DiyPageApi
.
DiyPageVO
)
=>
page
.
name
===
templateItems
[
val
].
name
:
data
)
:
data
)
as
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
}
}
// 提交表单
// 提交表单
...
@@ -170,7 +176,9 @@ const recoverPageIndex = () => {
...
@@ -170,7 +176,9 @@ const recoverPageIndex = () => {
sessionStorage
.
removeItem
(
DIY_PAGE_INDEX_KEY
)
sessionStorage
.
removeItem
(
DIY_PAGE_INDEX_KEY
)
// 重新初始化数据
// 重新初始化数据
currentFormData
.
value
=
formData
.
value
currentFormData
.
value
=
formData
.
value
as
|
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
currentFormDataMap
.
value
=
new
Map
<
currentFormDataMap
.
value
=
new
Map
<
string
,
string
,
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
...
...
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