同步uniapp

This commit is contained in:
CQ 2026-04-03 11:17:06 +08:00
parent 691f4804f1
commit b2fb34521d
42 changed files with 1155 additions and 556 deletions

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,9 @@ import useConfigStore from '@/stores/config'
import useSystemStore from '@/stores/system'
import { useLogin } from '@/hooks/useLogin'
import { useShare } from '@/hooks/useShare'
import { useLocation } from '@/hooks/useLocation'
const locationVal = useLocation(true);
onLaunch((data: any) => {
//
launchInterceptor()

View File

@ -143,6 +143,9 @@
:index="index"/>
</template>
<!-- 以下是addon文件夹下的自定义组件 -->
</view>
</view>
</template>

View File

@ -77,7 +77,6 @@ export function uploadVideo(data: AnyObject) {
return request.upload('file/video', data, { showErrorMessage: true })
}
/**
*
*/

View File

@ -69,7 +69,7 @@
<view class="text-[26rpx] mt-[10rpx] pb-[16rpx]" :style="{ fontWeight : diyComponent.blockStyle.fontWeight }">{{ item.title.text }}</view>
<view class="text-[22rpx] text-gray-500 pb-[26rpx]">{{ item.subTitle.text }}</view>
<view class="link relative text-[22rpx] leading-[40rpx] flex items-center text-white rounded-[20rpx] h-[40rpx] pl-[20rpx] pr-[10rpx]" :style="btnCss(item.moreTitle)" v-if="item.moreTitle.text">
<text class="mr-[8rpx]" :class="{'italic': diyComponent.blockStyle.btnText == 'italics'}">{{ item.moreTitle.text }}</text>
<text class="more-title" :class="{'italic': diyComponent.blockStyle.btnText == 'italics'}">{{ item.moreTitle.text }}</text>
<text class="iconfont iconjiantou-you-cuxiantiao-fill !text-[20rpx] text-[#fff]"></text>
</view>
</view>
@ -84,8 +84,7 @@
</view>
<scroll-view :scroll-x="true" class="whitespace-nowrap" :id="'warpStyle3-'+diyComponent.id" v-if="diyComponent.blockStyle.value == 'style-3'">
<view v-for="(item,index) in diyComponent.list" :key="item.id" class="inline-flex">
<view :id="'item'+index+diyComponent.id" @click="diyStore.toRedirect(item.link)"
class="flex flex-col items-center justify-between p-[10rpx] bg-white mt-[20rpx] w-[157rpx] h-[200rpx] box-border"
<view :id="'item'+index+diyComponent.id" @click="diyStore.toRedirect(item.link)" class="item-wrap-style3"
:style="itemStyle3 + commonTempCss(item)"
:class="{'!mr-[0rpx]': index+1 === diyComponent.list.length}">
<view class="w-[141rpx] h-[141rpx] rounded-[var(--rounded-small)] overflow-hidden" v-if="item.imageUrl">
@ -103,8 +102,7 @@
<scroll-view scroll-x="true" class="whitespace-nowrap" :id="'warpStyle4-'+diyComponent.id" v-if="diyComponent.blockStyle.value == 'style-4'">
<view v-for="(item,index) in diyComponent.list" :key="item.id" class="inline-flex">
<view :id="'item'+index+diyComponent.id" @click="diyStore.toRedirect(item.link)"
class="flex flex-col items-center justify-between p-[4rpx] bg-[#F93D02] mt-[20rpx] box-border"
<view :id="'item'+index+diyComponent.id" @click="diyStore.toRedirect(item.link)" class="item-wrap-style4"
:class="{'!mr-[0rpx]': index+1 === diyComponent.list.length}"
:style="commonTempCss(item) + itemStyle4">
<view class="w-[149rpx] h-[149rpx] box-border px-[18rpx] pt-[16rpx] pb-[6rpx] bg-[#fff] flex flex-col items-center rounded-[var(--rounded-small)]">
@ -285,4 +283,29 @@ const refresh = () => {
}
}
}
.more-title {
margin-right: 8rpx;
}
.item-wrap-style3{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 10rpx;
background-color: white;
margin-top: 20rpx;
width: 157rpx;
height: 200rpx;
box-sizing: border-box;
}
.item-wrap-style4 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 4rpx;
background-color: #F93D02;
margin-top: 20rpx;
box-sizing: border-box;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<view :style="warpCss" class="goods-carousel-search-wrap">
<view class="relative pb-[20rpx]">
<view class="bg-img" :class="{'!-bottom-[200rpx]': diyComponent.bgGradient == true}">
<view class="bg-img" :class="{'imp-minus-bottom200': diyComponent.bgGradient == true}">
<image
v-if="diyComponent.swiper.control && diyComponent.swiper.list && diyComponent.swiper.list[swiperIndex].imageUrl"
:src="img(diyComponent.swiper.list[swiperIndex].imageUrl)" mode="scaleToFill" class="w-full h-full"
@ -87,7 +87,7 @@
</template>
<!-- 轮播图 -->
<view class="relative" :class="{'mx-[20rpx]': swiperStyleBool && diyComponent.swiper.swiperStyle != 'style-3', 'swiper-style-3': diyComponent.swiper.swiperStyle == 'style-3'}" :style="carouselSwiperStyle()">
<view class="relative" :class="{'mx20': swiperStyleBool && diyComponent.swiper.swiperStyle != 'style-3', 'swiper-style-3': diyComponent.swiper.swiperStyle == 'style-3'}" :style="carouselSwiperStyle()">
<swiper v-if="diyComponent.swiper.control" class="swiper" :style="{ height: imgHeight }" autoplay="true"
circular="true" @change="swiperChange"
:class="{ 'swiper-left': diyComponent.swiper.indicatorAlign == 'left', 'swiper-right': diyComponent.swiper.indicatorAlign == 'right', 'ns-indicator-dots': diyComponent.swiper.indicatorStyle == 'style-2', 'ns-indicator-dots-three': diyComponent.swiper.indicatorStyle == 'style-3' }"
@ -128,8 +128,8 @@
<u-popup :safeAreaInsetTop="true" :show="tabAllPopup" mode="top" @close="tabAllPopup = false">
<view class="text-sm px-[30rpx] pt-3" :style="{'padding-top':(systemStore.menuButtonInfo.top+'px')}">全部分类</view>
<view class="flex flex-wrap pl-[30rpx] pt-[30rpx]">
<view @click="changeData({ source : 'home' },-1)" :class="['px-[26rpx] border-[2rpx] border-solid border-transparent h-[60rpx] mr-[30rpx] mb-[30rpx] flex items-center justify-center bg-[#F4F4F4] rounded-[8rpx] text-xs', { 'tab-select-popup': currTabIndex == -1 }]">首页</view>
<text @click="changeData(item,index)" v-for="(item, index) in diyComponent.tab.list" :key="index" :class="['px-[26rpx] border-[2rpx] border-solid border-transparent h-[60rpx] mr-[30rpx] mb-[30rpx] flex items-center justify-center bg-[#F4F4F4] rounded-[8rpx] text-xs', { 'tab-select-popup': index == currTabIndex }]">{{ item.text }}</text>
<view @click="changeData({ source : 'home' },-1)" class="tab-wrap text-xs" :class="[{ 'tab-select-popup': currTabIndex == -1 }]">首页</view>
<text @click="changeData(item,index)" v-for="(item, index) in diyComponent.tab.list" :key="index" class="tab-wrap text-xs" :class="[{ 'tab-select-popup': index == currTabIndex }]">{{ item.text }}</text>
</view>
</u-popup>
</view>
@ -545,6 +545,9 @@ if (componentsScrollVal && (typeof componentsScrollVal == "object")) {
-webkit-filter: blur(0);
filter: blur(0);
overflow: hidden;
&.imp-minus-bottom200 {
bottom: -200rpx !important;
}
uni-image, image {
-webkit-filter: blur(15px);
@ -845,4 +848,23 @@ if (componentsScrollVal && (typeof componentsScrollVal == "object")) {
bottom: 38rpx !important;
}
}
.mx20 {
margin-left: 20rpx;
margin-right: 20rpx;
}
.tab-wrap {
padding-left: 26rpx;
padding-right: 26rpx;
border-width: 2rpx;
border-style: solid;
border-color: transparent;
height: 60rpx;
margin-right: 30rpx;
margin-bottom: 30rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #F4F4F4;
border-radius: 8rpx;
}
</style>

View File

@ -43,8 +43,7 @@
<u-checkbox-group v-if="diyComponent.style == 'style-2'" v-model="selectValue" @change="checkboxChange" iconPlacement="left" placement="column">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)"
class="layout-one-content mb-[16rpx]"
:class="{'!mb-[0]': (diyComponent.options.length-1) == index}">
class="layout-one-content mb16" :class="{'imp-mb0': (diyComponent.options.length-1) == index}">
<u-checkbox class="!m-[0]" activeColor="var(--primary-color)" :labelSize="(diyComponent.fontSize * 2) + 'rpx'" :labelColor="diyComponent.textColor" :label="item.text" :name="item.id"></u-checkbox>
</view>
</u-checkbox-group>
@ -55,7 +54,7 @@
</text>
</view>
<text v-else class="text-[28rpx] text-[#999]" :style="{'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ checkboxPlaceholder }}</text>
<text class="nc-iconfont nc-icon-xiaV6xx pull-down-arrow text-[#666]" :class="{'selected': selectShow}" :style="{'font-size': (diyComponent.fontSize * 2+2) + 'rpx !important'}"></text>
<text class="nc-iconfont nc-icon-xiaV6xx pull-down-arrow" :class="{'selected': selectShow}" :style="{'font-size': (diyComponent.fontSize * 2+2) + 'rpx !important'}"></text>
</view>
<view class="layout-one-attribute-wrap" v-if="inputAttribute().length">
@ -64,7 +63,7 @@
</view>
<view class="base-layout-two" v-if="diyGlobal.completeLayout == 'style-2'">
<text v-if="diyStore.mode == 'decorate' && diyComponent.isHidden" class="layout-two-is-hidden">{{ t('diyForm.hidden') }}</text>
<view class="layout-two-wrap" :class="{'!pb-[20rpx]': ((diyComponent.style == 'style-2' || diyComponent.style == 'style-3') && diyGlobal.borderControl),'no-border': !diyGlobal.borderControl}">
<view class="layout-two-wrap" :class="{'imp-pb20': ((diyComponent.style == 'style-2' || diyComponent.style == 'style-3') && diyGlobal.borderControl),'no-border': !diyGlobal.borderControl}">
<view class="layout-two-label"
:class="{'justify-start': diyGlobal.completeAlign == 'left', 'justify-end': diyGlobal.completeAlign == 'right'}">
<text class="required" v-if="diyComponent.field.required">{{ diyComponent.field.required ? '*' : '' }}</text>
@ -81,9 +80,8 @@
<view class="layout-two-content" v-if="diyComponent.style == 'style-2'">
<view class="justify-end w-full">
<u-checkbox-group v-model="selectValue" placement="column" @change="checkboxChange" iconPlacement="left">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)"
class="border-solid border-[2rpx] border-[#e6e6e6] rounded-[10rpx] flex items-center h-[80rpx] mb-[16rpx] px-[16rpx] box-border"
:class="{'mb-[0]': diyComponent.options.length == (index+1)}">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)" class="radio-wrap"
:class="{'mb0': diyComponent.options.length == (index+1)}">
<u-checkbox activeColor="var(--primary-color)"
:labelSize="(diyComponent.fontSize * 2) + 'rpx'"
:labelColor="diyComponent.textColor" class="!m-[0]" :label="item.text"
@ -103,7 +101,7 @@
</text>
</view>
<text v-else class="text-[28rpx] text-[#999]" :style="{'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ checkboxPlaceholder }}</text>
<text class="nc-iconfont nc-icon-xiaV6xx pull-down-arrow text-[#666]" :class="{'selected': selectShow}" :style="{'font-size': (diyComponent.fontSize * 2+2) + 'rpx !important'}"></text>
<text class="nc-iconfont nc-icon-xiaV6xx pull-down-arrow" :class="{'selected': selectShow}" :style="{'font-size': (diyComponent.fontSize * 2+2) + 'rpx !important'}"></text>
</view>
</view>
</view>
@ -338,6 +336,7 @@ defineExpose({
.pull-down-arrow {
transition: all .3s;
transform: rotate(0);
color: #666;
&.selected {
transform: rotate(180deg);
@ -348,4 +347,28 @@ defineExpose({
width: 30rpx !important;
height: 30rpx !important;
}
.mb16{
margin-bottom: 16rpx;
}
.imp-mb0{
margin-bottom: 0 !important;
}
.imp-pb20 {
padding-bottom: 20rpx !important;
}
.radio-wrap {
border: 2px solid #e6e6e6;
border-radius: 10rpx;
display: flex;
align-items: center;
height: 80rpx;
margin-bottom: 16rpx;
padding-left: 16rpx;
padding-right: 16rpx;
box-sizing: border-box;
&.mb0 {
margin-bottom: 0;
}
}
</style>

View File

@ -35,14 +35,14 @@
<view class="layout-one-content flex-1" @click="openCalendar">
<view class="nc-iconfont nc-icon-a-riliV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis"
:class="{'!text-[#999]' : !diyComponent.field.value.start.timestamp && !diyComponent.defaultControl}"
:class="{'default-control' : !diyComponent.field.value.start.timestamp && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx' }">{{ startDate }}</view>
</view>
<view class="mx-[10rpx]" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">-</view>
<view class="layout-one-content flex-1" @click="openCalendar">
<view class="nc-iconfont nc-icon-a-riliV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis"
:class="{'!text-[#999]' : !diyComponent.field.value.end.timestamp && !diyComponent.defaultControl}"
:class="{'default-control' : !diyComponent.field.value.end.timestamp && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ endDate }}</view>
</view>
</view>
@ -58,9 +58,9 @@
<text class="name" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx' ,'font-weight': diyComponent.fontWeight}">{{ diyComponent.field.name }}</text>
</view>
<view class="layout-two-content" @click="openCalendar">
<view class="text-overflow-ellipsis flex justify-center" :class="{'!text-[#999]' : !diyComponent.field.value.start.timestamp && !diyComponent.defaultControl}" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ startDate }}</view>
<view class="text-overflow-ellipsis flex justify-center" :class="{'default-control' : !diyComponent.field.value.start.timestamp && !diyComponent.defaultControl}" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ startDate }}</view>
<view class="mx-[10rpx]" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">-</view>
<view class="text-overflow-ellipsis flex justify-center" :class="{'!text-[#999]' : !diyComponent.field.value.end.timestamp && !diyComponent.defaultControl}" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ endDate }}</view>
<view class="text-overflow-ellipsis flex justify-center" :class="{'default-control' : !diyComponent.field.value.end.timestamp && !diyComponent.defaultControl}" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ endDate }}</view>
<text class="nc-iconfont !text-[#666] !text-[36rpx] nc-icon-youV6xx -mr-[8rpx]"></text>
</view>
</view>
@ -306,6 +306,9 @@ defineExpose({
white-space: nowrap;
display: inline-block;
}
.default-control {
color: #999 !important;
}
</style>
<style lang="scss">
.calendar-wrap .u-calendar .u-calendar-header__title, .u-calendar-header__subtitle, .u-calendar-month__title {

View File

@ -28,7 +28,7 @@
<view class="layout-one-content" @click="openCalendar">
<view class="nc-iconfont nc-icon-a-riliV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis flex"
:class="{'!text-[#999]' : !diyComponent.field.value.date && !diyComponent.defaultControl}"
:class="{'default-control' : !diyComponent.field.value.date && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx' }">{{ startDate }}</view>
</view>
<view class="layout-one-attribute-wrap" v-if="inputAttribute().length">
@ -45,7 +45,7 @@
</view>
<view class="layout-two-content" @click="openCalendar">
<view class="flex-1 text-overflow-ellipsis flex justify-end"
:class="{'!text-[#999]' : !diyComponent.field.value.date && !diyComponent.defaultControl}"
:class="{'default-control' : !diyComponent.field.value.date && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ startDate }}</view>
<text class="nc-iconfont !text-[#666] !text-[36rpx] nc-icon-youV6xx -mr-[8rpx]"></text>
</view>
@ -269,6 +269,9 @@ defineExpose({
<style lang="scss" scoped>
@import '@/styles/diy_form.scss';
.default-control {
color: #999 !important;
}
</style>
<style lang="scss">

View File

@ -36,7 +36,7 @@
</view>
<u-radio-group v-if="diyComponent.style == 'style-2'" v-model="selectedRadioId" @change="groupChange" iconPlacement="left" placement="column">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)" class="layout-one-content mb-[16rpx]" :class="{'!mb-[0]': (diyComponent.options.length-1) == index}">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)" class="layout-one-content mb16" :class="{'imp-mb0': (diyComponent.options.length-1) == index}">
<u-radio activeColor="var(--primary-color)" :labelSize="(diyComponent.fontSize * 2) + 'rpx'" :labelColor="diyComponent.textColor" class="mr-[20rpx]" :label="item.text" :name="item.id"></u-radio>
</view>
</u-radio-group>
@ -55,7 +55,7 @@
</view>
<view class="base-layout-two" v-if="diyGlobal.completeLayout == 'style-2'">
<text v-if="diyStore.mode == 'decorate' && diyComponent.isHidden" class="layout-two-is-hidden">{{ t('diyForm.hidden') }}</text>
<view class="layout-two-wrap" :class="{'!pb-[20rpx]': ((diyComponent.style == 'style-2' || diyComponent.style == 'style-3') && diyGlobal.borderControl),'no-border': !diyGlobal.borderControl}">
<view class="layout-two-wrap" :class="{'imp-pb20': ((diyComponent.style == 'style-2' || diyComponent.style == 'style-3') && diyGlobal.borderControl),'no-border': !diyGlobal.borderControl}">
<view class="layout-two-label" :class="{'justify-start': diyGlobal.completeAlign == 'left', 'justify-end': diyGlobal.completeAlign == 'right'}"><text class="required">{{ diyComponent.field.required ? '*' : '' }}</text>
<text class="name" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx' ,'font-weight': diyComponent.fontWeight}">{{ diyComponent.field.name }}</text>
</view>
@ -77,7 +77,7 @@
<u-radio-group v-model="selectedRadioId" @change="groupChange" placement="column" iconPlacement="left">
<view v-for="(item, index) in diyComponent.options" :key="index" @click="selectRadio(item)"
class="border-solid border-[2rpx] border-[#e6e6e6] rounded-[10rpx] flex items-center h-[80rpx] mb-[16rpx] px-[16rpx] box-border"
:class="{'mb-[0]': diyComponent.options.length == (index+1)}">
:class="{'mb0': diyComponent.options.length == (index+1)}">
<u-radio activeColor="var(--primary-color)"
:labelSize="(diyComponent.fontSize * 2) + 'rpx'"
:labelColor="diyComponent.textColor" class="!m-[0]" :label="item.text"
@ -350,4 +350,16 @@ defineExpose({
width: 30rpx !important;
height: 30rpx !important;
}
.mb16 {
margin-bottom: 16rpx;
}
.imp-mb0 {
margin-bottom: 0 !important;
}
.imp-pb20 {
padding-bottom: 20rpx !important;
}
.mb0 {
margin-bottom: 0;
}
</style>

View File

@ -35,14 +35,14 @@
<view class="layout-one-content flex-1" @click="startDatetime = true">
<view class="nc-iconfont nc-icon-a-shijianV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis"
:class="{'!text-[#999]' : !diyComponent.defaultControl && !diyComponent.field.value.start.date}"
:class="{'text-color-999' : !diyComponent.defaultControl && !diyComponent.field.value.start.date}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ startTime }}</view>
</view>
<view class="mx-[10rpx]" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">-</view>
<view class="layout-one-content flex-1" @click="endDatetime = true">
<view class="nc-iconfont nc-icon-a-shijianV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis"
:class="{'!text-[#999]' : !diyComponent.defaultControl && !diyComponent.field.value.end.date}"
:class="{'text-color-999' : !diyComponent.defaultControl && !diyComponent.field.value.end.date}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">{{ endTime }}</view>
</view>
</view>
@ -60,12 +60,12 @@
</view>
<view class="layout-two-content" @click="openCalendar">
<view class="text-overflow-ellipsis flex justify-center"
:class="{'!text-[#999]' : !diyComponent.field.value.start.date && !diyComponent.defaultControl}"
:class="{'text-color-999' : !diyComponent.field.value.start.date && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}"
@click="startDatetime = true">{{ startTime }}</view>
<view class="mx-[10rpx]" :style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}">-</view>
<view class="text-overflow-ellipsis flex justify-center"
:class="{'!text-[#999]' : !diyComponent.field.value.end.date && !diyComponent.defaultControl}"
:class="{'text-color-999' : !diyComponent.field.value.end.date && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}"
@click="endDatetime = true">{{ endTime }}</view>
<text class="nc-iconfont !text-[#666] !text-[36rpx] nc-icon-youV6xx -mr-[8rpx]"></text>
@ -362,4 +362,7 @@ defineExpose({
.form-item-frame :deep(.u-picker .u-toolbar__wrapper__cancel), .form-item-frame :deep(.u-picker .u-toolbar__wrapper__confirm) {
font-size: 28rpx;
}
.text-color-999 {
color: #999 !important;
}
</style>

View File

@ -28,7 +28,7 @@
<view class="layout-one-content">
<view class="nc-iconfont nc-icon-a-shijianV6xx-36 !text-[32rpx] text-[#999] mr-[16rpx]"></view>
<view class="flex-1 text-overflow-ellipsis flex"
:class="{'!text-[#999]' : !diyComponent.field.value && !diyComponent.defaultControl}"
:class="{'text-color-999' : !diyComponent.field.value && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}"
@click="startDatetime = true">{{ startTime }}</view>
</view>
@ -45,7 +45,7 @@
</view>
<view class="layout-two-content" @click="openCalendar">
<view class="flex-1 text-overflow-ellipsis flex justify-end "
:class="{'!text-[#999]' : !diyComponent.field.value && !diyComponent.defaultControl}"
:class="{'text-color-999' : !diyComponent.field.value && !diyComponent.defaultControl}"
:style="{'color': diyComponent.textColor,'font-size': (diyComponent.fontSize * 2) + 'rpx'}"
@click="startDatetime = true">{{ startTime }}</view>
<text class="nc-iconfont !text-[#666] !text-[36rpx] nc-icon-youV6xx -mr-[8rpx]"></text>
@ -233,4 +233,7 @@ defineExpose({
.form-item-frame :deep(.u-picker .u-toolbar__wrapper__cancel), .form-item-frame :deep(.u-picker .u-toolbar__wrapper__confirm) {
font-size: 28rpx;
}
.text-color-999 {
color: #999 !important;
}
</style>

View File

@ -48,7 +48,7 @@
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-[16rpx]' : diyComponent.mode != 'text' }"
:class="{ 'pt16' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">{{ item.title }}</text>
</view>
@ -88,7 +88,7 @@
</view>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-[16rpx]' : diyComponent.mode != 'text' }"
:class="{ 'pt16' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">{{ item.title }}</text>
</view>
</template>
@ -120,7 +120,7 @@
</view>
<text v-if="diyComponent.mode != 'img'"
class="graphic-text w-full text-center truncate leading-normal"
:class="{ 'pt-[16rpx]' : diyComponent.mode != 'text' }"
:class="{ 'pt16' : diyComponent.mode != 'text' }"
:style="{ fontSize: diyComponent.font.size * 2 + 'rpx', fontWeight: diyComponent.font.weight, color: diyComponent.font.color }">{{ item.title }}</text>
</view>
</view>
@ -370,4 +370,7 @@ const isShowSlideTemp = (index, numItem) => {
}
}
}
.pt16 {
padding-top: 16rpx;
}
</style>

View File

@ -15,12 +15,12 @@
<!-- 横向滚动 -->
<view class="horizontal-wrap" :style="marqueeStyle" v-if="diyComponent.scrollWay == 'horizontal'">
<view class="marquee marquee-one" id="marquee-one">
<view class="item flex-shrink-0 !leading-[40rpx] h-[40rpx]" :class="{'ml-[80rpx]':index}"
<view class="item" :class="{'ml80':index}"
v-for="(item, index) in diyComponent.list" :key="index" @click="toRedirect(item)"
:style="{ color: diyComponent.textColor, fontSize: diyComponent.fontSize * 2 + 'rpx', fontWeight: diyComponent.fontWeight }">{{ item.text }}</view>
</view>
<view class="marquee" v-if="marqueeBodyWidth < (marqueeOneWidth-30)">
<view class="item flex-shrink-0 !leading-[40rpx] h-[40rpx]" :class="{'ml-[80rpx]':index}"
<view class="item" :class="{'ml80':index}"
v-for="(item, index) in diyComponent.list" :key="index" @click="toRedirect(item)"
:style="{ color: diyComponent.textColor, fontSize: diyComponent.fontSize * 2 + 'rpx', fontWeight: diyComponent.fontWeight }">{{ item.text }}</view>
</view>
@ -272,6 +272,14 @@ swiper {
// -moz-perspective: 1000;
// -ms-perspective: 1000;
// perspective: 1000;
.item{
flex-shrink: 0;
line-height: 40rpx !important;
height: 40rpx;
&.ml80 {
margin-left: 80rpx;
}
}
}
@keyframes marquee {

View File

@ -7,7 +7,7 @@
<text class="text-[22rpx] truncate max-w-[164rpx]" v-if="diyComponent.moduleOne.head.subText" :style="{color: diyComponent.moduleOne.head.subTextColor}">{{ diyComponent.moduleOne.head.subText }}</text>
</view>
<view class="flex items-center">
<view v-for="(item,index) in diyComponent.moduleOne.list" :key="index" class="flex flex-col items-center" :class="{'mr-[10rpx]': index == 0}" @click="diyStore.toRedirect(item.link)">
<view v-for="(item,index) in diyComponent.moduleOne.list" :key="index" class="flex flex-col items-center" :class="{'mr10': index == 0}" @click="diyStore.toRedirect(item.link)">
<view class="bg-[#fff] flex items-center justify-center w-[148rpx] h-[148rpx] rounded-[12rpx] mb-[16rpx]">
<image v-if="item.imageUrl" class="w-[102rpx] h-[102rpx]" :src="img(item.imageUrl)" mode="aspectFill" />
<u-icon v-else name="photo" color="#999" size="50"></u-icon>
@ -25,7 +25,7 @@
</view>
<view class="flex items-center">
<view v-for="(item,index) in diyComponent.moduleTwo.list" :key="index"
class="flex flex-col items-center" :class="{'mr-[10rpx]': index == 0}"
class="flex flex-col items-center" :class="{'mr10': index == 0}"
@click="diyStore.toRedirect(item.link)">
<view class="bg-[#fff] flex items-center justify-center w-[148rpx] h-[148rpx] rounded-[12rpx] mb-[16rpx]">
<image v-if="item.imageUrl" class="w-[102rpx] h-[102rpx]" :src="img(item.imageUrl)" mode="aspectFill"/>
@ -127,4 +127,8 @@ const refresh = () => {
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.mr10 {
margin-right: 10rpx;
}
</style>

View File

@ -104,7 +104,7 @@
</view>
</view>
</view>
<view class="footer w-full" v-if="registerType.length > 1" :class="{'fixed bottom-0 left-0 right-0': type == 'mobile', 'pt-[60rpx]': type == 'username'}">
<view class="footer w-full" v-if="registerType.length > 1" :class="{'fixed bottom-0 left-0 right-0': type == 'mobile', 'pt60': type == 'username'}">
<view class="text-[26rpx] leading-[36rpx] text-[#666] text-center mb-[30rpx] font-400">其他注册方式</view>
<view class="flex justify-center gap-[40rpx]">
<text v-if="type == 'mobile' && configStore.login.is_mobile" @click="type = 'username'" class="w-[66rpx] h-[66rpx] flex items-center justify-center iconfont iconmima6Vmm border-[2rpx] rounded-[50%] border-solid border-[#ddd] !text-[26rpx]"></text>
@ -377,4 +377,7 @@ const toLink = () => {
padding-bottom: calc(151rpx + constant(safe-area-inset-bottom));
padding-bottom: calc(151rpx + env(safe-area-inset-bottom));
}
.pt60 {
padding-top: 60rpx;
}
</style>

View File

@ -50,7 +50,7 @@
</view> -->
</view>
<view class="border-0 border-solid border-b-[1rpx] border-[#f6f6f6] mb-[20rpx]">
<view v-for="(item, index) in friendsInfo.trade_info.item_list" class="flex justify-between" :class="{' mb-[34rpx]': (index + 1) != friendsInfo.trade_info.length }">
<view v-for="(item, index) in friendsInfo.trade_info.item_list" class="flex justify-between" :class="{'mb34': (index + 1) != friendsInfo.trade_info.length }">
<view class="w-[170rpx] h-[170rpx] rounded-[var(--goods-rounded-big)] overflow-hidden flex-shrink-0">
<up-image class="overflow-hidden" radius="var(--goods-rounded-big)" width="170rpx" height="170rpx" :src="img(item.item_image ? item.item_image : '')" model="aspectFill">
<template #error>
@ -224,4 +224,7 @@ const save = () =>{
.botton-color{
background: linear-gradient( 94deg, #FB7939 0%, #FE120E 99%), #EF000C;
}
.mb34 {
margin-bottom: 34rpx;
}
</style>

View File

@ -76,7 +76,7 @@
<script setup lang="ts">
import { ref, computed, nextTick, onMounted } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { deepClone, redirect } from '@/utils/common'
import { deepClone, redirect,openMapSelector } from '@/utils/common'
import { t } from '@/locale'
import { addAddress, editAddress, getAddressInfo } from '@/app/api/member'
import manifestJson from '@/manifest.json'
@ -262,7 +262,7 @@ const save = () => {
const chooseLocation = () => {
let latitude = systemStore.diyAddressInfo ? systemStore.diyAddressInfo.latitude : '';
let longitude = systemStore.diyAddressInfo ? systemStore.diyAddressInfo.longitude : '';
// #ifndef H5
uni.chooseLocation({
latitude,
@ -301,7 +301,11 @@ const chooseLocation = () => {
if (isSelectMap.value) {
backurl = backurl + '&isSelectMap=' + isSelectMap.value
}
window.location.href = 'https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=' + encodeURIComponent(backurl) + '&key=' + manifestJson.h5.sdkConfigs.maps.qqmap.key + '&referer=myapp';
let params = ''
if (latitude && longitude) {
params = `latng=${ latitude },${ longitude }`
}
openMapSelector(backurl, params);
// #endif
}

View File

@ -28,7 +28,7 @@
<!-- 提现到微信 -->
<view class="p-[20rpx] mb-[20rpx] flex items-center rounded-[var(--rounded-mid)] border-[1rpx] border-solid border-[#eee]"
v-if="config.transfer_type.includes('wechatpay') && openId"
:class="{'border-[#00C800] bg-[#ECF9EF]': applyData.transfer_type == 'wechatpay'}"
:class="{'wechat-wrap': applyData.transfer_type == 'wechatpay'}"
@click="transferWeixin">
<view>
<image class="h-[60rpx] w-[60rpx] align-middle" :src="img('static/resource/images/member/apply_withdrawal/wechat.png')" mode="widthFix" />
@ -42,7 +42,7 @@
<!-- 提现到微信收款码 -->
<view class="p-[20rpx] mb-[20rpx] flex items-center rounded-[var(--rounded-mid)] border-[1rpx] border-solid border-[#eee]"
v-if="config.transfer_type.includes('wechat_code')"
:class="{'border-[#00C800] bg-[#ECF9EF]': applyData.transfer_type == 'wechat_code' && wechatCodeInfo}">
:class="{'wechat-wrap': applyData.transfer_type == 'wechat_code' && wechatCodeInfo}">
<view @click="transferWechatCode">
<image class="h-[60rpx] w-[60rpx] align-middle" :src="img('static/resource/images/member/apply_withdrawal/wechat_code.png')" mode="widthFix" />
</view>
@ -68,7 +68,7 @@
<!-- 提现到支付宝 -->
<view class="p-[20rpx] mb-[20rpx] flex items-center rounded-[var(--rounded-mid)] border-[1rpx] border-solid border-[#eee]"
v-if="config.transfer_type.includes('alipay')"
:class="{'border-[#009FE8] bg-[#EEF8FC]': applyData.transfer_type == 'alipay' && alipayAccountInfo}">
:class="{'alipay-wrap': applyData.transfer_type == 'alipay' && alipayAccountInfo}">
<view @click="transferAlipay">
<image class="h-[60rpx] w-[60rpx] align-middle" :src="img('static/resource/images/member/apply_withdrawal/alipay-icon.png')" mode="widthFix" />
</view>
@ -94,7 +94,7 @@
<!-- 提现到银行卡 -->
<view class="p-[20rpx] flex items-center rounded-[var(--rounded-mid)] border-[1rpx] border-solid border-[#eee]"
v-if="config.transfer_type.includes('bank')"
:class="{'border-[#089C98] bg-[#F6FFFF]': applyData.transfer_type == 'bank' && bankAccountInfo}">
:class="{'bank-wrap': applyData.transfer_type == 'bank' && bankAccountInfo}">
<view @click="transferBank">
<image class="h-[42rpx] w-[60rpx] align-middle" :src="img('static/resource/images/member/apply_withdrawal/bank-icon.png')" mode="widthFix" />
</view>
@ -441,4 +441,16 @@ const transferWechatCode = () => {
padding-bottom: calc(constant(safe-area-inset-bottom) + 30rpx);
padding-bottom: calc(env(safe-area-inset-bottom) + 30rpx);
}
.wechat-wrap {
border-color: #00C800;
background-color: #ECF9EF;
}
.alipay-wrap {
border-color: #009FE8;
background-color: #EEF8FC;
}
.bank-wrap {
border-color: #089C98;
background-color: #F6FFFF;
}
</style>

View File

@ -16,7 +16,7 @@
class="sidebar-margin pt-[50rpx] pb-[40rpx] bg-[#fff] rounded-[var(--rounded-big)] px-[40rpx] box-border mt-[-112rpx]">
<view class="flex flex-col items-center w-full"
@click="redirect({ url: '/app/pages/member/detailed_account', param: { type : 'money' } })"
:class="{'pt-[12rpx]': !Object.keys(cashOutConfigObj).length || (Object.keys(cashOutConfigObj).length && !systemStore.siteAddons.includes('recharge') && cashOutConfigObj.is_open != 1)}">
:class="{'pt12': !Object.keys(cashOutConfigObj).length || (Object.keys(cashOutConfigObj).length && !systemStore.siteAddons.includes('recharge') && cashOutConfigObj.is_open != 1)}">
<view class=" text-[var(--text-color-light9)] text-[26rpx] leading-[34rpx] mb-[12rpx]">{{ t('money') }}</view>
<view class="text-[#333] inline-block">
<text class="text-[36rpx] mr-[6rpx] price-font"></text>
@ -32,7 +32,7 @@
@click="redirect({url: '/addon/recharge/pages/recharge'})">充值</button>
</template>
<view v-if="cashOutConfigObj.is_open == 1"
:class="{'!w-[340rpx]': !systemStore.siteAddons.includes('recharge')}"
:class="{'imp-w340': !systemStore.siteAddons.includes('recharge')}"
class="text-center w-[250rpx] h-[70rpx] rounded-[40rpx] text-[26rpx] !text-[#fff] flex-center font-500 !m-0"
style="background: linear-gradient( 94deg, #FB7939 0%, #FE120E 99%), #EF000C;"
@click="applyCashOut">提现</view>
@ -50,12 +50,10 @@
</view>
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="{ use: false }" height="auto" @up="getListFn" :top="mescrollTop">
<view class="sidebar-margin pt-[10rpx] body-bottom" v-if="list.length">
<view v-for="(item,index) in list" :key="item.id"
class="w-full h-[140rpx] flex justify-between items-center box-border card-template"
:class="{'mt-[var(--top-m)]':index>0}">
<view v-for="(item,index) in list" :key="item.id" class="card-template" :class="{'mt-var':index>0}">
<view class="flex items-center">
<view class="w-[80rpx] h-[80rpx] text-center rounded-[40rpx] text-[40rpx] font-500 leading-[80rpx] text-[#fff]"
:class="{'bg-[#EF000C]' :item.account_data > 0&&item.account_type!='money', 'bg-[#03B521]':item.account_data <= 0&&item.account_type!='money','bg-[#1379FF]':item.account_type=='money'}">{{ item.account_type == 'money' ? '提' : item.account_data > 0 ? '收' : '支' }}</view>
:class="{'bg-money-red' :item.account_data > 0 && item.account_type!='money', 'bg-money-green':item.account_data <= 0&&item.account_type!='money','bg-money-blue':item.account_type=='money'}">{{ item.account_type == 'money' ? '提' : item.account_data > 0 ? '收' : '支' }}</view>
<view class="flex flex-col ml-[20rpx]">
<view class="text-[#333] text-[28rpx] leading-[36rpx]">{{ item.from_type_name }}</view>
<view class="text-[var(--text-color-light9)] text-[24rpx] mt-[12rpx]">{{ item.create_time }}</view>
@ -63,7 +61,7 @@
</view>
<view class="text-right">
<view class="text-[36rpx] leading-[40rpx] price-font"
:class="{'text-[#EF000C]' :item.account_data > 0&&item.account_type!='money', 'text-[#03B521]':item.account_data <= 0&&item.account_type!='money'}">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
:class="{'text-money-red' :item.account_data > 0 && item.account_type!='money', 'text-money-green':item.account_data <= 0&&item.account_type!='money'}">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
</view>
</view>
</view>
@ -264,5 +262,37 @@ const confirmFn = (data: any) => {
.pl-20rpx {
padding-left: 20rpx;
}
.pt12 {
padding-top: 12rpx;
}
.imp-w340{
width: 340rpx !important;
}
.card-template {
width: 100%;
height: 140rpx;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
.mt-var {
margin-top: var(--top-m);
}
}
.bg-money-red {
background-color: #EF000C;
}
.bg-money-green {
background-color: #03B521;
}
.bg-money-blue {
background-color: #1379FF;
}
.text-money-red {
color: #EF000C;
}
.text-money-green {
color: #03B521;
}
</style>

View File

@ -8,7 +8,7 @@
</view> -->
<view class="flex items-center flex-col mb-[80rpx]">
<text class="text-[60rpx] font-bold price-font mb-[16rpx]">{{ cashOutInfo.apply_money }}</text>
<text class="text-[28rpx] text-[#333]" :class="{'text-primary': cashOutInfo.status == 1, 'text-[#999]': cashOutInfo.status == 4 }">{{ cashOutInfo.status_name }}</text>
<text class="status-name" :class="{'text-primary': cashOutInfo.status == 1, 'gray': cashOutInfo.status == 4 }">{{ cashOutInfo.status_name }}</text>
</view>
<!-- 状态1.待审核2.待转账 3.已转账 4.转账中 -1拒绝' -->
<view>
@ -296,4 +296,12 @@ onUnload(() => {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
.status-name {
font-size: 28rpx;
color: #333;
&.gray {
color: #999;
}
}
</style>

View File

@ -42,19 +42,17 @@
</view>
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="{ use: false }" @up="geCommissionListFn" :top="mescrollTop">
<view class="px-[var(--sidebar-m)] pt-[10rpx] body-bottom" v-if="list.length">
<view v-for="(item,index) in list" :key="item.id"
class="w-full h-[140rpx] flex justify-between items-center card-template"
:class="{'mt-[var(--top-m)]':index}">
<view v-for="(item,index) in list" :key="item.id" class="card-template" :class="{'mt':index}">
<view class="flex items-center">
<view class="w-[80rpx] h-[80rpx] rounded-[40rpx] text-[40rpx] font-500 text-[#fff] flex items-center justify-center"
:class="{'bg-[#EF000C]' :item.account_data > 0, 'bg-[#1379FF]':item.account_data <= 0 }">{{ item.account_data > 0 ? '收' : '提' }}</view>
:class="{'account-data-bg-red' :item.account_data > 0, 'account-data-bg-blue':item.account_data <= 0 }">{{ item.account_data > 0 ? '收' : '提' }}</view>
<view class="flex flex-col ml-[20rpx]">
<view class="text-[#333] text-[28rpx] leading-[36rpx]">{{ item.from_type_name }}</view>
<view class="text-[var(--text-color-light9)] text-[24rpx] mt-[12rpx]">{{ item.create_time }}</view>
</view>
</view>
<view class="text-[36rpx] leading-[50rpx] price-font"
:class="{'text-[#EF000C]' :item.account_data > 0, 'text-[#1379FF]':item.account_data <= 0 }">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
:class="{'account-data-text-red' :item.account_data > 0, 'account-data-text-blue':item.account_data <= 0 }">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
</view>
</view>
<mescroll-empty v-if="!list.length && !loading &&!listLoading"></mescroll-empty>
@ -166,7 +164,7 @@ const confirmFn = (data: any) => {
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.member-level {
background: linear-gradient(360deg, #F23621 11%, #FF7F71 100%), #D9D9D9;
border-radius: 0 20rpx 20rpx 0;
@ -180,4 +178,27 @@ const confirmFn = (data: any) => {
padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
}
.card-template {
width: 100%;
height: 140rpx;
display: flex;
justify-content: space-between;
align-items: center;
&.mt {
margin-top: var(--top-m);
}
}
.account-data-bg-red{
background-color: #EF000C;
}
.account-data-bg-blue {
background-color: #1379FF;
}
.account-data-text-red{
color: #EF000C;
}
.account-data-text-blue{
color: #1379FF;
}
</style>

View File

@ -7,12 +7,12 @@
</view>
<view class="px-[30rpx] mb-[20rpx]">
<view class="flex items-center justify-between mb-[30rpx]">
<view class="w-[160rpx] h-[60rpx] leading-[60rpx] rounded-[30rpx] bg-[#F4F6FA] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[#F4F6FA]" v-for="(item,index) in curselectDate" :key="'a'+index" :class="{'text-primary !border-[var(--primary-color)] !bg-[rgba(239,0,12,0.04)]': currentValue.type == item.type}" @click="loadDateFn(item)">{{item.name}}</view>
<view class="cur-select-date-wrap" v-for="(item,index) in curselectDate" :key="'a'+index" :class="{'selected': currentValue.type == item.type}" @click="loadDateFn(item)">{{item.name}}</view>
</view>
<view class="flex items-center justify-between">
<view class="w-[316rpx] h-[60rpx] leading-[60rpx] rounded-[30rpx] bg-[#F4F6FA] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[#F4F6FA]" :class="{'text-primary !border-[var(--primary-color)] !bg-[rgba(239,0,12,0.04)]': currentValue.type == 'first'}" @click="currentValue.type = 'first'">{{dateList.nowDate[0]}}</view>
<view class="now-date-wrap" :class="{'selected': currentValue.type == 'first'}" @click="currentValue.type = 'first'">{{dateList.nowDate[0]}}</view>
<view class="nc-iconfont nc-icon-jianV6xx"></view>
<view class="w-[316rpx] h-[60rpx] leading-[60rpx] rounded-[30rpx] bg-[#F4F6FA] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[#F4F6FA]" :class="{'text-primary !border-[var(--primary-color)] !bg-[rgba(239,0,12,0.04)]': currentValue.type == 'second'}" @click="currentValue.type = 'second'">{{dateList.nowDate[1]}}</view>
<view class="now-date-wrap" :class="{'selected': currentValue.type == 'second'}" @click="currentValue.type = 'second'">{{dateList.nowDate[1]}}</view>
</view>
</view>
<view class="h-[396rpx]">
@ -179,7 +179,7 @@ defineExpose({
})
</script>
<style scoped>
<style lang="scss" scoped>
:deep(.uni-picker-view-content){
z-index: 10;
}
@ -189,4 +189,39 @@ defineExpose({
:deep(.uni-picker-view-indicator::after){
border: none !important;
}
.cur-select-date-wrap {
width: 160rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 30rpx;
background-color: #F4F6FA;
text-align: center;
font-size: 26rpx;
color: var(--text-color-light6);
border-width: 2rpx;
border-style: solid;
border-color: #F4F6FA;
&.selected {
color: var(--primary-color);
border: var(--primary-color) !important;
background-color: rgba(239, 0, 12, 0.04) !important;
}
}
.now-date-wrap{
width: 316rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 30rpx;
background-color: #F4F6FA;
text-align: center;
font-size: 26rpx;
color: var(--text-color-light6);
border: 2rpx solid #F4F6FA;
&.selected {
color: var(--primary-color);
border: var(--primary-color) !important;
background-color: rgba(239, 0, 12, 0.04) !important;
}
}
</style>

View File

@ -25,8 +25,7 @@
<view v-for="(item,index) in list" :key="item.id" class="sidebar-margin mb-[var(--top-m)] card-template relative">
<view class="flex items-center justify-between mb-[20rpx]">
<view class="text-[28rpx] font-500 text-[#333] leading-[40rpx]">{{ item.from_type_name }}</view>
<view class="absolute right-[30rpx] top-[30rpx] text-[36rpx] font-500 text-[#03B521] leading-[50rpx] price-font"
:class="{'!text-[var(--price-text-color)]':item.account_data > 0}">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
<view class="account-data-wrap price-font" :class="{'selected':item.account_data > 0}">{{ item.account_data > 0 ? '+' + item.account_data : item.account_data }}</view>
</view>
<view class="text-[24rpx] text-[var(--text-color-light6)] mb-[14rpx]" v-if="item.memo">{{ item.memo }}</view>
<view class="text-[24rpx] text-[var(--text-color-light6)]">{{ item.create_time }}</view>
@ -150,9 +149,22 @@ const confirmFn = (data: any) => {
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.body-bottom {
padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
}
.account-data-wrap {
position: absolute;
right: 30rpx;
top: 30rpx;
font-size: 36rpx;
font-weight: 500;
color: #03B521;
line-height: 50rpx;
&.selected {
color: var(--price-text-color) !important;
}
}
</style>

View File

@ -16,8 +16,7 @@
<view v-if="memberInfo.member_level == item.level_id && swiperIndex == index"
class="text-[24rpx] absolute top-0 left-0 z-10 h-[66rpx] !bg-contain w-[150rpx] flex pt-[12rpx] pl-[16rpx] box-border"
:style="{ background: 'url(' + img(currLevelInfo.level_tag) + ') no-repeat',color: currLevelInfo.level_style.level_color}">当前等级</view>
<view class="absolute top-0 left-0 right-0 bottom-0 z-20 px-[30rpx] pt-[68rpx] box-border"
:class="{'px-[50rpx]': swiperIndex != index}">
<view class="swiper-level-item-wrap" :class="{'px50': swiperIndex != index}">
<view class="flex items-center leading-[50rpx] mb-[90rpx]">
<image class="h-[32rpx] w-[34rpx] align-middle" :src="img(item.level_icon ? item.level_icon : '')" mode="aspectFill" />
<view class="text-[36rpx] font-bold ml-[10rpx] max-w-[340rpx] truncate" :style="{color:currLevelInfo.level_style.level_color}">{{ item.level_name }}</view>
@ -55,8 +54,8 @@
<template v-for="(item,index) in list" :key="item.id">
<view :style="levelStyle" class=" flex-shrink-0 flex flex-col items-center justify-center"
@click="changeLevel(index)" :id="'id' + index">
<view class="w-[14rpx] h-[14rpx] level-class" :class="{'level-select': levelIndex == (index)}"></view>
<view :style="maxWidth" class="text-[22rpx] text-[#aaa] mt-[16rpx] truncate" :class="{'!text-[#fff]': levelIndex == (index)}">{{ item.level_name }}</view>
<view class="level-class" :class="{'level-select': levelIndex == (index)}"></view>
<view :style="maxWidth" class="level-name" :class="{'selected': levelIndex == (index)}">{{ item.level_name }}</view>
</view>
</template>
</view>
@ -85,7 +84,7 @@
<text class="text-[30rpx] text-[#333] font-500 leading-[44rpx]">升级礼包</text>
</view>
<view class="flex flex-wrap">
<view v-for="(item,index) in currLevelInfo.gifts_arr" :key="index" class="mb-[20rpx]" :class="{'mr-[21rpx]': (index+1) % 3 != 0}">
<view v-for="(item,index) in currLevelInfo.gifts_arr" :key="index" class="mb20" :class="{'mr21': (index+1) % 3 != 0}">
<view class="relative box-border mb-[16rpx] w-[216rpx] h-[180rpx] !bg-contain" :style="{ background: 'url(' + img(item.background) + ') no-repeat'}"></view>
<view class="text-center font-500 text-[#333] text-[28rpx] truncate leading-[40rpx] max-w-[216rpx]">{{ item.text }}</view>
</view>
@ -314,6 +313,8 @@ const changeLevel = (index: any) => {
.level-class {
position: relative;
width: 14rpx;
height: 14rpx;
&::before {
content: "";
@ -355,4 +356,38 @@ const changeLevel = (index: any) => {
background-repeat: no-repeat;
background-size: 100% 100%;
}
.swiper-level-item-wrap {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 20;
padding-left: 30rpx;
padding-right: 30rpx;
padding-top: 68rpx;
box-sizing: border-box;
&.px50 {
padding-left: 50rpx;
padding-right: 50rpx;
}
}
.level-name {
font-size: 22rpx;
color: #aaa;
margin-top: 16rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&.selected {
color: #fff !important;
}
}
.mb20 {
margin-bottom: 20rpx;
}
.mr21 {
margin-right: 21rpx;
}
</style>

View File

@ -3,7 +3,7 @@
<view class="fixed left-0 right-0 top-0 z-10085 container">
<view class="bg-[#f6f6f6] px-[30rpx] h-[88rpx] pt-[10rpx] flex-center relative z-10084">
<view class="search-input bg-[#fff]">
<view class="flex-1 text-[24rpx] leading-[60rpx] text-[var(--text-color-light9)]" :class="{'!text-[#333]':from_type}" @click="typePopup = true">{{ from_type_name || '请选择来源用途' }}</view>
<view class="from-type-name" :class="{'selected':from_type}" @click="typePopup = true">{{ from_type_name || '请选择来源用途' }}</view>
<text class="nc-iconfont nc-icon-shangV6xx-1 !text-[26rpx] ml-[18rpx] !text-[var(--text-color-light6)]" v-if="typePopup" @click="typePopup = false"></text>
<text class="nc-iconfont nc-icon-xiaV6xx !text-[26rpx] ml-[18rpx] !text-[var(--text-color-light6)]" v-else @click="typePopup = true"></text>
</view>
@ -11,18 +11,15 @@
<view class="type-class">
<u-popup :show="typePopup" mode="top" @close="typePopup = false">
<view @touchmove.prevent.stop class="py-[22rpx]">
<view class="leading-[80rpx] text-[26rpx] text-[#333] px-[50rpx]"
:class="{'bg-[var(--primary-color-light)] !text-primary font-500' : from_type == ''}" @click="searchTypeFn()">全部</view>
<view class="leading-[80rpx] text-[26rpx] text-[#333] px-[50rpx]"
:class="{'bg-[var(--primary-color-light)] !text-primary font-500' : from_type == index}"
<view class="type-item-wrap" :class="{'selected' : from_type == ''}" @click="searchTypeFn()">全部</view>
<view class="type-item-wrap" :class="{'selected' : from_type == index}"
v-for="(item,index) in pointType" @click="searchTypeFn(index,item)">{{ item.name }}</view>
</view>
</u-popup>
</view>
<view class="px-[var(--sidebar-m)] pb-[20rpx] pt-[20rpx] bg-[#f6f6f6] flex items-center justify-between">
<view class="flex items-center">
<view class="px-[30rpx] bg-[#fff] rounded-[30rpx] text-[24rpx] leading-[54rpx] mr-[20rpx] text-[#333]"
:class="{'!text-[var(--primary-color)] font-500':amount_type == item.status}"
<view class="amount-type-item-wrap" :class="{'selected':amount_type == item.status}"
v-for="(item,index) in typeList" :key="index" @click="loadTypeFn(item.status)">{{ item.name }}</view>
</view>
<view class="flex items-center" @click="handleSelect">
@ -52,12 +49,12 @@
<image v-if="subItem.account_data > 0" :src="img('static/resource/images/member/point/detail/point_add.png')" class="w-[60rpx] h-[60rpx]"/>
<image v-else :src="img('static/resource/images/member/point/detail/point_min.png')" class="w-[60rpx] h-[60rpx]"/>
</view>
<view class="flex-1 flex items-center ml-[20rpx] box-border py-[30rpx] border-0" :class="{'border-solid border-t-[2rpx] border-[#F0F2F8]' : subIndex}">
<view class="from-type-name-wrap" :class="{'border-style' : subIndex}">
<view class="flex-1">
<view class="text-[26rpx] text-[#333]">{{ subItem.from_type_name }}</view>
<view class="text-[24rpx] text-[var(--text-color-light9)] mt-[16rpx]">{{ subItem.create_time }}</view>
</view>
<view class="text-[36rpx] font-500 text-[#03B521] price-font" :class="{ '!text-primary' : subItem.account_data > 0 }">{{ subItem.account_data > 0 ? '+' + subItem.account_data : subItem.account_data }}</view>
<view class="account-data-wrap price-font" :class="{ '!text-primary' : subItem.account_data > 0 }">{{ subItem.account_data > 0 ? '+' + subItem.account_data : subItem.account_data }}</view>
</view>
</view>
</template>
@ -180,4 +177,61 @@ const confirmFn = (data: any) => {
:deep(.type-class .u-popup .u-transition) {
top: 86rpx !important;
}
.from-type-name {
flex: 1;
font-size: 24rpx;
line-height: 60rpx;
color: var(--text-color-light9);
&.selected {
color: #333 !important;
}
}
.type-item-wrap {
line-height: 80rpx;
font-size: 26rpx;
color: #333;
padding-left: 50rpx;
padding-right: 50rpx;
&.selected {
background-color: var(--primary-color-light);
color: var(--primary-color) !important;
font-weight: 500;
}
}
.amount-type-item-wrap {
padding-left: 30rpx;
padding-right: 30rpx;
background-color: #fff;
border-radius: 30rpx;
font-size: 24rpx;
line-height: 54rpx;
margin-right: 20rpx;
color: #333;
&.selected {
color: var(--primary-color) !important;
font-weight: 500;
}
}
.from-type-name-wrap {
flex: 1;
display: flex;
align-items: center;
margin-left: 20rpx;
box-sizing: border-box;
padding-top: 30rpx;
padding-bottom: 30rpx;
border: none;
&.border-style {
border: 2px solid #F0F2F8;
}
}
.account-data-wrap{
font-size: 36rpx;
font-weight: 500;
color: #03B521;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<view :style="themeColor()">
<view class="min-h-screen overflow-hidden" v-if="Object.values(info).length" :class="{ 'bg-[#F6F6F6]' : info && info.is_use }">
<view class="min-h-screen overflow-hidden" v-if="Object.values(info).length" :class="{ 'is-use' : info && info.is_use }">
<view v-if="info.is_use">
<view class="sigin-header">
<!-- #ifndef H5 -->
@ -51,9 +51,8 @@
<view class="flex flex-wrap items-center justify-start" v-if="!flag">
<template v-for="(item,index) in state.weekCount" :key="index">
<view class="w-[14.28%] flex flex-col justify-center items-center">
<view v-if="filteredDate(item)"
class="w-[74rpx] h-[92rpx] bg-[#f4f4f4] text-[var(--text-color-light6)] box-border py-[10rpx] rounded-[8rpx] flex flex-col items-center"
:class="{'sign-bg !text-[#fff]': isVerDate(item),'!bg-[#f9f9f9] border-[1rpx] !text-[var(--text-color-light9)] border-[#f5f5f5] border-solid': !isVerDate(item) && item < state.curDate && (state.curMonth + 1) == (new Date().getMonth() + 1) ,'mb-[20rpx]':isCurrentDate(item),'mb-[30rpx]':!isCurrentDate(item)}"
<view v-if="filteredDate(item)" class="filtered-date-wrap"
:class="{'sign-bg': isVerDate(item),'week-normal': !isVerDate(item) && item < state.curDate && (state.curMonth + 1) == (new Date().getMonth() + 1) ,'mb20':isCurrentDate(item),'mb30':!isCurrentDate(item)}"
@click="getDayPackFn(item)">
<text class="text-[24rpx] leading-[28rpx] mb-[6rpx]">{{ filteredDate(item) }}</text>
<view v-if="filteredDate(item)" class="flex items-center justufy-center">
@ -75,8 +74,8 @@
<template v-for="(item,index) in state.dataCount">
<view class="w-[14.28%] flex flex-col justify-center items-center mb-[30rpx]">
<view v-if="filteredDate(item)"
class="w-[74rpx] h-[92rpx] bg-[#F6FAFF] text-[var(--text-color-light6)] box-border py-[10rpx] rounded-[8rpx] flex flex-col items-center"
:class="{'sign-bg !text-[#fff]': isVerDate(item) && active ,'!bg-[#FDFDFD] border-[1rpx] border-[#F0F4FA] border-solid': !isVerDate(item) && item < state.curDate && (state.curMonth + 1) == (new Date().getMonth() + 1) && state.curYear == new Date().getFullYear() ,'mb-[20rpx]':isCurrentDate(item),'mb-[30rpx]':!isCurrentDate(item)}"
class="filtered-date-wrap"
:class="{'sign-bg': isVerDate(item) && active ,'day-normal': !isVerDate(item) && item < state.curDate && (state.curMonth + 1) == (new Date().getMonth() + 1) && state.curYear == new Date().getFullYear() ,'mb20':isCurrentDate(item),'mb30':!isCurrentDate(item)}"
@click="getDayPackFn(item)">
<text class="text-[24rpx] leading-[28rpx] mb-[6rpx]">{{ filteredDate(item) }}</text>
<view v-if="filteredDate(item)" class="flex items-center justufy-center">
@ -122,7 +121,7 @@
</view> -->
</view>
<view>
<view v-for="(item,index) in info.continue_award" :key="index" class="flex items-center border-box" :class="{'mt-[40rpx]':index}">
<view v-for="(item,index) in info.continue_award" :key="index" class="flex items-center border-box" :class="{'mt40':index}">
<view class="w-[90rpx] h-[90rpx] rounded-[50%] bg-[#E7F6FF] flex items-center justify-center flex-shrink-0" v-if="(index + 1) % 4 == 1">
<image :src="img('static/resource/images/app/icon_02.png')" class="w-[40rpx] h-[40rpx]"/>
</view>
@ -497,6 +496,7 @@ const topStyle = computed(() => {
.sign-bg {
background: linear-gradient(90deg, #FFA359 0%, #FF5426 100%), #F2F2F2;
color: #fff !important;
}
:deep(.award-popup .u-popup__content) {
@ -511,4 +511,38 @@ const topStyle = computed(() => {
background: linear-gradient(180deg, #FFEAE1 0%, #FFCDD0 34%, #E0052C 100%);
border-radius: 40rpx;
}
.is-use {
background-color: #F6F6F6;
}
.mb20{
margin-bottom: 20rpx;
}
.mb30 {
margin-bottom: 30rpx;
}
.mt40 {
margin-top: 40rpx;
}
.filtered-date-wrap {
width: 74rpx;
height: 92rpx;
background-color: #f4f4f4;
color: var(--text-color-light6);
box-sizing: border-box;
padding-top: 10rpx;
padding-bottom: 10rpx;
border-radius: 8rpx;
display: flex;
flex-direction: column;
align-items: center;
&.week-normal{
background-color: #f9f9f9 !important;
border: 1rpx solid #f5f5f5;
color: var(--text-color-light9) !important;
}
&.day-normal{
background-color: #FDFDFD !important;
border: 1rpx solid #F0F4FA;
}
}
</style>

View File

@ -3,7 +3,7 @@
<view class="w-screen h-screen flex flex-col items-center" v-if="payInfo">
<top-tabbar ref="topTabbarRef" :data="topTabbarParam" />
<view class="flex-1 flex flex-col items-center w-full pt-[180rpx]">
<view class="flex items-baseline" :class="{'text-[#06c05d]': payInfo.status==2, 'text-red': payInfo.status!=2}">
<view class="flex items-baseline" :class="{'pay-status-green': payInfo.status==2, 'text-red': payInfo.status!=2}">
<text class="nc-iconfont -mb-[4rpx] !text-[32rpx]" :class="{'nc-icon-duihaoV6mm': payInfo.status==2, 'nc-icon-tanhaoV6mm': payInfo.status!=2}"></text>
<text class="text-[36rpx] ml-[16rpx] font-500">{{ payInfo.status == 2 ? '支付成功' : '支付失败' }}</text>
</view>
@ -80,4 +80,8 @@ const complete = () => {
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.pay-status-green{
color: #06c05d;
}
</style>

View File

@ -3,7 +3,7 @@
<template v-if="!loading">
<view class="pt-[20rpx] sidebar-margin">
<view class="flex flex-col card-template">
<view class="flex" :class="{'mb-[20rpx]': verifyInfo.value.list.length-1 != index}" v-for="(item,index) in verifyInfo.value.list" :key="index">
<view class="flex" :class="{'mb20': verifyInfo.value.list.length-1 != index}" v-for="(item,index) in verifyInfo.value.list" :key="index">
<image class="w-[150rpx] h-[150rpx] rounded-[var(--goods-rounded-big)]" mode="aspectFill" v-if="item.cover" :src="img(item.cover)"/>
<image class="w-[150rpx] h-[150rpx] rounded-[var(--goods-rounded-big)]" mode="aspectFill" v-else :src="img('addon/tourism/tourism/member/hotel.png')"/>
<view class="flex flex-col flex-1 ml-[20rpx] py-[4rpx]">
@ -40,7 +40,7 @@
<view v-for="(item,index) in verifyInfo.value.content.diy" :key="index" class="card-template top-mar">
<view class="title">{{ item.title }}</view>
<view class="card-template-item justify-between" v-for="(subItem,subIndex) in item.list" :key="subIndex" :class="{'mt-30rpx' : subIndex == '0'}">
<view class="card-template-item justify-between" v-for="(subItem,subIndex) in item.list" :key="subIndex" :class="{'mt30' : subIndex == '0'}">
<text class="text-[28rpx] text-[#333]">{{ subItem.title }}</text>
<view class="text-[28rpx] text-[#333]">{{ subItem.value }}</view>
</view>
@ -80,3 +80,11 @@ const getVerifyDetailFn = () => {
})
}
</script>
<style lang="scss" scoped>
.mb20 {
margin-bottom: 20rpx;
.mt30{
margin-top: 30rpx;
}}
</style>

View File

@ -19,7 +19,7 @@
</view>
</view>
<view class="card-template mt-[var(--top-m)] sidebar-margin">
<view class="flex" :class="{'mb-[var(--top-m)]': (verifyInfo.value.list.length - 1 != index)}" v-for="(item,index) in verifyInfo.value.list" :key="index">
<view class="flex" :class="{'mb-var': (verifyInfo.value.list.length - 1 != index)}" v-for="(item,index) in verifyInfo.value.list" :key="index">
<image class="w-[150rpx] h-[150rpx] rounded-[var(--goods-rounded-big)]" mode="aspectFill" v-if="item.cover" :src="img(item.cover)"/>
<image class="w-[150rpx] h-[150rpx] rounded-[var(--goods-rounded-big)]" mode="aspectFill" v-else :src="img('addon/tourism/tourism/member/hotel.png')"/>
<view class="flex flex-col flex-1 ml-[20rpx] py-[4rpx]">
@ -60,7 +60,7 @@
</view>
<view class="common-tab-bar w-[100%]">
<view class="common-tab-bar-placeholder"></view>
<view class="verify-tab-bar fixed flex-center !text-[26rpx] rounded-[50rpx] h-[80rpx] left-[20rpx] right-[20rpx] text-[#fff] font-500" :class="verifyInfo.is_can_use ? 'primary-btn-bg' : 'bg-[#ccc]'" @click="verifyFn">确定</view>
<view class="verify-tab-bar" :class="verifyInfo.is_can_use ? 'primary-btn-bg' : 'bg-ccc'" @click="verifyFn">确定</view>
</view>
</template>
<loading-page :loading="loading"></loading-page>
@ -160,5 +160,22 @@ const verifyFn = () => {
.verify-tab-bar{
bottom: calc(constant(safe-area-inset-bottom) + 30rpx);
bottom: calc(env(safe-area-inset-bottom) + 30rpx);
position: fixed;
display: flex;
align-items: center;
justify-content: center;
font-size: 26rpx !important;
border-radius: 50rpx;
height: 80rpx;
left: 20rpx;
right: 20rpx;
color: #fff;
font-weight: 500;
&.bg-ccc{
background-color: #ccc;
}
}
.mb-var{
margin-bottom: var(--top-m);
}
</style>

View File

@ -3,32 +3,32 @@
<view @touchmove.prevent.stop class="popup-common">
<view class="title">请选择地区</view>
<view class="flex p-[30rpx] pt-[0] text-sm font-500">
<view v-if="areaList.province.length" class="flex-1 pr-[10rpx]" :class="{'text-[var(--primary-color)]': currSelect == 'province'}" @click="currSelect = 'province'">
<view v-if="areaList.province.length" class="area-select-wrap" :class="{'selected': currSelect == 'province'}" @click="currSelect = 'province'">
<view v-if="selected.province">{{ selected.province.name }}</view>
<view v-else>请选择</view>
</view>
<view v-if="areaList.city.length" class="flex-1 pr-[10rpx]" :class="{'text-[var(--primary-color)]': currSelect == 'city' }" @click="currSelect = 'city'">
<view v-if="areaList.city.length" class="area-select-wrap" :class="{'selected': currSelect == 'city' }" @click="currSelect = 'city'">
<view v-if="selected.city">{{ selected.city.name }}</view>
<view v-else>请选择</view>
</view>
<view v-if="areaList.district.length" class="flex-1 pr-[10rpx]" :class="{'text-[var(--primary-color)]': currSelect == 'district' }" @click="currSelect = 'district'">
<view v-if="areaList.district.length" class="area-select-wrap" :class="{'selected': currSelect == 'district' }" @click="currSelect = 'district'">
<view v-if="selected.district">{{ selected.district.name }}</view>
<view v-else>请选择</view>
</view>
<view class="flex-1 pr-[10rpx]" v-else></view>
<view class="area-select-wrap" v-else></view>
</view>
<scroll-view scroll-y="true" class="h-[700rpx] overflow-y-auto" :scroll-top="scrollTop" scroll-with-animation @touchmove.stop>
<view class="flex p-[30rpx] pt-[0] text-sm font-500">
<view v-if="areaList.province.length" class="flex-1 pr-[10rpx]" :style="{ opacity: currSelect == 'province' ? 1 : 0, pointerEvents: currSelect == 'province' ? 'auto' : 'none',height: currSelect == 'province' ? 'auto' : '0',overflow: currSelect == 'province' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.province" :key="item.id" class="h-[80rpx] flex items-center" :class="{'text-[var(--primary-color)]': selected.province && selected.province.id == item.id }" @click="handleProvinceClick(item)">{{ item.name }}</view>
<view v-if="areaList.province.length" class="area-select-wrap" :style="{ opacity: currSelect == 'province' ? 1 : 0, pointerEvents: currSelect == 'province' ? 'auto' : 'none',height: currSelect == 'province' ? 'auto' : '0',overflow: currSelect == 'province' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.province" :key="item.id" class="h-[80rpx] flex items-center" :class="{'selected': selected.province && selected.province.id == item.id }" @click="handleProvinceClick(item)">{{ item.name }}</view>
</view>
<view v-if="areaList.city.length" class="flex-1 pr-[10rpx]" :style="{ opacity: currSelect == 'city' ? 1 : 0, pointerEvents: currSelect == 'city' ? 'auto' : 'none',height: currSelect == 'city' ? 'auto' : '0',overflow: currSelect == 'city' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.city" :key="item.id" class="h-[80rpx] flex items-center" :class="{'text-[var(--primary-color)]': selected.city && selected.city.id == item.id }" @click="handleCityClick(item)">{{ item.name }}</view>
<view v-if="areaList.city.length" class="area-select-wrap" :style="{ opacity: currSelect == 'city' ? 1 : 0, pointerEvents: currSelect == 'city' ? 'auto' : 'none',height: currSelect == 'city' ? 'auto' : '0',overflow: currSelect == 'city' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.city" :key="item.id" class="h-[80rpx] flex items-center" :class="{'selected': selected.city && selected.city.id == item.id }" @click="handleCityClick(item)">{{ item.name }}</view>
</view>
<view v-if="areaList.district.length" class="flex-1 pr-[10rpx]" :style="{ opacity: currSelect == 'district' ? 1 : 0, pointerEvents: currSelect == 'district' ? 'auto' : 'none',height: currSelect == 'district' ? 'auto' : '0',overflow: currSelect == 'district' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.district" :key="item.id" class="h-[80rpx] flex items-center " :class="{'text-[var(--primary-color)]': selected.district && selected.district.id == item.id }" @click="selected.district = item">{{ item.name }}</view>
<view v-if="areaList.district.length" class="area-select-wrap" :style="{ opacity: currSelect == 'district' ? 1 : 0, pointerEvents: currSelect == 'district' ? 'auto' : 'none',height: currSelect == 'district' ? 'auto' : '0',overflow: currSelect == 'district' ? 'auto' : 'hidden' }">
<view v-for="(item, index) in areaList.district" :key="item.id" class="h-[80rpx] flex items-center " :class="{'selected': selected.district && selected.district.id == item.id }" @click="selected.district = item">{{ item.name }}</view>
</view>
<view class="flex-1 pr-[10rpx]" v-else></view>
<view class="area-select-wrap" v-else></view>
</view>
</scroll-view>
</view>
@ -230,4 +230,13 @@ defineExpose({
})
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.area-select-wrap {
flex: 1;
padding-right: 10rpx;
&.selected {
color: var(--primary-color);
}
}
</style>

View File

@ -34,7 +34,7 @@
</view>
</view>
<view class="mt-[100rpx]">
<button class="primary-btn-bg text-[26rpx] !text-[#fff] !h-[80rpx] leading-[80rpx] rounded-full font-500" :class="{'opacity-50': loading}" :disabled="loading" @click="handleBind">{{ t('bind') }}</button>
<button class="primary-btn-bg bind-btn" :class="{'opacity50': loading}" :disabled="loading" @click="handleBind">{{ t('bind') }}</button>
</view>
</u-form>
</view>
@ -169,4 +169,16 @@ defineExpose({
:deep(.u-checkbox) {
margin: 0 !important;
}
.bind-btn {
font-size: 26rpx;
color: #fff !important;
height: 80rpx !important;
line-height: 80rpx;
border-radius: 999rpx;
font-weight: 500;
&.opacity50 {
opacity: 0.5;
}
}
</style>

View File

@ -5,18 +5,18 @@
<view class="absolute top-[36rpx] right-[36rpx] text-[24rpx] text-[var(--text-color-light6)] leading-[30rpx] z-10" @click="clearDate">清除</view>
<view class="px-[var(--popup-sidebar-m)] mb-[20rpx] mt-[10rpx]">
<view class="flex items-center justify-between mb-[30rpx]">
<view class="w-[160rpx] h-[66rpx] box-border flex-center rounded-[33rpx] bg-[var(--temp-bg)] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[var(--temp-bg)]"
<view class="cur-select-date-wrap"
v-for="(item,index) in curselectDate" :key="'a'+index"
:class="{'text-primary !border-[var(--primary-color)] !bg-[var(--primary-color-light)]': currentValue.type == item.type}"
:class="{'text-primary current': currentValue.type == item.type}"
@click="loadDateFn(item)">{{ item.name }}</view>
</view>
<view class="flex items-center justify-between">
<view class="w-[316rpx] h-[66rpx] box-border leading-[62rpx] rounded-[33rpx] bg-[var(--temp-bg)] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[var(--temp-bg)]"
:class="{'text-primary !border-[var(--primary-color)] !bg-[var(--primary-color-light)]': currentValue.type == 'first'}"
<view class="now-date-wrap"
:class="{'text-primary current': currentValue.type == 'first'}"
@click="currentValue.type = 'first'">{{ dateList.nowDate[0].substr(0, 10) }}</view>
<view class="nc-iconfont nc-icon-jianV6xx"></view>
<view class="w-[316rpx] h-[66rpx] box-border leading-[62rpx] rounded-[33rpx] bg-[var(--temp-bg)] text-center text-[26rpx] text-[var(--text-color-light6)] border-[2rpx] border-solid border-[var(--temp-bg)]"
:class="{'text-primary !border-[var(--primary-color)] !bg-[var(--primary-color-light)]': currentValue.type == 'second'}"
<view class="now-date-wrap"
:class="{'text-primary current': currentValue.type == 'second'}"
@click="currentValue.type = 'second'">{{ dateList.nowDate[1].substr(0, 10) }}</view>
</view>
</view>
@ -234,4 +234,41 @@ defineExpose({
z-index: 12;
}
}
.popup-common {
.cur-select-date-wrap{
width: 160rpx;
height: 66rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
border-radius: 33rpx;
background-color: var(--temp-bg);
text-align: center;
font-size: 26rpx;
color: var(--text-color-light6);
border-width: 2rpx;
border-style: solid;
border-color: var(--temp-bg);
}
.current{
color: var(--primary-color);
border-color: var(--primary-color) !important;
background-color: var(--primary-color-light) !important;
}
.now-date-wrap{
width: 316rpx;
height: 66rpx;
box-sizing: border-box;
line-height: 62rpx;
border-radius: 33rpx;
background-color: var(--temp-bg);
text-align: center;
font-size: 26rpx;
color: var(--text-color-light6);
border-width: 2rpx;
border-style: solid;
border-color: var(--temp-bg);
}
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<view class="text-[26rpx]" :class="{'text-primary': sendSms.canGetCode.value, 'text-gray-300': !sendSms.canGetCode.value}" @click="handleSend">{{ sendSms.tips.value }}</view>
<view class="fs-26" :class="{'text-primary': sendSms.canGetCode.value, 'text-gray-300': !sendSms.canGetCode.value}" @click="handleSend">{{ sendSms.tips.value }}</view>
<u-code :seconds="sendSms.seconds" :change-text="sendSms.changeText" ref="smsRef" @change="sendSms.codeChange"></u-code>
<u-modal :show="show" :title="t('captchaTitle')" :confirm-text="t('confirm')" :cancel-text="t('cancel')" :show-cancel-button="true" @cancel="show = false" @confirm="handleConfirm" confirmColor="var(--primary-color)">
<view class="flex mt-[20rpx]">
@ -88,5 +88,8 @@ const handleConfirm = async() => {
}
</script>
<style>
<style lang="scss" scoped>
.fs-26{
font-size: 26rpx;
}
</style>

View File

@ -3,11 +3,11 @@
<view class="u-navbar z-100" :class="{'fixed': props.scrollBool != -1, 'absolute': props.scrollBool == -1}" :style="{ backgroundColor: bgColor}">
<view class="navbar-inner" :style="{ width: '100%', height: placeholderHeight + 'px' }">
<view v-if="topStatusBarData.style == 'style-1'" class="content-wrap" :class="[topStatusBarData.textAlign]" :style="navbarInnerStyle">
<view v-if="isBackShow" class="back-wrap -ml-[16rpx] text-[26px] nc-iconfont nc-icon-zuoV6xx" :class="{'!text-transparent': !isBackShow}" :style="{ color: titleTextColor }" @tap="goBack"></view>
<view v-if="isBackShow" class="back-wrap nc-iconfont nc-icon-zuoV6xx" :class="{'!text-transparent': !isBackShow}" :style="{ color: titleTextColor }" @tap="goBack"></view>
<view class="title-wrap" :style="styleOneFontSize">{{ data.title }}</view>
</view>
<view v-if="topStatusBarData.style == 'style-2'" class="content-wrap" :style="navbarInnerStyle" @click="diyStore.toRedirect(topStatusBarData.link)">
<view class="back-wrap -ml-[16rpx] text-[26px] nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" :class="{'!text-transparent': !isBackShow}" @tap="goBack"></view>
<view class="back-wrap nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" :class="{'!text-transparent': !isBackShow}" @tap="goBack"></view>
<view class="title-wrap" :style="{ color: topStatusBarData.textColor }">
<view>
<image :src="img(topStatusBarData.imgUrl)" mode="heightFix"/>
@ -17,7 +17,7 @@
</view>
<view v-if="topStatusBarData.style == 'style-3'" :style="navbarInnerStyle" class="content-wrap">
<view v-if="isBackShow" class="back-wrap -ml-[16rpx] text-[26px] nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" @tap="goBack" :class="{'!text-transparent': !isBackShow}"></view>
<view v-if="isBackShow" class="back-wrap nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" @tap="goBack" :class="{'!text-transparent': !isBackShow}"></view>
<view class="title-wrap" @click="diyStore.toRedirect(topStatusBarData.link)">
<image :src="img(topStatusBarData.imgUrl)" mode="heightFix"/>
</view>
@ -29,7 +29,7 @@
</view>
<view v-if="topStatusBarData.style == 'style-4'" :style="navbarInnerStyle" class="content-wrap">
<view class="back-wrap -ml-[16rpx] text-[26px] nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" @tap="goBack" :class="{'!text-transparent': !isBackShow}"></view>
<view class="back-wrap nc-iconfont nc-icon-zuoV6xx" :style="{ color: titleTextColor }" @tap="goBack" :class="{'!text-transparent': !isBackShow}"></view>
<text class="nc-iconfont nc-icon-dizhiguanliV6xx text-[28rpx]" :style="{ color: topStatusBarData.textColor }"></text>
<view class="title-wrap" @click.stop="locationVal.reposition()" :style="{ color: topStatusBarData.textColor }" v-if="systemStore.diyAddressInfo">{{ systemStore.diyAddressInfo.community }}</view>
<view class="title-wrap" @click.stop="locationVal.reposition()" :style="{ color: topStatusBarData.textColor }" v-else>{{ systemStore.defaultPositionAddress }}</view>
@ -312,6 +312,8 @@ defineExpose({
.back-wrap {
padding-right: 10rpx;
line-height: 1;
margin-left: -16rpx;
font-size: 26rpx;
.iconfont {
font-size: 40rpx;

View File

@ -25,7 +25,7 @@
<!-- 下载进度条 -->
<view class="mt-[30rpx] mx-[10rpx]" v-if="downloading">
<view class="w-full h-[10rpx] bg-[#E0E0E0] rounded-full overflow-hidden">
<view class="h-full bg-[#F11C0C] rounded-full" :style="{ width: downloadProgress + '%' }" :class="downloading ? 'downloading-animation' : ''"></view>
<view class="download-progress" :style="{ width: downloadProgress + '%' }" :class="downloading ? 'downloading-animation' : ''"></view>
</view>
</view>
</view>
@ -284,4 +284,9 @@ defineExpose({
white-space: pre-line;
line-height: 1.6;
}
.download-progress {
height: 100%;
background-color: #F11C0C;
border-radius: 999rpx;
}
</style>

View File

@ -1,7 +1,6 @@
import { onLoad } from '@dcloudio/uni-app';
import { isWeixinBrowser } from '@/utils/common';
import { isWeixinBrowser,openMapSelector } from '@/utils/common';
import { getAddressByLatlng } from '@/app/api/system';
import manifestJson from '@/manifest.json';
import wechat from '@/utils/wechat'
import useSystemStore from '@/stores/system';
@ -177,7 +176,11 @@ export function useLocation(isOpenLocation: any) {
// #ifdef H5
uni.setStorageSync('manually_select_location_from_map', true)
let backurl = location.origin + location.pathname;
window.location.href = 'https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=' + encodeURIComponent(backurl) + '&key=' + manifestJson.h5.sdkConfigs.maps.qqmap.key + '&referer=myapp';
let params = ''
if (latitude && longitude) {
params = `latng=${ latitude },${ longitude }`
}
openMapSelector(backurl, params);
// #endif
}

View File

@ -42,187 +42,5 @@
"pages.verify.record": "核销记录",
"pages.friendspay.share": "找朋友帮忙付",
"pages.friendspay.money": "",
"pages.webview.index": "",
"tourism.pages.way.list": "线路列表",
"tourism.pages.way.detail": "线路详情",
"tourism.pages.way.order": "线路订单",
"tourism.pages.hotel.list": "酒店列表",
"tourism.pages.hotel.detail": "酒店详情",
"tourism.pages.hotel.order": "酒店订单",
"tourism.pages.scenic.list": "景点列表",
"tourism.pages.scenic.detail": "景点详情",
"tourism.pages.scenic.order": "景点订单",
"tourism.pages.order.list": "旅游订单",
"tourism.pages.order.detail": "订单详情",
"tourism.pages.verify.index": "核销",
"tourism.pages.verify.record": "核销记录",
"tourism.pages.verify.detail": "核销详情",
"vipcard.pages.verify.index": "核销",
"vipcard.pages.verify.record": "核销记录",
"vipcard.pages.verify.detail": "核销详情",
"vipcard.pages.order.payment": "订单结算",
"vipcard.pages.order.list": "订单列表",
"vipcard.pages.order.my_reserved": "我的预约",
"vipcard.pages.order.my_reserved_detail": "我的预约详情",
"vipcard.pages.order.my_card": "我的卡项",
"vipcard.pages.order.detail": "订单详情",
"vipcard.pages.service.list": "项目列表",
"vipcard.pages.card.list": "卡项列表",
"vipcard.pages.card.detail": "卡项详情",
"recharge.pages.recharge": "充值",
"recharge.pages.recharge_record": "充值记录",
"recharge.pages.recharge_record_detail": "充值记录详情",
"shop.pages.goods.search": "搜索",
"shop.pages.goods.cart": "购物车",
"shop.pages.goods.collect": "商品收藏",
"shop.pages.goods.browse": "我的足迹",
"shop.pages.goods.category": "商品分类",
"shop.pages.goods.detail": "商品详情",
"shop.pages.goods.list": "商品列表",
"shop.pages.goods.rank": "排行榜",
"shop.pages.member.index": "个人中心",
"shop.pages.member.my_coupon": "我的优惠券",
"shop.pages.order.list": "订单列表",
"shop.pages.order.detail": "订单详情",
"shop.pages.order.payment": "待付款订单",
"shop.pages.evaluate.order_evaluate": "商品评价",
"shop.pages.evaluate.order_evaluate_view": "商品评价",
"shop.pages.evaluate.list": "评价列表",
"shop.pages.coupon.list": "优惠券列表",
"shop.pages.coupon.detail": "优惠券详情",
"shop.pages.discount.list": "限时折扣",
"shop.pages.refund.list": "退款列表",
"shop.pages.refund.detail": "退款详情",
"shop.pages.refund.apply": "申请退款",
"shop.pages.refund.edit_apply": "编辑退款信息",
"shop.pages.refund.log": "协商记录",
"shop.pages.point.index": "积分商城",
"shop.pages.point.list": "积分商品列表",
"shop.pages.point.detail": "积分商品详情",
"shop.pages.point.payment": "待付款订单",
"shop.pages.point.order_list": "积分兑换记录",
"shop.pages.newcomer.list": "新人专享",
"shop.pages.invoice.list": "发票管理",
"shop.pages.invoice.detail": "发票详情",
"shop.pages.invoice.invoice": "申请发票",
"shop.pages.invoice.invoice_edit": "编辑发票信息",
"shop.pages.invoice.invoice_order": "发票订单",
"cms.pages.list": "资讯中心",
"cms.pages.detail": "文章详情",
"shop_fenxiao.pages.index": "分销中心",
"shop_fenxiao.pages.zone": "分销专区",
"shop_fenxiao.pages.level": "分销商等级",
"shop_fenxiao.pages.child_fenxiao": "分销商",
"shop_fenxiao.pages.goods": "分销商品",
"shop_fenxiao.pages.team": "我的团队",
"shop_fenxiao.pages.ranking_list": "排行榜",
"shop_fenxiao.pages.agent_list": "渠道代理",
"shop_fenxiao.pages.bill": "账单",
"shop_fenxiao.pages.order": "分销订单",
"shop_fenxiao.pages.order_detail": "订单详情",
"shop_fenxiao.pages.apply": "分销商申请",
"shop_fenxiao.pages.task_rewards": "任务奖励",
"shop_fenxiao.pages.task_detail": "任务奖励详情",
"shop_fenxiao.pages.task_rewards_detail": "任务奖励明细",
"shop_fenxiao.pages.sale": "销售奖励",
"shop_fenxiao.pages.sale_detail": "销售奖励详情",
"shop_fenxiao.pages.sale_ranking": "销售奖励排行榜",
"shop_fenxiao.pages.promote_code": "分享海报",
"shop_giftcard.pages.index": "礼品卡首页",
"shop_giftcard.pages.list": "礼品卡列表",
"shop_giftcard.pages.detail": "加载中",
"shop_giftcard.pages.order_list": "礼品卡订单列表",
"shop_giftcard.pages.order_detail": "礼品卡订单详情",
"shop_giftcard.pages.member": "我的",
"shop_giftcard.pages.my_card_list": "我的卡包",
"shop_giftcard.pages.card_bag": "我的卡包",
"shop_giftcard.pages.activate": "卡密激活",
"shop_giftcard.pages.receive_list": "收到的礼品卡",
"shop_giftcard.pages.give_list": "送出的礼品卡",
"shop_giftcard.pages.give_detail": "送出礼品卡详情",
"shop_giftcard.pages.give": "礼品卡赠送",
"shop_giftcard.pages.receive_info": "领取礼品卡",
"shop_giftcard.pages.use_card": "礼品卡使用",
"shop_giftcard.pages.use_goods_select": "选择兑换商品",
"shop_giftcard.pages.payment": "待付款订单",
"shop.pages.pay.index": "待支付",
"shop.pages.pay.result": "",
"shop_fenxiao.pages.promote": "邀请好友",
"shop_fenxiao.pages.team_dividend": "团队分红",
"o2o.pages.address.edit": "编辑地址",
"o2o.pages.address.index": "地址",
"o2o.pages.goods.category": "项目分类",
"o2o.pages.goods.detail": "项目详情",
"o2o.pages.goods.list": "项目列表",
"o2o.pages.index": "首页",
"o2o.pages.master.statistics.index": "技师中心",
"o2o.pages.master.task.add": "师傅报单",
"o2o.pages.master.task.detail": "任务详情",
"o2o.pages.master.task.list": "任务列表",
"o2o.pages.master.task.refund": "查看退款",
"o2o.pages.master.task.show": "报单详情",
"o2o.pages.member.index": "个人中心",
"o2o.pages.order.detail": "订单详情",
"o2o.pages.order.list": "订单列表",
"o2o.pages.order.payment": "订单结算",
"o2o.pages.refund.apply": "申请退款",
"o2o.pages.refund.detail": "退款详情",
"o2o.pages.refund.list": "退款列表",
"o2o.pages.refund.log": "协商记录",
"o2o.pages.technician.detail": "技师详情",
"o2o.pages.technician.list": "技师列表",
"shop_giftcard.pages.member_give_info": "送出礼品卡详情",
"shop_giftcard.pages.give_info": "领取礼品卡",
"sow_community.pages.index": "种草社区",
"sow_community.pages.search": "搜索",
"sow_community.pages.image.detail": "内容详情",
"sow_community.pages.video.detail": "内容详情",
"sow_community.pages.member": "个人主页",
"sow_community.pages.create": "发布内容",
"sow_community.pages.follow": "关注列表",
"sow_community.pages.sow_show": "种草秀",
"sow_community.pages.topic_list": "话题列表",
"template_flower_industry.pages.goods.list": "商品列表",
"seckill.pages.goods.detail": "商品详情",
"seckill.pages.goods.list": "商品列表",
"seckill.pages.member.index": "个人中心",
"seckill.pages.order.list": "订单列表",
"seckill.pages.order.detail": "订单详情",
"seckill.pages.order.payment": "待付款订单",
"seckill.pages.refund.list": "退款列表",
"seckill.pages.refund.detail": "退款详情",
"seckill.pages.refund.apply": "申请退款",
"seckill.pages.refund.edit_apply": "编辑退款信息",
"seckill.pages.refund.log": "协商记录",
"pintuan.pages.index": "拼团首页",
"pintuan.pages.goods.list": "商品列表",
"pintuan.pages.goods.detail": "商品详情",
"pintuan.pages.my_spell": "我的拼团",
"pintuan.pages.member.index": "个人中心",
"pintuan.pages.share": "拼团分享页面",
"pintuan.pages.order.payment": "拼团待付款订单",
"pintuan.pages.order.list": "拼团订单列表",
"pintuan.pages.order.detail": "拼团订单详情",
"pintuan.pages.refund.apply": "申请退款",
"pintuan.pages.refund.detail": "退款详情",
"pintuan.pages.refund.edit_apply": "编辑退款信息",
"pintuan.pages.refund.list": "退款列表",
"pintuan.pages.refund.log": "退款协商记录",
"pintuan.pages.order.card_record": "核销记录",
"friend_help.pages.index": "好友助力首页",
"friend_help.pages.goods.list": "商品列表",
"friend_help.pages.goods.detail": "商品详情",
"friend_help.pages.member.index": "个人中心",
"friend_help.pages.order.payment": "好友助力待付款订单",
"friend_help.pages.order.list": "好友助力订单列表",
"friend_help.pages.order.detail": "好友助力订单详情",
"friend_help.pages.refund.apply": "申请退款",
"friend_help.pages.refund.detail": "退款详情",
"friend_help.pages.refund.edit_apply": "编辑退款信息",
"friend_help.pages.refund.list": "退款列表",
"friend_help.pages.refund.log": "退款协商记录",
"friend_help.pages.order.card_record": "核销记录",
"friend_help.pages.my_help": "我的助力列表",
"friend_help.pages.goods.share": "好友助力",
"friend_help.pages.goods.bargain": "好友砍价"
"pages.webview.index": ""
}

View File

@ -1,162 +1,163 @@
{
"requestFail": "请求失败",
"notInDomainList": "不在request 合法域名列表中",
"baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置",
"currency": "¥",
"getSmsCode": "获取验证码",
"smsCodeChangeText": "秒后重新获取",
"captchaTitle": "请完成验证",
"confirm": "确认",
"cancel": "取消",
"save": "保存",
"delete": "删除",
"captchaPlaceholder": "请输入验证码",
"mobilePlaceholder": "请输入手机号码",
"mobileError": "请输入正确的手机号",
"codePlaceholder": "请输入手机验证码",
"memberCenter": "个人中心",
"userAgreement": "用户协议",
"and": "和",
"privacyAgreement": "隐私协议",
"isAgreeTips": "请先阅读并同意协议",
"nickname": "昵称",
"nicknamePlaceholder": "请输入昵称",
"headimg": "头像",
"headimgPlaceholder": "请设置头像",
"getAvatarNickname": "获取您的昵称头像",
"getAvatarNicknameTips": "获取用户头像、昵称完善个人资料,主要用于向用户提供具有辨识度的用户中心界面",
"mobile": "手机号",
"getMobile": "获取手机号",
"mobileTips": "请获取手机号",
"point": "积分",
"balance": "余额",
"login": "登录",
"bind": "绑定",
"binding": "绑定中",
"bindMobile": "绑定手机号",
"agreeTips": "我已阅读并同意",
"pleaseAgree": "请勾选已阅读并同意",
"weixinUserAuth": "一键绑定",
"mobileQuickLogin": "手机号快捷登录",
"register": "注册",
"complete": "完成",
"close": "关闭",
"diyForm": {
"back": "返回",
"hidden": "已隐藏",
"view": "查看",
"know": "我知道了",
"prompt": "提示",
"call": "拨打",
"copy": "复制号码",
"uploadTips": "请上传图片",
"tips": "仅限本人和管理员能查看完整号码:",
"viewFillingDetails": "查看填写详情",
"detailInformation": "详细信息"
},
"pay": {
"orderInfo": "订单信息",
"confirmPay": "确认支付",
"payTitle": "确认付款",
"notHavePayType": "没有可用的支付方式",
"notObtainedInfo": "未获取到支付信息",
"paymentDocuments": "该支付单据",
"paySuccess": "支付成功",
"payFail": "支付失败",
"completePay": "已完成支付",
"incompletePay": "未完成支付",
"getting": "获取支付结果中"
},
"myBalance": "我的余额",
"myPoint": "我的积分",
"customerService": "联系客服",
"siteClose": "站点已关闭",
"noSite": "站点不存在",
"scenic": "景点",
"seeMore": "查看更多",
"way": "线路",
"hotel": "酒店",
"rise": "起",
"cardReserve": "项目预约",
"card": "办理次卡",
"memberName": "会员名称",
"memberCode": "会员码",
"reserve": "预约",
"reserveSuccess": "预约成功",
"cardLink": "次卡",
"myLink": "我的",
"reserveBtn": "去抢购",
"cardBtn": "办理",
"soldOut": "已售",
"unpaidOrder": "待支付",
"waitingOrder": "待使用",
"remainOrder": "已完成",
"allOrder": "全部订单",
"myOrder": "我的订单",
"orderNo": "订单号",
"actualPayment": "实付款",
"orderClose": "关闭订单",
"orderFinish": "确认收货",
"orderDetail": "详情",
"wxPrivacyPopup": {
"title": "用户隐私保护提示",
"descBefore": "感谢您使用本小程序,在使用前您应当阅读并同意",
"descAfter": "当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。",
"disagree": "不同意",
"agree": "同意并继续",
"contractName": "用户隐私保护指引",
"disagreeDesc": "未同意隐私协议,无法使用相关功能"
},
"starLevel": "星级",
"star": "星",
"emptyAddress": "暂无收货地址,请先创建地址",
"addAddress": "新增收货地址",
"selectAddress": "选择地址",
"coupon": "优惠劵",
"tourism.orderNo": "订单号",
"tourism.rise": "起",
"tourism.starLevel": "星级",
"tourism.star": "星",
"vipcard.cardReserve": "项目预约",
"vipcard.card": "办理次卡",
"vipcard.reserveSuccess": "预约成功",
"vipcard.reserve": "预约",
"vipcard.cardLink": "次卡",
"vipcard.reserveBtn": "去抢购",
"vipcard.cardBtn": "办理",
"vipcard.soldOut": "已售",
"vipcard.orderNo": "订单号",
"vipcard.myLink": "我的",
"vipcard.memberCode": "会员码",
"recharge.orderNo": "订单号",
"shop.orderNo": "订单号",
"shop.actualPayment": "实付款",
"shop.orderClose": "关闭订单",
"shop.orderFinish": "确认收货",
"shop.coupon": "优惠劵",
"o2o.way": "线路",
"o2o.hotel": "酒店",
"o2o.scenic": "景点",
"o2o.reserveBtn": "去抢购",
"o2o.noHomeAddress": "没有更多内容啦~",
"o2o.soldOut": "已售",
"o2o.orderNo": "订单号",
"o2o.actualPayment": "实付款",
"o2o.orderDetail": "详情",
"notHave": "无",
"tourism.scenic": "景点",
"tourism.way": "线路",
"tourism.hotel": "酒店",
"tourism.seeMore": "查看更多",
"vipcard.seeMore": "查看更多",
"shop.emptyAddress": "暂无收货地址,请先创建地址",
"shop.addAddress": "新增收货地址",
"shop.selectAddress": "选择地址",
"shop_fenxiao.orderNo": "订单号",
"shop_giftcard.actualPayment": "实付款",
"shop_giftcard.orderClose": "关闭订单",
"shop_giftcard.orderNo": "订单号",
"notHave": "无",
"onceCard": "次卡",
"cardUnit": "张"
"requestFail": "请求失败",
"notInDomainList": "不在request 合法域名列表中",
"baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置",
"currency": "¥",
"getSmsCode": "获取验证码",
"smsCodeChangeText": "秒后重新获取",
"captchaTitle": "请完成验证",
"confirm": "确认",
"cancel": "取消",
"save": "保存",
"delete": "删除",
"captchaPlaceholder": "请输入验证码",
"mobilePlaceholder": "请输入手机号码",
"mobileError": "请输入正确的手机号",
"codePlaceholder": "请输入手机验证码",
"memberCenter": "个人中心",
"userAgreement": "用户协议",
"and": "和",
"privacyAgreement": "隐私协议",
"isAgreeTips": "请先阅读并同意协议",
"nickname": "昵称",
"nicknamePlaceholder": "请输入昵称",
"headimg": "头像",
"headimgPlaceholder": "请设置头像",
"getAvatarNickname": "获取您的昵称头像",
"getAvatarNicknameTips": "获取用户头像、昵称完善个人资料,主要用于向用户提供具有辨识度的用户中心界面",
"mobile": "手机号",
"getMobile": "获取手机号",
"mobileTips": "请获取手机号",
"point": "积分",
"balance": "余额",
"login": "登录",
"bind": "绑定",
"binding": "绑定中",
"bindMobile": "绑定手机号",
"agreeTips": "我已阅读并同意",
"pleaseAgree": "请勾选已阅读并同意",
"weixinUserAuth": "一键绑定",
"mobileQuickLogin": "手机号快捷登录",
"register": "注册",
"complete": "完成",
"close": "关闭",
"diyForm": {
"back": "返回",
"hidden": "已隐藏",
"view": "查看",
"know": "我知道了",
"prompt": "提示",
"call": "拨打",
"copy": "复制号码",
"uploadTips": "请上传图片",
"tips": "仅限本人和管理员能查看完整号码:",
"viewFillingDetails": "查看填写详情",
"detailInformation": "详细信息"
},
"pay": {
"orderInfo": "订单信息",
"confirmPay": "确认支付",
"payTitle": "确认付款",
"notHavePayType": "没有可用的支付方式",
"notObtainedInfo": "未获取到支付信息",
"paymentDocuments": "该支付单据",
"paySuccess": "支付成功",
"payFail": "支付失败",
"completePay": "已完成支付",
"incompletePay": "未完成支付",
"getting": "获取支付结果中"
},
"myBalance": "我的余额",
"myPoint": "我的积分",
"customerService": "联系客服",
"siteClose": "站点已关闭",
"noSite": "站点不存在",
"scenic": "景点",
"seeMore": "查看更多",
"way": "线路",
"hotel": "酒店",
"rise": "起",
"cardReserve": "项目预约",
"card": "办理次卡",
"memberName": "会员名称",
"memberCode": "会员码",
"reserve": "预约",
"reserveSuccess": "预约成功",
"cardLink": "次卡",
"myLink": "我的",
"reserveBtn": "去抢购",
"cardBtn": "办理",
"soldOut": "已售",
"unpaidOrder": "待支付",
"waitingOrder": "待使用",
"remainOrder": "已完成",
"allOrder": "全部订单",
"myOrder": "我的订单",
"orderNo": "订单号",
"actualPayment": "实付款",
"orderClose": "关闭订单",
"orderDelete": "删除订单",
"orderFinish": "确认收货",
"orderDetail": "详情",
"wxPrivacyPopup": {
"title": "用户隐私保护提示",
"descBefore": "感谢您使用本小程序,在使用前您应当阅读并同意",
"descAfter": "当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。",
"disagree": "不同意",
"agree": "同意并继续",
"contractName": "用户隐私保护指引",
"disagreeDesc": "未同意隐私协议,无法使用相关功能"
},
"starLevel": "星级",
"star": "星",
"emptyAddress": "暂无收货地址,请先创建地址",
"addAddress": "新增收货地址",
"selectAddress": "选择地址",
"coupon": "优惠劵",
"tourism.orderNo": "订单号",
"tourism.rise": "起",
"tourism.starLevel": "星级",
"tourism.star": "星",
"vipcard.cardReserve": "项目预约",
"vipcard.card": "办理次卡",
"vipcard.reserveSuccess": "预约成功",
"vipcard.reserve": "预约",
"vipcard.cardLink": "次卡",
"vipcard.reserveBtn": "去抢购",
"vipcard.cardBtn": "办理",
"vipcard.soldOut": "已售",
"vipcard.orderNo": "订单号",
"vipcard.myLink": "我的",
"vipcard.memberCode": "会员码",
"recharge.orderNo": "订单号",
"shop.orderNo": "订单号",
"shop.actualPayment": "实付款",
"shop.orderClose": "关闭订单",
"shop.orderFinish": "确认收货",
"shop.coupon": "优惠劵",
"o2o.way": "线路",
"o2o.hotel": "酒店",
"o2o.scenic": "景点",
"o2o.reserveBtn": "去抢购",
"o2o.noHomeAddress": "没有更多内容啦~",
"o2o.soldOut": "已售",
"o2o.orderNo": "订单号",
"o2o.actualPayment": "实付款",
"o2o.orderDetail": "详情",
"notHave": "无",
"tourism.scenic": "景点",
"tourism.way": "线路",
"tourism.hotel": "酒店",
"tourism.seeMore": "查看更多",
"vipcard.seeMore": "查看更多",
"shop.emptyAddress": "暂无收货地址,请先创建地址",
"shop.addAddress": "新增收货地址",
"shop.selectAddress": "选择地址",
"shop_fenxiao.orderNo": "订单号",
"shop_giftcard.actualPayment": "实付款",
"shop_giftcard.orderClose": "关闭订单",
"shop_giftcard.orderNo": "订单号",
"notHave": "无",
"onceCard": "次卡",
"cardUnit": "张"
}

View File

@ -6,6 +6,9 @@
"versionCode": "100",
"transformPx": false,
"app-plus": {
"compatible" : {
"ignoreVersion" : true
},
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
@ -15,7 +18,16 @@
"autoclose": true,
"delay": 0
},
"modules": {},
"modules" : {
"Camera" : {},
"Barcode" : {},
"Contacts" : {},
"Geolocation" : {},
"Payment" : {},
"VideoPlayer" : {},
"Maps" : {},
"Share" : {}
},
"distribute": {
"android": {
"permissions": [
@ -36,8 +48,16 @@
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
"ios": {},
"sdkConfigs": {}
"ios" : {
"dSYMs" : false
},
"sdkConfigs" : {
"maps" : {
"tencent" : {
"key" : "6ZDBZ-CLSLX-66747-7MVM4-HLK47-XMBXU"
}
}
}
}
},
"quickapp": {},

View File

@ -46,6 +46,9 @@ const useSystemStore = defineStore('system', {
siteAddons: [],
currRoute: '',
mapConfig: {
map_type: 'tencent',
key:'', // 腾讯地图key
tianditu_map_web_key: '', // 天地图key
is_open: 1,
valid_time: 0
},
@ -105,6 +108,9 @@ const useSystemStore = defineStore('system', {
// 地图配置
this.mapConfig.is_open = data.map_config.is_open;
this.mapConfig.valid_time = data.map_config.valid_time;
this.mapConfig.map_type = data.map_config.map_type;
this.mapConfig.key = data.map_config.key
this.mapConfig.tianditu_map_web_key = data.map_config.tianditu_map_web_key;
uni.setStorageSync('mapConfig', this.mapConfig);
// 主题色

View File

@ -2,10 +2,9 @@ import { getTabbarPages } from './pages'
import useDiyStore from '@/app/stores/diy'
import useMemberStore from '@/stores/member'
import useSystemStore from '@/stores/system'
import wechat from '@/utils/wechat'
import useConfigStore from '@/stores/config'
import { getNeedLoginPages } from '@/utils/pages'
import { useLocation } from '@/hooks/useLocation'
import manifestJson from "@/manifest.json";
/**
*
@ -673,10 +672,12 @@ export function pxToRpx(px: any) {
// 返回上一页
export function goback(data: any) {
let { url, mode, param, title } = data
uni.showToast({
title: title,
icon: 'none'
});
if (title) {
uni.showToast({
title: title,
icon: 'none'
});
}
setTimeout(() => {
if (getCurrentPages().length > 1) {
uni.navigateBack({
@ -689,7 +690,7 @@ export function goback(data: any) {
mode: mode || 'redirectTo'
});
}
}, 600);
}, title ? 600 : 0);
}
@ -818,4 +819,33 @@ export function distance(distance: string | number): string {
const dist = typeof distance === 'string' ? parseFloat(distance) : distance;
if (isNaN(dist)) return distance.toString();
return dist < 1 ? parseInt((dist * 1000).toString()) + 'm' : dist.toFixed(1) + 'km'
}
/**
*
* @param backurl URL
* @param params
*/
export function openMapSelector(backurl: string, params = '') {
const configStore = useSystemStore();
const mapType = configStore.mapConfig?.map_type || 'tencent';
if (mapType === 'tencent') {
const url = `https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=${ encodeURIComponent(backurl) }&key=${ manifestJson.h5.sdkConfigs.maps.qqmap.key }&referer=myapp`;
window.location.href = url;
} else if (mapType === 'tianditu') {
// 打开天地图选择器
const tiandituKey = configStore.mapConfig?.tianditu_map_web_key || '';
if (!tiandituKey) {
uni.showToast({
title: '天地图密钥未配置',
icon: 'none'
});
return;
}
// 天地图的位置选择器URL
// 注意天地图的位置选择器API可能与腾讯地图不同需要根据实际API文档调整
const baseUrl = (import.meta.env.VITE_APP_BASE_URL || `${ location.origin }`).replace(/\/api\/$/, '')
const url = baseUrl + `/tianmap?search=1&type=0&backurl=${ encodeURIComponent(backurl) }&key=${ tiandituKey }` + (params ? '&' + params : '')
window.location.href = url;
}
}