|
@@ -1,103 +1,120 @@
|
|
<template>
|
|
<template>
|
|
- <el-form label-width="80px" :model="formData">
|
|
|
|
- <el-form-item label="选择模板" prop="swiperType">
|
|
|
|
- <el-radio-group v-model="formData.swiperType">
|
|
|
|
- <el-tooltip class="item" content="一行一个" placement="bottom">
|
|
|
|
- <el-radio-button :label="0">
|
|
|
|
- <Icon icon="icon-park-twotone:multi-picture-carousel" />
|
|
|
|
- </el-radio-button>
|
|
|
|
- </el-tooltip>
|
|
|
|
- <el-tooltip class="item" content="轮播海报" placement="bottom">
|
|
|
|
- <el-radio-button :label="1">
|
|
|
|
- <Icon icon="system-uicons:carousel" />
|
|
|
|
- </el-radio-button>
|
|
|
|
- </el-tooltip>
|
|
|
|
- <el-tooltip class="item" content="多图单行" placement="bottom">
|
|
|
|
- <el-radio-button :label="2">
|
|
|
|
- <Icon icon="icon-park-twotone:carousel" />
|
|
|
|
- </el-radio-button>
|
|
|
|
- </el-tooltip>
|
|
|
|
- <el-tooltip class="item" content="立体轮播" placement="bottom">
|
|
|
|
- <el-radio-button :label="3">
|
|
|
|
- <Icon icon="ic:round-view-carousel" />
|
|
|
|
- </el-radio-button>
|
|
|
|
- </el-tooltip>
|
|
|
|
- </el-radio-group>
|
|
|
|
- </el-form-item>
|
|
|
|
-
|
|
|
|
- <el-text tag="p">添加图片</el-text>
|
|
|
|
- <el-text type="info" size="small"> 拖动左上角的小圆点可对其排序 </el-text>
|
|
|
|
-
|
|
|
|
- <!-- 图片广告 -->
|
|
|
|
- <div v-if="formData.items[0]">
|
|
|
|
- <draggable
|
|
|
|
- :list="formData.items"
|
|
|
|
- :force-fallback="true"
|
|
|
|
- :animation="200"
|
|
|
|
- handle=".drag-icon"
|
|
|
|
- class="m-t-8px"
|
|
|
|
- >
|
|
|
|
- <template #item="{ element, index }">
|
|
|
|
- <div class="mb-4px flex flex-row gap-4px rounded bg-gray-100 p-8px">
|
|
|
|
- <div class="flex flex-col items-start justify-between">
|
|
|
|
- <Icon icon="ic:round-drag-indicator" class="drag-icon cursor-move" />
|
|
|
|
- <Icon
|
|
|
|
- icon="ep:delete"
|
|
|
|
- class="cursor-pointer text-red-5"
|
|
|
|
- @click="handleDeleteImage(index)"
|
|
|
|
- v-if="formData.items.length > 1"
|
|
|
|
- />
|
|
|
|
- </div>
|
|
|
|
- <div class="flex flex-1 flex-col items-center justify-between gap-8px">
|
|
|
|
- <UploadImg
|
|
|
|
- v-model="element.imgUrl"
|
|
|
|
- draggable="false"
|
|
|
|
- height="80px"
|
|
|
|
- width="100%"
|
|
|
|
- class="min-w-80px"
|
|
|
|
- />
|
|
|
|
- <!-- 标题 -->
|
|
|
|
- <el-input v-model="element.title" placeholder="标题,选填" />
|
|
|
|
- <!-- 输入链接 -->
|
|
|
|
- <el-input placeholder="链接,选填" v-model="element.link" />
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <ComponentContainerProperty v-model="formData.style">
|
|
|
|
+ <el-form label-width="80px" :model="formData">
|
|
|
|
+ <el-card header="样式设置" class="property-group" shadow="never">
|
|
|
|
+ <el-form-item label="样式" prop="type">
|
|
|
|
+ <el-radio-group v-model="formData.type">
|
|
|
|
+ <el-tooltip class="item" content="默认" placement="bottom">
|
|
|
|
+ <el-radio-button label="default">
|
|
|
|
+ <Icon icon="system-uicons:carousel" />
|
|
|
|
+ </el-radio-button>
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ <el-tooltip class="item" content="卡片" placement="bottom">
|
|
|
|
+ <el-radio-button label="card">
|
|
|
|
+ <Icon icon="ic:round-view-carousel" />
|
|
|
|
+ </el-radio-button>
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="指示器" prop="indicator">
|
|
|
|
+ <el-radio-group v-model="formData.indicator">
|
|
|
|
+ <el-radio label="dot">小圆点</el-radio>
|
|
|
|
+ <el-radio label="number">数字</el-radio>
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="是否轮播" prop="autoplay">
|
|
|
|
+ <el-switch v-model="formData.autoplay" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="播放间隔" prop="interval" v-if="formData.autoplay">
|
|
|
|
+ <el-slider
|
|
|
|
+ v-model="formData.interval"
|
|
|
|
+ :max="10"
|
|
|
|
+ :min="0.5"
|
|
|
|
+ :step="0.5"
|
|
|
|
+ show-input
|
|
|
|
+ input-size="small"
|
|
|
|
+ :show-input-controls="false"
|
|
|
|
+ />
|
|
|
|
+ <el-text type="info">单位:秒</el-text>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-card>
|
|
|
|
+ <el-card header="内容设置" class="property-group" shadow="never">
|
|
|
|
+ <el-text type="info" size="small"> 拖动左上角的小圆点可对其排序 </el-text>
|
|
|
|
+ <template v-if="formData.items[0]">
|
|
|
|
+ <draggable
|
|
|
|
+ :list="formData.items"
|
|
|
|
+ :force-fallback="true"
|
|
|
|
+ :animation="200"
|
|
|
|
+ handle=".drag-icon"
|
|
|
|
+ class="m-t-8px"
|
|
|
|
+ item-key="index"
|
|
|
|
+ >
|
|
|
|
+ <template #item="{ element, index }">
|
|
|
|
+ <div class="content mb-4px flex flex-col gap-4px rounded bg-gray-50 p-8px">
|
|
|
|
+ <div
|
|
|
|
+ class="m--8px m-b-8px flex flex-row items-center justify-between bg-gray-100 p-8px"
|
|
|
|
+ >
|
|
|
|
+ <Icon icon="ic:round-drag-indicator" class="drag-icon cursor-move" />
|
|
|
|
+ <Icon
|
|
|
|
+ icon="ep:delete"
|
|
|
|
+ class="cursor-pointer text-red-5"
|
|
|
|
+ @click="handleDeleteImage(index)"
|
|
|
|
+ v-if="formData.items.length > 1"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <el-form-item label="类型" prop="type" class="m-b-8px!" label-width="50px">
|
|
|
|
+ <el-radio-group v-model="element.type">
|
|
|
|
+ <el-radio label="img">图片</el-radio>
|
|
|
|
+ <el-radio label="video">视频</el-radio>
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item
|
|
|
|
+ label="图片"
|
|
|
|
+ class="m-b-8px!"
|
|
|
|
+ label-width="50px"
|
|
|
|
+ v-if="element.type === 'img'"
|
|
|
|
+ >
|
|
|
|
+ <UploadImg
|
|
|
|
+ v-model="element.imgUrl"
|
|
|
|
+ draggable="false"
|
|
|
|
+ height="80px"
|
|
|
|
+ width="100%"
|
|
|
|
+ class="min-w-80px"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <template v-else>
|
|
|
|
+ <el-form-item label="封面" class="m-b-8px!" label-width="50px">
|
|
|
|
+ <UploadImg
|
|
|
|
+ v-model="element.imgUrl"
|
|
|
|
+ draggable="false"
|
|
|
|
+ height="80px"
|
|
|
|
+ width="100%"
|
|
|
|
+ class="min-w-80px"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="视频" class="m-b-8px!" label-width="50px">
|
|
|
|
+ <UploadFile
|
|
|
|
+ v-model="element.videoUrl"
|
|
|
|
+ :file-type="['mp4']"
|
|
|
|
+ :limit="1"
|
|
|
|
+ :file-size="100"
|
|
|
|
+ class="min-w-80px"
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </template>
|
|
|
|
+ <el-form-item label="链接" class="m-b-8px!" label-width="50px">
|
|
|
|
+ <el-input placeholder="链接" v-model="element.url" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </draggable>
|
|
</template>
|
|
</template>
|
|
- </draggable>
|
|
|
|
- </div>
|
|
|
|
- <el-button @click="handleAddImage" type="primary" plain class="w-full"> 添加图片 </el-button>
|
|
|
|
- <el-form-item label="一行个数" prop="rowIndividual" v-show="formData.swiperType === 2">
|
|
|
|
- <!-- 单选框 -->
|
|
|
|
- <el-radio-group v-model="formData.rowIndividual">
|
|
|
|
- <el-radio :label="2">2个</el-radio>
|
|
|
|
- <el-radio :label="3">3个</el-radio>
|
|
|
|
- <el-radio :label="4">4个</el-radio>
|
|
|
|
- <el-radio :label="5">5个</el-radio>
|
|
|
|
- <el-radio :label="6">6个</el-radio>
|
|
|
|
- </el-radio-group>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="分页类型" prop="pagingType">
|
|
|
|
- <el-radio-group v-model="formData.pagingType">
|
|
|
|
- <el-radio :label="0">不显示</el-radio>
|
|
|
|
- <el-radio label="bullets">样式一</el-radio>
|
|
|
|
- <el-radio label="fraction">样式二</el-radio>
|
|
|
|
- <el-radio label="progressbar">样式三</el-radio>
|
|
|
|
- </el-radio-group>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="图片圆角" prop="borderRadius">
|
|
|
|
- <el-slider v-model="formData.borderRadius" :max="30" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="页面边距" prop="pageMargin" v-show="formData.swiperType === 0">
|
|
|
|
- <el-slider v-model="formData.pageMargin" :max="20" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item
|
|
|
|
- label="图片边距"
|
|
|
|
- prop="imageMargin"
|
|
|
|
- v-show="formData.swiperType === 0 || formData.swiperType === 2"
|
|
|
|
- >
|
|
|
|
- <el-slider v-model="formData.imageMargin" :max="20" />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-form>
|
|
|
|
|
|
+ <el-button @click="handleAddImage" type="primary" plain class="w-full">
|
|
|
|
+ 添加图片
|
|
|
|
+ </el-button>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-form>
|
|
|
|
+ </ComponentContainerProperty>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
@@ -117,7 +134,7 @@ const handleAddImage = () => {
|
|
formData.value.items.push({} as CarouselItemProperty)
|
|
formData.value.items.push({} as CarouselItemProperty)
|
|
}
|
|
}
|
|
// 删除图片
|
|
// 删除图片
|
|
-const handleDeleteImage = (index) => {
|
|
|
|
|
|
+const handleDeleteImage = (index: number) => {
|
|
formData.value.items.splice(index, 1)
|
|
formData.value.items.splice(index, 1)
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|