Merge remote-tracking branch 'origin/dev-yxl' into dev-sws

v1.0.0
sws 2024-09-06 13:41:24 +08:00
commit 4e0d30a860
25 changed files with 120 additions and 100 deletions

View File

@ -4,7 +4,7 @@
<card-container> <card-container>
<div class="mb-12">文本设置</div> <div class="mb-12">文本设置</div>
<el-form-item label="文本内容"> <el-form-item label="文本内容">
<el-input v-model="form.text_title" placeholder="请输入文本内容" type="textarea" :rows="3" @input="text_change('1')"></el-input> <el-input v-model="form.text_title" placeholder="请输入文本内容" type="textarea" clearable :rows="3" @input="text_change('1')"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据字段"> <el-form-item label="数据字段">
<el-select v-model="form.data_source_id" value-key="id" clearable filterable placeholder="请选择图片数据字段" size="default" class="flex-1" @change="text_change('2')"> <el-select v-model="form.data_source_id" value-key="id" clearable filterable placeholder="请选择图片数据字段" size="default" class="flex-1" @change="text_change('2')">

View File

@ -10,7 +10,7 @@
</template> </template>
</el-image> </el-image>
<template v-if="index === edit_index"> <template v-if="index === edit_index">
<el-input v-model="row.new_title" placeholder="请输入链接" type="textarea" class="flex-1 do-not-trigger" :rows="2"></el-input> <el-input v-model="row.new_title" placeholder="请输入链接" type="textarea" class="flex-1 do-not-trigger" clearable :rows="2"></el-input>
</template> </template>
<template v-else> <template v-else>
<div class="flex-1 flex-width text-line-2 size-12 self-s do-not-trigger" @dblclick="double_click(index)">{{ !isEmpty(row.new_title) ? row.new_title : row.data.title }}</div> <div class="flex-1 flex-width text-line-2 size-12 self-s do-not-trigger" @dblclick="double_click(index)">{{ !isEmpty(row.new_title) ? row.new_title : row.data.title }}</div>

View File

@ -41,7 +41,7 @@
<div class="size-16 fw mb-10">图片热区</div> <div class="size-16 fw mb-10">图片热区</div>
<div class="flex-col gap-20 item"> <div class="flex-col gap-20 item">
<div v-for="(item, index) in hot_list.data" :key="index" class="flex-row align-c gap-10"> <div v-for="(item, index) in hot_list.data" :key="index" class="flex-row align-c gap-10">
<el-input v-model="item.name" class="name" placeholder="名称"></el-input> <el-input v-model="item.name" class="name" placeholder="名称" clearable></el-input>
<url-value v-model="item.link"></url-value> <url-value v-model="item.link"></url-value>
<icon name="del" size="20" @click="del_event(index)"></icon> <icon name="del" size="20" @click="del_event(index)"></icon>
</div> </div>
@ -66,7 +66,7 @@
<div class="content"> <div class="content">
<el-form ref="formRef" :model="form" label-width="85px" class="pa-20 mt-16"> <el-form ref="formRef" :model="form" label-width="85px" class="pa-20 mt-16">
<el-form-item label="名称"> <el-form-item label="名称">
<el-input v-model="form.name" placeholder="请输入名称"></el-input> <el-input v-model="form.name" placeholder="请输入名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="热区跳转链接"> <el-form-item label="热区跳转链接">
<url-value v-model="form.link"></url-value> <url-value v-model="form.link"></url-value>

View File

@ -22,7 +22,7 @@
<el-radio v-for="item in base_list.shopping_button_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio> <el-radio v-for="item in base_list.shopping_button_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</el-radio-group> </el-radio-group>
<template v-if="form.shop_type == 'text'"> <template v-if="form.shop_type == 'text'">
<el-input v-model="form.shop_button_text" placeholder="请输入按钮文字"></el-input> <el-input v-model="form.shop_button_text" placeholder="请输入按钮文字" clearable></el-input>
</template> </template>
<template v-else> <template v-else>
<upload v-model:icon-value="form.shop_button_icon_class" is-icon type="icon" :limit="1" size="50"></upload> <upload v-model:icon-value="form.shop_button_icon_class" is-icon type="icon" :limit="1" size="50"></upload>

View File

@ -8,13 +8,13 @@
<div class="mt-16 pa-20"> <div class="mt-16 pa-20">
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="60" status-icon> <el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="60" status-icon>
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="form.name" placeholder="请输入名称"></el-input> <el-input v-model="form.name" placeholder="请输入名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="路径" prop="path"> <el-form-item label="路径" prop="path">
<el-input v-model="form.path" placeholder="请输入路径"></el-input> <el-input v-model="form.path" placeholder="请输入路径" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序"> <el-form-item label="排序">
<el-input v-model="form.sort" placeholder="请输入排序"></el-input> <el-input v-model="form.sort" placeholder="请输入排序" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否启用"> <el-form-item label="是否启用">
<el-switch v-model="form.is_enable" active-value="1" inactive-value="0"></el-switch> <el-switch v-model="form.is_enable" active-value="1" inactive-value="0"></el-switch>

View File

