Commit 5fcec80d authored by 黄奎's avatar 黄奎

11

parent ed7e1ed4
<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
<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
<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
...@@ -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.dataIndex4" @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++) {
......
...@@ -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, '');
//是否允许负数 //是否允许负数
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment