Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jz_Travel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
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
zhengke
jz_Travel
Commits
5fcec80d
Commit
5fcec80d
authored
Jul 22, 2025
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
ed7e1ed4
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1080 additions
and
990 deletions
+1080
-990
productInfor2.vue
pages/teamLeader/components/report/productInfor2.vue
+349
-325
productInfor3.vue
pages/teamLeader/components/report/productInfor3.vue
+357
-324
productInfor4.vue
pages/teamLeader/components/report/productInfor4.vue
+354
-324
reimbursementInfor.vue
pages/teamLeader/reimbursementInfor.vue
+20
-13
utils.js
plugin/utils.js
+0
-4
No files found.
pages/teamLeader/components/report/productInfor2.vue
View file @
5fcec80d
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
url("@/asset/css/flex.css")
;
@import
url("@/asset/css/flex.css")
;
.Sure
{
.Sure
{
padding
:
0
20rpx
;
padding
:
0
20rpx
;
margin-top
:
30rpx
;
margin-top
:
30rpx
;
}
}
.Sure
view
{
.Sure
view
{
background
:
#257BF2
;
background
:
#257BF2
;
border-radius
:
80rpx
;
border-radius
:
80rpx
;
line-height
:
80rpx
;
line-height
:
80rpx
;
...
@@ -12,51 +14,62 @@
...
@@ -12,51 +14,62 @@
color
:
#fff
;
color
:
#fff
;
}
}
.paymentTitle
{
.paymentTitle
{
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.paymentTexts
view
{
.paymentTexts
view
{
padding
:
5rpx
15rpx
;
padding
:
5rpx
15rpx
;
border
:
1px
solid
#EDEDED
;
border
:
1px
solid
#EDEDED
;
color
:
#888888
;
color
:
#888888
;
border-radius
:
6rpx
;
border-radius
:
6rpx
;
}
}
.paymentTexts
view
:last-child
{
.paymentTexts
view
:last-child
{
margin-left
:
40rpx
;
margin-left
:
40rpx
;
}
}
.paymentTexts
view
.active
{
.paymentTexts
view
.active
{
color
:
#fff
;
color
:
#fff
;
background
:
#257BF2
;
background
:
#257BF2
;
border
:
1px
solid
#257BF2
;
border
:
1px
solid
#257BF2
;
}
}
.paymentTitle
.tisp
{
.paymentTitle
.tisp
{
color
:
#666666
;
color
:
#666666
;
}
}
.textareaBox
textarea
{
.textareaBox
textarea
{
height
:
208rpx
;
height
:
208rpx
;
background
:
#FFFFFF
;
background
:
#FFFFFF
;
border
:
1rpx
solid
#EAEAEA
;
border
:
1rpx
solid
#EAEAEA
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgBox
{
.InforImgBox
{
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
}
.InforImg
,
.addUp
{
.InforImg
,
.addUp
{
width
:
208rpx
;
width
:
208rpx
;
height
:
208rpx
;
height
:
208rpx
;
margin-bottom
:
20rpx
;
margin-bottom
:
20rpx
;
}
}
.InforImg
{
.InforImg
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
margin-right
:
20rpx
;
margin-right
:
20rpx
;
position
:
relative
;
position
:
relative
;
}
}
.InforImg
image
{
.InforImg
image
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgDel
{
.InforImgDel
{
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
top
:
-14rpx
;
top
:
-14rpx
;
...
@@ -64,74 +77,85 @@
...
@@ -64,74 +77,85 @@
background
:
#fff
;
background
:
#fff
;
border-radius
:
50%
;
border-radius
:
50%
;
}
}
.inforCenter
{
.inforCenter
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
overflow
:
hidden
;
overflow
:
hidden
;
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
margin-bottom
:
40rpx
;
margin-bottom
:
40rpx
;
position
:
relative
;
position
:
relative
;
}
}
.inforCenter
:last-child
{
.inforCenter
:last-child
{
margin-bottom
:
0
;
margin-bottom
:
0
;
}
}
.inforCenterTop
{
.inforCenterTop
{
background
:
#F3F3F3
;
background
:
#F3F3F3
;
padding
:
20rpx
29rpx
;
padding
:
20rpx
29rpx
;
font-size
:
32rpx
;
font-size
:
32rpx
;
color
:
#333333
;
color
:
#333333
;
}
}
.inputBox
{
.inputBox
{
padding
:
20rpx
0
;
padding
:
20rpx
0
;
margin
:
0
29rpx
;
margin
:
0
29rpx
;
border-bottom
:
1px
solid
#DDD
;
border-bottom
:
1px
solid
#DDD
;
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.inputBox.noBorder
{
.inputBox.noBorder
{
border
:
0
;
border
:
0
;
}
}
.tisp
{
.tisp
{
color
:
red
;
color
:
red
;
}
}
.inputBoxRight
{
.inputBoxRight
{
position
:
relative
;
position
:
relative
;
}
}
.inputBoxRight
u-number-box
{
.inputBoxRight
u-number-box
{
position
:
absolute
;
position
:
absolute
;
right
:
0
;
right
:
0
;
top
:
-7rpx
;
top
:
-7rpx
;
}
}
/
deep
/
.inputBoxRight
u-number-box
input
{
/
deep
/
.inputBoxRight
u-number-box
input
{
width
:
130rpx
!
important
;
width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
}
}
.inforCenterTopDel
{
.inforCenterTopDel
{
position
:
absolute
;
position
:
absolute
;
left
:
-7rpx
;
left
:
-7rpx
;
top
:
-7rpx
;
top
:
-7rpx
;
padding
:
5rpx
;
padding
:
5rpx
;
z-index
:
1
;
z-index
:
1
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<view>
<view>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.HotelOrderList[datas.hotelIndex].ReimburseList.ReimburseDetailsList"
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.HotelOrderList[datas.hotelIndex].ReimburseList.ReimburseDetailsList"
:key=
"index"
>
:key=
"index"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
<view>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
</view>
</view>
</view>
</view>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
<view
class=
"row"
>
<view
class=
"row"
>
<text>
数量
</text>
<text>
数量
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:value=
"item.UserNum"
@
change=
"(e)=>getNum(e,index,'数量')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UserNum"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
...
@@ -139,7 +163,8 @@
...
@@ -139,7 +163,8 @@
<text>
单价
</text>
<text>
单价
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:max=
"99999999999999999"
v-model=
"item.UnitPrice"
@
change=
"(e)=>getNum(e,index,'金额')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UnitPrice"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between noBorder"
>
<view
class=
"inputBox row justify-between noBorder"
>
...
@@ -156,148 +181,146 @@
...
@@ -156,148 +181,146 @@
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"PX30 PB20 paymentTexts row"
>
<view
class=
"PX30 PB20 paymentTexts row"
>
<template
v-for=
"(item,index) in paymentList"
>
<template
v-for=
"(item,index) in paymentList"
>
<view
:class=
"[datas.HotelOrderList[datas.hotelIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
<view
:class=
"[datas.HotelOrderList[datas.hotelIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
</
template
>
</
template
>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"textareaBox PX30 row"
>
<view
class=
"textareaBox PX30 row"
>
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
v-model=
"datas.HotelOrderList[datas.hotelIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
v-model=
"datas.HotelOrderList[datas.hotelIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
<view
class=
"paymentTitle PA30"
>
<text>
凭证
</text>
<text>
凭证
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
</view>
</view>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.HotelOrderList[datas.hotelIndex].ReimburseList.VoucherPicList"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.HotelOrderList[datas.hotelIndex].ReimburseList.VoucherPicList"
>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
</view>
</view>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
</view>
</view>
<singleChoice
v-if=
"optionVisible"
<singleChoice
v-if=
"optionVisible"
:current=
"optionObj.id"
:list=
"optionList"
@
close=
"close"
:current=
"optionObj.id"
@
change=
"popupCurrent"
></singleChoice>
:list=
"optionList"
@
close=
"close"
@
change=
"popupCurrent"
></singleChoice>
</view>
</view>
</template>
</template>
<
script
>
<
script
>
import
upload
from
"../upload"
;
import
upload
from
"../upload"
;
import
singleChoice
from
"../singleChoice"
;
import
singleChoice
from
"../singleChoice"
;
export
default
{
export
default
{
props
:[
'data'
,
'optionList'
],
props
:
[
'data'
,
'dataIndex2'
,
'optionList'
],
components
:
{
components
:
{
upload
,
upload
,
singleChoice
,
singleChoice
,
},
},
data
()
{
data
()
{
return
{
return
{
paymentList
:[
paymentList
:
[{
{
name
:
'现金支付'
,
id
:
1
},
name
:
'现金支付'
,
{
name
:
'公司结算'
,
id
:
2
},
id
:
1
},
{
name
:
'公司结算'
,
id
:
2
},
],
],
optionVisible
:
false
,
optionVisible
:
false
,
optionObj
:
{},
optionObj
:
{},
params
:
{},
params
:
{},
datas
:
null
,
//展示数据
datas
:
null
,
//展示数据
dataIndex
:
0
,
dataIndex
:
0
,
ReimIndex
:
0
,
ReimIndex
:
0
,
ReimDatas
:
{},
ReimDatas
:
{},
BusList
:[],
//车信息
HotelOrderListReport
:
[],
//酒店信息,合团
HotelOrderListReport
:[],
//酒店信息,合团
DiningList
:[],
//餐厅
ScenicList
:[],
//景点
OtherList
:[],
//其他订单信息
TipList
:[],
//小费收入
TeamList
:[],
//团费小计
SelfPlayingIncomeList
:[],
//自费收入
SelfPlayingExpendList
:[],
//自费支出
LeaderShopList
:[],
//购物报账
}
}
},
},
watch
:
{
watch
:
{
data
:{
dataIndex2
:
{
handler
(
newVal
,
oldVal
){
handler
(
newVal
,
oldVal
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
newVal
))
if
(
newVal
!=
oldVal
)
{
this
.
HotelOrderListReport
=
this
.
params
.
HotelOrderListReport
//酒店信息,合团
this
.
initData
();
}
this
.
dataIndex
=
this
.
params
.
dataIndex2
this
.
getRenderingData
()
this
.
getTotal
()
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
},
},
datas
:{
handler
(
newVal
,
oldVal
){
this
.
updateData
()
},
deep
:
true
,
immediate
:
false
}
},
},
mounted
()
{
mounted
()
{
this
.
initData
();
},
},
methods
:{
methods
:
{
getNum
(
e
,
index
,
type
){
initData
()
{
if
(
type
==
'数量'
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
data
))
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UserNum
=
e
.
value
this
.
HotelOrderListReport
=
this
.
params
.
HotelOrderListReport
//酒店信息,合团
}
else
if
(
type
==
'金额'
){
this
.
dataIndex
=
this
.
dataIndex2
;
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UnitPrice
=
e
.
value
this
.
getRenderingData
()
}
this
.
getTotal
()
this
.
getTotal
()
},
},
getTotal
(){
getNum
()
{
this
.
getTotal
()
},
getTotal
()
{
let
total
=
0
let
total
=
0
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
total
+=
x
.
UserNum
*
x
.
UnitPrice
total
+=
x
.
UserNum
*
x
.
UnitPrice
})
})
this
.
datas
.
TotalMoney
=
total
this
.
datas
.
TotalMoney
=
total
this
.
updateData
()
this
.
updateData
()
},
},
delInfor
(
index
)
{
delInfor
(
index
)
{
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
},
},
delImg
(
index
)
{
delImg
(
index
)
{
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
},
},
getSettlementType
(
item
)
{
getSettlementType
(
item
)
{
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
updateData
()
this
.
updateData
()
this
.
$forceUpdate
()
this
.
$forceUpdate
()
},
},
updateData
()
{
updateData
()
{
this
.
HotelOrderListReport
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
HotelOrderListReport
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
params
.
HotelOrderListReport
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
HotelOrderListReport
))
this
.
params
.
HotelOrderListReport
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
HotelOrderListReport
))
this
.
$emit
(
'change'
,
this
.
params
)
this
.
$emit
(
'change'
,
this
.
params
)
},
},
// 酒店
// 酒店
getRenderingData
()
{
getRenderingData
()
{
this
.
datas
=
this
.
HotelOrderListReport
[
this
.
dataIndex
]
this
.
datas
=
this
.
HotelOrderListReport
[
this
.
dataIndex
]
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
0
]))
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
0
]))
},
},
showOptionVisible
(
index
)
{
showOptionVisible
(
index
)
{
this
.
optionVisible
=
true
this
.
optionVisible
=
true
this
.
ReimIndex
=
index
this
.
ReimIndex
=
index
this
.
optionObj
=
{
this
.
optionObj
=
{
name
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
,
name
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
id
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
.
ReimIndex
].
UserTypeStr
,
id
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
}
}
},
},
close
()
{
close
()
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
},
},
popupCurrent
(
value
)
{
popupCurrent
(
value
)
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
=
this
.
optionObj
.
id
.
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
.
UserType
=
this
.
optionObj
.
id
},
},
previewImage
(
src
)
{
previewImage
(
src
)
{
uni
.
previewImage
({
uni
.
previewImage
({
urls
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
urls
:
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
current
:
src
,
current
:
src
,
longPressActions
:
{
longPressActions
:
{
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
...
@@ -310,7 +333,7 @@ export default {
...
@@ -310,7 +333,7 @@ export default {
},
},
});
});
},
},
addData
()
{
addData
()
{
this
.
ReimDatas
=
{
this
.
ReimDatas
=
{
...
this
.
ReimDatas
,
...
this
.
ReimDatas
,
ID
:
0
,
ID
:
0
,
...
@@ -319,14 +342,15 @@ export default {
...
@@ -319,14 +342,15 @@ export default {
UserNum
:
0
,
UserNum
:
0
,
UnitPrice
:
0
,
UnitPrice
:
0
,
}
}
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
},
},
onSuccess
(
infor
)
{
onSuccess
(
infor
)
{
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
push
({
this
.
datas
.
HotelOrderList
[
this
.
datas
.
hotelIndex
].
ReimburseList
.
VoucherPicList
.
push
({
FileName
:
infor
.
name
,
FileName
:
infor
.
name
,
url
:
infor
.
url
,
url
:
infor
.
url
,
})
})
}
}
}
}
}
}
</
script
>
</
script
>
\ No newline at end of file
pages/teamLeader/components/report/productInfor3.vue
View file @
5fcec80d
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
url("@/asset/css/flex.css")
;
@import
url("@/asset/css/flex.css")
;
.Sure
{
.Sure
{
padding
:
0
20rpx
;
padding
:
0
20rpx
;
margin-top
:
30rpx
;
margin-top
:
30rpx
;
}
}
.Sure
view
{
.Sure
view
{
background
:
#257BF2
;
background
:
#257BF2
;
border-radius
:
80rpx
;
border-radius
:
80rpx
;
line-height
:
80rpx
;
line-height
:
80rpx
;
...
@@ -12,51 +14,62 @@
...
@@ -12,51 +14,62 @@
color
:
#fff
;
color
:
#fff
;
}
}
.paymentTitle
{
.paymentTitle
{
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.paymentTexts
view
{
.paymentTexts
view
{
padding
:
5rpx
15rpx
;
padding
:
5rpx
15rpx
;
border
:
1px
solid
#EDEDED
;
border
:
1px
solid
#EDEDED
;
color
:
#888888
;
color
:
#888888
;
border-radius
:
6rpx
;
border-radius
:
6rpx
;
}
}
.paymentTexts
view
:last-child
{
.paymentTexts
view
:last-child
{
margin-left
:
40rpx
;
margin-left
:
40rpx
;
}
}
.paymentTexts
view
.active
{
.paymentTexts
view
.active
{
color
:
#fff
;
color
:
#fff
;
background
:
#257BF2
;
background
:
#257BF2
;
border
:
1px
solid
#257BF2
;
border
:
1px
solid
#257BF2
;
}
}
.paymentTitle
.tisp
{
.paymentTitle
.tisp
{
color
:
#666666
;
color
:
#666666
;
}
}
.textareaBox
textarea
{
.textareaBox
textarea
{
height
:
208rpx
;
height
:
208rpx
;
background
:
#FFFFFF
;
background
:
#FFFFFF
;
border
:
1rpx
solid
#EAEAEA
;
border
:
1rpx
solid
#EAEAEA
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgBox
{
.InforImgBox
{
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
}
.InforImg
,
.addUp
{
.InforImg
,
.addUp
{
width
:
208rpx
;
width
:
208rpx
;
height
:
208rpx
;
height
:
208rpx
;
margin-bottom
:
20rpx
;
margin-bottom
:
20rpx
;
}
}
.InforImg
{
.InforImg
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
margin-right
:
20rpx
;
margin-right
:
20rpx
;
position
:
relative
;
position
:
relative
;
}
}
.InforImg
image
{
.InforImg
image
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgDel
{
.InforImgDel
{
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
top
:
-14rpx
;
top
:
-14rpx
;
...
@@ -64,74 +77,85 @@
...
@@ -64,74 +77,85 @@
background
:
#fff
;
background
:
#fff
;
border-radius
:
50%
;
border-radius
:
50%
;
}
}
.inforCenter
{
.inforCenter
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
overflow
:
hidden
;
overflow
:
hidden
;
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
margin-bottom
:
40rpx
;
margin-bottom
:
40rpx
;
position
:
relative
;
position
:
relative
;
}
}
.inforCenter
:last-child
{
.inforCenter
:last-child
{
margin-bottom
:
0
;
margin-bottom
:
0
;
}
}
.inforCenterTop
{
.inforCenterTop
{
background
:
#F3F3F3
;
background
:
#F3F3F3
;
padding
:
20rpx
29rpx
;
padding
:
20rpx
29rpx
;
font-size
:
32rpx
;
font-size
:
32rpx
;
color
:
#333333
;
color
:
#333333
;
}
}
.inputBox
{
.inputBox
{
padding
:
20rpx
0
;
padding
:
20rpx
0
;
margin
:
0
29rpx
;
margin
:
0
29rpx
;
border-bottom
:
1px
solid
#DDD
;
border-bottom
:
1px
solid
#DDD
;
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.inputBox.noBorder
{
.inputBox.noBorder
{
border
:
0
;
border
:
0
;
}
}
.tisp
{
.tisp
{
color
:
red
;
color
:
red
;
}
}
.inputBoxRight
{
.inputBoxRight
{
position
:
relative
;
position
:
relative
;
}
}
.inputBoxRight
u-number-box
{
.inputBoxRight
u-number-box
{
position
:
absolute
;
position
:
absolute
;
right
:
0
;
right
:
0
;
top
:
-7rpx
;
top
:
-7rpx
;
}
}
/
deep
/
.inputBoxRight
u-number-box
input
{
/
deep
/
.inputBoxRight
u-number-box
input
{
width
:
130rpx
!
important
;
width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
}
}
.inforCenterTopDel
{
.inforCenterTopDel
{
position
:
absolute
;
position
:
absolute
;
left
:
-7rpx
;
left
:
-7rpx
;
top
:
-7rpx
;
top
:
-7rpx
;
padding
:
5rpx
;
padding
:
5rpx
;
z-index
:
1
;
z-index
:
1
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<view>
<view>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.DiningSummaryList[datas.diningIndex].ReimburseList.ReimburseDetailsList"
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.DiningSummaryList[datas.diningIndex].ReimburseList.ReimburseDetailsList"
:key=
"index"
>
:key=
"index"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
<view>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
</view>
</view>
</view>
</view>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
<view
class=
"row"
>
<view
class=
"row"
>
<text>
数量
</text>
<text>
数量
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:value=
"item.UserNum"
@
change=
"(e)=>getNum(e,index,'数量')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UserNum"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
...
@@ -139,7 +163,8 @@
...
@@ -139,7 +163,8 @@
<text>
单价
</text>
<text>
单价
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:max=
"99999999999999999"
v-model=
"item.UnitPrice"
@
change=
"(e)=>getNum(e,index,'金额')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UnitPrice"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between noBorder"
>
<view
class=
"inputBox row justify-between noBorder"
>
...
@@ -156,147 +181,154 @@
...
@@ -156,147 +181,154 @@
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"PX30 PB20 paymentTexts row"
>
<view
class=
"PX30 PB20 paymentTexts row"
>
<template
v-for=
"(item,index) in paymentList"
>
<template
v-for=
"(item,index) in paymentList"
>
<view
:class=
"[datas.DiningSummaryList[datas.diningIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
<view
:class=
"[datas.DiningSummaryList[datas.diningIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
</
template
>
</
template
>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"textareaBox PX30 row"
>
<view
class=
"textareaBox PX30 row"
>
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
v-model=
"datas.DiningSummaryList[datas.diningIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
v-model=
"datas.DiningSummaryList[datas.diningIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
<view
class=
"paymentTitle PA30"
>
<text>
凭证
</text>
<text>
凭证
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
</view>
</view>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.DiningSummaryList[datas.diningIndex].ReimburseList.VoucherPicList"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.DiningSummaryList[datas.diningIndex].ReimburseList.VoucherPicList"
>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
</view>
</view>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
</view>
</view>
<singleChoice
v-if=
"optionVisible"
<singleChoice
v-if=
"optionVisible"
:current=
"optionObj.id"
:list=
"optionList"
@
close=
"close"
:current=
"optionObj.id"
@
change=
"popupCurrent"
></singleChoice>
:list=
"optionList"
@
close=
"close"
@
change=
"popupCurrent"
></singleChoice>
</view>
</view>
</template>
</template>
<
script
>
<
script
>
import
upload
from
"../upload"
;
import
upload
from
"../upload"
;
import
singleChoice
from
"../singleChoice"
;
import
singleChoice
from
"../singleChoice"
;
export
default
{
export
default
{
props
:[
'data'
,
'optionList'
],
props
:
[
'data'
,
'dataIndex3'
,
'optionList'
],
components
:
{
components
:
{
upload
,
upload
,
singleChoice
,
singleChoice
,
},
},
data
()
{
data
()
{
return
{
return
{
paymentList
:[
paymentList
:
[{
{
name
:
'现金支付'
,
id
:
1
},
name
:
'现金支付'
,
{
name
:
'公司结算'
,
id
:
2
},
id
:
1
},
{
name
:
'公司结算'
,
id
:
2
},
],
],
optionVisible
:
false
,
optionVisible
:
false
,
optionObj
:
{},
optionObj
:
{},
params
:
{},
params
:
{},
datas
:
null
,
//展示数据
datas
:
null
,
//展示数据
dataIndex
:
0
,
dataIndex
:
0
,
ReimIndex
:
0
,
ReimIndex
:
0
,
ReimDatas
:
{},
ReimDatas
:
{},
BusList
:
[],
//车信息
BusList
:
[],
//车信息
HotelOrderListReport
:
[],
//酒店信息,合团
HotelOrderListReport
:
[],
//酒店信息,合团
DiningList
:
[],
//餐厅
DiningList
:
[],
//餐厅
ScenicList
:
[],
//景点
ScenicList
:
[],
//景点
OtherList
:
[],
//其他订单信息
OtherList
:
[],
//其他订单信息
TipList
:
[],
//小费收入
TipList
:
[],
//小费收入
TeamList
:
[],
//团费小计
TeamList
:
[],
//团费小计
SelfPlayingIncomeList
:
[],
//自费收入
SelfPlayingIncomeList
:
[],
//自费收入
SelfPlayingExpendList
:
[],
//自费支出
SelfPlayingExpendList
:
[],
//自费支出
LeaderShopList
:
[],
//购物报账
LeaderShopList
:
[],
//购物报账
}
}
},
},
watch
:
{
watch
:
{
data
:{
dataIndex3
:
{
handler
(
newVal
,
oldVal
){
handler
(
newVal
,
oldVal
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
newVal
))
if
(
newVal
!=
oldVal
)
{
this
.
DiningList
=
this
.
params
.
DiningList
this
.
initData
();
}
this
.
dataIndex
=
this
.
params
.
dataIndex3
this
.
getRenderingData
()
this
.
getTotal
()
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
},
},
datas
:{
handler
(
newVal
,
oldVal
){
this
.
updateData
()
},
deep
:
true
,
immediate
:
false
}
},
},
mounted
()
{
mounted
()
{
this
.
initData
();
},
},
methods
:{
methods
:
{
getNum
(
e
,
index
,
type
){
initData
()
{
if
(
type
==
'数量'
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
data
))
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UserNum
=
e
.
value
this
.
DiningList
=
this
.
params
.
DiningList
}
else
if
(
type
==
'金额'
){
this
.
dataIndex
=
this
.
dataIndex3
;
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UnitPrice
=
e
.
value
this
.
getRenderingData
()
}
this
.
getTotal
();
},
getNum
(
e
,
index
,
type
)
{
this
.
getTotal
()
this
.
getTotal
()
},
},
getTotal
()
{
getTotal
()
{
let
total
=
0
let
total
=
0
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
total
+=
x
.
UserNum
*
x
.
UnitPrice
total
+=
x
.
UserNum
*
x
.
UnitPrice
})
})
this
.
datas
.
TotalMoney
=
total
this
.
datas
.
TotalMoney
=
total
this
.
updateData
()
this
.
updateData
()
},
},
delInfor
(
index
)
{
delInfor
(
index
)
{
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
},
},
delImg
(
index
)
{
delImg
(
index
)
{
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
},
},
getSettlementType
(
item
)
{
getSettlementType
(
item
)
{
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
updateData
()
this
.
updateData
()
this
.
$forceUpdate
()
this
.
$forceUpdate
()
},
},
updateData
()
{
updateData
()
{
this
.
DiningList
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
DiningList
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
params
.
DiningList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
DiningList
))
this
.
params
.
DiningList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
DiningList
))
this
.
$emit
(
'change'
,
this
.
params
)
this
.
$emit
(
'change'
,
this
.
params
)
},
},
getRenderingData
()
{
getRenderingData
()
{
this
.
datas
=
this
.
DiningList
[
this
.
dataIndex
]
this
.
datas
=
this
.
DiningList
[
this
.
dataIndex
]
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
0
]))
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
]
.
ReimburseList
.
ReimburseDetailsList
[
0
]))
},
},
showOptionVisible
(
index
)
{
showOptionVisible
(
index
)
{
this
.
optionVisible
=
true
this
.
optionVisible
=
true
this
.
ReimIndex
=
index
this
.
ReimIndex
=
index
this
.
optionObj
=
{
this
.
optionObj
=
{
name
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
,
name
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
id
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
.
ReimIndex
].
UserTypeStr
,
id
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
}
}
},
},
close
()
{
close
()
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
},
},
popupCurrent
(
value
)
{
popupCurrent
(
value
)
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
=
this
.
optionObj
.
id
.
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
.
UserType
=
this
.
optionObj
.
id
},
},
previewImage
(
src
)
{
previewImage
(
src
)
{
uni
.
previewImage
({
uni
.
previewImage
({
urls
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
urls
:
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
current
:
src
,
current
:
src
,
longPressActions
:
{
longPressActions
:
{
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
...
@@ -309,7 +341,7 @@ export default {
...
@@ -309,7 +341,7 @@ export default {
},
},
});
});
},
},
addData
()
{
addData
()
{
this
.
ReimDatas
=
{
this
.
ReimDatas
=
{
...
this
.
ReimDatas
,
...
this
.
ReimDatas
,
ID
:
0
,
ID
:
0
,
...
@@ -318,14 +350,15 @@ export default {
...
@@ -318,14 +350,15 @@ export default {
UserNum
:
0
,
UserNum
:
0
,
UnitPrice
:
0
,
UnitPrice
:
0
,
}
}
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
},
},
onSuccess
(
infor
)
{
onSuccess
(
infor
)
{
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
push
({
this
.
datas
.
DiningSummaryList
[
this
.
datas
.
diningIndex
].
ReimburseList
.
VoucherPicList
.
push
({
FileName
:
infor
.
name
,
FileName
:
infor
.
name
,
url
:
infor
.
url
,
url
:
infor
.
url
,
})
})
}
}
}
}
}
}
</
script
>
</
script
>
\ No newline at end of file
pages/teamLeader/components/report/productInfor4.vue
View file @
5fcec80d
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
url("@/asset/css/flex.css")
;
@import
url("@/asset/css/flex.css")
;
.Sure
{
.Sure
{
padding
:
0
20rpx
;
padding
:
0
20rpx
;
margin-top
:
30rpx
;
margin-top
:
30rpx
;
}
}
.Sure
view
{
.Sure
view
{
background
:
#257BF2
;
background
:
#257BF2
;
border-radius
:
80rpx
;
border-radius
:
80rpx
;
line-height
:
80rpx
;
line-height
:
80rpx
;
...
@@ -12,51 +14,62 @@
...
@@ -12,51 +14,62 @@
color
:
#fff
;
color
:
#fff
;
}
}
.paymentTitle
{
.paymentTitle
{
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.paymentTexts
view
{
.paymentTexts
view
{
padding
:
5rpx
15rpx
;
padding
:
5rpx
15rpx
;
border
:
1px
solid
#EDEDED
;
border
:
1px
solid
#EDEDED
;
color
:
#888888
;
color
:
#888888
;
border-radius
:
6rpx
;
border-radius
:
6rpx
;
}
}
.paymentTexts
view
:last-child
{
.paymentTexts
view
:last-child
{
margin-left
:
40rpx
;
margin-left
:
40rpx
;
}
}
.paymentTexts
view
.active
{
.paymentTexts
view
.active
{
color
:
#fff
;
color
:
#fff
;
background
:
#257BF2
;
background
:
#257BF2
;
border
:
1px
solid
#257BF2
;
border
:
1px
solid
#257BF2
;
}
}
.paymentTitle
.tisp
{
.paymentTitle
.tisp
{
color
:
#666666
;
color
:
#666666
;
}
}
.textareaBox
textarea
{
.textareaBox
textarea
{
height
:
208rpx
;
height
:
208rpx
;
background
:
#FFFFFF
;
background
:
#FFFFFF
;
border
:
1rpx
solid
#EAEAEA
;
border
:
1rpx
solid
#EAEAEA
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgBox
{
.InforImgBox
{
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
}
.InforImg
,
.addUp
{
.InforImg
,
.addUp
{
width
:
208rpx
;
width
:
208rpx
;
height
:
208rpx
;
height
:
208rpx
;
margin-bottom
:
20rpx
;
margin-bottom
:
20rpx
;
}
}
.InforImg
{
.InforImg
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
margin-right
:
20rpx
;
margin-right
:
20rpx
;
position
:
relative
;
position
:
relative
;
}
}
.InforImg
image
{
.InforImg
image
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
}
}
.InforImgDel
{
.InforImgDel
{
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
top
:
-14rpx
;
top
:
-14rpx
;
...
@@ -64,74 +77,84 @@
...
@@ -64,74 +77,84 @@
background
:
#fff
;
background
:
#fff
;
border-radius
:
50%
;
border-radius
:
50%
;
}
}
.inforCenter
{
.inforCenter
{
border-radius
:
10rpx
;
border-radius
:
10rpx
;
overflow
:
hidden
;
overflow
:
hidden
;
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
border
:
1px
solid
rgba
(
102
,
102
,
102
,
0
.3
);
margin-bottom
:
40rpx
;
margin-bottom
:
40rpx
;
position
:
relative
;
position
:
relative
;
}
}
.inforCenter
:last-child
{
.inforCenter
:last-child
{
margin-bottom
:
0
;
margin-bottom
:
0
;
}
}
.inforCenterTop
{
.inforCenterTop
{
background
:
#F3F3F3
;
background
:
#F3F3F3
;
padding
:
20rpx
29rpx
;
padding
:
20rpx
29rpx
;
font-size
:
32rpx
;
font-size
:
32rpx
;
color
:
#333333
;
color
:
#333333
;
}
}
.inputBox
{
.inputBox
{
padding
:
20rpx
0
;
padding
:
20rpx
0
;
margin
:
0
29rpx
;
margin
:
0
29rpx
;
border-bottom
:
1px
solid
#DDD
;
border-bottom
:
1px
solid
#DDD
;
font-size
:
28rpx
;
font-size
:
28rpx
;
}
}
.inputBox.noBorder
{
.inputBox.noBorder
{
border
:
0
;
border
:
0
;
}
}
.tisp
{
.tisp
{
color
:
red
;
color
:
red
;
}
}
.inputBoxRight
{
.inputBoxRight
{
position
:
relative
;
position
:
relative
;
}
}
.inputBoxRight
u-number-box
{
.inputBoxRight
u-number-box
{
position
:
absolute
;
position
:
absolute
;
right
:
0
;
right
:
0
;
top
:
-7rpx
;
top
:
-7rpx
;
}
}
/
deep
/
.inputBoxRight
u-number-box
input
{
/
deep
/
.inputBoxRight
u-number-box
input
{
width
:
130rpx
!
important
;
width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
min-width
:
130rpx
!
important
;
}
}
.inforCenterTopDel
{
.inforCenterTopDel
{
position
:
absolute
;
position
:
absolute
;
left
:
-7rpx
;
left
:
-7rpx
;
top
:
-7rpx
;
top
:
-7rpx
;
padding
:
5rpx
;
padding
:
5rpx
;
z-index
:
1
;
z-index
:
1
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<view>
<view>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenterBox PX30 MT20"
>
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.ReimburseDetailsList"
<view
class=
"inforCenter"
v-for=
"(item,index) in datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.ReimburseDetailsList"
:key=
"index"
>
:key=
"index"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view
class=
"inforCenterTop row justify-between"
@
click=
"showOptionVisible(index)"
>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
{{
item
.
UserTypeStr
?
item
.
UserTypeStr
:
'选择类型'
}}
</view>
<view>
<view>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
<u-icon
name=
"arrow-down"
color=
"#BBBBBB"
size=
"42"
/>
</view>
</view>
</view>
</view>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
v-if=
"index"
@
click=
"delInfor(index)"
class=
"inforCenterTopDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
<view
class=
"row"
>
<view
class=
"row"
>
<text>
数量
</text>
<text>
数量
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:value=
"item.UserNum"
@
change=
"(e)=>getNum(e,index,'数量')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UserNum"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between"
>
<view
class=
"inputBox row justify-between"
>
...
@@ -139,7 +162,7 @@
...
@@ -139,7 +162,7 @@
<text>
单价
</text>
<text>
单价
</text>
</view>
</view>
<view
class=
"inputBoxRight"
>
<view
class=
"inputBoxRight"
>
<u-number-box
:min=
"0"
:max=
"99999999999999999"
v-model=
"item.UnitPrice"
@
change=
"(e)=>getNum(e,index,'金额')"
/>
<input
class=
"text-right"
type=
"number"
v-model=
"item.UnitPrice"
@
input=
"getNum()"
/>
</view>
</view>
</view>
</view>
<view
class=
"inputBox row justify-between noBorder"
>
<view
class=
"inputBox row justify-between noBorder"
>
...
@@ -156,147 +179,153 @@
...
@@ -156,147 +179,153 @@
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"paymentTitle PA30"
>
支付方式
</view>
<view
class=
"PX30 PB20 paymentTexts row"
>
<view
class=
"PX30 PB20 paymentTexts row"
>
<template
v-for=
"(item,index) in paymentList"
>
<template
v-for=
"(item,index) in paymentList"
>
<view
:class=
"[datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
<view
:class=
"[datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.SettlementType==item.id?'active':'']"
@
click=
"getSettlementType(item)"
>
{{
item
.
name
}}
</view>
</
template
>
</
template
>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"paymentTitle PA30"
>
备注
</view>
<view
class=
"textareaBox PX30 row"
>
<view
class=
"textareaBox PX30 row"
>
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
<textarea
class=
"PA20 flex1"
placeholder-style=
"color:#AAAAAA"
v-model=
"datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
v-model=
"datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.Remarks"
placeholder=
"请输入备注信息"
@
blur=
"updateData"
/>
</view>
</view>
<view
class=
"paymentTitle PA30"
>
<view
class=
"paymentTitle PA30"
>
<text>
凭证
</text>
<text>
凭证
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
<text
class=
"tisp"
>
(可上传多张图片)
</text>
</view>
</view>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"PX30 PB30 row InforImgBox"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.VoucherPicList"
>
<view
class=
"InforImg"
v-for=
"(item,index) in datas.ScenicStatisticsList[datas.scenicIndex].ReimburseList.VoucherPicList"
>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<image
:src=
"item.url"
mode=
"aspectFill"
@
click=
"previewImage(item.url)"
></image>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
<u-icon
@
click=
"delImg(index)"
class=
"InforImgDel"
name=
"clear"
color=
"#FA6967"
size=
"36"
/>
</view>
</view>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
<upload
class=
"addUp"
@
onSuccess=
"onSuccess"
></upload>
</view>
</view>
<singleChoice
v-if=
"optionVisible"
<singleChoice
v-if=
"optionVisible"
:current=
"optionObj.id"
:list=
"optionList"
@
close=
"close"
:current=
"optionObj.id"
@
change=
"popupCurrent"
></singleChoice>
:list=
"optionList"
@
close=
"close"
@
change=
"popupCurrent"
></singleChoice>
</view>
</view>
</template>
</template>
<
script
>
<
script
>
import
upload
from
"../upload"
;
import
upload
from
"../upload"
;
import
singleChoice
from
"../singleChoice"
;
import
singleChoice
from
"../singleChoice"
;
export
default
{
export
default
{
props
:[
'data'
,
'optionList'
],
props
:
[
'data'
,
'dataIndex4'
,
'optionList'
],
components
:
{
components
:
{
upload
,
upload
,
singleChoice
,
singleChoice
,
},
},
data
()
{
data
()
{
return
{
return
{
paymentList
:[
paymentList
:
[{
{
name
:
'现金支付'
,
id
:
1
},
name
:
'现金支付'
,
{
name
:
'公司结算'
,
id
:
2
},
id
:
1
},
{
name
:
'公司结算'
,
id
:
2
},
],
],
optionVisible
:
false
,
optionVisible
:
false
,
optionObj
:
{},
optionObj
:
{},
params
:
{},
params
:
{},
datas
:
null
,
//展示数据
datas
:
null
,
//展示数据
dataIndex
:
0
,
dataIndex
:
0
,
ReimIndex
:
0
,
ReimIndex
:
0
,
ReimDatas
:
{},
ReimDatas
:
{},
BusList
:[],
//车信息
ScenicList
:
[],
//景点
HotelOrderListReport
:[],
//酒店信息,合团
DiningList
:[],
//餐厅
ScenicList
:[],
//景点
OtherList
:[],
//其他订单信息
TipList
:[],
//小费收入
TeamList
:[],
//团费小计
SelfPlayingIncomeList
:[],
//自费收入
SelfPlayingExpendList
:[],
//自费支出
LeaderShopList
:[],
//购物报账
}
}
},
},
watch
:
{
watch
:
{
data
:{
dataIndex4
:
{
handler
(
newVal
,
oldVal
){
handler
(
newVal
,
oldVal
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
newVal
))
if
(
newVal
!=
oldVal
)
{
this
.
ScenicList
=
this
.
params
.
ScenicList
this
.
initData
();
}
this
.
dataIndex
=
this
.
params
.
dataIndex4
this
.
getRenderingData
()
this
.
getTotal
()
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
},
},
datas
:{
handler
(
newVal
,
oldVal
){
this
.
updateData
()
},
deep
:
true
,
immediate
:
false
}
},
},
mounted
()
{
mounted
()
{
this
.
initData
();
},
},
methods
:{
methods
:
{
getNum
(
e
,
index
,
type
){
initData
()
{
if
(
type
==
'数量'
)
{
this
.
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
data
))
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UserNum
=
e
.
value
this
.
ScenicList
=
this
.
params
.
ScenicList
}
else
if
(
type
==
'金额'
){
this
.
dataIndex
=
this
.
dataIndex4
;
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
index
].
UnitPrice
=
e
.
value
this
.
getRenderingData
()
}
this
.
getTotal
()
this
.
getTotal
()
},
},
getTotal
(){
getNum
()
{
// if (type == '数量') {
// this.datas.ScenicStatisticsList[this.datas.scenicIndex].ReimburseList.ReimburseDetailsList[index]
// .UserNum = e.value
// } else if (type == '金额') {
// this.datas.ScenicStatisticsList[this.datas.scenicIndex].ReimburseList.ReimburseDetailsList[index]
// .UnitPrice = e.value
// }
this
.
getTotal
()
},
getTotal
()
{
let
total
=
0
let
total
=
0
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
forEach
(
x
=>
{
total
+=
x
.
UserNum
*
x
.
UnitPrice
total
+=
x
.
UserNum
*
x
.
UnitPrice
})
})
this
.
datas
.
TotalMoney
=
total
this
.
datas
.
TotalMoney
=
total
this
.
updateData
()
this
.
updateData
()
},
},
delInfor
(
index
)
{
delInfor
(
index
)
{
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
splice
(
index
,
1
)
},
},
delImg
(
index
)
{
delImg
(
index
)
{
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
splice
(
index
,
1
)
},
},
getSettlementType
(
item
)
{
getSettlementType
(
item
)
{
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
SettlementType
=
item
.
id
this
.
updateData
()
this
.
updateData
()
this
.
$forceUpdate
()
this
.
$forceUpdate
()
},
},
updateData
()
{
updateData
()
{
this
.
ScenicList
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
ScenicList
[
this
.
dataIndex
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
))
this
.
params
.
ScenicList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
ScenicList
))
this
.
params
.
ScenicList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
ScenicList
))
this
.
$emit
(
'change'
,
this
.
params
)
this
.
$emit
(
'change'
,
this
.
params
)
},
},
getRenderingData
()
{
getRenderingData
()
{
this
.
datas
=
this
.
ScenicList
[
this
.
dataIndex
]
this
.
datas
=
this
.
ScenicList
[
this
.
dataIndex
]
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
0
]))
this
.
ReimDatas
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
]
.
ReimburseList
.
ReimburseDetailsList
[
0
]))
},
},
showOptionVisible
(
index
)
{
showOptionVisible
(
index
)
{
this
.
optionVisible
=
true
this
.
optionVisible
=
true
this
.
ReimIndex
=
index
this
.
ReimIndex
=
index
this
.
optionObj
=
{
this
.
optionObj
=
{
name
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
,
name
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
id
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
this
.
ReimIndex
].
UserTypeStr
,
id
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
,
}
}
},
},
close
()
{
close
()
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
},
},
popupCurrent
(
value
)
{
popupCurrent
(
value
)
{
this
.
optionVisible
=
false
this
.
optionVisible
=
false
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
optionObj
=
this
.
optionList
[
findIndex
]
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
].
UserType
=
this
.
optionObj
.
id
.
UserTypeStr
=
this
.
optionObj
.
name
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
[
this
.
ReimIndex
]
.
UserType
=
this
.
optionObj
.
id
},
},
previewImage
(
src
)
{
previewImage
(
src
)
{
uni
.
previewImage
({
uni
.
previewImage
({
urls
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
urls
:
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
map
(
x
=>
{
return
x
.
url
}),
current
:
src
,
current
:
src
,
longPressActions
:
{
longPressActions
:
{
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
itemList
:
[
"发送给朋友"
,
"保存图片"
,
"收藏"
],
...
@@ -309,7 +338,7 @@ export default {
...
@@ -309,7 +338,7 @@ export default {
},
},
});
});
},
},
addData
()
{
addData
()
{
this
.
ReimDatas
=
{
this
.
ReimDatas
=
{
...
this
.
ReimDatas
,
...
this
.
ReimDatas
,
ID
:
0
,
ID
:
0
,
...
@@ -318,14 +347,15 @@ export default {
...
@@ -318,14 +347,15 @@ export default {
UserNum
:
0
,
UserNum
:
0
,
UnitPrice
:
0
,
UnitPrice
:
0
,
}
}
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
ReimburseDetailsList
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
ReimDatas
)))
},
},
onSuccess
(
infor
)
{
onSuccess
(
infor
)
{
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
push
({
this
.
datas
.
ScenicStatisticsList
[
this
.
datas
.
scenicIndex
].
ReimburseList
.
VoucherPicList
.
push
({
FileName
:
infor
.
name
,
FileName
:
infor
.
name
,
url
:
infor
.
url
,
url
:
infor
.
url
,
})
})
}
}
}
}
}
}
</
script
>
</
script
>
\ No newline at end of file
pages/teamLeader/reimbursementInfor.vue
View file @
5fcec80d
...
@@ -89,34 +89,37 @@
...
@@ -89,34 +89,37 @@
</headeDatas>
</headeDatas>
</view>
</view>
<!-- 车信息-->
<!-- 车信息-->
<productInfor1
v-if=
"params.type==1"
:data=
"params"
:dataIndex1=
"params.dataIndex1"
@
change=
"getNewData"
:optionList=
"busTypeList"
>
<productInfor1
v-if=
"params.type==1"
:data=
"params"
:dataIndex1=
"params.dataIndex1"
@
change=
"getNewData"
:optionList=
"busTypeList"
>
</productInfor1>
</productInfor1>
<!-- 酒店信息-->
<!-- 酒店信息-->
<productInfor2
:data=
"params"
v-if=
"params.type==2"
@
change=
"getNewData"
:optionList=
"hotelTypeList"
>
<productInfor2
v-else-if=
"params.type==2"
:data=
"params"
:dataIndex2=
"params.dataIndex2"
@
change=
"getNewData"
:optionList=
"hotelTypeList"
>
</productInfor2>
</productInfor2>
<!-- 餐食信息-->
<!-- 餐食信息-->
<productInfor3
:data=
"params"
v-else-if=
"params.type==3"
@
change=
"getNewData"
:optionList=
"diningTypeList"
>
<productInfor3
v-else-if=
"params.type==3"
:data=
"params"
:dataIndex3=
"params.dataIndex3"
@
change=
"getNewData"
:optionList=
"diningTypeList"
>
</productInfor3>
</productInfor3>
<!-- 门票信息-->
<!-- 门票信息-->
<productInfor4
:data=
"params"
v-else-if=
"params.type==
4"
@
change=
"getNewData"
:optionList=
"scenicTypeList"
>
<productInfor4
v-else-if=
"params.type==4"
:data=
"params"
:dataIndex4=
"params.dataIndex
4"
@
change=
"getNewData"
:optionList=
"scenicTypeList"
>
</productInfor4>
</productInfor4>
<!-- 其它信息-->
<!-- 其它信息-->
<otherInfor1
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==5
"
@
change=
"getNewData"
<otherInfor1
v-else-if=
"params.type==5"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
:options=
"otherTypeList"
></otherInfor1>
:options=
"otherTypeList"
></otherInfor1>
<!-- 小费收入-->
<!-- 小费收入-->
<otherInfor2
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==6
"
@
change=
"getNewData"
>
<otherInfor2
v-else-if=
"params.type==6"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
>
</otherInfor2>
</otherInfor2>
<!-- 团费小计-->
<!-- 团费小计-->
<otherInfor3
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==7
"
@
change=
"getNewData"
>
<otherInfor3
v-else-if=
"params.type==7"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
>
</otherInfor3>
</otherInfor3>
<!-- 自费收入-->
<!-- 自费收入-->
<otherInfor4
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==8
"
@
change=
"getNewData"
>
<otherInfor4
v-else-if=
"params.type==8"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
>
</otherInfor4>
</otherInfor4>
<!-- 自费支出-->
<!-- 自费支出-->
<otherInfor5
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==9
"
@
change=
"getNewData"
>
<otherInfor5
v-else-if=
"params.type==9"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
>
</otherInfor5>
</otherInfor5>
<!-- 购物报账-->
<!-- 购物报账-->
<otherInfor6
:currencyList=
"currencyList"
:data=
"params"
v-else-if=
"params.type==10
"
@
change=
"getNewData"
<otherInfor6
v-else-if=
"params.type==10"
:currencyList=
"currencyList"
:data=
"params
"
@
change=
"getNewData"
:options=
"shopTypeList"
></otherInfor6>
:options=
"shopTypeList"
></otherInfor6>
</scroll-view>
</scroll-view>
<view
v-if=
"params.IsOperation==0"
class=
"saveBox"
@
click=
"saveData"
>
<view
v-if=
"params.IsOperation==0"
class=
"saveBox"
@
click=
"saveData"
>
...
@@ -534,9 +537,12 @@
...
@@ -534,9 +537,12 @@
}
}
if
(
this
.
loading
)
return
if
(
this
.
loading
)
return
this
.
loading
=
true
this
.
loading
=
true
uni
.
showLoading
()
uni
.
showLoading
({
title
:
'保存中...'
})
this
.
apipost
(
"dmcstatistics_post_SetNewLeaderApplyList_V2"
,
this
.
params
,
(
res
)
=>
{
this
.
apipost
(
"dmcstatistics_post_SetNewLeaderApplyList_V2"
,
this
.
params
,
(
res
)
=>
{
console
.
log
(
"dmcstatistics_post_SetNewLeaderApplyList_V2"
,
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
)));
console
.
log
(
"dmcstatistics_post_SetNewLeaderApplyList_V2"
,
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
)));
if
(
res
.
resultCode
==
1
)
{
if
(
res
.
resultCode
==
1
)
{
this
.
loading
=
false
this
.
loading
=
false
uni
.
showToast
({
uni
.
showToast
({
...
@@ -569,7 +575,8 @@
...
@@ -569,7 +575,8 @@
init
()
{
init
()
{
uni
.
showLoading
()
uni
.
showLoading
()
this
.
apipost
(
"dmcstatistics_post_GetNewLeaderPayMoneyStatics"
,
this
.
msg
,
(
res
)
=>
{
this
.
apipost
(
"dmcstatistics_post_GetNewLeaderPayMoneyStatics"
,
this
.
msg
,
(
res
)
=>
{
console
.
log
(
"dmcstatistics_post_GetNewLeaderPayMoneyStatics"
,
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
)));
console
.
log
(
"dmcstatistics_post_GetNewLeaderPayMoneyStatics"
,
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
)));
if
(
res
.
resultCode
==
1
)
{
if
(
res
.
resultCode
==
1
)
{
this
.
params
=
res
.
data
;
this
.
params
=
res
.
data
;
for
(
let
i
=
1
;
i
<
5
;
i
++
)
{
for
(
let
i
=
1
;
i
<
5
;
i
++
)
{
...
...
plugin/utils.js
View file @
5fcec80d
...
@@ -239,13 +239,11 @@ function goZanYangUrl() {
...
@@ -239,13 +239,11 @@ function goZanYangUrl() {
//验证只能输入2位小数【负数:isMinus传true】
//验证只能输入2位小数【负数:isMinus传true】
function
checkPrice
(
value
,
isMinus
)
{
function
checkPrice
(
value
,
isMinus
)
{
console
.
log
(
"checkPrice1"
,
value
);
var
newValue
=
''
;
var
newValue
=
''
;
if
(
value
)
{
if
(
value
)
{
newValue
=
value
+
''
;
newValue
=
value
+
''
;
}
}
var
t
=
newValue
.
length
>
0
?
newValue
[
0
]
:
''
;
var
t
=
newValue
.
length
>
0
?
newValue
[
0
]
:
''
;
console
.
log
(
"checkPrice2"
,
newValue
);
newValue
=
newValue
.
replace
(
/
[^\d
.
]
/g
,
''
);
//清除“数字”和“.”以外的字符
newValue
=
newValue
.
replace
(
/
[^\d
.
]
/g
,
''
);
//清除“数字”和“.”以外的字符
newValue
=
newValue
.
replace
(
/
\.{2,}
/g
,
'.'
);
//只保留第一个. 清除多余的
newValue
=
newValue
.
replace
(
/
\.{2,}
/g
,
'.'
);
//只保留第一个. 清除多余的
newValue
=
newValue
newValue
=
newValue
...
@@ -263,12 +261,10 @@ function checkPrice(value, isMinus) {
...
@@ -263,12 +261,10 @@ function checkPrice(value, isMinus) {
//验证只能输入整数【负数:isMinus传true】
//验证只能输入整数【负数:isMinus传true】
function
checkInteger
(
value
,
isMinus
)
{
function
checkInteger
(
value
,
isMinus
)
{
console
.
log
(
"checkInteger1"
,
value
)
var
newValue
=
''
;
var
newValue
=
''
;
if
(
value
)
{
if
(
value
)
{
newValue
=
value
+
''
;
newValue
=
value
+
''
;
}
}
console
.
log
(
"checkInteger2"
,
newValue
)
var
t
=
newValue
.
length
>
0
?
newValue
[
0
]
:
''
;
var
t
=
newValue
.
length
>
0
?
newValue
[
0
]
:
''
;
newValue
=
newValue
.
replace
(
/
[^\d]
/g
,
''
);
newValue
=
newValue
.
replace
(
/
[^\d]
/g
,
''
);
//是否允许负数
//是否允许负数
...
...
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