This commit is contained in:
全栈小学生 2024-11-16 14:32:37 +08:00
parent 087069d17e
commit 80e16b16f8
25 changed files with 370 additions and 153 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

View File

@ -202,7 +202,12 @@
"carouselSearchShowWayStatic": "正常显示",
"carouselSearchShowWayFixed": "滚动至顶部固定",
"carouselSearchFixedBgColor": "置顶背景",
"carouselSearchStyleSelect": "风格选择",
"carouselSearchSet": "搜索设置",
"carouselSearchSubTitle": "副标题",
"carouselSearchSubTitleStyle": "副标题样式",
"carouselSearchPositionStyle": "定位样式",
"carouselSearchSubTitlePlaceholder": "请输入副标题内容",
"carouselSearchText": "搜索内容",
"carouselSearchTextColor": "文字颜色",
"carouselSearchBgColor": "背景颜色",

View File

@ -10,8 +10,10 @@
"agreement": "政策协议",
"agreementTips": "注册时服务协议和隐私协议是否进行展示",
"tripartiteSetting": "第三方设置",
"isAuthRegister": "快捷登录/注册",
"isAuthRegister": "自动注册会员",
"isAuthRegisterTip": "开启之后,微信公众号、小程序等第三方平台可以自动注册会员或者快捷登录/注册会员,方便会员自动登录",
"isForceAccessUserInfo": "强制获取用户信息",
"isForceAccessUserInfoTip": "开启之后,将强制获取用户头像、昵称等信息,需要用户同意后,才能注册成功",
"mobileOrUsernameNoEmpty": "普通注册方式至少需启用一种",
"loginPageSet": "界面设置",
"bgUrl": "背景图",

View File

@ -63,5 +63,7 @@
"h5Domain": "H5支付域名",
"h5DomainTips": "需在微信商户号>产品中心>开发配置>支付配置 H5支付域名中添加该域名",
"nativeDomain": "Native支付回调链接",
"nativeDomainTips": "需在微信商户号>产品中心>开发配置>支付配置 Native支付回调链接中添加该链接"
"nativeDomainTips": "需在微信商户号>产品中心>开发配置>支付配置 Native支付回调链接中添加该链接",
"wechatpayPublicCert": "微信支付公钥",
"wechatpayPublicCertId": "微信支付公钥ID"
}

View File

