commit
5d64d249dc
|
@ -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:
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -45,8 +45,14 @@ export interface NavigationBarCellProperty {
|
|||
imgUrl: string
|
||||
// 图片链接
|
||||
url: string
|
||||
// 搜索框:框体颜色
|
||||
backgroundColor: string
|
||||
// 搜索框:提示文字
|
||||
placeholder: string
|
||||
// 搜索框:提示文字位置
|
||||
placeholderPosition: string
|
||||
// 搜索框:是否显示扫一扫
|
||||
showScan: boolean
|
||||
// 搜索框:边框圆角半径
|
||||
borderRadius: number
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue