Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bigwood
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
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
罗超
bigwood
Commits
7086dc78
Commit
7086dc78
authored
May 09, 2023
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
3a231800
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
653 additions
and
67 deletions
+653
-67
App.vue
src/App.vue
+10
-0
passbook.ts
src/api/passbook.ts
+21
-0
ck.png
src/assets/images/personal/ck.png
+0
-0
gou.png
src/assets/images/personal/gou.png
+0
-0
x1.png
src/assets/images/personal/x1.png
+0
-0
x2.png
src/assets/images/personal/x2.png
+0
-0
x3.png
src/assets/images/personal/x3.png
+0
-0
passbookHead.vue
src/components/passbook/passbookHead.vue
+27
-20
rebate.vue
src/components/passbook/rebate.vue
+155
-21
rebatehead.vue
src/components/passbook/rebate/rebatehead.vue
+15
-8
redEnvelope.vue
src/components/passbook/redEnvelope.vue
+236
-0
useDetails.vue
src/components/passbook/useDetails.vue
+112
-0
dictionary.ts
src/config/dictionary.ts
+7
-3
passbook.vue
src/pages/passbook/passbook.vue
+70
-15
No files found.
src/App.vue
View file @
7086dc78
...
...
@@ -143,10 +143,20 @@ export default defineComponent({
font-size
:
19px
.fz20
font-size
:
20px
.fz22
font-size
:
22px
.fz26
font-size
:
26px
.fz28
font-size
:
28px
.fz32
font-size
:
32px
.fz36
font-size
:
36px
.fz38
font-size
:
38px
.fz40
font-size
:
40px
.mycard
box-shadow
:
0
0
.5rem
1
.5rem
0
.5rem
rgba
(
0
,
0
,
0
,
0
.075
)
!
important
border-radius
:
0
.475rem
!
important
...
...
src/api/passbook.ts
0 → 100644
View file @
7086dc78
import
{
HttpResponse
}
from
'../@types'
import
request
from
'./request'
import
requestJava
from
'./requestJava'
class
passbookService
{
// 获取幸福存折详情
static
async
GetCustomerBigRedEnvelope
(
CustomerId
:
Number
):
Promise
<
HttpResponse
>
{
return
request
(
'customer_post_GetCustomerBigRedEnvelope'
,{
CustomerId
})
}
static
async
getDepositBankbookDetail
(
CustomerId
:
Number
):
Promise
<
HttpResponse
>
{
return
requestJava
(
'/api/b2b/user/getDepositBankbookDetail'
,{
CustomerId
})
}
static
async
getBankbookUseDetail
(
queryTime
:
string
):
Promise
<
HttpResponse
>
{
return
requestJava
(
'/api/b2b/user/getBankbookUseDetail'
,{
queryTime
})
}
// static async getDepositBankbookDetail(param:any):Promise<HttpResponse>{
// return requestJava('/api/b2b/user/getDepositBankbookDetail',param)
// }
}
export
default
passbookService
src/assets/images/personal/ck.png
0 → 100644
View file @
7086dc78
169 Bytes
src/assets/images/personal/gou.png
0 → 100644
View file @
7086dc78
502 Bytes
src/assets/images/personal/x1.png
0 → 100644
View file @
7086dc78
928 Bytes
src/assets/images/personal/x2.png
0 → 100644
View file @
7086dc78
858 Bytes
src/assets/images/personal/x3.png
0 → 100644
View file @
7086dc78
978 Bytes
src/components/passbook/passbookHead.vue
View file @
7086dc78
...
...
@@ -9,24 +9,26 @@
height=
"59px"
/>
</div>
<div
class=
"row justify-between passbookHead-form"
>
<div
class=
"column"
>
<div
class=
"column
col
"
>
<p
class=
"text-white"
style=
"opacity: .5;"
>
可用余额
</p>
<div
class=
"row items-end text-white"
>
<div
class=
"fz
16
"
>
<div
class=
"row items-end text-white"
style=
"position: relative;"
>
<div
class=
"fz
22
"
>
¥
</div>
<div
class=
"fz
26 q-pl-sm
"
>
<span
style=
"position: relative; top:
5px;"
>
1298.25
</span>
<div
class=
"fz
40 q-pl-md
"
>
<span
style=
"position: relative; top:
11px;"
>
{{
Client_Balance
}}
</span>
</div>
<div
class=
"fz12 q-pl-lg cursor-pointer"
>
<div
class=
"fz12 q-pl-lg cursor-pointer"
style=
"position: absolute;right: 0;bottom: 0;"
>
使用规则
</div>
</div>
</div>
<div
class=
"row items-center"
>
<div
class=
"q-pa-xs q-px-sm bg-amber-3 rounded-borders text-orange-14 passbookHeadButtom"
>
<q-icon
class=
"q-pr-sm"
name=
"list"
></q-icon>
<span
class=
"fz14"
>
查看明细
</span>
<div
class=
"row items-center justify-end col-7"
>
<div
class=
"q-pa-xs q-px-sm bg-amber-3 rounded-borders text-orange-14 passbookHeadButtom cursor-pointer"
@
click=
"seeDetails"
>
<q-img
src=
"../../assets/images/personal/ck.png"
width=
"12px"
height=
"12px"
style=
"position: relative; top: 0px;"
/>
<span
class=
"fz14 q-pl-xs"
>
查看明细
</span>
</div>
</div>
</div>
...
...
@@ -34,24 +36,29 @@
</
template
>
<
script
lang=
"ts"
>
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
provide
}
from
'vue'
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
inject
}
from
'vue'
import
{
useI18n
}
from
'vue-i18n'
import
{
DirtionmaryHelper
}
from
'../../config/dictionary'
export
default
defineComponent
({
name
:
'user-info'
,
props
:
{
user
:
{
type
:
Object
,
dataNum
:
{
type
:
Number
,
require
:
true
}
},
setup
(
props
)
{
setup
(
props
,
context
)
{
const
$router
=
useRouter
();
const
data
=
reactive
({
isUseDetails
:
false
,
Client_Balance
:
0
})
data
.
Client_Balance
=
props
.
dataNum
data
.
isUseDetails
=
inject
(
DirtionmaryHelper
.
PASSBOOK_DETAILS
)
const
methods
=
{
seeDetails
(){
data
.
isUseDetails
=
true
}
}
return
{...
toRefs
(
data
),...
methods
}
}
...
...
@@ -72,7 +79,7 @@
padding
:
0
57px
;
}
.passbookHead-form
{
padding
:
36px
0
37px
19
6px
;
padding
:
36px
0
37px
24
6px
;
}
.passbookHeadButtom
{
border
:
2px
solid
#F6CA58
;
...
...
src/components/passbook/rebate.vue
View file @
7086dc78
<
template
>
<div
class=
"bg-white q-mt-lg"
>
<rebatehead
:title=
"title"
/>
<rebatehead
:title=
"title
Head
"
/>
<q-separator
color=
"grey-3"
class=
"q-my-sm"
/>
<div
class=
"row justify-between rebate-form"
>
<div
class=
"column rebate-left fz14"
>
<div
class=
"column
col
rebate-left fz14"
>
<div
class=
"row items-center left-text text-grey-9"
>
<div>
订单信息
</div><div>
系列
</div>
<div>
人数
</div><div>
返佣
</div>
</div>
<q-separator
color=
"grey-3"
/>
<div
class=
"column"
>
<div
class=
"column"
v-if=
"dataList.length>0"
>
<div
v-for=
"(item,index) in
3
"
v-for=
"(item,index) in
dataList
"
class=
"row items-center left-text text-dark"
>
<div>
订单信息
</div>
<div>
订单信息
</div>
<div>
订单信息
</div>
<div><span
class=
"text-red"
>
+¥4.55
</span></div>
<div>
{{
item
.
id
}}
</div>
<div>
{{
item
.
teamSeries
}}
</div>
<div>
{{
item
.
peopleNum
}}
</div>
<div><span
:class=
"
{'text-red':item.money>0}">
<template
v-if=
"item.money>0"
>
+
</
template
>
¥{{item.money}}
</span></div>
</div>
<div
class=
"text-center q-mt-xl q-pb-lg"
>
</div>
<div
class=
"text-center q-pb-lg"
v-else
>
<svg-icon
:size=
"50"
color=
"nav"
icon=
"General/Clipboard.svg"
></svg-icon>
<div
class=
"q-mt-md f12 text-grey-6"
>
{{ $t('noneData') }}
</div>
</div>
</div>
<div
class=
"col-4 rebate-right column q-px-lg"
>
<p
class=
"fz14 text-grey-7"
>
线路数据占比
</p>
<div
class=
"q-pl-lg"
>
<div
ref=
"main"
style=
"width: 100%;height: 200px;"
></div>
</div>
<div
class=
"rebate-right"
>
111
</div>
</div>
</div>
</template>
<
script
lang=
"ts"
>
import
{
ref
,
toRefs
,
onMounted
}
from
"vue"
;
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
provide
}
from
'vue'
import
{
useI18n
}
from
'vue-i18n'
import
*
as
echarts
from
"echarts"
import
{
ApiResult
}
from
'../../@types/enumHelper'
import
message
from
'../../utils/message'
import
Store
from
'../../store'
import
rebatehead
from
'../../components/passbook/rebate/rebatehead.vue'
import
passbookService
from
'../../api/passbook'
export
default
defineComponent
({
name
:
'user-info'
,
components
:
{
rebatehead
},
...
...
@@ -47,9 +57,11 @@
},
setup
(
props
)
{
const
$router
=
useRouter
();
const
main
=
ref
();
const
data
=
reactive
({
title
:
'人头返佣'
,
DetailList
:
[],
titleHead
:
'人头返佣'
,
title
:
'线路数据占比'
,
dataList
:
[],
cols
:
[
{
name
:
'Room'
,
label
:
'订单信息'
,
field
:
(
row
:
any
)
=>
row
.
Date
,
align
:
'left'
},
{
name
:
''
,
label
:
'系列'
,
field
:
(
row
:
any
)
=>
row
.
Date
,
align
:
'left'
},
...
...
@@ -59,18 +71,137 @@
})
const
methods
=
{
getList
(){
let
CustomerId
if
(
Store
.
state
&&
Store
.
state
.
user
?.
userDetail
)
{
CustomerId
=
Store
.
state
.
user
?.
userDetail
?.
customerId
}
passbookService
.
getDepositBankbookDetail
(
CustomerId
)
.
then
(
r
=>
{
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
data
.
dataList
=
r
.
data
.
data
.
pageData
;
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
}
})
.
catch
(
r
=>
{
message
.
errorMsg
(
r
.
message
)
})
},
getinit
()
{
// 基于准备好的dom,初始化echarts实例
const
myChart
=
echarts
.
init
(
main
.
value
);
const
schoolData
=
[
{
name
:
'张三'
,
value
:
4253
},
{
name
:
'李四'
,
value
:
5691
},
{
name
:
'王五'
,
value
:
4536
},
{
name
:
'赵六'
,
value
:
4369
},
{
name
:
'周七'
,
value
:
5124
}]
// 指定图表的配置项和数据
const
option
=
{
title
:
{
// text: '线路数据占比',
// left: 'center'
},
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{b} : {c} ({d}%)'
},
legend
:
{
// orient: 'vertical',
// left: 'left',
// data: [],
show
:
false
,
top
:
'5%'
,
left
:
'center'
},
series
:
[]
};
// 赋值
option
.
series
=
[
{
name
:
this
.
title
,
type
:
'pie'
,
selectedMode
:
'single'
,
radius
:
[
'55%'
,
'80%'
],
center
:
[
'50%'
,
'45%'
],
avoidLabelOverlap
:
false
,
label
:
{
normal
:
{
position
:
'outside'
,
formatter
:
'{b}
\
n{c}GB ({d}%)'
}
},
itemStyle
:
{
borderColor
:
'#fff'
,
borderWidth
:
5
,
},
clockwise
:
false
,
// data: res.data.map((v) => {
// return { name: v.name, value: v.value }
// })
data
:
schoolData
,
}
]
option
.
graphic
=
{
// 添加原生图形元素组件
elements
:
[
{
type
:
'text'
,
left
:
'center'
,
top
:
'42%'
,
left
:
'50%'
,
style
:
{
text
:
'80GB'
,
fontSize
:
18
,
textAlign
:
'center'
,
width
:
30
,
height
:
25
,
fill
:
'#3BA5D9'
}
}]
}
// 赋值
// option.legend = [
// {
// data: schoolData.map((a) => a.name)
// }
// ]
// 赋值
option
.
legend
.
data
=
schoolData
.
map
((
a
)
=>
a
.
name
)
// 使用刚指定的配置项和数据显示图表。
myChart
.
setOption
(
option
);
}
}
return
{...
toRefs
(
data
),...
methods
}
onMounted
(()
=>
{
methods
.
getList
()
methods
.
getinit
();
});
return
{...
toRefs
(
data
),
main
,...
methods
}
}
})
</
script
>
<
style
>
<
style
scoped
>
.rebate-form
{
padding
:
15px
30px
0
30px
;
}
.rebate-left
{
width
:
70%
;
/* width: 70%; */
}
.left-text
div
{
display
:
inline-block
;
...
...
@@ -80,5 +211,8 @@
.left-text
:nth-child
(
2n
)
{
background
:
#E0E0E0
;
}
.rebate-right
{
/* width: 28%; */
}
</
style
>
\ No newline at end of file
src/components/passbook/rebate/rebatehead.vue
View file @
7086dc78
<
template
>
<div
class=
"row justify-between q-px-lg q-py-sm"
>
<div
class=
"row justify-between q-px-lg q-py-sm
q-pt-md
"
>
<span
class=
"fz16 text-weight-bold dark"
>
{{
title
}}
</span>
<span>
<span
class=
"fz12 cursor-pointer"
>
规则说明
</span>
<q-popup-proxy
class=
"no-shadow"
style=
"box-shadow: 0 0 50px #ddd !important"
:offset=
"[0, 10]"
<span
@
click=
"title=='使用明细'?Return():''"
>
<span
class=
"fz12 cursor-pointer text-grey-6"
>
{{
title
!=
'使用明细'
?
''
:
'返回'
}}
<q-icon
v-if=
"title=='使用明细'"
name=
"chevron_right"
size=
"22px"
style=
"position: relative;top: -1px;"
/></span>
<!--
<q-popup-proxy
v-if=
"title!='使用明细'"
class=
"no-shadow"
style=
"box-shadow: 0 0 50px #ddd !important"
:offset=
"[0, 10]"
:model-value=
"canHide"
>
<div
class=
"q-px-md q-py-sm"
style=
"opacity: 0.5;"
>
<div>
121212195959
</div>
...
...
@@ -11,14 +13,15 @@
<div>
1212121
</div>
</div>
</q-popup-proxy>
</q-popup-proxy>
-->
</span>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
provide
}
from
'vue'
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
inject
}
from
'vue'
import
{
useI18n
}
from
'vue-i18n'
import
{
DirtionmaryHelper
}
from
'../../../config/dictionary'
export
default
defineComponent
({
name
:
'user-info'
,
components
:
{
},
...
...
@@ -31,11 +34,15 @@
setup
(
props
)
{
const
$router
=
useRouter
();
const
data
=
reactive
({
isReturn
:
null
,
title
:
props
.
title
,
canHide
:
false
})
data
.
isReturn
=
inject
(
DirtionmaryHelper
.
PASSBOOK_DETAILS
)
const
methods
=
{
Return
(){
data
.
isReturn
=
false
}
}
return
{...
toRefs
(
data
),...
methods
}
...
...
src/components/passbook/redEnvelope.vue
0 → 100644
View file @
7086dc78
<
template
>
<div
class=
"bg-white q-mt-lg"
>
<rebatehead
:title=
"titleHead"
/>
<q-separator
color=
"grey-3"
class=
"q-my-sm"
/>
<div
class=
"row justify-between redEnvelope-form"
>
<div
class=
"column col redEnvelope-left fz14"
>
<p
class=
"fz14 text-grey-7"
>
近半年收益
</p>
<div
ref=
"main"
style=
"width: 100%;height: 280px;position: relative;left: -30px;"
></div>
</div>
<div
class=
"row justify-center"
>
<q-separator
vertical
inset
style=
"height: 50%;position: relative;top: 10%;"
/>
</div>
<div
class=
"col-4 redEnvelope-right column q-px-lg"
>
<p
class=
"fz14 text-grey-7 q-pb-xs"
>
本年累计交易总额
</p>
<div
class=
"q-pb-lg row items-end"
>
<span
class=
"fz12"
>
¥
</span>
<div
class=
"fz32 q-pl-sm"
><span
style=
"position: relative;top: 9px;"
>
{{
datainfo
.
Amount
}}
</span></div>
</div>
<q-separator
color=
"grey-3"
/>
<p
class=
"fz14 text-grey-7 q-pt-lg"
>
累计收益
</p>
<div
class=
"q-pb-lg row items-end"
>
<span
class=
"fz12"
>
¥
</span>
<div
class=
"fz32 q-pl-sm"
><span
style=
"position: relative;top: 9px;"
>
{{
datainfo
.
TotalMoney
}}
</span></div>
</div>
<q-separator
color=
"grey-3"
/>
</div>
</div>
<div
class=
"q-px-lg q-pb-lg"
><span>
当前交易额:
</span><span
class=
"q-pl-lg"
>
¥
</span><span
class=
"fz32 q-pl-sm"
>
{{
datainfo
.
Amount
.
toFixed
(
2
)
}}
</span>
</div>
<div
class=
"q-px-lg q-pt-sm"
>
<div
class=
"row items-center no-wrap q-pb-lg"
v-for=
"(item,index) in datainfo.RatioList"
:key=
"index"
>
<q-linear-progress
class=
"col q-mr-lg"
stripe
rounded
size=
"20px"
:value=
"item.width/100"
color=
"item.percent>1?'orange-9':item.percent
<1
?'
red-5
'
:
'
cyan-4
'"
/>
<div
class=
"col-4 row items-center q-ml-lg"
>
<q-img
v-if=
"item.percent>1"
src=
"../../assets/images/personal/gou.png"
width=
"20px"
height=
"20px"
style=
"position: relative;"
/>
<q-img
v-else
src=
"../../assets/images/personal/x1.png"
width=
"26px"
height=
"26px"
style=
"position: relative;"
/>
<div
class=
"column q-pl-md"
>
<span
class=
"fz16 text-weight-bold"
:class=
"[item.percent>1?'text-light-green-6':item.percent
<1
?'
text-red-5
'
:
'
text-dark
']"
>
<template
v-if=
"item.percent>1"
>
已激活,预计收益 ¥
{{
(
item
.
Money
*
item
.
Ratio
)
/
1000
}}
</
template
>
<
template
v-if=
"item.percent<1"
>
还差¥
{{
item
.
Money
-
datainfo
.
Amount
}}
,预计收益 ¥
{{
(
item
.
Money
*
item
.
Ratio
)
/
1000
}}
</
template
>
</span>
<span
class=
"fz12 text-grey-6 q-pt-xs"
>
月交易额已达 ¥ {{item.Money}} 返{{item.Ratio}}‰
</span>
</div>
</div>
</div>
<!-- <div class="row items-center no-wrap q-py-lg">
<q-linear-progress class="col q-mr-lg" stripe rounded size="20px" :value="progress2" color="red-5"/>
<div class="col-4 row items-center q-ml-lg">
<q-img src="../../assets/images/personal/gou.png"
width="20px"
height="20px" style="position: relative;"/>
<div class="column q-pl-md">
<span class="fz16 text-red-5 text-weight-bold">还差 ¥360,预计收益 ¥600</span>
<span class="fz12 text-grey-6 q-pt-xs">月交易额已达 ¥ 1000 可返5%</span>
</div>
</div>
</div>
<div class="row items-center no-wrap q-py-lg">
<q-linear-progress class="col q-mr-lg" stripe rounded size="20px" :value="progress2" color="cyan-4"/>
<div class="col-4 row items-center q-ml-lg">
<q-img src="../../assets/images/personal/gou.png"
width="20px"
height="20px" style="position: relative;"/>
<div class="column q-pl-md">
<span class="fz16 text-dark text-weight-bold">期待你的爆发</span>
<span class="fz12 text-grey-6 q-pt-xs"> 月交易额达 ¥300,000.00 可返 6%</span>
</div>
</div>
</div> -->
</div>
</div>
</template>
<
script
lang=
"ts"
>
import
{
ref
,
toRefs
,
onMounted
}
from
"vue"
;
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
}
from
'vue'
import
{
useI18n
}
from
'vue-i18n'
import
*
as
echarts
from
"echarts"
import
rebatehead
from
'../../components/passbook/rebate/rebatehead.vue'
export
default
defineComponent
({
name
:
'user-info'
,
components
:
{
rebatehead
},
props
:
{
Obj
:
{
type
:
Object
,
require
:
true
},
info
:
{
type
:
Object
,
require
:
true
}
},
setup
(
props
)
{
const
$router
=
useRouter
();
const
main
=
ref
();
const
data
=
reactive
({
titleHead
:
'大红包'
,
title
:
'线路数据占比'
,
DetailList
:
[],
progress2
:
0.5
,
xMonth
:[],
yMoney1
:[],
yMoney2
:[],
datainfo
:
null
as
any
})
if
(
props
.
Obj
&&
props
.
info
){
data
.
xMonth
=
props
.
Obj
.
xMonth
data
.
yMoney1
=
props
.
Obj
.
yMoney1
data
.
yMoney2
=
props
.
Obj
.
yMoney2
data
.
datainfo
=
props
.
info
}
const
methods
=
{
getinit
()
{
// 基于准备好的dom,初始化echarts实例
const
myChart
=
echarts
.
init
(
main
.
value
);
const
option
=
{
title
:
{
left
:
"left"
,
textStyle
:
{
fontWeight
:
"bold"
,
fontSize
:
14
,
color
:
"#333333"
,
height
:
"30px"
},
padding
:
[
20
,
// 上
20
,
// 右
20
,
// 下
20
// 左
]
},
xAxis
:
{
type
:
'category'
,
boundaryGap
:
false
,
axisLine
:
{
show
:
false
,
lineStyle
:
{
width
:
30
}
},
axisTick
:
false
,
data
:
data
.
xMonth
,
},
yAxis
:
{
type
:
'value'
,
boundaryGap
:
[
0
,
'30%'
],
min
:
'10'
,
axisTick
:
true
,
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
"#fff"
}
}
},
visualMap
:
{
type
:
'piecewise'
,
show
:
false
,
dimension
:
0
,
seriesIndex
:
0
,
pieces
:
[
{
gt
:
1
,
lt
:
3
,
color
:
'rgba(0, 0, 180, 0.4)'
},
{
gt
:
5
,
lt
:
7
,
color
:
'rgba(0, 0, 180, 0.4)'
}
]
},
series
:[]
};
option
.
series
=
[
{
type
:
"line"
,
smooth
:
2
,
symbol
:
'none'
,
data
:
data
.
yMoney1
,
lineStyle
:
{
width
:
3
,
color
:
"#36C7D9"
},
itemStyle
:
{
borderWidth
:
5
,
color
:
"#FFFFFF"
},
areaStyle
:
{
color
:
"#A4E6EE"
}
},
{
type
:
"line"
,
smooth
:
2
,
data
:
data
.
yMoney2
,
lineStyle
:
{
width
:
3
,
color
:
"#ED6A6B"
,
type
:
'dashed'
},
itemStyle
:
{
borderWidth
:
5
,
},
areaStyle
:
{
color
:
"#FAD2D2"
}
}
]
// 使用刚指定的配置项和数据显示图表。
myChart
.
setOption
(
option
);
}
}
onMounted
(()
=>
{
methods
.
getinit
();
});
return
{...
toRefs
(
data
),
main
,...
methods
}
}
})
</
script
>
<
style
scoped
>
.redEnvelope-form
{
padding
:
15px
30px
0
30px
;
}
.redEnvelope-left
{
/* width: 70%; */
}
.redEnvelope-right
{
/* width: 28%; */
}
</
style
>
\ No newline at end of file
src/components/passbook/useDetails.vue
0 → 100644
View file @
7086dc78
<
template
>
<div
class=
"bg-white q-mt-lg"
>
<rebatehead
:title=
"titleHead"
/>
<q-separator
color=
"grey-3"
class=
"q-my-sm"
/>
<div
class=
"q-px-lg q-pt-md"
>
<q-field
clearable
v-model=
"queryTime"
label=
"时间选择"
standout
class=
"col-2"
style=
"width: 190px"
dense
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
queryTime
}}
</div>
<q-separator
color=
"grey-3"
class=
"q-my-sm"
/>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxy"
>
<q-date
v-model=
"queryTime"
mask=
"YYYY/MM"
default-view=
"Months"
@
update:model-value=
"dateRangeHandler"
></q-date>
</q-popup-proxy>
</q-field>
</div>
<div
class=
"row justify-between useDetails-form"
>
<div
class=
"column col useDetails-left fz14"
>
<div
class=
"row items-center left-text text-grey-9"
>
<div>
时间
</div><div>
描述
</div>
<div>
支出(收入)
</div>
</div>
<q-separator
color=
"grey-3"
/>
<div
class=
"column"
>
<div
v-for=
"(item,index) in dataList"
class=
"row items-center left-text text-dark"
>
<div>
{{
item
.
id
}}
</div>
<div>
{{
item
.
teamSeries
}}
</div>
<div><span
:class=
"
{'text-red':item.money>0}">
<template
v-if=
"item.money>0"
>
+
</
template
>
¥{{item.money}}
</span></div>
</div>
<div
class=
"text-center q-pb-lg"
>
<svg-icon
:size=
"50"
color=
"nav"
icon=
"General/Clipboard.svg"
></svg-icon>
<div
class=
"q-mt-md f12 text-grey-6"
>
{{ $t('noneData') }}
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<
script
lang=
"ts"
>
import
{
ref
,
toRefs
,
onMounted
}
from
"vue"
;
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
provide
}
from
'vue'
import
{
useI18n
}
from
'vue-i18n'
import
{
date
,
useQuasar
}
from
'quasar'
import
*
as
echarts
from
"echarts"
import
{
ApiResult
}
from
'../../@types/enumHelper'
import
message
from
'../../utils/message'
import
Store
from
'../../store'
import
rebatehead
from
'../../components/passbook/rebate/rebatehead.vue'
import
passbookService
from
'../../api/passbook'
export
default
defineComponent
({
name
:
'user-info'
,
components
:
{
rebatehead
},
props
:
{},
setup
(
props
)
{
const
$router
=
useRouter
();
const
qDateProxy
=
ref
(
null
)
as
any
const
{
t
}
=
useI18n
()
const
main
=
ref
();
const
data
=
reactive
({
dateRange
:
{}
as
any
,
queryTime
:
''
,
titleHead
:
'使用明细'
,
dataList
:
[],
})
const
methods
=
{
dateRangeHandler
(
e
:
any
)
{
methods
.
getList
()
if
(
qDateProxy
.
value
)
qDateProxy
.
value
.
hide
()
},
getList
(){
passbookService
.
getBankbookUseDetail
(
data
.
queryTime
)
.
then
(
r
=>
{
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
data
.
dataList
=
r
.
data
.
data
.
pageData
;
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
}
})
.
catch
(
r
=>
{
message
.
errorMsg
(
r
.
message
)
})
},
}
onMounted
(()
=>
{
methods
.
getList
()
});
return
{...
toRefs
(
data
),
qDateProxy
,
...
methods
}
}
})
</
script
>
<
style
scoped
>
.useDetails-form
{
padding
:
15px
30px
0
30px
;
}
.left-text
div
{
display
:
inline-block
;
width
:
33.33%
;
text-indent
:
31px
;
}
.left-text
:nth-child
(
2n
)
{
background
:
#E0E0E0
;
}
</
style
>
\ No newline at end of file
src/config/dictionary.ts
View file @
7086dc78
...
...
@@ -97,5 +97,9 @@ class DirtionmaryHelper {
* 包机订单列表
*/
static
readonly
TRAVEL_ORDER_OBJ
=
"travelOrderObj"
/**
* 幸福存折详情
*/
static
readonly
PASSBOOK_DETAILS
=
"passbookDetails"
}
export
{
userDictionmary
,
DirtionmaryHelper
}
src/pages/passbook/passbook.vue
View file @
7086dc78
<
template
>
<div
class=
"column items-center"
>
<div
class=
"passbook-form q-mt-sm"
>
<passbookHead/>
<rebate/>
<div
class=
"passbook-form q-mt-sm q-mb-lg"
>
<template
v-if=
"!isUseDetails"
>
<passbookHead
:dataNum=
"datainfo?datainfo.Client_Balance:0"
/>
<rebate
/>
<redEnvelope
v-if=
"MonthObj&&datainfo"
:Obj=
"MonthObj"
:info=
"datainfo"
/>
</
template
>
<useDetails
v-else
/>
</div>
</div>
</template>
<
script
lang=
"ts"
>
import
{
useRouter
}
from
'vue-router'
;
import
{
defineComponent
,
ref
,
reactive
,
toRefs
,
provide
}
from
'vue'
import
{
useQuasar
}
from
'quasar'
import
{
ApiResult
}
from
'../../@types/enumHelper'
import
message
from
'../../utils/message'
import
{
useI18n
}
from
'vue-i18n'
import
Store
from
'../../store'
import
{
DirtionmaryHelper
}
from
'../../config/dictionary'
import
passbookHead
from
'../../components/passbook/passbookHead.vue'
import
rebate
from
'../../components/passbook/rebate.vue'
import
redEnvelope
from
'../../components/passbook/redEnvelope.vue'
import
useDetails
from
'../../components/passbook/useDetails.vue'
import
passbookService
from
'../../api/passbook'
export
default
defineComponent
({
name
:
'user-info'
,
components
:
{
passbookHead
,
rebate
},
props
:
{
user
:
{
type
:
Object
,
require
:
true
}
},
setup
(
props
)
{
components
:
{
passbookHead
,
rebate
,
redEnvelope
,
useDetails
},
props
:
{},
setup
()
{
const
$router
=
useRouter
();
const
$q
=
useQuasar
()
const
data
=
reactive
({
datainfo
:
null
as
Object
,
xMonth
:[],
yMoney1
:[],
yMoney2
:[],
MonthObj
:
null
as
Object
})
const
isUseDetails
=
ref
(
false
)
provide
(
DirtionmaryHelper
.
PASSBOOK_DETAILS
,
isUseDetails
)
const
methods
=
{
GetBigRedEnvelope
()
{
let
CustomerId
if
(
Store
.
state
&&
Store
.
state
.
user
?.
userDetail
)
{
CustomerId
=
Store
.
state
.
user
?.
userDetail
?.
customerId
}
$q
.
loading
.
show
()
passbookService
.
GetCustomerBigRedEnvelope
(
CustomerId
)
.
then
(
r
=>
{
let
arr1
=
[
'-'
,
'-'
,
'-'
,
'-'
];
let
newarr
=
[];
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
data
.
datainfo
=
r
.
data
.
data
;
data
.
datainfo
.
JQLRList
.
forEach
((
item
,
index
)
=>
{
data
.
xMonth
.
push
(
item
.
Date
)
if
(
index
<
5
){
data
.
yMoney1
.
push
(
item
.
Money
)
}
if
(
index
>
3
){
newarr
.
push
(
item
.
Money
);
data
.
yMoney2
=
arr1
.
concat
(
newarr
);
}
})
data
.
datainfo
.
RatioList
.
forEach
(
item
=>
{
item
.
percent
=
data
.
datainfo
.
Amount
/
item
.
Money
;
item
.
width
=
(
item
.
percent
)
*
100
;
})
data
.
yMoney1
=
data
.
yMoney1
.
concat
([
"-"
]);
data
.
MonthObj
=
{
xMonth
:
data
.
xMonth
,
yMoney1
:
data
.
yMoney1
,
yMoney2
:
data
.
yMoney2
}
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
}
$q
.
loading
.
hide
()
})
.
catch
(
r
=>
{
$q
.
loading
.
hide
()
message
.
errorMsg
(
r
.
message
)
})
},
}
return
{...
toRefs
(
data
),...
methods
}
methods
.
GetBigRedEnvelope
()
return
{...
toRefs
(
data
),
isUseDetails
,...
methods
}
}
})
</
script
>
...
...
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