Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
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
罗超
SuperMan
Commits
d6048ce2
Commit
d6048ce2
authored
Jul 17, 2019
by
huangyuanyuan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
f3c554be
d7e3ff48
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1393 additions
and
134 deletions
+1393
-134
detailsInventory.vue
src/components/Hotel/detailsInventory.vue
+1
-1
leaderReimbursement.vue
src/components/LeaderManagement/leaderReimbursement.vue
+4
-0
Login.vue
src/components/Login.vue
+11
-8
salesHotelOrder.vue
src/components/SalesModule/salesHotelOrder.vue
+216
-0
OpHotelOrder.vue
src/components/TravelManager/TravelList/OpHotelOrder.vue
+216
-0
leaderPay2.vue
src/components/leaderPay2.vue
+9
-11
index.vue
src/components/personalCenter/index.vue
+2
-1
admissionStatisticsDetails.vue
src/components/scenicSpot/admissionStatisticsDetails.vue
+1
-0
dailyAnalysis.vue
src/components/visualization/dailyAnalysis.vue
+560
-110
nianduduibi.vue
src/components/visualization/nianduduibi.vue
+155
-0
nianduzoushi.vue
src/components/visualization/nianduzoushi.vue
+201
-0
pingtai.vue
src/components/visualization/pingtai.vue
+0
-1
progress.vue
src/components/visualization/progress.vue
+1
-1
config.js
src/router/config.js
+16
-1
No files found.
src/components/Hotel/detailsInventory.vue
View file @
d6048ce2
...
...
@@ -232,7 +232,7 @@ export default {
this
.
msg
.
Date
=
this
.
$route
.
query
.
sDate
;
this
.
msg
.
CheckOutDate
=
this
.
$route
.
query
.
eData
;
}
this
.
apipost
(
'hotel_post_GetAll'
,{
hotel
ID
:
this
.
msg
.
Hotel
},
res
=>
{
this
.
apipost
(
'hotel_post_GetAll'
,{
ID
:
this
.
msg
.
Hotel
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
HotelName
=
res
.
data
.
data
.
Name
}
...
...
src/components/LeaderManagement/leaderReimbursement.vue
View file @
d6048ce2
...
...
@@ -318,6 +318,7 @@
<th
width=
"100"
>
使用时间
</th>
<th
width=
"180"
>
餐厅名称
</th>
<th
width=
"100"
>
类别
</th>
<th
width=
"100"
>
总人数
</th>
<th
width=
""
>
用餐人数
</th>
<th
width=
"80"
>
免费人数
</th>
<th
width=
""
>
单价
</th>
...
...
@@ -337,6 +338,9 @@
<td
v-if=
"childIndex==0"
:rowspan=
"3"
>
{{
subItem
.
UseDinnerTypeStr
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"3"
>
{{
subItem
.
UseAccount
}}
</td>
<td>
{{
peopleStrToWord
(
childItem
.
PeopleType
)
}}
:
{{
childItem
.
PeopleNum
}}
</td>
...
...
src/components/Login.vue
View file @
d6048ce2
...
...
@@ -304,14 +304,17 @@ export default {
this
.
$cookie
.
set
(
"RB_Group_id"
,
userData
.
RB_Group_id
);
localStorage
.
menu
=
JSON
.
stringify
(
firstTire
)
this
.
loginState
=
0
;
let
previousPathInfo
=
localStorage
.
previousPathInfo
?
JSON
.
parse
(
localStorage
.
previousPathInfo
)
:
''
if
(
previousPathInfo
)
{
let
path
=
previousPathInfo
.
path
.
indexOf
(
'login'
)
===
-
1
?
previousPathInfo
.
path
:
'index'
let
query
=
previousPathInfo
.
query
?
previousPathInfo
.
query
:
{}
this
.
$router
.
push
({
path
:
"/"
+
path
,
query
:
query
});
}
else
{
this
.
$router
.
push
({
path
:
"/index"
});
}
// let previousPathInfo = localStorage.previousPathInfo ? JSON.parse(localStorage.previousPathInfo) : ''
// if (previousPathInfo) {
// let path = previousPathInfo.path.indexOf('login') === -1 ? previousPathInfo.path : 'index'
// let query = previousPathInfo.query ? previousPathInfo.query : {}
// this.$router.push({ path: "/"+ path, query: query });
// }else {
// this.$router.push({ path: "/index" });
// }
this
.
$router
.
push
({
path
:
"/personalCenter"
});
//登录成功后跳转页面
// this.$notify.success({
// title:'提示',
...
...
src/components/SalesModule/salesHotelOrder.vue
0 → 100644
View file @
d6048ce2
<
style
>
.SalesHotelOrder
.SalesHotelOrderTable
{
width
:
100%
;
min-width
:
1500px
;
font-size
:
14px
;
color
:
#333
;
border-bottom
:
1px
solid
#cccccc
;
border-right
:
1px
solid
#cccccc
;
border-collapse
:
collapse
;
}
.SalesHotelOrder
.SalesHotelOrderTable
th
{
background
:
#e6e6e6
;
height
:
30px
;
font-size
:
12px
;
text-align
:
center
;
border-top
:
1px
solid
#cccccc
;
border-left
:
1px
solid
#cccccc
;
}
.SalesHotelOrder
.SalesHotelOrderTable
tr
td
{
height
:
60px
;
padding
:
10px
;
background-color
:
#fff
;
text-align
:
center
;
border-top
:
1px
solid
#cccccc
;
border-left
:
1px
solid
#cccccc
;
}
.SalesHotelOrder
.SalesHotelOrderTable
tbody
tr
:last-child
{
border-bottom
:
2px
solid
#333
;
}
.SalesHotelOrder
.SH_beizhu
{
float
:
left
;
}
.SalesHotelOrder
.SH_beizhuInner
{
float
:
left
;
width
:
85%
;
}
.SalesHotelOrder
.SH_OrderDan
>
div
{
display
:
inline-block
;
}
</
style
>
<
template
>
<div
class=
"flexOne SalesHotelOrder"
>
<div
class=
"query-box"
>
<ul>
<li>
<span><em>
酒店订单号
</em>
<el-input
v-model=
'msg.ThirdOrderNo'
:placeholder=
"$t('pub.pleaseImport')"
></el-input>
</span>
</li>
<li>
<span>
<em>
入住开始时间
</em>
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"msg.StartTime"
:picker-options=
"pickerBeginDateBefore"
value-format=
"yyyy-MM-dd"
placeholder
></el-date-picker>
</span>
</li>
<li>
<span>
<em>
入住结束时间
</em>
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"msg.EndTime"
:picker-options=
"pickerBeginDateAfter"
value-format=
"yyyy-MM-dd"
placeholder
></el-date-picker>
</span>
</li>
<li>
<input
type=
"button"
class=
"hollowFixedBtn"
@
click=
"resetPageIndex();getList()"
:value=
"$t('pub.searchBtn')"
/>
</li>
</ul>
</div>
<table
class=
"SalesHotelOrderTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
v-loading=
"loading"
>
<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>
<th>
取消费用
</th>
<!--
<th>
操作
</th>
-->
</tr>
<tbody
v-for=
"(item,index) in dataList"
>
<tr>
<td
style=
"border-bottom:2px solid #333"
rowspan=
"2"
>
{{
item
.
ThirdOrderNo
}}
</td>
<td>
<div>
{{
item
.
CustomerName
}}
</div>
<div>
{{
item
.
CustomerPhone
}}
</div>
</td>
<td>
{{
item
.
Number
}}
</td>
<td>
{{
item
.
TotalPrice
}}
</td>
<td>
{{
item
.
Income
}}
</td>
<td>
{{
item
.
RedEnvelopeMoney
}}
</td>
<td>
{{
item
.
DiscountMoney
}}
</td>
<td>
{{
item
.
DueinMoney
}}
</td>
<td>
{{
item
.
OrderStatus
}}
</td>
<td>
{{
item
.
CreateDateStr
}}
</td>
<td>
{{
item
.
CheckInStr
}}
</td>
<td>
{{
item
.
CheckOutStr
}}
</td>
<td>
{{
item
.
CancelFee
}}
</td>
<!--
<td>
详情
</td>
-->
</tr>
<tr>
<td
colspan=
"6"
style=
"text-align:left;width:600px"
>
<div
class=
"clearfix"
>
<div
class=
"SH_beizhu"
style=
""
>
备注:
</div>
<div
class=
"SH_beizhuInner"
>
{{
item
.
Remark
}}
</div>
</div>
</td>
<td
colspan=
"6"
style=
"text-align:left;width:600px"
>
<div
class=
"SH_OrderDan"
>
<div>
收款单据:
</div>
<div>
<span
v-for=
"subItem in item.FinanceList"
>
{{
item
.
frID
}}
</span>
<span
v-if=
"item.FinanceList==0"
>
暂无数据
</span>
</div>
</div>
<div
class=
"SH_OrderDan"
>
<div>
付款单据:
</div>
<div>
<span
v-for=
"subItem in item.RefundFinanceList"
>
{{
item
.
frID
}}
</span>
<span
v-if=
"item.RefundFinanceList==0"
>
暂无数据
</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
msg
:
{
pageIndex
:
1
,
pageSize
:
10
,
Source
:
-
1
,
ThirdOrderNo
:
''
,
StartTime
:
''
,
EndTime
:
''
,
GetOrderType
:
0
},
total
:
0
,
currentPage
:
1
,
loading
:
false
,
pickerBeginDateBefore
:
{
disabledDate
:
time
=>
{
if
(
this
.
msg
.
EndTime
==
null
)
{
return
false
;
}
else
{
let
endTime
=
new
Date
(
this
.
msg
.
EndTime
)
return
endTime
.
getTime
()
<
time
.
getTime
()
}
}
},
pickerBeginDateAfter
:
{
disabledDate
:
time
=>
{
let
startTime
=
new
Date
(
this
.
msg
.
StartTime
)
return
startTime
.
getTime
()
>=
time
.
getTime
()
}
},
dataList
:
[],
};
},
methods
:
{
getList
()
{
//获取现有线路列表
this
.
loading
=
true
;
this
.
apipost
(
"sellorder_post_GetJapanHotelOrderList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
},
},
mounted
()
{
this
.
getList
();
}
};
</
script
>
src/components/TravelManager/TravelList/OpHotelOrder.vue
0 → 100644
View file @
d6048ce2
<
style
>
.SalesHotelOrder
.SalesHotelOrderTable
{
width
:
100%
;
min-width
:
1500px
;
font-size
:
14px
;
color
:
#333
;
border-bottom
:
1px
solid
#cccccc
;
border-right
:
1px
solid
#cccccc
;
border-collapse
:
collapse
;
}
.SalesHotelOrder
.SalesHotelOrderTable
th
{
background
:
#e6e6e6
;
height
:
30px
;
font-size
:
12px
;
text-align
:
center
;
border-top
:
1px
solid
#cccccc
;
border-left
:
1px
solid
#cccccc
;
}
.SalesHotelOrder
.SalesHotelOrderTable
tr
td
{
height
:
60px
;
padding
:
10px
;
background-color
:
#fff
;
text-align
:
center
;
border-top
:
1px
solid
#cccccc
;
border-left
:
1px
solid
#cccccc
;
}
.SalesHotelOrder
.SalesHotelOrderTable
tbody
tr
:last-child
{
border-bottom
:
2px
solid
#333
;
}
.SalesHotelOrder
.SH_beizhu
{
float
:
left
;
}
.SalesHotelOrder
.SH_beizhuInner
{
float
:
left
;
width
:
85%
;
}
.SalesHotelOrder
.SH_OrderDan
>
div
{
display
:
inline-block
;
}
</
style
>
<
template
>
<div
class=
"flexOne SalesHotelOrder"
>
<div
class=
"query-box"
>
<ul>
<li>
<span><em>
酒店订单号
</em>
<el-input
v-model=
'msg.ThirdOrderNo'
:placeholder=
"$t('pub.pleaseImport')"
></el-input>
</span>
</li>
<li>
<span>
<em>
入住开始时间
</em>
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"msg.StartTime"
:picker-options=
"pickerBeginDateBefore"
value-format=
"yyyy-MM-dd"
placeholder
></el-date-picker>
</span>
</li>
<li>
<span>
<em>
入住结束时间
</em>
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"msg.EndTime"
:picker-options=
"pickerBeginDateAfter"
value-format=
"yyyy-MM-dd"
placeholder
></el-date-picker>
</span>
</li>
<li>
<input
type=
"button"
class=
"hollowFixedBtn"
@
click=
"resetPageIndex();getList()"
:value=
"$t('pub.searchBtn')"
/>
</li>
</ul>
</div>
<table
class=
"SalesHotelOrderTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
v-loading=
"loading"
>
<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>
<th>
取消费用
</th>
<!--
<th>
操作
</th>
-->
</tr>
<tbody
v-for=
"(item,index) in dataList"
>
<tr>
<td
style=
"border-bottom:2px solid #333"
rowspan=
"2"
>
{{
item
.
ThirdOrderNo
}}
</td>
<td>
<div>
{{
item
.
CustomerName
}}
</div>
<div>
{{
item
.
CustomerPhone
}}
</div>
</td>
<td>
{{
item
.
Number
}}
</td>
<td>
{{
item
.
TotalPrice
}}
</td>
<td>
{{
item
.
Income
}}
</td>
<td>
{{
item
.
RedEnvelopeMoney
}}
</td>
<td>
{{
item
.
DiscountMoney
}}
</td>
<td>
{{
item
.
DueinMoney
}}
</td>
<td>
{{
item
.
OrderStatus
}}
</td>
<td>
{{
item
.
CreateDateStr
}}
</td>
<td>
{{
item
.
CheckInStr
}}
</td>
<td>
{{
item
.
CheckOutStr
}}
</td>
<td>
{{
item
.
CancelFee
}}
</td>
<!--
<td>
详情
</td>
-->
</tr>
<tr>
<td
colspan=
"6"
style=
"text-align:left;width:600px"
>
<div
class=
"clearfix"
>
<div
class=
"SH_beizhu"
style=
""
>
备注:
</div>
<div
class=
"SH_beizhuInner"
>
{{
item
.
Remark
}}
</div>
</div>
</td>
<td
colspan=
"6"
style=
"text-align:left;width:600px"
>
<div
class=
"SH_OrderDan"
>
<div>
收款单据:
</div>
<div>
<span
v-for=
"subItem in item.FinanceList"
>
{{
item
}}
</span>
<span
v-if=
"item.FinanceList==0"
>
暂无数据
</span>
</div>
</div>
<div
class=
"SH_OrderDan"
>
<div>
付款单据:
</div>
<div>
<span
v-for=
"subItem in item.RefundFinanceList"
>
{{
item
}}
</span>
<span
v-if=
"item.RefundFinanceList==0"
>
暂无数据
</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
msg
:
{
pageIndex
:
1
,
pageSize
:
10
,
Source
:
-
1
,
ThirdOrderNo
:
''
,
StartTime
:
''
,
EndTime
:
''
,
GetOrderType
:
1
},
total
:
0
,
currentPage
:
1
,
loading
:
false
,
pickerBeginDateBefore
:
{
disabledDate
:
time
=>
{
if
(
this
.
msg
.
EndTime
==
null
)
{
return
false
;
}
else
{
let
endTime
=
new
Date
(
this
.
msg
.
EndTime
)
return
endTime
.
getTime
()
<
time
.
getTime
()
}
}
},
pickerBeginDateAfter
:
{
disabledDate
:
time
=>
{
let
startTime
=
new
Date
(
this
.
msg
.
StartTime
)
return
startTime
.
getTime
()
>=
time
.
getTime
()
}
},
dataList
:
[],
};
},
methods
:
{
getList
()
{
//获取现有线路列表
this
.
loading
=
true
;
this
.
apipost
(
"sellorder_post_GetJapanHotelOrderList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
},
},
mounted
()
{
this
.
getList
();
}
};
</
script
>
src/components/leaderPay2.vue
View file @
d6048ce2
...
...
@@ -169,7 +169,7 @@ input[type="number"] {
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.TicketPriceList.length"
>
{{
scenicTotalPrice
(
subItem
,
subItem
.
TicketPriceList
)
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"item.data.length*subItem.TicketPriceList.length"
>
<td
v-if=
"childIndex==0
&& subIndex ==0
"
:rowspan=
"item.data.length*subItem.TicketPriceList.length"
>
{{
subItem
.
TradingTotalPrice
}}
</td>
...
...
@@ -299,7 +299,7 @@ input[type="number"] {
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.DiningPriceList.length"
>
{{
diningTotalPrice
(
subItem
,
subItem
.
DiningPriceList
)
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"item.data.length * subItem.DiningPriceList.length"
>
{{
subItem
.
TradingTotalPrice
}}
</td>
<td
v-if=
"childIndex==0
&& subIndex ==0
"
:rowspan=
"item.data.length * subItem.DiningPriceList.length"
>
{{
subItem
.
TradingTotalPrice
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.DiningPriceList.length"
>
{{
subItem
.
Remarks
}}
</td>
...
...
@@ -402,7 +402,7 @@ input[type="number"] {
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.OrderDetailsList.length"
>
{{
hotelTotalPrice
(
subItem
.
OrderDetailsList
)
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.OrderDetailsList.length * item.data.length"
>
{{
subItem
.
TradingTotalPrice
}}
</td>
<td
v-if=
"childIndex==0
&& subIndex ==0
"
:rowspan=
"subItem.OrderDetailsList.length * item.data.length"
>
{{
subItem
.
TradingTotalPrice
}}
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.OrderDetailsList.length"
>
{{
subItem
.
Remarks
}}
</td>
...
...
@@ -963,7 +963,6 @@ export default {
}
this
.
DiningDataList
=
Diningdest
//票
console
.
log
(
res
.
data
.
data
.
ScenicList
)
let
ScenicList
=
[]
for
(
let
i
=
0
;
i
<
res
.
data
.
data
.
ScenicList
.
length
;
i
++
)
{
for
(
let
o
=
0
;
o
<
res
.
data
.
data
.
ScenicList
[
i
].
ScenicStatisticsList
.
length
;
o
++
)
{
...
...
@@ -1020,7 +1019,6 @@ export default {
}
}
}
console
.
log
(
HotelList
)
this
.
HotelDataList
=
Hoteldest
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
...
...
src/components/personalCenter/index.vue
View file @
d6048ce2
...
...
@@ -181,7 +181,8 @@ export default {
},
result
:
null
,
orders
:
[],
pageLoading
:
false
pageLoading
:
false
,
};
},
components
:
{
...
...
src/components/scenicSpot/admissionStatisticsDetails.vue
View file @
d6048ce2
...
...
@@ -4,6 +4,7 @@
<ul>
<li>
<input
v-if=
"IsOperation !=1"
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存"
@
click=
"saveList(1)"
/>
<input
style=
"display:none;"
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存"
@
click=
"saveList(1)"
/>
<input
v-if=
"IsOperation !=1"
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存草稿"
@
click=
"saveList(0)"
/>
</li>
</ul>
...
...
src/components/visualization/dailyAnalysis.vue
View file @
d6048ce2
...
...
@@ -2,8 +2,8 @@
<div
class=
"daliy"
v-loading=
"loading"
v-if=
"result"
:style=
"
{zoom:zoomW}">
<div
class=
"head"
>
<div
class=
"name"
>
销售结果分析
</div>
<div
class=
"nav-item
active
"
>
日常销售分析
</div>
<div
class=
"nav-item"
>
年度数据统计
</div>
<div
class=
"nav-item
"
:class=
"
{'active':tab==0}" @click="changeTabHandler(0)
">日常销售分析
</div>
<div
class=
"nav-item"
:class=
"
{'active':tab==1}" @click="changeTabHandler(1)"
>年度数据统计
</div>
<!--
<div
class=
"travelData"
>
出团日期:
<span
class=
"ipt"
>
...
...
@@ -16,8 +16,9 @@
<div
class=
"right-bottom-border-samll"
></div>
<input
v-model=
"endTime"
readonly
/>
</span>
</div>
-->
</div>
-->
</div>
<div
v-if=
"tab==0"
>
<div
class=
"base-box"
>
<div
class=
"base-item"
>
<div
class=
"rightbox"
></div>
...
...
@@ -92,7 +93,10 @@
<div
class=
"item"
style=
"color:#5D78FF;"
>
<span
class=
"blod"
>
20%
</span>
<br
/>
亏损率
<div
class=
"progress"
style=
"clip: rect(0px, 100px, 20px, 0px);border-color:#5D78FF;"
></div>
<div
class=
"progress"
style=
"clip: rect(0px, 100px, 20px, 0px);border-color:#5D78FF;"
></div>
</div>
</div>
</div>
...
...
@@ -101,7 +105,12 @@
<div
class=
"sq-block-left"
></div>
<div
class=
"t"
>
订单类别销售占比
</div>
<div
class=
"c lirun"
>
<div
class=
"more-items"
:style=
"
{'margin-right':index==result.OrderB2BTypeList.length?'0px':'20px'}" v-for="(item, index) in result.OrderB2BTypeList" :key="index">
<div
class=
"more-items"
:style=
"
{'margin-right':index==result.OrderB2BTypeList.length?'0px':'20px'}"
v-for="(item, index) in result.OrderB2BTypeList"
:key="index"
>
<progressAny
:percent=
"item.Ratio"
:item=
"item.Name"
:count=
"item.Num"
></progressAny>
</div>
</div>
...
...
@@ -115,8 +124,21 @@
<div
class=
"sq-block-right"
></div>
<div
class=
"sq-block-left"
></div>
<div
class=
"t"
>
产品线路销售占比
</div>
<div
class=
"more-itms"
:style=
"
{'margin-right':index==result.LineRatioList.length?'0px':'20px'}" v-for="(item, index) in result.LineRatioList" :key="index">
<progressAny
v-if=
"item.Num>0"
:percent=
"item.Ratio"
:item=
"item.Name"
:count=
"item.Num"
:rank=
'2'
color=
"#5D78FF"
></progressAny>
<div
v-for=
"(item, index) in result.LineRatioList"
style=
"height:100%;"
:key=
"index"
>
<div
class=
"more-itms"
style=
"min-width:110px;height:100%;"
:style=
"
{'margin-right':index==result.LineRatioList.length?'0px':'20px'}"
v-if="item.Num>0"
>
<progressAny
:percent=
"item.Ratio"
:item=
"item.Name"
:count=
"item.Num"
:rank=
"2"
color=
"#5D78FF"
></progressAny>
</div>
</div>
</div>
<div
class=
"r"
>
...
...
@@ -129,6 +151,162 @@
</div>
</div>
</div>
<div
v-else
>
<div
class=
"base-box"
v-if=
"yResult"
>
<div
class=
"base-item big"
>
<div
class=
"rightbox"
></div>
<div
class=
"leftbox"
></div>
<div
class=
"top-after"
></div>
<div
class=
"lef-box"
>
<div
class=
"t"
style=
"margin-top: -10px;"
>
<span
class=
"line"
></span>
<span
class=
"n"
>
{{
year
}}
年度业绩统计
</span>
<span
class=
"line last"
></span>
</div>
<div
class=
"table-s"
>
<table>
<thead>
<tr>
<th>
月份
</th>
<th>
销售额
</th>
<th>
销售额环比
</th>
<th>
销售额同比
</th>
<th>
销售额占比
</th>
<th>
收客人数
</th>
<th>
人数环比
</th>
<th>
人数同比
</th>
<th>
待收金额
</th>
<th>
投诉
</th>
</tr>
</thead>
<tbody>
<tr
v-for=
"(item, index) in yResult.YearStatistics"
:key=
"index"
>
<td
class=
"month"
>
{{
item
.
Month
}}
</td>
<td>
{{
item
.
NowSaleMoney
}}
</td>
<td
:class=
"
{'up':item.HSaleProbability>0,'down':item.HSaleProbability
<0
}"
>
<i
:class=
"
{'el-icon-caret-top':item.HSaleProbability>0,'el-icon-caret-bottom':item.HSaleProbability
<0
}"
></i>
{{
item
.
HSaleProbability
}}
%
</td>
<td
:class=
"
{'up':item.TSaleProbability>0,'down':item.TSaleProbability
<0
}"
>
<i
:class=
"
{'el-icon-caret-top':item.TSaleProbability>0,'el-icon-caret-bottom':item.TSaleProbability
<0
}"
></i>
{{
item
.
TSaleProbability
}}
%
</td>
<td>
{{
item
.
SaleMoneyProbability
}}
%
</td>
<td>
{{
item
.
NowSaleGuest
}}
</td>
<td
:class=
"
{'up':item.HGuestProbability>0,'down':item.HGuestProbability
<0
}"
>
<i
:class=
"
{'el-icon-caret-top':item.HGuestProbability>0,'el-icon-caret-bottom':item.HGuestProbability
<0
}"
></i>
{{
item
.
HGuestProbability
}}
%
</td>
<td
:class=
"
{'up':item.TGuestProbability>0,'down':item.TGuestProbability
<0
}"
>
<i
:class=
"
{'el-icon-caret-top':item.TGuestProbability>0,'el-icon-caret-bottom':item.TGuestProbability
<0
}"
></i>
{{
item
.
TGuestProbability
}}
%
</td>
<td
class=
"down"
>
{{
item
.
NowSaleDueIn
}}
</td>
<td
class=
"down"
>
{{
item
.
NowComplainNum
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div
class=
"rig-box"
>
<div
class=
"sq-block-right"
></div>
<div
class=
"sq-block-left"
></div>
<div
class=
"t"
>
去年数据对比
</div>
<div
class=
"c"
>
<div
class=
"item"
>
<div
class=
"len"
>
<div
class=
"ico"
></div>
<div
class=
"txt"
>
<span
class=
"blod"
>
¥
{{
yResult
.
YearComparison
.
NowSaleMoney
}}
</span>
<br
/>
今年
</div>
<div
class=
"ico yellow"
></div>
<div
class=
"txt yellow"
>
<span
class=
"blod"
>
¥
{{
yResult
.
YearComparison
.
BeforSaleMoney
}}
</span>
<br
/>
去年
</div>
</div>
<div
class=
"char"
>
<nddb
:newdata=
"yResult.YearComparison.NowSaleMoney"
:olddata=
"yResult.YearComparison.BeforSaleMoney"
title=
"销售额"
:colors=
"colorArray[0]"
></nddb>
</div>
</div>
<div
class=
"item"
>
<div
class=
"len"
>
<div
class=
"ico"
></div>
<div
class=
"txt"
>
<span
class=
"blod"
>
{{
yResult
.
YearComparison
.
NowGuestNum
}}
人
</span>
<br
/>
今年
</div>
<div
class=
"ico green"
></div>
<div
class=
"txt green"
>
<span
class=
"blod"
>
{{
yResult
.
YearComparison
.
BeforGuestNum
}}
人
</span>
<br
/>
去年
</div>
</div>
<div
class=
"char"
>
<nddb
:newdata=
"yResult.YearComparison.NowGuestNum"
:olddata=
"yResult.YearComparison.BeforGuestNum"
title=
"收客数"
:colors=
"colorArray[1]"
></nddb>
</div>
</div>
<div
class=
"item"
>
<div
class=
"len"
>
<div
class=
"ico"
></div>
<div
class=
"txt"
>
<span
class=
"blod"
>
{{
yResult
.
YearComparison
.
NowComplainNum
}}
起
</span>
<br
/>
今年
</div>
<div
class=
"ico red"
></div>
<div
class=
"txt red"
>
<span
class=
"blod"
>
{{
yResult
.
YearComparison
.
BeforComplainNum
}}
起
</span>
<br
/>
去年
</div>
</div>
<div
class=
"char"
>
<nddb
:newdata=
"yResult.YearComparison.NowComplainNum"
:olddata=
"yResult.YearComparison.BeforComplainNum"
:colors=
"colorArray[2]"
title=
"投诉"
></nddb>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"base-box"
>
<div
class=
"base-item zoushi"
>
<div
class=
"rightbox"
></div>
<div
class=
"leftbox"
></div>
<div
class=
"top-after"
></div>
<div
class=
"big-title"
>
业绩走势
</div>
<div
class=
"big-content"
>
<ndzs
:data=
"yResult.YearTrend"
></ndzs>
</div>
<div
class=
"d"
>
<div
class=
"block"
></div>
<span
class=
"red"
>
交易额
</span>
<div
class=
"block red"
></div>
<span
class=
"red"
>
未收款
</span>
<div
class=
"block yellow"
></div>
<span
class=
"yellow"
>
收客人数
</span>
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
shoukequ
from
"./shoukequ"
;
...
...
@@ -136,15 +314,25 @@ import pricQujian from "./priceQujian";
import
yeji
from
"./yeji"
;
import
pingtai
from
"./pingtai"
;
import
progressAny
from
"./progress"
;
import
teamRatio
from
'./teamRatio'
import
teamRatio
from
"./teamRatio"
;
import
nddb
from
"./nianduduibi"
;
import
ndzs
from
"./nianduzoushi"
;
export
default
{
data
()
{
return
{
beginTime
:
"2019-07-01"
,
endTime
:
"2019-07-31"
,
zoomW
:
0
,
loading
:
false
,
result
:
null
zoomW
:
0
,
loading
:
false
,
result
:
null
,
tab
:
1
,
colorArray
:
[
[
"#EFB017"
,
"#F7E61B"
],
[
"#19B466"
,
"#65DAC2"
],
[
"#FD3C7C"
,
"#FFABC7"
]
],
year
:
0
,
yResult
:
null
};
},
components
:
{
...
...
@@ -153,24 +341,39 @@ export default {
yeji
,
pingtai
,
progressAny
,
teamRatio
teamRatio
,
nddb
,
ndzs
},
mounted
()
{
this
.
year
=
new
Date
().
getFullYear
();
this
.
zoomW
=
(
document
.
documentElement
.
clientWidth
/
1920
).
toFixed
(
2
);
this
.
init
()
this
.
init
();
this
.
initYear
();
},
methods
:{
init
(){
this
.
loading
=
true
let
query
=
{
StartTime
:
'2019-01-01'
,
EndTime
:
'2019-12-30'
,
PriceSection
:
'1000-2999,3000-4999,5000-7999,8000-9999,10000-*'
}
this
.
apipost
(
"sellorder_post_GetSellDeepAnalysisForDaily"
,
query
,
r
=>
{
this
.
result
=
r
.
data
.
data
this
.
loading
=
false
})
methods
:
{
init
()
{
this
.
loading
=
true
;
let
query
=
{
StartTime
:
"2019-01-01"
,
EndTime
:
"2019-12-30"
,
PriceSection
:
"1000-2999,3000-4999,5000-7999,8000-9999,10000-*"
};
this
.
apipost
(
"sellorder_post_GetSellDeepAnalysisForDaily"
,
query
,
r
=>
{
this
.
result
=
r
.
data
.
data
;
this
.
loading
=
false
;
});
},
initYear
()
{
let
query
=
{
Year
:
this
.
year
};
this
.
apipost
(
"sellorder_post_GetSellDeepAnalysisForYear"
,
query
,
r
=>
{
this
.
yResult
=
r
.
data
.
data
;
});
},
changeTabHandler
(
index
)
{
this
.
tab
=
index
;
}
}
};
...
...
@@ -185,7 +388,7 @@ export default {
overflow-y
:
auto
;
padding-bottom
:
20px
;
padding-right
:
10px
;
overflow-x
:
hidden
overflow-x
:
hidden
;
}
.daliy
.head
{
height
:
64px
;
...
...
@@ -493,10 +696,12 @@ export default {
.daliy
.bottom-order-box
{
height
:
246px
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
,
.daliy
.middle-order-box
.t
{
display
:
flex
;
align-items
:
center
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
.line
,
.daliy
.middle-order-box
.t
.line
{
display
:
block
;
background
:
url("../../assets/img/persion/split-line.png")
repeat
;
...
...
@@ -506,6 +711,7 @@ export default {
flex
:
1
;
position
:
relative
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
.line
::after
,
.daliy
.middle-order-box
.t
.line
::after
{
display
:
block
;
content
:
" "
;
...
...
@@ -513,6 +719,7 @@ export default {
width
:
100%
;
background
:
#075089
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
.line
::before
,
.daliy
.middle-order-box
.t
.line
::before
{
width
:
3px
;
height
:
3px
;
...
...
@@ -524,10 +731,12 @@ export default {
top
:
3px
;
border-radius
:
50%
;
}
.daliy
.base-box
.base-item
.lef-box
.t
.line.last
::before
,
.daliy
.middle-order-box
.t
.line.last
::before
{
left
:
unset
;
right
:
-6px
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
.n
,
.daliy
.middle-order-box
.t
.n
{
display
:
block
;
font-size
:
20px
;
...
...
@@ -536,6 +745,9 @@ export default {
color
:
#fff
;
font-family
:
pingfangR
;
}
.daliy
.base-box
.base-item.big
.lef-box
.t
.n
{
width
:
168px
;
}
.daliy
.middle-order-box
.content-box
{
margin-top
:
15px
;
display
:
flex
;
...
...
@@ -570,7 +782,6 @@ export default {
}
.daliy
.middle-order-box
.content-box
.item-box
.lirun
{
display
:
flex
;
}
.daliy
.middle-order-box
.content-box
.item-box
.lirun
.item
{
width
:
100px
;
...
...
@@ -606,7 +817,7 @@ export default {
}
.daliy
.middle-order-box
.content-box
.item-box
.lirun
.more-itms
{
height
:
100%
;
flex
:
1
;
flex
:
1
;
margin-right
:
20px
;
}
.daliy
.bottom-order-box
{
...
...
@@ -624,7 +835,7 @@ export default {
height
:
215px
;
padding
:
0
18px
;
background
:
rgba
(
3
,
85
,
164
,
0.2
);
flex-direction
:
row
flex-direction
:
row
;
}
.daliy
.bottom-order-box
.r
{
width
:
346px
;
...
...
@@ -652,11 +863,11 @@ export default {
height
:
40px
;
line-height
:
40px
;
font-size
:
14px
;
color
:
#FFF
;
color
:
#fff
;
font-family
:
pingfangR
;
width
:
100%
;
}
.daliy
.bottom-order-box
.r
.c
{
.daliy
.bottom-order-box
.r
.c
{
flex
:
1
;
width
:
100%
;
height
:
calc
(
100%
-
50px
);
...
...
@@ -666,4 +877,243 @@ export default {
height
:
100%
;
margin-right
:
20px
;
}
.daliy
.base-box
.base-item.big
{
height
:
548px
;
display
:
flex
;
}
.daliy
.base-box
.base-item.big
.rig-box
{
width
:
260px
;
margin-left
:
20px
;
height
:
490px
;
background
:
rgba
(
3
,
85
,
164
,
0.2
);
position
:
relative
;
}
.daliy
.base-box
.base-item.big
.lef-box
{
flex
:
1
;
height
:
100%
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
{
width
:
100%
;
border-collapse
:
collapse
;
border-spacing
:
0
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
thead
{
background
:
rgba
(
39
,
88
,
171
,
0
);
border
:
1px
solid
rgba
(
15
,
92
,
166
,
1
);
border-radius
:
4px
4px
0px
0px
;
box-shadow
:
0
0
13px
rgba
(
15
,
92
,
166
,
0.8
)
inset
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
thead
th
{
height
:
30px
;
text-align
:
left
;
padding-left
:
10px
;
font-size
:
14px
;
font-family
:
pingfangR
;
color
:
#fff
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
tr
:nth-child
(
odd
)
{
background
:
rgba
(
26
,
75
,
157
,
0.26
);
border
:
1px
solid
rgba
(
75
,
188
,
255
,
0
);
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
tr
:nth-child
(
even
)
{
background
:
rgba
(
26
,
75
,
157
,
0.13
);
border
:
1px
solid
rgba
(
75
,
188
,
255
,
0
);
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
td
{
font-size
:
12px
;
color
:
#a2dbff
;
text-align
:
left
;
padding-left
:
10px
;
height
:
36px
;
line-height
:
36px
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
td
.month
{
color
:
#fff
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
td
.up
{
color
:
#00e000
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
td
.down
{
color
:
#ff4c52
;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
tr
:hover
{
border
:
1px
solid
rgba
(
75
,
188
,
255
,
1
);
box-shadow
:
0
0
13px
rgba
(
75
,
188
,
255
,
0.8
);
background
:
none
;
}
.daliy
.base-box
.base-item.big
.rig-box
.t
{
margin-top
:
14px
;
text-align
:
center
;
font-size
:
14px
;
color
:
#fff
;
font-family
:
pingfangR
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
{
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
{
margin-top
:
15px
;
padding-left
:
20px
;
display
:
flex
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.char
{
width
:
120px
;
height
:
120px
;
margin-right
:
15px
;
background
:
rgba
(
1
,
156
,
255
,
0.1
);
border-radius
:
50%
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
{
flex
:
1
;
padding-top
:
10px
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.ico
{
width
:
20px
;
height
:
5px
;
margin-bottom
:
5px
;
background
:
linear-gradient
(
135deg
,
rgba
(
0
,
103
,
204
,
0.88
),
rgba
(
0
,
191
,
249
,
0.88
)
);
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.ico.yellow
{
background
:
linear-gradient
(
135deg
,
rgba
(
239
,
176
,
23
,
0.88
),
rgba
(
247
,
230
,
27
,
0.88
)
);
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.ico.green
{
background
:
linear-gradient
(
135deg
,
rgba
(
101
,
218
,
194
,
1
),
rgba
(
25
,
180
,
102
,
1
)
);
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.ico.red
{
background
:
linear-gradient
(
135deg
,
rgba
(
255
,
171
,
199
,
0.88
),
rgba
(
253
,
60
,
124
,
0.88
)
);
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.txt
{
font-size
:
12px
;
color
:
#0067cc
;
margin-bottom
:
10px
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.txt
.blod
{
font-family
:
pingfangR
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.txt.yellow
{
color
:
#efb017
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.txt.green
{
color
:
#19b466
;
}
.daliy
.base-box
.base-item.big
.rig-box
.c
.item
.len
.txt.red
{
color
:
#fd3c7c
;
}
.daliy
.base-box
.base-item.zoushi
{
height
:
357px
;
display
:
flex
;
background
:
rgba
(
39
,
88
,
171
,
0.1
);
}
.daliy
.base-box
.base-item.zoushi
.big-title
{
font-size
:
20px
;
color
:
#fff
;
font-family
:
pingfangR
;
margin-top
:
-10px
;
}
.daliy
.base-box
.base-item.zoushi
.big-content
{
position
:
absolute
;
top
:
50px
;
left
:
0
;
right
:
0
;
bottom
:
0
;
}
.daliy
.base-box
.base-item.zoushi
.d
{
height
:
33px
;
background
:
rgba
(
71
,
165
,
255
,
0
);
border-radius
:
17px
;
line-height
:
28px
;
padding
:
0
20px
;
font-size
:
12px
;
color
:
#4487f0
;
display
:
inline-block
;
box-sizing
:
border-box
;
border
:
1px
solid
#0251889
e
;
box-shadow
:
0
0
10px
#025188
inset
;
position
:
absolute
;
top
:
9px
;
right
:
30px
;
display
:
flex
;
align-items
:
center
;
}
.daliy
.base-box
.base-item.zoushi
.d
span
{
margin-right
:
40px
;
}
.daliy
.base-box
.base-item.zoushi
.d
span
:last-child
{
margin-right
:
0
;
}
.daliy
.base-box
.base-item.zoushi
.d
.yellow
{
color
:
#ffb822
;
}
.daliy
.base-box
.base-item.zoushi
.d
.red
{
color
:
#fd3c7c
;
}
.daliy
.base-box
.base-item.zoushi
.d.right
{
position
:
absolute
;
top
:
-4px
;
right
:
25px
;
}
.daliy
.base-box
.base-item.zoushi
.d
.blod
{
font-size
:
16px
;
color
:
#46c3f1
;
font-family
:
pingfangR
;
margin-left
:
5px
;
}
.daliy
.base-box
.base-item.zoushi
.d
i
{
font-size
:
14px
;
color
:
#3aa0eb
;
}
.daliy
.base-box
.base-item.zoushi
.d
.block
{
width
:
16px
;
height
:
9px
;
margin-right
:
10px
;
background
:
linear-gradient
(
0deg
,
rgba
(
68
,
135
,
240
,
0.88
),
rgba
(
176
,
208
,
248
,
0.88
)
);
}
.daliy
.base-box
.base-item.zoushi
.d
.block.red
{
background
:
linear-gradient
(
0deg
,
rgba
(
255
,
171
,
199
,
0.88
),
rgba
(
253
,
60
,
124
,
0.88
)
);
}
.daliy
.base-box
.base-item.zoushi
.d
.block.yellow
{
background
:
#ffb822
;
width
:
16px
;
height
:
4px
;
}
</
style
>
src/components/visualization/nianduduibi.vue
0 → 100644
View file @
d6048ce2
<
template
>
<div
class=
"inerank-container"
>
<div
:style=
"
{height:'100%',width:'100%'}" ref="myLineRank">
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
newdata
:
{
type
:
Number
,
default
:
0
},
olddata
:
{
type
:
Number
,
default
:
0
},
colors
:{
type
:
Array
,
default
:[]
},
title
:{
type
:
String
,
default
:
""
}
},
data
()
{
return
{
placeHolderStyle
:
{
normal
:
{
color
:
"rgba(0,0,0,0)"
,
label
:
{
show
:
false
},
labelLine
:
{
show
:
false
}
},
emphasis
:
{
color
:
"rgba(0,0,0,0)"
}
}
};
},
mounted
()
{
this
.
init
();
},
methods
:
{
init
()
{
let
myChart
=
this
.
$echarts
.
init
(
this
.
$refs
.
myLineRank
);
let
dataAlias
=
[
"今年"
,
"去年"
];
let
data2
=
[{
name
:
"今年"
,
value
:
this
.
newdata
},
{
name
:
"去年"
,
value
:
this
.
olddata
,
itemStyle
:
this
.
placeHolderStyle
}];
let
data3
=
[{
name
:
"去年"
,
value
:
this
.
olddata
},{
name
:
"今年"
,
value
:
this
.
newdata
,
itemStyle
:
this
.
placeHolderStyle
}];
let
option
=
{
tooltip
:
{
show
:
false
},
graphic
:
[
{
type
:
"text"
,
left
:
'center'
,
top
:
"center"
,
style
:
{
text
:
this
.
title
,
textAlign
:
"center"
,
fill
:
this
.
colors
[
0
],
//文字的颜色
fontSize
:
16
,
width
:
120
,
fontFamily
:
"pingfangR"
}
}
],
calculable
:
true
,
series
:
[
{
// center: ["25%", "45%"],
name
:
"订单来源"
,
type
:
"pie"
,
radius
:
[
"80%"
,
"90%"
],
hoverAnimation
:
false
,
legendHoverLink
:
false
,
tooltip
:
false
,
startAngle
:
90
,
itemStyle
:
{
emphasis
:
{
barBorderRadius
:
30
},
normal
:
{
label
:
{
show
:
false
},
labelLine
:
{
show
:
false
},
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
1
,
0
,
0
,
0
,
[
{
offset
:
0
,
color
:
"#00BFF9"
},
{
offset
:
0.35
,
color
:
"#0067CC"
},
{
offset
:
1
,
color
:
"#0067CC"
}
])
}
},
data
:
data2
},
{
// center: ["25%", "45%"],
name
:
"订单来源"
,
type
:
"pie"
,
radius
:
[
"60%"
,
"70%"
],
hoverAnimation
:
false
,
legendHoverLink
:
false
,
tooltip
:
false
,
startAngle
:
90
,
itemStyle
:
{
emphasis
:
{
barBorderRadius
:
30
},
normal
:
{
label
:
{
show
:
false
},
labelLine
:
{
show
:
false
},
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
1
,
0
,
0
,
0
,
[
{
offset
:
0
,
color
:
this
.
colors
[
1
]
},
{
offset
:
0.35
,
color
:
this
.
colors
[
0
]
},
{
offset
:
1
,
color
:
this
.
colors
[
0
]
}
])
}
},
data
:
data3
}
]
};
myChart
.
setOption
(
option
);
}
}
};
</
script
>
<
style
>
.inerank-container
{
height
:
100%
;
width
:
100%
;
}
</
style
>
src/components/visualization/nianduzoushi.vue
0 → 100644
View file @
d6048ce2
<
template
>
<div
class=
"inerank-container"
>
<div
:style=
"
{height:'100%',width:'100%'}" ref="myLineRank">
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
data
:
{
type
:
Array
,
default
:
[]
}
},
data
()
{
return
{};
},
mounted
()
{
this
.
init
();
},
methods
:
{
init
()
{
let
myChart
=
this
.
$echarts
.
init
(
this
.
$refs
.
myLineRank
);
var
dataAxis
=
[];
var
data2
=
[];
var
data4
=
[];
var
data3
=
[];
this
.
data
.
forEach
(
x
=>
{
dataAxis
.
push
(
x
.
Month
+
"月"
);
data2
.
push
(
x
.
NowSaleMoney
);
data4
.
push
(
x
.
NowSaleDueIn
);
data3
.
push
(
x
.
NowSaleGuest
);
});
let
option
=
{
title
:
{
show
:
false
},
xAxis
:
{
data
:
dataAxis
,
axisLabel
:
{
textStyle
:
{
color
:
"#DADADA"
,
fontSize
:
12
},
margin
:
10
,
interval
:
0
,
show
:
true
},
type
:
"category"
,
axisTick
:
{
show
:
true
},
axisLine
:
{
show
:
true
,
lineStyle
:
{
color
:
[
"#12397C"
]
}
}
},
yAxis
:
[
{
axisLine
:
{
show
:
true
,
lineStyle
:
{
color
:
[
"#12397C"
]
}
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
textStyle
:
{
color
:
"#DADADA"
,
fontSize
:
12
},
show
:
true
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
[
"#12397c4d"
]
}
},
min
:
0
,
name
:
"金额(元)"
,
type
:
"value"
},
{
axisLine
:
{
show
:
true
,
lineStyle
:
{
color
:
[
"#12397C"
]
}
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
textStyle
:
{
color
:
"#DADADA"
,
fontSize
:
12
},
show
:
true
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
[
"#12397c4d"
]
}
},
min
:
0
,
name
:
"收客数(人)"
,
type
:
"value"
}
],
grid
:
{
left
:
"68"
,
right
:
"60"
,
top
:
"50"
,
bottom
:
"30"
},
tooltip
:
{
trigger
:
"item"
,
axisPointer
:
{
type
:
"none"
,
snap
:
true
,
label
:
{
backgroundColor
:
"#6a7985"
}
}
},
series
:
[
{
type
:
"bar"
,
itemStyle
:
{
normal
:
{
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
"#4487F0"
},
{
offset
:
0.3
,
color
:
"#4487F0"
},
{
offset
:
1
,
color
:
"#B0D0F8"
}
])
}
},
barWidth
:
24
,
data
:
data2
,
yAxisIndex
:
0
,
animationType
:
"scale"
,
animationEasing
:
"elasticOut"
,
animationDelay
:
function
(
idx
)
{
return
Math
.
random
()
*
200
;
}
},
{
type
:
"bar"
,
itemStyle
:
{
normal
:
{
color
:
new
this
.
$echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
"#FD3C7C"
},
{
offset
:
0.5
,
color
:
"#FD3C7C"
},
{
offset
:
1
,
color
:
"#FFABC7"
}
])
}
},
barWidth
:
24
,
data
:
data4
,
yAxisIndex
:
0
,
animationType
:
"scale"
,
animationEasing
:
"elasticOut"
,
animationDelay
:
function
(
idx
)
{
return
Math
.
random
()
*
200
;
}
},
{
type
:
"line"
,
smooth
:
true
,
symbol
:
'circle'
,
symbolSize
:
5
,
yAxisIndex
:
1
,
// left: "0",
itemStyle
:
{
normal
:
{
lineStyle
:
{
color
:
"#FFB822"
},
color
:
"#FFB822"
}
},
data
:
data3
}
]
};
myChart
.
setOption
(
option
);
}
}
};
</
script
>
<
style
>
.inerank-container
{
height
:
100%
;
width
:
100%
;
}
</
style
>
src/components/visualization/pingtai.vue
View file @
d6048ce2
...
...
@@ -31,7 +31,6 @@ export default {
data2
.
push
(
t
)
}
})
console
.
log
(
dataAlias
)
let
option
=
{
tooltip
:
{
trigger
:
"item"
,
...
...
src/components/visualization/progress.vue
View file @
d6048ce2
...
...
@@ -157,7 +157,7 @@ export default {
.inerank-container
.h-title
{
position
:
absolute
;
left
:
0%
;
bottom
:
1
4
px
;
bottom
:
1
0
px
;
font-size
:
12px
;
color
:
#46c3f1
;
text-align
:
center
;
...
...
src/router/config.js
View file @
d6048ce2
...
...
@@ -1710,6 +1710,14 @@ export default {
title
:
'团队收支'
},
},
{
path
:
'/OpHotelOrder'
,
//操作 散卖酒店订单
name
:
'OpHotelOrder'
,
component
:
resolve
=>
require
([
'@/components/TravelManager/TravelList/OpHotelOrder'
],
resolve
),
meta
:
{
title
:
'散卖酒店订单'
},
},{
path
:
'/AmoebaDetail'
,
//阿米巴结算详情
name
:
'AmoebaDetail'
,
component
:
resolve
=>
require
([
'@/components/TravelManager/TravelList/AmoebaDetail'
],
resolve
),
...
...
@@ -2219,7 +2227,14 @@ export default {
title
:
'散卖机票订单'
},
},
{
//销售 散卖酒店订单
path
:
'/salesHotelOrder'
,
name
:
'salesHotelOrder'
,
component
:
resolve
=>
require
([
'@/components/SalesModule/salesHotelOrder'
],
resolve
),
meta
:
{
title
:
'散卖酒店订单'
},
},
{
// 销售 报名统计
path
:
'/enrollTotal'
,
name
:
'enrollTotal'
,
...
...
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