!795 【商城装修】功能新增和BUG优化

Merge pull request !795 from 卢越/master
This commit is contained in:
芋道源码
2025-07-25 12:27:12 +00:00
committed by Gitee
4 changed files with 48 additions and 5 deletions

View File

@ -80,7 +80,8 @@ const activeAppLink = ref({} as AppLink)
/** 打开弹窗 */
const dialogVisible = ref(false)
const open = (link: string) => {
activeAppLink.value.path = link
// 进入页面时先重置 activeAppLink
activeAppLink.value = { name: '', path: '' }
dialogVisible.value = true
// 滚动到当前的链接
@ -102,8 +103,11 @@ defineExpose({ open })
// 处理 APP 链接选中
const handleAppLinkSelected = (appLink: AppLink) => {
// 只有不同链接时才更新(避免重复触发)
if (!isSameLink(appLink.path, activeAppLink.value.path)) {
activeAppLink.value = appLink
// 如果新链接的 path 为空,则沿用当前 activeAppLink 的 path
const path = appLink.path || activeAppLink.value.path
activeAppLink.value = { ...appLink, path: path }
}
switch (appLink.type) {
case APP_LINK_TYPE_ENUM.PRODUCT_CATEGORY_LIST:

View File

@ -13,7 +13,7 @@
<template v-for="(cell, cellIndex) in cellList" :key="cellIndex">
<template v-if="selectedHotAreaIndex === cellIndex">
<el-form-item :prop="`cell[${cellIndex}].type`" label="类型">
<el-radio-group v-model="cell.type">
<el-radio-group v-model="cell.type" @change="handleHotAreaSelected(cell, cellIndex)">
<el-radio value="text">文字</el-radio>
<el-radio value="image">图片</el-radio>
<el-radio value="search">搜索框</el-radio>
@ -44,9 +44,32 @@
</template>
<!-- 3. 搜索框 -->
<template v-else>
<el-form-item label="框体颜色" prop="backgroundColor">
<ColorInput v-model="cell.backgroundColor" />
</el-form-item>
<el-form-item class="lef" label="文本颜色" prop="textColor">
<ColorInput v-model="cell.textColor" />
</el-form-item>
<el-form-item :prop="`cell[${cellIndex}].placeholder`" label="提示文字">
<el-input v-model="cell.placeholder" maxlength="10" show-word-limit />
</el-form-item>
<el-form-item label="文本位置" prop="placeholderPosition">
<el-radio-group v-model="cell!.placeholderPosition">
<el-tooltip content="居左" placement="top">
<el-radio-button value="left">
<Icon icon="ant-design:align-left-outlined" />
</el-radio-button>
</el-tooltip>
<el-tooltip content="居中" placement="top">
<el-radio-button value="center">
<Icon icon="ant-design:align-center-outlined" />
</el-radio-button>
</el-tooltip>
</el-radio-group>
</el-form-item>
<el-form-item label="扫一扫" prop="showScan">
<el-switch v-model="cell!.showScan" />
</el-form-item>
<el-form-item :prop="`cell[${cellIndex}].borderRadius`" label="圆角">
<el-slider
v-model="cell.borderRadius"
@ -88,10 +111,17 @@ const cellCount = computed(() => (props.isMp ? 6 : 8))
const selectedHotAreaIndex = ref(0)
const handleHotAreaSelected = (cellValue: NavigationBarCellProperty, index: number) => {
selectedHotAreaIndex.value = index
// 默认设置为选中文字,并设置属性
if (!cellValue.type) {
cellValue.type = 'text'
cellValue.textColor = '#111111'
}
// 如果点击的是搜索框,则初始化搜索框的属性
if (cellValue.type === 'search') {
cellValue.placeholderPosition = 'left'
cellValue.backgroundColor = '#EEEEEE'
cellValue.textColor = '#969799'
}
}
</script>

View File

@ -45,8 +45,14 @@ export interface NavigationBarCellProperty {
imgUrl: string
// 图片链接
url: string
// 搜索框:框体颜色
backgroundColor: string
// 搜索框:提示文字
placeholder: string
// 搜索框:提示文字位置
placeholderPosition: string
// 搜索框:是否显示扫一扫
showScan: boolean
// 搜索框:边框圆角半径
borderRadius: number
}

View File

@ -54,9 +54,12 @@ const getCellStyle = (cell: NavigationBarCellProperty) => {
const getSearchProp = computed(() => (cell: NavigationBarCellProperty) => {
return {
height: 30,
showScan: false,
backgroundColor: cell.backgroundColor,
showScan: cell.showScan,
placeholder: cell.placeholder,
borderRadius: cell.borderRadius
borderRadius: cell.borderRadius,
textColor: cell.textColor,
placeholderPosition: cell.placeholderPosition
} as SearchProperty
})
</script>