材料站领料单详情

This commit is contained in:
hongchao 2025-09-14 11:24:56 +08:00
parent 6419cfa290
commit 9f37c9f6e4
2 changed files with 303 additions and 12 deletions

View File

@ -36,6 +36,15 @@ export function getApplyInfo(id,query) {
})
}
// 领料站领料单-详情信息
export function getClzApplyInfo(id,query) {
return request({
url: '/material/lease_apply_info/getClz/' + id,
method: 'get',
params: query
})
}
// 领料申请租赁单位下拉框
export function getListUnite(data) {
return request({

View File

@ -124,15 +124,15 @@
<el-table-column label="操作" align="center" width="220">
<template slot-scope="{ row }">
<el-button type="text" size="mini" icon="el-icon-zoom-in" @click="handleView(row)">查看</el-button>
<!-- <el-button
<el-button
type="text"
size="mini"
icon="el-icon-document"
style="color: #67c23a"
@click="handleMaterial(row)"
@click="handleLld(row)"
>
领料单
</el-button> -->
</el-button>
<!-- <el-button type="text" size="mini" icon="el-icon-document" style="color: #67c23a" @click="handleCheck(row)">
出库检验单
</el-button> -->
@ -148,11 +148,253 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 弹框 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="60%">
<el-table :data="dialogList" fit highlight-current-row style="width: 100%">
<el-table-column
type="index"
width="55"
label="序号"
align="center"
:index="index => (dialogForm.pageNum - 1) * dialogForm.pageSize + index + 1"
/>
<el-table-column
v-for="(column, index) in dialogColumns"
show-overflow-tooltip
:key="index"
:label="column.label"
:prop="column.prop"
align="center"
></el-table-column>
</el-table>
<!-- 分页 -->
<pagination
v-show="dlgTotal > 0"
:total="dlgTotal"
:page.sync="dialogForm.pageNum"
:limit.sync="dialogForm.pageSize"
@pagination="getDetailsList"
/>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
</span>
</el-dialog>
<!-- 领料单弹窗 -->
<el-dialog :visible.sync="open" width="1090px" :title="title" append-to-body>
<div style="height: 500px; overflow-y: scroll; padding: 0 20px" v-loading="leaseLoading">
<vue-easy-print tableShow ref="remarksPrintRef" class="print">
<div class="title" style="text-align: center; font-weight: 600; font-size: 16px">领料单</div>
<div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap">
<div class="item" style="width: 60%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>领料单位</span>
{{ leaseApplyData.leaseUnit }}
</div>
<div class="item" style="width: 40%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>工程名称</span>
{{ leaseApplyData.leaseProject }}
</div>
<div class="item" style="width: 40%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>发料单位</span>
{{ '机具(物流)分公司' }}
</div>
<div class="item" style="width: 30%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>时间</span>
<span v-if="leaseApplyData.createTime">{{ leaseApplyData.createTime.split(' ')[0] }}</span>
</div>
<div class="item" style="width: 30%; flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>编号</span>
{{ leaseApplyData.code }}
</div>
</div>
<table class="print-table" style="margin-top: 20px; width: 100%; border-collapse: collapse" border>
<thead>
<tr>
<th align="center">序号</th>
<th align="center">物资名称</th>
<th align="center">规格型号</th>
<th align="center">计量单位</th>
<th align="center">领用数量</th>
<th align="center">备注</th>
<th align="center">出库方式</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in leaseApplyDetails" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ item.maTypeName }}</td>
<td align="center">{{ item.typeName }}</td>
<td align="center">{{ item.unitName }}</td>
<td align="center">{{ item.preNum }}</td>
<td align="center">{{ item.remark }}</td>
<td align="center">
<span
v-if="item.manageType == 0"
style="color: blue; cursor: pointer"
@click="codeInfo(item)"
>
编码出库
</span>
<span v-if="item.manageType == 1">数量出库</span>
</td>
</tr>
</tbody>
</table>
<div class="fillIn" style="margin-top: 50px; display: flex; justify-content: space-between">
<div class="item" style="width: 23%; display: flex; align-items: flex-start; flex-wrap: wrap">
<div style="width: 25%">审核</div>
<div
style="width: 75%; display: flex; align-items: center; flex-wrap: wrap"
v-if="approveSignList.length > 0"
>
<div
style="width: 80%; margin-left: 20px; height: 40px; transform: translateY(-30px)"
v-for="(item, index) in approveSignList"
:key="index"
>
<img
:src="item.outSignUrl"
style="width: 40px; height: 90px; max-width: 100%"
:style="{ transform: item.outSignType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
</div>
<div class="item" style="width: 24%; display: flex; align-items: flex-start; flex-wrap: wrap">
<div style="width: 30%">领料</div>
<div
style="
width: 70%;
display: flex;
align-items: center;
flex-wrap: wrap;
transform: translateY(-30px);
"
v-if="outSignList.length > 0"
>
<div
style="width: 80%; margin-left: 20px; height: 40px"
v-for="(item, index) in outSignList"
:key="index"
>
<img
:src="item.outSignUrl"
style="width: 40px; height: 90px; max-width: 100%"
:style="{ transform: item.outSignType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
</div>
<div class="item" style="width: 28%; display: flex; align-items: flex-start">
<div style="width: 25%">库管</div>
<div
style="
width: 75%;
display: flex;
align-items: center;
flex-wrap: wrap;
transform: translateY(-30px);
"
v-if="kgSignList.length > 0"
>
<div
style="width: 80%; margin-left: 20px; height: 40px"
v-for="(item, index) in kgSignList"
:key="index"
>
<img
:src="item.outSignUrl"
style="width: 40px; height: 90px"
:style="{ transform: item.outSignType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
</div>
<div class="item" style="width: 25%; display: flex; align-items: flex-start">
<div style="width: 25%">制单</div>
<div
style="width: 75%; margin-left: 20px; transform: translateY(-30px)"
v-if="leaseApplyData.leaseSignUrl"
>
<img
:src="leaseApplyData.leaseSignUrl"
style="width: 40px; height: 90px; max-width: 100%"
:style="{ transform: leaseApplyData.leaseSignType == 0 ? 'rotate(-90deg)' : '' }"
alt=""
/>
</div>
</div>
</div>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="print"> </el-button>
<el-button @click="open = false"> </el-button>
</div>
</el-dialog>
<!-- 编码管理查看弹窗 -->
<el-dialog :title="titleView" :visible.sync="showView" width="800px" append-to-body>
<div style="overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRefView" class="print">
<div
class="title"
style="text-align: center; font-weight: 600; font-size: 16px; margin-bottom: 20px"
>
领料单编号明细
</div>
<!-- <el-table :data="getListViewInfo" width="600px" height="450">
<el-table-column align="center" label="序号" type="index" width="55" />
<el-table-column
label="类型名称"
align="center"
prop="materialName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="规格型号"
align="center"
prop="typeName"
:show-overflow-tooltip="true"
/>
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true" />
</el-table> -->
<table class="print-table" style="margin-top: 20px; width: 100%; border-collapse: collapse" border>
<thead>
<tr>
<th align="center" width="55">序号</th>
<th align="center">类型名称</th>
<th align="center">规格型号</th>
<th align="center">设备编码</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in getListViewInfo" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ item.materialName }}</td>
<td align="center">{{ item.typeName }}</td>
<td align="center">{{ item.maCode }}</td>
</tr>
</tbody>
</table>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="printView"> </el-button>
<el-button @click="showView = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getTotalListApi, getDetailsListApi,getPickListApi } from '@/api/materialsStation'
import { getClzApplyInfo, } from '@/api/lease/apply'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import vueEasyPrint from 'vue-easy-print'
@ -213,19 +455,20 @@ export default {
proList: [], //
typeModelList: [], //
approveSignList: [],
//
title: '',
open: false,
leaseApplyDetails: [],
//
leaseApplyData: {},
leaseLoading: false,
titleView: '',
showView: false,
getListViewInfo: [],
publishTask: '',
kgSignList: [],
outSignList: [],
numOutForm: {
//-
carCode: '',
remark: ''
},
approveSignList: [],
}
},
created() {
@ -315,15 +558,44 @@ export default {
}, 100)
},
//
async handleLld(row) {
this.title = '领料单'
// this.queryOutView.keyWord = ''
this.open = true
// var ids = row.id
const { id, publishTask } = row
this.publishTask = publishTask
this.leaseLoading = true
try {
const res = await getClzApplyInfo(id, { publishTask })
this.leaseApplyDetails = res.data.leaseApplyDetailsList
this.leaseApplyData = res.data.leaseApplyInfo
this.kgSignList = res.data.kgSignList || []
this.outSignList = res.data.outSignList || []
this.approveSignList = res.data.approveSignList || []
} catch (error) {
console.log('🚀 ~ handleLld ~ error:', error)
} finally {
this.leaseLoading = false
}
},
//
printView() {
this.$refs.remarksPrintRefView.print()
},
//
//
print() {
this.$refs.remarksPrintRef.print()
this.$refs.remarksPrintRef.print()
},
codeInfo(row) {
this.showView = true
this.titleView = '查看'
this.getListViewInfo = row.maCodeVoList
},
@ -357,4 +629,14 @@ export default {
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.print-table {
table,
th,
td {
border: 1.5px solid black;
border-collapse: collapse;
}
}
</style>