Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
zyjj2025
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qd01
zyjj2025
Commits
fe4d3713
Commit
fe4d3713
authored
Feb 02, 2025
by
qd01
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
开放提现
parent
125778df
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
618 additions
and
329 deletions
+618
-329
login.vue
app/pages/login.vue
+78
-62
index.vue
app/pages/my/index.vue
+135
-87
index.vue
app/pages/sqhz/index.vue
+250
-68
withdraw.vue
app/pages/user/withdraw.vue
+62
-36
zjmx.vue
app/pages/user/zjmx.vue
+33
-28
xieyi.png
app/static/common/xieyi.png
+0
-0
nuxt.config.ts
nuxt.config.ts
+48
-48
pnpm-lock.yaml
pnpm-lock.yaml
+12
-0
No files found.
app/pages/login.vue
View file @
fe4d3713
<
template
>
<div
class=
"auth-container"
>
<var-card
style=
"flex: 0;"
class=
"login-form"
>
<var-tabs
v-model:active=
"active"
>
<var-tab
style=
"font-size: 18px;"
>
登录
</var-tab>
<var-tab
style=
"font-size: 18px;"
>
注册
</var-tab>
</var-tabs>
<var-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
>
<var-input
v-model=
"formData.username"
placeholder=
"手机号"
:rules=
"[rules.username]"
/>
<var-input
v-model=
"formData.password"
type=
"password"
placeholder=
"密码"
:rules=
"[rules.password]"
/>
<template
v-if=
"active"
>
<var-input
v-model=
"formData.confirmPassword"
type=
"password"
placeholder=
"确认密码"
:rules=
"[rules.confirmPassword]"
/>
<var-input
v-model=
"formData.inviteCode"
placeholder=
"邀请码"
:rules=
"[rules.inviteCode]"
/>
</
template
>
<var-button
class=
"btn"
block
type=
"primary"
:loading=
"loading"
:style=
"{ marginTop: active ? '59px' : '180px' }"
v-debounce=
"() => handleSubmit()"
size=
"large"
>
{{ active ? '立即注册' : '登录' }}
</var-button>
</var-form>
</var-card>
<div
class=
"warp"
>
<div
class=
"warp-item"
@
click=
"navigateTo(kfUrl, { external: true })"
>
<img
src=
"/static/common/3.png"
alt=
""
>
<span>
联系客服
</span>
</div>
<div
class=
"warp-item"
@
click=
"navigateTo(appdownload, { external: true })"
>
<img
src=
"/static/common/4.png"
alt=
""
>
<span>
APP下载
</span>
</div>
</div>
</div>
</template>
<
script
setup
lang=
"ts"
>
import
{
ref
,
reactive
}
from
'
vue
'
import
{
validatePhone
,
validatePassword
}
from
'
@/utils/validate
'
import
{
useProseStore
}
from
'
@/stores/prose
'
import
{
encrypt
}
from
'
@/utils/encrypt
'
import
{
post
}
from
'
@/utils/request
'
import
{
validatePassword
,
validatePhone
}
from
'
@/utils/validate
'
import
{
useDebounceFn
}
from
'
@vueuse/core
'
import
{
useProseStore
}
from
'
@/stores/prose
'
import
{
reactive
,
ref
}
from
'
vue
'
const
proseStore
=
useProseStore
()
proseStore
.
clearProse
()
definePageMeta
({
...
...
@@ -48,8 +13,9 @@ definePageMeta({
})
const
appdownload
=
ref
(
'
https://download.1yfang.com
'
)
const
kfUrl
=
ref
(
''
)
const
getapkversion
=
async
()
=>
{
async
function
getapkversion
()
{
const
res
=
await
get
(
'
/system/config/configKey/mous/apk_version
'
,
{})
console
.
log
(
res
)
kfUrl
.
value
=
res
.
msg
}
getapkversion
()
...
...
@@ -73,33 +39,33 @@ const rules = {
username
:
{
validator
:
(
value
:
string
)
=>
validatePhone
(
value
),
message
:
'
请输入正确的手机号
'
,
trigger
:
'
onChange
'
trigger
:
'
onChange
'
,
},
password
:
{
validator
:
(
value
:
string
)
=>
validatePassword
(
value
),
message
:
'
密码格式有误(5-20位字母数字下划线)
'
,
trigger
:
'
onChange
'
trigger
:
'
onChange
'
,
},
confirmPassword
:
{
validator
:
(
value
:
string
)
=>
value
===
formData
.
password
,
message
:
'
两次输入的密码不一致
'
,
trigger
:
'
onChange
'
trigger
:
'
onChange
'
,
},
inviteCode
:
{
required
:
active
.
value
,
message
:
'
请输入邀请码
'
,
trigger
:
'
onChange
'
}
trigger
:
'
onChange
'
,
}
,
}
// 登录处理
const
handleLogin
=
async
()
=>
{
async
function
handleLogin
()
{
try
{
loading
.
value
=
true
const
res
=
await
post
(
'
/login
'
,
{
username
:
formData
.
username
,
password
:
formData
.
password
,
type
:
'
app
'
type
:
'
app
'
,
})
if
(
res
.
code
===
200
)
{
...
...
@@ -110,18 +76,21 @@ const handleLogin = async () => {
setTimeout
(()
=>
{
navigateTo
(
'
/
'
)
},
1000
)
}
else
{
}
else
{
showFailToast
(
res
.
msg
||
'
登录失败
'
)
}
}
catch
(
error
)
{
}
catch
(
error
)
{
showFailToast
(
'
登录失败,请稍后重试
'
)
}
finally
{
}
finally
{
loading
.
value
=
false
}
}
// 注册处理
const
handleRegister
=
async
()
=>
{
async
function
handleRegister
()
{
try
{
loading
.
value
=
true
const
res
=
await
post
(
'
/register
'
,
{
...
...
@@ -129,7 +98,7 @@ const handleRegister = async () => {
password
:
encrypt
(
formData
.
password
),
code
:
''
,
type
:
encrypt
(
'
app
'
),
yqm
:
formData
.
inviteCode
yqm
:
formData
.
inviteCode
,
})
if
(
res
.
code
===
200
)
{
...
...
@@ -140,33 +109,81 @@ const handleRegister = async () => {
setTimeout
(()
=>
{
navigateTo
(
'
/
'
)
},
1000
)
}
else
{
}
else
{
showFailToast
(
res
.
msg
||
'
注册失败
'
)
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'
Register error:
'
,
error
)
showFailToast
(
'
注册失败,请稍后重试
'
)
}
finally
{
}
finally
{
loading
.
value
=
false
}
}
// 表单提交(带防抖)
const
handleSubmit
=
useDebounceFn
(
async
()
=>
{
if
(
!
form
.
value
)
return
if
(
!
form
.
value
)
return
const
valid
=
await
form
.
value
.
validate
()
if
(
!
valid
)
return
if
(
!
valid
)
return
if
(
active
.
value
)
{
await
handleRegister
()
}
else
{
}
else
{
await
handleLogin
()
}
},
1000
)
</
script
>
<
template
>
<div
class=
"auth-container"
>
<var-card
style=
"flex: 0;"
class=
"login-form"
>
<var-tabs
v-model:active=
"active"
>
<var-tab
style=
"font-size: 18px;"
>
登录
</var-tab>
<var-tab
style=
"font-size: 18px;"
>
注册
</var-tab>
</var-tabs>
<var-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
>
<var-input
v-model=
"formData.username"
placeholder=
"手机号"
:rules=
"[rules.username]"
/>
<var-input
v-model=
"formData.password"
type=
"password"
placeholder=
"密码"
:rules=
"[rules.password]"
/>
<template
v-if=
"active"
>
<var-input
v-model=
"formData.confirmPassword"
type=
"password"
placeholder=
"确认密码"
:rules=
"[rules.confirmPassword]"
/>
<var-input
v-model=
"formData.inviteCode"
placeholder=
"邀请码"
:rules=
"[rules.inviteCode]"
/>
</
template
>
<var-button
v-debounce=
"() => handleSubmit()"
class=
"btn"
block
type=
"primary"
:loading=
"loading"
:style=
"{ marginTop: active ? '59px' : '180px' }"
size=
"large"
>
{{ active ? '立即注册' : '登录' }}
</var-button>
</var-form>
</var-card>
<div
class=
"warp"
>
<div
class=
"warp-item"
@
click=
"navigateTo(kfUrl, { external: true })"
>
<img
src=
"/static/common/3.png"
alt=
""
>
<span>
联系客服
</span>
</div>
<div
class=
"warp-item"
@
click=
"navigateTo(appdownload, { external: true })"
>
<img
src=
"/static/common/4.png"
alt=
""
>
<span>
APP下载
</span>
</div>
</div>
</div>
</template>
<
style
lang=
"scss"
scoped
>
.auth-container
{
...
...
@@ -185,7 +202,6 @@ const handleSubmit = useDebounceFn(async () => {
background-color
:
#e62129
;
}
.warp
{
display
:
flex
;
justify-content
:
space-between
;
...
...
app/pages/my/index.vue
View file @
fe4d3713
<
script
setup
>
import
{
ref
,
onMounted
}
from
'
vue
'
import
{
get
}
from
"
@/utils/request
"
import
{
get
}
from
'
@/utils/request
'
import
{
onMounted
,
ref
}
from
'
vue
'
import
png4
from
'
~/static/pages/my/4.png
'
import
png5
from
'
~/static/pages/my/5.png
'
import
png6
from
'
~/static/pages/my/6.png
'
...
...
@@ -16,23 +16,23 @@ const MY_ICONS = {
house
:
png8
,
service
:
png9
,
app
:
png10
,
group
:
png11
group
:
png11
,
}
const
MENU_ITEMS
=
[
{
name
:
"
实名认证
"
,
icon
:
MY_ICONS
.
withdraw
,
path
:
"
/user/shiming
"
},
{
name
:
"
提现记录
"
,
icon
:
MY_ICONS
.
withdraw
,
path
:
"
/user/withdraw
"
},
{
name
:
"
我的产品
"
,
icon
:
MY_ICONS
.
products
,
path
:
"
/user/product
"
},
{
name
:
"
房产兑换记录
"
,
icon
:
MY_ICONS
.
house
,
path
:
"
/user/house
"
},
{
name
:
"
在线客服
"
,
icon
:
MY_ICONS
.
service
,
path
:
"
/my
"
},
{
name
:
"
APP下载
"
,
icon
:
MY_ICONS
.
app
,
path
:
"
/user
"
},
{
name
:
"
官方群聊
"
,
icon
:
MY_ICONS
.
group
,
path
:
"
/user/group
"
}
{
name
:
'
实名认证
'
,
icon
:
MY_ICONS
.
withdraw
,
path
:
'
/user/shiming
'
},
{
name
:
'
提现记录
'
,
icon
:
MY_ICONS
.
withdraw
,
path
:
'
/user/withdraw
'
},
{
name
:
'
我的产品
'
,
icon
:
MY_ICONS
.
products
,
path
:
'
/user/product
'
},
{
name
:
'
房产兑换记录
'
,
icon
:
MY_ICONS
.
house
,
path
:
'
/user/house
'
},
{
name
:
'
在线客服
'
,
icon
:
MY_ICONS
.
service
,
path
:
'
/my
'
},
{
name
:
'
APP下载
'
,
icon
:
MY_ICONS
.
app
,
path
:
'
/user
'
},
{
name
:
'
官方群聊
'
,
icon
:
MY_ICONS
.
group
,
path
:
'
/user/group
'
},
]
definePageMeta
({
layout
:
"
main
"
,
title
:
"
我的
"
,
name
:
"
my
"
,
layout
:
'
main
'
,
title
:
'
我的
'
,
name
:
'
my
'
,
keepalive
:
true
,
})
...
...
@@ -41,74 +41,78 @@ const userData = ref({})
const
loading
=
ref
(
true
)
const
activeCard
=
ref
(
null
)
const
kfUrl
=
ref
(
''
)
const
getapkversion
=
async
()
=>
{
async
function
getapkversion
()
{
const
res
=
await
get
(
'
/system/config/configKey/mous/apk_version
'
,
{})
kfUrl
.
value
=
res
.
msg
}
getapkversion
()
// 处理点击事件
const
handleClick
=
(
item
)
=>
{
function
handleClick
(
item
)
{
activeCard
.
value
=
item
.
name
if
(
item
.
name
===
'
房产兑换记录
'
)
{
showToast
(
'
邀约超过100人送140平房产一套,达到目标者找在线客服登记领取
'
)
return
}
else
if
(
item
.
name
===
'
在线客服
'
)
{
}
else
if
(
item
.
name
===
'
在线客服
'
)
{
navigateTo
(
kfUrl
.
value
,
{
external
:
true
})
return
}
else
if
(
item
.
name
===
'
APP下载
'
)
{
}
else
if
(
item
.
name
===
'
APP下载
'
)
{
navigateTo
(
'
https://download.1yfang.com
'
,
{
external
:
true
})
return
}
else
{
}
else
{
setTimeout
(()
=>
{
navigateTo
(
item
.
path
)
},
150
)
}
}
const
handleClick1
=
(
type
)
=>
{
const
url
=
type
===
1
?
"
/my/mybankCard
"
:
"
/my/myteam
"
function
handleClick1
(
type
)
{
const
url
=
type
===
1
?
'
/my/mybankCard
'
:
'
/my/myteam
'
navigateTo
(
url
)
}
const
gotx
=
(
balance
,
type
,
title
)
=>
{
function
gotx
(
balance
,
type
,
title
)
{
if
(
balance
&&
balance
>
0
)
{
if
(
userData
.
value
.
extend2
!=
6
)
{
if
(
userData
.
value
.
extend2
!=
7
)
{
showFailToast
(
'
请先申请化债/扶贫
'
)
setTimeout
(()
=>
{
navigateTo
(
'
/sqhz
'
)
},
2000
)
}
else
{
}
else
{
navigateTo
(
`/user/tixian?balance=
${
balance
}
&type=
${
type
}
&title=
${
title
}
`
)
}
}
else
{
}
else
{
showFailToast
(
'
余额不足
'
)
}
}
const
gomx
=
(
tab
)
=>
{
function
gomx
(
tab
)
{
navigateTo
(
`/user/zjmx?tab=
${
tab
}
`
)
}
const
fetchData
=
async
()
=>
{
async
function
fetchData
()
{
try
{
loading
.
value
=
true
const
res
=
await
get
(
"
/system/user/
"
)
const
res
=
await
get
(
'
/system/user/
'
)
userData
.
value
=
res
}
catch
(
error
)
{
console
.
error
(
"
请求失败:
"
,
error
)
}
catch
(
error
)
{
console
.
error
(
'
请求失败:
'
,
error
)
showFailToast
(
'
获取用户信息失败
'
)
}
finally
{
}
finally
{
loading
.
value
=
false
}
}
const
logout
=
()
=>
{
function
logout
()
{
showConfirmDialog
({
title
:
"
退出确认
"
,
content
:
"
您确定要退出登录吗?
"
,
title
:
'
退出确认
'
,
content
:
'
您确定要退出登录吗?
'
,
}).
then
(()
=>
{
localStorage
.
clear
()
navigateTo
(
'
/login
'
)
})
;
})
}
fetchData
()
...
...
@@ -119,15 +123,15 @@ fetchData()
<var-loading
description=
"加载中..."
:loading=
"loading"
>
<div
class=
"content-wrapper"
>
<!-- 用户信息卡片 -->
<div
class=
"card user-card"
v-ripple
>
<div
v-ripple
class=
"card user-card"
>
<div
class=
"leftbox"
>
<div
class=
"avatar"
>
<img
src=
"/static/pages/my/1.png"
alt=
"avatar"
/
>
<img
src=
"/static/pages/my/1.png"
alt=
"avatar"
>
</div>
<div
class=
"info"
>
<div
class=
"nickname"
>
<span>
{{
userData
?.
data
===
"
true
"
?
userData
?.
nickName
:
"
用户名
"
}}
</span>
<span
class=
"verify-tag"
:class=
"
{
'verified'
: userData?.data === 'true' }">
<span
class=
"verify-tag"
:class=
"
{
verified
: userData?.data === 'true' }">
{{
userData
?.
data
===
"
true
"
?
"
已实名
"
:
"
未实名
"
}}
</span>
</div>
...
...
@@ -140,89 +144,133 @@ fetchData()
<
/div
>
<
/div
>
<
div
class
=
"
rightbox
"
@
click
=
"
navigateTo('/user/singIn')
"
v
-
ripple
>
<
img
src
=
"
/static/pages/my/2.png
"
alt
=
"
sign
"
/
>
<
div
v
-
ripple
class
=
"
rightbox
"
@
click
=
"
navigateTo('/user/singIn')
"
>
<
img
src
=
"
/static/pages/my/2.png
"
alt
=
"
sign
"
>
<
span
>
每日签到
<
/span
>
<
/div
>
<
/div
>
<!--
资产卡片
-->
<
div
class
=
"
card asset-card
"
>
<
div
class
=
"
title
"
>
我的资产
<
/div
>
<
div
class
=
"
title
"
>
我的资产
<
/div
>
<
var
-
divider
/>
<
div
class
=
"
assets-grid
"
>
<
div
class
=
"
asset-item
"
v
-
ripple
>
<
div
class
=
"
amount
"
>
{{
userData
.
q0
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
信用分
<
/div
>
<
div
v
-
ripple
class
=
"
asset-item
"
>
<
div
class
=
"
amount
"
>
{{
userData
.
q0
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
信用分
<
/div
>
<
div
class
=
"
actions
"
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(0)
"
>
明细
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(0)
"
>
明细
<
/button
>
<
/div
>
<
/div
>
<
var
-
divider
vertical
margin
=
"
0 0
"
/>
<
div
class
=
"
asset-item
"
v
-
ripple
>
<
div
class
=
"
amount
"
>
¥
{{
userData
.
q1
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
生活补贴
<
/div
>
<
div
v
-
ripple
class
=
"
asset-item
"
>
<
div
class
=
"
amount
"
>
¥
{{
userData
.
q1
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
生活补贴
<
/div
>
<
div
class
=
"
actions
"
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q1 || 0, 1, '生活补贴')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(1)
"
>
明细
<
/button
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q1 || 0, 1, '生活补贴')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(1)
"
>
明细
<
/button
>
<
/div
>
<
/div
>
<
var
-
divider
vertical
margin
=
"
0 0
"
/>
<
div
class
=
"
asset-item
"
v
-
ripple
>
<
div
class
=
"
amount
"
>
{{
userData
.
q2
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
产品收益
<
/div
>
<
div
v
-
ripple
class
=
"
asset-item
"
>
<
div
class
=
"
amount
"
>
{{
userData
.
q2
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
产品收益
<
/div
>
<
div
class
=
"
actions
"
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q2 || 0, 2, '产品收益')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(2)
"
>
明细
<
/button
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q2 || 0, 2, '产品收益')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(2)
"
>
明细
<
/button
>
<
/div
>
<
/div
>
<
var
-
divider
vertical
margin
=
"
0 0
"
/>
<
div
class
=
"
asset-item
"
v
-
ripple
>
<
div
class
=
"
amount
"
>
{{
userData
.
q5
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
公司分红
<
/div
>
<
div
v
-
ripple
class
=
"
asset-item
"
>
<
div
class
=
"
amount
"
>
{{
userData
.
q5
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
公司分红
<
/div
>
<
div
class
=
"
actions
"
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q5 || 0, 5, '公司分红')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(2)
"
>
明细
<
/button
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q5 || 0, 5, '公司分红')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(2)
"
>
明细
<
/button
>
<
/div
>
<
/div
>
<
/div
>
<
var
-
divider
/>
<
div
class
=
"
assets-grid
"
>
<
div
class
=
"
asset-item
"
v
-
ripple
>
<
div
class
=
"
amount
"
>
{{
userData
.
q6
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
分销奖励
<
/div
>
<
div
v
-
ripple
class
=
"
asset-item
"
>
<
div
class
=
"
amount
"
>
{{
userData
.
q6
||
0
}}
<
/div
>
<
div
class
=
"
label
"
>
分销奖励
<
/div
>
<
div
class
=
"
actions
"
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q6 || 0, 6, '分销奖励')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(6)
"
>
明细
<
/button
>
<
button
class
=
"
action-btn primary
"
@
click
=
"
gotx(userData.q6 || 0, 6, '分销奖励')
"
>
提现
<
/button
>
<
button
class
=
"
action-btn secondary
"
@
click
=
"
gomx(6)
"
>
明细
<
/button
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<!--
广告横幅
-->
<
div
class
=
"
banner
"
v
-
ripple
@
click
=
"
navigateTo('/user/invite')
"
>
<
img
src
=
"
/static/pages/my/3.png
"
alt
=
"
banner
"
/
>
<
div
v
-
ripple
class
=
"
banner
"
@
click
=
"
navigateTo('/user/invite')
"
>
<
img
src
=
"
/static/pages/my/3.png
"
alt
=
"
banner
"
>
<
/div
>
<!--
快捷操作
-->
<
div
class
=
"
quick-actions
"
>
<
div
v
-
for
=
"
(action, index) in [
<
div
v
-
for
=
"
(action, index) in [
{ icon: png4, title: '绑定银行卡', type: 1
}
,
{ icon: png5, title: '我的团队', type: 2
}
]
"
:
key
=
"
index
"
class
=
"
action-card
"
v
-
ripple
@
click
=
"
handleClick1(action.type)
"
>
<
img
:
src
=
"
action.icon
"
:
alt
=
"
action.title
"
/>
{ icon: png5, title: '我的团队', type: 2
}
,
]
"
:
key
=
"
index
"
v
-
ripple
class
=
"
action-card
"
@
click
=
"
handleClick1(action.type)
"
>
<
img
:
src
=
"
action.icon
"
:
alt
=
"
action.title
"
>
<
span
>
{{
action
.
title
}}
<
/span
>
<
/div
>
<
/div
>
<!--
菜单列表
-->
<
var
-
paper
:
elevation
=
"
2
"
class
=
"
menu-list
"
>
<
var
-
cell
v
-
for
=
"
item in items
"
:
key
=
"
item.name
"
v
-
ripple
:
class
=
"
{ 'menu-item-active': activeCard === item.name
}
"
@
click
=
"
handleClick(item)
"
>
<
var
-
cell
v
-
for
=
"
item in items
"
:
key
=
"
item.name
"
v
-
ripple
:
class
=
"
{ 'menu-item-active': activeCard === item.name
}
"
@
click
=
"
handleClick(item)
"
>
<
template
#
default
>
<
div
class
=
"
menu-item
"
>
<
img
:
src
=
"
item.icon
"
:
alt
=
"
item.name
"
/
>
<
img
:
src
=
"
item.icon
"
:
alt
=
"
item.name
"
>
<
span
>
{{
item
.
name
}}
<
/span
>
<
/div
>
<
/template
>
...
...
@@ -233,7 +281,7 @@ fetchData()
<
/var-paper
>
<!--
退出按钮
-->
<
var
-
button
class
=
"
logout-btn
"
size
=
"
large
"
block
type
=
"
danger
"
v
-
ripple
@
click
=
"
logout
"
>
<
var
-
button
v
-
ripple
class
=
"
logout-btn
"
size
=
"
large
"
block
type
=
"
danger
"
@
click
=
"
logout
"
>
退出登录
<
/var-button
>
<
/div
>
...
...
@@ -261,7 +309,9 @@ fetchData()
border
-
radius
:
12
px
;
padding
:
10
px
;
box
-
shadow
:
0
2
px
12
px
rgba
(
0
,
0
,
0
,
0.08
);
transition
:
transform
0.3
s
ease
,
box
-
shadow
0.3
s
ease
;
transition
:
transform
0.3
s
ease
,
box
-
shadow
0.3
s
ease
;
&
:
hover
{
transform
:
translateY
(
-
2
px
);
...
...
@@ -307,7 +357,7 @@ fetchData()
&
.
verified
{
background
:
rgba
(
76
,
175
,
80
,
0.1
);
color
:
#
4
CAF
50
;
color
:
#
4
caf
50
;
}
}
}
...
...
@@ -364,9 +414,9 @@ fetchData()
width
:
25
%
;
.
amount
{
font
-
size
:
1
8
px
;
font
-
size
:
1
4
px
;
font
-
weight
:
600
;
color
:
#
2196
F
3
;
color
:
#
2196
f
3
;
margin
-
bottom
:
4
px
;
}
...
...
@@ -392,13 +442,11 @@ fetchData()
&
.
primary
{
background
:
#
e61d4c
;
color
:
#
fff
;
}
&
.
secondary
{
background
:
#
30658
e
;
color
:
#
fff
;
}
}
}
...
...
app/pages/sqhz/index.vue
View file @
fe4d3713
<
script
setup
>
import
{
get
,
post
,
del
}
from
'
@/utils/request
'
import
{
del
,
get
,
post
}
from
'
@/utils/request
'
const
loading
=
ref
(
false
)
const
isImageLoaded
=
ref
(
false
)
definePageMeta
({
layout
:
'
main
'
,
title
:
'
申请化债
'
,
...
...
@@ -10,8 +12,8 @@ const extend2 = ref(1)
const
a20
=
ref
(
'
1
'
)
const
usertype
=
ref
({})
const
userinfo
=
ref
({})
const
getUserInfo
=
async
()
=>
{
const
res
=
await
get
(
"
/system/user/
"
)
async
function
getUserInfo
()
{
const
res
=
await
get
(
'
/system/user/
'
)
extend2
.
value
=
res
.
extend2
||
1
userinfo
.
value
=
res
if
(
res
.
data
!=
'
true
'
)
{
...
...
@@ -19,7 +21,7 @@ const getUserInfo = async () => {
window
.
history
.
back
()
}
if
(
extend2
.
value
==
4
)
{
get
(
"
/yw2/getByUser
"
,
{}).
then
(
res
=>
{
get
(
'
/yw2/getByUser
'
,
{}).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
formData
.
value
=
res
.
data
}
...
...
@@ -38,16 +40,17 @@ function handleSubmit() {
loading
.
value
=
true
formData
.
value
.
a5
=
'
5
'
post
(
"
/yw2/add
"
,
formData
.
value
)
.
then
(
res
=>
{
post
(
'
/yw2/add
'
,
formData
.
value
)
.
then
(
(
res
)
=>
{
if
(
res
?.
code
===
200
)
{
showSuccessToast
(
'
申请成功
'
)
getUserInfo
()
}
else
{
}
else
{
showFailToast
(
res
?.
msg
??
'
申请失败
'
)
}
})
.
catch
(
error
=>
{
.
catch
(
(
error
)
=>
{
console
.
error
(
'
提交申请失败:
'
,
error
)
showFailToast
(
'
提交失败,请重试
'
)
})
...
...
@@ -57,14 +60,14 @@ function handleSubmit() {
}
function
searchCredit
()
{
if
(
userinfo
.
value
.
data
!=
'
true
'
)
{
showFailToast
(
"
请先进行实名认证
"
)
showFailToast
(
'
请先进行实名认证
'
)
setTimeout
(()
=>
{
},
2000
)
;
},
2000
)
return
false
}
if
(
extend2
.
value
==
1
)
{
post
(
"
/yw1/add
"
,
{
a20
:
1
}).
then
(
res
=>
{
post
(
'
/yw1/add
'
,
{
a20
:
1
}).
then
((
res
)
=>
{
showToast
(
'
查询已提交,请等待查询结果
'
)
getUserInfo
()
})
...
...
@@ -75,7 +78,7 @@ function searchCredit1() {
navigateTo
(
'
/sqhz/not
'
)
return
}
post
(
"
/yw2/add
"
,
{
a5
:
4
,
a6
:
userinfo
.
value
.
nickName
,
a7
:
userinfo
.
value
.
identityId
,
a20
:
1
}).
then
(
res
=>
{
post
(
'
/yw2/add
'
,
{
a5
:
4
,
a6
:
userinfo
.
value
.
nickName
,
a7
:
userinfo
.
value
.
identityId
,
a20
:
1
}).
then
((
res
)
=>
{
showSuccessToast
(
'
申请成功
'
)
getUserInfo
()
})
...
...
@@ -88,7 +91,7 @@ function searchCredit2() {
navigateTo
(
'
/sqhz/not1
'
)
}
function
byUserAndTypeOne
()
{
get
(
"
/yw2/byUserAndTypeOne
"
,
{}).
then
(
res
=>
{
get
(
'
/yw2/byUserAndTypeOne
'
,
{}).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
a20
.
value
=
res
.
data
.
a20
usertype
.
value
=
res
.
data
...
...
@@ -96,14 +99,41 @@ function byUserAndTypeOne() {
}
})
}
const
xieyi
=
ref
(
false
)
function
jihuohu
()
{
showFailToast
(
'
请联系客服激活扶贫化债专用卡,激活此卡可直接将余额提现到本人银行卡
'
)
if
(
extend2
.
value
==
6
||
extend2
.
value
==
7
)
{
xieyi
.
value
=
true
}
}
function
qianshu
()
{
if
(
extend2
.
value
==
6
)
{
post
(
'
/yw2/add
'
,
{
a5
:
7
,
a2
:
usertype
.
value
.
a2
}).
then
(()
=>
{
xieyi
.
value
=
false
showSuccessToast
(
'
激活成功
'
)
setTimeout
(()
=>
{
getUserInfo
()
},
100
)
})
}
}
function
gotx
(
balance
,
type
,
title
)
{
if
(
balance
&&
balance
>
0
)
{
navigateTo
(
`/user/tixian?balance=
${
balance
}
&type=
${
type
}
&title=
${
title
}
`
)
}
else
{
showFailToast
(
'
余额不足
'
)
}
}
function
tixian
()
{
if
(
extend2
.
value
==
7
)
{
gotx
(
userinfo
.
value
.
q4
,
4
,
'
扶贫化债专用银行卡
'
)
}
else
{
showFailToast
(
'
请先激活扶贫化债专用银行卡
'
)
}
}
function
deleteFormData
()
{
del
(
`/yw2/remove/
${
formData
.
value
.
a2
}
`
,
{}).
then
(
res
=>
{
del
(
`/yw2/remove/
${
formData
.
value
.
a2
}
`
,
{}).
then
(
()
=>
{
getUserInfo
()
})
}
...
...
@@ -112,10 +142,29 @@ function formatBankCardNumber(cardNumber) {
return
''
}
// 移除非数字字符
const
cleaned
=
cardNumber
.
replace
(
/
\D
/g
,
''
);
const
cardParts
=
cleaned
.
match
(
/.
{1,4}
/g
)
||
[];
const
formattedParts
=
cardParts
.
map
(
part
=>
`<view style='letter-spacing: 2px'>
${
part
}
</view>`
).
join
(
'
'
);
return
formattedParts
;
const
cleaned
=
cardNumber
.
replace
(
/
\D
/g
,
''
)
const
cardParts
=
cleaned
.
match
(
/.
{1,4}
/g
)
||
[]
const
formattedParts
=
cardParts
.
map
(
part
=>
`<view style='letter-spacing: 2px'>
${
part
}
</view>`
).
join
(
'
'
)
return
formattedParts
}
function
getDate
()
{
if
(
usertype
.
value
.
f1
)
{
const
date
=
new
Date
(
usertype
.
value
.
f1
)
const
year
=
date
.
getFullYear
()
const
month
=
date
.
getMonth
()
+
1
<
10
?
`0
${
date
.
getMonth
()
+
1
}
`
:
date
.
getMonth
()
+
1
const
day
=
date
.
getDate
()
<
10
?
`0
${
date
.
getDate
()}
`
:
date
.
getDate
()
return
[
year
,
month
,
day
]
}
else
{
const
date
=
new
Date
()
const
year
=
date
.
getFullYear
()
const
month
=
date
.
getMonth
()
+
1
<
10
?
`0
${
date
.
getMonth
()
+
1
}
`
:
date
.
getMonth
()
+
1
const
day
=
date
.
getDate
()
<
10
?
`0
${
date
.
getDate
()}
`
:
date
.
getDate
()
return
[
year
,
month
,
day
]
}
}
function
imageLoaded
()
{
isImageLoaded
.
value
=
true
}
byUserAndTypeOne
()
getUserInfo
()
...
...
@@ -123,11 +172,43 @@ getUserInfo()
<
template
>
<div
class=
"container"
>
<div
class=
"extend21"
v-if=
"extend2 == 1 || extend2 == 2"
>
<var-popup
v-model:show=
"xieyi"
position=
"bottom"
>
<div
class=
"xieyi"
>
<img
src=
"/static/common/xieyi.png"
alt=
""
@
load=
"imageLoaded"
>
<template
v-if=
"isImageLoaded"
>
<span
class=
"name name1"
>
{{
userinfo
.
nickName
}}
</span>
<span
class=
"name name2"
>
{{
userinfo
.
identityId
}}
</span>
<span
class=
"name name3"
>
{{
userinfo
.
nickName
}}
</span>
<span
class=
"name name4"
>
{{
getDate
()[
0
]
}}
</span>
<span
class=
"name name5"
>
{{
getDate
()[
1
]
}}
</span>
<span
class=
"name name6"
>
{{
getDate
()[
2
]
}}
</span>
</
template
>
<var-button
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"qianshu"
>
我确定激活卡片,签署拨款协议
</var-button>
</div>
</var-popup>
<div
v-if=
"extend2 == 1 || extend2 == 2"
class=
"extend21"
>
<div
class=
"warpbox"
>
<img
src=
"/static/common/logo.png"
alt=
""
>
<div
class=
"title"
>
全国个人征信
</div>
<div
class=
"title"
style=
"margin-bottom: 20px;"
>
信用分查询中心
</div>
<div
class=
"title"
>
全国个人征信
</div>
<div
class=
"title"
style=
"margin-bottom: 20px;"
>
信用分查询中心
</div>
</div>
<var-form
scroll-to-error=
"start"
style=
"color: #fff;width: calc(100% - 80px);margin: 0 auto;"
>
<var-space
direction=
"column"
:size=
"[8, 0]"
>
...
...
@@ -136,15 +217,18 @@ getUserInfo()
<var-input
v-model=
"userinfo.q0"
readonly
placeholder=
"当前信用分"
/>
</var-space>
</var-form>
<div
class=
"tips"
style=
"margin: 20px 40px;text-indent: 2em;"
v-if=
"extend2 == 2"
>
您好,
{{
userinfo
.
nickName
<div
v-if=
"extend2 == 2"
class=
"tips"
style=
"margin: 20px 40px;text-indent: 2em;"
>
您好,{{ userinfo.nickName
}},身份证号:{{ userinfo.identityId }},
您的个人信用分正在查询当中,信用分查询完成,您可以申请化债,扶贫,10分钟左右即可查询完毕,请10分钟后再来查看您的信用分
</div>
<var-button
class=
"btn"
v-if=
"extend2 == 1"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit"
>
{{
extend2
==
1
?
'
点击查询
'
:
'
查询中
'
}}
您的个人信用分正在查询当中,信用分查询完成,您可以申请化债,扶贫,10分钟左右即可查询完毕,请10分钟后再来查看您的信用分
</div>
<var-button
v-if=
"extend2 == 1"
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit"
>
{{ extend2
== 1 ? '点击查询'
: '查询中' }}
</var-button>
</div>
<div
class=
"extend22"
v-if=
"extend2 == 3
"
>
<div
v-if=
"extend2 == 3"
class=
"extend22
"
>
<div
class=
"zhanwei"
>
<img
src=
"/static/common/111.png"
alt=
""
>
</div>
...
...
@@ -160,23 +244,44 @@ getUserInfo()
</var-space>
</var-form>
</div>
<var-button
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit1"
>
申请化债
</var-button>
<var-button
class=
"btn"
style=
"margin: 20px auto 0;"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit2"
>
我没有负债,需要申请扶贫
</var-button>
<var-button
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit1"
>
申请化债
</var-button>
<var-button
class=
"btn"
style=
"margin: 20px auto 0;"
size=
"large"
block
type=
"primary"
@
click=
"searchCredit2"
>
我没有负债,需要申请扶贫
</var-button>
<div
class=
"ctitle"
>
中央经济2025申请化债/扶贫规则
</div>
<div
class=
"tips"
style=
"margin: 20px 20px 0;"
>
一、申请条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1.在中央经济2025平台的信用分必须达到才可以申请化债或者扶贫(只能申请一项)
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.遵守中华人民共和国法律法规,具有良好的品行道德,自觉践行新时代人民精神;
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
3.执行国家化债/扶贫计划统筹衔接的相关要求。同层次国家化债/扶贫计划只能承担一项,不能逆层次申请。
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
二、申请人条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1. 中国合法公民
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.年满18周岁
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*此申请表格填写完成后,直接上传至中央财政扶贫专项系统,请认真检查是否填写正确完整,提交后无法更改
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*请勿盗用他人资料,违法者将依法追究刑事责任
</div>
</div>
<div
class=
"extend22 extend222 "
v-if=
"extend2 == 4"
>
<div
class=
"tips"
style=
"margin: 20px 20px 0;"
>
一、申请条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1.在中央经济2025平台的信用分必须达到才可以申请化债或者扶贫(只能申请一项)
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.遵守中华人民共和国法律法规,具有良好的品行道德,自觉践行新时代人民精神;
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
3.执行国家化债/扶贫计划统筹衔接的相关要求。同层次国家化债/扶贫计划只能承担一项,不能逆层次申请。
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
二、申请人条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1. 中国合法公民
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.年满18周岁
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*此申请表格填写完成后,直接上传至中央财政扶贫专项系统,请认真检查是否填写正确完整,提交后无法更改
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*请勿盗用他人资料,违法者将依法追究刑事责任
</div>
</div>
<div
v-if=
"extend2 == 4"
class=
"extend22 extend222"
>
<div
class=
"card"
>
<div
class=
"title"
>
申请化债信息
...
...
@@ -186,13 +291,13 @@ getUserInfo()
<var-input
v-model=
"formData.a6"
readonly
placeholder=
"申请人姓名"
:rules=
"v => !!v || '申请人姓名不能为空'"
/>
<var-input
v-model=
"formData.a7"
readonly
placeholder=
"申请人身份证"
:rules=
"v => !!v || '申请人身份证不能为空'"
/>
<var-input
v-model=
"formData.a8"
placeholder=
"请输入负债原因"
:rules=
"v => !!v || '负债原因不能为空'"
/>
<var-select
placeholder=
"请选择负债金额"
:rules=
"v => !!v || '负债金额不能为空'"
v-model=
"formData.a4
"
>
<var-select
v-model=
"formData.a4"
placeholder=
"请选择负债金额"
:rules=
"v => !!v || '负债金额不能为空'
"
>
<var-option
label=
"1-100万"
/>
<var-option
label=
"100万-200万"
/>
<var-option
label=
"200万-300万"
/>
<var-option
label=
"300万-400万"
/>
</var-select>
<var-select
placeholder=
"家里是否有他人负债"
:rules=
"v => !!v || '是否有他人负债不能为空'"
v-model=
"formData.a9
"
>
<var-select
v-model=
"formData.a9"
placeholder=
"家里是否有他人负债"
:rules=
"v => !!v || '是否有他人负债不能为空'
"
>
<var-option
label=
"有"
/>
<var-option
label=
"无"
/>
</var-select>
...
...
@@ -203,28 +308,50 @@ getUserInfo()
<var-button
v-debounce=
"() => handleSubmit()"
size=
"large"
block
type=
"danger"
:loading=
"loading"
>
申请化债
</var-button>
<var-button
style=
"margin-top: 20px;"
v-debounce=
"() => deleteFormData()"
size=
"large"
block
type=
"success"
:loading=
"loading"
>
<var-button
v-debounce=
"() => deleteFormData()"
style=
"margin-top: 20px;"
size=
"large"
block
type=
"success"
:loading=
"loading"
>
返回
</var-button>
<div
class=
"ctitle"
>
中央经济2025申请化债/扶贫规则
</div>
<div
class=
"tips"
style=
"margin: 20px 20px 0;"
>
一、申请条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1.在中央经济2025平台的信用分必须达到才可以申请化债或者扶贫(只能申请一项)
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.遵守中华人民共和国法律法规,具有良好的品行道德,自觉践行新时代人民精神;
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
3.执行国家化债/扶贫计划统筹衔接的相关要求。同层次国家化债/扶贫计划只能承担一项,不能逆层次申请。
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
二、申请人条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1. 中国合法公民
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.年满18周岁
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*此申请表格填写完成后,直接上传至中央财政扶贫专项系统,请认真检查是否填写正确完整,提交后无法更改
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*请勿盗用他人资料,违法者将依法追究刑事责任
</div>
<div
class=
"tips"
style=
"margin: 20px 20px 0;"
>
一、申请条件
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1.在中央经济2025平台的信用分必须达到才可以申请化债或者扶贫(只能申请一项)
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.遵守中华人民共和国法律法规,具有良好的品行道德,自觉践行新时代人民精神;
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
3.执行国家化债/扶贫计划统筹衔接的相关要求。同层次国家化债/扶贫计划只能承担一项,不能逆层次申请。
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
二、申请人条件
</div>
<div
class=
"extend22"
v-if=
"extend2 == 5"
>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
1. 中国合法公民
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
2.年满18周岁
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*此申请表格填写完成后,直接上传至中央财政扶贫专项系统,请认真检查是否填写正确完整,提交后无法更改
</div>
<div
class=
"tips"
style=
"margin: 0 20px;"
>
*请勿盗用他人资料,违法者将依法追究刑事责任
</div>
</div>
</div>
<div
v-if=
"extend2 == 5"
class=
"extend22"
>
<div
class=
"card"
style=
"display: flex;flex-direction: column;align-items: center;padding-top: 100px;"
>
<var-icon
name=
"history"
size=
"100"
color=
"#029ae0"
/>
<div
class=
"title"
>
您的
{{
a20
==
1
?
'
征信申请
'
:
'
扶贫申请
'
}}
正在审核中,请耐心等待...
</div>
<div
class=
"title"
>
您的{{ a20 == 1 ? '征信申请' : '扶贫申请' }}正在审核中,请耐心等待...
</div>
<var-divider
/>
<var-form
scroll-to-error=
"start"
style=
"width: 100%;"
>
<var-space
direction=
"column"
:size=
"[8, 0]"
>
...
...
@@ -236,16 +363,19 @@ getUserInfo()
</var-form>
</div>
</div>
<div
class=
"extend22"
v-if=
"extend2 == 6
"
>
<div
v-if=
"extend2 == 6 || extend2 == 7"
class=
"extend22
"
>
<div
class=
"card"
>
<div
class=
"cardwarp"
>
<img
src=
"/static/common/2222.png"
alt=
""
style=
"margin-top: 80px;"
>
<div
class=
"cardnum"
v-html=
"userinfo.bankcard ?
formatBankCardNumber(userinfo.bankcard) :
''"
></div>
<div
class=
"cardnum"
v-html=
"userinfo.bankcard
? formatBankCardNumber(userinfo.bankcard)
: ''"
/>
</div>
<div
style=
"margin-top: 20px;display: flex;justify-content: center;align-items: center;font-size: 24px;font-weight: 700;"
>
style=
"margin-top: 20px;display: flex;justify-content: center;align-items: center;font-size: 18px;font-weight: 700;"
>
卡内余额:¥
<var-count-to
:to=
"userinfo.q4"
:precision=
"2"
style=
"font-size: 28px;font-weight: 700;"
>
<
template
#default
="{
value
}"
>
...
...
@@ -254,8 +384,15 @@ getUserInfo()
</var-count-to>
元
</div>
<div
class=
"btngroup"
style=
"display: flex;justify-content: space-between;align-items: center;"
>
<var-button
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"jihuohu"
>
激活领取此卡
</var-button>
<var-button
class=
"btn btn1"
size=
"large"
block
@
click=
"tixian"
>
提现
</var-button>
<var-button
v-if=
"extend2 == 6"
class=
"btn"
size=
"large"
block
type=
"primary"
@
click=
"jihuohu"
>
激活领取此卡
</var-button>
<var-button
v-if=
"extend2 == 7"
class=
"btn"
size=
"large"
block
type=
"danger"
>
已激活卡片,请提现
</var-button>
<var-button
class=
"btn1 btn"
size=
"large"
block
@
click=
"tixian"
>
提现
</var-button>
</div>
</div>
</div>
...
...
@@ -263,6 +400,55 @@ getUserInfo()
</template>
<
style
lang=
"scss"
scoped
>
.xieyi
{
position
:
relative
;
img
{
width
:
100%
;
height
:
500px
;
}
.name
{
display
:
inline-block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
background
:
#fff
;
font-size
:
10px
;
color
:
#000
;
}
.name1
{
top
:
107px
;
left
:
80px
;
}
.name2
{
top
:
107px
;
left
:
182px
;
}
.name3
{
top
:
354px
;
left
:
263px
;
}
.name4
{
top
:
425px
;
left
:
218px
;
}
.name5
{
top
:
425px
;
left
:
253px
;
}
.name6
{
top
:
425px
;
left
:
275px
;
}
}
.container
{
font-family
:
pingfang
;
min-height
:
100vh
;
...
...
@@ -288,7 +474,6 @@ getUserInfo()
img
{
width
:
50px
;
margin-bottom
:
20px
;
}
.title
{
...
...
@@ -314,8 +499,6 @@ getUserInfo()
font-size
:
26px
;
font-weight
:
700
;
}
}
.extend22
{
...
...
@@ -408,6 +591,5 @@ getUserInfo()
z-index
:
1
;
}
}
}
</
style
>
app/pages/user/withdraw.vue
View file @
fe4d3713
<
script
setup
>
import
{
ref
,
watch
,
}
from
'
vue
'
import
{
ref
,
watch
}
from
'
vue
'
import
{
post
}
from
'
~/utils/request
'
const
route
=
useRoute
()
definePageMeta
({
layout
:
"
default
"
,
title
:
"
提现记录
"
,
name
:
"
withdraw
"
,
layout
:
'
default
'
,
title
:
'
提现记录
'
,
name
:
'
withdraw
'
,
keepalive
:
true
,
})
;
})
// 响应式数据
const
list
=
ref
([])
...
...
@@ -22,15 +22,15 @@ const emptyTipsShow = ref(false)
// 下拉选项
const
range
=
ref
([
{
text
:
"
生活补贴
"
,
value
:
1
},
{
text
:
"
产品收益
"
,
value
:
2
},
{
text
:
'
生活补贴
'
,
value
:
1
},
{
text
:
'
产品收益
'
,
value
:
2
},
])
// 获取路由参数中的tab
const
active
=
ref
(
Number
(
route
.
query
.
tab
)
||
1
)
// 重置列表状态
const
resetList
=
()
=>
{
function
resetList
()
{
list
.
value
=
[]
pageNum
.
value
=
1
finished
.
value
=
false
...
...
@@ -43,11 +43,11 @@ watch(active, () => {
resetList
()
})
const
getList
=
async
()
=>
{
async
function
getList
()
{
try
{
const
data
=
{
withdrawType
:
active
.
value
,
beginDate
:
"
2025-01
"
beginDate
:
''
,
}
const
res
=
await
post
(
`/ops/withdraw/list?pageNum=
${
pageNum
.
value
}
&pageSize=
${
pageSize
.
value
}
`
,
data
)
if
(
res
.
code
===
200
)
{
...
...
@@ -55,64 +55,92 @@ const getList = async () => {
total
.
value
=
res
.
total
||
0
if
(
list
.
value
.
length
>=
total
.
value
)
{
finished
.
value
=
true
}
else
{
}
else
{
pageNum
.
value
++
}
if
(
list
.
value
.
length
>=
total
.
value
)
{
finished
.
value
=
true
}
}
else
{
}
else
{
showFailToast
(
res
.
msg
||
'
加载失败
'
)
finished
.
value
=
true
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'
获取列表失败:
'
,
error
)
showFailToast
(
'
加载失败,请重试
'
)
}
finally
{
}
finally
{
loading
.
value
=
false
}
}
// Tab 点击处理
const
handleClick
=
(
item
)
=>
{
if
(
active
.
value
==
item
.
value
)
return
function
handleClick
(
item
)
{
if
(
active
.
value
==
item
.
value
)
return
active
.
value
=
item
.
value
resetList
()
}
</
script
>
<
template
>
<div
class=
"wallet-detail"
>
<!-- Tabs -->
<var-tabs
v-model:active=
"active"
class=
"fixed-tabs"
>
<var-tab
:name=
"item.value"
v-for=
"item in range"
:key
=
"item.value"
@
click=
"handleClick(item)"
>
<var-tab
v-for=
"item in range"
:key=
"item.value"
:name
=
"item.value"
@
click=
"handleClick(item)"
>
{{
item
.
text
}}
</var-tab>
</var-tabs>
<!-- List -->
<van-list
class=
"list-container"
v-model:loading=
"loading"
:finished=
"finished"
finished-text=
"没有更多了"
@
load=
"getList"
>
<div
class=
"list"
v-for=
"(item, index) in list"
:key=
"index"
>
<van-list
v-model:loading=
"loading"
class=
"list-container"
:finished=
"finished"
finished-text=
"没有更多了"
@
load=
"getList"
>
<div
v-for=
"(item, index) in list"
:key=
"index"
class=
"list"
>
<div
class=
"left"
>
<div
class=
"title"
v-if=
"item.walletType == 1"
>
生活补贴
</div>
<div
class=
"title"
v-if=
"item.walletType == 2"
>
产品收益
</div>
<div
class=
"price"
>
+
{{
item
.
withdrawAmount
}}
元
</div>
<div
v-if=
"item.walletType == 1"
class=
"title"
>
生活补贴
</div>
<div
v-if=
"item.walletType == 2"
class=
"title"
>
产品收益
</div>
<div
class=
"price"
>
+
{{
item
.
withdrawAmount
}}
元
</div>
</div>
<div
class=
"left"
>
<div
class=
"title"
>
申请时间
</div>
<div
class=
"date"
>
{{
item
.
createTime
}}
</div>
<div
class=
"title"
>
申请时间
</div>
<div
class=
"date"
>
{{
item
.
createTime
}}
</div>
</div>
<div
class=
"left"
>
<div
class=
"title"
>
申请状态
</div>
<div
class=
"title"
>
申请状态
</div>
<div
class=
"date status"
>
<div
class=
"title"
v-if=
"item.status == 0"
>
待打款
</div>
<div
class=
"title"
v-if=
"item.status == 1"
>
资金校对中
</div>
<div
class=
"title success"
v-if=
"item.status == 2"
>
已到账,请查收
</div>
<div
class=
"title reject"
v-if=
"item.status == 3"
>
驳回
</div>
<div
class=
"title reject"
v-if=
"item.status == 4"
>
请先申请化债/扶贫后统一提现
</div>
<div
v-if=
"item.status == 0"
class=
"title"
>
待打款
</div>
<div
v-if=
"item.status == 1"
class=
"title"
>
资金校对中
</div>
<div
v-if=
"item.status == 2"
class=
"title success"
>
已到账,请查收
</div>
<div
v-if=
"item.status == 3"
class=
"title reject"
>
驳回
</div>
<div
v-if=
"item.status == 4"
class=
"title reject"
>
请先申请化债/扶贫后统一提现
</div>
</div>
</div>
<!--
<var-steps
:current=
"item.status"
dot
>
...
...
@@ -122,7 +150,6 @@ const handleClick = (item) => {
<var-step
v-if=
"item.status >= 3"
>
到账失败
</var-step>
</var-steps>
-->
</div>
</van-list>
</div>
</
template
>
...
...
@@ -147,7 +174,6 @@ const handleClick = (item) => {
background
:
#f5f6f8
;
}
.list
{
background
:
#fff
;
margin-bottom
:
10px
;
...
...
@@ -172,7 +198,7 @@ const handleClick = (item) => {
.date
{
font-size
:
12px
;
color
:
#
B2B2B
2
;
color
:
#
b2b2b
2
;
height
:
1
.5vh
;
line-height
:
1
.5vh
;
...
...
app/pages/user/zjmx.vue
View file @
fe4d3713
...
...
@@ -5,11 +5,11 @@ import { post } from '~/utils/request'
const
route
=
useRoute
()
definePageMeta
({
layout
:
"
default
"
,
title
:
"
资金明细
"
,
name
:
"
zjmx
"
,
layout
:
'
default
'
,
title
:
'
资金明细
'
,
name
:
'
zjmx
'
,
keepalive
:
true
,
})
;
})
// 响应式数据
const
list
=
ref
([])
...
...
@@ -22,18 +22,18 @@ const emptyTipsShow = ref(false)
// 下拉选项
const
range
=
ref
([
{
text
:
"
信用分
"
,
value
:
0
},
{
text
:
"
生活补贴
"
,
value
:
1
},
{
text
:
"
产品收益
"
,
value
:
2
},
{
text
:
"
公司分红
"
,
value
:
5
},
{
text
:
"
分销奖励
"
,
value
:
6
},
{
text
:
'
信用分
'
,
value
:
0
},
{
text
:
'
生活补贴
'
,
value
:
1
},
{
text
:
'
产品收益
'
,
value
:
2
},
{
text
:
'
公司分红
'
,
value
:
5
},
{
text
:
'
分销奖励
'
,
value
:
6
},
])
// 获取路由参数中的tab
const
active
=
ref
(
Number
(
route
.
query
.
tab
)
||
0
)
// 重置列表状态
const
resetList
=
()
=>
{
function
resetList
()
{
list
.
value
=
[]
pageNum
.
value
=
1
finished
.
value
=
false
...
...
@@ -44,18 +44,19 @@ const resetList = () => {
}
// Tab 点击处理
const
handleClick
=
(
item
)
=>
{
if
(
active
.
value
===
item
.
value
)
return
function
handleClick
(
item
)
{
if
(
active
.
value
===
item
.
value
)
return
active
.
value
=
item
.
value
resetList
()
}
const
getList
=
async
()
=>
{
async
function
getList
()
{
if
(
loading
.
value
)
{
// 添加loading检查,避免重复请求
try
{
const
data
=
{
balanceType
:
active
.
value
,
beginDate
:
"
2025-01
"
beginDate
:
''
,
}
const
res
=
await
post
(
`/ops/walletdetail/list?pageNum=
${
pageNum
.
value
}
&pageSize=
${
pageSize
.
value
}
`
,
{
...
data
,
...
...
@@ -65,17 +66,21 @@ const getList = async () => {
total
.
value
=
res
.
total
||
0
if
(
list
.
value
.
length
>=
total
.
value
)
{
finished
.
value
=
true
}
else
{
}
else
{
pageNum
.
value
++
}
}
else
{
}
else
{
showFailToast
(
res
.
msg
||
'
加载失败
'
)
finished
.
value
=
true
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'
获取列表失败:
'
,
error
)
showFailToast
(
'
加载失败,请重试
'
)
}
finally
{
}
finally
{
loading
.
value
=
false
}
}
...
...
@@ -98,8 +103,8 @@ onMounted(() => {
<!-- List -->
<van-list
class=
"list-container"
v-model:loading=
"loading"
class=
"list-container"
:finished=
"finished"
finished-text=
"没有更多了"
@
load=
"getList"
...
...
@@ -110,11 +115,11 @@ onMounted(() => {
<div
class=
"type-info"
>
<span
class=
"type-text"
>
{{
item
.
balanceType
==
0
?
'
信用分
'
:
item
.
balanceType
==
1
?
'
生活补贴
'
:
item
.
balanceType
==
2
?
'
产品收益
'
:
item
.
balanceType
==
5
?
'
公司分红
'
:
item
.
balanceType
==
6
?
'
分销奖励
'
:
''
item
.
balanceType
==
0
?
'
信用分
'
:
item
.
balanceType
==
1
?
'
生活补贴
'
:
item
.
balanceType
==
2
?
'
产品收益
'
:
item
.
balanceType
==
5
?
'
公司分红
'
:
item
.
balanceType
==
6
?
'
分销奖励
'
:
''
}}
</span>
</div>
...
...
app/static/common/xieyi.png
0 → 100644
View file @
fe4d3713
1.13 MB
nuxt.config.ts
View file @
fe4d3713
import
process
from
"
node:process
"
;
import
{
appDescription
}
from
"
./app/constants/index
"
;
import
process
from
'
node:process
'
import
obfuscatorPlugin
from
'
vite-plugin-javascript-obfuscator
'
import
{
appDescription
}
from
'
./app/constants/index
'
import
preload
from
'
./app/utils/preload
'
import
obfuscatorPlugin
from
"
vite-plugin-javascript-obfuscator
"
;
export
default
defineNuxtConfig
({
nitro
:
{
devProxy
:
{
'
/api
'
:
{
// target: 'http://27.124.5.14:901
4
', // 你要代理的目标地址
target
:
'
https://w
be.1yfang
.com:6443/api
'
,
// 你要代理的目标地址
// target: 'http://27.124.5.14:901
2
', // 你要代理的目标地址
target
:
'
https://w
ww.mxr2020
.com:6443/api
'
,
// 你要代理的目标地址
changeOrigin
:
true
,
prependPath
:
true
,
rewrite
:
(
path
:
string
)
=>
path
.
replace
(
/^
\/
api/
,
''
)
}
rewrite
:
(
path
:
string
)
=>
path
.
replace
(
/^
\/
api/
,
''
)
,
}
,
},
minify
:
true
,
compressPublicAssets
:
true
,
...
...
@@ -21,13 +22,13 @@ export default defineNuxtConfig({
},
modules
:
[
"
@unocss/nuxt
"
,
"
@nuxtjs/color-mode
"
,
"
@nuxt/eslint
"
,
"
@pinia/nuxt
"
,
"
pinia-plugin-persistedstate/nuxt
"
,
"
@varlet/nuxt
"
,
'
@vant/nuxt
'
'
@unocss/nuxt
'
,
'
@nuxtjs/color-mode
'
,
'
@nuxt/eslint
'
,
'
@pinia/nuxt
'
,
'
pinia-plugin-persistedstate/nuxt
'
,
'
@varlet/nuxt
'
,
'
@vant/nuxt
'
,
],
runtimeConfig
:
{
public
:
{
...
...
@@ -35,69 +36,69 @@ export default defineNuxtConfig({
},
},
plugins
:
[
'
~/plugins/debounce.js
'
'
~/plugins/debounce.js
'
,
],
css
:
[
"
@unocss/reset/tailwind.css
"
,
"
./app/styles/vars.css
"
,
"
./app/styles/global.css
"
,
"
./app/styles/default-theme.css
"
,
'
@unocss/reset/tailwind.css
'
,
'
./app/styles/vars.css
'
,
'
./app/styles/global.css
'
,
'
./app/styles/default-theme.css
'
,
],
postcss
:
{
plugins
:
{
autoprefixer
:
{},
'
autoprefixer
'
:
{},
// https://github.com/wswmsword/postcss-mobile-forever
"
postcss-mobile-forever
"
:
{
appSelector
:
"
#__nuxt
"
,
'
postcss-mobile-forever
'
:
{
appSelector
:
'
#__nuxt
'
,
viewportWidth
:
375
,
maxDisplayWidth
:
600
,
// devtools excluded
exclude
:
/@nuxt/
,
border
:
true
,
rootContainingBlockSelectorList
:
[
"
van-tabbar
"
,
"
van-popup
"
],
rootContainingBlockSelectorList
:
[
'
van-tabbar
'
,
'
van-popup
'
],
},
},
},
colorMode
:
{
classSuffix
:
""
,
preference
:
"
system
"
,
fallback
:
"
light
"
,
storageKey
:
"
nuxt-color-mode
"
,
classSuffix
:
''
,
preference
:
'
system
'
,
fallback
:
'
light
'
,
storageKey
:
'
nuxt-color-mode
'
,
},
app
:
{
pageTransition
:
{
name
:
'
fade
'
,
mode
:
'
out-in
'
// 默认值
mode
:
'
out-in
'
,
// 默认值
},
layoutTransition
:
{
name
:
'
fade
'
,
mode
:
'
out-in
'
// 默认值
mode
:
'
out-in
'
,
// 默认值
},
head
:
{
viewport
:
"
width=device-width,initial-scale=1,viewport-fit=cover
"
,
link
:
[{
rel
:
"
icon
"
,
href
:
"
/favicon.ico
"
,
sizes
:
"
any
"
}],
viewport
:
'
width=device-width,initial-scale=1,viewport-fit=cover
'
,
link
:
[{
rel
:
'
icon
'
,
href
:
'
/favicon.ico
'
,
sizes
:
'
any
'
}],
meta
:
[
{
name
:
"
viewport
"
,
content
:
"
width=device-width, initial-scale=1, viewport-fit=cover
"
,
name
:
'
viewport
'
,
content
:
'
width=device-width, initial-scale=1, viewport-fit=cover
'
,
},
{
name
:
"
description
"
,
content
:
appDescription
},
{
name
:
'
description
'
,
content
:
appDescription
},
{
name
:
"
apple-mobile-web-app-status-bar-style
"
,
content
:
"
black-translucent
"
,
name
:
'
apple-mobile-web-app-status-bar-style
'
,
content
:
'
black-translucent
'
,
},
{
name
:
"
theme-color
"
,
media
:
"
(prefers-color-scheme: light)
"
,
content
:
"
#ffffff
"
,
name
:
'
theme-color
'
,
media
:
'
(prefers-color-scheme: light)
'
,
content
:
'
#ffffff
'
,
},
{
name
:
"
theme-color
"
,
media
:
"
(prefers-color-scheme: dark)
"
,
content
:
"
#222222
"
,
name
:
'
theme-color
'
,
media
:
'
(prefers-color-scheme: dark)
'
,
content
:
'
#222222
'
,
},
],
script
:
[
...
...
@@ -120,7 +121,7 @@ export default defineNuxtConfig({
// }),
],
build
:
{
target
:
"
es2015
"
,
// 已经正确设置为 es2015
target
:
'
es2015
'
,
// 已经正确设置为 es2015
minify
:
'
terser
'
,
terserOptions
:
{
compress
:
{
...
...
@@ -135,7 +136,7 @@ export default defineNuxtConfig({
},
},
optimizeDeps
:
{
include
:
[
"
@intlify/core-base
"
,
"
@intlify/shared
"
,
"
is-https
"
],
include
:
[
'
@intlify/core-base
'
,
'
@intlify/shared
'
,
'
is-https
'
],
},
},
...
...
@@ -189,7 +190,6 @@ export default defineNuxtConfig({
compatibilityVersion
:
4
,
},
compatibilityDate
:
"
2024-09-24
"
,
compatibilityDate
:
'
2024-09-24
'
,
})
;
})
pnpm-lock.yaml
View file @
fe4d3713
...
...
@@ -41,6 +41,9 @@ importers:
qrcode
:
specifier
:
^1.5.4
version
:
1.5.4
sign-canvas-plus
:
specifier
:
^2.0.3
version
:
2.0.3(typescript@5.7.2)
vue
:
specifier
:
^3.5.13
version
:
3.5.13(typescript@5.7.2)
...
...
@@ -4927,6 +4930,9 @@ packages:
resolution
:
{
integrity
:
sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
}
engines
:
{
node
:
'
>=
0.4'
}
sign-canvas-plus@2.0.3
:
resolution
:
{
integrity
:
sha512-EHcE9Z8SATs5UvQC/G5zLGmdznlepaar552i/w6W81+893NizjNEMUxXPaB46fEpwq/M+8T1C4BnTSk4NtpJsA==
}
signal-exit@3.0.7
:
resolution
:
{
integrity
:
sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
}
...
...
@@ -11438,6 +11444,12 @@ snapshots:
side-channel-map
:
1.0.1
side-channel-weakmap
:
1.0.2
sign-canvas-plus@2.0.3(typescript@5.7.2)
:
dependencies
:
vue
:
3.5.13(typescript@5.7.2)
transitivePeerDependencies
:
-
typescript
signal-exit@3.0.7
:
{}
signal-exit@4.1.0
:
{}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment