This commit is contained in:
linfso 2025-05-05 16:06:22 +08:00
parent cc0f331a93
commit 72be338464

View File

@ -0,0 +1,482 @@
<template>
<div >
<el-table
border
:data="billList"
size="mini"
style="width: 100%"
>
<el-table-column :label="$t('账单编号')" align="center" prop="settleBillNo" width="170" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('账单名称')" align="left" prop="settleBillName" width="200" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('账单月份')" align="center" prop="billMonth" width="80" />
<el-table-column :label="$t('收款状态')" align="center" prop="paymentStatus" width="100" >
<template slot-scope="scope">
<el-tag v-if="scope.row.paymentStatus=='0'" type="error">未收款</el-tag>
<el-tag v-if="scope.row.paymentStatus=='1'" type="success">已收款</el-tag>
<el-tag v-if="scope.row.paymentStatus=='2'" type="warning">部分收款</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('开票状态')" align="center" prop="openBillStatus" width="100" >
<template slot-scope="scope">
<el-tag v-if="scope.row.openBillStatus=='0'" type="error">未开票</el-tag>
<el-tag v-if="scope.row.openBillStatus=='1'" type="success">已开票</el-tag>
<el-tag v-if="scope.row.openBillStatus=='2'" type="warning">部分开票</el-tag>
<el-tag v-if="scope.row.openBillStatus=='3'" type="warning">不开票</el-tag>
<el-tag v-if="scope.row.openBillStatus=='4'" type="success">已完成</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('应收金额')" align="center" prop="recMoney" width="150" />
<el-table-column :label="$t('已收金额')" align="center" prop="recedMoney" width="150" />
<el-table-column :label="$t('回款联系人')" align="center" prop="payee" width="100" />
<el-table-column :label="$t('销售联系人')" align="center" prop="salesmen" width="100" />
</el-table>
<el-form ref="form" :model="form" size="mini" :rules="rules" label-width="80px" style="margin-top: 20px;">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="6" >
<el-form-item label="收款方式" prop="payType">
<span slot="label">
<span style="color: red">收款方式</span>
</span>
<el-select v-model="form.payType" placeholder="收款方式" clearable filterable style="width:100%">
<el-option
v-for="dict in dict.type.emis_settlebill_pay_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item :label="$t('缴款人')" prop="customerCode" >
<span slot="label">
<span style="color: red">缴款人</span>
</span>
<PayeePicker v-model="form.payManCode" @onChange="onPayeeSelect"></PayeePicker>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="交易时间" prop="tradeDate">
<span slot="label">
<span style="color: red">交易时间</span>
</span>
<el-date-picker clearable
v-model="form.tradeDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交易时间"
style="width:100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6" >
</el-col>
<el-col :span="6" >
<el-form-item label="收款金额" prop="payMoney">
<span slot="label">
<span style="color: red">收款金额</span>
</span>
<el-input-number v-model="form.payMoney" size="mini" placeholder="开票金额" :min="0.00" :controls="false" :precision="2" disabled></el-input-number>
</el-form-item>
</el-col>
<el-col :span="18" >
</el-col>
<el-col :span="24" >
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="" />
</el-form-item>
</el-col>
<!-- <el-col :span="24">
<el-form-item label="收款单号" prop="payScope" >
<el-radio-group v-model="form.payScope" @change="changePayScope">
<el-radio :key="'1'" label="1">全部运单</el-radio>
<el-radio :key="'0'" label="0">部分运单</el-radio>
</el-radio-group>
</el-form-item>
</el-col> -->
<el-col :span="24">
<el-form-item label="运单列表" prop="billCode" >
<span slot="label">
<span style="color: red">运单列表</span>
</span>
<div style="display:inline-flex; width: 50%;" v-if="form.payScope==0">
<el-input v-model="form.params.billCodeStr" rows="2" type="textarea" placeholder="部分收款请填写单号,多单请使用逗号隔开" />
<el-button type="primary" @click="addBillToApply">加入单号</el-button>
</div>
<el-table
class="cargoList"
:cell-style="{
'padding': '0px!important',
'padding-left': '0px!important',
'padding-right': '0px!important',
'font-size':'11px'
}"
:header-cell-style="{
'font-size':'11px'
}"
border
:data="form.payRelList"
size="mini"
style="width: 100%"
>
<!-- max-height="500px" -->
<el-table-column :label="$t('序号')" align="center" width="60">
<template slot-scope="scope">
<span > {{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column prop="billNo" :label="$t('运单号')" align="center" width="170">
<template slot-scope="scope">
<span>{{ scope.row.billNo }}</span>
</template>
</el-table-column>
<el-table-column prop="billFee" :label="$t('运费')" align="center" width="100">
<template slot-scope="scope">
{{scope.row.billFee}}
</template>
</el-table-column>
<el-table-column prop="canApplyFee" :label="$t('已收金额')" align="center" width="100">
<template slot-scope="scope">
{{scope.row.hasApplyFee}}
</template>
</el-table-column>
<el-table-column prop="openBillMoney" :label="$t('收款金额')" align="center" width="120">
<template slot-scope="scope">
<span>{{scope.row.payMoney}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('寄件日期')" align="center" prop="waybillDetail.sendDate" min-width="170" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('快件类型')" align="center" prop="kjlx" width="180" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ scope.row.waybillDetail.sendSiteName }}--{{ scope.row.waybillDetail.dispatchUnderlingSiteName }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('发件人')" align="center" prop="waybillDetail.sendName" width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件公司')" align="center" prop="waybillDetail.sendCompany" width="150" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('支付方式')" align="center" prop="waybillDetail.paymentType" min-width="80" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_payment_type" :value="scope.row.waybillDetail.paymentType" />
</template>
</el-table-column>
<el-table-column :label="$t('产品类型')" align="center" prop="waybillDetail.productTypeName" width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('件数')" align="center" prop="waybillDetail.parcelQty" width="80" />
<el-table-column :label="$t('结算重量')" align="center" prop="waybillDetail.settlementWeight" width="120" />
<el-table-column :label="$t('结算体积')" align="center" prop="waybillDetail.totalVolume" min-width="80" />
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>deleteFeeItem(scope.row)">&#xe7ae;</span>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="text-align: center;margin-bottom: 10px;">
<el-button type="primary" :loading="isDoing" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</div>
</template>
<script>
import { getInfoBySettleBillNo} from "@/api/emis/emisSettleBill";
import {listEmisSettleSubBill,listHasPayMap} from "@/api/emis/emisSettleSubBill";
import { listEmisSettlePayRecord, getEmisSettlePayRecord, delEmisSettlePayRecord, addEmisSettlePayRecord, updateEmisSettlePayRecord } from "@/api/emis/emisSettlePayRecord";
import AllMonthpayAccountPicker from '@/views/emis/EmisBaseTools/AllMonthpayAccountPicker.vue';
import PayeePicker from '@/views/emis/EmisBaseTools/PayeePicker.vue';
export default {
name: "PayRecordInputByMerge",
props:{
billList:{
type:Array
}
},
components: { AllMonthpayAccountPicker,PayeePicker },
dicts: ['emis_settlebill_pay_type'],
data() {
return {
emisSettlePayRecordOptions: [],
settleBillItem:this.settleBillObj,
// 遮罩层
loading: true,
isDoing:false,
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "id不能为空", trigger: "blur" }
],
payType: [
{ required: true, message: "支付类型不能为空", trigger: ["blur","change"] }
],
recType: [
{ required: true, message: "收付类型不能为空", trigger: ["blur","change"] }
],
payManCode: [
{ required: true, message: "缴款人不能为空", trigger: ["blur","change"] }
],
payMoney: [
{ required: true, message: "金额不能为空", trigger: ["blur","change"] }
],
refundMoney: [
{ required: true, message: "退款金额不能为空", trigger: ["blur","change"] }
],
tradeDate: [
{ required: true, message: "交易时间不能为空", trigger: ["blur","change"] }
],
}
};
},
computed: {
// getBillCode(){
// this.form.settleBillNo = this.settleBillNo;
// this.initData();
// return this.form.settleBillNo ;
// }
},
watch: {
"billList": {
handler (newValue, oldValue) {
// this.form.settleBillNo = this.settleBillNo;
this.initData();
},
deep: true
},
},
created() {
this.initData();
},
methods: {
initData() {
this.reset();
this.form.recType=1;
this.form.payScope='1';
this.form.payRelList=[];
console.log("===>initData2222===>",this.billList)
if(this.billList&& this.billList.length>0){
// this.loading = true;
// getInfoBySettleBillNo(this.settleBillNo).then(response => {
// this.settleBillItem = response.data;
// this.form.payManCode = this.settleBillItem.custNo;
// this.form.payMan=this.settleBillItem.custName;
// console.log("===>settleBillItem3333===>",this.settleBillItem)
// this.loading = false;
// });
this.changePayScope();
}
},
async handleCalcFeeItem(row){
let totalFee=Number(0);
let origFee=Number(0);
if(this.form.payRelList&&this.form.payRelList.length>0){
let len=this.form.payRelList.length;
for(let i=0;i<len;i++){
let item=this.form.payRelList[i];
let newFee=Number(item.payMoney);
newFee=newFee.toFixed(2);
origFee=Number(origFee)+Number(newFee);
}
totalFee=origFee
}
if(this.form.recType==1){
this.form.payMoney = totalFee.toFixed(2);
}
else if(this.form.recType==2){
this.form.refundMoney = totalFee.toFixed(2);
}
},
async changePayScope(){
// 收/ 退款
if(this.form.payScope==1){
let settleBillNoListStr="";
for(let i=0;i<this.billList.length;i++){
let itemBill = this.billList[i];
settleBillNoListStr=settleBillNoListStr+itemBill.settleBillNo+",";
}
this.form.settleBillNo=settleBillNoListStr;
this.form.payRelList=[];
let hasPayMap = {}
let resMap=await listHasPayMap({settleBillNo:settleBillNoListStr});
if(resMap.rows&&resMap.rows.length>0){
for(let i=0;i<resMap.rows.length;i++){
let item=resMap.rows[i];
hasPayMap[item.billNo] = item.sumMoney
}
}
console.log("===>hasPayMap==>",hasPayMap);
let qParam={
settleBillNo:settleBillNoListStr,
pageNum:1,
pageSize:2000
}
// 查询子账单
let res=await listEmisSettleSubBill(qParam);
console.log("===>=res==>",res)
if(res.code==200){
res.rows.forEach(itemSubBill=>{
let relItem={...itemSubBill};
relItem.payMoney=itemSubBill.billFee;
relItem.hasApplyFee=0;
console.log("===>=hasPayMap1111==>",hasPayMap[itemSubBill.billNo])
if(itemSubBill.billNo in hasPayMap){
if(this.form.recType==1){
relItem.hasApplyFee=hasPayMap[itemSubBill.billNo];
relItem.payMoney=itemSubBill.billFee-hasPayMap[itemSubBill.billNo];
}
}
if(relItem.payMoney>0){
this.form.payRelList.push(relItem);
}
});
}
this.handleCalcFeeItem();
}else{
this.form.payRelList=[];
}
},
onRecTypeChange(){
this.changePayScope();
},
onPayeeSelect(item){
this.form.payMan=item;
},
onMonthpayAccountSelect(item){
console.log("onMonthpayAccountSelect==>",item);
if(item==null){
this.form.payMan=null;
return;
}
this.form.payMan=item.custName;
},
// 取消按钮
cancel() {
this.reset();
this.$emit("on-cancel");
},
// 表单重置
reset() {
this.form = {
payScope:null,
params:{
billCodeStr:null,
},
payRelList:[],
id: null,
payId: null,
payType: null,
recType: null,
payMan: null,
payManCode: null,
settleBillNo: this.settleBillNo,
blAudit: null,
auditDate: null,
auditManCode: null,
auditSiteCode: null,
customerCode: null,
customerName: null,
payMoney: null,
payStatus: null,
payStatusDesc: null,
breakType: null,
breakReason: null,
breakEmpCode: null,
recManCode: null,
settleType: this.settleType,
refundDate: null,
refundManCode: null,
refundSeq: null,
refundMode: null,
refundMoney: null,
refundReason: null,
refundRemark: null,
refundOpManCode: null,
refundRegisterSiteCode: null,
refundRegisterManCode: null,
satisfyMoney: null,
satisfyReason: null,
allowanceMoney: null,
allowanceReason: null,
deductionMoney: null,
deductionReason: null,
otherMoney: null,
otherReason: null,
tradeDate: null,
remark: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createSite: null,
updateSite: null
};
this.resetForm("form");
},
/** 提交按钮 */
submitForm() {
// 必须要有金额才能保存
this.$refs["form"].validate(valid => {
if (valid) {
if(this.form.tradeDate){
this.form.tradeDate = this.form.tradeDate + " 00:00:00";
}
if(this.form.refundDate){
this.form.refundDate = this.form.refundDate + " 00:00:00";
}
this.isDoing=true;
addEmisSettlePayRecord(this.form).then(response => {
this.isDoing=false;
this.$modal.msgSuccess("新增成功");
this.$emit("on-changed");
});
}
});
},
}
};
</script>