Merge branch 'main' of 192.168.1.40:outsource/mahjong_group

This commit is contained in:
zpc 2025-09-11 18:39:14 +08:00
commit 955fb965e4
4 changed files with 242 additions and 205 deletions

View File

@ -90,7 +90,7 @@
"uniIdRouter": {}, "uniIdRouter": {},
"tabBar": { "tabBar": {
"color": "#cdcdcd", "color": "#cdcdcd",
"selectedColor": "#1296db", "selectedColor": "#59AB6D",
"borderStyle": "black", "borderStyle": "black",
"height": "129.17rpx", "height": "129.17rpx",
"list": [{ "list": [{

View File

@ -3,17 +3,27 @@
<text style="margin-top: 100rpx; text-align: center;">发起预约</text> <text style="margin-top: 100rpx; text-align: center;">发起预约</text>
<view class="" <view class=""
style="width: 90%; background-color: #F2F3F5; border-radius: 10rpx; margin: 30rpx auto 0; display: flex; justify-content: center;"> style="width: 90%; background-color: #FFFFFF; border-radius: 10rpx; margin: 30rpx auto 0; display: flex; justify-content: center; box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.1);">
<view class="column" style="width: 95%; margin-bottom: 20rpx;"> <view class="column" style="width: 95%; margin-bottom: 20rpx; margin-top: 25rpx;">
<text style="font-size: 26rpx; margin-bottom: 10rpx; margin-top: 20rpx;">开始时间</text> <view class="row" style="align-items: center;">
<uni-datetime-picker style="width: 50px;" type="datetime" v-model="startTimeStr" @change="changeLog" /> <text style="font-size: 27.85rpx; margin-right: 23rpx;">开始时间</text>
<view class="" style="width: 80%;">
<uni-datetime-picker style="width: 50px;" type="datetime" v-model="startTimeStr"
@change="changeLog" />
</view>
</view>
<text style="font-size: 26rpx; margin-bottom: 10rpx; margin-top: 30rpx;">结束时间</text> <view class="row" style="align-items: center; margin-top: 30rpx;">
<text style="font-size: 27.85rpx; margin-right: 23rpx;">结束时间</text>
<view class="" style="width: 80%;">
<uni-datetime-picker style="margin-top: 10rpx;" type="datetime" v-model="endTimeStr" <uni-datetime-picker style="margin-top: 10rpx;" type="datetime" v-model="endTimeStr"
@change="changeLog2" /> @change="changeLog2" />
</view>
</view>
<text v-if="hours!=''" style="font-size: 26rpx; margin-top: 20rpx;">合计{{hours}}小时{{minutes}}分钟</text> <text v-if="hours!=''" style="font-size: 26rpx; margin-top: 20rpx;">合计{{hours}}小时{{minutes}}分钟</text>
</view> </view>
@ -21,18 +31,20 @@
<view class="column" style="width: 90%; border-radius: 10rpx; margin: 40rpx auto 0; background-color: #F2F3F5;"> <view class="column"
style="width: 90%; border-radius: 10rpx; margin: 40rpx auto 0; background-color: #FFFFFF; box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.1);">
<text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">组局名称</text> <text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">组局名称</text>
<view class="" <view class=""
style="width: 90%; background-color: white; margin-left: 20rpx; margin-top: 20rpx; height: 70rpx; display: flex; align-items: center; padding-left: 20rpx;"> style="width: 89%; background-color: white; margin: 20rpx auto 0; height: 70rpx; border-radius: 10rpx; display: flex; align-items: center; padding-left: 20rpx; border: 1rpx solid #515151;">
<input class="uni-input" placeholder="请输入组局名称" style="font-size: 24rpx;" /> <input class="uni-input" placeholder="请输入组局名称" style="font-size: 24rpx; width: 100%;" />
</view> </view>
<text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">房间</text> <text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">房间</text>
<view class="" style="width: 92%; margin: 20rpx auto 0;border-radius: 50rpx;"> <view class="" style="width: 92%; margin: 20rpx auto 0; border-radius: 50rpx;">
<uni-data-select v-model="roomValue" :localdata="range" @change="change"></uni-data-select> <uni-data-select class="custom-select" v-model="roomValue" :localdata="range"
@change="change"></uni-data-select>
</view> </view>
<text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">人数</text> <text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">人数</text>
@ -55,13 +67,13 @@
<text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">其他补充</text> <text style="font-size: 26rpx; margin-top: 20rpx; margin-left: 20rpx;">其他补充</text>
<view class="" <view class=""
style="width: 90%; background-color: white; margin-left: 20rpx; margin-top: 20rpx; margin-bottom: 20rpx; height: 70rpx; display: flex; align-items: center; padding-left: 20rpx;"> style="width: 89%; background-color: white; border-radius: 10rpx; margin: 20rpx auto 20rpx; height: 70rpx; display: flex; align-items: center; padding-left: 20rpx; border: 1rpx solid #515151;">
<input class="uni-input" placeholder="请输入补充信息" style="font-size: 24rpx;" /> <input class="uni-input" placeholder="请输入补充信息" style="font-size: 24rpx; width: 100%;" />
</view> </view>
</view> </view>
<view class="column" style="width: 90%; border-radius: 10rpx; margin: 40rpx auto 0; background-color: #F2F3F5;"> <view class="column" style="width: 90%; border-radius: 10rpx; margin: 40rpx auto 0; background-color: #FFFFFF; box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.1);">
<view class="row" style="margin-top: 20rpx; margin-left: 20rpx;"> <view class="row" style="margin-top: 20rpx; margin-left: 20rpx;">
<view class="" style="width: 120rpx; font-size: 26rpx; align-items: center;"> <view class="" style="width: 120rpx; font-size: 26rpx; align-items: center;">
@ -70,10 +82,10 @@
<radio-group class="" style="margin-left: 50rpx;"> <radio-group class="" style="margin-left: 50rpx;">
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx;">
<radio value="r1" color="#007aff" style="transform:scale(0.7);" :checked="true" />禁烟 <radio value="r1" color="#00AC4E" style="transform:scale(0.7);" :checked="true" />禁烟
</label> </label>
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx; margin-left: 90rpx;">
<radio value="r2" color="#007aff" style="transform:scale(0.7);" />不禁烟 <radio value="r2" color="#00AC4E" style="transform:scale(0.7);" />不禁烟
</label> </label>
</radio-group> </radio-group>
@ -86,13 +98,13 @@
</view> </view>
<radio-group class="" style="margin-left: 50rpx;"> <radio-group class="" style="margin-left: 50rpx;">
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx;">
<radio value="r1" color="#007aff" style="transform:scale(0.7);" :checked="true" />不限 <radio value="r1" color="#00AC4E" style="transform:scale(0.7);" :checked="true" />不限
</label> </label>
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx; margin-left: 90rpx;">
<radio value="r2" color="#007aff" style="transform:scale(0.7);" /> <radio value="r2" color="#00AC4E" style="transform:scale(0.7);" />
</label> </label>
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx; margin-left: 90rpx;">
<radio value="r3" color="#007aff" style="transform:scale(0.7);" /> <radio value="r3" color="#00AC4E" style="transform:scale(0.7);" />
</label> </label>
</radio-group> </radio-group>
</view> </view>
@ -102,10 +114,12 @@
信誉 信誉
</view> </view>
<text style="font-size: 25.86rpx; margin-left: 55rpx;">大于等于</text>
<view class="counter-container"> <view class="counter-container">
<!-- 减号按钮 --> <!-- 减号按钮 -->
<view class="" @click="decrement" :disabled="currentValue <= 0"> <view class="" @click="decrement" :disabled="currentValue <= 0">
<uni-icons type="minus" size="24" color="#666" /> <uni-icons type="minus" size="24" color="#00AC4E" />
</view> </view>
<!-- 数值显示 --> <!-- 数值显示 -->
@ -115,7 +129,7 @@
<!-- 加号按钮 --> <!-- 加号按钮 -->
<view class="" @click="increment" :disabled="currentValue >= 5"> <view class="" @click="increment" :disabled="currentValue >= 5">
<uni-icons type="plus" size="24" color="#666" /> <uni-icons type="plus" size="24" color="#00AC4E" />
</view> </view>
</view> </view>
@ -125,7 +139,7 @@
</view> </view>
<view class="column" style="width: 90%; border-radius: 10rpx; margin: 20rpx auto 0; background-color: #F2F3F5;"> <view class="column" style="width: 90%; border-radius: 10rpx; margin: 20rpx auto 0; background-color: #FFFFFF; box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.1);">
<view class="row" style="margin-top: 20rpx; margin-left: 20rpx;"> <view class="row" style="margin-top: 20rpx; margin-left: 20rpx;">
<view class="" style=" font-size: 26rpx; align-items: center;"> <view class="" style=" font-size: 26rpx; align-items: center;">
@ -133,13 +147,13 @@
</view> </view>
<radio-group class="" style="margin-left: 50rpx;"> <radio-group class="" style="margin-left: 50rpx;">
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx;">
<radio value="r1" color="#007aff" style="transform:scale(0.7);" :checked="true" />0 <radio value="r1" color="#00AC4E" style="transform:scale(0.7);" :checked="true" />0
</label> </label>
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx;">
<radio value="r2" color="#007aff" style="transform:scale(0.7);" />5 <radio value="r2" color="#00AC4E" style="transform:scale(0.7);" />5
</label> </label>
<label class="" style="font-size: 24rpx;"> <label class="" style="font-size: 24rpx;">
<radio value="r3" color="#007aff" style="transform:scale(0.7);" />10 <radio value="r3" color="#00AC4E" style="transform:scale(0.7);" />10
</label> </label>
</radio-group> </radio-group>
</view> </view>
@ -148,7 +162,7 @@
style="font-size: 24rpx; margin-left: 20rpx; margin-bottom: 20rpx;">除发起者外其他参与人需缴纳鸽子费若有参与者在预约后没有赴约其鸽子费由在场的所有人平分组局成功或失败后鸽子费将全额返还</text> style="font-size: 24rpx; margin-left: 20rpx; margin-bottom: 20rpx;">除发起者外其他参与人需缴纳鸽子费若有参与者在预约后没有赴约其鸽子费由在场的所有人平分组局成功或失败后鸽子费将全额返还</text>
</view> </view>
<view class="center" style="width: 90%; border-radius: 10rpx; margin: 20rpx auto 0; background-color: #1989FA;"> <view class="center" style="width: 90%; border-radius: 10rpx; margin: 20rpx auto 0; background-color: #00AC4E;">
<text style="margin: 20rpx; color: white;">发起预约</text> <text style="margin: 20rpx; color: white;">发起预约</text>
</view> </view>
@ -264,13 +278,14 @@
width: 100%; width: 100%;
height: 100vh; height: 100vh;
overflow-y: auto; overflow-y: auto;
background-color: #F7F7F7;
} }
.counter-container { .counter-container {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-left: 50rpx; margin-left: 90rpx;
} }
.counter-btn { .counter-btn {
@ -291,10 +306,16 @@
.counter-value { .counter-value {
width: 120rpx; width: 90rpx;
text-align: center; text-align: center;
font-size: 28rpx; font-size: 28rpx;
font-weight: 500; font-weight: 500;
color: #333; color: #333;
} }
.custom-select ::v-deep .uni-input-input {
/* 正常状态下的边框颜色 */
border: 1px solid #007aff !important;
border-radius: 6px;
}
</style> </style>

View File

@ -27,7 +27,7 @@
</view> </view>
</view> </view>
<view class="column" @click="currentAppointment ? openPop() : null" <view class="column" @click="currentAppointment ? openPop() : null"
style="width: 90%; border-radius: 10rpx; background-color: #F2F3F5; margin: 40rpx auto 0;"> style="width: 90%; border-radius: 30rpx; background: linear-gradient(to bottom, #D7F0DD, #FFFFFF); box-shadow: 0 0 3px 3px rgba(0, 0, 0, 0.1); margin: 40rpx auto 0;">
<!-- 无预约状态 --> <!-- 无预约状态 -->
<view v-if="!currentAppointment" class="row" style="align-items: center; margin: 20rpx;"> <view v-if="!currentAppointment" class="row" style="align-items: center; margin: 20rpx;">
@ -60,7 +60,7 @@
<view v-if="userInfo != null" class="column" <view v-if="userInfo != null" class="column"
style="width: 90%; border-radius: 10rpx; background-color: #F2F3F5; margin: 40rpx auto 0;"> style="width: 90%; border-radius: 30rpx; background-color: #FFFFFF; box-shadow: 0 0 3px 3px rgba(0, 0, 0, 0.1); margin: 40rpx auto 0;">
<view class="row" style="align-items: center; margin-top: 30rpx; margin-left: 20rpx;"> <view class="row" style="align-items: center; margin-top: 30rpx; margin-left: 20rpx;">
@ -89,7 +89,7 @@
</view> </view>
<view v-else class="column" <view v-else class="column"
style="width: 90%; border-radius: 10rpx; background-color: #F2F3F5; margin: 40rpx auto 0;"> style="width: 90%; border-radius: 30rpx; background-color: #FFFFFF; box-shadow: 0 0 3px 3px rgba(0, 0, 0, 0.1); margin: 40rpx auto 0;">
<view class="row" style="align-items: center; margin-top: 30rpx; margin-left: 20rpx;"> <view class="row" style="align-items: center; margin-top: 30rpx; margin-left: 20rpx;">
<text style="font-size: 24rpx;">我的评分</text> <text style="font-size: 24rpx;">我的评分</text>
<text style="font-size: 24rpx; color: #999; margin-left: 10rpx;">未评分</text> <text style="font-size: 24rpx; color: #999; margin-left: 10rpx;">未评分</text>
@ -111,29 +111,38 @@
</view> </view>
<view class="row" style="width: 90%; margin: 40rpx auto 0;">
<view class="column"
style="width: 90%; margin: 40rpx auto 0; border-radius: 30rpx; background-color: #FFFFFF; box-shadow: 0 0 3px 3px rgba(0, 0, 0, 0.1);">
<text style="font-size: 30rpx; margin-top: 26rpx; margin-left: 36rpx;">常用功能</text>
<view class="row" style=" justify-content: space-between; margin: 40rpx;">
<view class="column" @click="toAppointment()" style="align-items: center;"> <view class="column" @click="toAppointment()" style="align-items: center;">
<image src="@@:app/static/appoin_record.png" style="width: 50rpx; height: 50rpx;" mode=""></image> <image src="@@:app/static/appoin_record.png" style="width: 50rpx; height: 50rpx;" mode=""></image>
<text style="font-size: 24rpx; margin-top: 20rpx;">预约记录</text> <text style="font-size: 24rpx; margin-top: 20rpx;">预约记录</text>
</view> </view>
<view class="column" style="align-items: center; margin-left: 40rpx;"> <view class="column" style="align-items: center;">
<image src="@@:app/static/problem.png" style="width: 50rpx; height: 50rpx;" mode=""></image> <image src="@@:app/static/problem.png" style="width: 50rpx; height: 50rpx;" mode=""></image>
<text style="font-size: 24rpx; margin-top: 20rpx;">常见问题</text> <text style="font-size: 24rpx; margin-top: 20rpx;">常见问题</text>
</view> </view>
<view class="column" style="align-items: center; margin-left: 40rpx;"> <view class="column" style="align-items: center;">
<image src="@@:app/static/customer_s.png" style="width: 50rpx; height: 50rpx;" mode=""></image> <image src="@@:app/static/customer_s.png" style="width: 50rpx; height: 50rpx;" mode=""></image>
<text style="font-size: 24rpx; margin-top: 20rpx;">联系我们</text> <text style="font-size: 24rpx; margin-top: 20rpx;">联系我们</text>
</view> </view>
<view class="column" @click="toBlacklist()" style="align-items: center; margin-left: 40rpx;"> <view class="column" @click="toBlacklist()" style="align-items: center;">
<image src="@@:app/static/blacklist.png" style="width: 50rpx; height: 50rpx;" mode=""></image> <image src="@@:app/static/blacklist.png" style="width: 50rpx; height: 50rpx;" mode=""></image>
<text style="font-size: 24rpx; margin-top: 20rpx;">黑名单</text> <text style="font-size: 24rpx; margin-top: 20rpx;">黑名单</text>
</view> </view>
</view> </view>
</view>
</view> </view>
@ -236,38 +245,44 @@
</template> </template>
<script setup> <script setup>
import { userInfo, loadUserInfo } from '@/common/server/user' import {
import { ref, reactive, onMounted } from 'vue' userInfo,
loadUserInfo
} from '@/common/server/user'
import {
ref,
reactive,
onMounted
} from 'vue'
// //
const rateValue = ref(4.5) const rateValue = ref(4.5)
const infoPop = ref(null) const infoPop = ref(null)
const loading = ref(false) const loading = ref(false)
// - // -
// const userInfo = reactive({ // const userInfo = reactive({
// nickname: '', // nickname: '',
// uid: '', // uid: '',
// avatar: '@@:app/nouser.png', // avatar: '@@:app/nouser.png',
// rating: 0, // rating: 0,
// reputation: 0, // reputation: 0,
// cardQuality: 0, // cardQuality: 0,
// cardSkill: 0, // cardSkill: 0,
// pigeonCount: 0 // pigeonCount: 0
// }) // })
// //
const currentAppointment = ref(null) const currentAppointment = ref(null)
// //
const appointmentDetail = reactive({ const appointmentDetail = reactive({
organizer: { organizer: {
name: '苏家辉', name: '苏家辉',
avatar: '', avatar: '',
isBlacklisted: false isBlacklisted: false
}, },
participants: [ participants: [{
{
name: '树下的胖子', name: '树下的胖子',
avatar: '', avatar: '',
isBlacklisted: true isBlacklisted: true
@ -302,18 +317,18 @@ const appointmentDetail = reactive({
reputation: '≧4.0' reputation: '≧4.0'
}, },
pigeonFee: '0元' pigeonFee: '0元'
}) })
// //
const openPop = () => { const openPop = () => {
infoPop.value.open(); infoPop.value.open();
} }
const clasePop = () => { const clasePop = () => {
infoPop.value.close(); infoPop.value.close();
} }
const toAppointment = () => { const toAppointment = () => {
if (userInfo.value == null) { if (userInfo.value == null) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/login' url: '/pages/me/login'
@ -324,9 +339,9 @@ const toAppointment = () => {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/appointment-record-page' url: '/pages/me/appointment-record-page'
}); });
} }
const toEditInfo = () => { const toEditInfo = () => {
// //
if (userInfo.value == null) { if (userInfo.value == null) {
uni.navigateTo({ uni.navigateTo({
@ -337,9 +352,9 @@ const toEditInfo = () => {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/edit-info' url: '/pages/me/edit-info'
}); });
} }
const toBlacklist = () => { const toBlacklist = () => {
if (userInfo.value == null) { if (userInfo.value == null) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/login' url: '/pages/me/login'
@ -349,21 +364,21 @@ const toBlacklist = () => {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/blacklist-page' url: '/pages/me/blacklist-page'
}); });
} }
const openUserPop = () => { const openUserPop = () => {
// //
console.log('打开用户详情弹窗'); console.log('打开用户详情弹窗');
} }
const toLogin = () => { const toLogin = () => {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/login' url: '/pages/me/login'
}); });
} }
// - // -
const loadCurrentAppointment = async () => { const loadCurrentAppointment = async () => {
try { try {
// //
currentAppointment.value = null currentAppointment.value = null
@ -372,30 +387,31 @@ const loadCurrentAppointment = async () => {
console.error('加载预约信息失败:', error) console.error('加载预约信息失败:', error)
currentAppointment.value = null currentAppointment.value = null
} }
} }
// //
onMounted(() => { onMounted(() => {
loadCurrentAppointment() loadCurrentAppointment()
}) })
// //
onShow(() => { onShow(() => {
// //
// getUserInfoData(); // getUserInfoData();
}) })
onLoad(async () => { onLoad(async () => {
await loadUserInfo(); await loadUserInfo();
}); });
</script> </script>
<style lang="scss"> <style lang="scss">
.content { .content {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
} background-color: #F7F7F7;
}
.loading-container { .loading-container {
position: fixed; position: fixed;
top: 50%; top: 50%;
left: 50%; left: 50%;
@ -405,5 +421,5 @@ onLoad(async () => {
padding: 20rpx 40rpx; padding: 20rpx 40rpx;
border-radius: 10rpx; border-radius: 10rpx;
z-index: 9999; z-index: 9999;
} }
</style> </style>

View File

@ -541,7 +541,7 @@
$uni-base-color: #6a6a6a !default; $uni-base-color: #6a6a6a !default;
$uni-main-color: #333 !default; $uni-main-color: #333 !default;
$uni-secondary-color: #909399 !default; $uni-secondary-color: #909399 !default;
$uni-border-3: #e5e5e5; $uni-border-3: #515151;
$uni-primary: #2979ff !default; $uni-primary: #2979ff !default;
$uni-success: #4cd964 !default; $uni-success: #4cd964 !default;
$uni-warning: #f0ad4e !default; $uni-warning: #f0ad4e !default;