@ -16,7 +16,7 @@
<div v-if="upload_type !== 'icon'" class="flex-row gap-40"> <div v-if="upload_type !== 'icon'" class="flex-row gap-40">
<div class="left-content"> <div class="left-content">
<div class="flex-row align-c gap-10 mb-10"> <div class="flex-row align-c gap-10 mb-10">
<el-input v-model="search_filter" placeholder="请输入分类名称"> <el-input v-model="search_filter" placeholder="请输入分类名称" clearable>
<template #prefix> <template #prefix>
<icon name="search" size="18"></icon> <icon name="search" size="18"></icon>
</template> </template>
@ -111,7 +111,7 @@
</div> </div>
<div class="text-line-1 name" @click.stop> <div class="text-line-1 name" @click.stop>
<template v-if="edit_index !== -1 && edit_index === index"> <template v-if="edit_index !== -1 && edit_index === index">
<el-input v-model="item.original" v-focus type="text" placeholder="请输入内容" size="small" @blur="edit_index = -1" @keydown="edit_input_keydown" @change="edit_input_change" /> <el-input v-model="item.original" v-focus type="text" placeholder="请输入内容" size="small" clearable @blur="edit_index = -1" @keydown="edit_input_keydown" @change="edit_input_change" />
</template> </template>
<template v-else> <template v-else>
<div class="ptb-1 plr-7 c-pointer no-select" @dblclick.prevent="edit_index = index"> <div class="ptb-1 plr-7 c-pointer no-select" @dblclick.prevent="edit_index = index">

View File

@ -9,28 +9,28 @@
<el-form ref="ruleFormRef" :model="form" label-width="85px" status-icon> <el-form ref="ruleFormRef" :model="form" label-width="85px" status-icon>
<template v-if="custom_type_active == 0"> <template v-if="custom_type_active == 0">
<el-form-item label="跳转路径" prop="link" :rules="link"> <el-form-item label="跳转路径" prop="link" :rules="link">
<el-input v-model="form.link" class="link-input" placeholder="请输入跳转路径" /> <el-input v-model="form.link" class="link-input" placeholder="请输入跳转路径" clearable />
</el-form-item> </el-form-item>
</template> </template>
<template v-if="custom_type_active == 1"> <template v-if="custom_type_active == 1">
<el-form-item label="APPID" prop="app_id" :rules="app_id"> <el-form-item label="APPID" prop="app_id" :rules="app_id">
<el-input v-model="form.app_id" class="link-input" placeholder="请输入小程序APPID" /> <el-input v-model="form.app_id" class="link-input" placeholder="请输入小程序APPID" clearable />
</el-form-item> </el-form-item>
<el-form-item label="小程序路径" prop="app_link" :rules="app_link"> <el-form-item label="小程序路径" prop="app_link" :rules="app_link">
<el-input v-model="form.app_link" class="link-input" placeholder="请输入小程序路径" /> <el-input v-model="form.app_link" class="link-input" placeholder="请输入小程序路径" clearable />
</el-form-item> </el-form-item>
</template> </template>
<template v-if="custom_type_active == 2"> <template v-if="custom_type_active == 2">
<el-form-item label="电话号码" prop="phone" :rules="phone"> <el-form-item label="电话号码" prop="phone" :rules="phone">
<el-input v-model="form.phone" class="link-input" placeholder="请输入电话号码" /> <el-input v-model="form.phone" class="link-input" placeholder="请输入电话号码" clearable />
</el-form-item> </el-form-item>
</template> </template>
<template v-if="custom_type_active == 3"> <template v-if="custom_type_active == 3">
<el-form-item label="名称" prop="name" :rules="name"> <el-form-item label="名称" prop="name" :rules="name">
<el-input v-model="form.name" class="link-input" placeholder="请输入名称" /> <el-input v-model="form.name" class="link-input" placeholder="请输入名称" clearable />
</el-form-item> </el-form-item>
<el-form-item label="详细地址" prop="address" :rules="address"> <el-form-item label="详细地址" prop="address" :rules="address">
<el-input v-model="form.address" class="link-input" placeholder="请输入地址" type="1" @change="address_change" /> <el-input v-model="form.address" class="link-input" placeholder="请输入地址" type="1" clearable @change="address_change" />
</el-form-item> </el-form-item>
<el-form-item label="经纬度"> <el-form-item label="经纬度">
<maps v-model="map_address" :type="common_map_type" @point="map_point"></maps> <maps v-model="map_address" :type="common_map_type" @point="map_point"></maps>

View File

@ -52,7 +52,7 @@
<template v-if="custom_type_active === 2"> <template v-if="custom_type_active === 2">
<el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="85px" status-icon> <el-form ref="ruleFormRef" :model="form" :rules="rules" label-width="85px" status-icon>
<el-form-item label="关键字" prop="key"> <el-form-item label="关键字" prop="key">
<el-input v-model="form.key" class="link-input" placeholder="请输入关键字" /> <el-input v-model="form.key" class="link-input" placeholder="请输入关键字" clearable />
</el-form-item> </el-form-item>
<el-button type="primary" class="hide" @click="on_submit">Create</el-button> <el-button type="primary" class="hide" @click="on_submit">Create</el-button>
</el-form> </el-form>

View File

