出库检验单

This commit is contained in:
hongchao 2024-12-25 11:06:39 +08:00
parent d60535be2f
commit ce1ce4f033
3 changed files with 316 additions and 115 deletions

View File

@ -511,7 +511,7 @@
</el-table-column>-->
<el-table-column label="规格型号" align="center" prop="typeName" />
<el-table-column label="计量单位" align="center" prop="unitName" />
<el-table-column label="预领数量" align="center" prop="preNum" />
<el-table-column label="已领数量" align="center" prop="alNum" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column
label="出库方式"

View File

@ -486,7 +486,7 @@
<el-dialog
:title="title"
:visible.sync="openPrint"
width="1100px"
width="1000px"
append-to-body
>
<div style="height: 500px; overflow-y: scroll">
@ -495,23 +495,12 @@
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: 100%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>单据编号</span>
</div>
<div
class="item"
style="
@ -521,7 +510,7 @@
font-size: 14px;
"
>
<span>生产厂家供应商</span>
<span>领用工程</span>
</div>
<div
@ -533,60 +522,27 @@
font-size: 14px;
"
>
<span>到货日期</span>
<span>使用单位</span>
</div>
</div>
<el-table
:data="printTableData"
class="table"
style="margin-top: 20px; width: 1000px; padding-bottom: 1px"
style="margin-top: 20px; width: 900px; padding-bottom: 1px"
border
>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" align="center" type="index" row="2" />
<el-table-column
label="物资名称"
align="center"
prop="machineTypeName"
/>
<el-table-column
label="规格型号"
align="center"
prop="specificationType"
/>
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="配送信息" align="center">
<el-table-column
label="到货数量"
align="center"
prop="purchaseNum"
/>
<el-table-column
label="验收结论"
align="center"
prop="purchaseNum"
/>
<el-table-column label="质保质量" align="center">
<el-table-column
label="实收份数"
align="center"
prop="purchaseNum"
/>
<el-table-column
label="符合要求"
align="center"
prop="purchaseNum"
/>
</el-table-column>
</el-table-column>
<el-table-column label="备注" align="center" prop="unitName" />
<!-- <el-table-column-->
<!-- label="合格证及技术资料"-->
<!-- align="center"-->
<!-- prop=""-->
<!-- />-->
<!-- <el-table-column label="包装" align="center" prop="" />-->
<el-table-column label="机具名称" align="center" prop="machineTypeName"/>
<el-table-column label="规格型号" align="center" prop="specificationType"/>
<el-table-column label="单位" align="center" prop="unitName" width="40px"/>
<el-table-column label="数量" align="center" prop="unitName" width="40px"/>
<el-table-column label="设备编码" align="center" prop="unitName"/>
<el-table-column label="额定载荷KN" align="center" prop="unitName"/>
<el-table-column label="试验载荷KN" align="center" prop="unitName"/>
<el-table-column label="持荷时间min" align="center" prop="unitName"/>
<el-table-column label="试验日期" align="center" prop="unitName"/>
<el-table-column label="下次试验日期" align="center" prop="unitName"/>
<el-table-column label="检验结论" align="center" prop="unitName"/>
<el-table-column label="备注" align="center" prop="unitName"/>
</el-table>
<div
@ -594,26 +550,19 @@
style="
margin-top: 20px;
display: flex;
justify-content: space-between;
align-items: center;
justify-content: right;
"
>
<div class="item" style="width: 33%">
<div>
<span>供应科</span>
<span>检验单位</span>
</div>
<div style="position: absolute; top: 0%; left: 25%">
<canvas id="canvas" width="180" height="180"></canvas>
</div>
</div>
<div class="item" style="width: 33%">
<div>
<span>生产技术科</span>
</div>
</div>
<div class="item" style="width: 33%">
<div>
<span>库管班</span>
</div>
</div>
</div>
</vue-easy-print>
</div>
@ -694,7 +643,7 @@
style="margin-top: 20px; padding: 1px"
>
<el-table-column label="序号" align="center" type="index" />
<el-table-column label="类型名称" align="center" prop="typeName" />
<el-table-column label="类型名称" align="center" prop="maTypeName" />
<!-- <el-table-column type="expand">
<template slot-scope="scope">
<div class="nested-table-container">
@ -726,18 +675,16 @@
</el-table-column>-->
<el-table-column label="规格型号" align="center" prop="typeName" />
<el-table-column label="计量单位" align="center" prop="unitName" />
<el-table-column label="预领数量" align="center" prop="preNum" />
<el-table-column label="已领数量" align="center" prop="alNum" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column
label="出库方式"
align="center"
prop="manageTypeName"
prop="manageType"
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.ma_type_manage_type"
:value="scope.row.manageType"
/>
<span v-if="scope.row.manageType == 0" style="color: blue;" @click="codeInfo(scope.row)">编码出库</span>
<span v-if="scope.row.manageType == 1">数量出库</span>
</template>
</el-table-column>
<!-- <el-table-column-->
@ -855,6 +802,50 @@
</el-table-column>
</el-table>
</el-dialog>
<!-- 编码管理查看弹窗 -->
<el-dialog
:title="titleView"
:visible.sync="showView"
width="1000px"
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>
</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>
@ -867,6 +858,7 @@ import {
submitNumOut,
} from "@/api/lease/out";
import vueEasyPrint from "vue-easy-print";
import chapter from '../../../../utils/chapter';
export default {
dicts: ["lease_task_status"],
components: { vueEasyPrint },
@ -927,6 +919,7 @@ export default {
outQuery: {
pageNum: 1,
pageSize: 10,
maCode: "",
},
form: {
remark: "",
@ -950,11 +943,17 @@ export default {
carCode: "",
remark: "",
},
titleView: "",
showView:false,
getListViewInfo:[],
};
},
created() {
this.getList();
},
mounted() {
chapter('机具检验专用章', '重庆送变电工程有限公司')
},
methods: {
//
handleSelectionChange(selection) {
@ -1173,7 +1172,7 @@ export default {
// this.query.taskId = row.taskId
// this.getPrintTable(row.taskId)
this.openPrint = true;
this.title = "机具设备到货验收单";
this.title = "出库检验单";
},
//
@ -1192,6 +1191,12 @@ export default {
this.$refs.remarksPrintRef.print();
},
codeInfo(row) {
this.showView = true;
this.titleView = "查看";
this.getListViewInfo = row.maCodeVoList;
},
/** 导出按钮操作 */
handleExport() {
this.download(
@ -1232,6 +1237,10 @@ export default {
row.inputNum = maxNum;
}
},
printView() {
// this.$refs.remarksPrintRef.print();
},
},
watch: {

View File

@ -72,7 +72,16 @@
<el-table-column label="固定资产编号" align="center" prop="assetsCode" sortable show-overflow-tooltip/>
<el-table-column label="设备原编号" align="center" prop="preCode" sortable show-overflow-tooltip/>
<el-table-column label="购置批次" align="center" prop="buyTask" sortable show-overflow-tooltip/>
<el-table-column label="绑定标签" align="center" prop="remark" sortable show-overflow-tooltip/>
<el-table-column label="绑定标签" align="center" prop="qrCode" sortable show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.qrCode!=null" style="color:blue" @click="handleViewQrCode(scope.row)">
{{ "查看" }}
</span>
<span v-else>
{{ "暂无" }}
</span>
</template>
</el-table-column>
<el-table-column label="所在仓库" align="center" prop="ownHouse" sortable show-overflow-tooltip/>
<el-table-column label="操作" align="center" width="180">
<template slot-scope="scope">
@ -179,8 +188,10 @@
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="绑定标签" prop="houseName">
<el-input v-model="form.houseName" placeholder="请输入" maxlength="20" disabled/>
<el-form-item label="绑定标签" prop="qrCode">
<div id="qrcode" v-if="form.qrCode" style="display: flex;align-items: center;justify-content: center;" ref="codeItemTwo"
></div>
<span v-else>暂无</span>
</el-form-item>
</el-col>
</el-row>
@ -211,7 +222,7 @@
</el-col>
<el-col :span="7">
<el-form-item label="资产属性" prop="assetsId">
<el-select v-model="form.assetsId" placeholder="请选择资产属性" clearable style="width: 100%;" >
<el-select v-model="form.assetsId" placeholder="请选择资产属性" clearable style="width: 100%;" disabled>
<el-option
v-for="dict in ZichanTypeList"
:key="dict.value"
@ -239,17 +250,43 @@
<el-input v-model="form.inOutNum" placeholder="请输入" maxlength="20" disabled/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="库管员" prop="keeperName">
<el-input v-model="form.keeperName" placeholder="请输入" maxlength="20" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="7">
<el-form-item label="维修员" prop="repairName">
<el-input v-model="form.repairName" placeholder="请输入" maxlength="20" disabled/>
</el-form-item>
<el-col :span="12">
<el-form-item label="库管员" >
<el-select
v-model="form.keeperArr"
filterable multiple
placeholder="请选择库管员"
style="width: 100%"
disabled
>
<el-option
v-for="keeper in KeeperOptions"
:key="keeper.userId+''"
:label="keeper.userName"
:value="keeper.userId+''"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="维修员" >
<el-select
v-model="form.repairerArr"
filterable multiple
placeholder="请选择维修员"
style="width: 100%"
disabled
>
<el-option
v-for="keeper in repairerOptions"
:key="keeper.userId"
:label="keeper.userName"
:value="keeper.userId+''"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
@ -278,14 +315,33 @@
</div>
</el-dialog>
<!-- 二维码下载对话框 -->
<el-dialog title="二维码查看" :visible.sync="uploadOpen" width="450px" append-to-body :close-on-click-modal="false">
<div style="text-align: center" ref="codeQr">
<div class="uploadImg">
<div id="qrcode" class="qrcode" ref="codeItem"></div>
</div>
<div class="boxCode">二维码编号{{ rowObj.qrCode }}</div>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="downloadCode"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getListDevice,getDeviceDetail,editDevice,addDevice,delDevice,getDeviceType,getZichanType } from "@/api/ma/device";
import { getKeeperIds} from "@/api/ma/typeConfigKeeper";
import { getRepairIds } from "@/api/ma/typeConfigRepair";
import {
getUserTypeList,
} from "@/api/ma/base";
import { downloadFile } from '@/utils/download'
import { getToken } from '@/utils/auth'
import QRCode from 'qrcodejs2';
import html2canvas from 'html2canvas';
export default {
name: "Post",
data() {
@ -364,21 +420,72 @@
},
//
form: {},
//
rules: {
form: {
qrCode: "",
},
//
rules: {
},
},
uploadOpen: false,
rowObj:{},
qrCode:"",
qrcodeUrl: '',
KeeperOptions: [],
repairerOptions: [],
};
},
created() {
this.getZichanType();
this.getDeviceType();
this.getKeeperData();
this.getRepairerData();
this.getList();
},
// watch: {
// // form.qrCode
// 'form.qrCode': function (newValue) {
// if (newValue) {
// this.generateQRCode(newValue);
// } else {
// this.qrcodeUrl = ''; // URL
// }
// },
// },
methods: {
async getKeeperData() {
const itemName = "ku_guan_role_ids";
let roleIdsTemp = []
await getKeeperIds(itemName).then((response) => {
const roleIds = response.rows[response.rows.length - 1].itemValue
.split(",")
.map((item) => Number(item));
roleIdsTemp = roleIds;
});
await getUserTypeList(roleIdsTemp.join(',')).then((response) => {
this.KeeperOptions = response.rows;
});
},
async getRepairerData() {
const itemName = "wei_xiu_role_ids";
let roleIdsTemp = []
await getRepairIds(itemName).then((response) => {
const roleIds = response.rows[response.rows.length - 1].itemValue
.split(",")
.map((item) => Number(item));
roleIdsTemp = roleIds;
});
await getUserTypeList(roleIdsTemp.join(',')).then((response) => {
this.repairerOptions = response.rows;
console.log('4444',this.repairerOptions)
});
},
getDeviceType(){
getDeviceType({level:2,skipPermission:1}).then(response => {
let matTypeRes = response.data;
@ -443,7 +550,22 @@
const maId = row.maId
getDeviceDetail(maId).then((response) => {
this.form = response.data;
if (response.data.keeperId) {
this.form.keeperArr = response.data.keeperId.split(',');
} else {
this.form.keeperArr = []; //
}
if (response.data.repairId) {
this.form.repairerArr = response.data.repairId.split(',');
} else {
this.form.repairerArr = []; //
}
if (this.form.qrCode) {
this.generateQRCode(this.form.qrCode);
// URL
} else {
this.qrcodeUrl = '';
}
this.showHouse = true
this.title = '修改'
})
@ -454,11 +576,41 @@
const maId = row.maId
getDeviceDetail(maId).then((response) => {
this.form = response.data;
if (response.data.keeperId) {
this.form.keeperArr = response.data.keeperId.split(',');
} else {
this.form.keeperArr = []; //
}
if (response.data.repairId) {
this.form.repairerArr = response.data.repairId.split(',');
} else {
this.form.repairerArr = []; //
}
if (this.form.qrCode) {
this.generateQRCode(this.form.qrCode);
// URL
} else {
this.qrcodeUrl = '';
}
this.showHouse = true
this.title = '查看'
})
},
//
generateQRCode(value) {
this.$nextTick(() => {
this.$refs.codeItemTwo.innerHTML = ''
var qrcode = new QRCode(this.$refs.codeItemTwo, {
text: value, //
width: 55,
height: 55,
colorDark: '#000000',
colorLight: '#ffffff',
correctLevel: QRCode.CorrectLevel.H,
})
}, 500)
},
//
reset() {
this.form = {};
@ -507,7 +659,42 @@
})
.catch(() => {})
},
//
handleViewQrCode(row){
this.rowObj = row
this.uploadOpen = true
this.qrCode = row.qrCode
let str = row.qrCode
this.$nextTick(() => {
this.$refs.codeItem.innerHTML = ''
var qrcode = new QRCode(this.$refs.codeItem, {
text: str, //
width: 256,
height: 256,
colorDark: '#000000',
colorLight: '#ffffff',
correctLevel: QRCode.CorrectLevel.H,
})
}, 500)
},
//
downloadCode(e) {
if (document.getElementById('qrcode').childNodes[0]) {
let element = this.$refs.codeQr
html2canvas(element).then((canvas) => {
// canvasURL
const image = canvas.toDataURL('image/png')
const alink = document.createElement('a')
alink.href = image
alink.download = this.qrCode
alink.click()
})
}
},
// handleExport() {
// this.download('/material/ma_machine/export', {
// ...this.queryParams
@ -519,17 +706,6 @@
};
</script>
<style lang="scss" scoped>
.uploadImg {
padding-top: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.deviceCode {
margin-top: 10px;
padding-bottom: 20px;
font-size: 18px;
}
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
@ -540,4 +716,20 @@
display: none;
}
}
.uploadImg {
padding-top: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.boxCode {
margin-top: 10px;
padding-bottom: 20px;
font-size: 18px;
}
.qrcode-container img {
width: 100px; /* 设置二维码的大小,调整为你需要的尺寸 */
height: 100px;
}
</style>