Compare commits

...

2 Commits

Author SHA1 Message Date
eccd39959c 增加订单时间 已发版 2026-04-08 14:38:04 +08:00
b7db466328 顺丰H5提交页面 2026-04-03 17:31:02 +08:00
12 changed files with 238 additions and 83 deletions

View File

@ -86,7 +86,12 @@ export default {
this.globalData.statusBarHeight = statusBarHeight || 20; this.globalData.statusBarHeight = statusBarHeight || 20;
// #endif // #endif
// authCode url // authCode url
console.log(window.location.href,"window.location.href")
const authCode = getQueryParam('authCode'); const authCode = getQueryParam('authCode');
const sfId = getQueryParam('sfId');
if(sfId) {
uni.setStorageSync("sfId", sfId);
}
if(authCode){ if(authCode){
let source = window.sf.isSfApp() ? 2 : 1; let source = window.sf.isSfApp() ? 2 : 1;
getApi.ShunFengLogin({ getApi.ShunFengLogin({
@ -207,7 +212,7 @@ text {
.uni-tabbar__label { .uni-tabbar__label {
color: #000; color: #000;
font-size: 24rpx !important; font-size: 24rpx !important;
margin-top: 12rpx; margin-top: 4rpx;
} }
.uni-tabbar__item.call-phone-item { .uni-tabbar__item.call-phone-item {

View File

@ -12,7 +12,7 @@
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" /> --> <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" /> -->
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<script src="/client/config.js"></script> <script src="./config.js"></script>
<script src="https://ucmp-static.sf-express.com/assets/sdks/microservice-1.0.4.min.js"></script> <script src="https://ucmp-static.sf-express.com/assets/sdks/microservice-1.0.4.min.js"></script>
<script> <script>
const sf = new SFUIP.SfMicroservice(window?.config?.ENV??'sit') const sf = new SFUIP.SfMicroservice(window?.config?.ENV??'sit')

View File

@ -75,7 +75,7 @@
"vueVersion" : "3", "vueVersion" : "3",
"h5" : { "h5" : {
"router" : { "router" : {
"base" : "/client/" "base" : "./"
}, },
"devServer" : { "devServer" : {
"port" : 8999, "port" : 8999,

View File

@ -31,19 +31,19 @@
<text class="address font26 fontb textGary">{{ unitTypeData[0]?.sitdAddress }}</text> <text class="address font26 fontb textGary">{{ unitTypeData[0]?.sitdAddress }}</text>
</view> </view>
</view> </view>
<view class="unitType card"> <view class="unitType card" v-if="unitTypeData.length">
<view class="title font32 fontb mgb20"> <view class="title font32 fontb mgb20">
仓型选择 仓型选择
</view> </view>
<view class="swiper"> <view class="swiper" >
<view class="info"> <view class="info">
<view class="left arrow"> <view class="left arrow">
<view class="arrowIcon" @click="prev" v-if="unitTypeData.length > 1"> <view class="arrowIcon" @click="prev" v-if="unitTypeData.length > 1">
<image src="/static/home/jiantouleft.svg" style="width: 64rpx;height: 64rpx;" class="icon"></image> <image src="/static/home/jiantouleft.svg" style="width: 64rpx;height: 64rpx;" class="icon"></image>
</view> </view>
</view> </view>
<view class="swiper-container"> <view class="swiper-container" >
<swiper class="warehouse-detail" circular style="height: 300rpx;" :indicator-dots="false" <swiper class="warehouse-detail" circular style="height: 300rpx;" :indicator-dots="false"
:autoplay="false" @change="changeMove" :current="state.active"> :autoplay="false" @change="changeMove" :current="state.active">
<swiper-item v-for="(item, index) in unitTypeData" :key="index"> <swiper-item v-for="(item, index) in unitTypeData" :key="index">
<view class="warehouse-detail-items"> <view class="warehouse-detail-items">
@ -52,6 +52,7 @@
</view> </view>
</swiper-item> </swiper-item>
</swiper> </swiper>
</view> </view>
<view class="right arrow"> <view class="right arrow">
<view class="arrowIcon" @click="next" v-if="unitTypeData.length > 1"> <view class="arrowIcon" @click="next" v-if="unitTypeData.length > 1">
@ -70,6 +71,9 @@
<view class="font26 fontb textGary">({{ unitTypeData[state.active].description }})</view> <view class="font26 fontb textGary">({{ unitTypeData[state.active].description }})</view>
</view> </view>
</view> </view>
<view class="empt font32 fontb" v-if="unitTypeData.length === 0" style="text-align: center;margin-top: 20rpx;">
暂无可用仓型请选择其他门店
</view>
<view class="orderInfo sflist card" v-if="unitTypeData.length"> <view class="orderInfo sflist card" v-if="unitTypeData.length">
<ul> <ul>
<li @click="showUnitPopup"> <li @click="showUnitPopup">
@ -93,7 +97,13 @@
<view class="left"><text class="font32 fontb">租金</text></view> <view class="left"><text class="font32 fontb">租金</text></view>
<view class="right font26 fontb" :class="{textGary:!state.priceData?.price}"><text>{{ state.priceData?.price ? `${state.priceData?.price}` : <view class="right font26 fontb" :class="{textGary:!state.priceData?.price}"><text>{{ state.priceData?.price ? `${state.priceData?.price}` :
'--' '--'
}} </text> }} </text>
</view>
</li>
<li @click="showCalendar">
<view class="left"><text class="font32 fontb">开始时间</text></view>
<view class="right font26 fontb"><text>{{ dayjs(state.startDate).format("YYYY/MM/DD") }}</text>
<image src="/static/home/jiantou.svg" style="width: 24rpx;height: 24rpx;" class="icon"></image>
</view> </view>
</li> </li>
<li @click="goVaild"> <li @click="goVaild">
@ -125,8 +135,8 @@
<view class="left " > <view class="left " >
<text class="price fontb" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }"> {{ state.priceData.expense ? `${state.priceData.expense}` : '¥--' <text class="price fontb" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }"> {{ state.priceData.expense ? `${state.priceData.expense}` : '¥--'
}}</text> }}</text>
<view class="detail" v-if="state.priceData.expense" @click="showPayPopup"><text style="margin-right: 10rpx;font-weight: 600;" :class="{ overMaxFont:String(state.priceData?.expense).length>6 }" v-if="state.priceData?.expense">{{ state.priceData.leaseOriginalPrice }}</text><text>明细</text> <view class="detail" v-if="state.priceData.expense" @click="showPayPopup"><text class="detail1" :class="{ overMaxFont:String(state.priceData?.expense).length>6 }" v-if="state.priceData?.expense">¥{{ state.priceData.leaseOriginalPrice }}</text><text class="detail2">明细</text>
<image src="/static/home/jiantouup.svg" style="height: 12rpx;margin-left: 10rpx;" mode="heightFix" class="icon"></image> <image src="/static/home/jiantouup.svg" style="height: 10rpx;margin-left: 10rpx;" mode="heightFix" class="icon"></image>
</view> </view>
</view> </view>
<view class="right"> <view class="right">
@ -143,10 +153,6 @@
</view> </view>
</view> </view>
<view class="empt font32 fontb" v-if="unitTypeData.length === 0" style="text-align: center;margin-top: 20rpx;">
暂无可用仓型请选择其他门店
</view>
</template> </template>
<template v-else> <template v-else>
<!-- <view style="margin-top: 40vh;" @click="goSite"> <!-- <view style="margin-top: 40vh;" @click="goSite">
@ -348,7 +354,7 @@
<view class="left font28"> <view class="left font28">
<text class="price fontb" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }"> {{ state.priceData.expense ? `${state.priceData.expense}` : '--' <text class="price fontb" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }"> {{ state.priceData.expense ? `${state.priceData.expense}` : '--'
}}</text> }}</text>
<view class="detail" v-if="state.priceData.expense" @click="hidePayPopup"><text style="margin-right: 10rpx;font-weight: 600;" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }" v-if="state.priceData?.expense">¥{{ state.priceData.leaseOriginalPrice }}</text><text class="font28">明细</text> <view class="detail" v-if="state.priceData.expense" @click="hidePayPopup"><text class="detail1" :class="{ overMaxFont: String(state.priceData?.expense).length>6 }" v-if="state.priceData?.expense">¥{{ state.priceData.leaseOriginalPrice }}</text><text class="detail2">明细</text>
<image src="/static/home/jiantouup.svg" style="height: 12rpx;margin-left: 10rpx;" mode="heightFix" class="icon"></image> <image src="/static/home/jiantouup.svg" style="height: 12rpx;margin-left: 10rpx;" mode="heightFix" class="icon"></image>
</view> </view>
</view> </view>
@ -422,6 +428,19 @@
</view> </view>
</view> </view>
</uv-popup> </uv-popup>
<uv-calendar
:safeAreaInsetBottom="false" :closeOnClickOverlay="false"
ref="calendars"
:minDate="state.minDate"
:date = "state.startDate"
confirmText="确定"
cancelText="取消"
title="开始时间"
:maxDate="state.maxDate"
:showSubtitle="false"
@confirm="calendarConfirm"
color="#FB322E"
/>
</view> </view>
</template> </template>
@ -467,6 +486,7 @@ const openPopupRef = ref(null);
const unitPopupRef = ref(null); const unitPopupRef = ref(null);
const monthPopupRef = ref(null); const monthPopupRef = ref(null);
const payPopupRef = ref(null); const payPopupRef = ref(null);
const calendars = ref(null);
// //
const navHeight = ref(0); const navHeight = ref(0);
const language = ref(""); const language = ref("");
@ -511,6 +531,31 @@ const state = ref({
p: 'margin: 0.8rem 0;', p: 'margin: 0.8rem 0;',
}, },
}); });
const showCalendar = () => {
calendars.value.open();
};
const calendarConfirm = (e) => {
const fullDate = dayjs(e[0]); // dayjs
if (state.value.zhuangxiuzhong) {
const limitDate = dayjs(state.value.lockData.preSaleTime);
if (fullDate.isBefore(limitDate)) {
uni.showModal({
title: t("common.title"),
content: t("storeRenovationNotice", {
limitDate: limitDate.format("YYYY/MM/DD")
}),
showCancel: false,
});
return;
} else {
state.value.startDate = fullDate.format("YYYY/MM/DD");
}
} else {
state.value.startDate = fullDate.format("YYYY/MM/DD");
}
};
const closePopup = () => { const closePopup = () => {
openPopupRef.value.close(); openPopupRef.value.close();
@ -524,6 +569,8 @@ const callPhone = ()=>{
closePopup(); closePopup();
} }
const goOrder = async () => { const goOrder = async () => {
if (!state.value.lockerId) { if (!state.value.lockerId) {
return uni.showToast({ return uni.showToast({
@ -570,7 +617,8 @@ const goOrder = async () => {
lockerId: state.value.lockerId, lockerId: state.value.lockerId,
startTime, startTime,
month: state.value.month, month: state.value.month,
source source,
sfId: uni.getStorageSync("sfId"),
}) })
.then((res) => { .then((res) => {
uni.hideLoading(); uni.hideLoading();
@ -811,6 +859,7 @@ const prev = () => {
} else { } else {
state.value.active = unitTypeData.value.length - 1; // state.value.active = unitTypeData.value.length - 1; //
} }
state.value.unitTypeId = unitTypeData.value[state.value.active].id;
} }
// //
const next = () => { const next = () => {
@ -819,6 +868,7 @@ const next = () => {
} else { } else {
state.value.active = 0; // state.value.active = 0; //
} }
state.value.unitTypeId = unitTypeData.value[state.value.active].id;
} }
onShareAppMessage((res) => { onShareAppMessage((res) => {
@ -882,7 +932,7 @@ const getSiteDetail = () => {
district, district,
}).then(res => { }).then(res => {
if (res.code === 200) { if (res.code === 200) {
list = mergeFiveGoatStores(res.data); list = mergeFiveGoatStores(res.data.filter(item => !item.isSoldOut && item.city.indexOf("广州") !== -1));
if (locationState?.latitude && locationState?.longitude) { if (locationState?.latitude && locationState?.longitude) {
const { latitude, longitude } = locationState; const { latitude, longitude } = locationState;
list.forEach(item => { list.forEach(item => {
@ -891,13 +941,17 @@ const getSiteDetail = () => {
item.distanceNumber = number; item.distanceNumber = number;
}); });
list.sort((a, b) => a.distanceNumber - b.distanceNumber); list.sort((a, b) => a.distanceNumber - b.distanceNumber);
//
const xiancundian = list.find(item => item.id == "2030892603720994816")
if (list[0]?.id) { if (list[0]?.id) {
state.value.siteId = list[0]?.id state.value.siteId =xiancundian?xiancundian.id:list[0]?.id
reset(); reset();
getUnitTypeBySiteId(); getUnitTypeBySiteId();
} }
} else { } else {
state.value.siteId = list[0]?.id //
const xiancundian = list.find(item => item.id == "2030892603720994816")
state.value.siteId = xiancundian?xiancundian.id:list[0]?.id
reset(); reset();
getUnitTypeBySiteId(); getUnitTypeBySiteId();
} }
@ -1123,11 +1177,10 @@ const gotoPage = (url) => {
// tab // tab
const current = ref(0); const current = ref(0);
const unitTypeData = ref([]); const unitTypeData = ref([]);
const tabs = ref([]);
function changeMove(event) { function changeMove(event) {
current.value = event.detail.current; state.value.active = event.detail.current;
state.value.unitTypeId = unitTypeData.value[current.value].id; state.value.unitTypeId = unitTypeData.value[state.value.active].id;
} }
</script> </script>
@ -1229,32 +1282,60 @@ function changeMove(event) {
color: #FFFFFF; color: #FFFFFF;
.left { .left {
color: #E9CBA1; color: #E9CBA1;
display: flex;
align-items: center;
font-size: 38rpx;
.price {
font-size: 38rpx;
&::first-letter{
font-size: 30rpx;
}
&.overMaxFont{
font-size: 30rpx;
&::first-letter{
font-size: 28rpx;
font-weight: normal;
}
}
}
.detail {
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 38rpx; color: #d0d1d2;
.price { margin-left: 16rpx;
&.overMaxFont{ font-size: 28rpx;
font-size: 32rpx; font-weight: normal;
} // .overMaxFont{
} // font-size: 24rpx;
// }
.detail { .detail1{
display: flex; font-size: 28rpx;
align-items: center;
margin-left: 16rpx;
color: #FFFFFF;
font-size: 28rpx;
.overMaxFont{
font-size: 24rpx;
}
image {
margin-left: 10rpx;
transform: rotate(180deg);
}
}
} }
.detail2{
padding-left: 10rpx;
font-size: 26rpx;
display: flex;
align-items: center;
// border-left:1px solid #4a4d51;
&::before{
content: '';
display: block;
width: 1px;
height: 30rpx;
border-radius: 50%;
background-color: #4a4d51;
margin-right: 10rpx;
}
}
image{
margin-left: 10rpx;
transform: rotate(180deg);
}
}
}
.right { .right {
display: flex; display: flex;
@ -1447,7 +1528,7 @@ function changeMove(event) {
display: flex; display: flex;
width: 100%; width: 100%;
padding-bottom: 16rpx; padding-bottom: 16rpx;
padding-left: 40rpx; padding-left: 36rpx;
.check-wrap { .check-wrap {
pointer-events: none; pointer-events: none;
@ -1540,21 +1621,51 @@ function changeMove(event) {
align-items: center; align-items: center;
font-size: 38rpx; font-size: 38rpx;
.price { .price {
font-size: 38rpx;
&::first-letter{
font-size: 30rpx;
}
&.overMaxFont{ &.overMaxFont{
font-size: 32rpx; font-size: 30rpx;
&::first-letter{
font-size: 28rpx;
font-weight: normal;
}
} }
} }
.detail { .detail {
display: flex; display: flex;
align-items: center; align-items: center;
color: #FFFFFF; color: #d0d1d2;
margin-left: 16rpx; margin-left: 16rpx;
font-size: 28rpx; font-size: 28rpx;
.overMaxFont{ font-weight: normal;
font-size: 24rpx; // .overMaxFont{
// font-size: 24rpx;
// }
.detail1{
font-size: 28rpx;
}
.detail2{
padding-left: 10rpx;
font-size: 26rpx;
display: flex;
align-items: center;
// border-left:1px solid #4a4d51;
&::before{
content: '';
display: block;
width: 1px;
height: 30rpx;
border-radius: 50%;
background-color: #4a4d51;
margin-right: 10rpx;
}
} }
image{ image{
margin-left: 10rpx; margin-left: 10rpx;
transform: rotate(180deg);
} }
} }
@ -1717,12 +1828,12 @@ function changeMove(event) {
.bottom { .bottom {
display: flex; display: flex;
image { image {
margin-top: 4rpx;
} }
.address { .address {
word-wrap: break-word; word-wrap: break-word;
word-break: break-all; word-break: break-all;
flex: 1; flex: 1;
line-height: 32rpx;
} }
} }
} }

View File

@ -122,7 +122,7 @@ onLoad((params) => {
const getCityData = () => { const getCityData = () => {
getApi.GetCityAll().then(res => { getApi.GetCityAll().then(res => {
if(res.code === 200) { if(res.code === 200) {
state.value.cityData = res.data; state.value.cityData = res.data.filter(item=>item.indexOf("广州") !== -1);
state.value.cityData.unshift("全部"); state.value.cityData.unshift("全部");
// //
state.value.city = state.value.cityData[0]; state.value.city = state.value.cityData[0];
@ -161,7 +161,7 @@ const getCityData = () => {
district, district,
}).then(res => { }).then(res => {
if (res.code === 200) { if (res.code === 200) {
siteData.list = mergeFiveGoatStores(res.data); siteData.list = mergeFiveGoatStores(res.data.filter(item => !item.isSoldOut && item.city.indexOf("广州") !== -1));
if (locationState?.latitude && locationState?.longitude) { if (locationState?.latitude && locationState?.longitude) {
const { latitude, longitude } = locationState; const { latitude, longitude } = locationState;
siteData.list.forEach(item => { siteData.list.forEach(item => {
@ -205,6 +205,9 @@ onShow(() => {
height: 100vh; height: 100vh;
padding-bottom: 100rpx; padding-bottom: 100rpx;
position: relative; position: relative;
.content{
padding-bottom: 200rpx;
}
} }
.selectSite { .selectSite {

View File

@ -1,6 +1,6 @@
<template> <template>
<view class="header"> <view class="header">
<uv-tabs @change="handleChange" :current="state.current" :activeStyle="{fontWeight:600}" lineWidth="80rpx" lineHeight="6rpx" <uv-tabs @change="handleChange" :current="state.current" :activeStyle="{fontWeight:600,color: '#000000',fontSize: '32rpx'}" :inactiveStyle="{ color: '#000000',fontSize: '32rpx' }" lineWidth="80rpx" lineHeight="6rpx"
lineColor="#FF1E2E" :scrollable="false" :list="list"> lineColor="#FF1E2E" :scrollable="false" :list="list">
</uv-tabs> </uv-tabs>
</view> </view>
@ -99,14 +99,14 @@
</view> </view>
<view class="empt font32 fontb" <view class="empt font32 fontb"
style="text-align: center;position: absolute; top: 50%;left: 50%;transform: translate(-50%, -50%);" style="text-align: center;position: absolute; top: 50%;left: 50%;transform: translate(-50%, -50%);"
v-if="state.orderList.length === 0"> v-if="currentOrderList.length === 0">
暂无订单 暂无订单
</view> </view>
<view class="footer"> <view class="footer">
<myCustomtTabBar direction="horizontal" :show-icon="true" :selected="1" @onTabItemTap="onTabItemTap"> <myCustomtTabBar direction="horizontal" :show-icon="true" :selected="1" @onTabItemTap="onTabItemTap">
</myCustomtTabBar> </myCustomtTabBar>
</view> </view>
<uv-popup ref="detailPopupRef" zIndex="999" round="24px"> <uv-popup ref="detailPopupRef" zIndex="999" round="24px" :safeAreaInsetBottom="false">
<view class="popupBox popupBoxW710"> <view class="popupBox popupBoxW710">
<view class="orderList"> <view class="orderList">
<view class="orderInfo"> <view class="orderInfo">
@ -354,7 +354,7 @@
state.priceData.expense ? `${state.priceData.expense}` state.priceData.expense ? `${state.priceData.expense}`
: '--' }}</text> : '--' }}</text>
<view class="detail" v-if="state.priceData.expense" @click="hidePayPopup"><text <view class="detail" v-if="state.priceData.expense" @click="hidePayPopup"><text
style="margin-right: 10rpx;font-weight: 600;" class="detail1"
:class="{ overMaxFont: String(state.priceData?.expense).length > 6 }" :class="{ overMaxFont: String(state.priceData?.expense).length > 6 }"
v-if="state.priceData?.expense">{{ state.priceData.leaseOriginalPrice }}</text> v-if="state.priceData?.expense">{{ state.priceData.leaseOriginalPrice }}</text>
<!-- <text <!-- <text
@ -1363,7 +1363,7 @@ onShow(() => {
border-radius: 999rpx; border-radius: 999rpx;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; // align-items: center;
background-color: #0D1118; background-color: #0D1118;
color: #FFFFFF; color: #FFFFFF;
@ -1383,7 +1383,7 @@ onShow(() => {
display: flex; display: flex;
align-items: center; align-items: center;
margin-left: 20rpx; margin-left: 20rpx;
color: #FFFFFF; color: #d0d1d2;
font-size: 28rpx; font-size: 28rpx;
.overMaxFont { .overMaxFont {

View File

@ -17,7 +17,7 @@
<uv-input placeholder="请选择" placeholderStyle="font-weight: 600;font-size: 28rpx;color:#A8AAAC;" v-model="state.cardTypeText" disabled disabledColor="#ffffff" <uv-input placeholder="请选择" placeholderStyle="font-weight: 600;font-size: 28rpx;color:#A8AAAC;" v-model="state.cardTypeText" disabled disabledColor="#ffffff"
border="none"></uv-input> border="none"></uv-input>
<template #right> <template #right>
<image src="/static/home/jiantou.svg" style="width: 44rpx;height: 24rpx;" class="icon"></image> <image src="/static/home/jiantou.svg" style="width: 22rpx;height: 24rpx;" class="icon"></image>
</template> </template>
</uv-form-item> </uv-form-item>
@ -512,7 +512,7 @@ const updateAuthInfo = () => {
state.showAuthModal = true; state.showAuthModal = true;
if (res.data && requestData.type !== 2) { if (res.data && requestData.type !== 2) {
if (pages.length >= 2) { if (pages.length >= 2) {
if (pages[pages.length - 2].route == 'pages/setOrder/index') { if (pages[pages.length - 2].route == 'pages/index/index') {
navigateBack() navigateBack()
return return
} }
@ -564,7 +564,8 @@ const updateAuthInfo = () => {
} }
:deep(.uv-form-item__body) { :deep(.uv-form-item__body) {
padding: 20rpx; padding: 20rpx 0;
} }
.ImgUpload{ .ImgUpload{
// margin-left: auto; /* */ // margin-left: auto; /* */

View File

@ -1,5 +1,5 @@
<template> <template>
<view class="uv-calendar-header uv-border-bottom"> <view class="uv-calendar-header uv-border-bottom" style="padding: 20rpx;">
<text <text
class="uv-calendar-header__title" class="uv-calendar-header__title"
v-if="showTitle" v-if="showTitle"
@ -9,13 +9,13 @@
v-if="showSubtitle" v-if="showSubtitle"
>{{ subtitle }}</text> >{{ subtitle }}</text>
<view class="uv-calendar-header__weekdays"> <view class="uv-calendar-header__weekdays">
<text class="uv-calendar-header__weekdays__weekday">Sun</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Mon</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Tue</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Wed</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Thu</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Fri</text> <text class="uv-calendar-header__weekdays__weekday"></text>
<text class="uv-calendar-header__weekdays__weekday">Sat</text> <text class="uv-calendar-header__weekdays__weekday"></text>
</view> </view>
</view> </view>
</template> </template>
@ -71,9 +71,9 @@
padding-bottom: 4px; padding-bottom: 4px;
&__title { &__title {
font-size: 16px; font-size: 36rpx;
font-weight: bold;
color: $uv-main-color; color: $uv-main-color;
text-align: center;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
font-weight: bold; font-weight: bold;
@ -91,6 +91,7 @@
&__weekdays { &__weekdays {
@include flex; @include flex;
justify-content: space-between; justify-content: space-between;
font-weight: 600;
&__weekday { &__weekday {
font-size: 13px; font-size: 13px;

View File

@ -481,11 +481,12 @@
.uv-calendar-month { .uv-calendar-month {
&__title { &__title {
font-size: 14px; font-size: 28rpx;
line-height: 42px; line-height: 42px;
height: 42px; height: 42px;
color: $uv-main-color; color: $uv-main-color;
text-align: center; // text-align: center;
padding-left: 20rpx;
font-weight: bold; font-weight: bold;
} }
@ -493,6 +494,7 @@
position: relative; position: relative;
@include flex; @include flex;
flex-wrap: wrap; flex-wrap: wrap;
font-weight: 600;
&__month-mark-wrapper { &__month-mark-wrapper {
position: absolute; position: absolute;

View File

@ -3,9 +3,9 @@
ref="calendarPopup" ref="calendarPopup"
mode="bottom" mode="bottom"
closeable closeable
:round="round"
:closeOnClickOverlay="closeOnClickOverlay" :closeOnClickOverlay="closeOnClickOverlay"
@change="popupChange" @change="popupChange"
width="750rpx" zIndex="999" round="24px"
> >
<view class="uv-calendar"> <view class="uv-calendar">
<uvHeader <uvHeader
@ -20,6 +20,8 @@
@scroll="onScroll" @scroll="onScroll"
:scroll-top="scrollTop" :scroll-top="scrollTop"
:scrollIntoView="scrollIntoView" :scrollIntoView="scrollIntoView"
style="background-color: #F8F9FB;box-sizing: border-box;padding: 0 20rpx;"
> >
<uvMonth <uvMonth
:color="color" :color="color"
@ -50,6 +52,12 @@
<uv-button <uv-button
shape="circle" shape="circle"
:text="buttonDisabled ? confirmDisabledText : confirmText" :text="buttonDisabled ? confirmDisabledText : confirmText"
:customStyle="{
height: '86rpx',
color: '#fff',
fontSize: '32rpx',
width: '500rpx',
}"
:color="color" :color="color"
@click="confirm" @click="confirm"
:disabled="buttonDisabled" :disabled="buttonDisabled"
@ -382,9 +390,15 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::deep(.uv-popup__content){
border-radius: 24rpx;
}
.uv-calendar { .uv-calendar {
&__confirm { &__confirm {
padding: 7px 18px; display: flex;
justify-content: center;
padding:20rpx;
padding-bottom: 40rpx;
} }
} }
</style> </style>

View File

@ -45,8 +45,8 @@
> >
<uv-icon <uv-icon
name="close" name="close"
color="#909399" color="#000000"
size="18" size="32rpx"
bold bold
></uv-icon> ></uv-icon>
</view> </view>
@ -499,7 +499,7 @@
} }
&__close { &__close {
position: absolute; position: absolute;
margin-top: 12rpx;
&--hover { &--hover {
opacity: 0.4; opacity: 0.4;
} }

View File

@ -261,10 +261,17 @@ export const parseUrlParams = (url) => {
// 顺丰参数 // 顺丰参数
export const shunfenLogin = async (code) => { export const shunfenLogin = async (code) => {
// 授权参数请根据实际情况修改reserved 传原参 // 授权参数请根据实际情况修改reserved 传原参
const authOptions = { let successUrl = window?.config?.BACK_URL ?? "https://uat.kingkongcang.com/client/"
// 如果顺丰员工Id 存在 就把sfId 传过去 怕授权的时候url参数丢失
const sfId = uni.getStorageSync("sfId");
if(sfId){
successUrl = successUrl+"?sfId="+sfId
}
console.log(successUrl,"successUrl")
const authOptions = {
appId: window?.config?.SF_APP_ID ??"202603041358374970", // 第三方接入ID appId: window?.config?.SF_APP_ID ??"202603041358374970", // 第三方接入ID
scope: ["sf_userinfo", "sf_mobile", "sf_base", "sf_emp", "sf_channelId"], scope: ["sf_userinfo", "sf_mobile", "sf_base", "sf_emp", "sf_channelId"],
successUrl: window?.config?.BACK_URL ?? "https://uat.kingkongcang.com/client/", // 当前页面地址 successUrl, // 当前页面地址
}; };
window.sf.getAuthCode({ window.sf.getAuthCode({
...authOptions, ...authOptions,
@ -307,6 +314,17 @@ const authOptions = {
} }
// 获取url 参数 // 获取url 参数
export const getQueryParam = (name, url = window.location.href) => { export const getQueryParam = (name, url = window.location.href) => {
const params = new URL(url).searchParams; const u = new URL(url)
return params.get(name);
// 优先从正常 query 取
let params = new URLSearchParams(u.search)
let value = params.get(name)
if (value) return value
// 再从 hash 取
const hash = u.hash.split('?')[1]
if (!hash) return null
params = new URLSearchParams(hash)
return params.get(name)
} }