@ -39,10 +39,10 @@
</template> </template>
<template v-if="form.theme === '4'"> <template v-if="form.theme === '4'">
<el-form-item label="内容标题"> <el-form-item label="内容标题">
<el-input v-model="form.title" placeholder="请输入内容"></el-input> <el-input v-model="form.title" placeholder="请输入内容" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内容描述"> <el-form-item label="内容描述">
<el-input v-model="form.desc" type="textarea" :rows="4" placeholder="请输入内容"></el-input> <el-input v-model="form.desc" type="textarea" :rows="4" placeholder="请输入内容" clearable></el-input>
</el-form-item> </el-form-item>
</template> </template>
</card-container> </card-container>

View File

@ -9,8 +9,8 @@
</el-select> </el-select>
<div v-if="!isEmpty(form.data_source_content)" class="flex-row mt-20 gap-20"> <div v-if="!isEmpty(form.data_source_content)" class="flex-row mt-20 gap-20">
<div class="re flex align-c"> <div class="re flex align-c">
<image-empty v-model="form.data_source_content[form.img_key]" style="width: 10rem; height: 10rem"></image-empty> <image-empty v-model="form.data_source_content[form.img_key]" fit="contain" style="width: 10rem;height: 10rem" error-img-style="width: 3rem; height: 3rem;"></image-empty>
<div class="plr-15 bg-f abs replace-data size-14" @click="replace_data"></div> <div class="plr-10 bg-f abs replace-data size-10 box-shadow-sm" @click="replace_data"></div>
</div> </div>
<div class="flex-1 size-14 text-line-3">{{ form.data_source_content.title || form.data_source_content.name }}</div> <div class="flex-1 size-14 text-line-3">{{ form.data_source_content.title || form.data_source_content.name }}</div>
</div> </div>
@ -166,6 +166,7 @@ const changeDataSource = (key: string) => {
const url_value_dialog_call_back = (item: any[]) => { const url_value_dialog_call_back = (item: any[]) => {
if (item.length > 0) { if (item.length > 0) {
form.data_source_content = item[0]; form.data_source_content = item[0];
form.data_source_content_value = item[0].id;
} else { } else {
form.data_source_content = {}; form.data_source_content = {};
} }
@ -226,9 +227,11 @@ const replace_data = () => {
} }
} }
.replace-data { .replace-data {
bottom: 1rem; height: 2.4rem;
left: 0.5rem; bottom: 0.5rem;
left: 2.1rem;
line-height: 2.4rem;
border-radius: 2rem; border-radius: 2rem;
border: 1px solid #ccc; cursor: pointer;
} }
</style> </style>

View File

@ -8,10 +8,10 @@
</el-form-item> </el-form-item>
<template v-if="form.data_type === 'goods' && isShowTitle"> <template v-if="form.data_type === 'goods' && isShowTitle">
<el-form-item label="主标题"> <el-form-item label="主标题">
<el-input v-model="form.heading_title" placeholder="请输入主标题"></el-input> <el-input v-model="form.heading_title" placeholder="请输入主标题" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="副标题"> <el-form-item label="副标题">
<el-input v-model="form.subtitle" placeholder="请输入副标题"></el-input> <el-input v-model="form.subtitle" placeholder="请输入副标题" clearable></el-input>
</el-form-item> </el-form-item>
</template> </template>
</card-container> </card-container>

View File

@ -3,7 +3,7 @@
<el-form :model="form" label-width="80"> <el-form :model="form" label-width="80">
<card-container> <card-container>
<div class="mb-12">展示风格</div> <div class="mb-12">展示风格</div>
<el-form-item label="选择风格"> <el-form-item label="选择风格" label-width="60">
<div class="flex align-c flex-wrap gap-10"> <div class="flex align-c flex-wrap gap-10">
<div v-for="(item, index) in style_list" :key="index" :class="['flex-item', {'flex-item-actived': form.style_actived === index }]" @click="style_click(index)"> <div v-for="(item, index) in style_list" :key="index" :class="['flex-item', {'flex-item-actived': form.style_actived === index }]" @click="style_click(index)">
<icon :name="item" :color="`${ form.style_actived === index ? '#E1EEF9' : '#EDEDED'}`" size="30"></icon> <icon :name="item" :color="`${ form.style_actived === index ? '#E1EEF9' : '#EDEDED'}`" size="30"></icon>

View File

@ -38,11 +38,11 @@
<div class="tips mt-10 mb-20 size-12">最多添加{{ form.nav_content_list.length }}张图片建议尺寸90*90px</div> <div class="tips mt-10 mb-20 size-12">最多添加{{ form.nav_content_list.length }}张图片建议尺寸90*90px</div>
<drag :data="form.nav_content_list" type="card" :space-col="27" @remove="remove" @on-sort="on_sort"> <drag :data="form.nav_content_list" type="card" :space-col="27" @remove="remove" @on-sort="on_sort">
<template #default="scoped"> <template #default="scoped">
<div class="flex-row align-c jc-c"> <div class="flex-row align-c jc-c w h">
<upload v-model="scoped.row.img" :limit="1" size="72"></upload> <upload v-model="scoped.row.img" :limit="1" size="72"></upload>
<div class="flex-col align-c jc-c gap-20"> <div class="flex-col flex-1 jc-c gap-20">
<el-form-item label="标题" class="mb-0" label-width="50"> <el-form-item label="标题" class="mb-0" label-width="50">
<el-input v-model="scoped.row.title" placeholder="请输入标题" maxlength="4" show-word-limit></el-input> <el-input v-model="scoped.row.title" placeholder="请输入标题" maxlength="4" show-word-limit clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="链接" class="w mb-0" label-width="50"> <el-form-item label="链接" class="w mb-0" label-width="50">
<url-value v-model="scoped.row.link"></url-value> <url-value v-model="scoped.row.link"></url-value>

