Commit ae0cc94d by puhui999

【代码优化】MALL: usePropertyForm 替换为 useVModel 实现 modelValue 代理

parent 48e7e7e5
...@@ -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 = [
{ {
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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[]>([])
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 = [
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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()
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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)
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } from '@vueuse/core'
// 导航栏属性面板 // 导航栏属性面板
defineOptions({ name: 'NavigationBarCellProperty' }) defineOptions({ name: 'NavigationBarCellProperty' })
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 }
} }
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>([])
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 () => {
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 () => {
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 = {}
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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>
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 = [
{ {
......
...@@ -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 { usePropertyForm } from '@/components/DiyEditor/util' import { useVModel } 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 || {}))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment