批量支付

master
lion 5 months ago
parent acf428c34f
commit 96e853a1e2

@ -22,7 +22,7 @@
gap: 10px;
"
>
<el-input
<el-input
v-model="pendingQuery.keywords"
placeholder="关键词"
size="small"
@ -103,8 +103,7 @@
@click="handleBatchPay"
>批量支付</el-button
>
</div>
</div>
<el-table
ref="pendingTable"
:data="pendingRows"
@ -118,35 +117,48 @@
width="50"
reserve-selection
></el-table-column>
<el-table-column label="申请人" width="120" align="center">
<el-table-column label="申请人" width="80" align="center">
<template #default="{ row }">
{{ row.applicant }}
</template>
</el-table-column>
<el-table-column label="申请科室" width="140" align="center">
<el-table-column label="申请科室" width="100" align="center">
<template #default="{ row }">
{{ row.department }}
</template>
</el-table-column>
<el-table-column label="流程名称" width="160" align="center">
<template #default="{ row }">
<div @click="showModal(row)" style="cursor: pointer;color: #409EFF;">
<div
@click="showModal(row)"
style="cursor: pointer; color: #409eff"
>
{{ row.flowTitle }}
</div>
</div>
</template>
</el-table-column>
<el-table-column label="采购内容" width="160" align="center" show-overflow-tooltip>
<el-table-column
label="采购内容"
width="100"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaseContent }}
</template>
</el-table-column>
<el-table-column label="采购负责人" width="160" align="center" show-overflow-tooltip>
<el-table-column
label="采购负责人"
width="100"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaser }}
</template>
</el-table-column>
<el-table-column label="本次报销数量" width="160" align="center">
<el-table-column label="本次报销数量" width="120" align="center">
<template #default="{ row }">
<el-input-number
v-model="row.applyNum"
@ -154,12 +166,12 @@
:controls="false"
size="small"
:class="{ 'error-input': isApplyNumInvalid(row) }"
style="width: 120px"
style="width: 90px"
@change="validateApplyNum(row)"
/>
</template>
</el-table-column>
<el-table-column label="付款金额" width="160" align="center">
<el-table-column label="付款金额" width="120" align="center">
<template #default="{ row }">
<el-input-number
v-model="row.money"
@ -167,33 +179,48 @@
:precision="2"
:controls="false"
size="small"
style="width: 120px"
style="width: 90px"
/>
</template>
</el-table-column>
<el-table-column label="已报销数量" width="120" align="center">
<el-table-column label="已报销数量" width="100" align="center">
<template #default="{ row }">
{{ row.paidNum }}
</template>
</el-table-column>
<el-table-column label="数量" width="120" align="center">
<el-table-column label="数量" width="100" align="center">
<template #default="{ row }">
{{ row.total }}
</template>
</el-table-column>
<el-table-column label="是否合同审批" width="140" align="center">
<el-table-column label="是否合同审批" width="120" align="center">
<template #default="{ row }">
{{ row.isContractFlow }}
<el-select
v-model="row.shifouhetongshenpi"
placeholder="是否合同审批"
size="small"
@change="
(val) =>
handlePendingFieldUpdate(row, 'shifouhetongshenpi', val)
"
style="width: 90px"
>
<el-option label="是" value="是" />
<el-option label="否" value="否" />
</el-select>
</template>
</el-table-column>
<el-table-column label="清单情况" width="140" align="center">
<el-table-column label="清单情况" width="120" align="center">
<template #default="{ row }">
<el-select
v-model="row.shifouqingdan"
placeholder="清单情况"
size="small"
@change="val => handlePendingFieldUpdate(row, 'shifouqingdan', val)"
style="width: 100px"
@change="
(val) =>
handlePendingFieldUpdate(row, 'shifouqingdan', val)
"
style="width: 90px"
>
<el-option label="清单内" value="清单内" />
<el-option label="清单外" value="清单外" />
@ -206,32 +233,36 @@
v-model="row.shifoubijia"
placeholder="是否比价"
size="small"
@change="val => handlePendingFieldUpdate(row, 'shifoubijia', val)"
style="width: 80px"
@change="
(val) => handlePendingFieldUpdate(row, 'shifoubijia', val)
"
style="width: 90px"
>
<el-option label="是" value="是" />
<el-option label="否" value="否" />
</el-select>
</template>
</el-table-column>
<el-table-column label="是否货" width="120" align="center">
<el-table-column label="是否货" width="120" align="center">
<template #default="{ row }">
<el-select
v-model="row.shifoufahuo"
placeholder="是否货"
placeholder="是否货"
size="small"
@change="val => handlePendingFieldUpdate(row, 'shifoufahuo', val)"
style="width: 80px"
@change="
(val) => handlePendingFieldUpdate(row, 'shifoufahuo', val)
"
style="width: 90px"
>
<el-option label="是" value="是" />
<el-option label="否" value="否" />
</el-select>
</template>
</el-table-column>
<el-table-column
label="品名或服务需求"
min-width="220"
min-width="140"
show-overflow-tooltip
>
<template #default="{ row }">
@ -240,14 +271,14 @@
</el-table-column>
<el-table-column
label="型号与规格"
width="160"
width="140"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.model }}
</template>
</el-table-column>
<el-table-column label="产地" width="120" align="center">
<el-table-column label="产地" width="100" align="center">
<template #default="{ row }">
{{ row.origin }}
</template>
@ -259,7 +290,7 @@
</el-table-column>
<el-table-column
label="用途"
min-width="240"
min-width="140"
show-overflow-tooltip
>
<template #default="{ row }">
@ -362,80 +393,93 @@
@click="handlePaidQueryChange"
>查询</el-button
>
</div>
<el-table
:data="paidRows"
border
style="width: 100%"
row-key="id"
>
<el-table-column label="申请人" width="120" align="center">
</div>
<el-table :data="paidRows" border style="width: 100%" row-key="id">
<el-table-column label="申请人" width="80" align="center">
<template #default="{ row }">
{{ row.applicant }}
</template>
</el-table-column>
<el-table-column label="申请科室" width="140" align="center">
<el-table-column label="申请科室" width="100" align="center">
<template #default="{ row }">
{{ row.department }}
</template>
</el-table-column>
<el-table-column label="流程名称" width="160" align="center">
<template #default="{ row }">
<div @click="showModal(row)" style="cursor: pointer;color: #409EFF;">
<div
@click="showModal(row)"
style="cursor: pointer; color: #409eff"
>
{{ row.flowTitle }}
</div>
</div>
</template>
</el-table-column>
<el-table-column label="采购内容" width="160" align="center" show-overflow-tooltip>
<el-table-column
label="采购内容"
width="100"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaseContent }}
</template>
</el-table-column>
<el-table-column label="采购负责人" width="160" align="center" show-overflow-tooltip>
<el-table-column
label="采购负责人"
width="100"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaser }}
</template>
</el-table-column>
<el-table-column label="已报销数量" width="120" align="center">
<el-table-column label="已报销数量" width="100" align="center">
<template #default="{ row }">
{{ row.paidNum }}
</template>
</el-table-column>
<el-table-column label="付款金额" width="120" align="center">
<el-table-column label="付款金额" width="100" align="center">
<template #default="{ row }">
{{ row.money }}
</template>
</el-table-column>
<el-table-column label="数量" width="120" align="center">
<el-table-column label="数量" width="100" align="center">
<template #default="{ row }">
{{ row.total }}
</template>
</el-table-column>
<el-table-column label="是否合同审批" width="140" align="center">
<el-table-column label="是否支付完成" width="120" align="center">
<template #default="{ row }">
{{ row.isContractFlow }}
{{ row.fund_log.status ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column label="清单情况" width="140" align="center">
<el-table-column label="是否合同审批" width="120" align="center">
<template #default="{ row }">
{{ row.shifouqingdan || '' }}
{{ row.shifouhetongshenpi || "" }}
</template>
</el-table-column>
<el-table-column label="是否比价" width="120" align="center">
<el-table-column label="清单情况" width="120" align="center">
<template #default="{ row }">
{{ row.shifouqingdan || "" }}
</template>
</el-table-column>
<el-table-column label="是否比价" width="100" align="center">
<template #default="{ row }">
{{ row.shifoubijia || '' }}
{{ row.shifoubijia || "" }}
</template>
</el-table-column>
<el-table-column label="是否发货" width="120" align="center">
<el-table-column label="是否收货" width="100" align="center">
<template #default="{ row }">
{{ row.shifoufahuo || '' }}
{{ row.shifoufahuo || "" }}
</template>
</el-table-column>
<el-table-column
label="品名或服务需求"
min-width="220"
min-width="140"
show-overflow-tooltip
>
<template #default="{ row }">
@ -444,14 +488,14 @@
</el-table-column>
<el-table-column
label="型号与规格"
width="160"
width="140"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.model }}
</template>
</el-table-column>
<el-table-column label="产地" width="120" align="center">
<el-table-column label="产地" width="100" align="center">
<template #default="{ row }">
{{ row.origin }}
</template>
@ -463,7 +507,7 @@
</el-table-column>
<el-table-column
label="用途"
min-width="240"
min-width="140"
show-overflow-tooltip
>
<template #default="{ row }">
@ -483,12 +527,12 @@
/>
</el-tab-pane>
</el-tabs>
</div>
</div>
</el-card>
<payMx ref="payMx" :is-show.sync="isShowPay"></payMx>
<vxe-modal
<vxe-modal
v-model="isShowModal"
:z-index="zIndex"
transfer
@ -503,7 +547,7 @@
>
<iframe
:src="modalUrl"
style="display: block;width: 100%;height: 100%;border: 0;"
style="display: block; width: 100%; height: 100%; border: 0"
frameborder="0"
/>
</vxe-modal>
@ -524,34 +568,47 @@
@selection-change="handleSelectedPreviewSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="申请人" width="120" align="center">
<el-table-column label="申请人" width="80" align="center">
<template #default="{ row }">
{{ row.applicant }}
</template>
</el-table-column>
<el-table-column label="申请科室" width="140" align="center">
<el-table-column label="申请科室" width="100" align="center">
<template #default="{ row }">
{{ row.department }}
</template>
</el-table-column>
<el-table-column label="流程名称" width="160" align="center">
<template #default="{ row }">
<div @click="showModal(row)" style="cursor: pointer;color: #409EFF;">
<div
@click="showModal(row)"
style="cursor: pointer; color: #409eff"
>
{{ row.flowTitle }}
</div>
</div>
</template>
</el-table-column>
<el-table-column label="采购内容" min-width="160" align="center" show-overflow-tooltip>
<el-table-column
label="采购内容"
min-width="120"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaseContent }}
</template>
</el-table-column>
<el-table-column label="采购负责人" width="140" align="center" show-overflow-tooltip>
<el-table-column
label="采购负责人"
width="100"
align="center"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.purchaser }}
</template>
</el-table-column>
<el-table-column label="本次报销数量" width="160" align="center">
<el-table-column label="本次报销数量" width="120" align="center">
<template #default="{ row }">
<el-input-number
v-model="row.applyNum"
@ -559,57 +616,68 @@
:controls="false"
size="small"
:class="{ 'error-input': isApplyNumInvalid(row) }"
style="width: 120px"
style="width: 90px"
@change="validateApplyNum(row)"
/>
</template>
</el-table-column>
<el-table-column label="付款金额" width="160" align="center">
<el-table-column label="付款金额" width="120" align="center">
<template #default="{ row }">
<el-input-number v-model="row.money" :min="0" :precision="2" :controls="false" size="small" style="width: 120px" />
<el-input-number
v-model="row.money"
:min="0"
:precision="2"
:controls="false"
size="small"
style="width: 90px"
/>
</template>
</el-table-column>
<el-table-column label="已报销数量" width="120" align="center">
<el-table-column label="已报销数量" width="100" align="center">
<template #default="{ row }">
{{ row.paidNum }}
</template>
</el-table-column>
<el-table-column label="数量" width="120" align="center">
<el-table-column label="数量" width="100" align="center">
<template #default="{ row }">
{{ row.total }}
</template>
</el-table-column>
<el-table-column label="是否合同审批" width="140" align="center">
<template #default="{ row }">
{{ row.isContractFlow }}
</template>
</el-table-column>
<el-table-column label="清单情况" width="140" align="center">
<template #default="{ row }">
{{ row.shifouqingdan || '' }}
</template>
</el-table-column>
<el-table-column label="是否比价" width="120" align="center">
<template #default="{ row }">
{{ row.shifoubijia || '' }}
</template>
</el-table-column>
<el-table-column label="是否发货" width="120" align="center">
<template #default="{ row }">
{{ row.shifoufahuo || '' }}
</template>
</el-table-column>
<el-table-column label="品名或服务需求" min-width="160" show-overflow-tooltip>
<el-table-column label="是否合同审批" width="120" align="center">
<template #default="{ row }">
{{ row.shifouhetongshenpi || "" }}
</template>
</el-table-column>
<el-table-column label="清单情况" width="120" align="center">
<template #default="{ row }">
{{ row.shifouqingdan || "" }}
</template>
</el-table-column>
<el-table-column label="是否比价" width="100" align="center">
<template #default="{ row }">
{{ row.shifoubijia || "" }}
</template>
</el-table-column>
<el-table-column label="是否收货" width="100" align="center">
<template #default="{ row }">
{{ row.shifoufahuo || "" }}
</template>
</el-table-column>
<el-table-column
label="品名或服务需求"
min-width="140"
show-overflow-tooltip
>
<template #default="{ row }">
{{ row.itemName }}
</template>
</el-table-column>
<el-table-column label="型号与规格" width="160" show-overflow-tooltip>
<el-table-column label="型号与规格" width="140" show-overflow-tooltip>
<template #default="{ row }">
{{ row.model }}
</template>
</el-table-column>
<el-table-column label="产地" width="120" align="center">
<el-table-column label="产地" width="100" align="center">
<template #default="{ row }">
{{ row.origin }}
</template>
@ -619,7 +687,7 @@
{{ row.unit }}
</template>
</el-table-column>
<el-table-column label="用途" min-width="160" show-overflow-tooltip>
<el-table-column label="用途" min-width="140" show-overflow-tooltip>
<template #default="{ row }">
{{ row.purpose }}
</template>
@ -627,10 +695,11 @@
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="closeSelectedPreview"> </el-button>
<el-button type="primary" @click="confirmSelectedPreview"></el-button>
<el-button type="primary" @click="confirmSelectedPreview"
>确认支付</el-button
>
</span>
</el-dialog>
</div>
</template>
@ -640,13 +709,17 @@ import {
receiveList,
getFundLog,
detailContract,
updateList
} from '@/api/flow/pay';
updateList,
} from "@/api/flow/pay";
import payMx from "./components/payMx.vue";
import { departmentListNoAuth, caigoumingxiConfig,userListNoAuth } from '@/api/common';
import { PopupManager } from 'element-ui/lib/utils/popup';
import { defaultModalSize } from '@/settings';
import { getToken } from '@/utils/auth';
import {
departmentListNoAuth,
caigoumingxiConfig,
userListNoAuth,
} from "@/api/common";
import { PopupManager } from "element-ui/lib/utils/popup";
import { defaultModalSize } from "@/settings";
import { getToken } from "@/utils/auth";
export default {
name: "PayList",
components: {
@ -654,8 +727,8 @@ export default {
},
data() {
return {
isShowModal:false,
modalUrl:'',
isShowModal: false,
modalUrl: "",
zIndex: PopupManager.nextZIndex(),
defaultModalSize,
departments: [],
@ -673,7 +746,7 @@ export default {
},
pendingRows: [],
pendingPage: 1,
pendingPageSize: 40,
pendingPageSize: 10,
pendingTotal: 0,
pendingSelectedIds: [],
pendingSelectedMap: {},
@ -692,30 +765,36 @@ export default {
},
paidRows: [],
paidPage: 1,
paidPageSize: 40,
paidPageSize: 10,
paidTotal: 0,
};
},
computed: {
pendingBadgeCount() {
return (this.pendingSelectedIds && this.pendingSelectedIds.length) ? this.pendingSelectedIds.length : 0;
return this.pendingSelectedIds && this.pendingSelectedIds.length
? this.pendingSelectedIds.length
: 0;
},
},
methods: {
async handlePendingFieldUpdate(row, field, value) {
const oldValue = row[field]
const oldValue = row[field];
// v-model 使
try {
await updateList({ id: row.id, [field]: value })
this.$message.success('已保存')
await updateList({ id: row.id, [field]: value });
this.$message.success("已保存");
} catch (e) {
//
this.$message.error('保存失败,请重试')
this.$set(row, field, oldValue)
this.$message.error("保存失败,请重试");
this.$set(row, field, oldValue);
}
},
showModal(row) {
this.modalUrl = `/oa/#/flow/detail?module_id=${row.yibancaigou?.flow?.custom_model_id}&flow_id=${row.yibancaigou?.flow?.id}&auth_token=${window.encodeURIComponent(getToken())}&isSinglePage=1`;
this.modalUrl = `/oa/#/flow/detail?module_id=${
row.yibancaigou?.flow?.custom_model_id
}&flow_id=${
row.yibancaigou?.flow?.id
}&auth_token=${window.encodeURIComponent(getToken())}&isSinglePage=1`;
this.isShowModal = true;
},
async getDepartmentList() {
@ -789,11 +868,11 @@ export default {
async handleBatchPay() {
//
if (this.pendingSelectedIds.length === 0) {
this.$message.warning('请先选择需要支付的明细')
return
this.$message.warning("请先选择需要支付的明细");
return;
}
this.openSelectedPreview()
return
this.openSelectedPreview();
return;
//
if (this.pendingSelectedIds.length === 0) {
this.$message.warning("请先选择需要支付的明细");
@ -1088,7 +1167,9 @@ export default {
this.$refs.pendingTable.toggleRowSelection(row, true);
}
});
this.$nextTick(() => { this.syncingPendingSelection = false; });
this.$nextTick(() => {
this.syncingPendingSelection = false;
});
}
});
},
@ -1120,10 +1201,10 @@ export default {
},
openSelectedPreview() {
// 便
const editedMap = {}
;(this.selectedPreviewRows || []).forEach(r => {
editedMap[r.id] = { applyNum: r.applyNum, money: r.money }
})
const editedMap = {};
(this.selectedPreviewRows || []).forEach((r) => {
editedMap[r.id] = { applyNum: r.applyNum, money: r.money };
});
//
const rows = this.pendingSelectedIds
@ -1134,15 +1215,17 @@ export default {
this.$set(this.pendingSelectedMap, id, record);
}
}
const rec = this.pendingSelectedMap[id]
if (!rec) return null
const rec = this.pendingSelectedMap[id];
if (!rec) return null;
//
const edited = editedMap[id]
const edited = editedMap[id];
if (edited) {
if (edited.applyNum !== undefined && edited.applyNum !== null) rec.applyNum = edited.applyNum
if (edited.money !== undefined && edited.money !== null) rec.money = edited.money
if (edited.applyNum !== undefined && edited.applyNum !== null)
rec.applyNum = edited.applyNum;
if (edited.money !== undefined && edited.money !== null)
rec.money = edited.money;
}
return rec
return rec;
})
.filter(Boolean);
this.selectedPreviewRows = rows;
@ -1157,7 +1240,9 @@ export default {
this.$refs.previewTable.toggleRowSelection(row, true);
}
});
this.$nextTick(() => { this.syncingPreviewSelection = false; });
this.$nextTick(() => {
this.syncingPreviewSelection = false;
});
}
});
},
@ -1166,85 +1251,140 @@ export default {
this.selectedPreviewSelection = selection.map((row) => row.id);
},
confirmSelectedPreview() {
const selectedRows = this.selectedPreviewRows.filter(row => this.selectedPreviewSelection.includes(row.id))
const selectedRows = this.selectedPreviewRows.filter((row) =>
this.selectedPreviewSelection.includes(row.id)
);
if (selectedRows.length === 0) {
this.$message.warning('请至少勾选一条明细')
return
this.$message.warning("请至少勾选一条明细");
return;
}
//
const invalidRows = []
selectedRows.forEach(row => {
const applyNum = Number(row.applyNum) || 0
const paidNum = Number(row.paidNum) || 0
const total = Number(row.total) || 0
const invalidRows = [];
selectedRows.forEach((row) => {
const applyNum = Number(row.applyNum) || 0;
const paidNum = Number(row.paidNum) || 0;
const total = Number(row.total) || 0;
if (applyNum === 0) {
invalidRows.push({ row, reason: '本次报销数量不能为0' })
invalidRows.push({ row, reason: "本次报销数量不能为0" });
} else if (applyNum + paidNum > total) {
invalidRows.push({ row, reason: '本次报销数量大于剩余可报销数量' })
invalidRows.push({ row, reason: "本次报销数量大于剩余可报销数量" });
}
})
});
if (invalidRows.length > 0) {
const errorMessages = invalidRows.map(item => `${item.row.itemName || '未知项目'}${item.reason}`).join('')
this.$message.warning(`以下数据不符合条件:${errorMessages}`)
this.$nextTick(() => { this.$forceUpdate() })
return
const errorMessages = invalidRows
.map((item) => `${item.row.itemName || "未知项目"}${item.reason}`)
.join("");
this.$message.warning(`以下数据不符合条件:${errorMessages}`);
this.$nextTick(() => {
this.$forceUpdate();
});
return;
}
//
const newIds = [...this.selectedPreviewSelection]
this.pendingSelectedIds = newIds
const newMap = {}
newIds.forEach(id => {
const record = this.selectedPreviewRows.find(row => row.id === id) || this.pendingSelectedMap[id] || this.pendingRows.find(row => row.id === id)
if (record) newMap[id] = record
})
this.pendingSelectedMap = { ...newMap }
const newIds = [...this.selectedPreviewSelection];
this.pendingSelectedIds = newIds;
const newMap = {};
newIds.forEach((id) => {
const record =
this.selectedPreviewRows.find((row) => row.id === id) ||
this.pendingSelectedMap[id] ||
this.pendingRows.find((row) => row.id === id);
if (record) newMap[id] = record;
});
this.pendingSelectedMap = { ...newMap };
//
const titleParts = selectedRows.map(r => `${r.itemName || ''}*${Number(r.applyNum) || 0}`)
const zhifutitle = `${titleParts.join(',')}${titleParts.length ? ',' : ''}`
const xiangxishuoming = zhifutitle
const titleParts = selectedRows.map(
(r) => `${r.itemName || ""}*${Number(r.applyNum) || 0}`
);
const zhifutitle = `${titleParts.join(",")}${
titleParts.length ? "," : ""
}`;
const xiangxishuoming = zhifutitle;
const contractIdSet = Array.from(new Set(selectedRows.map(r => r?.yibancaigou?.flow?.out_contract_id).filter(Boolean)))
const contractIdsStr = contractIdSet.join(',')
const contract_id = contractIdsStr
const amt = selectedRows.reduce((sum, r) => sum + (Number(r.money) || 0), 0)
const contractIdSet = Array.from(
new Set(
selectedRows
.map((r) => r?.yibancaigou?.flow?.out_contract_id)
.filter(Boolean)
)
);
const contractIdsStr = contractIdSet.join(",");
const contract_id = contractIdsStr;
const amt = selectedRows.reduce(
(sum, r) => sum + (Number(r.money) || 0),
0
);
const proceed = async () => {
let yifujine = 0
let cishu = 0
let yifujine = 0;
let cishu = 0;
try {
const fundRes = await getFundLog({ contract_id: contractIdsStr, show_type: 1 })
const payments = fundRes?.data || []
const actNumsTotal = () => payments.reduce((pre, cur) => pre + (Number(cur?.act_money) ? Number(cur.act_money) : 0), 0)
yifujine = actNumsTotal()
cishu = Array.isArray(payments) ? payments.length : 0
const fundRes = await getFundLog({
contract_id: contractIdsStr,
show_type: 1,
});
const payments = fundRes?.data || [];
const actNumsTotal = () =>
payments.reduce(
(pre, cur) =>
pre + (Number(cur?.act_money) ? Number(cur.act_money) : 0),
0
);
yifujine = actNumsTotal();
cishu = Array.isArray(payments) ? payments.length : 0;
} catch (e) {}
let xiangmuzonge = 0
let zhifucishu = 0
let liezhiqudao = ''
let contractno = ''
let guanlianliucheng = ''
let xiangmuzonge = 0;
let zhifucishu = 0;
let liezhiqudao = "";
let contractno = "";
let guanlianliucheng = "";
try {
let contracts = []
let contracts = [];
if (contractIdSet.length > 0) {
contracts = await Promise.all(contractIdSet.map(id => detailContract({ id })))
contracts = await Promise.all(
contractIdSet.map((id) => detailContract({ id }))
);
}
const sumMoney = (contracts || []).reduce((sum, c) => sum + (Number(c?.money) || 0), 0)
const sumPlanLen = (contracts || []).reduce((sum, c) => sum + ((c?.sign_plan?.length) || 0), 0)
const plansNames = Array.from(new Set((contracts || []).flatMap(c => (c?.plans || []).map(p => p?.name)).filter(Boolean))).join(',')
const contractNos = (contracts || []).map(c => c?.number).filter(Boolean).join(',')
const relatedFlows = Array.from(new Set((contracts || []).flatMap(c => (c?.contract_flow_links || []).map(l => l?.flow_id)).filter(Boolean))).join(',')
xiangmuzonge = sumMoney
zhifucishu = sumPlanLen
liezhiqudao = plansNames
contractno = contractNos
guanlianliucheng = relatedFlows
const sumMoney = (contracts || []).reduce(
(sum, c) => sum + (Number(c?.money) || 0),
0
);
const sumPlanLen = (contracts || []).reduce(
(sum, c) => sum + (c?.sign_plan?.length || 0),
0
);
const plansNames = Array.from(
new Set(
(contracts || [])
.flatMap((c) => (c?.plans || []).map((p) => p?.name))
.filter(Boolean)
)
).join(",");
const contractNos = (contracts || [])
.map((c) => c?.number)
.filter(Boolean)
.join(",");
const relatedFlows = Array.from(
new Set(
(contracts || [])
.flatMap((c) =>
(c?.contract_flow_links || []).map((l) => l?.flow_id)
)
.filter(Boolean)
)
).join(",");
xiangmuzonge = sumMoney;
zhifucishu = sumPlanLen;
liezhiqudao = plansNames;
contractno = contractNos;
guanlianliucheng = relatedFlows;
} catch (e) {}
const wuzicaigou_items = selectedRows.map(r => ({
const wuzicaigou_items = selectedRows.map((r) => ({
flow_id: r?.yibancaigou?.flow?.id,
contract_id: r?.yibancaigou?.flow?.out_contract_id,
wuzicaigou_id: r?.yibancaigou?.id,
@ -1254,8 +1394,8 @@ export default {
total: Number(r?.num) || 0,
apply_money: Number(r?.money) || 0,
money: Number(r?.money) || 0,
is_receive: 0
}))
is_receive: 0,
}));
const baseInfo = {
zhifutitle,
@ -1269,15 +1409,17 @@ export default {
liezhiqudao,
contractno,
guanlianliucheng,
wuzicaigou_items
}
wuzicaigou_items,
};
this.selectedPreviewVisible = false
const url = `/flow/create?&module_name=oa&isSinglePage=1&module_id=75&default_json=${window.encodeURIComponent(JSON.stringify(baseInfo))}`
this.$router.push(url)
}
this.selectedPreviewVisible = false;
const url = `/flow/create?&module_name=oa&isSinglePage=1&module_id=75&default_json=${window.encodeURIComponent(
JSON.stringify(baseInfo)
)}`;
this.$router.push(url);
};
proceed()
proceed();
},
closeSelectedPreview() {
//
@ -1314,10 +1456,11 @@ export default {
department: item.yibancaigou?.flow?.creator_department?.name || "",
flowTitle: item.yibancaigou?.flow?.title || "",
purchaseContent: item.yibancaigou?.caigouneirong || "",
purchaser: (item.yibancaigou?.flow?.logs && item.yibancaigou.flow.logs.length > 0)
? (item.yibancaigou.flow.logs[0]?.user?.name || "")
: "",
isContractFlow: item.yibancaigou?.flow?.contract_flow ? '是' : '否',
purchaser:
item.yibancaigou?.flow?.logs && item.yibancaigou.flow.logs.length > 0
? item.yibancaigou.flow.logs[0]?.user?.name || ""
: "",
isContractFlow: item.yibancaigou?.flow?.contract_flow ? "是" : "否",
paidNum: item.fund_log_wuzicaigou_items_sum_num || 0,
total: item.num || 0,
itemName: item.pinminghuofuwuxuqiu || "",
@ -1367,10 +1510,11 @@ export default {
department: item.yibancaigou?.flow?.creator_department?.name || "",
flowTitle: item.yibancaigou?.flow?.title || "",
purchaseContent: item.yibancaigou?.caigouneirong || "",
purchaser: (item.yibancaigou?.flow?.logs && item.yibancaigou.flow.logs.length > 0)
? (item.yibancaigou.flow.logs[0]?.user?.name || "")
: "",
isContractFlow: item.yibancaigou?.flow?.contract_flow ? '是' : '否',
purchaser:
item.yibancaigou?.flow?.logs && item.yibancaigou.flow.logs.length > 0
? item.yibancaigou.flow.logs[0]?.user?.name || ""
: "",
isContractFlow: item.yibancaigou?.flow?.contract_flow ? "是" : "否",
paidNum: item.num || 0,
money: item.money || 0,
total: item.caigoumingxi?.num || 0,
@ -1388,8 +1532,8 @@ export default {
watch: {
isShowModal(newVal) {
if (newVal) {
}else{
this.modalUrl = '';
} else {
this.modalUrl = "";
}
},
activeTab(newTab, oldTab) {

Loading…
Cancel
Save