View File

@ -23,7 +23,7 @@
<upload v-model="form.img_src" v-model:icon-value="form.icon_class" is-icon :limit="1" size="50"></upload> <upload v-model="form.img_src" v-model:icon-value="form.icon_class" is-icon :limit="1" size="50"></upload>
</el-form-item> </el-form-item>
<el-form-item v-if="is_text" label="标题文字"> <el-form-item v-if="is_text" label="标题文字">
<el-input v-model="form.title" placeholder="请输入标题" maxlength="4" show-word-limit></el-input> <el-input v-model="form.title" placeholder="请输入标题" maxlength="4" show-word-limit clearable></el-input>
</el-form-item> </el-form-item>
<template v-if="!is_card"> <template v-if="!is_card">
<el-form-item label="滚动方式"> <el-form-item label="滚动方式">
@ -57,7 +57,7 @@
<template #default="scoped"> <template #default="scoped">
<div class="flex-col align-c jc-s gap-20 flex-1"> <div class="flex-col align-c jc-s gap-20 flex-1">
<el-form-item label="标题" class="w mb-0" label-width="40"> <el-form-item label="标题" class="w mb-0" label-width="40">
<el-input v-model="scoped.row.notice_title" placeholder="请输入标题" maxlength="20" show-word-limit></el-input> <el-input v-model="scoped.row.notice_title" placeholder="请输入标题" maxlength="20" show-word-limit clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="链接" class="w mb-0" label-width="40"> <el-form-item label="链接" class="w mb-0" label-width="40">
<url-value v-model="scoped.row.notice_link"></url-value> <url-value v-model="scoped.row.notice_link"></url-value>

View File

@ -19,7 +19,7 @@
</el-row> </el-row>
<el-row v-if="form.is_tips_show == '1'" class="mt-10 w"> <el-row v-if="form.is_tips_show == '1'" class="mt-10 w">
<el-col :span="24"> <el-col :span="24">
<el-input v-model="form.tips" placeholder="请输入提示文字"></el-input> <el-input v-model="form.tips" placeholder="请输入提示文字" clearable></el-input>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
@ -40,7 +40,7 @@
<upload v-model="form.search_botton_img" v-model:icon-value="form.search_botton_icon" is-icon :limit="1" size="50"></upload> <upload v-model="form.search_botton_img" v-model:icon-value="form.search_botton_icon" is-icon :limit="1" size="50"></upload>
</template> </template>
<template v-else> <template v-else>
<el-input v-model="form.search_tips" placeholder="请输入文字内容"></el-input> <el-input v-model="form.search_tips" placeholder="请输入文字内容" clearable></el-input>
</template> </template>
</el-col> </el-col>
</el-row> </el-row>
@ -51,7 +51,7 @@
<div class="mb-12">搜索热词</div> <div class="mb-12">搜索热词</div>
<drag :data="form.hot_word_list" @remove="remove" @on-sort="on_sort"> <drag :data="form.hot_word_list" @remove="remove" @on-sort="on_sort">
<template #default="scoped"> <template #default="scoped">
<el-input v-model="scoped.row.value" placeholder="请输入搜索热词" /> <el-input v-model="scoped.row.value" placeholder="请输入搜索热词" clearable />
<color-picker v-model="scoped.row.color" :default-color="'#000000'" @update:value="search_color_change($event, scoped.row)"></color-picker> <color-picker v-model="scoped.row.color" :default-color="'#000000'" @update:value="search_color_change($event, scoped.row)"></color-picker>
</template> </template>
</drag> </drag>

View File