@ -374,8 +374,7 @@ const confirmBlockStyle = () => {
showListDialog.value = false
}
const initBlockStyle = (style)=>{
// diyStore.editComponent.
const initBlockStyle = (style: any)=>{
if(style == 'style-1'){
diyStore.editComponent.blockStyle.fontWeight = "normal";
diyStore.editComponent.blockStyle.btnText = "normal";

View File

@ -26,9 +26,18 @@
<div class="edit-attr-item-wrap">
<h3 class="mb-[10px]">{{ t('carouselSearchSet') }}</h3>
<el-form label-width="100px" class="px-[10px]">
<div class="text-sm text-gray-400 mb-[10px]">{{ t('carouselSearchLogoTips') }}</div>
<el-form-item :label="t('selectStyle')" class="flex">
<span class="text-primary flex-1 cursor-pointer" @click="showSearchStyle">{{ diyStore.editComponent.search.styleName }}</span>
<el-icon>
<ArrowRight />
</el-icon>
</el-form-item>
<el-form-item :label="t('carouselSearchSubTitle')" v-if="diyStore.editComponent.search.style == 'style-2'">
<el-input v-model.trim="diyStore.editComponent.search.subTitle.text" :placeholder="t('carouselSearchSubTitlePlaceholder')" clearable maxlength="10" show-word-limit />
</el-form-item>
<el-form-item :label="t('logo')">
<upload-image v-model="diyStore.editComponent.search.logo" :limit="1" />
<div class="text-sm text-gray-400 mb-[10px]">{{ t('carouselSearchLogoTips') }}</div>
</el-form-item>
<el-form-item :label="t('carouselSearchText')">
<div>
@ -39,16 +48,34 @@
<el-form-item :label="t('link')">
<diy-link v-model="diyStore.editComponent.search.link"/>
</el-form-item>
</el-form>
<el-dialog v-model="showSearchDialog" :title="t('selectStyle')" width="500px">
<div class="flex flex-wrap">
<template v-for="(item,index) in searchStyleList" :key="index">
<div :class="{ 'border-primary': selectSearchStyle.value == item.value }" @click="changeSearchStyle(item)" class="flex items-center justify-center overflow-hidden w-[200px] h-[100px] m-[6px] cursor-pointer border bg-[#eee]">
<img :src="img(item.url)" />
</div>
</template>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="showSearchDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" @click="confirmSearchStyle">{{ t('confirm') }}</el-button>
</span>
</template>
</el-dialog>
</div>
<div class="edit-attr-item-wrap">
<div class="edit-attr-item-wrap mb-[20px]">
<h3 class="mb-[10px]">{{ t('carouselSearchHotWordSet') }}</h3>
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchHotWordInterval')">
<el-slider v-model="diyStore.editComponent.search.hotWord.interval" show-input size="small" class="ml-[10px] horz-blank-slider" :min="1" :max="10"/>
<el-slider v-model="diyStore.editComponent.search.hotWord.interval" show-input size="small" class="ml-[10px] diy-nav-slider" :min="1" :max="10"/>
</el-form-item>
<p class="text-sm text-gray-400 mb-[10px]">{{ t('dragMouseAdjustOrder') }}</p>
@ -72,106 +99,129 @@
</div>
<el-collapse v-model="activeNames" @change="handleChange" class="collapse-wrap">
<el-collapse-item :title="t('carouselSearchTabSet')" name="tab">
<div class="edit-attr-item-wrap">
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchTabControl')">
<el-switch v-model="diyStore.editComponent.tab.control" />
</el-form-item>
<el-collapse-item :title="t('carouselSearchTabSet')" name="tab">
<div class="edit-attr-item-wrap">
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchTabControl')">
<el-switch v-model="diyStore.editComponent.tab.control" />
</el-form-item>
<p class="text-sm text-gray-400 mb-[10px]">{{ t('dragMouseAdjustOrder') }}</p>
<p class="text-sm text-gray-400 mb-[10px]">{{ t('dragMouseAdjustOrder') }}</p>
<div ref="tabBoxRef">
<div v-for="(item,index) in diyStore.editComponent.tab.list" :key="item.id" class="item-wrap p-[10px] pb-0 relative border border-dashed border-gray-300 mb-[16px]">
<div ref="tabBoxRef">
<div v-for="(item,index) in diyStore.editComponent.tab.list" :key="item.id" class="item-wrap p-[10px] pb-0 relative border border-dashed border-gray-300 mb-[16px]">
<el-form-item :label="t('carouselSearchTabCategoryText')">
<el-input v-model.trim="item.text" :placeholder="t('carouselSearchTabCategoryTextPlaceholder')" clearable maxlength="4" show-word-limit/>
</el-form-item>
<el-form-item :label="t('carouselSearchTabCategoryText')">
<el-input v-model.trim="item.text" :placeholder="t('carouselSearchTabCategoryTextPlaceholder')" clearable maxlength="4" show-word-limit/>
</el-form-item>
<el-form-item :label="t('dataSources')">
<el-input v-model.trim="item.diy_title" :placeholder="t('selectDiyPagePlaceholder')" readonly class="select-diy-page-input" @click="diyPageShowDialogOpen(index)">
<template #suffix>
<div @click.stop="tabClear(index)">
<el-icon v-if="item.diy_title">
<Close />
</el-icon>
<el-icon v-else>
<ArrowRight />
</el-icon>
</div>
</template>
</el-input>
</el-form-item>
<el-form-item :label="t('dataSources')">
<el-input v-model.trim="item.diy_title" :placeholder="t('selectDiyPagePlaceholder')" readonly class="select-diy-page-input" @click="diyPageShowDialogOpen(index)">
<template #suffix>
<div @click.stop="tabClear(index)">
<el-icon v-if="item.diy_title">
<Close />
</el-icon>
<el-icon v-else>
<ArrowRight />
</el-icon>
</div>
</template>
</el-input>
</el-form-item>
<div class="del absolute cursor-pointer z-[2] top-[-8px] right-[-8px]" v-show="diyStore.editComponent.tab.list.length > 1" @click="diyStore.editComponent.tab.list.splice(index,1)">
<icon name="element CircleCloseFilled" color="#bbb" size="20px"/>
</div>
<div class="del absolute cursor-pointer z-[2] top-[-8px] right-[-8px]" v-show="diyStore.editComponent.tab.list.length > 1" @click="diyStore.editComponent.tab.list.splice(index,1)">
<icon name="element CircleCloseFilled" color="#bbb" size="20px"/>
</div>
</div>
<el-button v-show="diyStore.editComponent.tab.list.length < 50" class="w-full" @click="addTabItem">{{ t('carouselSearchAddTabItem') }}</el-button>
</div>
</div>
<el-button v-show="diyStore.editComponent.tab.list.length < 50" class="w-full" @click="addTabItem">{{ t('carouselSearchAddTabItem') }}</el-button>
</div>
<!-- 选择微页面弹出框 -->
<el-dialog v-model="diyPageShowDialog" :title="t('selectSourcesDiyPage')" width="1000px" :close-on-press-escape="false" :destroy-on-close="true" :close-on-click-modal="false">
<el-table :data="diyPageTable.data" ref="diyPageTableRef" size="large" v-loading="diyPageTable.loading" height="490px" @current-change="handleCurrentDiyPageChange" row-key="id" highlight-current-row>
<template #empty>
<span>{{ !diyPageTable.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="page_title" :label="t('diyPageTitle')" min-width="120" />
<el-table-column prop="addon_name" :label="t('diyPageTypeName')" min-width="80" />
<el-table-column prop="type_name" :label="t('diyPageForAddon')" min-width="80" />
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="diyPageTable.page" v-model:page-size="diyPageTable.limit"
layout="total, sizes, prev, pager, next, jumper" :total="diyPageTable.total"
@size-change="loadDiyPageList" @current-change="loadDiyPageList" />
</div>
<div class="flex items-center justify-end mt-[15px]">
<el-button type="primary" @click="saveDiyPageId">{{ t('confirm') }}</el-button>
<el-button @click="diyPageShowDialog = false">{{ t('cancel') }}</el-button>
</div>
</el-dialog>
<!-- 选择微页面弹出框 -->
<el-dialog v-model="diyPageShowDialog" :title="t('selectSourcesDiyPage')" width="1000px" :close-on-press-escape="false" :destroy-on-close="true" :close-on-click-modal="false">
<el-table :data="diyPageTable.data" ref="diyPageTableRef" size="large" v-loading="diyPageTable.loading" height="490px" @current-change="handleCurrentDiyPageChange" row-key="id" highlight-current-row>
<template #empty>
<span>{{ !diyPageTable.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="page_title" :label="t('diyPageTitle')" min-width="120" />
<el-table-column prop="addon_name" :label="t('diyPageTypeName')" min-width="80" />
<el-table-column prop="type_name" :label="t('diyPageForAddon')" min-width="80" />
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="diyPageTable.page" v-model:page-size="diyPageTable.limit"
layout="total, sizes, prev, pager, next, jumper" :total="diyPageTable.total"
@size-change="loadDiyPageList" @current-change="loadDiyPageList" />
</div>
<div class="flex items-center justify-end mt-[15px]">
<el-button type="primary" @click="saveDiyPageId">{{ t('confirm') }}</el-button>
<el-button @click="diyPageShowDialog = false">{{ t('cancel') }}</el-button>
</div>
</el-dialog>
</el-form>
</div>
</el-collapse-item>
<el-collapse-item :title="t('carouselSearchSwiperSet')" name="swiper">
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchSwiperControl')">
<el-switch v-model="diyStore.editComponent.swiper.control" />
</el-form-item>
<el-form-item :label="t('carouselSearchSwiperInterval')">
<el-slider v-model="diyStore.editComponent.swiper.interval" show-input size="small" class="ml-[10px] horz-blank-slider" :min="1" :max="10"/>
</el-form-item>
</el-form>
</div>
</el-collapse-item>
<el-collapse-item :title="t('carouselSearchSwiperSet')" name="swiper">
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchSwiperControl')">
<el-switch v-model="diyStore.editComponent.swiper.control" />
</el-form-item>
<el-form-item :label="t('carouselSearchSwiperInterval')">
<el-slider v-model="diyStore.editComponent.swiper.interval" show-input size="small" class="ml-[10px] diy-nav-slider" :min="1" :max="10"/>
</el-form-item>
<div class="text-sm text-gray-400 mb-[10px]">{{ t('carouselSearchSwiperTips') }}</div>
<div class="text-sm text-gray-400 mb-[10px]">{{ t('carouselSearchSwiperTips') }}</div>
<div ref="imageBoxRef">
<div v-for="(item,index) in diyStore.editComponent.swiper.list" :key="item.id" class="item-wrap p-[10px] pb-0 relative border border-dashed border-gray-300 mb-[16px]">
<el-form-item :label="t('image')">
<upload-image v-model="item.imageUrl" :limit="1" @change="selectImg" />
</el-form-item>
<div ref="imageBoxRef">
<div v-for="(item,index) in diyStore.editComponent.swiper.list" :key="item.id" class="item-wrap p-[10px] pb-0 relative border border-dashed border-gray-300 mb-[16px]">
<el-form-item :label="t('image')">
<upload-image v-model="item.imageUrl" :limit="1" @change="selectImg" />
</el-form-item>
<div class="del absolute cursor-pointer z-[2] top-[-8px] right-[-8px]" v-show="diyStore.editComponent.swiper.list.length > 1" @click="diyStore.editComponent.swiper.list.splice(index,1)">
<icon name="element CircleCloseFilled" color="#bbb" size="20px"/>
</div>
<div class="del absolute cursor-pointer z-[2] top-[-8px] right-[-8px]" v-show="diyStore.editComponent.swiper.list.length > 1" @click="diyStore.editComponent.swiper.list.splice(index,1)">
<icon name="element CircleCloseFilled" color="#bbb" size="20px"/>
</div>
<el-form-item :label="t('link')">
<diy-link v-model="item.link"/>
</el-form-item>
</div>
</div>
<el-form-item :label="t('link')">
<diy-link v-model="item.link"/>
</el-form-item>
</div>
</div>
<el-button v-show="diyStore.editComponent.swiper.list.length < 10" class="w-full" @click="addImageAd">{{ t('addImageAd') }}</el-button>
<el-button v-show="diyStore.editComponent.swiper.list.length < 10" class="w-full" @click="addImageAd">{{ t('addImageAd') }}</el-button>
</el-form>
</el-collapse-item>
</el-collapse>
</el-form>
</el-collapse-item>
</el-collapse>
</div>
<!-- 样式 -->
<div class="style-wrap" v-show="diyStore.editTab == 'style'">
<div class="edit-attr-item-wrap" v-if="diyStore.editComponent.search.style == 'style-2'">
<h3 class="mb-[10px]">{{ t('carouselSearchPositionStyle') }}</h3>
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchTextColor')">
<el-color-picker v-model="diyStore.editComponent.search.positionColor" show-alpha :predefine="diyStore.predefineColors"/>
</el-form-item>
</el-form>
</div>
<div class="edit-attr-item-wrap" v-if="diyStore.editComponent.search.style == 'style-2'">
<h3 class="mb-[10px]">{{ t('carouselSearchSubTitleStyle') }}</h3>
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchTextColor')">
<el-color-picker v-model="diyStore.editComponent.search.subTitle.textColor" show-alpha :predefine="diyStore.predefineColors"/>
</el-form-item>
<el-form-item :label="t('carouselSearchBgColor')">
<el-color-picker v-model="diyStore.editComponent.search.subTitle.startColor" :predefine="diyStore.predefineColors" show-alpha/>
<icon name="iconfont iconmap-connect" size="20px" class="block !text-gray-400 mx-[5px]"/>
<el-color-picker v-model="diyStore.editComponent.search.subTitle.endColor" :predefine="diyStore.predefineColors" show-alpha/>
</el-form-item>
</el-form>
</div>
<div class="edit-attr-item-wrap">
<h3 class="mb-[10px]">{{ t('carouselSearchStyle') }}</h3>
<el-form label-width="100px" class="px-[10px]">
@ -219,10 +269,10 @@
</el-radio-group>
</el-form-item>
<el-form-item :label="t('topRounded')">
<el-slider v-model="diyStore.editComponent.swiper.topRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="50" />
<el-slider v-model="diyStore.editComponent.swiper.topRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50" />
</el-form-item>
<el-form-item :label="t('bottomRounded')">
<el-slider v-model="diyStore.editComponent.swiper.bottomRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="50" />
<el-slider v-model="diyStore.editComponent.swiper.bottomRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50" />
</el-form-item>
</el-form>
</div>
@ -311,6 +361,46 @@ diyStore.editComponent.verify = (index: number) => {
return res
}
/************** 搜索框样式选择-start ********************/
const selectSearchStyle = reactive({
title: diyStore.editComponent.search.styleName,
value: diyStore.editComponent.search.style
})
const showSearchDialog = ref(false)
const showSearchStyle = () => {
showSearchDialog.value = true
selectSearchStyle.title = diyStore.editComponent.search.styleName;
selectSearchStyle.value = diyStore.editComponent.search.style;
}
const changeSearchStyle = (item:any) => {
selectSearchStyle.title = item.title;
selectSearchStyle.value = item.value;
}
const confirmSearchStyle = () => {
diyStore.editComponent.search.styleName = selectSearchStyle.title;
diyStore.editComponent.search.style = selectSearchStyle.value;
showSearchDialog.value = false
}
const searchStyleList = reactive([
{
url: 'static/resource/images/diy/carousel_search/style_1.png',
title: '风格1',
value: 'style-1'
},
{
url: 'static/resource/images/diy/carousel_search/style_2.png',
title: '风格2',
value: 'style-2'
}
])
/************** 搜索框样式选择-end ********************/
diyStore.editComponent.search.hotWord.list.forEach((item: any) => {
if (!item.id) item.id = diyStore.generateRandom()
})

View File

@ -41,7 +41,7 @@
</ul>
</el-form-item>
<el-form-item :label="t('floatBtnOffset')">
<el-slider v-model="diyStore.editComponent.offset" show-input size="small" class="ml-[10px] horz-blank-slider" :max="100"/>
<el-slider v-model="diyStore.editComponent.offset" show-input size="small" class="ml-[10px] diy-nav-slider" :max="100"/>
</el-form-item>
</el-form>
</div>
@ -49,10 +49,10 @@
<h3 class="mb-[10px]">{{ t('floatBtnImageSet') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<el-form-item :label="t('floatBtnImageSize')">
<el-slider v-model="diyStore.editComponent.imageSize" show-input size="small" class="ml-[10px] horz-blank-slider" :min="30" :max="100"/>
<el-slider v-model="diyStore.editComponent.imageSize" show-input size="small" class="ml-[10px] diy-nav-slider" :min="30" :max="100"/>
</el-form-item>
<el-form-item :label="t('floatBtnAroundRadius')">
<el-slider v-model="diyStore.editComponent.aroundRadius" show-input size="small" class="ml-[10px] graphic-nav-slider" :max="50"/>
<el-slider v-model="diyStore.editComponent.aroundRadius" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50"/>
</el-form-item>
<div class="text-[12px] text-[#999] mb-[15px] mt-[5px]">{{t('floatBtnImageSuggest')}}</div>

View File

@ -45,7 +45,6 @@
</el-radio-group>
</el-form-item>
</view>
</el-form>
</div>
<div class="edit-attr-item-wrap">
@ -86,10 +85,10 @@
<h3 class="mb-[10px]">{{ t('graphicNavImageSet') }}</h3>
<el-form label-width="90px" class="px-[10px]">
<el-form-item :label="t('graphicNavImageSize')">
<el-slider v-model="diyStore.editComponent.imageSize" show-input size="small" class="ml-[10px] graphic-nav-slider" :min="20" :max="60"/>
<el-slider v-model="diyStore.editComponent.imageSize" show-input size="small" class="ml-[10px] diy-nav-slider" :min="20" :max="60"/>
</el-form-item>
<el-form-item :label="t('graphicNavAroundRadius')">
<el-slider v-model="diyStore.editComponent.aroundRadius" show-input size="small" class="ml-[10px] graphic-nav-slider" :max="50"/>
<el-slider v-model="diyStore.editComponent.aroundRadius" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50"/>
</el-form-item>
</el-form>
</div>
@ -97,7 +96,7 @@
<h3 class="mb-[10px]">{{ t('textSet') }}</h3>
<el-form label-width="90px" class="px-[10px]">
<el-form-item :label="t('textFontSize')">
<el-slider v-model="diyStore.editComponent.font.size" show-input size="small" class="ml-[10px] graphic-nav-slider" :min="12" :max="16"/>
<el-slider v-model="diyStore.editComponent.font.size" show-input size="small" class="ml-[10px] diy-nav-slider" :min="12" :max="16"/>
</el-form-item>
<el-form-item :label="t('textFontWeight')">
<el-radio-group v-model="diyStore.editComponent.font.weight">
@ -111,6 +110,31 @@
</el-form>
</div>
<div class="edit-attr-item-wrap" v-show="diyStore.editComponent.showStyle == 'pageSlide' && diyStore.editComponent.layout == 'horizontal'">
<h3 class="mb-[10px]">{{ t('carouselSearchSwiperIndicatorSet') }}</h3>
<el-form label-width="100px" class="px-[10px]">
<el-form-item :label="t('carouselSearchSwiperIndicatorStyle')">
<el-radio-group v-model="diyStore.editComponent.swiper.indicatorStyle">
<el-radio label="style-1">{{ t('carouselSearchSwiperIndicatorStyle1') }}</el-radio>
<el-radio label="style-2">{{ t('carouselSearchSwiperIndicatorStyle2') }}</el-radio>
<el-radio label="style-3">{{ t('carouselSearchSwiperIndicatorStyle3') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="t('carouselSearchSwiperIndicatorAlign')">
<el-radio-group v-model="diyStore.editComponent.swiper.indicatorAlign">
<el-radio label="left">{{ t('alignLeft') }}</el-radio>
<el-radio label="center">{{ t('alignCenter') }}</el-radio>
<el-radio label="right">{{ t('alignRight') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="t('noColor')">
<el-color-picker v-model="diyStore.editComponent.swiper.indicatorColor" show-alpha :predefine="diyStore.predefineColors"/>
</el-form-item>
<el-form-item :label="t('selectColor')">
<el-color-picker v-model="diyStore.editComponent.swiper.indicatorActiveColor" show-alpha :predefine="diyStore.predefineColors"/>
</el-form-item>
</el-form>
</div>
<!-- 组件样式 -->
<slot name="style"></slot>
@ -130,7 +154,6 @@ import useDiyStore from '@/stores/modules/diy'
const diyStore = useDiyStore()
diyStore.editComponent.ignore = [] //
//
diyStore.editComponent.verify = (index: number) => {
const res = { code: true, message: '' }
@ -221,13 +244,6 @@ defineExpose({})
</script>
<style lang="scss">
.graphic-nav-slider {
.el-slider__input {
width: 100px;
}
}
</style>
<style lang="scss" scoped>
.edit-graphic-nav {

View File

@ -5,7 +5,7 @@
<h3 class="mb-[10px]">{{ t('blankHeightSet') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<el-form-item :label="t('blankHeight')">
<el-slider v-model="diyStore.editComponent.height" show-input size="small" max="200" class="ml-[10px] horz-blank-slider"/>
<el-slider v-model="diyStore.editComponent.height" show-input size="small" max="200" class="ml-[10px] diy-nav-slider"/>
</el-form-item>
</el-form>
</div>
@ -31,11 +31,4 @@ defineExpose({})
</script>
<style lang="scss">
.horz-blank-slider {
.el-slider__input {
width: 100px;
}
}
</style>
<style lang="scss" scoped></style>

View File

@ -14,7 +14,7 @@
<el-color-picker v-model="diyStore.editComponent.borderColor" show-alpha :predefine="diyStore.predefineColors"/>
</el-form-item>
<el-form-item :label="t('horzLineBorderWidth')">
<el-slider v-model="diyStore.editComponent.borderWidth" show-input size="small" class="ml-[10px] horz-blank-slider" :min="1" :max="10"/>
<el-slider v-model="diyStore.editComponent.borderWidth" show-input size="small" class="ml-[10px] diy-nav-slider" :min="1" :max="10"/>
</el-form-item>
</el-form>
</div>
@ -40,11 +40,4 @@ defineExpose({})
</script>
<style lang="scss">
.horz-blank-slider {
.el-slider__input {
width: 100px;
}
}
</style>
<style lang="scss" scoped></style>

View File

@ -80,7 +80,7 @@
<h3 class="mb-[10px]">{{ t('textSet') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<el-form-item :label="t('textFontSize')">
<el-slider v-model="diyStore.editComponent.fontSize" show-input size="small" class="ml-[10px] article-slider" :min="12" :max="20"/>
<el-slider v-model="diyStore.editComponent.fontSize" show-input size="small" class="ml-[10px] diy-nav-slider" :min="12" :max="20"/>
</el-form-item>
<el-form-item :label="t('textFontWeight')">
<el-radio-group v-model="diyStore.editComponent.fontWeight">

View File

@ -104,7 +104,7 @@
</el-radio-group>
</el-form-item>
<el-form-item :label="t('bgHeightScale')">
<el-slider v-model="diyStore.global.bgHeightScale" show-input size="small" class="ml-[10px] horz-blank-slider"/>
<el-slider v-model="diyStore.global.bgHeightScale" show-input size="small" class="ml-[10px] diy-nav-slider"/>
</el-form-item>
<div class="text-sm text-gray-400 ml-[80px] mb-[10px]">{{ t('bgHeightScaleTip') }}</div>
<el-form-item :label="t('bgUrl')">
@ -133,7 +133,7 @@
<h3 class="mb-[10px]">{{ t('marginSet') }}</h3>
<el-form label-width="115px" class="px-[10px]">
<el-form-item :label="t('marginBoth')">
<el-slider v-model="diyStore.global.template.margin.both" show-input size="small" @input="inputBoth" class="ml-[10px] horz-blank-slider"/>
<el-slider v-model="diyStore.global.template.margin.both" show-input size="small" @input="inputBoth" class="ml-[10px] diy-nav-slider"/>
</el-form-item>
</el-form>
</div>

View File

@ -104,10 +104,10 @@
<h3 class="mb-[10px]">{{ t('pictureShowBlockStyle') }}</h3>
<el-form label-width="90px" class="px-[10px]">
<el-form-item :label="t('topRounded')">
<el-slider v-model="diyStore.editComponent.moduleRounded.topRounded" show-input size="small" class="ml-[10px] graphic-nav-slider" :max="100"/>
<el-slider v-model="diyStore.editComponent.moduleRounded.topRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="100"/>
</el-form-item>
<el-form-item :label="t('bottomRounded')">
<el-slider v-model="diyStore.editComponent.moduleRounded.bottomRounded" show-input size="small" class="ml-[10px] graphic-nav-slider" :max="100"/>
<el-slider v-model="diyStore.editComponent.moduleRounded.bottomRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="100"/>
</el-form-item>
</el-form>
</div>

View File

@ -54,13 +54,13 @@
<h3 class="mb-[10px]">{{ t('rubikCubeStyle') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<el-form-item :label="t('imageGap')">
<el-slider v-model="diyStore.editComponent.imageGap" show-input size="small" class="ml-[10px] horz-blank-slider" :max="30"/>
<el-slider v-model="diyStore.editComponent.imageGap" show-input size="small" class="ml-[10px] diy-nav-slider" :max="30"/>
</el-form-item>
<el-form-item :label="t('topRounded')">
<el-slider v-model="diyStore.editComponent.topElementRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="50"/>
<el-slider v-model="diyStore.editComponent.topElementRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50"/>
</el-form-item>
<el-form-item :label="t('bottomRounded')">
<el-slider v-model="diyStore.editComponent.bottomElementRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="50"/>
<el-slider v-model="diyStore.editComponent.bottomElementRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="50"/>
</el-form-item>
</el-form>
</div>

View File

@ -37,7 +37,7 @@
<el-input v-model.trim="diyStore.editComponent.subTitle.text" :placeholder="t('subTitlePlaceholder')" clearable maxlength="30" show-word-limit />
</el-form-item>
<el-form-item :label="t('textFontSize')">
<el-slider v-model="diyStore.editComponent.subTitle.fontSize" show-input size="small" class="ml-[10px] article-slider" :min="12" :max="16" />
<el-slider v-model="diyStore.editComponent.subTitle.fontSize" show-input size="small" class="ml-[10px] diy-nav-slider" :min="12" :max="16" />
</el-form-item>
<el-form-item :label="t('textColor')">
<el-color-picker v-model="diyStore.editComponent.subTitle.color" />
@ -91,7 +91,7 @@
<h3 class="mb-[10px]">{{ t('titleStyle') }}</h3>
<el-form label-width="80px" class="px-[10px]">
<el-form-item :label="t('textFontSize')">
<el-slider v-model="diyStore.editComponent.fontSize" show-input size="small" class="ml-[10px] article-slider" :min="12" :max="30" />
<el-slider v-model="diyStore.editComponent.fontSize" show-input size="small" class="ml-[10px] diy-nav-slider" :min="12" :max="30" />
</el-form-item>
<el-form-item :label="t('textFontWeight')">
<el-radio-group v-model="diyStore.editComponent.fontWeight">

View File

@ -165,7 +165,7 @@
</el-form-item>
<el-form-item :label="t('componentBgAlpha')" v-if="diyStore.editComponent.ignore.indexOf('componentBgUrl') == -1 && diyStore.editComponent.componentBgUrl">
<el-slider v-model="diyStore.editComponent.componentBgAlpha" show-input size="small" :min="0" :max="10" class="ml-[10px] horz-blank-slider" />
<el-slider v-model="diyStore.editComponent.componentBgAlpha" show-input size="small" :min="0" :max="10" class="ml-[10px] diy-nav-slider" />
</el-form-item>
<el-form-item :label="t('componentBgColor')" v-if="diyStore.editComponent.ignore.indexOf('componentBgColor') == -1">
@ -182,19 +182,19 @@
</el-form-item>
<el-form-item :label="t('marginTop')" v-if="diyStore.editComponent.ignore.indexOf('marginTop') == -1">
<el-slider v-model="diyStore.editComponent.margin.top" show-input size="small" :min="-100" class="ml-[10px] horz-blank-slider" />
<el-slider v-model="diyStore.editComponent.margin.top" show-input size="small" :min="-100" class="ml-[10px] diy-nav-slider" />
</el-form-item>
<el-form-item :label="t('marginBottom')" v-if="diyStore.editComponent.ignore.indexOf('marginBottom') == -1">
<el-slider v-model="diyStore.editComponent.margin.bottom" show-input size="small" class="ml-[10px] horz-blank-slider" />
<el-slider v-model="diyStore.editComponent.margin.bottom" show-input size="small" class="ml-[10px] diy-nav-slider" />
</el-form-item>
<el-form-item :label="t('marginBoth')" v-if="diyStore.editComponent.ignore.indexOf('marginBoth') == -1">
<el-slider v-model="diyStore.editComponent.margin.both" show-input size="small" class="ml-[10px] horz-blank-slider" />
<el-slider v-model="diyStore.editComponent.margin.both" show-input size="small" class="ml-[10px] diy-nav-slider" />
</el-form-item>
<el-form-item :label="t('topRounded')" v-if="diyStore.editComponent.ignore.indexOf('topRounded') == -1">
<el-slider v-model="diyStore.editComponent.topRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="100" />
<el-slider v-model="diyStore.editComponent.topRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="100" />
</el-form-item>
<el-form-item :label="t('bottomRounded')" v-if="diyStore.editComponent.ignore.indexOf('bottomRounded') == -1">
<el-slider v-model="diyStore.editComponent.bottomRounded" show-input size="small" class="ml-[10px] horz-blank-slider" :max="100" />
<el-slider v-model="diyStore.editComponent.bottomRounded" show-input size="small" class="ml-[10px] diy-nav-slider" :max="100" />
</el-form-item>
</el-form>
</div>
@ -679,6 +679,11 @@ const settingTips = () => {
}
}
}
.diy-nav-slider {
.el-slider__input {
width: 100px;
}
}
</style>
<style lang="scss" scoped>
.full-container {

View File

@ -207,7 +207,7 @@ const loginFn = (data = {}) => {
<style lang="scss">
.login-wrap {
background-image: url("@/app/assets/images/login/login_index_bg.png");
background-image: url("@/app/assets/images/login/login_index_bg.jpg");
background-repeat: no-repeat;
background-size: cover;
}

View File

@ -11,7 +11,7 @@
</el-form-item>
<el-form-item :label="t('signPeriod')" v-if="formData.is_use">
<el-input-number v-model="formData.sign_period" :min="0" :precision="0" clearable class="input-width" controls-position="right" /><span class="ml-[10px]"></span>
<el-input-number v-model="formData.sign_period" :min="1" :precision="0" clearable class="input-width" controls-position="right" /><span class="ml-[10px]"></span>
</el-form-item>
<el-form-item :label="t('daySignAward')" prop="day_award" v-if="formData.is_use">
@ -89,7 +89,7 @@
</el-dialog>
<!-- 连签奖励 -->
<el-dialog v-model="continueSignDialog" :title="t('continueSignTitle')" width="1000px" :destroy-on-close="true" v-if="formData.is_use">
<el-dialog v-model="continueSignDialog" :title="t('continueSignTitle')" width="1200px" :destroy-on-close="true" v-if="formData.is_use">
<sign-continue ref="continueRef" v-model="continue_award" />
<template #footer>
<span class="dialog-footer">

View File

@ -5,7 +5,7 @@
<el-card class="box-card !border-none" shadow="never">
<h3 class="panel-title !text-sm">{{ t('admin') }}</h3>
<el-form-item :label="t('isCaptcha')" prop="formData.is_auth_register">
<el-form-item :label="t('isCaptcha')">
<el-switch v-model="formData.is_captcha" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item :label="t('bgImg')">
@ -17,7 +17,7 @@
<el-card class="box-card mt-[15px] !border-none" shadow="never">
<h3 class="panel-title !text-sm">{{ t('site') }}</h3>
<el-form-item :label="t('isCaptcha')" prop="formData.is_auth_register">
<el-form-item :label="t('isCaptcha')">
<el-switch v-model="formData.is_site_captcha" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item :label="t('bgImg')">

View File

@ -26,6 +26,18 @@
<div class="form-tip">{{ t('mchPublicCertPathTips') }}</div>
</el-form-item>
<el-form-item :label="t('wechatpayPublicCert')" prop="config.wechat_public_cert_path">
<div class="input-width">
<upload-file v-model="formData.config.wechat_public_cert_path" api="sys/document/wechat" />
</div>
</el-form-item>
<el-form-item :label="t('wechatpayPublicCertId')" prop="config.wechat_public_cert_id">
<div class="input-width">
<el-input v-model.trim="formData.config.wechat_public_cert_id" placeholder="" class="input-width" show-word-limit clearable />
</div>
</el-form-item>
<el-form-item :label="t('jsapiDir')" v-show="formData.channel == 'wechat' || formData.channel == 'weapp'">
<el-input :model-value="wapDomain + '/'" placeholder="Please input" class="input-width" :readonly="true" :disabled="true">
<template #append>
@ -93,7 +105,9 @@ const initialFormData = {
mch_id: '',
mch_secret_key: '',
mch_secret_cert: '',
mch_public_cert_path: ''
mch_public_cert_path: '',
wechat_public_cert_path: '',
wechat_public_cert_id: ''
},
channel: '',
status: 0,

View File

@ -30,6 +30,11 @@
<el-switch v-model="formData.is_auth_register" :active-value="1" :inactive-value="0" />
<div class="form-tip">{{ t('isAuthRegisterTip') }}</div>
</el-form-item>
<el-form-item :label="t('isForceAccessUserInfo')" prop="formData.is_force_access_user_info" v-show="formData.is_auth_register == 1">
<el-switch v-model="formData.is_force_access_user_info" :active-value="1" :inactive-value="0" />
<div class="form-tip">{{ t('isForceAccessUserInfoTip') }}</div>
</el-form-item>
</el-card>
<el-card class="box-card mt-[15px] !border-none" shadow="never">
@ -72,6 +77,7 @@ const formData:any = reactive({
is_username: 0,
is_mobile: 0,
is_auth_register: 0,
is_force_access_user_info: 0,
is_bind_mobile: 0,
agreement_show: 0,
bg_url: '',

View File

@ -55,7 +55,7 @@
</div>
<div class="mb-[16px]">
<el-form-item :label="t('diyAppletPage')">
<el-input v-model="selectLink.page" :placeholder="t('diyAppletPagePlaceholder')" clearable maxlength="50" />
<el-input v-model="selectLink.page" :placeholder="t('diyAppletPagePlaceholder')" clearable maxlength="100" />
</el-form-item>
</div>
<el-form-item label=" ">
@ -78,7 +78,7 @@
<div v-else class="flex flex-wrap">
<div v-for="(item, index) in childList" :key="index"
class="border border-br rounded-[3px] mr-[10px] mb-[10px] px-4 h-[32px] leading-[32px] cursor-pointer hover:bg-primary-light-9 px-[10px] hover:text-primary"
:class="{ 'border-primary text-primary': (parentLinkName != 'DIY_PAGE' && item.name == selectLink.name) || (parentLinkName == 'DIY_PAGE' && item.name == selectLink.name && item.url == selectLink.url) }"
:class="{ 'border-primary text-primary': (parentLinkName != 'DIY_PAGE' && item.name == selectLink.name) || (parentLinkName == 'DIY_PAGE' && item.url == selectLink.url) }"
@click="changeChildLink(item)">{{ item.title }}
</div>
</div>

View File

@ -1 +1 @@
/* addon iconfont */
/* addon-iconfont.css */

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "nc-iconfont"; /* Project id 4567203 */
src: url('//at.alicdn.com/t/c/font_4567203_sxolqyse36.woff2?t=1717657005580') format('woff2'),
url('//at.alicdn.com/t/c/font_4567203_sxolqyse36.woff?t=1717657005580') format('woff'),
url('//at.alicdn.com/t/c/font_4567203_sxolqyse36.ttf?t=1717657005580') format('truetype');
src: url('//at.alicdn.com/t/c/font_4567203_upzww1i5qjn.woff2?t=1731549702579') format('woff2'),
url('//at.alicdn.com/t/c/font_4567203_upzww1i5qjn.woff?t=1731549702579') format('woff'),
url('//at.alicdn.com/t/c/font_4567203_upzww1i5qjn.ttf?t=1731549702579') format('truetype');
}
.nc-iconfont {
@ -13,6 +13,98 @@
-moz-osx-font-smoothing: grayscale;
}
.nc-icon-gouwuche1:before {
content: "\e76e";
}
.nc-icon-gouwuche:before {
content: "\e6ea";
}
.nc-icon-kabao:before {
content: "\e7ec";
}
.nc-icon-shouyeV6mm1:before {
content: "\e7e5";
}
.nc-icon-shouyeV6xx11:before {
content: "\e7bb";
}
.nc-icon-a-naozhongV6xx-36:before {
content: "\e7c4";
}
.nc-icon-a-shijianV6xx-36:before {
content: "\e7c3";
}
.nc-icon-a-yingyongzhongxinV6xx-36:before {
content: "\e7bf";
}
.nc-icon-a-bangzhuV6xx-36:before {
content: "\e7bc";
}
.nc-icon-a-riliV6xx-36:before {
content: "\e7c7";
}
.nc-icon-a-meiriqiandaoV6xx-36:before {
content: "\e7c6";
}
.nc-icon-a-yingyongliebiaoV6xx-36:before {
content: "\e7c5";
}
.nc-icon-a-shanchu-fanggai2V6xx-36:before {
content: "\e7be";
}
.nc-icon-cuohaoV6xx1:before {
content: "\e7cb";
}
.nc-icon-a-zhanghaoV6xx-36:before {
content: "\e7b9";
}
.nc-icon-a-wodeV6xx-36:before {
content: "\e7b8";
}
.nc-icon-a-shaixuan-36V6xx-36:before {
content: "\e7b3";
}
.nc-icon-lishijiluV6xx:before {
content: "\e6f6";
}
.nc-icon-paihangbangV6xx:before {
content: "\e79d";
}
.nc-icon-a-xiangshangV6xx1:before {
content: "\e799";
}
.nc-icon-a-xiangxiaV6xx1:before {
content: "\e796";
}
.nc-icon-fuzhiV6xx1:before {
content: "\e76c";
}
.nc-icon-kefuV6xx1:before {
content: "\e76a";
}
.nc-icon-huiyuandengjiV6xx1:before {
content: "\e761";
}