|
|
|
|
@ -1,81 +1,64 @@
|
|
|
|
|
<template>
|
|
|
|
|
<ComponentContainerProperty v-model="formData.style">
|
|
|
|
|
<el-text tag="p"> 搜索热词 </el-text>
|
|
|
|
|
<el-text type="info" size="small"> 拖动左侧的小圆点可以调整热词顺序 </el-text>
|
|
|
|
|
|
|
|
|
|
<!-- 表单 -->
|
|
|
|
|
<el-form label-width="80px" :model="formData" class="m-t-8px">
|
|
|
|
|
<div v-if="formData.hotKeywords.length">
|
|
|
|
|
<VueDraggable
|
|
|
|
|
:list="formData.hotKeywords"
|
|
|
|
|
item-key="index"
|
|
|
|
|
handle=".drag-icon"
|
|
|
|
|
:forceFallback="true"
|
|
|
|
|
:animation="200"
|
|
|
|
|
>
|
|
|
|
|
<template #item="{ index }">
|
|
|
|
|
<div class="mb-4px flex flex-row items-center gap-4px rounded bg-gray-100 p-8px">
|
|
|
|
|
<Icon icon="ic:round-drag-indicator" class="drag-icon cursor-move" />
|
|
|
|
|
<el-input v-model="formData.hotKeywords[index]" placeholder="请输入热词" />
|
|
|
|
|
<Icon icon="ep:delete" class="text-red-500" @click="deleteHotWord(index)" />
|
|
|
|
|
</div>
|
|
|
|
|
<el-card header="搜索热词" class="property-group" shadow="never">
|
|
|
|
|
<Draggable v-model="formData.hotKeywords" :empty-item="''">
|
|
|
|
|
<template #default="{ index }">
|
|
|
|
|
<el-input v-model="formData.hotKeywords[index]" placeholder="请输入热词" />
|
|
|
|
|
</template>
|
|
|
|
|
</VueDraggable>
|
|
|
|
|
</div>
|
|
|
|
|
<el-form-item label-width="0">
|
|
|
|
|
<el-button @click="handleAddHotWord" type="primary" plain class="m-t-8px w-full">
|
|
|
|
|
添加热词
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="框体样式">
|
|
|
|
|
<el-radio-group v-model="formData!.borderRadius">
|
|
|
|
|
<el-tooltip content="方形" placement="top">
|
|
|
|
|
<el-radio-button :label="0">
|
|
|
|
|
<Icon icon="tabler:input-search" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
<el-tooltip content="圆形" placement="top">
|
|
|
|
|
<el-radio-button :label="10">
|
|
|
|
|
<Icon icon="iconoir:input-search" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="提示文字" prop="placeholder">
|
|
|
|
|
<el-input v-model="formData.placeholder" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="文本位置" prop="placeholderPosition">
|
|
|
|
|
<el-radio-group v-model="formData!.placeholderPosition">
|
|
|
|
|
<el-tooltip content="居左" placement="top">
|
|
|
|
|
<el-radio-button label="left">
|
|
|
|
|
<Icon icon="ant-design:align-left-outlined" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
<el-tooltip content="居中" placement="top">
|
|
|
|
|
<el-radio-button label="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="formData!.showScan" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="框体高度" prop="height">
|
|
|
|
|
<el-slider v-model="formData!.height" :max="50" :min="28" show-input input-size="small" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="框体颜色" prop="backgroundColor">
|
|
|
|
|
<ColorInput v-model="formData.backgroundColor" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item class="lef" label="文本颜色" prop="textColor">
|
|
|
|
|
<ColorInput v-model="formData.textColor" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</Draggable>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card header="搜索样式" class="property-group" shadow="never">
|
|
|
|
|
<el-form-item label="框体样式">
|
|
|
|
|
<el-radio-group v-model="formData!.borderRadius">
|
|
|
|
|
<el-tooltip content="方形" placement="top">
|
|
|
|
|
<el-radio-button :label="0">
|
|
|
|
|
<Icon icon="tabler:input-search" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
<el-tooltip content="圆形" placement="top">
|
|
|
|
|
<el-radio-button :label="10">
|
|
|
|
|
<Icon icon="iconoir:input-search" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="提示文字" prop="placeholder">
|
|
|
|
|
<el-input v-model="formData.placeholder" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="文本位置" prop="placeholderPosition">
|
|
|
|
|
<el-radio-group v-model="formData!.placeholderPosition">
|
|
|
|
|
<el-tooltip content="居左" placement="top">
|
|
|
|
|
<el-radio-button label="left">
|
|
|
|
|
<Icon icon="ant-design:align-left-outlined" />
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
<el-tooltip content="居中" placement="top">
|
|
|
|
|
<el-radio-button label="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="formData!.showScan" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="框体高度" prop="height">
|
|
|
|
|
<el-slider v-model="formData!.height" :max="50" :min="28" show-input input-size="small" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="框体颜色" prop="backgroundColor">
|
|
|
|
|
<ColorInput v-model="formData.backgroundColor" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item class="lef" label="文本颜色" prop="textColor">
|
|
|
|
|
<ColorInput v-model="formData.textColor" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-form>
|
|
|
|
|
</ComponentContainerProperty>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import VueDraggable from 'vuedraggable'
|
|
|
|
|
import { usePropertyForm } from '@/components/DiyEditor/util'
|
|
|
|
|
import { SearchProperty } from '@/components/DiyEditor/components/mobile/SearchBar/config'
|
|
|
|
|
|
|
|
|
|
@ -85,15 +68,6 @@ defineOptions({ name: 'SearchProperty' })
|
|
|
|
|
const props = defineProps<{ modelValue: SearchProperty }>()
|
|
|
|
|
const emit = defineEmits(['update:modelValue'])
|
|
|
|
|
const { formData } = usePropertyForm(props.modelValue, emit)
|
|
|
|
|
|
|
|
|
|
/* 添加热词 */
|
|
|
|
|
const handleAddHotWord = () => {
|
|
|
|
|
formData.value.hotKeywords.push('')
|
|
|
|
|
}
|
|
|
|
|
/* 删除热词 */
|
|
|
|
|
const deleteHotWord = (index: number) => {
|
|
|
|
|
formData.value.hotKeywords.splice(index, 1)
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss"></style>
|
|
|
|
|
|