<template> <view class="detail-view"> <u-form label-width="150" :model="add_form" ref="uForm"> <view class="form-model-view"> <u-form-item required label="收款单位" prop="customerName"> <u-input @click="goPage('/pagesT/customer/selCustomer')" class="dis-input" disabled v-model="add_form.customerName" placeholder="请选择" /> <u-icon name="arrow-right" size="24" color="#6c6c6c"></u-icon> </u-form-item> <u-form-item label="收款人"> <view class="form-value">{{ add_form.operatorName }}</view> </u-form-item> <u-form-item label="当前应收"> <view class="form-value">{{ $utils.formattedNumber(add_form.receivable) }}</view> </u-form-item> <u-form-item label='所属店铺'> <view class="clearfix form-val" @click="goPage('/pagesT/shop/selShop')"> <view class="float_right" @click.stop="add_form.shopId = ''"> <u-icon :name="!add_form.shopId ? 'arrow-right' : 'close-circle-fill'" size="28" color="#999999"> </u-icon> </view> <text class="float_right ellipsis">{{ add_form.shopId ? add_form.shopName : '请选择' }}</text> </view> </u-form-item> </view> <view class="form-model-view"> <u-form-item label="收款单明细"> <view class="form-value add-btn-go" @click="addAccount"> <u-icon name="plus" size="24"></u-icon> <text>添加收款</text> </view> </u-form-item> <view class="detail-ul"> <view class="detail-li" v-for="(item, index) in add_form.receiptRequisitionAccountDate" :key="index"> <view class="del-icon" @click="delAccount(index)"> <u-icon name="minus-circle-fill" size="40" color="#fa3534"></u-icon> </view> <view class="title clearfix"> <view class="float_left">结算方式</view> <view class="float_right" @click="openMethods(index)"> <text>{{ item.settlementMethod !== '' ? pay_type_list[item.settlementMethod - 1].label : '请选择' }}</text> <u-icon name="arrow-right" size="24" color="#6c6c6c"></u-icon> </view> </view> <u-form-item label='结算账户'> <view class="clearfix form-val" @click="settlementAccount(index)"> <view class="float_right" @click.stop="delsettlementAccount"> <u-icon :name="!item.accountId ? 'arrow-right' : 'close-circle-fill'" size="28" color="#999999"> </u-icon> </view> <text class="float_right ellipsis">{{ item.accountId ? item.accountName : '请选择' }}</text> </view> </u-form-item> <view class="money-ul"> <view class="money-li"><input type="digit" @blur="moneyChange(index)" v-model="item.collectionAmount" placeholder="收款金额" /></view> <view class="money-li"><input type="digit" @blur="moneyChange(index)" v-model="item.preferentialAmount" placeholder="优惠金额" /></view> <view class="money-li"><input type="digit" v-model="item.actualAmount" placeholder="实收金额" /> </view> </view> <view class="bottom clearfix"><input type="text" v-model="item.remark" placeholder="备注" /> </view> </view> </view> </view> <view class="form-model-view"> <u-form-item label="收款总额"> <view class="form-value">{{ totalCollectionAmount }}</view> </u-form-item> <u-form-item label="优惠总额"> <view class="form-value">{{ totalPreferentialAmount }}</view> </u-form-item> <u-form-item label="实收总额"> <view class="form-value">{{ totalActualAmount }}</view> </u-form-item> </view> </u-form> <u-select @confirm="methodsConfirm" v-model="methods_show" :list="pay_type_list"></u-select> <view class="detail-bottom"> <view class="handel-btn" @click="submit">提交订单</view> </view> </view> </template> <script> export default { data() { return { rules: { customerName: [{ required: true, message: '请选择收款单位', trigger: ['change', 'blur'] }] }, add_form: { customerId: '', customerName: '', operatorId: '', operatorName: '', receivable: '', shopId: "", shopName: "", receiptRequisitionAccountDate: [{ collectionAmount: '', preferentialAmount: '', actualAmount: '', settlementMethod: '', remark: '', accountName: "", accountId: "", }] }, methods_show: false, account_index: 0, pay_type_list: [{ value: 1, label: '当面现金' }, { value: 2, label: '私人微信' }, { value: 3, label: '私人支付宝' }, { value: 4, label: '私人银行卡' }, { value: 5, label: '公司公户' }, { value: 6, label: '公司微信' }, { value: 7, label: '公司支付宝' }, { value: 8, label: '公司银行卡' } ], customerData: '', account_id: '', shopData: {}, AccountData: {}, index: '' }; }, computed: { userInfo() { return this.$store.state.userInfo; }, // 收款总额 totalCollectionAmount() { if (!this.add_form.receiptRequisitionAccountDate.length) { return 0; } else if (this.add_form.receiptRequisitionAccountDate.length === 1) { return Number(this.add_form.receiptRequisitionAccountDate[0].collectionAmount); } else { let sum = 0; this.add_form.receiptRequisitionAccountDate.forEach(item => { sum = this.$NP.plus(sum, Number(item.collectionAmount) || 0); }); return sum; } }, // 优惠总额 totalPreferentialAmount() { if (!this.add_form.receiptRequisitionAccountDate.length) { return 0; } else if (this.add_form.receiptRequisitionAccountDate.length === 1) { return Number(this.add_form.receiptRequisitionAccountDate[0].preferentialAmount); } else { let sum = 0; this.add_form.receiptRequisitionAccountDate.forEach(item => { sum = this.$NP.plus(sum, Number(item.preferentialAmount) || 0); }); return sum; } }, // 实收总额 totalActualAmount() { if (!this.add_form.receiptRequisitionAccountDate.length) { return 0; } else if (this.add_form.receiptRequisitionAccountDate.length === 1) { return Number(this.add_form.receiptRequisitionAccountDate[0].actualAmount); } else { let sum = 0; this.add_form.receiptRequisitionAccountDate.forEach(item => { sum = this.$NP.plus(sum, Number(item.actualAmount) || 0); }); return sum; } } }, watch: { customerData(val) { if (val) { this.add_form.customerId = val.id; this.add_form.customerName = val.name; this.add_form.receivable = val.money; } }, // 店铺 shopData(val) { if (val) { this.add_form.shopName = val.name; this.add_form.shopId = val.id; } }, AccountData(val) { if (val) { console.log(val); this.add_form.receiptRequisitionAccountDate[this.index].accountId = val.id this.add_form.receiptRequisitionAccountDate[this.index].accountName = val.name } } }, onLoad(options) { if (options.id) { this.account_id = options.id; uni.setNavigationBarTitle({ title: '编辑收款申请单' }); this.getReceiptRequisitionInfo(); } else { this.add_form.operatorId = this.userInfo.userCenterId; this.add_form.operatorName = this.userInfo.name; } }, methods: { // 详情 getReceiptRequisitionInfo() { this.$u.api.getReceiptRequisitionInfo(this.account_id).then(({ data }) => { this.add_form = { customerId: data.customerId, customerName: data.customerName, operatorId: data.operatorId, operatorName: data.operatorName, receivable: data.receivable, receiptRequisitionAccountDate: data.accountList.map(item => { return { ...item, settlementMethod: item.settlementMethod }; }) }; }); }, openMethods(index) { this.methods_show = true; this.account_index = index; }, methodsConfirm(arr) { this.add_form.receiptRequisitionAccountDate[this.account_index].settlementMethod = arr[0].value; }, addAccount() { this.add_form.receiptRequisitionAccountDate.push({ collectionAmount: '', preferentialAmount: '', actualAmount: '', settlementMethod: '', remark: '' }); }, delAccount(index) { if (this.add_form.receiptRequisitionAccountDate.length === 1) { this.$u.toast('至少保留一条'); return; } this.add_form.receiptRequisitionAccountDate.splice(index, 1); }, moneyChange(index) { const target = this.$u.deepClone(this.add_form.receiptRequisitionAccountDate); //优惠金额不能大于收款金额 if (Number(target[index].preferentialAmount) > Number(target[index].collectionAmount)) { target[index].preferentialAmount = Number(target[index].collectionAmount); } let collectionAmount = target[index].collectionAmount; let preferentialAmount = target[index].preferentialAmount; target[index].actualAmount = this.$NP.minus(collectionAmount, preferentialAmount); this.add_form.receiptRequisitionAccountDate = target; }, // 添加 submit() { this.$refs.uForm.validate(valid => { if (valid) { const params = { ...this.add_form, totalCollectionAmount: this.totalCollectionAmount, totalPreferentialAmount: this.totalPreferentialAmount, totalActualAmount: this.totalActualAmount }; let isSub = true; for (let i in this.add_form.receiptRequisitionAccountDate) { let item = this.add_form.receiptRequisitionAccountDate[i]; if (!item.collectionAmount) { isSub = false; this.$u.toast('请输入收款金额'); break; } if (!item.settlementMethod) { isSub = false; this.$u.toast('请选择结算方式'); break; } if(!item.accountId) { isSub = false; this.$u.toast('请选择结算账户'); break; } } if (!isSub) { return; } if (this.account_id) { this.$u.api.editReceiptRequisition(this.account_id, params).then(res => { this.$u.toast('修改成功'); setTimeout(() => { uni.navigateBack(); }, 1500); }); } else { this.$u.api.addReceiptRequisition(params).then(res => { this.$u.toast('新增成功'); setTimeout(() => { uni.navigateBack(); }, 1500); }); } } }); }, settlementAccount(index) { if (!this.add_form.shopId) { this.$u.toast('必须先选择商铺'); return } this.goPage('/pagesT/account/selAccount') this.index = index }, delsettlementAccount() { this.add_form.receiptRequisitionAccountDate[this.index].accountId = ""; this.add_form.receiptRequisitionAccountDate[this.index].accountName = ""; } }, // 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕 onReady() { this.$refs.uForm.setRules(this.rules); } }; </script> <style lang="scss" scoped> .detail-ul { .detail-li { padding-left: 60rpx; position: relative; border-bottom: 1px solid #eeeeee; &:last-child { border-bottom: 0 none; } .del-icon { position: absolute; top: 50%; left: 0; transform: translateY(-50%); } .title { line-height: 80rpx; } .money-ul { border-top: 1px solid #eeeeee; padding: 20rpx 0; display: flex; .money-li { flex: 3; border-right: 1px solid #eeeeee; input { height: 80rpx; line-height: 80rpx; text-align: center; } &:last-child { border-right: 0 none; } } } .bottom { border-top: 1px solid #eeeeee; input { height: 80rpx; line-height: 80rpx; } } } } </style>