装卸单
This commit is contained in:
parent
2ab360e93b
commit
10aeb9ff75
|
|
@ -91,3 +91,11 @@ export function uploadSort(data) {
|
|||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function getSort(data) {
|
||||
return request({
|
||||
url: '/material/back_apply_info/getSort',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
|
||||
<!-- <el-form-item label="申请时间">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="queryParams.time"-->
|
||||
<!-- type="daterange"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- range-separator="至"-->
|
||||
<!-- start-placeholder="开始日期"-->
|
||||
<!-- end-placeholder="结束日期"-->
|
||||
<!-- style="width: 240px"-->
|
||||
<!-- ></el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="日期">
|
||||
<el-date-picker
|
||||
v-model="queryParams.time"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 240px"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="关键字" prop="keyWord">
|
||||
<el-input
|
||||
v-model="queryParams.keyWord"
|
||||
|
|
@ -32,7 +32,6 @@
|
|||
:data="tableList"
|
||||
v-loading="loading"
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
row-key="id"
|
||||
>
|
||||
<el-table-column label="序号" width="70" align="center" type="index">
|
||||
|
|
@ -45,11 +44,23 @@
|
|||
<el-table-column label="车牌号" align="center" width="170" prop="carCode" show-overflow-tooltip />
|
||||
<el-table-column label="联系人" align="center" width="170" prop="linkMan" show-overflow-tooltip />
|
||||
<el-table-column label="联系电话" align="center" width="170" prop="phone" show-overflow-tooltip />
|
||||
<el-table-column label="保存日期" align="center" width="170" prop="reserveDate" show-overflow-tooltip />
|
||||
<el-table-column label="排号" align="center"width="120" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="日期" align="center" width="170" prop="reserveDate" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="排号"
|
||||
align="center"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<!-- 使用作用域插槽获取行数据 -->
|
||||
<template #default="scope">
|
||||
{{ scope.row.timeType }}-{{ scope.row.sort }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="170">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button size="mini" v-if="row.sort===null" type="success" @click="handleView(row)">排号</el-button>
|
||||
<el-button size="mini" v-if="row.type==='装' && row.sort!==null" type="success" @click="dialogView(row)">装货单</el-button>
|
||||
<el-button size="mini" v-if="row.type==='卸' && row.sort!==null" type="success" @click="dialogView(row)">卸货单</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
|
@ -66,8 +77,18 @@
|
|||
<el-dialog title="审核排号" :visible.sync="viewDialogVisible" width="500px" append-to-body>
|
||||
<el-form :model="viewForm" label-width="60px" class="view-dialog-form">
|
||||
<el-form-item label="排号:">
|
||||
<!-- 限制只能输入数字,并禁止输入其他字符 -->
|
||||
<span
|
||||
style="display: inline-block;
|
||||
margin-right: 5px;
|
||||
color: #666;
|
||||
vertical-align: middle;
|
||||
font-size: 16px;
|
||||
font-weight: bold;"
|
||||
>
|
||||
{{ timeType }}-
|
||||
</span>
|
||||
<el-input
|
||||
style="display: inline-block; width: auto; vertical-align: middle;"
|
||||
v-model.number="viewForm.sort"
|
||||
@input="handleSortInput"
|
||||
placeholder="请输入数字"
|
||||
|
|
@ -88,6 +109,120 @@
|
|||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="卸货单预览"
|
||||
:visible.sync="previewDialogVisible"
|
||||
width="50%"
|
||||
top="5vh">
|
||||
<div class="preview-container">
|
||||
<!-- 图片预览 -->
|
||||
<img
|
||||
v-if="currentPreviewImage"
|
||||
:src="currentPreviewImage"
|
||||
alt="卸货单"
|
||||
style="max-width: 100%; border: 1px solid #eee;">
|
||||
|
||||
<!-- 卸货单内容 - 添加print-content类 -->
|
||||
<div
|
||||
id="unloading-ticket"
|
||||
class="unloading-ticket print-content"
|
||||
v-else>
|
||||
<h2 style="text-align: center;">卸车排位号</h2>
|
||||
<table class="ticket-table" style="margin: 0 auto;">
|
||||
<tr>
|
||||
<td width="100" style="text-align: center;">号类</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.timeType }}-{{ currentTicketData.sort }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">工程名称</td>
|
||||
<td style="text-align: center;">{{ currentTicketData.proName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">车牌号码</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.carCode }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">联系人</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.linkMan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">联系电话</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.phone }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">日期</td>
|
||||
<td style="text-align: center;">{{ currentTicketData.reserveDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">签字</td>
|
||||
<td style="height: 50px; text-align: center;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="previewDialogVisible = false">关闭</el-button>
|
||||
<el-button type="primary" @click="printTicket">打印</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="装货单预览"
|
||||
:visible.sync="loadingDialogVisible"
|
||||
width="50%"
|
||||
top="5vh">
|
||||
<div class="preview-container">
|
||||
<!-- 图片预览 -->
|
||||
<img
|
||||
v-if="currentPreviewImage"
|
||||
:src="currentPreviewImage"
|
||||
alt="装货单"
|
||||
style="max-width: 100%; border: 1px solid #eee;">
|
||||
|
||||
<!-- 卸货单内容 - 添加print-content类 -->
|
||||
<div
|
||||
id="loading-ticket"
|
||||
class="loading-ticket loading-print-content"
|
||||
v-else>
|
||||
<h2 style="text-align: center;">装货排位号</h2>
|
||||
<table class="loading-ticket-table" style="margin: 0 auto;">
|
||||
<tr>
|
||||
<td width="100" style="text-align: center;">号类</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.timeType }}-{{ loadingTicketData.sort }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">工程名称</td>
|
||||
<td style="text-align: center;">{{ loadingTicketData.proName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">车牌号码</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.carCode }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">联系人</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.linkMan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">联系号码</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.phone }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">日期</td>
|
||||
<td style="text-align: center;">{{ loadingTicketData.reserveDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">签字</td>
|
||||
<td style="height: 50px; text-align: center;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="loadingDialogVisible = false">关闭</el-button>
|
||||
<el-button type="primary" @click="loadingPrintTicket">打印</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -99,12 +234,13 @@ import {
|
|||
getTeamList,
|
||||
sumbitAuthData,
|
||||
uploadIdCard,
|
||||
getAuthInfo, getHandlingOrderList, uploadSort
|
||||
getAuthInfo, getHandlingOrderList, uploadSort, getSort
|
||||
} from '@/api/materialsStation/auth'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import { validateIdCard } from '@/utils/bonus'
|
||||
import vueEasyPrint from 'vue-easy-print'
|
||||
import {acceptInnerVerifyer} from "@/api/purchase/goodsAccept";
|
||||
import printJS from "print-js";
|
||||
export default {
|
||||
components: { vueEasyPrint },
|
||||
name: 'IdCardUploadComponent',
|
||||
|
|
@ -167,7 +303,33 @@ export default {
|
|||
detailsList: [],
|
||||
userName: '',
|
||||
createTime: ''
|
||||
}
|
||||
},
|
||||
|
||||
previewDialogVisible: false,
|
||||
currentPreviewImage: null,
|
||||
currentTicketData: {
|
||||
timeType:'',
|
||||
type: '',
|
||||
proName: '',
|
||||
carCode: '',
|
||||
linkMan: '',
|
||||
phone: '',
|
||||
reserveDate: '',
|
||||
sort:''
|
||||
},
|
||||
loadingDialogVisible: false,
|
||||
loadingTicketData: {
|
||||
timeType:'',
|
||||
type: '',
|
||||
proName: '',
|
||||
carCode: '',
|
||||
linkMan: '',
|
||||
phone: '',
|
||||
reserveDate: '',
|
||||
sort:''
|
||||
},
|
||||
timeType:'',
|
||||
sort:''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
@ -198,8 +360,8 @@ export default {
|
|||
this.loading = true
|
||||
const params = {
|
||||
keyWord: this.queryParams.keyWord,
|
||||
// startTime: this.queryParams.time && this.queryParams.time[0],
|
||||
// endTime: this.queryParams.time && this.queryParams.time[1],
|
||||
startTime: this.queryParams.time && this.queryParams.time[0],
|
||||
endTime: this.queryParams.time && this.queryParams.time[1],
|
||||
pageSize: this.queryParams.pageSize,
|
||||
pageNum: this.queryParams.pageNum
|
||||
}
|
||||
|
|
@ -219,7 +381,8 @@ export default {
|
|||
confirmAction() {
|
||||
const param = {
|
||||
id: this.viewForm.id,
|
||||
sort: this.viewForm.sort
|
||||
sort: this.viewForm.sort,
|
||||
timeType: this.timeType
|
||||
}
|
||||
uploadSort(param).then(response => {
|
||||
if (response.code === 200) {
|
||||
|
|
@ -250,6 +413,17 @@ export default {
|
|||
this.viewDialogVisible = true
|
||||
this.viewForm.sort = row.sort // 可选:将原排号显示在输入框中
|
||||
this.viewForm.id = row.id // 保存当前行的 id
|
||||
|
||||
const params = {
|
||||
type:''
|
||||
}
|
||||
getSort(params).then(response => {
|
||||
console.log(response.data)
|
||||
this.timeType=response.data.timeType,
|
||||
this.viewForm.sort=response.data.sort
|
||||
})
|
||||
|
||||
|
||||
},
|
||||
// 转换时间格式
|
||||
formatTime(time) {
|
||||
|
|
@ -259,10 +433,230 @@ export default {
|
|||
const day = date.getDate()
|
||||
return `${year} 年 ${month} 月 ${day} 日`
|
||||
},
|
||||
dialogView(row) {
|
||||
if (row.type === '卸' && row.sort !== null) {
|
||||
this.showUnloadingTicket(row);
|
||||
} else if (row.type === '装' && row.sort !== null) {
|
||||
this.showLoadingTicket(row);
|
||||
}
|
||||
},
|
||||
// 显示卸货单
|
||||
showUnloadingTicket(row) {
|
||||
this.currentTicketData = {
|
||||
timeType:row.timeType,
|
||||
sort: row.sort,
|
||||
proName: row.proName,
|
||||
carCode: row.carCode,
|
||||
linkMan: row.linkMan,
|
||||
phone: row.phone,
|
||||
reserveDate: row.reserveDate
|
||||
};
|
||||
this.currentPreviewImage = null; // 确保不使用图片预览
|
||||
this.previewDialogVisible = true;
|
||||
},
|
||||
printTicket() {
|
||||
// 创建一个打印专用的样式
|
||||
const printStyle = `
|
||||
.unloading-ticket {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.ticket-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ticket-table td {
|
||||
padding: 10px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.ticket-table td:first-child {
|
||||
font-weight: bold;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
h2 {
|
||||
text-align: center;
|
||||
}
|
||||
`;
|
||||
|
||||
printJS({
|
||||
printable: 'unloading-ticket',
|
||||
type: 'html',
|
||||
targetStyles: ['*'],
|
||||
scanStyles: false,
|
||||
style: printStyle,
|
||||
onPrintDialogClose: () => {
|
||||
// 打印对话框关闭后的回调
|
||||
}
|
||||
});
|
||||
},
|
||||
// 显示装货单
|
||||
showLoadingTicket(row) {
|
||||
this.loadingTicketData = {
|
||||
timeType:row.timeType,
|
||||
sort: row.sort,
|
||||
proName: row.proName,
|
||||
carCode: row.carCode,
|
||||
linkMan: row.linkMan,
|
||||
phone: row.phone,
|
||||
reserveDate: row.reserveDate
|
||||
};
|
||||
this.currentPreviewImage = null; // 确保不使用图片预览
|
||||
this.loadingDialogVisible = true;
|
||||
},
|
||||
loadingPrintTicket() {
|
||||
// 创建一个打印专用的样式
|
||||
const printStyle = `
|
||||
.loading-ticket {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.loading-ticket-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.loading-ticket-table td {
|
||||
padding: 10px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.loading-ticket-table td:first-child {
|
||||
font-weight: bold;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
h2 {
|
||||
text-align: center;
|
||||
}
|
||||
`;
|
||||
|
||||
printJS({
|
||||
printable: 'loading-ticket',
|
||||
type: 'html',
|
||||
targetStyles: ['*'],
|
||||
scanStyles: false,
|
||||
style: printStyle,
|
||||
onPrintDialogClose: () => {
|
||||
// 打印对话框关闭后的回调
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
/* 统一显示和打印的样式 */
|
||||
.unloading-ticket {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
border: 1px solid #ddd;
|
||||
background-color: #fff;
|
||||
|
||||
h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.ticket-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
border: 1px solid #ddd;
|
||||
text-align: left;
|
||||
|
||||
&:first-child {
|
||||
font-weight: bold;
|
||||
background-color: #f5f5f5;
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 打印专用样式 */
|
||||
@media print {
|
||||
body * {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.unloading-ticket,
|
||||
.unloading-ticket * {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.unloading-ticket {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: auto;
|
||||
max-width: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.loading-ticket {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
border: 1px solid #ddd;
|
||||
background-color: #fff;
|
||||
|
||||
h2 {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
.loading-ticket-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
border: 1px solid #ddd;
|
||||
text-align: left;
|
||||
|
||||
&:first-child {
|
||||
font-weight: bold;
|
||||
background-color: #f5f5f5;
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* 打印专用样式 */
|
||||
@media print {
|
||||
body * {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.loading-ticket,
|
||||
.loading-ticket * {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.loading-ticket {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: auto;
|
||||
max-width: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 批量授权标签容器 */
|
||||
.selected-items-container {
|
||||
max-height: 150px;
|
||||
|
|
|
|||
Loading…
Reference in New Issue