bug修复

This commit is contained in:
hongchao 2025-02-10 09:19:20 +08:00
parent 615915a72c
commit 54c4bad8cb
6 changed files with 411 additions and 59 deletions

View File

@ -36,6 +36,33 @@ export function getLeaseList(query) {
})
}
// 查询费用推送审核维修列表
export function getRepairList(query) {
return request({
url: '/material/iws_cost_push/getRepairCostsByAgreementId',
method: 'get',
params: query
})
}
// 查询费用推送审核丢失列表
export function getLoseList(query) {
return request({
url: '/material/iws_cost_push/getLoseCostsByAgreementId',
method: 'get',
params: query
})
}
// 查询费用推送审核报废列表
export function getScrapList(query) {
return request({
url: '/material/iws_cost_push/getScrapCostsByAgreementId',
method: 'get',
params: query
})
}
// 查询费用结算审核列表
export function getSltExamInfo(query) {

View File

@ -90,10 +90,16 @@
ref="multipleTable"
row-key="id"
@selection-change="handleSelectionChange"
:span-method="objectSpanMethod"
border
>
<el-table-column type="selection" width="55" align="center" :selectable="selectable"/>
<el-table-column label="序号" align="center" width="80" type="index"/>
<el-table-column label="序号" align="center" width="80" type="index">
<template scope="scope">
<span style="background-color: #f8f8f9;text-align: center;" v-if="scope.$index==pushReviewList.length-1">合计费用</span>
<span v-else>{{ scope.$index+1 }} </span>
</template>
</el-table-column>
<el-table-column label="协议号" align="center" prop="agreementCode" show-overflow-tooltip />
<el-table-column label="单位名称" align="center" prop="unitName" show-overflow-tooltip />
<el-table-column label="工程名称" align="center" prop="projectName" show-overflow-tooltip />
@ -106,28 +112,40 @@
</el-table-column>
<el-table-column label="租赁费用" align="center" prop="leaseMoney" show-overflow-tooltip >
<template slot-scope="scope" >
<span class="clickText" v-if="scope.row.leaseMoney" @click="openLease(scope.row)">
<span class="clickText" v-if="scope.row.leaseMoney!=null && scope.$index!=pushReviewList.length-1" @click="openLease(scope.row)">
{{scope.row.leaseMoney}}
</span>
<span v-if="scope.row.leaseMoney!=null && scope.$index==pushReviewList.length-1" >
{{scope.row.leaseMoney}}
</span>
</template>
</el-table-column>
<el-table-column label="维修费用" align="center" prop="repairMoney" show-overflow-tooltip >
<template slot-scope="scope" >
<span class="clickText" v-if="scope.row.repairMoney!=null" @click="openRepair(scope.row)">
<span class="clickText" v-if="scope.row.repairMoney!=null && scope.$index!=pushReviewList.length-1" @click="openRepair(scope.row)">
{{scope.row.repairMoney}}
</span>
<span v-if="scope.row.repairMoney!=null && scope.$index==pushReviewList.length-1" >
{{scope.row.repairMoney}}
</span>
</template>
</el-table-column>
<el-table-column label="报废费用" align="center" prop="scrapMoney" show-overflow-tooltip >
<template slot-scope="scope" >
<span class="clickText" v-if="scope.row.scrapMoney!=null" @click="openScrap(scope.row)">
<span class="clickText" v-if="scope.row.scrapMoney!=null && scope.$index!=pushReviewList.length-1" @click="openScrap(scope.row)">
{{scope.row.scrapMoney}}
</span>
<span v-if="scope.row.scrapMoney!=null && scope.$index==pushReviewList.length-1" >
{{scope.row.scrapMoney}}
</span>
</template>
</el-table-column>
<el-table-column label="丢失费用" align="center" prop="lostMoney" show-overflow-tooltip >
<template slot-scope="scope" >
<span class="clickText" v-if="scope.row.lostMoney!=null" @click="openLose(scope.row)">
<span class="clickText" v-if="scope.row.lostMoney!=null && scope.$index!=pushReviewList.length-1" @click="openLose(scope.row)">
{{scope.row.lostMoney}}
</span>
<span v-if="scope.row.lostMoney!=null && scope.$index==pushReviewList.length-1" >
{{scope.row.lostMoney}}
</span>
</template>
@ -145,14 +163,14 @@
<span v-if="scope.row.isSettlement==0" style="color: #f56c6c">未结算</span>
</template>
</el-table-column>
<el-table-column label="是否审核" align="center" prop="isReview" show-overflow-tooltip >
<el-table-column label="是否审核" align="center" prop="checkStatus" show-overflow-tooltip >
<template slot-scope="scope" >
<span v-if="scope.row.isReview==1" style="color: #67c23a">已审核</span>
<span v-if="scope.row.isReview==0" style="color: #f56c6c">未审核</span>
<span v-if="scope.row.checkStatus==1" style="color: #67c23a">已审核</span>
<span v-if="scope.row.checkStatus==0" style="color: #f56c6c">未审核</span>
</template>
</el-table-column>
</el-table>
<div class="tabelFirstBottom">
<!-- <div class="tabelFirstBottom">
<div class="columnFirstNum">合计费用</div>
<div style="display: flex;width:58%">
<div class="columnFirst">{{ leaseAll.toFixed(2) }}</div>
@ -162,7 +180,7 @@
<div class="columnFirst">{{ moneyAll.toFixed(2) }}</div>
<div class="columnFirstRight"></div>
</div>
</div>
</div> -->
<!-- 租赁费用弹窗-->
<el-dialog :title="title" :visible.sync="showLease" width="1200px" append-to-body>
@ -408,7 +426,7 @@ import {
getUnitList,
getAgreementInfoById,
} from '@/api/back/index.js'
import {getPushReviewList,getLeaseList } from "@/api/costPush/costPush";
import {getPushReviewList,getLeaseList,getRepairList,getLoseList,getScrapList } from "@/api/costPush/costPush";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
@ -608,7 +626,7 @@ export default {
},
/** 查询岗位列表 */
/** 查询列表 */
getList() {
this.loading = true;
console.log(this.queryParams.month)
@ -624,6 +642,14 @@ export default {
})
this.moneyAll = this.leaseAll + this.repairAll + this.scrapAll + this.loseAll;
}
let obj = {
leaseMoney: this.leaseAll,
repairMoney: this.repairAll,
scrapMoney: this.scrapAll,
loseMoney: this.loseAll,
money: this.moneyAll,
}
this.pushReviewList.push(obj)
this.loading = false;
});
@ -716,16 +742,16 @@ export default {
this.dialogRepair.typeName = ""
this.dialogRepair.modelName = ""
this.dialogRepair.id = row.id;
// this.getRepairList()
this.getRepairList()
},
//
getRepairList() {
this.loading = true;
// getRepairList(this.dialogRepaire).then((response) => {
// this.dialogRepairList = response.rows;
// this.dialogRepairTotal = response.total;
// this.loading = false;
// });
getRepairList(this.dialogRepaire).then((response) => {
this.dialogRepairList = response.rows;
this.dialogRepairTotal = response.total;
this.loading = false;
});
},
handleQueryRepair() {
this.getRepairList()
@ -748,16 +774,16 @@ export default {
this.dialogScrap.typeName = ""
this.dialogScrap.modelName = ""
this.dialogScrap.id = row.id;
// this.getScrapList()
this.getScrapList()
},
//
getScrapList() {
this.loading = true;
// getScrapList(this.dialogScrap).then((response) => {
// this.dialogScrapList = response.rows;
// this.dialogScrapTotal = response.total;
// this.loading = false;
// });
getScrapList(this.dialogScrap).then((response) => {
this.dialogScrapList = response.rows;
this.dialogScrapTotal = response.total;
this.loading = false;
});
},
handleQueryScrap() {
this.getScrapList()
@ -780,16 +806,16 @@ export default {
this.dialogLose.typeName = ""
this.dialogLose.modelName = ""
this.dialogLose.id = row.id;
// this.getLoseList()
this.getLoseList()
},
//
getLoseList() {
this.loading = true;
// getLoseList(this.dialogLose).then((response) => {
// this.dialogLoseList = response.rows;
// this.dialogLoseTotal = response.total;
// this.loading = false;
// });
getLoseList(this.dialogLose).then((response) => {
this.dialogLoseList = response.rows;
this.dialogLoseTotal = response.total;
this.loading = false;
});
},
handleQueryLose() {
this.getLoseList()
@ -805,13 +831,13 @@ export default {
},
/** 外层导出 */
handleExport() {
// this.download(
// 'material/complex_query/exportOutRecord',
// {
// ...this.queryParams,
// },
// `_${new Date().getTime()}.xlsx`,
// )
this.download(
'material/iws_cost_push/exportCostPushExamList',
{
...this.queryParams,
},
`费用推送审核记录_${new Date().getTime()}.xlsx`,
)
},
/** 提交 */
@ -840,7 +866,27 @@ export default {
// })
})
.catch(() => {})
},
// rowIndex= columnIndex=
// table +
// 0
objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
if (rowIndex === this.pushReviewList.length-1 && columnIndex == 1) {
let rowspan = 2
let colspan = 6
return { rowspan, colspan }
}
//
// else if
// 使
else if (rowIndex === this.pushReviewList.length-1 && columnIndex < 6) {
return {
rowspan: 0,
colspan: 0
}
}
},
},
};
</script>

