|
@@ -28,9 +28,11 @@
|
|
|
ref="uploadTable"
|
|
|
v-loading="loading"
|
|
|
:key="tableKey"
|
|
|
+ :summary-method="getSummaries"
|
|
|
+ show-summary
|
|
|
:data="dataListNew">
|
|
|
- <el-table-column type="seq" width="40"></el-table-column>
|
|
|
- <el-table-column label="文件名称" prop="name" align="center">
|
|
|
+<!-- <el-table-column type="seq" width="40"></el-table-column>-->
|
|
|
+ <el-table-column label="文件名称" prop="name" align="center" width="290">
|
|
|
<template #default="scope">
|
|
|
<div v-if="ifName(scope.row) === true">
|
|
|
<el-image
|
|
@@ -46,7 +48,7 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="创建人" prop="createBy.name" align="center"></el-table-column>
|
|
|
- <el-table-column label="创建时间" prop="createTime" align="center"></el-table-column>
|
|
|
+ <el-table-column label="创建时间" prop="createTime" align="center" width="110"></el-table-column>
|
|
|
<el-table-column label="文件大小" prop="size" align="center">
|
|
|
<template #default="scope">
|
|
|
{{getSize(scope.row.size)}}
|
|
@@ -63,42 +65,42 @@
|
|
|
}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="invoiceProjectName" label="发票项目名" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="invoiceProjectName" label="发票项目名" align="center" width="150" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input maxlength="50" readonly="true" v-model="scope.row.invoiceProjectName" ></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="number" label="发票号" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="number" label="发票号" align="center" width="150" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input oninput ="value=value.replace(/\D|^/g,'')" readonly="true" maxlength="30" @change="isExict(scope.row)" v-model="scope.row.number" ></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="invoiceDate" label="开票日期" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="invoiceDate" label="开票日期" align="center" width="110" :edit-render="{}" show-overflow="title">
|
|
|
<template v-slot:edit="scope">
|
|
|
<el-input v-model="scope.row.invoiceDate" readonly="true" type="date" transfer placeholder="请选择日期"></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="invoiceUnit" label="开票单位" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="invoiceUnit" label="开票单位" align="center" width="200" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input maxlength="50" readonly="true" v-model="scope.row.invoiceUnit" ></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="buyerName" label="购买方名称" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="buyerName" label="购买方名称" align="center" width="200" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input maxlength="50" readonly="true" v-model="scope.row.buyerName" ></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="amount" label="金额" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="amount" label="金额" align="center" width="90" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input maxlength="15" readonly="true" v-model="scope.row.amount" @input="scope.row.amount = twoDecimalPlaces(scope.row.amount)" @change="countAmount(scope.row)"></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="taxAmount" label="税额" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="taxAmount" label="税额" align="center" width="90" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input maxlength="15" readonly="true" v-model="scope.row.taxAmount" @input="scope.row.taxAmount = twoDecimalPlaces(scope.row.taxAmount)" @change="countAmount(scope.row)"></el-input>
|
|
|
</template>
|
|
|
</el-table-column >
|
|
|
- <el-table-column prop="count" label="价税合计" align="center" :edit-render="{}" show-overflow="title">
|
|
|
+ <el-table-column prop="count" label="价税合计" align="center" width="90" :edit-render="{}" show-overflow="title">
|
|
|
<template #edit="scope">
|
|
|
<el-input disabled="true" v-model="scope.row.count" ></el-input>
|
|
|
</template>
|
|
@@ -106,7 +108,7 @@
|
|
|
<el-table-column label="操作" width="200px" fixed="right" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-button text type="primary" key="01" icon="el-icon-download" size="small" @click="toHref(scope.row)" >下载</el-button>
|
|
|
- <el-button text type="primary" key="02" icon="el-icon-delete" size="small" @click="deleteFileById(scope.row, scope.$index,fileList)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
|
|
|
+ <el-button text type="primary" key="02" icon="el-icon-delete" size="small" @click="deleteFileById(scope.row, scope.$index,this.dataListNew)" :disabled="auth==='view'&&delFlag === false&&createBy!==scope.row.createBy.name">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -316,6 +318,25 @@
|
|
|
if (!isXml) {
|
|
|
this.$message.error('只能上传 XML 文件');
|
|
|
return false; // 取消上传
|
|
|
+ }else{
|
|
|
+ try {
|
|
|
+ //对上传的xml文件信息进行处理并通过后端接口进行解析返回到父页面进行调整
|
|
|
+ const formBody = new FormData()
|
|
|
+ formBody.append('file', file)
|
|
|
+ await this.ossService.disposeXmlFile(formBody).then((data) => {
|
|
|
+ if(!data && JSON.stringify(data) === "{}"){
|
|
|
+ this.$message.warning('上传的数电发票格式错误');
|
|
|
+ this.loading = false;
|
|
|
+ // 在验证失败时删除已经添加的行
|
|
|
+ const index = this.fileList.findIndex(item => item.name === file.name);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.deleteFileById(this.fileList[index], index, this.fileList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
}
|
|
|
// 其他判定逻辑...
|
|
|
return true; // 允许上传
|
|
@@ -539,11 +560,12 @@
|
|
|
continue;
|
|
|
}
|
|
|
validCompanyFiles.push(item); // 符合条件的文件
|
|
|
- }else {
|
|
|
- console.log('error',data)
|
|
|
- errorFiles.push(item.raw.name)
|
|
|
- continue;
|
|
|
}
|
|
|
+ // else {
|
|
|
+ // console.log('error',data)
|
|
|
+ // errorFiles.push(item.raw.name)
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -697,9 +719,9 @@
|
|
|
// this.$refs.upload.handleRemove(this.dataListNew[index])
|
|
|
await this.dataListNew.splice(index, 1)
|
|
|
await this.dataList.splice(index, 1)
|
|
|
- if (this.commonJS.isNotEmpty(row.id)) {
|
|
|
- this.ossService.deleteMsgById(row.id)
|
|
|
- }
|
|
|
+ // if (this.commonJS.isNotEmpty(row.id)) {
|
|
|
+ // this.ossService.deleteMsgById(row.id)
|
|
|
+ // }
|
|
|
var newFileList = [];
|
|
|
for (var i = 0; i < fileList.length; i++) {
|
|
|
if (fileList[i].name !== row.name) {
|
|
@@ -708,20 +730,22 @@
|
|
|
}
|
|
|
this.fileList = newFileList;
|
|
|
},
|
|
|
- async deleteFileById (row, index,fileList) {
|
|
|
+ deleteFileById (row, index,fileList) {
|
|
|
// this.$refs.upload.handleRemove(this.dataListNew[index])
|
|
|
- await this.dataListNew.splice(index, 1)
|
|
|
- await this.dataList.splice(index, 1)
|
|
|
+ this.dataListNew.splice(index, 1)
|
|
|
+
|
|
|
+ this.dataList = this.dataListNew
|
|
|
// if (this.commonJS.isNotEmpty(row.id)) {
|
|
|
// this.ossService.deleteMsgById(row.id)
|
|
|
// }
|
|
|
- var newFileList = [];
|
|
|
- for (var i = 0; i < fileList.length; i++) {
|
|
|
- if (fileList[i].name !== row.name) {
|
|
|
- newFileList.push(fileList[i])
|
|
|
- }
|
|
|
- }
|
|
|
- this.fileList = newFileList;
|
|
|
+ // var newFileList = [];
|
|
|
+ // for (var i = 0; i < this.dataListNew.length; i++) {
|
|
|
+ // if (this.dataListNew[i].name !== row.name) {
|
|
|
+ // newFileList.push(this.dataListNew[i])
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // this.fileList = newFileList;
|
|
|
// 更新表格数据
|
|
|
this.$nextTick(() => {
|
|
|
this.$forceUpdate(); // 强制更新表格
|
|
@@ -783,13 +807,73 @@
|
|
|
} else {
|
|
|
this.loading = false
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+ getSummaries(param) {
|
|
|
+ const { columns, data } = param;
|
|
|
+
|
|
|
+ // 初始化汇总数组
|
|
|
+ const sums = [];
|
|
|
+
|
|
|
+ // 遍历列
|
|
|
+ columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ // 第一列(通常是序号列),我们不需要进行汇总,直接设置为“汇总”
|
|
|
+ sums[index] = '汇总';
|
|
|
+ }
|
|
|
+ if (column.property === 'amount'){
|
|
|
+ // 如果当前列是 'amount',进行汇总
|
|
|
+ const values = data.map((item) => Number(item[column.property]));
|
|
|
+ sums[index] = this.formatNumber(values.reduce((prev, curr) => {
|
|
|
+ return prev + curr; // 汇总价税合计列
|
|
|
+ }, 0));
|
|
|
+ }
|
|
|
+ if (column.property === 'taxAmount'){
|
|
|
+ // 如果当前列是 'amount',进行汇总
|
|
|
+ const values = data.map((item) => Number(item[column.property]));
|
|
|
+ sums[index] = this.formatNumber(values.reduce((prev, curr) => {
|
|
|
+ return prev + curr; // 汇总价税合计列
|
|
|
+ }, 0));
|
|
|
+ }
|
|
|
+ if (column.property === 'count'){
|
|
|
+ // 如果当前列是 'amount',进行汇总
|
|
|
+ const values = data.map((item) => Number(item[column.property]));
|
|
|
+ sums[index] = this.formatNumber(values.reduce((prev, curr) => {
|
|
|
+ return prev + curr; // 汇总价税合计列
|
|
|
+ }, 0));
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return sums;
|
|
|
+ },
|
|
|
+
|
|
|
+ formatNumber(number) {
|
|
|
+ return number.toFixed(2); // 保留两位小数,返回字符串
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+ ::v-deep .el-table{
|
|
|
+ .el-table__footer-wrapper tbody td.el-table__cell, .el-table__header-wrapper tbody td.el-table__cell{
|
|
|
+ background-color: #fff; /* 设置背景颜色与表格一致 */
|
|
|
+
|
|
|
+ }
|
|
|
+ /* 设置汇总行的背景颜色与表格一致 */
|
|
|
+ .el-table__footer {
|
|
|
+ background-color: #fff; /* 设置背景颜色与表格一致 */
|
|
|
+
|
|
|
+ }
|
|
|
+ /* 让第一列的汇总居中 */
|
|
|
+ .el-table__footer .el-table__cell:nth-child(1) {
|
|
|
+ text-align: center; /* 让第一列居中 */
|
|
|
+ font-weight: bold; /* 可以根据需要加粗 */
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-divider__text {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+</style>
|
|
|
<style>
|
|
|
- .el-divider__text {
|
|
|
- font-size: 16px;
|
|
|
- font-weight: bold;
|
|
|
- }
|
|
|
+
|
|
|
</style>
|