Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
F
fund_report
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭熊
fund_report
Commits
e04a86bf
Commit
e04a86bf
authored
Dec 23, 2020
by
pengxiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
app端月报生成接口
parent
ce855a22
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
123 additions
and
2317 deletions
+123
-2317
engine.py
app/api/engine.py
+5
-5
config.yaml
app/config/config.yaml
+9
-2
order.py
app/controller/order.py
+0
-52
report.py
app/controller/report.py
+98
-0
order.py
app/model/order.py
+1
-1
version1.py
app/router/version1.py
+2
-2
monthReportV2 .html
app/templates/v2/monthReportV2 .html
+0
-2251
draw.py
app/utils/draw.py
+3
-0
jinjia2html_v2.py
app/utils/jinjia2html_v2.py
+5
-4
No files found.
app/api/engine.py
View file @
e04a86bf
...
@@ -96,11 +96,11 @@ tamp_diagnose_app_engine = create_engine(
...
@@ -96,11 +96,11 @@ tamp_diagnose_app_engine = create_engine(
)
)
#
redis = redis.StrictRedis(
redis
=
redis
.
StrictRedis
(
#
host=config[env]['redis']['host'],
host
=
config
[
env
][
'redis'
][
'host'
],
#
port=config[env]['redis']['port'],
port
=
config
[
env
][
'redis'
][
'port'
],
#
db=config[env]['redis']['db']
db
=
config
[
env
][
'redis'
][
'db'
]
#
)
)
logging
.
basicConfig
(
level
=
logging
.
INFO
,
logging
.
basicConfig
(
level
=
logging
.
INFO
,
filename
=
work_dir
+
config
[
env
][
'log'
][
'filename'
],
filename
=
work_dir
+
config
[
env
][
'log'
][
'filename'
],
...
...
app/config/config.yaml
View file @
e04a86bf
...
@@ -11,6 +11,9 @@ dev:
...
@@ -11,6 +11,9 @@ dev:
host
:
localhost
host
:
localhost
port
:
6379
port
:
6379
db
:
0
db
:
0
oss
:
account
:
LTAI4FzkGhAMecinBCKwuoUW
password
:
KJpPWg9U0kYO71yB41gqYbrFNJ4hso
log
:
log
:
filename
:
/logs/fund_report.log
filename
:
/logs/fund_report.log
filemode
:
a
filemode
:
a
...
@@ -44,14 +47,18 @@ prod:
...
@@ -44,14 +47,18 @@ prod:
tamp_order_db
:
tamp_order
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
tamp_user_db
:
tamp_user
tamp_fund_db
:
tamp_fund
tamp_fund_db
:
tamp_fund
tamp_diagnose_app_db
:
tamp_diagnose_app
host
:
tamper.mysql.polardb.rds.aliyuncs.com
host
:
tamper.mysql.polardb.rds.aliyuncs.com
port
:
3306
port
:
3306
user
:
tamp_
admin
user
:
tamp_
fund
password
:
'
@imeng
123
'
password
:
'
@imeng
408
'
redis
:
redis
:
host
:
localhost
host
:
localhost
port
:
6379
port
:
6379
db
:
0
db
:
0
oss
:
account
:
LTAI4FzkGhAMecinBCKwuoUW
password
:
KJpPWg9U0kYO71yB41gqYbrFNJ4hso
log
:
log
:
filename
:
/logs/fund_report.log
filename
:
/logs/fund_report.log
filemode
:
a
filemode
:
a
...
...
app/controller/order.py
deleted
100644 → 0
View file @
ce855a22
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : order.py
# @Time : 2020/11/18 下午3:19
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
uuid
from
flask_restful
import
Resource
,
reqparse
from
flask
import
request
,
render_template
from
flask
import
make_response
from
app.utils.html_to_pdf
import
html_to_pdf
from
app.api.engine
import
pdf_folder
class
OrderHandlers
(
Resource
):
"""."""
def
__init__
(
self
):
"""."""
self
.
parser
=
reqparse
.
RequestParser
()
def
get
(
self
):
"""."""
# self.parser.add_argument('product_id',type=str,required=True,help='商品ID不能为空')
# args = self.parser.parse_args()
STUDENT_LIST
=
[
{
'name'
:
'pj'
,
'age'
:
38
,
'gender'
:
'中'
},
{
'name'
:
'lc'
,
'age'
:
73
,
'gender'
:
'男'
},
{
'name'
:
'fy'
,
'age'
:
84
,
'gender'
:
'女'
}
]
params
=
{
'a'
:
'hello'
,
'b'
:
'world'
}
template
=
render_template
(
'student.html'
,
student
=
STUDENT_LIST
,
params
=
params
)
html_to_pdf
(
template
,
pdf_folder
+
str
(
uuid
.
uuid4
())
+
'.pdf'
)
resp
=
make_response
(
template
)
resp
.
headers
[
'Content-Type'
]
=
'text/html'
return
resp
def
post
(
self
):
"""."""
pass
def
put
(
self
,
id
):
"""."""
pass
def
delete
(
self
,
id
):
"""."""
pass
app/controller/report.py
0 → 100644
View file @
e04a86bf
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : report.py
# @Time : 2020/11/18 下午3:19
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import
datetime
import
time
import
uuid
import
oss2
from
flask_restful
import
Resource
,
reqparse
from
flask
import
request
,
render_template
from
flask
import
make_response
from
app.api.engine
import
config
from
app.utils.html_to_pdf
import
html_to_pdf
from
app.api.engine
import
pdf_folder
,
redis
,
env
,
TAMP_SQL
,
tamp_diagnose_app_engine
from
app.utils.jinjia2html_v2
import
DataIntegrate
class
ReportHandlers
(
Resource
):
"""."""
def
__init__
(
self
):
"""."""
self
.
parser
=
reqparse
.
RequestParser
()
def
get
(
self
):
"""."""
# self.parser.add_argument('ifa_id', type=str, required=True, help='ifa_id不能为空')
self
.
parser
.
add_argument
(
'customer_id'
,
type
=
str
,
required
=
True
,
help
=
'customer_id不能为空'
)
args
=
self
.
parser
.
parse_args
()
token
=
request
.
headers
.
get
(
'Authorization'
,
''
)
token
=
's:sid:'
+
token
.
split
(
' '
)[
1
]
ifa_id
=
redis
.
get
(
token
)
.
decode
()
if
not
ifa_id
:
return
{
"code"
:
40005
,
"data"
:
None
,
"lang"
:
"zh_CN"
,
"msg"
:
"请登陆"
}
ifa_id
=
ifa_id
.
replace
(
'
\'
'
,
''
)
customer_id
=
args
[
'customer_id'
]
pdf_name
=
str
(
uuid
.
uuid4
())
+
'.pdf'
with
TAMP_SQL
(
tamp_diagnose_app_engine
)
as
tamp_diagnose_app
:
tamp_diagnose_app_session
=
tamp_diagnose_app
.
session
sql
=
"update hold_report set update_time='{}', update_status='{}' where ifa_id='{}' and customer_id='{}'"
.
format
(
datetime
.
datetime
.
now
(),
1
,
ifa_id
,
customer_id
)
tamp_diagnose_app_session
.
execute
(
sql
)
start
=
time
.
time
()
try
:
dt
=
DataIntegrate
(
ifa_id
=
ifa_id
,
customer_id
=
customer_id
,
pdf_name
=
pdf_name
)
dt
.
render_data
()
except
:
pass
print
(
'耗时{}秒'
.
format
(
round
(
time
.
time
()
-
start
,
2
)))
auth
=
oss2
.
Auth
(
config
[
env
][
'oss'
][
'account'
],
config
[
env
][
'oss'
][
'password'
])
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket
=
oss2
.
Bucket
(
auth
,
'http://oss-cn-shanghai.aliyuncs.com'
,
'tamperdev'
)
# 生成下载文件的签名URL,有效时间为60s。
path
=
bucket
.
sign_url
(
'GET'
,
'productionenv/Start/'
+
pdf_name
,
60
)
with
TAMP_SQL
(
tamp_diagnose_app_engine
)
as
tamp_diagnose_app
:
tamp_diagnose_app_session
=
tamp_diagnose_app
.
session
sql
=
"update hold_report set update_time='{}', update_status='{}', file='{}' where ifa_id='{}' and customer_id='{}'"
.
format
(
datetime
.
datetime
.
now
(),
2
,
pdf_name
,
ifa_id
,
customer_id
)
tamp_diagnose_app_session
.
execute
(
sql
)
resp
=
{
"code"
:
0
,
"data"
:
{
"path"
:
path
},
"lang"
:
"zh_CN"
,
"msg"
:
"成功"
}
return
resp
def
post
(
self
):
"""."""
pass
def
put
(
self
,
id
):
"""."""
pass
def
delete
(
self
,
id
):
"""."""
pass
app/model/order.py
View file @
e04a86bf
# -*- encoding: utf-8 -*-
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# @File Name :
order
.py
# @File Name :
report
.py
# @Time : 2020/11/18 下午3:11
# @Time : 2020/11/18 下午3:11
# @Author : X. Peng
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Email : acepengxiong@163.com
...
...
app/router/version1.py
View file @
e04a86bf
...
@@ -7,8 +7,8 @@
...
@@ -7,8 +7,8 @@
# @Software : PyCharm
# @Software : PyCharm
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
from
app.controller.
order
import
*
from
app.controller.
report
import
*
def
add_route
(
api
):
def
add_route
(
api
):
"""注册路由"""
"""注册路由"""
api
.
add_resource
(
OrderHandlers
,
'/tamp_course_order/order
'
)
api
.
add_resource
(
ReportHandlers
,
'/fund_report/report
'
)
app/templates/v2/monthReportV2 .html
deleted
100644 → 0
View file @
ce855a22
<!doctype html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<style>
/*
* Prefixed by https://autoprefixer.github.io
* PostCSS: v7.0.29,
* Autoprefixer: v9.7.6
* Browsers: last 4 version
*/
.all
{
width
:
1200px
;
margin
:
0
auto
;
page-break-inside
:
avoid
;
}
.clearfix
:after
{
content
:
""
;
display
:
block
;
clear
:
both
;
overflow
:
hidden
;
}
.fl
{
float
:
left
;
}
.fr
{
float
:
right
;
}
.dtable
{
display
:
table
;
}
.dcell
{
display
:
table-cell
;
vertical-align
:
middle
;
}
/* 封面 */
.box0
{
display
:
{{
box0
}
}
;
position
:
relative
;
padding
:
234px
0
184px
0
;
}
.box0
.cover_head
{
position
:
absolute
;
top
:
45px
;
right
:
38px
;
}
.box0
.cover_head
.cover_logo
{
width
:
172px
;
height
:
52px
;
}
.box0
.cover_head
.cover_line
{
width
:
1px
;
height
:
34px
;
background
:
#10316E
;
margin
:
0
10px
0
10px
;
}
.box0
.cover_head
.cover_text
{
font-size
:
17px
;
line-height
:
23px
;
color
:
#B6172B
;
font-weight
:
bold
;
}
.box0
.cover_people
{
padding
:
0
38px
0
858px
;
}
.box0
.cover_people
.cover_pre
{
margin
:
0
20px
0
0
;
font-size
:
28px
;
line-height
:
40px
;
color
:
#999999
;
font-weight
:
bold
;
}
.box0
.cover_people
.cover_name
{
font-size
:
32px
;
line-height
:
45px
;
color
:
#B6172B
;
font-weight
:
bold
;
}
.box0
.cover_people
.cover_sir
{
font-size
:
28px
;
line-height
:
45px
;
color
:
#333333
;
font-weight
:
bold
;
}
.box0
.cover_back
{
display
:
block
;
width
:
100%
;
height
:
218px
;
}
.box0
.cover_date
{
padding
:
0
0
0
858px
;
}
.box0
.cover_date
.cover_time
{
display
:
inline-block
;
font-size
:
40px
;
line-height
:
66px
;
color
:
#ffffff
;
font-weight
:
bold
;
padding
:
0
66px
0
66px
;
background
:
#B6172B
;
-webkit-box-shadow
:
0px
10px
26px
0px
rgba
(
66
,
5
,
5
,
0.18
);
box-shadow
:
0px
10px
26px
0px
rgba
(
66
,
5
,
5
,
0.18
);
border
:
1px
solid
#979797
;
}
.box0
.cover_title
{
position
:
absolute
;
top
:
100px
;
left
:
211px
;
z-index
:
1
;
width
:
282px
;
height
:
514px
;
background
:
#B6172B
;
-webkit-box-shadow
:
0px
10px
26px
0px
rgba
(
66
,
5
,
5
,
0.44
);
box-shadow
:
0px
10px
26px
0px
rgba
(
66
,
5
,
5
,
0.44
);
border
:
1px
solid
#979797
;
}
.box0
.cover_title
.cover_title_text
{
padding
:
0
30px
0
50px
;
font-size
:
46px
;
line-height
:
61px
;
color
:
#ffffff
;
font-weight
:
bold
;
}
.box_line
{
height
:
15px
;
background
:
#F1F1F1
;
}
/* 目录 */
.box1
{
display
:
{{
box1
}
}
;
position
:
relative
;
padding
:
150px
0
200px
36px
;
}
.box1
.catalog_line
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
36px
;
height
:
100%
;
background
:
#B6172B
;
}
.box1
.catalog_box
.catalog_item
:first-child
{
width
:
562px
;
padding
:
0
46px
0
46px
;
}
.box1
.catalog_box
.catalog_item
.catalog_en
{
font-size
:
72px
;
line-height
:
77px
;
color
:
#333333
;
font-weight
:
bold
;
opacity
:
0.45
;
}
.box1
.catalog_box
.catalog_item
.catalog_ch
{
margin
:
30px
0
0
0
;
font-size
:
58px
;
line-height
:
77px
;
color
:
#333333
;
font-weight
:
bold
;
}
.box1
.catalog_box
.catalog_item
.catalog_li
{
position
:
relative
;
}
.box1
.catalog_box
.catalog_item
.catalog_li
.catalog_dot
{
position
:
absolute
;
top
:
32px
;
left
:
0
;
width
:
16px
;
height
:
16px
;
background
:
#D7D7D7
;
border-radius
:
50%
;
}
.box1
.catalog_box
.catalog_item
.catalog_li
.catalog_name
{
padding
:
0
0
0
40px
;
font-size
:
32px
;
line-height
:
77px
;
color
:
#333333
;
font-weight
:
bold
;
}
/* 页眉 */
.page
{
padding
:
54px
34px
10px
34px
;
width
:
100%
;
border-bottom
:
1px
solid
#F1F1F1
;
}
.page
.page_title
{
width
:
880px
;
font-size
:
40px
;
line-height
:
56px
;
color
:
#333333
;
font-weight
:
bold
;
}
.page
.page_head
.page_logo
{
width
:
172px
;
height
:
52px
;
}
.page
.page_head
.page_line
{
width
:
1px
;
height
:
34px
;
background
:
#10316E
;
margin
:
0
10px
0
10px
;
}
.page
.page_head
.page_text
{
font-size
:
17px
;
line-height
:
23px
;
color
:
#B6172B
;
font-weight
:
bold
;
white-space
:
nowrap
;
}
/* 投资总览 */
.box2
{
display
:
{{
box2
}
}
;
}
.box2
.box2_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
/* 表格样式1 */
.tss1
{
margin
:
30px
0
0
0
;
}
.tss1
.tss1_title
{
font-size
:
24px
;
line-height
:
33px
;
color
:
#333333
;
font-weight
:
bold
;
margin
:
0
0
15px
0
;
}
.tss1
.tss1_table
{
width
:
100%
;
border-collapse
:
collapse
;
}
.tss1
.tss1_table
tr
{
border-bottom
:
2px
solid
#FFFFFF
;
background
:
#F1F1F1
;
width
:
100%
;
}
.tss1
.tss1_table
tr
td
{
width
:
25%
;
padding
:
12px
26px
12px
26px
;
font-size
:
16px
;
line-height
:
22px
;
color
:
#333333
;
font-weight
:
bold
;
}
.tss1
.tss1_table
tr
td
.red
{
color
:
#D10000
;
}
.tss1
.tss1_table
tr
td
.green
{
color
:
#129298
;
}
/* 表格样式2 */
.tss2
{
margin
:
40px
0
0
0
;
}
.tss2
.tss2_title
{
font-size
:
24px
;
line-height
:
33px
;
color
:
#333333
;
font-weight
:
bold
;
margin
:
0
0
15px
0
;
}
.tss2
.tss2_content
{
margin
:
18px
0
0
0
;
border
:
1px
solid
#E4E4E4
;
}
.tss2
.tss2_content
.tss2_img
{
width
:
100%
;
}
/* 表格样式3 */
.tss3
{
margin
:
40px
0
0
0
;
}
.tss3
.tss3_head
{
width
:
100%
;
}
.tss3
.tss3_head
.tss3_title
{
font-size
:
24px
;
line-height
:
33px
;
color
:
#333333
;
font-weight
:
bold
;
margin
:
0
0
15px
0
;
}
.tss3
.tss3_head
.tss3_title
.tss3_start_time
{
font-size
:
18px
;
line-height
:
33px
;
color
:
#666666
;
font-weight
:
normal
;
}
.tss3
.tss3_head
.tss3_now_time
{
font-size
:
14px
;
line-height
:
20px
;
color
:
#333333
;
text-align
:
right
;
}
.tss3
.tss3_tag
{
position
:
absolute
;
padding
:
0
16px
0
26px
;
font-size
:
16px
;
line-height
:
30px
;
color
:
#ffffff
;
background
:
#A2A2A2
;
}
.tss3
.tss3_tag
.tss3_tri
{
position
:
absolute
;
top
:
0
;
right
:
-10px
;
border-top
:
15px
solid
#A2A2A2
;
border-bottom
:
15px
solid
transparent
;
border-left
:
5px
solid
#A2A2A2
;
border-right
:
5px
solid
transparent
;
}
.tss3
table
{
margin
:
24px
0
0
0
;
width
:
100%
;
border
:
none
;
border-color
:
rgba
(
151
,
151
,
151
,
0.18
);
border-collapse
:
collapse
;
}
.tss3
table
tr
{
position
:
relative
;
font-size
:
14px
;
line-height
:
20px
;
color
:
#333333
;
text-align
:
center
;
vertical-align
:
middle
;
}
.tss3
table
tr
.yellow
{
background
:
#FFFAF2
;
}
.tss3
table
tr
.gray
{
background
:
#F1F1F1
;
}
.tss3
table
tr
th
{
padding
:
14px
0
14px
0
;
background
:
#F1F1F1
;
}
.tss3
table
tr
td
{
padding
:
14px
0
14px
0
;
}
.tss3
table
tr
td
.gray
{
background
:
#F1F1F1
;
}
.tss3
table
tr
td
.text_red
{
color
:
#D00000
;
}
.tss3
table
tr
td
.text_green
{
color
:
#22A236
;
}
.tss3
table
tr
td
.summary
{
font-size
:
18px
;
line-height
:
25px
;
color
:
#333333
;
font-weight
:
bold
;
}
.tss3
.tss3_tip
{
margin
:
10px
0
0
0
;
font-size
:
12px
;
line-height
:
17px
;
color
:
#333333
;
}
/* 目标与业绩 */
.box3
{
display
:
{{
box3
}
}
;
}
.box3
.box3_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
/* 收益比较、相关性分析 */
.par
{
margin
:
47px
0
0
0
;
width
:
100%
;
}
.par
.par_item
{
width
:
540px
;
}
.par
.par_item
.par_title
{
font-size
:
24px
;
line-height
:
33px
;
color
:
#333333
;
font-weight
:
bold
;
margin
:
0
0
15px
0
;
}
.par
.par_item
.par_content
{
margin
:
18px
0
0
0
;
border
:
1px
solid
#E4E4E4
;
}
.par
.par_item
.par_content.relative_chart
{
padding
:
27px
30px
40px
30px
;
}
.par
.par_item
.par_content.relative_chart
table
{
width
:
100%
;
border-collapse
:
collapse
;
border
:
none
;
border-color
:
#D8D8D8
;
}
.par
.par_item
.par_content.relative_chart
table
td
{
padding
:
14px
0
14px
0
;
text-align
:
center
;
}
.par
.par_item
.par_content
.par_img
{
width
:
100%
;
}
.rcc_left
{
width
:
10%
;
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
}
.rcc_column
{
border
:
1px
solid
transparent
;
}
.rcc_n
{
border
:
1px
solid
transparent
;
margin
:
9px
;
width
:
20px
;
height
:
20px
;
border-radius
:
50%
;
background
:
#999999
;
font-size
:
12px
;
line-height
:
20px
;
color
:
#FFFFFF
;
text-align
:
center
;
}
.rcc_right
{
width
:
90%
;
}
.rcc_index
{
display
:
inline-block
;
margin
:
0
auto
;
width
:
20px
;
height
:
20px
;
border-radius
:
50%
;
background
:
rgba
(
53
,
63
,
83
,
0.5
);
font-size
:
12px
;
line-height
:
20px
;
color
:
#FFFFFF
;
text-align
:
center
;
}
.rcc_number
{
font-size
:
12px
;
line-height
:
18px
;
color
:
#666666
;
}
.rc_tooltip
{
margin
:
16px
0
0
0
;
text-align
:
center
;
}
.rct_color
{
display
:
inline-block
;
}
.rct_color_item
{
border
:
1
PX
solid
#FFFFFF
;
width
:
38px
;
height
:
11px
;
}
.rtc_number_item
{
margin
:
0
12px
0
0
;
font-size
:
12px
;
line-height
:
18px
;
color
:
#666666
;
}
.rct_number
{
display
:
inline-block
;
}
.rc_label
{
margin
:
16px
14px
0
14px
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
.rcl_item
{
width
:
50%
;
position
:
relative
;
margin
:
4px
0
4px
0
;
}
.rcl_item_number
{
position
:
absolute
;
top
:
2px
;
left
:
0
;
margin
:
0
8px
0
0
;
width
:
20px
;
height
:
20px
;
border-radius
:
50%
;
background
:
#999999
;
font-size
:
12px
;
line-height
:
20px
;
color
:
#FFFFFF
;
text-align
:
center
;
}
.rcl_item_name
{
padding
:
0
10px
0
30px
;
font-size
:
16px
;
line-height
:
24px
;
color
:
#333333
;
}
.level_color1
{
background
:
#993612
;
color
:
#993612
;
}
.level_color2
{
background
:
#C58E7B
;
color
:
#C58E7B
;
}
.level_color3
{
background
:
#E9D4CD
;
color
:
#E9D4CD
;
}
.level_color4
{
background
:
#C4E4E6
;
color
:
#C4E4E6
;
}
.level_color5
{
background
:
#87C8CB
;
color
:
#87C8CB
;
}
.level_color6
{
background
:
#129298
;
color
:
#129298
;
}
/* 业绩的明细 */
.box4
{
display
:
{{
box4
}
}
;
}
.box4
.box4_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
/* 个基点评 */
.box5
{
display
:
{{
box5
}
}
;
}
.box5
.box5_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
.geji_list_wrap
.self_item
{
background
:
#FFFFFF
;
-webkit-box-shadow
:
0px
8px
9px
0px
rgba
(
0
,
0
,
0
,
0.05
);
box-shadow
:
0px
8px
9px
0px
rgba
(
0
,
0
,
0
,
0.05
);
border-radius
:
8px
;
border
:
1px
solid
#E4E4E4
;
margin
:
0
0
34px
0
;
}
.geji_list_wrap
.self_item
:last-child
{
margin
:
0
0
0
0
;
}
.geji_list_wrap
.self_item
table
{
width
:
100%
;
}
.geji_list_wrap
.self_item
td
{
width
:
50%
;
}
.geji_list_wrap
.self_item
.self_item_left
{
padding
:
35px
36px
35px
0
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
{
display
:
inline-block
;
font-size
:
0
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
.self_title
{
position
:
relative
;
padding
:
0
10px
0
20px
;
font-size
:
24px
;
line-height
:
33px
;
color
:
#333333
;
font-weight
:
bold
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
.self_title
.self_title_tri
{
width
:
0
;
height
:
0
;
border-bottom
:
20px
solid
transparent
;
border-top
:
20px
solid
#6C71AA
;
border-right
:
5px
solid
transparent
;
border-left
:
5px
solid
#6C71AA
;
position
:
absolute
;
right
:
-10px
;
top
:
0
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
.self_type
{
margin
:
4px
0
0
0
;
padding
:
0
10px
0
10px
;
font-size
:
18px
;
line-height
:
26px
;
color
:
#4C4C4C
;
font-weight
:
bold
;
background
:
#E5E3E3
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
.self_type.red
{
color
:
#983612
;
background
:
#FFEAE2
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_header
.self_type.green
{
color
:
#22999F
;
background
:
#E2F7F8
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
{
margin
:
20px
0
0
20px
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
{
position
:
relative
;
margin
:
0
0
10px
0
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
:last-child
{
margin
:
0
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
.self_description_dot
{
position
:
absolute
;
left
:
0
;
top
:
8px
;
width
:
6px
;
height
:
6px
;
border-radius
:
50%
;
background
:
#CBCBCB
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
.self_description_text
{
font-size
:
16px
;
line-height
:
22px
;
color
:
#666666
;
text-align
:
justify
;
padding-left
:
18px
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
.self_description_text
.self_description_red
{
color
:
#983612
;
}
.geji_list_wrap
.self_item
.self_item_left
.self_description
.self_description_item
.self_description_text
.self_description_green
{
color
:
#129298
;
}
.geji_list_wrap
.self_item
.self_item_right
{
margin
:
30px
26px
30px
26px
;
}
.geji_list_wrap
.self_item
.self_item_right
.self_img
{
width
:
100%
;
}
/*持仓组合点评*/
.target_comment
{
margin
:
36px
0
0
0
;
}
.target_comment
.comment_title
{
display
:
inline-block
;
position
:
relative
;
padding
:
4px
10px
4px
20px
;
border-radius
:
8px
0
0px
0px
;
background
:
#B6172B
;
font-size
:
24px
;
line-height
:
33px
;
color
:
#FFFFFF
;
}
.target_comment
.comment_title
.comment_tri
{
width
:
0
;
height
:
0
;
border-top
:
20px
solid
transparent
;
border-bottom
:
20px
solid
#B6172B
;
border-left
:
10px
solid
#B6172B
;
border-right
:
10px
solid
transparent
;
position
:
absolute
;
right
:
-20px
;
bottom
:
0
;
}
.target_comment
.comment_content
{
padding
:
39px
26px
39px
26px
;
background
:
#F7F7F7
;
}
.target_comment
.comment_content
.comment_item
{
width
:
100%
;
position
:
relative
;
}
.target_comment
.comment_content
.comment_dot
{
position
:
absolute
;
top
:
16px
;
left
:
0px
;
width
:
8px
;
height
:
8px
;
border-radius
:
50%
;
background
:
#666666
;
}
.target_comment
.comment_content
.comment_text
{
padding-left
:
24px
;
font-size
:
18px
;
line-height
:
42px
;
color
:
#666666
;
}
.target_comment
.comment_content
.comment_text
.comment_tag_red
{
color
:
#A75435
;
}
.target_comment
.comment_content
.comment_text
.comment_tag_green
{
color
:
#129298
;
}
/* 优化组合建议 */
.box6
{
display
:
{{
box6
}
}
;
}
.box6
.box6_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
/* 新增基金 */
.box7
{
display
:
{{
box7
}
}
;
}
.box7
.box7_content
{
padding
:
47px
34px
61px
34px
;
page-break-after
:
always
;
}
/* 结尾 */
.box8
{
display
:
{{
box8
}
}
;
}
.box8
.box8_content
{
padding
:
60px
0
60px
0
;
}
.financial_show
.financial_left
{
width
:
763px
;
background
:
#B6172B
;
padding
:
58px
0
48px
0
;
overflow
:
hidden
;
}
.financial_show
.financial_left
.financial_scene
{
width
:
763px
;
border-top
:
1px
solid
#B6172B
;
border-bottom
:
1px
solid
#B6172B
;
position
:
relative
;
height
:
305px
;
overflow
:
hidden
;
}
.financial_show
.financial_left
.financial_scene
.financial_scene_img
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
-o-object-fit
:
cover
;
object-fit
:
cover
;
}
.financial_show
.financial_left
.financial_scene
.financial_scene_text
{
margin
:
31px
77px
0
79px
;
font-size
:
26px
;
line-height
:
49px
;
color
:
#FFFFFF
;
letter-spacing
:
4px
;
position
:
relative
;
z-index
:
1
;
}
.financial_show
.financial_left
.financial_scene
.financial_scene_author
{
margin
:
0
77px
34px
79px
;
font-size
:
26px
;
line-height
:
49px
;
color
:
#FFFFFF
;
text-align
:
right
;
position
:
relative
;
z-index
:
1
;
}
.financial_show
.financial_show_right
{
width
:
437px
;
background
:
#F7F7F7
;
padding
:
58px
0
48px
0
;
overflow
:
hidden
;
}
.financial_show
.financial_show_right
.financial_team
{
width
:
437px
;
height
:
305px
;
text-align
:
center
;
overflow
:
hidden
;
}
.financial_show
.financial_show_right
.financial_team
.financial_team_img
{
/*width: 100%;*/
/*height: 100%;*/
/*-o-object-fit: cover;*/
/*object-fit: cover;*/
width
:
auto
;
height
:
100%
;
-o-object-fit
:
cover
;
object-fit
:
cover
;
}
.statement_content
{
padding
:
27px
31px
0
31px
;
}
.statement_content
.statement_block
{
margin
:
0
0
20px
0
;
}
.statement_content
.statement_block
.statement_title
{
margin
:
0
0
10px
0
;
font-size
:
10px
;
line-height
:
27px
;
color
:
#717171
;
font-weight
:
bold
;
text-align
:
justify
;
}
.statement_content
.statement_block
.statement_p
{
margin
:
0
0
10px
0
;
font-size
:
10px
;
line-height
:
27px
;
color
:
#717171
;
text-align
:
justify
;
}
.statement_content
.statement_block
.statement_title2
{
font-size
:
10px
;
line-height
:
27px
;
color
:
#333333
;
font-weight
:
bold
;
text-align
:
justify
;
}
</style>
</head>
<body>
<div
class=
"all"
>
<!-- 封面 -->
<div
class=
"box0"
>
<div
class=
"cover_head dtable"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"cover_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"cover_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"cover_text"
>
小飞象
<br>
工作室
</div>
</div>
</div>
<div
class=
"cover_people"
>
<span
class=
"cover_pre"
>
敬呈
</span>
<span
class=
"cover_name"
>
{{customer_name}}
</span>
<span
class=
"cover_sir"
>
客户
</span>
</div>
<img
src=
{{cover_back}}
alt=
""
class=
"cover_back"
>
<div
class=
"cover_date"
>
<div
class=
"cover_time"
>
{{year_month}}
</div>
</div>
<div
class=
"cover_title dtable"
>
<div
class=
"cover_title_text dcell"
>
资产
<br>
存续报告
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 目录 -->
<div
class=
"box1"
>
<div
class=
"catalog_line"
></div>
<div
class=
"catalog_box dtable"
>
<div
class=
"catalog_item dcell"
>
<div
class=
"catalog_en"
>
Contents
</div>
<div
class=
"catalog_ch"
>
目录
</div>
</div>
<div
class=
"catalog_item dcell"
>
<div
class=
"catalog_li"
>
<div
class=
"catalog_dot"
></div>
<div
class=
"catalog_name"
>
投资总览
</div>
</div>
<div
class=
"catalog_li"
>
<div
class=
"catalog_dot"
></div>
<div
class=
"catalog_name"
>
目标与业绩
</div>
</div>
<div
class=
"catalog_li"
>
<div
class=
"catalog_dot"
></div>
<div
class=
"catalog_name"
>
业绩的明细
</div>
</div>
<div
class=
"catalog_li"
>
<div
class=
"catalog_dot"
></div>
<div
class=
"catalog_name"
>
优化建议
</div>
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 投资总览 -->
<div
class=
"box2"
style=
"page-break-before:always;"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
投资总览
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box2_content"
>
<!-- 组合投资表现 -->
<div
class=
"tss1"
style=
"margin: 0;"
>
<div
class=
"tss1_title"
>
组合投资表现
</div>
<table
class=
"tss1_table"
>
<tr>
<td>
{%if month_rise>=0%}
本月涨幅:
<span
class=
"red"
>
{{month_rise}}%
</span>
{%else%}
本月涨幅:
<span
class=
"green"
>
{{month_rise}}%
</span>
{%endif%}
</td>
<td>
{%if now_month_income>=0%}
本月收益:
<span
class=
"red"
>
{{now_month_income}}元
</span>
{%else%}
本月收益:
<span
class=
"green"
>
{{now_month_income}}元
</span>
{%endif%}
</td>
<td>
{%if year_totoal_rate_of_return>=0%}
今年累计收益率:
<span
class=
"red"
>
{{year_totoal_rate_of_return}}%
</span>
{%else%}
今年累计收益率:
<span
class=
"green"
>
{{year_totoal_rate_of_return}}%
</span>
{%endif%}
</td>
<td>
{%if now_year_income>=0%}
今年累计收益:
<span
class=
"red"
>
{{now_year_income}}元
</span>
{%else%}
今年累计收益:
<span
class=
"green"
>
{{now_year_income}}元
</span>
{%endif%}
</td>
</tr>
<tr>
<td>
{%if totoal_rate_of_return>=0%}
成立以来累计收益率:
<span
class=
"red"
>
{{totoal_rate_of_return}}%
</span>
{%else%}
成立以来累计收益率:
<span
class=
"green"
>
{{totoal_rate_of_return}}%
</span>
{%endif%}
</td>
<td>
{%if now_annualised_return>=0%}
年化收益率:
<span
class=
"red"
>
{{now_annualised_return}}%
</span>
{%else%}
年化收益率:
<span
class=
"green"
>
{{now_annualised_return}}%
</span>
{%endif%}
</td>
<td>
{%if now_withdrawal>=0%}
最大回撤:
<span
class=
"red"
>
{{now_withdrawal}}%
</span>
{%else%}
最大回撤:
<span
class=
"green"
>
{{now_withdrawal}}%
</span>
{%endif%}
</td>
<td>
</td>
</tr>
</table>
</div>
<!-- 资产盈亏情况 -->
<div
class=
"tss1"
>
<div
class=
"tss1_title"
>
资产盈亏情况
</div>
<table
class=
"tss1_table"
>
<tr>
<td>
投资成本:
<span
class=
"red"
>
{{now_allocation_amount}}元
</span>
</td>
<td>
{%if final_balance>=now_allocation_amount%}
期末资产:
<span
class=
"red"
>
{{final_balance}}元
</span>
{%else%}
期末资产:
<span
class=
"green"
>
{{final_balance}}元
</span>
{%endif%}
</td>
<td>
{%if total_profit>=0%}
累计盈利:
<span
class=
"red"
>
{{total_profit}}元
</span>
{%else%}
累计盈利:
<span
class=
"green"
>
{{total_profit}}元
</span>
{%endif%}
</td>
<td>
</td>
</tr>
</table>
</div>
<!-- 组合月度及累计回报率曲线 -->
<div
class=
"tss2"
>
<div
class=
"tss2_title"
>
组合月度及累计回报率曲线
</div>
<div
class=
"tss2_content"
>
<img
src=
{{monthly_return_performance_pic}}
alt=
""
class=
"tss2_img"
>
</div>
</div>
<!-- 组合月度及累计回报率曲线 -->
<div
class=
"tss3"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
组合月度及累计回报率曲线
</div>
</div>
<table
border=
"1"
>
<tr>
<th>
年份
</th>
<th>
金额(万)
</th>
<th>
1月
</th>
<th>
2月
</th>
<th>
3月
</th>
<th>
4月
</th>
<th>
5月
</th>
<th>
6月
</th>
<th>
7月
</th>
<th>
8月
</th>
<th>
9月
</th>
<th>
10月
</th>
<th>
11月
</th>
<th>
12月
</th>
<!-- <th>-->
<!-- 累计/月均-->
<!-- </th>-->
</tr>
{%for key, value in monthly_table_return.items() %}
<tr
class=
"yellow"
>
<td
rowspan=
"2"
class=
"gray"
>
{{key}}
</td>
<td>
盈亏
</td>
<td
class=
"text_red"
>
{{value[1]["profit"]}}
</td>
<td
class=
"text_green"
>
{{value[2]["profit"]}}
</td>
<td>
{{value[3]["profit"]}}
</td>
<td>
{{value[4]["profit"]}}
</td>
<td>
{{value[5]["profit"]}}
</td>
<td>
{{value[6]["profit"]}}
</td>
<td>
{{value[7]["profit"]}}
</td>
<td>
{{value[8]["profit"]}}
</td>
<td>
{{value[9]["profit"]}}
</td>
<td>
{{value[10]["profit"]}}
</td>
<td>
{{value[11]["profit"]}}
</td>
<td>
{{value[12]["profit"]}}
</td>
</tr>
<tr>
<td>
期末资产
</td>
<td
class=
"text_red"
>
{{value[1]["net_amount"]}}
</td>
<td
class=
"text_green"
>
{{value[2]["net_amount"]}}
</td>
<td>
{{value[3]["net_amount"]}}
</td>
<td>
{{value[4]["net_amount"]}}
</td>
<td>
{{value[5]["net_amount"]}}
</td>
<td>
{{value[6]["net_amount"]}}
</td>
<td>
{{value[7]["net_amount"]}}
</td>
<td>
{{value[8]["net_amount"]}}
</td>
<td>
{{value[9]["net_amount"]}}
</td>
<td>
{{value[10]["net_amount"]}}
</td>
<td>
{{value[11]["net_amount"]}}
</td>
<td>
{{value[12]["net_amount"]}}
</td>
</tr>
{%endfor%}
</table>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 目标与业绩 -->
<div
class=
"box3"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
目标与业绩
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box3_content"
>
<!-- 投资目标 -->
<div
class=
"tss3"
style=
"margin: 0;"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
投资目标
</div>
</div>
<table
border=
"1"
>
<tr>
<th>
现有配置资金(万元)
</th>
<th>
现有年化收益情况(%)
</th>
<th>
现有最大回撤(%)
</th>
</tr>
<tr>
<td>
{{cost_of_investment}}
</td>
<td>
{{annualised_return}}
</td>
<td>
{{index_comparison["max_withdrawal"]}}
</td>
</tr>
</table>
<table
border=
"1"
style=
"margin: 0;"
>
<tr>
<th>
计划配置资金(万元)
</th>
<th>
目标年化收益情况(%)
</th>
<th>
目标最大回撤(%)
</th>
</tr>
<tr>
<td>
{{cost_of_investment}}
</td>
<td>
5%-10%
</td>
<td>
5%-10%
</td>
</tr>
</table>
</div>
<!-- 指标对比 -->
<div
class=
"tss3"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
指标对比
<span
class=
"tss3_start_time"
>
(起始日期{{start_date}})
</span>
</div>
<div
class=
"tss3_now_time dcell"
>
截止日:最新净值日({{latest_worth_day}})
</div>
</div>
<table
border=
"1"
>
<tr>
<th>
类型
</th>
<th>
区间收益(%)
</th>
<th>
年化收益(%)
</th>
<th>
波动率(%)
</th>
<th>
最大回撤(%)
</th>
<th>
夏普比率
</th>
</tr>
<tr>
<tr
class=
"yellow"
>
<td>
{{old_indicator_compare[0]["group_name"]}}
</td>
<td>
{{old_indicator_compare[0]["return_ratio"]}}
</td>
<td>
{{old_indicator_compare[0]["return_ratio_year"]}}
</td>
<td>
{{old_indicator_compare[0]["volatility"]}}
</td>
<td>
{{old_indicator_compare[0]["max_drawdown"]}}
</td>
<td>
{{old_indicator_compare[0]["sharpe"]}}
</td>
</tr>
<tr
>
<td>
{{old_indicator_compare[1]["group_name"]}}
</td>
<td>
{{old_indicator_compare[1]["return_ratio"]}}
</td>
<td>
{{old_indicator_compare[1]["return_ratio_year"]}}
</td>
<td>
{{old_indicator_compare[1]["volatility"]}}
</td>
<td>
{{old_indicator_compare[1]["max_drawdown"]}}
</td>
<td>
{{old_indicator_compare[1]["sharpe"]}}
</td>
</tr>
</table>
<div
class=
"tss3_tip"
>
注:以上指标自持仓首日开始计算,结果仅供参考,如果持仓时间过短会造成指标失真的情况。
</div>
</div>
<!-- 收益比较、相关性分析 -->
<div
class=
"par clearfix"
cellpadding=
"38"
>
<div
class=
"par_item fl"
>
<div
class=
"par_title"
>
收益比较
</div>
<div
class=
"par_content"
>
<img
src=
{{old_return_compare_pic}}
alt=
""
class=
"par_img"
>
</div>
</div>
<div
class=
"par_item fr"
>
<div
class=
"par_title"
>
相关性分析
</div>
<div
class=
"par_content relative_chart"
>
<div
class=
"rc_chart clearfix"
>
<div
class=
"rcc_left fl"
>
<table
border=
"1"
style=
"border-color: transparent;margin-right: 20px;"
>
{% for correlation in old_correlation %}
<tr>
<td>
<span
class=
"rcc_index"
>
{{correlation[0]}}
</span>
</td>
</tr>
{% endfor %}
</table>
</div>
<div
class=
"rcc_right fr"
>
<table
border=
"1"
>
{% for correlation in old_correlation %}
<tr>
{% for i in range(correlation[2]|length) %}
{% if i == correlation[0] - 1 %}
<td>
<span
class=
"rcc_index"
>
{{correlation[0]}}
</span>
</td>
{% elif -1
<
=
correlation
[
2
][
i
]
<
-0
.
5
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -1
<
=
correlation
[
2
][
i
]
<
-0
.
5
%}
<
td
class=
"level_color6"
>
{{correlation[2][i]}}
</td>
{% elif -0.5
<
=
correlation
[
2
][
i
]
<
-0
.
25
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -0.5
<
=
correlation
[
2
][
i
]
<
-0
.
25
%}
<
td
class=
"level_color5"
>
{{correlation[2][i]}}
</td>
{% elif -0.25
<
=
correlation
[
2
][
i
]
<
0
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -0.25
<
=
correlation
[
2
][
i
]
<
0
%}
<
td
class=
"level_color4"
>
{{correlation[2][i]}}
</td>
{% elif 0
<
=
correlation
[
2
][
i
]
<
0
.
25
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0
<
=
correlation
[
2
][
i
]
<
0
.
25
%}
<
td
class=
"level_color3"
>
{{correlation[2][i]}}
</td>
{% elif 0.25
<
=
correlation
[
2
][
i
]
<
0
.
5
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0.25
<
=
correlation
[
2
][
i
]
<
0
.
5
%}
<
td
class=
"level_color2"
>
{{correlation[2][i]}}
</td>
{% elif 0.5
<
=
correlation
[
2
][
i
]
<=
1
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0.5
<
=
correlation
[
2
][
i
]
<=
1
%}
<
td
class=
"level_color1"
>
{{correlation[2][i]}}
</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</table>
</div>
</div>
<div
class=
"rc_tooltip"
>
<div
class=
"rct_color clearfix"
>
<div
class=
"rct_color_item fl level_color1"
></div>
<div
class=
"rct_color_item fl level_color2"
></div>
<div
class=
"rct_color_item fl level_color3"
></div>
<div
class=
"rct_color_item fl level_color4"
></div>
<div
class=
"rct_color_item fl level_color5"
></div>
<div
class=
"rct_color_item fl level_color6"
></div>
</div>
</div>
<div
class=
"rc_tooltip"
style=
"margin: 0;"
>
<div
class=
"rct_number clearfix"
>
<div
class=
"rtc_number_item fl"
>
1.00
</div>
<div
class=
"rtc_number_item fl"
>
0.50
</div>
<div
class=
"rtc_number_item fl"
>
0.25
</div>
<div
class=
"rtc_number_item fl"
>
0.00
</div>
<div
class=
"rtc_number_item fl"
>
-0.25
</div>
<div
class=
"rtc_number_item fl"
>
-0.50
</div>
<div
class=
"rtc_number_item fl"
>
-1.00
</div>
</div>
</div>
<div
class=
"rc_label clearfix"
>
{% for correlation in old_correlation %}
<div
class=
"rcl_item fl"
>
<div
class=
"rcl_item_number"
>
{{correlation[0]}}
</div>
<div
class=
"rcl_item_name"
>
{{correlation[1]}}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 业绩的明细 -->
<div
class=
"box4"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
业绩的明细
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box4_content"
>
<!-- 持仓收益汇总 -->
<div
class=
"tss3"
style=
"margin: 0;"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
持仓收益汇总
</div>
<div
class=
"tss3_now_time dcell"
>
截止日:最新净值日({{latest_worth_day}})
</div>
</div>
<div
style=
"position: relative;"
>
<div
class=
"tss3_tag"
>
私募基金
<div
class=
"tss3_tri"
></div>
</div>
<table
border=
"1"
>
<tr>
<th
colspan=
"5"
>
投资本金
</th>
<th
colspan=
"4"
>
{{month}}月业绩
</th>
<th
colspan=
"3"
>
累计业绩
</th>
</tr>
<tr>
<th>
投资策略
</th>
<th>
基金简称
</th>
<th>
买入时间
</th>
<th>
存续年数
</th>
<th>
投资本金 (万)
</th>
<th>
当月收益 (万)
</th>
<th>
当月收益率 (%)
</th>
<th>
月末市值 (万)
</th>
<th>
月末占比 (%)
</th>
<th>
累计收益 (万)
</th>
<th>
累计收益率 (%)
</th>
<th>
年化收益率 (%)
</th>
</tr>
{% for one in group_hoding_info %}
<tr>
<td
rowspan=
"1"
>
{{one.fund_strategy_name}}
</td>
<td>
{{one.fund_name}}
</td>
<td>
{{one.confirm_date}}
</td>
<td>
{{one.hold_year}}
</td>
<td>
{{one.cost}}
</td>
<td>
{{one.profit}}
</td>
<td>
{{one.month_return_ratio}}
</td>
<td>
{{one.market_values}}
</td>
<td>
{{one.weight}}
</td>
<td>
{{one.cum_profit}}
</td>
<td>
{{one.cum_profit_ratio}}
</td>
<td>
{{one.return_ratio_year}}
</td>
</tr>
{% endfor %}
<tr
class=
"gray"
>
<td
colspan=
"4"
>
总计
</td>
<td>
{{group_hoding_info_total["total_cost"]}}
</td>
<td>
{{group_hoding_info_total["cur_month_profit"]}}
</td>
<td>
{{group_hoding_info_total["cur_month_profit_ratio"]}}
</td>
<td>
{{group_hoding_info_total["ending_assets"]}}
</td>
<td>
100%
</td>
<td>
{{group_hoding_info_total["cumulative_profit"]}}
</td>
<td>
{{group_hoding_info_total["cumulative_return"]}}
</td>
<td>
{{group_hoding_info_total["return_ratio_year"]}}
</td>
</tr>
</table>
</div>
</div>
<!-- 基金净值 -->
<div
class=
"tss3"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
基金净值
</div>
<div
class=
"tss3_now_time dcell"
>
截止日:最新净值日({{latest_worth_day}})
</div>
</div>
<table
border=
"1"
>
<tr>
<th
rowspan=
"2"
>
基金简称
</th>
<th
rowspan=
"2"
>
申购净值
</th>
<th
colspan=
"2"
>
最新净值({{latest_worth_day}})
</th>
<th
colspan=
"7"
>
收益率(%)
</th>
<th
rowspan=
"2"
>
分红
</th>
</tr>
<tr>
<th>
单位净值
</th>
<th>
累计净值
</th>
<th>
较上周
</th>
<th>
申购以来
</th>
<th>
近一月
</th>
<th>
近半年
</th>
<th>
近一年
</th>
<th>
今年以来
</th>
<th>
成立以来
</th>
</tr>
{% for nav_info in group_nav_info %}
<tr>
<td>
{{nav_info['fund_name']}}
</td>
<td>
{{nav_info['confirm_nav']}}
</td>
<td>
{{nav_info['cur_nav']}}
</td>
<td>
{{nav_info['cur_cnav']}}
</td>
<td>
{{nav_info['ret_1w']}}
</td>
<td>
{{nav_info['ret_after_confirm']}}
</td>
<td>
{{nav_info['ret_cum_1m']}}
</td>
<td>
{{nav_info['ret_cum_6m']}}
</td>
<td>
{{nav_info['ret_cum_1y']}}
</td>
<td>
{{nav_info['ret_cum_ytd']}}
</td>
<td>
{{nav_info['ret_cum_incep']}}
</td>
<td>
{{nav_info['distribution']}}
</td>
</tr>
{% endfor %}
</table>
</div>
<!-- 贡献分解 -->
<div
class=
"page dtable"
style=
"page-break-before:always;"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"tss2"
>
<div
class=
"tss2_title"
>
贡献分解
</div>
<div
class=
"tss2_content"
>
<img
src=
{{contribution_decomposition}}
alt=
""
class=
"tss2_img"
>
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 个基点评 -->
<div
class=
"box5"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
个基点评
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box5_content"
>
<div
class=
"geji_list_wrap"
>
{% for i in range(single_fund_data_list|length) %}
{% if (i+1) % 3 == 1 and i != 0%}
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
{% endif %}
{% if (i+1) % 3 == 0 and i != 0%}
<div
class=
"self_item"
style=
"page-break-after:always;"
>
{% else %}
<div
class=
"self_item"
>
{% endif %}
<table>
<tr>
<td
style=
"padding: 0;text-align: left;vertical-align: middle;"
>
<div
class=
"self_item_left"
>
<div
class=
"self_header clearfix"
>
<div
class=
"self_title fl"
>
{{single_fund_data_list[i].fund_name}}
</div>
<!-- {{single_fund_data_list[i].status}}-->
</div>
<div
class=
"self_description"
>
{% for one in single_fund_data_list[i].evaluation %}
<div
class=
"self_description_item"
>
<div
class=
"self_description_dot"
></div>
<div
class=
"self_description_text"
>
{{one}}
</div>
</div>
{% endfor %}
</div>
</div>
</td>
<td
style=
"padding: 0;text-align: left;vertical-align: middle;"
>
<div
class=
"self_item_right"
>
<img
src=
{{single_fund_data_list[i].radar_chart_path}}
alt=
""
class=
"self_img"
>
</div>
</td>
</tr>
</table>
</div>
{% endfor %}
</div>
<!-- 持仓点评 -->
{% if single_fund_data_list|length % 3 == 0 and single_fund_data_list|length != 0%}
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
{% endif %}
<div
class=
"target_comment"
>
<div
class=
"comment_title"
>
持仓点评
<div
class=
"comment_tri"
></div>
</div>
<div
class=
"comment_content"
>
{% for eval in old_evaluation %}
<div
class=
"comment_item"
>
<div
class=
"comment_dot"
></div>
<div
class=
"comment_text"
>
{{eval}}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 优化组合建议 -->
<div
class=
"box6"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
优化组合建议
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box6_content"
>
<!-- 调仓建议 -->
<div
class=
"tss3"
style=
"margin: 0;"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
调仓建议
</div>
</div>
<table
border=
"1"
>
<tr>
<th>
投资策略
</th>
<th>
基金简称
</th>
<th>
优化前(万元)
</th>
<th>
优化后(万元)
</th>
</tr>
{% for key, value in suggestions_result.items() %}
{% for i in range(value|length) %}
<tr>
{% if i == 0%}
<td
rowspan=
{{value|length
}}
>
{{key}}
</td>
{% endif %}
<td>
{{value[i]["fund_name"]}}
</td>
<td
class=
"font_red"
>
{{value[i]["before_optimization"]}}
</td>
<td
class=
"font_green"
>
{{value[i]["after_optimization"]}}
</td>
</tr>
{% endfor %}
{% endfor %}
<tr>
<td
colspan=
"2"
class=
"gray"
>
总市值(万元)
</td>
<td
class=
"summary"
>
{{suggestions_result_asset["before"]}}
</td>
<td
class=
"summary"
>
{{suggestions_result_asset["after"]}}
</td>
</tr>
</table>
</div>
<!-- 指标对比 -->
<div
class=
"tss3"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
指标对比
<span
class=
"tss3_start_time"
>
(起始日期2019-11-06)
</span>
</div>
<div
class=
"tss3_now_time dcell"
>
截止日:最新净值日({{latest_worth_day}})
</div>
</div>
<table
border=
"1"
>
<tr>
<th>
类型
</th>
<th>
区间收益(%)
</th>
<th>
年化收益(%)
</th>
<th>
波动率(%)
</th>
<th>
最大回撤(%)
</th>
<th>
夏普比率
</th>
</tr>
{%for i in range(indicator_compare|length)%}
{%if i
<
(
indicator_compare
|
length
)
-1
%}
{%
if
i
%
2=
=0
%}
<
tr
>
{%endif%}
{%if i%2==1 %}
<tr
class=
"yellow"
>
{%endif%}
{%endif%}
<td>
{{indicator_compare[i]["group_name"]}}
</td>
<td>
{{indicator_compare[i]["return_ratio"]}}
</td>
<td>
{{indicator_compare[i]["return_ratio_year"]}}
</td>
<td>
{{indicator_compare[i]["volatility"]}}
</td>
<td>
{{indicator_compare[i]["max_drawdown"]}}
</td>
<td>
{{indicator_compare[i]["sharpe"]}}
</td>
</tr>
{% endfor %}
</table>
<div
class=
"tss3_tip"
>
注:以上指标自持仓首日开始计算,结果仅供参考,如果持仓时间过短会造成指标失真的情况。
</div>
</div>
<!-- 收益比较、相关性分析 -->
<div
class=
"page dtable"
style=
"page-break-before:always;"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"par clearfix"
cellpadding=
"38"
>
<div
class=
"par_item fl"
>
<div
class=
"par_title"
>
收益比较
</div>
<div
class=
"par_content"
>
<img
src=
{{return_compare_pic}}
alt=
""
class=
"par_img"
>
</div>
</div>
<div
class=
"par_item fr"
>
<div
class=
"par_title"
>
相关性分析
</div>
<div
class=
"par_content relative_chart"
>
<div
class=
"rc_chart clearfix"
>
<div
class=
"rcc_left fl"
>
<table
border=
"1"
style=
"border-color: transparent;margin-right: 20px;"
>
{% for correlation in new_correlation %}
<tr>
<td>
<span
class=
"rcc_index"
>
{{correlation[0]}}
</span>
</td>
</tr>
{% endfor %}
</table>
</div>
<div
class=
"rcc_right fr"
>
<table
border=
"1"
>
{% for correlation in new_correlation %}
<tr>
{% for i in range(correlation[2]|length) %}
{% if i == correlation[0] - 1 %}
<td>
<span
class=
"rcc_index"
>
{{correlation[0]}}
</span>
</td>
{% elif -1
<
=
correlation
[
2
][
i
]
<
-0
.
5
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -1
<
=
correlation
[
2
][
i
]
<
-0
.
5
%}
<
td
class=
"level_color6"
>
{{correlation[2][i]}}
</td>
{% elif -0.5
<
=
correlation
[
2
][
i
]
<
-0
.
25
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -0.5
<
=
correlation
[
2
][
i
]
<
-0
.
25
%}
<
td
class=
"level_color5"
>
{{correlation[2][i]}}
</td>
{% elif -0.25
<
=
correlation
[
2
][
i
]
<
0
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif -0.25
<
=
correlation
[
2
][
i
]
<
0
%}
<
td
class=
"level_color4"
>
{{correlation[2][i]}}
</td>
{% elif 0
<
=
correlation
[
2
][
i
]
<
0
.
25
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0
<
=
correlation
[
2
][
i
]
<
0
.
25
%}
<
td
class=
"level_color3"
>
{{correlation[2][i]}}
</td>
{% elif 0.25
<
=
correlation
[
2
][
i
]
<
0
.
5
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0.25
<
=
correlation
[
2
][
i
]
<
0
.
5
%}
<
td
class=
"level_color2"
>
{{correlation[2][i]}}
</td>
{% elif 0.5
<
=
correlation
[
2
][
i
]
<=
1
and
i
<
correlation
[
0
]
-
1
%}
<
td
>
{{correlation[2][i]}}
</td>
{% elif 0.5
<
=
correlation
[
2
][
i
]
<=
1
%}
<
td
class=
"level_color1"
>
{{correlation[2][i]}}
</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</table>
</div>
</div>
<div
class=
"rc_tooltip"
>
<div
class=
"rct_color clearfix"
>
<div
class=
"rct_color_item fl level_color1"
></div>
<div
class=
"rct_color_item fl level_color2"
></div>
<div
class=
"rct_color_item fl level_color3"
></div>
<div
class=
"rct_color_item fl level_color4"
></div>
<div
class=
"rct_color_item fl level_color5"
></div>
<div
class=
"rct_color_item fl level_color6"
></div>
</div>
</div>
<div
class=
"rc_tooltip"
style=
"margin: 0;"
>
<div
class=
"rct_number clearfix"
>
<div
class=
"rtc_number_item fl"
>
1.00
</div>
<div
class=
"rtc_number_item fl"
>
0.50
</div>
<div
class=
"rtc_number_item fl"
>
0.25
</div>
<div
class=
"rtc_number_item fl"
>
0.00
</div>
<div
class=
"rtc_number_item fl"
>
-0.25
</div>
<div
class=
"rtc_number_item fl"
>
-0.50
</div>
<div
class=
"rtc_number_item fl"
>
-1.00
</div>
</div>
</div>
<div
class=
"rc_label clearfix"
>
{% for correlation in new_correlation %}
<div
class=
"rcl_item fl"
>
<div
class=
"rcl_item_number"
>
{{correlation[0]}}
</div>
<div
class=
"rcl_item_name"
>
{{correlation[1]}}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 新增基金 -->
<div
class=
"box7"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
新增基金
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box7_content"
>
<div
class=
"geji_list_wrap"
>
{% for i in range(propose_fund_data_list|length) %}
{% if (i+1) % 3 == 1 and i != 0%}
<div
class=
"page dtable"
style=
"page-break-before:always;"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"self_item"
>
{% else %}
<div
class=
"self_item"
>
{% endif %}
<table>
<tr>
<td
style=
"padding: 0;text-align: left;vertical-align: middle;"
>
<div
class=
"self_item_left"
>
<div
class=
"self_header clearfix"
>
<div
class=
"self_title fl"
>
{{propose_fund_data_list[i].fund_name}}
</div>
</div>
<div
class=
"self_description"
>
{% for one in propose_fund_data_list[i].evaluation %}
<div
class=
"self_description_item"
>
<div
class=
"self_description_dot"
></div>
<div
class=
"self_description_text"
>
{{one}}
</div>
</div>
{% endfor %}
</div>
</div>
</td>
<td
style=
"padding: 0;text-align: left;vertical-align: middle;"
>
<div
class=
"self_item_right"
>
<img
src=
{{propose_fund_data_list[i].radar_chart_path}}
alt=
""
class=
"self_img"
>
</div>
</td>
</tr>
</table>
</div>
{% endfor %}
</div>
<!-- 持仓点评 -->
<div
class=
"target_comment"
>
<div
class=
"comment_title"
>
优化方案点评
<div
class=
"comment_tri"
></div>
</div>
<div
class=
"comment_content"
>
<div
class=
"comment_item"
>
<div
class=
"comment_dot"
></div>
<div
class=
"comment_text"
>
{{new_group_evaluation}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box_line"
></div>
<!-- 结尾 -->
<div
class=
"box8"
>
<div
class=
"page dtable"
>
<div
class=
"page_title dcell"
>
</div>
<div
class=
"page_head dcell"
>
<div
class=
"dcell"
>
<img
src=
{{logo}}
alt=
""
class=
"page_logo"
>
</div>
<div
class=
"dcell"
>
<div
class=
"page_line"
></div>
</div>
<div
class=
"dcell"
>
<div
class=
"page_text"
>
{{brand_name}}
</div>
</div>
</div>
</div>
<div
class=
"box8_content"
>
<div
class=
"financial_show dtable"
>
<div
class=
"financial_left dcell"
>
<div
class=
"financial_scene"
>
<img
src=
{{scene}}
alt=
""
class=
"financial_scene_img"
>
<div
class=
"financial_scene_text"
>
我们挣的是⻆度和变化的钱⽽不是纠正市场错 误的钱,市场永远是正确的,关键是在其正确 被反复证明后的逆向⽽⾏,⼀定是避开它的正 确被展开的过程 。
</div>
<div
class=
"financial_scene_author"
>
——飞度
</div>
</div>
</div>
<div
class=
"financial_show_right dcell"
>
<div
class=
"financial_team"
>
<img
src=
{{team}}
alt=
""
class=
"financial_team_img"
>
</div>
</div>
</div>
<div
class=
"statement_content"
>
<div
class=
"statement_block"
>
<div
class=
"statement_title"
>
探普研究院声明
</div>
<div
class=
"statement_p"
>
本诊断报告所表述的任何观点均准确地反应了研究人员的看法;该研究人员所得报酬的任何组成部分无论是过去、现在、或者将来均不会直接或间接地与研究报告所表述的建议或观点相联系。
</div>
</div>
<div
class=
"statement_block"
>
<div
class=
"statement_title"
>
一般性声明
</div>
<div
class=
"statement_p"
>
本报告对于收件人而言属于高度机密,只有收件人才能使用。本报告并非意图发送、发布给在
当地法律或监管规则下不允许向其发送、发布该研究报告的人员。本研究报告仅供参考之用,在任何地区均不应被视为买卖任何证券、金融工具、基金、以及其他理财产品的要约或要约邀请。探普研究院并不因收件人收到本报告而视其为客户。本报告所包含的观点及建议并未考虑个别客户的特殊状况、目标或需要,不应视为对特定客户关于特定证券或金融工具、基金、以及其他理财产品的购买建议或策略。对于本报告中提及的任何证券、金融工具、基金、以及其他理财产品,本报告的
收件人须保持自身的独立判断。
</div>
<div
class=
"statement_p"
>
本报告所载资料的来源被认为是可靠的,但探普研究院不保证其准确性或完整性,并不对使用本报告所包含的材料产生任何直接或间接损失或与此有关的其他损失承担任何责任。本报告提及的任何证券、金融工具、基金或其他理财产品均可能含有巨大的风险,可能不易变卖以及不适合所有的投资者。本报告所提及的证券、金融工具、基金或其他理财产品的价格、价值以及收益可能会受
汇率影响而波动。过往的业绩也不能代表未来的表现。
</div>
<div
class=
"statement_p"
>
本报告所载的资料、观点以及预测分析均反映了探普研究院在最初报告发布日期当日的判断,可以在不发出通知的情况下做出更改、亦可因使用不同假设和标准、采用不同观点和分析方法而与市场上其他机构、部门、单位、个人在制作类似的其他材料时所给出的意见不同或者相反。探普研究院以及关联公司、单位并不承担提示本报告收件人注意该等材料的责任。负责撰写本报告研究人员薪酬并不基于任何金融产品的销售情况而定,但其薪酬可能会与我司的整体收入有关。
</div>
<div
class=
"statement_p"
>
若以探普研究院以外的机构或个人发送本报告,则由该机构或个人为此发送行为承担全部责任。该机构或个人应联系相关机构以交易本报告中提及的证券、金融工具、基金、其他理财产品获悉更详细信息。本报告不构成探普研究院向发送本报告的机构或个人的客户提供的投资建议,探普研究院以及关联单位、公司中的各个高级职员、董事、员工亦不为(前述机构或个人)因使用本报告或报告载明的内容产生的直接或间接损失承担任何责任。
</div>
</div>
<div
class=
"statement_block"
>
<div
class=
"statement_title2"
>
未经探普研究院事先书面授权,任何人不得以任何目的复制、发送或者销售本报告。探普研究院 2020 版权所有,保留一切权利。
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
app/utils/draw.py
View file @
e04a86bf
...
@@ -12,11 +12,14 @@ from urllib import parse
...
@@ -12,11 +12,14 @@ from urllib import parse
from
io
import
BytesIO
from
io
import
BytesIO
import
numpy
as
np
import
numpy
as
np
import
matplotlib
import
matplotlib.pyplot
as
plt
import
matplotlib.pyplot
as
plt
from
matplotlib
import
ticker
from
matplotlib
import
ticker
from
matplotlib.ticker
import
FuncFormatter
from
matplotlib.ticker
import
FuncFormatter
from
matplotlib.font_manager
import
FontProperties
from
matplotlib.font_manager
import
FontProperties
matplotlib
.
use
(
'Agg'
)
# 中文字体初始化
# 中文字体初始化
plt
.
rcParams
[
'font.sans-serif'
]
=
[
'Heiti TC'
]
plt
.
rcParams
[
'font.sans-serif'
]
=
[
'Heiti TC'
]
...
...
app/utils/jinjia2html_v2.py
View file @
e04a86bf
...
@@ -22,7 +22,8 @@ class DataIntegrate:
...
@@ -22,7 +22,8 @@ class DataIntegrate:
self
.
user_customer
=
UserCustomerResultAdaptor
(
ifa_id
,
customer_id
)
self
.
user_customer
=
UserCustomerResultAdaptor
(
ifa_id
,
customer_id
)
self
.
customer_name
=
self
.
user_customer
.
customer_real_name
self
.
customer_name
=
self
.
user_customer
.
customer_real_name
self
.
ifa_name
=
self
.
user_customer
.
ifa_real_name
self
.
ifa_name
=
self
.
user_customer
.
ifa_real_name
self
.
pdf_name
=
self
.
ifa_name
+
"_"
+
self
.
customer_name
+
"_"
+
'.pdf'
# self.pdf_name = self.ifa_name + "_" + self.customer_name + "_" + '.pdf'
self
.
pdf_name
=
pdf_name
# 全部数据
# 全部数据
self
.
df
=
self
.
user_customer
.
calculate_total_data
()
self
.
df
=
self
.
user_customer
.
calculate_total_data
()
# 组合结果数据
# 组合结果数据
...
@@ -313,9 +314,9 @@ class DataIntegrate:
...
@@ -313,9 +314,9 @@ class DataIntegrate:
template
=
env
.
get_template
(
'/v2/monthReportV2.1.html'
)
# 获取一个模板文件
template
=
env
.
get_template
(
'/v2/monthReportV2.1.html'
)
# 获取一个模板文件
monthReport_html
=
template
.
render
(
data
)
# 渲染
monthReport_html
=
template
.
render
(
data
)
# 渲染
# 保存 monthReport_html
# 保存 monthReport_html
save_file
=
"app/html/monthReport.html"
#
save_file = "app/html/monthReport.html"
with
open
(
save_file
,
'w'
,
encoding
=
"utf-8"
)
as
f
:
#
with open(save_file, 'w', encoding="utf-8") as f:
f
.
write
(
monthReport_html
)
#
f.write(monthReport_html)
# save_file = "app/html/v2/monthReportV2.html"
# save_file = "app/html/v2/monthReportV2.html"
# with open(save_file, 'w', encoding="utf-8") as f:
# with open(save_file, 'w', encoding="utf-8") as f:
...
...
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