View File

@ -154,6 +154,43 @@
rows="2"
/>
</el-form-item>
<el-form-item label="委托书" prop="fileFbs" v-if="isFileFbs">
<el-upload
action="#"
:file-list="businessLicenseListTemp"
:show-file-list="true"
:auto-upload="false"
:key="uploadKey"
list-type="picture-card"
accept=".png, .jpg, .jpeg, .pdf"
:on-change="handleChangeBusinessList"
:class="{ disabledFbs: uploadDisabled }"
:on-preview="picturePreviewFbs"
:on-remove="handleRemoveElectricianImgList"
>
<!-- 文件格式下载图片格式预览 -->
<div slot="file" slot-scope="{file}" >
<img v-if="isImage(file)" class="el-upload-list__item-thumbnail" :src="file.url" alt="">
<div v-else class="picture-card-container">
<img class="picture-card" :src="urlTemp" alt="">
<p class="file-name">{{ file.name }}</p>
</div>
<span class="el-upload-list__item-actions">
<span v-if="updataIf(file)" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download"/>
</span>
<span v-else class="el-upload-list__item-preview" @click="picturePreviewFbs(file)">
<i class="el-icon-zoom-in"/>
</span>
<span class="el-upload-list__item-delete" @click="handleRemoveElectricianImgList(file)">
<i class="el-icon-delete"/>
</span>
</span>
</div>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -232,6 +269,11 @@
</template>
</el-table-column>
</el-table>
<!-- 图片查看弹窗 -->
<el-dialog :visible.sync="dialogVisible" width="600px" height="600px">
<img width="100%" height="500px" :src="dialogImageUrl"/>
</el-dialog>
</div>
</template>
@ -253,7 +295,7 @@ import {
uploadPurchaseFile,
getPurchaseFileList,
} from "@/api/purchase/goodsAccept";
import {downloadFile, downloadFileData} from '@/utils/download'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@ -370,6 +412,13 @@ export default {
trigger: "blur",
},
],
fileFbs: [
{
required: false,//()
message: '请上传委托书',
trigger: 'change'
}
],
// purchaser: [
// { required: true, message: "", trigger: "blur" }
// ]
@ -404,9 +453,30 @@ export default {
matchedOptions: [], //
keepSelectOpen: false, //
isSearching: false, //
//
isFileFbs:false,
businessLicenseListTemp: [],
urlTemp: '',
delBusinessFileIdList: [],
//
dialogImageUrl: '',
dialogVisible: false,
uploadKey: Date.now(),
//
upload: {
//
headers: {Authorization: 'Bearer ' + getToken()},
//
url: process.env.VUE_APP_BASE_API + '/file/upload'
},
};
},
computed: {
//1
uploadDisabled() {
return this.businessLicenseListTemp.length > 4
},
pickerOptions() {
return {
disabledDate(time) {
@ -449,6 +519,13 @@ export default {
// } else if (val && val.length == 0) {
// this.maForm.unitId = "";
// }
if(val.typeKey=='fbs'){
this.isFileFbs=true;
this.rules['fileFbs'][0].required=true;
}else{
this.isFileFbs=false;
this.rules['fileFbs'][0].required=false;
}
setTimeout(()=>{
getListProject({ unitId: this.maForm.unitId }).then((response) => {
this.projectList = response.data;
@ -648,6 +725,10 @@ export default {
// console.log(this.equipmentList)
console.log("maForm", this.maForm);
if (this.equipmentList.length > 0) {
if(this.businessLicenseListTemp.length > 0){
console.log(33333333333333333333333333333333333)
this.$refs["maForm"].clearValidate('fileFbs');
}
this.$refs["maForm"].validate(async (valid) => {
if (valid) {
for(let i = 0;i<this.equipmentList.length;i++){
@ -831,6 +912,7 @@ export default {
}
}
},
//
picturePreview(file) {
this.dialogImageUrl = file.url;
@ -864,6 +946,132 @@ export default {
`新购到货详情_${new Date().getTime()}.xlsx`
);
},
//
handleChangeBusinessList(file, fileList) {
const fileListTemp = fileList.filter(item => {
return item.uid != file.uid
});
const parts = file.name.split('.');
const extension = parts.pop();
if (fileList.length > 5) {
this.$message.warning('最多上传5张附件')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
} else if (!(extension === 'pdf' || extension === 'png' || extension === 'jpg' || extension === 'jpeg')) {
this.$message.warning('文件格式不正确')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
} else if (file.size > 1024 * 1024 * 10) {
this.$message.warning('文件大小不能超过10Mb')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
} else if (file.name.length > 40) {
this.$message.warning('文件名长度不能超过40个字符')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
} else if (fileListTemp.some(item => item.name === file.name)) {
this.$message.warning('文件名重复')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
}
fileList.forEach(file => {
if (extension === 'pdf') {
this.urlTemp = require('../../../../../assets/file.png');
}
});
this.businessLicenseListTemp = fileList;
// // businessLicenseListTemp fileFbs
// if (this.businessLicenseListTemp.length > 0) {
// // this.maForm.fileFbs = fileList.map(item => item.raw); // ;
// //
// console.log('222222222222222')
// this.$refs.maForm.clearValidate('fileFbs');
// } else {
// // maForm.fileFbs = false;
// console.log('33333333')
// //
// this.$refs.maForm.validateField('fileFbs');
// }
console.log('4444444444')
},
isImage(file) {
this.urlTemp = require('@/assets/file.png');
if (this.updataIf(file)) {
return false
} else {
return true
}
},
// ,
updataIf(e) {
if (e.fileName) {
const parts = e.fileName.split('.');
const extension = parts.pop();
if (extension === 'png' || extension === 'jpeg' || extension === 'jpg') {
return false
} else {
return true
}
} else {
const parts = e.name.split('.');
const extension = parts.pop();
if (extension === 'png' || extension === 'jpeg' || extension === 'jpg') {
return false
} else {
return true
}
}
},
//-
picturePreviewFbs(file) {
this.dialogImageUrl = file.url.replaceAll('#','%23');
const parts = file.name.split('.');
const extension = parts.pop();
if (extension === 'pdf') {
const windowName = file.name;
window.open(file.url, windowName)
} else {
this.dialogVisible = true
}
},
//-
handleRemoveElectricianImgList(file, fileList) {
let sum = 0
this.businessLicenseListTemp.forEach((item, index) => {
if (item.uid == file.uid) {
sum = index
}
})
this.businessLicenseListTemp.splice(sum, 1)
if (file.status == 'success') {
this.delBusinessFileIdList.push(file.url);
}
console.log('delBusinessFileIdList', this.delBusinessFileIdList)
},
handleDownload(file) {
console.log(file)
if (file.status === 'ready') {
downloadFile({fileName: file.name, fileData: file.raw, fileType: 'application/vnd.ms-excel;charset=utf-8'})
} else if (file.status === 'success') {
downloadFileData({fileName: file.name, fileUrl: file.url})
// downloadFileData({ fileName: file.name,fileUrl:file.url })
}
},
//
highlightText(text, keyword) {
if (!keyword) return text;
@ -948,7 +1156,21 @@ export default {
}
};
</script>
<style lang="scss">
<style lang="scss" scoped>
//css
::v-deep.disabledFbs {
.el-upload--picture-card {
display: none;
}
}
::v-deep .el-upload-list__item {
margin-bottom: 20px;
overflow: unset !important;
}
::v-deep .el-upload-list__item-actions {
overflow: unset !important;
}
.popper-select {
.el-cascader-panel .el-scrollbar .el-checkbox {
display: none;
@ -1029,4 +1251,56 @@ export default {
}
}
}
.el-upload-list__item-thumbnail {
height: 145px !important;
}
.picture-card-container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.picture-card {
width: 100%;
height: 100%;
object-fit: cover;
justify-content: center;
// border: 1px solid #ddd;
// border-radius: 4px;
}
.file-name {
width: 90%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
position: absolute;
bottom: -35px;
margin-top: 8px;
text-align: center;
font-size: 12px;
color: #333;
z-index: 999999;
}
.file-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
color: #fff;
font-size: 20px;
}
</style>

View File

@ -159,11 +159,11 @@
</div>
<div class="info" style="margin-top: 10px; display: flex; align-items: center;">
<div class="item"
style="width: 50%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
style="width: 60%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>领用工程</span>
{{ checkDataInfo.leaseProject }}
</div>
<div class="item" style="width: 50%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<div class="item" style="width: 40%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>使用单位</span>
{{ checkDataInfo.leaseUnit }}
</div>
@ -189,7 +189,7 @@
<span>检验单位</span>
</div>
<div>
<canvas id="canvas" width="165" height="165" style="position: absolute; top: 50%; left: 90%; transform: translate(-100%, -50%);"></canvas>
<canvas id="canvas" width="165" height="165" style="position: absolute; top: 50%; left: 90%; transform: translate(-100%, -50%); z-index: 9999;"></canvas>
</div>
</div>
</div>
@ -517,7 +517,7 @@ export default {
this.printTableData = res.data.leaseOutVoList;
setTimeout(() => {
this.chapter('检验专用章', '机具设备分公司')
this.chapter('机具检验专用章', '安徽送边电工程有限公司机具(物流)分公司')
}, 500);
this.openPrint = true;
this.title = "出库检验单";
@ -663,16 +663,16 @@ export default {
this.create5star(context, width, height, 20, "#f00", 0);
//
context.font = "18px 宋体";
context.font = "100 13px 宋体";
context.textBaseline = "middle"; //
context.textAlign = "center"; //
context.lineWidth = 1;
context.strokeStyle = "#ff2f2f";
context.lineWidth = 0.7;
context.strokeStyle = "#ff2323";
context.strokeText(text, width, height + 50);
//
context.translate(width, height); // ,
context.font = "16px 宋体";
context.font = "100 13px 宋体";
let count = companyName.length; //
let angle = (4 * Math.PI) / (3 * (count - 1)); //
let chars = companyName.split("");
@ -688,7 +688,7 @@ export default {
context.save();
context.translate(65, 0); // ,x
context.rotate(Math.PI / 2); // 90,x
context.strokeStyle = "#ff5050"; //
context.strokeStyle = "#ff2323"; //
context.strokeText(c, 0, 0); //
context.restore();
}

View File

@ -269,7 +269,7 @@
</el-row>
<el-form-item label="附件">
<el-upload
class="upload-demo"
action="#"
:file-list="businessLicenseListTemp"
:show-file-list="true"
@ -285,7 +285,7 @@
>
<!-- 文件格式下载图片格式预览 -->
<div slot="file" slot-scope="{file}">
<div slot="file" slot-scope="{file}" >
<img v-if="isImage(file)" class="el-upload-list__item-thumbnail" :src="file.url" alt="">
<div v-else class="picture-card-container">
<img class="picture-card" :src="urlTemp" alt="">
@ -303,7 +303,6 @@
</span>
</span>
</div>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
@ -608,7 +607,7 @@ export default {
//1
uploadDisabled() {
return this.businessLicenseListTemp.length > 2
return this.businessLicenseListTemp.length > 9
},
},
created() {
@ -721,8 +720,8 @@ export default {
});
const parts = file.name.split('.');
const extension = parts.pop();
if (fileList.length > 3) {
this.$message.warning('最多上传3张附件')
if (fileList.length > 10) {
this.$message.warning('最多上传10张附件')
fileList = fileList.filter(item => {
return item.uid != file.uid
})
@ -1212,9 +1211,10 @@ export default {
}
}
::v-deep .el-upload-list--picture-card {
display: flex;
}
// ::v-deep .el-upload-list--picture-card {
// display: flex;
// flex-wrap: wrap;
// }
::v-deep .el-upload-list__item {
margin-bottom: 20px;
@ -1224,9 +1224,14 @@ export default {
::v-deep .el-upload-list__item-actions {
overflow: hidden;
}
.el-upload--picture-card {
display: flex;
flex-wrap: wrap;
}
.upload-demo {
display: flex;
flex-wrap: wrap;
}
.el-upload-list__item-thumbnail {

View File

@ -838,7 +838,7 @@ export default {
computed: {
//1
uploadDisabled() {
return this.fileList.length > 2;
return this.fileList.length > 4;
},
...mapState(["user"]),
},