@ -4,9 +4,7 @@
<card-container> <card-container>
<div class="mb-12">头部设置</div> <div class="mb-12">头部设置</div>
<el-form-item label="头部状态"> <el-form-item label="头部状态">
<el-radio-group v-model="form.head_state"> <el-switch v-model="form.head_state" active-value="1" inactive-value="0"></el-switch>
<el-radio v-for="item in base_list.state_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<template v-if="form.head_state == '1'"> <template v-if="form.head_state == '1'">
<el-form-item label="选择风格"> <el-form-item label="选择风格">
@ -25,17 +23,15 @@
</template> </template>
<template v-else> <template v-else>
<el-form-item label="标题文字"> <el-form-item label="标题文字">
<el-input v-model="form.topic_text" placeholder="请输入标题文字"></el-input> <el-input v-model="form.topic_text" placeholder="请输入标题文字" clearable></el-input>
</el-form-item> </el-form-item>
</template> </template>
<template v-if="form.theme != '2'"> <template v-if="form.theme != '2'">
<el-form-item label="按钮状态"> <el-form-item label="按钮状态">
<el-radio-group v-model="form.button_status"> <el-switch v-model="form.button_status" active-value="1" inactive-value="0"></el-switch>
<el-radio v-for="item in base_list.state_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="form.button_status == '1'" label="按钮文字"> <el-form-item v-if="form.button_status == '1'" label="按钮文字">
<el-input v-model="form.button_text" placeholder="请输入按钮文字"></el-input> <el-input v-model="form.button_text" placeholder="请输入按钮文字" clearable></el-input>
</el-form-item> </el-form-item>
</template> </template>
</template> </template>
@ -69,10 +65,12 @@
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="秒杀按钮"> <el-form-item label="秒杀按钮">
<div class="flex-col gap-10 w"> <el-row class="w">
<el-switch v-model="form.is_shop_show" active-value="1" inactive-value="0"></el-switch> <el-col :span="24"><el-switch v-model="form.is_shop_show" active-value="1" inactive-value="0"></el-switch></el-col>
<template v-if="form.is_shop_show == '1'"> </el-row>
<el-radio-group v-model="form.shop_type" @change="change_shop_type"> <el-row v-if="form.is_shop_show == '1'" class="mt-10 w">
<el-col :span="24">
<el-radio-group v-model="form.shop_type" class="mb-10" @change="change_shop_type">
<el-radio v-for="item in base_list.shopping_button_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio> <el-radio v-for="item in base_list.shopping_button_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</el-radio-group> </el-radio-group>
<template v-if="form.shop_type == 'text'"> <template v-if="form.shop_type == 'text'">
@ -81,18 +79,16 @@
<template v-else> <template v-else>
<upload v-model:icon-value="form.shop_button_icon_class" is-icon type="icon" :limit="1" size="50"></upload> <upload v-model:icon-value="form.shop_button_icon_class" is-icon type="icon" :limit="1" size="50"></upload>
</template> </template>
</template> </el-col>
</div> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="秒杀角标"> <el-form-item label="秒杀角标">
<div class="flex-col gap-10 w"> <el-row class="w">
<el-radio-group v-model="form.seckill_subscript_show"> <el-col :span="24"><el-switch v-model="form.seckill_subscript_show" active-value="1" inactive-value="0"></el-switch></el-col>
<el-radio v-for="item in base_list.state_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio> </el-row>
</el-radio-group> <el-row v-if="form.seckill_subscript_show == '1'" class="mt-10 w">
<template v-if="form.seckill_subscript_show == '1'"> <el-col :span="24"><el-input v-model="form.subscript_text" placeholder="请输入秒杀文字" clearable></el-input></el-col>
<el-input v-model="form.subscript_text" placeholder="请输入秒杀文字"></el-input> </el-row>
</template>
</div>
</el-form-item> </el-form-item>
</card-container> </card-container>
</el-form> </el-form>
@ -128,10 +124,6 @@ watchEffect(() => {
}); });
const base_list = { const base_list = {
state_list: [
{ name: '显示', value: '1' },
{ name: '隐藏', value: '0' },
],
themeList: [ themeList: [
{ id: '1', name: '风格1', url: new URL(`../../assets/images/components/model-seckill/theme-1.png`, import.meta.url).href }, { id: '1', name: '风格1', url: new URL(`../../assets/images/components/model-seckill/theme-1.png`, import.meta.url).href },
{ id: '2', name: '风格2', url: new URL(`../../assets/images/components/model-seckill/theme-2.png`, import.meta.url).href }, { id: '2', name: '风格2', url: new URL(`../../assets/images/components/model-seckill/theme-2.png`, import.meta.url).href },

View File

@ -7,20 +7,21 @@
<el-form-item v-if="data.topic_type == 'text'" label="标题设置"> <el-form-item v-if="data.topic_type == 'text'" label="标题设置">
<color-text-size-group v-model:color="form.title_color" v-model:size="form.title_size" :default-color="clone_form.title_color" :type-list="['color', 'size']"></color-text-size-group> <color-text-size-group v-model:color="form.title_color" v-model:size="form.title_size" :default-color="clone_form.title_color" :type-list="['color', 'size']"></color-text-size-group>
</el-form-item> </el-form-item>
<el-form-item v-if="data.button_status == '1'" label="按钮设置">
<color-text-size-group v-model:color="form.head_button_color" v-model:size="form.head_button_size" :default-color="clone_form.head_button_color" :type-list="['color', 'size']"></color-text-size-group>
</el-form-item>
<el-form-item label="秒杀提示"> <el-form-item label="秒杀提示">
<color-picker v-model="form.end_text_color" :default-color="clone_form.end_text_color"></color-picker> <color-picker v-model="form.end_text_color" :default-color="clone_form.end_text_color"></color-picker>
</el-form-item> </el-form-item>
<el-form-item label="数字背景"> <el-form-item label="时间背景">
<mult-color-picker :value="form.countdown_bg_color_list" :type="form.countdown_direction" @update:value="countdown_color_picker_event"></mult-color-picker> <mult-color-picker :value="form.countdown_bg_color_list" :type="form.countdown_direction" @update:value="countdown_color_picker_event"></mult-color-picker>
</el-form-item> </el-form-item>
<el-form-item label="数字"> <el-form-item label="时间颜色">
<color-picker v-model="form.countdown_color" :default-color="clone_form.countdown_color"></color-picker> <color-picker v-model="form.countdown_color" :default-color="clone_form.countdown_color"></color-picker>
</el-form-item> </el-form-item>
<el-form-item label="顶部背景"> <el-form-item v-if="data.button_status == '1'" label="按钮设置">
<color-text-size-group v-model:color="form.head_button_color" v-model:size="form.head_button_size" :default-color="clone_form.head_button_color" :type-list="['color', 'size']"></color-text-size-group>
</el-form-item>
<el-form-item label="头部背景">
<div class="flex-col gap-10"> <div class="flex-col gap-10">
<div class="size-12">背景色</div>
<mult-color-picker :value="form.header_background_color_list" :type="form.header_background_direction" @update:value="mult_color_picker_event"></mult-color-picker> <mult-color-picker :value="form.header_background_color_list" :type="form.header_background_direction" @update:value="mult_color_picker_event"></mult-color-picker>
<div class="flex-row jc-sb align-c"> <div class="flex-row jc-sb align-c">
<div class="size-12">背景图</div> <div class="size-12">背景图</div>
@ -114,7 +115,7 @@
</card-container> </card-container>
</template> </template>
<!-- 进度条设置 --> <!-- 进度条设置 -->
<template v-if="data.shop_style_type == '1'"> <!-- <template v-if="data.shop_style_type == '1'">
<div class="divider-line"></div> <div class="divider-line"></div>
<card-container> <card-container>
<div class="mb-12">进度条设置</div> <div class="mb-12">进度条设置</div>
@ -134,7 +135,7 @@
<color-picker v-model="form.progress_text_color"></color-picker> <color-picker v-model="form.progress_text_color"></color-picker>
</el-form-item> </el-form-item>
</card-container> </card-container>
</template> </template> -->
<!-- 轮播设置 --> <!-- 轮播设置 -->
<template v-if="data.shop_style_type == '3'"> <template v-if="data.shop_style_type == '3'">
<div class="divider-line"></div> <div class="divider-line"></div>

View File

@ -24,7 +24,7 @@
<template #default="scoped"> <template #default="scoped">
<div class="flex-col align-c jc-s gap-20 flex-1 w"> <div class="flex-col align-c jc-s gap-20 flex-1 w">
<el-form-item label="显示文字" class="w mb-0"> <el-form-item label="显示文字" class="w mb-0">
<el-input v-model="scoped.row.title" placeholder="请输入标题文字" /> <el-input v-model="scoped.row.title" placeholder="请输入标题文字" clearable />
</el-form-item> </el-form-item>
<el-form-item label="数据类型" class="w mb-0"> <el-form-item label="数据类型" class="w mb-0">
<el-radio-group v-model="scoped.row.data_type"> <el-radio-group v-model="scoped.row.data_type">
@ -33,7 +33,6 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="scoped.row.data_type == 'micro_page' ? '微页面' : '商品分类'" class="w mb-0"> <el-form-item :label="scoped.row.data_type == 'micro_page' ? '微页面' : '商品分类'" class="w mb-0">
<!-- <el-input v-model="scoped.row.classify" placeholder="请选择页面" /> -->
<template v-if="scoped.row.data_type == 'micro_page'"> <template v-if="scoped.row.data_type == 'micro_page'">
<url-value v-model="scoped.row.micro_page_list"></url-value> <url-value v-model="scoped.row.micro_page_list"></url-value>
</template> </template>

View File

@ -4,7 +4,7 @@
<card-container> <card-container>
<div class="mb-12">标题设置</div> <div class="mb-12">标题设置</div>
<el-form-item label="标题名字"> <el-form-item label="标题名字">
<el-input v-model="form.title" placeholder="请输入标题"></el-input> <el-input v-model="form.title" placeholder="请输入标题" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="标题链接"> <el-form-item label="标题链接">
<url-value v-model="form.title_link"></url-value> <url-value v-model="form.title_link"></url-value>
@ -30,7 +30,7 @@
<template #default="scoped"> <template #default="scoped">
<div class="flex-col align-c jc-s gap-20 flex-1"> <div class="flex-col align-c jc-s gap-20 flex-1">
<el-form-item label="名称" label-width="40" class="w mb-0"> <el-form-item label="名称" label-width="40" class="w mb-0">
<el-input v-model="scoped.row.title" placeholder="请输入标题"></el-input> <el-input v-model="scoped.row.title" placeholder="请输入标题" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="链接" label-width="40" class="w mb-0"> <el-form-item label="链接" label-width="40" class="w mb-0">
<url-value v-model="scoped.row.link"></url-value> <url-value v-model="scoped.row.link"></url-value>
@ -55,7 +55,7 @@
</el-form-item> </el-form-item>
<template v-if="form.right_show == '1'"> <template v-if="form.right_show == '1'">
<el-form-item label="右侧文字"> <el-form-item label="右侧文字">
<el-input v-model="form.right_title" placeholder="请输入标题"></el-input> <el-input v-model="form.right_title" placeholder="请输入标题" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="链接"> <el-form-item label="链接">
<url-value v-model="form.right_link"></url-value> <url-value v-model="form.right_link"></url-value>

View File

@ -14,7 +14,7 @@
</el-form-item> </el-form-item>
<template v-if="['1', '2'].includes(form.theme)"> <template v-if="['1', '2'].includes(form.theme)">
<el-form-item label="页面标题"> <el-form-item label="页面标题">
<el-input v-model="form.title" placeholder="请输入标题名称"></el-input> <el-input v-model="form.title" placeholder="请输入标题名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="链接地址"> <el-form-item label="链接地址">
<url-value v-model="form.link"></url-value> <url-value v-model="form.link"></url-value>
@ -42,7 +42,7 @@
</template> </template>
<template v-if="['4', '5'].includes(form.theme)"> <template v-if="['4', '5'].includes(form.theme)">
<el-form-item label="定位名称"> <el-form-item label="定位名称">
<el-input v-model="form.positioning_name" placeholder="请输入默认定位名称"></el-input> <el-input v-model="form.positioning_name" placeholder="请输入默认定位名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="箭头按钮"> <el-form-item label="箭头按钮">
<el-radio-group v-model="form.is_arrows_show"> <el-radio-group v-model="form.is_arrows_show">

View File

@ -5,7 +5,8 @@ interface defaultSearch {
height: number; height: number;
img_key: string; img_key: string;
data_source: string; data_source: string;
data_source_content: string[]; data_source_content_value: string;
data_source_content: object;
custom_list: string[]; custom_list: string[];
}; };
style: { style: {
@ -16,7 +17,8 @@ const defaultSearch: defaultSearch = {
content: { content: {
height: 390, height: 390,
img_key: '', img_key: '',
data_source_content: [], data_source_content_value: '',
data_source_content: {},
data_source:'', data_source:'',
custom_list: [] custom_list: []
}, },

View File

@ -39,14 +39,6 @@
display: none; display: none;
} }
} }
@media screen and (max-width: 1560px) {
.siderbar {
width: 32rem;
}
.drawer-container {
display: none;
}
}
.main { .main {
flex: 1; flex: 1;
position: relative; position: relative;
@ -272,6 +264,19 @@
} }
} }
} }
@media screen and (max-width: 1680px) {
.main .acticons .el-button {
width: 10rem;
}
}
@media screen and (max-width: 1560px) {
.siderbar {
width: 32rem;
}
.drawer-container {
display: none;
}
}
.seat { .seat {
background: transparent; background: transparent;
height: 0.2rem; height: 0.2rem;

View File

@ -58,14 +58,14 @@
<VueDraggable v-model="diy_data" :animation="500" :touch-start-threshold="2" group="people" class="drag-area re" ghost-class="ghost" :on-sort="on_sort" :on-start="on_start" :on-end="on_end"> <VueDraggable v-model="diy_data" :animation="500" :touch-start-threshold="2" group="people" class="drag-area re" ghost-class="ghost" :on-sort="on_sort" :on-start="on_start" :on-end="on_end">
<div v-for="(item, index) in diy_data" :key="item.id" :class="model_class(item)" :style="model_style(item)" @click="on_choose(index, item.show_tabs)"> <div v-for="(item, index) in diy_data" :key="item.id" :class="model_class(item)" :style="model_style(item)" @click="on_choose(index, item.show_tabs)">
<div v-if="item.show_tabs == '1'" class="plug-in-right" chosenClass="close"> <div v-if="item.show_tabs == '1'" class="plug-in-right" chosenClass="close">
<el-icon :class="`iconfont ${item.is_enable ? 'icon-eye' : 'icon-eye-close'}`" @click.stop="set_enable(index)" /> <el-icon :class="`iconfont ${item.is_enable == '1' ? 'icon-eye' : 'icon-eye-close'}`" @click.stop="set_enable(index)" />
<el-icon class="iconfont icon-del" @click.stop="del(index)" /> <el-icon class="iconfont icon-del" @click.stop="del(index)" />
<el-icon class="iconfont icon-copy" @click.stop="copy(index)" /> <el-icon class="iconfont icon-copy" @click.stop="copy(index)" />
<el-icon :class="['iconfont', 'icon-arrow-top', icon_arrow_disable(item.key, index, 'moveUp')]" @click.stop="moveUp(index, arrow_disable_method(item.key, index, 'moveUp'))" /> <el-icon :class="['iconfont', 'icon-arrow-top', icon_arrow_disable(item.key, index, 'moveUp')]" @click.stop="moveUp(index, arrow_disable_method(item.key, index, 'moveUp'))" />
<el-icon :class="['iconfont', 'icon-arrow-bottom', icon_arrow_disable(item.key, index, 'moveDown')]" @click.stop="moveDown(index, arrow_disable_method(item.key, index, 'moveDown'))" /> <el-icon :class="['iconfont', 'icon-arrow-bottom', icon_arrow_disable(item.key, index, 'moveDown')]" @click.stop="moveDown(index, arrow_disable_method(item.key, index, 'moveDown'))" />
</div> </div>
<div class="plug-in-name">{{ item.name }}</div> <div class="plug-in-name">{{ item.name }}</div>
<div class="main-content" :class="{ 'plug-in-close': !item.is_enable }" :style="main_content_style"> <div class="main-content" :class="{ 'plug-in-close': item.is_enable != '1' }" :style="main_content_style">
<!-- 基础组件 --> <!-- 基础组件 -->
<!-- 视频 --> <!-- 视频 -->
<template v-if="item.key == 'video'"> <template v-if="item.key == 'video'">
@ -281,20 +281,34 @@ const url_computer = (name: string) => {
// class // class
const model_class = computed(() => { const model_class = computed(() => {
return (item: { show_tabs: string; key: string; is_enable: boolean; id: string }) => { return (item: { show_tabs: string; key: string; id: string }) => {
return ['plug-in-table', { 'plug-in-border': item.show_tabs == '1', 'float-window': item.key == 'float-window', 'plug-in-animation': item.show_tabs != '1' && show_model_border }]; return ['plug-in-table', { 'plug-in-border': item.show_tabs == '1', 'float-window': item.key == 'float-window', 'plug-in-animation': item.show_tabs != '1' && show_model_border }];
}; };
}); });
const model_style = computed(() => { const model_style = computed(() => {
return (item: { id: string; key: string }) => { return (item: { id: string; key: string }) => {
// window.innerHeight() - 60() - 846() // 40 60
const container_height = window.innerHeight - 100;
let bottom = 0;
// padding
if (container_height > 844) {
//
const height = (window.innerHeight - 906) / 2; const height = (window.innerHeight - 906) / 2;
let bottom = parseInt(float_bottom[item.id]) + height; bottom = parseInt(float_bottom[item.id]) + height;
// 60 846-60 = 786 // 60 846-60 = 786
if (parseInt(float_bottom[item.id]) > 786) { if (parseInt(float_bottom[item.id]) > 786) {
bottom = 786 + height; bottom = 786 + height;
} }
} else {
//
const height = 20;
bottom = parseInt(float_bottom[item.id]) + height;
// 60 container_height-60
if (parseInt(float_bottom[item.id]) > container_height - 60) {
bottom = container_height - 60 + height;
}
}
return item.key == 'float-window' ? `bottom: ${((bottom / window.innerHeight) * 100).toFixed(4) + '%'};` : ''; return item.key == 'float-window' ? `bottom: ${((bottom / window.innerHeight) * 100).toFixed(4) + '%'};` : '';
}; };
}); });
@ -394,7 +408,7 @@ const on_end = () => {
// //
const set_enable = (index: number) => { const set_enable = (index: number) => {
const old_data = get_diy_index_data(index); const old_data = get_diy_index_data(index);
old_data.is_enable = !old_data.is_enable; old_data.is_enable = old_data.is_enable == '1' ? '0' : '1';
}; };
// //
const moveUp = (index: number, flag: boolean) => { const moveUp = (index: number, flag: boolean) => {
@ -569,6 +583,8 @@ const upload_change = async (uploadFile: UploadFile) => {
// //
const clear_click = () => { const clear_click = () => {
app?.appContext.config.globalProperties.$common.message_box('清空后不可恢复,确定继续吗?', 'warning').then(() => { app?.appContext.config.globalProperties.$common.message_box('清空后不可恢复,确定继续吗?', 'warning').then(() => {
page_data.value.com_data = cloneDeep(defaultSettings.header_nav);
footer_nav.value.com_data = cloneDeep(defaultSettings.footer_nav);
diy_data.value = []; diy_data.value = [];
page_settings(); page_settings();
}); });

View File

@ -32,10 +32,10 @@
<upload v-model="form.logo" :limit="1"></upload> <upload v-model="form.logo" :limit="1"></upload>
</el-form-item> </el-form-item>
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="form.name" placeholder="请输入名称" /> <el-input v-model="form.name" placeholder="请输入名称" clearable />
</el-form-item> </el-form-item>
<el-form-item label="描述"> <el-form-item label="描述">
<el-input v-model="form.describe" placeholder="请输入描述" :rows="4" type="textarea" /> <el-input v-model="form.describe" placeholder="请输入描述" :rows="4" type="textarea" clearable />
</el-form-item> </el-form-item>
<el-form-item label="开关"> <el-form-item label="开关">
<el-switch v-model="form.is_enable" active-value="1" inactive-value="0"></el-switch> <el-switch v-model="form.is_enable" active-value="1" inactive-value="0"></el-switch>

View File

@ -49,7 +49,7 @@ const form = ref<diy_data_item>({
name: '页面设置', name: '页面设置',
show_tabs: '1', show_tabs: '1',
key: 'page-settings', key: 'page-settings',
com_data: defaultSettings.header_nav, com_data: cloneDeep(defaultSettings.header_nav),
}, },
footer: { footer: {
name: '底部导航', name: '底部导航',
@ -172,7 +172,9 @@ const save_formmat_form_data = (data: diy_data_item, close: boolean = false) =>
// item1.goods_ids = item.goods_list.map((item2: any) => item2.data.id).join(',') || ''; // item1.goods_ids = item.goods_list.map((item2: any) => item2.data.id).join(',') || '';
// item1.goods_list = []; // item1.goods_list = [];
// }); // });
// } // } else if (item.key == 'custom') {
// item.com_data.content.data_source_content = {};
//}
return { return {
...item, ...item,
show_tabs: '0', show_tabs: '0',