结算模块修改

This commit is contained in:
bonus 2025-11-15 15:48:22 +08:00
parent 4c583e40c0
commit d78bdc7e3b
4 changed files with 325 additions and 757 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,11 @@
<template>
<div class="app-container" id="costApplyList">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="80px"
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="80px">
<el-form-item prop="unitIds">
<treeselect
v-model="queryParams.unitId"
:options="unitList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择结算单位"
@select="unitChange"
/>
<treeselect v-model="queryParams.unitId" :options="unitList" :normalizer="normalizer" :show-count="true"
style="width: 240px" :disable-branch-nodes="true" noChildrenText="没有数据了" noOptionsText="没有数据"
noResultsText="没有搜索结果" placeholder="请选择结算单位" @select="unitChange" />
<!-- <el-cascader v-model="unitIds"
:show-all-levels="false"
:options="unitList"
@ -34,19 +18,9 @@
></el-cascader> -->
</el-form-item>
<el-form-item prop="projectIds">
<treeselect
v-model="queryParams.projectId"
:options="proList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择结算工程"
@select="proChange"
/>
<treeselect v-model="queryParams.projectId" :options="proList" :normalizer="normalizer"
:show-count="true" style="width: 240px" :disable-branch-nodes="true" noChildrenText="没有数据了"
noOptionsText="没有数据" noResultsText="没有搜索结果" placeholder="请选择结算工程" @select="proChange" />
<!-- <el-cascader v-model="projectIds"
:show-all-levels="false"
:options="proList"
@ -58,16 +32,12 @@
></el-cascader> -->
</el-form-item>
<el-form-item prop="agreementCode">
<el-input v-model="queryParams.agreementCode" placeholder="请输入协议号" clearable disabled />
<el-input v-model="queryParams.agreementCode" placeholder="请输入协议号" clearable />
</el-form-item>
<el-form-item prop="sltStatus">
<el-select v-model="queryParams.sltStatus" placeholder="请选择结算状态" clearable filterable>
<el-option
v-for="dict in statusList"
:key="dict.id"
:label="dict.name"
:value="dict.id"
></el-option>
<el-option v-for="dict in statusList" :key="dict.id" :label="dict.name"
:value="dict.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
@ -118,13 +88,8 @@
<el-button size="mini" type="normal" icon="el-icon-search" @click="handleView(scope.row)">
查看
</el-button>
<el-button
size="mini"
type="primary"
icon="el-icon-edit"
@click="handleExame(scope.row)"
v-if="scope.row.sltStatus == '1'"
>
<el-button size="mini" type="primary" icon="el-icon-edit" @click="handleExame(scope.row)"
v-if="scope.row.sltStatus == '1'">
审批
</el-button>
<!-- <el-button size="mini" type="danger" icon="el-icon-delete"
@ -135,13 +100,8 @@
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 审批弹窗 -->
<el-dialog title="结算审批" :visible.sync="applyVisible" width="650px" append-to-body>
@ -151,16 +111,8 @@
<el-radio v-model="aform.status" label="3">不通过</el-radio>
</el-form-item>
<el-form-item label="原因" prop="remark">
<el-input
v-model="aform.remark"
maxlength="100"
placeholder="请输入"
show-word-limit
size="small"
style="width: 350px"
type="textarea"
rows="4"
></el-input>
<el-input v-model="aform.remark" maxlength="100" placeholder="请输入" show-word-limit size="small"
style="width: 350px" type="textarea" rows="4"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center">
@ -246,22 +198,36 @@
</div>
<div class="fillIn" style="margin-top: 20px; display: flex; justify-content: space-between">
<div class="item" style="width: 33%">
<div>
<div class="item-new" style="width: 33%">
<span>部门负责人</span>
</div>
<img :src="initImgPath(agreementContent.auditorSignUrl)"
style="width: 40px; height: 90px;margin-left: 20px; max-width: 100%;"
:style="{ transform: agreementContent.signType == 0 ? 'rotate(-90deg)' : '' }" alt="" />
</div>
<div class="item" style="width: 33%">
<div>
<div class="item-new" style="width: 33%">
<span>承租负责人</span>
</div>
<img :src="agreementContent.managerSignUrl"
style="width: 40px; height: 90px; max-width: 100%;margin-left: 20px;"
:style="{ transform: agreementContent.signType == 0 ? 'rotate(-90deg)' : '' }" alt=""
onerror="this.style.display='none'" v-if="agreementContent.managerSignUrl" />
</div>
<div class="item" style="width: 33%">
<div>
<div class="item-new" style="width: 33%">
<span>核算员</span>
</div>
<img :src="initImgPath(agreementContent.sltSignUrl)"
style="width: 40px; height: 90px; max-width: 100%; margin-left: 20px;"
:style="{ transform: agreementContent.signType == 0 ? 'rotate(-90deg)' : '' }" alt=""
onerror="this.style.display='none'" v-if="agreementContent.sltSignUrl" />
</div>
</div>
</vue-easy-print>
@ -348,7 +314,8 @@ export default {
unitId: null,
projectId: null,
agreementId: null,
agreementCode: null
agreementCode: null,
enableQuerySltData: true
},
openPrint: false,
//
@ -489,6 +456,7 @@ export default {
//
handleView(row) {
let arr = []
row.enableQuerySltData = true
arr.push(row)
this.$emit('goDetail', JSON.stringify(arr))
},
@ -516,7 +484,7 @@ export default {
this.$modal.msgError(res.msg)
}
})
.catch(() => {})
.catch(() => { })
},
//
@ -526,6 +494,7 @@ export default {
},
async openPrintDialog(row) {
row.enableQuerySltData = true
this.openPrint = true
try {
const res = await getSltInfo([row])
@ -1000,6 +969,19 @@ export default {
const blob = await Packer.toBlob(doc)
saveAs(blob, `机具设备有偿使用费结算协议书-${data.agreementCode}.docx`)
},
// ======================
//
initImgPath(path) {
if (!path) return
// pathhttp base64
if (path.startsWith('http')) {
return path; // http
} else {
return `data:image/png;base64,${path}`; // base64png
}
}
}
}
@ -1009,11 +991,13 @@ export default {
width: 80px !important;
margin-bottom: 10px;
}
.dialog-footer {
display: flex;
justify-content: flex-end;
align-items: center;
}
.tabelColumn {
width: 1000px;
height: 50px;
@ -1023,16 +1007,23 @@ export default {
// margin-bottom: 1px;
border-bottom: none;
}
.columnLabel {
height: 50px;
line-height: 50px;
text-align: center;
border-left: none;
}
.columnContent {
height: 50px;
line-height: 50px;
text-align: center;
border-left: 1px solid #9c9c9c;
}
.item-new {
display: flex;
align-items: center;
}
</style>

View File

@ -212,6 +212,7 @@
<div class="item" style="width: 33%">
<div>
<span>部门负责人</span>
</div>
</div>

View File

@ -181,6 +181,14 @@
<div class="item" style="width: 33%">
<div>
<span>部门负责人</span>
<img
:src="agreementContent.auditorSignUrl"
style="width: 40px; height: 90px; max-width: 100%; vertical-align: middle;"
:style="{ transform: agreementContent.signType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
@ -193,6 +201,14 @@
<div class="item" style="width: 33%">
<div>
<span>核算员</span>
<img
:src="agreementContent.sltSignUrl"
style="width: 40px; height: 90px; max-width: 100%"
:style="{ transform: agreementContent.signType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
</div>