合并代码
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
# 开发环境配置
|
||||
VITE_API_BASE_URL=/api
|
||||
VITE_UPLOAD_BASE_URL=http://localhost:3000/api/upload
|
||||
VITE_UPLOAD_BASE_URL=http://localhost:3001/api/upload
|
||||
@@ -1,3 +1,5 @@
|
||||
# 生产环境配置
|
||||
VITE_API_BASE_URL=https://www.zrbjr.com/api
|
||||
VITE_UPLOAD_BASE_URL=https://www.zrbjr.com/api/upload
|
||||
# VITE_API_BASE_URL=https://www.zrbjr.com/api
|
||||
# VITE_UPLOAD_BASE_URL=https://www.zrbjr.com/api/upload
|
||||
VITE_API_BASE_URL=http://114.55.111.44:3001/api
|
||||
VITE_UPLOAD_BASE_URL=http://114.55.111.44:3001/api/upload
|
||||
|
||||
@@ -53,6 +53,14 @@ const routes = [
|
||||
title: '个人中心'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/loading',
|
||||
name: 'Loading',
|
||||
component: () => import('@/views/Loading.vue'),
|
||||
meta: {
|
||||
title: '维护中'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/mypoints-history',
|
||||
name: 'MyPointsHistory',
|
||||
@@ -235,6 +243,12 @@ const router = createRouter({
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
NProgress.start()
|
||||
|
||||
// 系统维护模式:所有页面都跳转到维护页面
|
||||
// if (to.name !== 'Loading') {
|
||||
// next({ name: 'Loading' })
|
||||
// return
|
||||
// }
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
// 设置页面标题
|
||||
|
||||
106
src/views/Loading.vue
Normal file
106
src/views/Loading.vue
Normal file
@@ -0,0 +1,106 @@
|
||||
<template>
|
||||
<div class="maintenance-container">
|
||||
<div class="maintenance-content">
|
||||
<img
|
||||
src="/public/imgs/loading.png"
|
||||
alt="加载中"
|
||||
class="maintenance-spinner"
|
||||
>
|
||||
<h1 class="maintenance-title">服务器维护中</h1>
|
||||
<p class="maintenance-message">
|
||||
我们正在对系统进行升级维护,以提供更好的服务体验<br>
|
||||
请稍后再访问,感谢您的理解与支持
|
||||
</p>
|
||||
<div class="maintenance-progress">
|
||||
<div class="progress-bar"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.maintenance-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.maintenance-content {
|
||||
max-width: 500px;
|
||||
padding: 40px;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.1);
|
||||
backdrop-filter: blur(8px);
|
||||
animation: fadeIn 0.6s ease-out;
|
||||
}
|
||||
|
||||
.maintenance-spinner {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
margin-bottom: 20px;
|
||||
animation: spin 2s linear infinite;
|
||||
}
|
||||
|
||||
.maintenance-title {
|
||||
font-size: 28px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 15px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.maintenance-message {
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 25px;
|
||||
color: #7f8c8d;
|
||||
}
|
||||
|
||||
.maintenance-progress {
|
||||
height: 6px;
|
||||
background: #ecf0f1;
|
||||
border-radius: 3px;
|
||||
overflow: hidden;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 100%;
|
||||
width: 60%;
|
||||
background: linear-gradient(90deg, #3498db, #9b59b6);
|
||||
animation: progressAnimation 2s ease-in-out infinite;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes progressAnimation {
|
||||
0% { width: 20%; }
|
||||
50% { width: 80%; }
|
||||
100% { width: 20%; }
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.maintenance-content {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
|
||||
.maintenance-title {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -519,7 +519,7 @@ export default {
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$router.push('/profile')
|
||||
this.$router.push('/myprofile')
|
||||
}).catch(() => {})
|
||||
} else {
|
||||
this.$message.error(errorMessage)
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
</el-image>
|
||||
</div>
|
||||
<!-- 确认收款操作按钮 -->
|
||||
<div v-if="transfer.status === 'confirmed' && transfer.to_user_id === userStore.user.id" class="transfer-actions">
|
||||
<div v-if="transfer.status === 'pending' && transfer.to_user_id === userStore.user.id" class="transfer-actions">
|
||||
<el-button
|
||||
type="success"
|
||||
size="small"
|
||||
@@ -215,12 +215,12 @@
|
||||
确认收款
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
type="danger"
|
||||
size="small"
|
||||
@click="confirmNotReceived(transfer.id)"
|
||||
:loading="confirmLoading"
|
||||
>
|
||||
未收到款
|
||||
拒绝收款
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -342,12 +342,20 @@ watch(statusFilter, () => {
|
||||
// 方法
|
||||
const loadPendingTransfers = async () => {
|
||||
try {
|
||||
const response = await api.get('/transfers/pending')
|
||||
const response = await api.get('/transfers/pending', {
|
||||
params: {
|
||||
user_id: userStore.user.id
|
||||
}
|
||||
})
|
||||
if (response.data.success) {
|
||||
pendingTransfers.value = response.data.data
|
||||
// 过滤出需要当前用户确认的转账记录
|
||||
pendingTransfers.value = response.data.data.filter(
|
||||
transfer => transfer.to_user_id === userStore.user.id && transfer.status === 'pending'
|
||||
)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载待确认转账失败:', error)
|
||||
ElMessage.error('加载待确认转账失败')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -703,7 +711,6 @@ const confirmReturn = async () => {
|
||||
|
||||
/**
|
||||
* 显示转账凭证并确认收款
|
||||
* @param {number} transferId - 转账ID
|
||||
*/
|
||||
const confirmReceived = async (transferId) => {
|
||||
try {
|
||||
@@ -717,8 +724,11 @@ const confirmReceived = async (transferId) => {
|
||||
// 设置当前转账信息并显示凭证对话框
|
||||
currentTransfer.value = transfer
|
||||
showVoucherDialog.value = true
|
||||
|
||||
// 直接调用确认收款方法
|
||||
await doConfirmReceived()
|
||||
} catch (error) {
|
||||
console.error('显示转账凭证失败:', error)
|
||||
console.error('确认收款失败:', error)
|
||||
ElMessage.error('操作失败')
|
||||
}
|
||||
}
|
||||
@@ -739,13 +749,13 @@ const doConfirmReceived = async () => {
|
||||
)
|
||||
|
||||
confirmLoading.value = true
|
||||
const response = await transferAPI.confirmReceived(currentTransfer.value.id)
|
||||
const response = await api.post(`/transfers/confirm-received/${currentTransfer.value.id}`)
|
||||
|
||||
if (response.data.success) {
|
||||
ElMessage.success(response.data.message)
|
||||
showVoucherDialog.value = false
|
||||
loadTransferHistory()
|
||||
loadAccountInfo()
|
||||
loadPendingTransfers() // 重新加载待确认转账
|
||||
}
|
||||
} catch (error) {
|
||||
if (error !== 'cancel') {
|
||||
|
||||
@@ -14,11 +14,11 @@ export default defineConfig({
|
||||
port: 5173,
|
||||
proxy: {
|
||||
'/api': {
|
||||
target: 'http://114.55.111.44:3000',
|
||||
target: 'http://127.0.0.1:3001',
|
||||
changeOrigin: true
|
||||
},
|
||||
'/uploads': {
|
||||
target: 'http://114.55.111.44:3000',
|
||||
target: 'http://127.0.0.1:3001',
|
||||
changeOrigin: true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user