This commit is contained in:
bb_pan 2025-03-11 18:05:37 +08:00
parent c366149c2f
commit 4b594ea37d
8 changed files with 214 additions and 363 deletions

View File

@ -137,3 +137,12 @@ export function getCostByPidAndNumApi(query) {
params: query params: query
}) })
} }
// 设备维修保养记录表
export function getMaintenanceRecordsApi(query) {
return request({
url: '/material/details/getMaintenanceRecords',
method: 'get',
params: query
})
}

View File

@ -20,115 +20,43 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
type="primary" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button >导出</el-button
> >
</el-col> </el-col>
<right-toolbar <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<el-table <el-table v-loading="loading" :data="projectLot" border @selection-change="handleSelectionChange">
v-loading="loading"
:data="projectLot"
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column <el-table-column
align="center" align="center"
label="序号" label="序号"
type="index" type="index"
:index=" :index="indexContinuation(queryParams.pageNum, queryParams.pageSize)"
indexContinuation(queryParams.pageNum, queryParams.pageSize)
"
/> />
<el-table-column <el-table-column label="标段工程名称" align="center" prop="lotName" show-overflow-tooltip />
label="标段工程名称" <el-table-column label="工程类型" align="center" prop="typeName" show-overflow-tooltip />
align="center" <el-table-column label="费用指标(元)" align="center" show-overflow-tooltip>
prop="lotName"
show-overflow-tooltip
/>
<el-table-column
label="工程类型"
align="center"
prop="typeName"
show-overflow-tooltip
/>
<el-table-column
label="费用指标(元)"
align="center"
show-overflow-tooltip
>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ formatCurrency(row.costIndicators || '') }} {{ formatCurrency(row.costIndicators || '') }}
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column <el-table-column label="所属工程" align="center" prop="proName" show-overflow-tooltip />
label="所属工程项目" <el-table-column label="所属上级" align="center" prop="deptName" show-overflow-tooltip />
align="center" <el-table-column label="联系人" align="center" prop="linkMan" show-overflow-tooltip />
prop="ownPro" <el-table-column label="联系电话" align="center" prop="telphone" show-overflow-tooltip />
show-overflow-tooltip <el-table-column label="状态" align="center" prop="status" width="140">
/> -->
<el-table-column
label="所属上级"
align="center"
prop="deptName"
show-overflow-tooltip
/>
<el-table-column
label="联系人"
align="center"
prop="linkMan"
show-overflow-tooltip
/>
<el-table-column
label="联系电话"
align="center"
prop="telphone"
show-overflow-tooltip
/>
<el-table-column
label="状态"
align="center"
prop="status"
width="140"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
active-value="0" active-value="0"
@ -140,18 +68,10 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="140"> <el-table-column label="操作" align="center" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>编辑</el-button >编辑</el-button
> >
<el-button <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button >删除</el-button
> >
</template> </template>
@ -167,21 +87,9 @@
/> />
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
:title="title"
:visible.sync="open"
width="600px"
append-to-body
:close-on-click-modal="false"
>
<!-- 内层对话框 选择地图 --> <!-- 内层对话框 选择地图 -->
<el-dialog <el-dialog width="70%" title="选择地图" :visible.sync="innerVisible" v-if="innerVisible" append-to-body>
width="70%"
title="选择地图"
:visible.sync="innerVisible"
v-if="innerVisible"
append-to-body
>
<el-row class="search-container"> <el-row class="search-container">
<el-input <el-input
clearable clearable
@ -189,49 +97,26 @@
v-model="searchAddress" v-model="searchAddress"
@keyup.enter.native="onSearchAddress" @keyup.enter.native="onSearchAddress"
/> />
<el-button <el-button type="primary" style="width: 120px" @click="onSearchAddress">搜索</el-button>
type="primary"
style="width: 120px"
@click="onSearchAddress"
>搜索</el-button
>
</el-row> </el-row>
<div <div id="map-container" style="height: 550px; background-color: #bfc"> </div>
id="map-container"
style="height: 550px; background-color: #bfc"
>
</div>
</el-dialog> </el-dialog>
<el-form <el-form ref="form" :model="form" :rules="rules" label-width="120px">
ref="form"
:model="form"
:rules="rules"
label-width="120px"
>
<el-form-item label="标段工程名称" prop="lotName"> <el-form-item label="标段工程名称" prop="lotName">
<el-input <el-input v-model="form.lotName" placeholder="请输入标段工程名称" maxlength="50" />
v-model="form.lotName"
placeholder="请输入标段工程名称"
maxlength="50"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="所属工程项目" prop="ownPro"> <el-form-item label="所属工程" prop="proId">
<el-select <el-select v-model="form.proId" filterable placeholder="请选择所属工程" style="width: 100%">
v-model="form.ownPro" filterable
placeholder="请选择所属工程项目"
style="width: 100%"
>
<el-option <el-option
v-for="item in ProjectSelect" v-for="item in ProjectSelect"
:key="item.proName" :key="item.proId"
:label="item.proName" :label="item.proName"
:value="item.proName" :value="item.proId"
v-if="item.status != '1'" v-show="item.status != '1'"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item>
<el-form-item label="工程类型" prop="typeId"> <el-form-item label="工程类型" prop="typeId">
<!-- <el-input v-model="form.typeId" placeholder="请选择工程类型" /> -->
<el-select <el-select
v-model="form.typeId" v-model="form.typeId"
filterable filterable
@ -260,17 +145,10 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="费用指标(元)" prop="costIndicators"> <el-form-item label="费用指标(元)" prop="costIndicators">
<el-input <el-input v-model="form.costIndicators" placeholder="请输入费用指标" />
v-model="form.costIndicators"
placeholder="请输入费用指标"
/>
</el-form-item> </el-form-item>
<el-form-item label="联系人" prop="linkMan"> <el-form-item label="联系人" prop="linkMan">
<el-input <el-input v-model="form.linkMan" placeholder="请输入联系人" maxlength="20" />
v-model="form.linkMan"
placeholder="请输入联系人"
maxlength="20"
/>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="telphone"> <el-form-item label="联系电话" prop="telphone">
<el-input <el-input
@ -300,9 +178,7 @@
:picker-options="{ :picker-options="{
// //
disabledDate: (time) => { disabledDate: (time) => {
const currentDate = new Date( const currentDate = new Date(form.startDate || new Date())
form.startDate || new Date(),
)
currentDate.setDate(currentDate.getDate()) currentDate.setDate(currentDate.getDate())
return time.getTime() < currentDate.getTime() return time.getTime() < currentDate.getTime()
}, },
@ -310,9 +186,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleProjectAddress" <el-button type="primary" @click="handleProjectAddress">选择工程地址</el-button>
>选择工程地址</el-button
>
</el-form-item> </el-form-item>
<el-form-item label="经度" prop="longitude"> <el-form-item label="经度" prop="longitude">
<el-input disabled v-model="form.longitude" /> <el-input disabled v-model="form.longitude" />
@ -321,29 +195,13 @@
<el-input disabled v-model="form.latitude" /> <el-input disabled v-model="form.latitude" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="工程地址" prop="detailsAddress" class="address-ipt">
label="工程地址" <el-input v-model="form.province" disabled style="width: 40%" />
prop="detailsAddress" <el-input v-model="form.detailsAddress" style="width: 60%" />
class="address-ipt"
>
<el-input
v-model="form.province"
disabled
style="width: 40%"
/>
<el-input
v-model="form.detailsAddress"
style="width: 60%"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button <el-button type="primary" :loading="isLoading" @click="submitForm"> </el-button>
type="primary"
:loading="isLoading"
@click="submitForm"
> </el-button
>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -351,13 +209,7 @@
</template> </template>
<script> <script>
import { import { addProjectLot, delProjectLot, ProjectLotList, updateProjectLot, getProjectSelect } from '@/api/base/base'
addProjectLot,
delProjectLot,
ProjectLotList,
updateProjectLot,
getProjectSelect,
} from '@/api/base/base'
import { unitTypeList } from '@/api/base/base' import { unitTypeList } from '@/api/base/base'
import { deptTreeSelect } from '@/api/system/user' import { deptTreeSelect } from '@/api/system/user'
import Treeselect from '@riophae/vue-treeselect' import Treeselect from '@riophae/vue-treeselect'
@ -423,7 +275,7 @@ export default {
trigger: 'blur', trigger: 'blur',
}, },
], ],
// ownPro: [ // proId: [
// { required: true, message: "", trigger: "blur" } // { required: true, message: "", trigger: "blur" }
// ], // ],
// typeId: [ // typeId: [
@ -441,26 +293,26 @@ export default {
}, },
], ],
costIndicators: [ costIndicators: [
{ // {
required: true, // required: true,
message: '费用指标不能为空', // message: '',
trigger: 'blur', // trigger: 'blur',
}, // },
{ {
pattern: /^(?:[1-9][0-9]{0,7}|100000000)$/, pattern: /^(?:[1-9][0-9]{0,7}|100000000)$/,
message: '请输入大于0且不能以0开头并小于一亿的正整数', message: '请输入大于0且不能以0开头并小于一亿的正整数',
}, },
], ],
// ownPro: [ // proId: [
// { required: true, message: "", trigger: "blur" } // { required: true, message: "", trigger: "blur" }
// ] // ]
startDate: [ // startDate: [
{ // {
required: true, // required: true,
message: '请选择开工日期', // message: '',
trigger: 'change', // trigger: 'change',
}, // },
], // ],
// completionDate: [ // completionDate: [
// { // {
// required: true, // required: true,
@ -606,8 +458,7 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
this.isLoading = true this.isLoading = true
this.form.address = this.form.address = this.form.province + this.form.detailsAddress
this.form.province + this.form.detailsAddress
if (this.form.lotId != undefined) { if (this.form.lotId != undefined) {
updateProjectLot(this.form) updateProjectLot(this.form)
.then((response) => { .then((response) => {
@ -685,7 +536,7 @@ export default {
/** 选择工程地址 */ /** 选择工程地址 */
handleProjectAddress() { handleProjectAddress() {
const this_ = this const this_ = this
this.searchAddress = ''; this.searchAddress = ''
this.innerVisible = true this.innerVisible = true
this.$nextTick(() => { this.$nextTick(() => {
@ -737,9 +588,7 @@ export default {
}), }),
) )
// //
myGeo.getLocation( myGeo.getLocation(new BMapGL.Point(lng, lat), function (result) {
new BMapGL.Point(lng, lat),
function (result) {
if (result) { if (result) {
// console.log('result-----', result) // console.log('result-----', result)
let addComp = result.addressComponents let addComp = result.addressComponents
@ -755,8 +604,7 @@ export default {
_this.form.longitude = lng _this.form.longitude = lng
_this.form.latitude = lat _this.form.latitude = lat
} }
}, })
)
} else { } else {
this.$message.error('您输入的地址有误,请重新输入') this.$message.error('您输入的地址有误,请重新输入')
} }

View File

@ -813,10 +813,10 @@ export default {
this.queryParams.leaseApplyDetails = this.leaseApplyDetails this.queryParams.leaseApplyDetails = this.leaseApplyDetails
try { try {
this.queryParams.leaseApplyDetails.forEach((item) => { this.queryParams.leaseApplyDetails.forEach((item) => {
if (item.num == 0) { // if (item.num == 0) {
this.$message.error('机具类型库存量为零无法领料') // this.$message.error('')
throw new Error() // throw new Error()
} // }
if (item.preNum == '') { if (item.preNum == '') {
this.$message.error('请填写预领数量') this.$message.error('请填写预领数量')
throw new Error() throw new Error()

View File

@ -214,7 +214,9 @@
:value="item.maTypeUserId" :value="item.maTypeUserId"
/> />
</el-select> </el-select>
<span v-show="!showSelect" @click="showSelect = true" style="cursor: pointer">{{ maTypeUserName }}</span> <span v-show="!showSelect" @click="showSelect = true" style="cursor: pointer">{{
maTypeUserName
}}</span>
</div> </div>
<div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap"> <div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap">
<div class="item" style="width: 50%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px"> <div class="item" style="width: 50%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
@ -241,7 +243,17 @@
<el-table-column label="规格型号" align="center" prop="typeModelName" /> <el-table-column label="规格型号" align="center" prop="typeModelName" />
<el-table-column label="计量单位" align="center" prop="unitName" /> <el-table-column label="计量单位" align="center" prop="unitName" />
<el-table-column label="预领数量" align="center" prop="preNum" /> <el-table-column label="预领数量" align="center" prop="preNum" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark">
<template slot-scope="scope">
<span>{{
scope.row.remark && scope.row.maModel
? scope.row.remark + ', 以大代小'
: scope.row.maModel
? '以大代小'
: scope.row.remark
}}</span>
</template>
</el-table-column>
<el-table-column label="出库方式" align="center" prop="manageTypeName" /> <el-table-column label="出库方式" align="center" prop="manageTypeName" />
</el-table> </el-table>
@ -375,7 +387,6 @@ export default {
watch: { watch: {
maTypeUserId: function (newVal, oldVal) { maTypeUserId: function (newVal, oldVal) {
console.log('🚀 ~ newVal:', newVal) console.log('🚀 ~ newVal:', newVal)
}, },
}, },
created() { created() {

View File

@ -148,10 +148,10 @@
v-if=" v-if="
!isView && !isView &&
scope.row.manageType == '0' && scope.row.manageType == '0' &&
scope.row.maxBackNum > 0 && scope.row.maxBackNum > 0
(userId == scope.row.userId || userId == 1)
" "
> >
<!-- (userId == scope.row.userId || userId == 1) -->
编码退料 编码退料
</el-button> </el-button>
<el-button <el-button
@ -161,17 +161,17 @@
v-if=" v-if="
!isView && !isView &&
(scope.row.manageType == '1' || scope.row.manageType == '2') && (scope.row.manageType == '1' || scope.row.manageType == '2') &&
scope.row.maxBackNum > 0 && scope.row.maxBackNum > 0
(userId == scope.row.userId || userId == 1)
" "
> >
<!-- (userId == scope.row.userId || userId == 1) -->
数量退料 数量退料
</el-button> </el-button>
<el-button <el-button
size="mini" size="mini"
icon="el-icon-zoom-in" icon="el-icon-zoom-in"
@click="handleBackup(scope.row)" @click="handleBackup(scope.row)"
v-if="!isView && scope.row.inCompletedBackNum > 0 && (userId == scope.row.userId || userId == 1)" v-if="!isView && scope.row.inCompletedBackNum > 0"
> >
撤回 撤回
</el-button> </el-button>

View File

@ -46,7 +46,7 @@
v-if="settleTableData_03.length > 0" v-if="settleTableData_03.length > 0"
@handelSaveSuccess="handelSaveSuccess" @handelSaveSuccess="handelSaveSuccess"
/> />
<FinishTable <!-- <FinishTable
:listType="3" :listType="3"
:isRepair="true" :isRepair="true"
:tableTitle="`设备维修清单`" :tableTitle="`设备维修清单`"
@ -56,7 +56,7 @@
:totalPrice="repairTotalPrice" :totalPrice="repairTotalPrice"
:tableColumns="repairTableColumns" :tableColumns="repairTableColumns"
@onChangeRepairPrice="onChangeRepairPrice" @onChangeRepairPrice="onChangeRepairPrice"
/> /> -->
<FinishTable <FinishTable
:listType="4" :listType="4"
@handleExport="handleExport" @handleExport="handleExport"
@ -73,13 +73,13 @@
:tableTitle="`工机具报废赔偿清单`" :tableTitle="`工机具报废赔偿清单`"
:tableColumns="scrapTableColumns" :tableColumns="scrapTableColumns"
/> />
<FinishTable <!-- <FinishTable
:listType="6" :listType="6"
@handleExport="handleExport" @handleExport="handleExport"
:tableTitle="`工机具待报废清单`" :tableTitle="`工机具待报废清单`"
:tableData="stayScrapTableData" :tableData="stayScrapTableData"
:tableColumns="stayScrapTableColumns" :tableColumns="stayScrapTableColumns"
/> /> -->
<OtherCost <OtherCost
ref="otherCostRef" ref="otherCostRef"

View File

@ -11,12 +11,7 @@
label-width="80px" label-width="80px"
> >
<el-form-item label="结算单位" prop="unitId"> <el-form-item label="结算单位" prop="unitId">
<el-select <el-select v-model="queryParams.unitId" placeholder="请选择往来单位" clearable filterable>
v-model="queryParams.unitId"
placeholder="请选择往来单位"
clearable
filterable
>
<el-option <el-option
v-for="item in unitList" v-for="item in unitList"
:key="item.unitId" :key="item.unitId"
@ -25,8 +20,8 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="结算工程" prop="projectId"> <el-form-item label="结算工程" prop="projectIds">
<el-select <!-- <el-select
v-model="queryParams.projectId" v-model="queryParams.projectId"
placeholder="请选择工程名称" placeholder="请选择工程名称"
clearable clearable
@ -38,42 +33,24 @@
:label="item.projectName" :label="item.projectName"
:value="item.projectId" :value="item.projectId"
/> />
</el-select> </el-select> -->
</el-form-item> <el-cascader
<el-form-item label="结算状态" prop="sltStatus"> v-model="queryParams.projectIds"
<el-select :options="projectList"
v-model="queryParams.sltStatus" :props="{ checkStrictly: true, multiple: true, label: 'projectName', value: 'projectId' }"
placeholder="请选择结算状态"
clearable clearable
filterable filterable
> ></el-cascader>
<el-option </el-form-item>
v-for="item in statusList" <el-form-item label="结算状态" prop="sltStatus">
:key="item.id" <el-select v-model="queryParams.sltStatus" placeholder="请选择结算状态" clearable filterable>
:label="item.name" <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id" />
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
type="primary" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
icon="el-icon-search" <el-button type="primary" plain size="mini" @click="handleBatchExport"
size="mini"
@click="handleQuery"
>查询</el-button
>
<el-button
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
<el-button
type="primary"
plain
size="mini"
@click="handleBatchExport"
>批量导出月结明细表</el-button >批量导出月结明细表</el-button
> >
</el-form-item> </el-form-item>
@ -91,49 +68,20 @@
align="center" align="center"
label="序号" label="序号"
type="index" type="index"
:index=" :index="indexContinuation(queryParams.pageNum, queryParams.pageSize)"
indexContinuation(
queryParams.pageNum,
queryParams.pageSize,
)
"
/>
<el-table-column
label="协议编号"
align="center"
prop="agreementCode"
show-overflow-tooltipp
/> />
<el-table-column label="协议编号" align="center" prop="agreementCode" show-overflow-tooltipp />
<el-table-column <el-table-column label="结算单位" align="center" prop="unitName" show-overflow-tooltip />
label="结算单位" <el-table-column label="结算工程" align="center" prop="projectName" show-overflow-tooltip />
align="center" <el-table-column label="累计结算费用" align="center" prop="cost" show-overflow-tooltip />
prop="unitName"
show-overflow-tooltip
/>
<el-table-column
label="结算工程"
align="center"
prop="projectName"
show-overflow-tooltip
/>
<el-table-column
label="累计结算费用"
align="center"
prop="cost"
show-overflow-tooltip
/>
<el-table-column label="结算状态" align="center"> <el-table-column label="结算状态" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<!-- <span v-if="scope.row.sltStatus == '1'">未结算</span> <!-- <span v-if="scope.row.sltStatus == '1'">未结算</span>
<span v-if="scope.row.sltStatus == '2'">已结算</span> <span v-if="scope.row.sltStatus == '2'">已结算</span>
<span v-if="scope.row.sltStatus == '3'">待审核</span> --> <span v-if="scope.row.sltStatus == '3'">待审核</span> -->
<el-tag type="warning" size="mini" v-if="row.isSlt == 0" <el-tag type="warning" size="mini" v-if="row.isSlt == 0">结算中</el-tag>
>结算中</el-tag <el-tag type="success" size="mini" v-if="row.isSlt == 1">已结算</el-tag>
>
<el-tag type="success" size="mini" v-if="row.isSlt == 1"
>已结算</el-tag
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
@ -152,9 +100,7 @@
style="padding: 5px 10px" style="padding: 5px 10px"
@click="handleFinishCostAndDetails(row, row.isSlt)" @click="handleFinishCostAndDetails(row, row.isSlt)"
v-hasPermi="['finis:record:details']" v-hasPermi="['finis:record:details']"
>{{ >{{ row.isSlt == 1 ? '结算明细' : '完工结算' }}</el-button
row.isSlt == 1 ? '结算明细' : '完工结算'
}}</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
@ -184,11 +130,7 @@
/> />
</template> </template>
<template v-else> <template v-else>
<FinishAndDetails <FinishAndDetails :currRowInfo="currRowInfo" :pageContent="pageContent" @closeCurrPage="closeCurrPage" />
:currRowInfo="currRowInfo"
:pageContent="pageContent"
@closeCurrPage="closeCurrPage"
/>
</template> </template>
</div> </div>
</template> </template>
@ -284,11 +226,15 @@ export default {
/** 查询字典类型列表 */ /** 查询字典类型列表 */
getList() { getList() {
console.log('🚀 ~ getList ~ :', this.queryParams)
this.loading = true this.loading = true
getSltAgreementInfo(this.queryParams).then((response) => { getSltAgreementInfo(this.queryParams).then((response) => {
this.agreementList = response.rows this.agreementList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
}).catch((error) => {
console.log('🚀 ~ getList ~ error:', error)
this.loading = false
}) })
}, },
@ -381,9 +327,7 @@ export default {
handleFinishCostAndDetails(row, isSlt) { handleFinishCostAndDetails(row, isSlt) {
this.currRowInfo = row this.currRowInfo = row
// this.pageContent = '' // this.pageContent = ''
isSlt == 1 isSlt == 1 ? (this.pageContent = '结算明细') : (this.pageContent = '完工结算')
? (this.pageContent = '结算明细')
: (this.pageContent = '完工结算')
this.isHome = false this.isHome = false
}, },
/** 关闭月结记录弹框 */ /** 关闭月结记录弹框 */

View File

@ -289,14 +289,13 @@
<span v-if="scope.row.status == '2'">驳回</span> <span v-if="scope.row.status == '2'">驳回</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="附件" align="center" prop="fileList" :show-overflow-tooltip="true"> <el-table-column label="附件" align="center" prop="fileList">
<template slot-scope="scope"> <template slot-scope="scope">
<el-upload <el-upload
class="upload-demo" class="upload-demo"
:action="uploadUrl" :action="uploadUrl"
:headers="headers" :headers="headers"
accept="image/*,application/pdf,.doc,.docx" accept="image/*,application/pdf,.doc,.docx"
multiple
:limit="5" :limit="5"
:on-preview="handlePreview" :on-preview="handlePreview"
:before-remove="beforeRemove" :before-remove="beforeRemove"
@ -306,7 +305,9 @@
:file-list="scope.row.fileList" :file-list="scope.row.fileList"
:on-success="(res, file, fileList) => handleSuccess(res, file, fileList, scope.row)" :on-success="(res, file, fileList) => handleSuccess(res, file, fileList, scope.row)"
> >
<el-button size="small" type="text">点击上传</el-button> <el-button v-if="type == 'update' && dialogList.length !== 0" size="small" type="text"
>点击上传</el-button
>
</el-upload> </el-upload>
</template> </template>
</el-table-column> </el-table-column>
@ -537,7 +538,7 @@
<div <div
style=" style="
border: 1px solid #000; border: 1px solid #000;
min-height: 800px; min-height: 820px;
line-height: 1.9; line-height: 1.9;
font-size: 20px; font-size: 20px;
position: relative; position: relative;
@ -548,21 +549,21 @@
<!-- 第一行 --> <!-- 第一行 -->
<div style="display: flex; border-bottom: 1px solid #000"> <div style="display: flex; border-bottom: 1px solid #000">
<div style="text-align: center; border-right: 1px solid #000; width: 25%">设备名称</div> <div style="text-align: center; border-right: 1px solid #000; width: 25%">设备名称</div>
<div style="text-align: center; border-right: 1px solid #000; width: 25%">型号厂家</div> <div style="text-align: center; border-right: 1px solid #000; width: 29%">型号/厂家</div>
<div style="text-align: center; border-right: 1px solid #000; width: 18%">编号</div> <!-- <div style="text-align: center; border-right: 1px solid #000; width: 18%">编号</div> -->
<div style="text-align: center; border-right: 1px solid #000; width: 12%">数量</div> <div style="text-align: center; border-right: 1px solid #000; width: 10%">数量</div>
<div style="text-align: center; border-right: 1px solid #000; width: 20%">主修人</div> <div style="text-align: center; border-right: 1px solid #000; width: 18%">主修人</div>
<div style="text-align: center; width: 20%">验收人</div> <div style="text-align: center; width: 18%">验收人</div>
</div> </div>
<!-- 第二行 --> <!-- 第二行 -->
<div style="display: flex; border-bottom: 1px solid #000"> <div style="display: flex; border-bottom: 1px solid #000">
<div style="text-align: center; border-right: 1px solid #000; width: 25%">{{ <div style="text-align: center; border-right: 1px solid #000; width: 25%">{{
upkeepObj.type
}}</div>
<div style="text-align: center; border-right: 1px solid #000; width: 29%">{{
upkeepObj.typeName upkeepObj.typeName
}}</div> }}</div>
<div style="text-align: center; border-right: 1px solid #000; width: 25%">{{ <!-- <div
upkeepObj.itemType
}}</div>
<div
style=" style="
text-align: center; text-align: center;
border-right: 1px solid #000; border-right: 1px solid #000;
@ -570,31 +571,39 @@
white-space: pre-wrap; white-space: pre-wrap;
word-break: break-word; word-break: break-word;
" "
><span style="margin: 0 5px">{{ upkeepObj.repairNum }}</span></div ><span style="margin: 0 5px; font-size: 15px">{{ upkeepObj.maCode }}</span></div
> > -->
<div style="text-align: center; border-right: 1px solid #000; width: 12%">{{ <div style="text-align: center; border-right: 1px solid #000; width: 10%">{{
upkeepObj.num upkeepObj.repairedNum
}}</div> }}</div>
<div style="text-align: center; border-right: 1px solid #000; width: 20%">{{ <div style="text-align: center; border-right: 1px solid #000; width: 18%">{{
upkeepObj.createBy upkeepObj.createBy
}}</div> }}</div>
<div style="text-align: center; width: 20%">{{ upkeepObj.createBy }}</div> <div style="text-align: center; width: 18%">{{ upkeepObj.checkMan }}</div>
</div> </div>
<!-- 第三行 --> <!-- 第三行 -->
<div style="display: flex; border-bottom: 1px solid #000"> <div style="display: flex; border-bottom: 1px solid #000">
<div style="padding-left: 10px; border-right: 1px solid #000; width: 20.85%">设备名称</div> <div style="padding-left: 10px; border-right: 1px solid #000; width: 25%">使用单位</div>
<div style="padding-left: 10px">{{ upkeepObj.unitName }} {{ upkeepObj.projectName }}</div> <div style="padding-left: 10px">{{ upkeepObj.unitName }}-{{ upkeepObj.projectName }}</div>
</div> </div>
<!-- 第四行 --> <!-- 第四行 -->
<div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px" <div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px"
>设备维修前情况: >设备维修前情况: <span>{{ upkeepObj.repairRemark }}</span>
</div> </div>
<!-- 第五行 --> <!-- 第五行 -->
<div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px" <div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px"
>技术鉴定情况: >技术鉴定情况:
<span v-for="item in upkeepObj.records" :key="item.repairRemark"
>{{ item.repairRemark ? item.repairRemark + ', ' : '' }}
</span>
</div> </div>
<!-- 第六行 --> <!-- 第六行 -->
<div style="width: 100%; min-height: 200px; padding-left: 10px">维修处理情况: </div> <div style="width: 100%; min-height: 200px; padding-left: 10px"
>维修处理情况:
<span v-for="item in upkeepObj.records" :key="item.repairContent"
>{{ item.repairContent ? item.repairContent + ', ' : '' }}
</span>
</div>
<div <div
style=" style="
width: 100%; width: 100%;
@ -604,13 +613,11 @@
bottom: 20px; bottom: 20px;
left: 0; left: 0;
" "
>验收情况: >验收情况: {{ upkeepObj.taskStatus }}
</div> </div>
</div> </div>
<div style="text-align: end; font-size: 20px; margin-top: 20px"> <div style="text-align: end; font-size: 20px; margin: 20px 50px 50px 0">
<span>{{ '2025' }} </span> <span>{{ getTime(upkeepObj.auditTime) }}</span>
<span>{{ '3' }} </span>
<span>{{ '10' }} </span>
</div> </div>
</div> </div>
</vue-easy-print> </vue-easy-print>
@ -637,6 +644,7 @@ import {
getDicSelectApi, getDicSelectApi,
listPartTypeApi, listPartTypeApi,
getMaTypeSelectApi, getMaTypeSelectApi,
getMaintenanceRecordsApi,
} from '@/api/repairTest/repair' } from '@/api/repairTest/repair'
import selectTree from '../repair/selectTree.vue' import selectTree from '../repair/selectTree.vue'
import Tree from '@/views/repairTest/repair/tree.vue' import Tree from '@/views/repairTest/repair/tree.vue'
@ -1107,7 +1115,23 @@ export default {
openUpkeep(row) { openUpkeep(row) {
console.log('🚀 ~ openUpkeep ~ row:', row) console.log('🚀 ~ openUpkeep ~ row:', row)
this.upkeepVisible = true this.upkeepVisible = true
this.upkeepObj = row if (row.taskStatus == 47) {
this.upkeepObj.taskStatus = '合格'
} else {
this.upkeepObj.taskStatus = ''
}
this.getUpkeepList(row.taskId)
},
//
async getUpkeepList(taskId) {
try {
const res = await getMaintenanceRecordsApi({ taskId })
console.log('🚀 ~ getUpkeepList ~ res:', res)
this.upkeepObj = { ...res.data, ...this.upkeepObj }
} catch (error) {
console.log('🚀 ~ getUpkeepList ~ error:', error)
this.upkeepObj = {}
}
}, },
handlePreview(file) { handlePreview(file) {
console.log('🚀 ~ handlePreview ~ file:', file) console.log('🚀 ~ handlePreview ~ file:', file)
@ -1132,6 +1156,8 @@ export default {
return isLtMB return isLtMB
}, },
beforeRemove(file, fileList) { beforeRemove(file, fileList) {
if (this.type == 'update') return false
return this.$confirm(`确定移除 ${file.name} `) return this.$confirm(`确定移除 ${file.name} `)
}, },
handleSuccess(res, file, fileList, row) { handleSuccess(res, file, fileList, row) {
@ -1146,12 +1172,25 @@ export default {
} }
row.fileList.push({ row.fileList.push({
typeId: row.typeId, typeId: row.typeId,
maId: row.maId,
fileName: res.data.fileName, fileName: res.data.fileName,
fileUrl: res.data.fileUrl, fileUrl: res.data.fileUrl,
}) })
} }
console.log('🚀 ~ row.fileList=fileList.map ~ row.fileList:', row.fileList) console.log('🚀 ~ row.fileList=fileList.map ~ row.fileList:', row.fileList)
}, },
// 2025-02-11 14:52:27 --> 2025 2 11
getTime(time) {
if (!time) return ''
let date = new Date(time)
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
let second = date.getSeconds()
return `${year}${month}${day}`
},
}, },
} }
</script> </script>