Commit 83ffd8b9 authored by jingnan's avatar jingnan 👀

入库确认增加打印标签操作,验收单查看和实验单查看分开展示

parent e4cd04f4
......@@ -78,15 +78,13 @@
<!-- <el-input v-model="form.isPerformRetest" :disabled="true" /> -->
</el-form-item>
</el-col>
<el-col v-if="chemicalDisplay" :span="24">
<!-- <el-col v-if="chemicalDisplay" :span="24">
<el-col :span="8">
<!-- <span>报告单号:</span> -->
<el-form-item label="报告单号" label-width="130px">
<el-input v-model="form.reportNo" clearable placeholder="报告单号" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="8">
<!-- 是否合格 -->
<el-form-item label="是否合格" label-width="130px">
<el-select v-model="form.reportNoIsPass" clearable placeholder="请选择" disabled>
<el-option label="合格" value="Y" />
......@@ -95,7 +93,6 @@
</el-form-item>
</el-col>
<el-col :span="8">
<!-- 是否报废 -->
<el-form-item label="是否报废" label-width="130px">
<el-select v-model="form.isDestroy" clearable placeholder="请选择" disabled>
<el-option label="是" :value="true" />
......@@ -103,7 +100,6 @@
</el-select>
</el-form-item></el-col>
<el-col :span="8">
<!-- 报废数量 -->
<el-form-item label="试验数量" label-width="130px">
<el-input v-model="form.experimentAmount" clearable placeholder="试验数量" :disabled="true" />
</el-form-item>
......@@ -121,7 +117,7 @@
</el-form-item>
</el-col>
</el-col>
</el-col> -->
<el-col :span="8">
<el-form-item label="质量证明文件" label-width="130px">
<el-select v-model="form.qualityCert" :disabled="allDisabled" clearable placeholder="请选择">
......
<!--
* @Author: gjn
* @Date: 2023-09-22 13:39:27
* @Description:
-->
<!--
* @Author: Lean
* @Date: 2021-03-01 14:40:26
* @LastEditTime: 2023-09-22 13:39:28
* @Description: 打印标签
* @FilePath: applications/dee-mes/src/privateComponents/components/WarehousingConfirmationConfirm/component/PrintTag.vue
-->
<!--
@prop config
@prop Number config.width 设置宽度 default = 300
@prop Array config.prints 打印的数据
@prop String config.prints[].QRcode 二维码
@prop String config.prints[].propertys 二维码下显示的属性
* 测试参数结构
config: {
width: 300,
prints: [
{
text: 'asdasdasd',
propertys: [
{ label: '编码', value: '' },
{ label: '名称', value: '' }
]
},
{
text: 'asdasdasd',
propertys: [
{ label: '编码', value: '' },
{ label: '名称', value: '' }
]
}
]
}
-->
<template>
<section ref="print" class="print">
<section
v-for="(item, index) in config.prints || []"
:key="index"
:style="{ width: '19%' }"
class="item"
>
<header>
<vue-qr style="height:218px;" :size="config.width" :margin="0" :text="item.text.toString()" :qid="index.toString()" />
</header>
<footer>
<ul>
<li
v-for="property in item.propertys"
:key="property.label"
>
<p>{{ property.label }}</p>
<span>{{ property.value }}</span>
</li>
</ul>
</footer>
</section>
</section>
</template>
<script>
import VueQr from 'vue-qr'
export default {
name: 'Print',
components: {
VueQr
},
props: {
config: {
type: Object,
default: () => {
return {
width: 300,
prints: []
}
}
}
},
data() {
return {
timer: null,
flag: true
}
},
beforeDestroy() {
this.timer = null
},
methods: {
print() {
if (this.flag) {
this.flag = false
this.timer = setInterval(() => {
if (this.$refs.print.innerHTML) {
this.printTag()
clearInterval(this.timer)
}
}, 300)
setTimeout(() => {
this.flag = true
}, 1000)
}
},
printTag() {
var iframe = document.createElement('IFRAME')
var doc = null
iframe.setAttribute('style', 'position:absolute; width:0; height:0; margin-top: -1000px; margin-left: -1000px;')
document.body.appendChild(iframe)
doc = iframe.contentWindow.document
doc.write(`
<style>
ul, li {
margin: 0;
padding: 0;
list-style: none;
font-size: 17px;
}
.item {
min-height:700px;
}
li {
position: relative;
width: 306px;
display: flex;
padding: 0 5px;
align-items: center;
border-left: 2px solid #222;
border-right: 2px solid #222;
border-bottom: 2px solid #222;
}
li::after{
content: '';
position: absolute;
left: calc(35% - 5px);
top: 0;
height: 100%;
border-left: 2px solid #222;
width: 0;
}
ul {
width: 320px;
border-top: 4px solid #222;
}
li p {
margin: 0;
width: 35%;
padding: 3.5px 0;
}
li span {
display: inline-block;
width: 65%;
text-align: left;
padding-left: 6px;
}
img {
width: 320px;
height:290px;
margin-bottom: 4px;
}
</style>
`)
doc.write(this.$refs.print.innerHTML)
doc.close()
iframe.contentWindow.focus()
iframe.contentWindow.print()
}
}
}
</script>
<style lang="scss" scoped>
.print {
position: absolute;
z-index: -999;
left: -1000px;
top: -1110px;
}
</style>
......@@ -33,7 +33,7 @@ export default {
},
data() {
return {
title: '编辑',
title: '',
visibile: false,
config: null,
rowData: null
......
......@@ -17,23 +17,29 @@
v-if="basicData.id"
ref="treeTable"
:pagination="pagination"
:selection-row="{selectable: selectable}"
:data="tableData"
:columns="columns"
:options="optionsTree"
@selection-change="selectionChange"
@pagination-size-change="changePageSize"
@pagination-current-change="changePageNum"
/>
>
<dee-tools slot="header" :tools="tools" mode="normal" :collapse="false" /></dee-up-table>
<EditDrawer ref="editDrawer" :basic-data="basicData" />
<!-- 打印标签 -->
<PrintTag ref="print" :config="printConfig" />
</div>
</template>
<script>
import { post } from '@/utils/http'
import EditDrawer from './component/editDrawer.vue'
import PrintTag from './component/PrintTag.vue'
import WarehouseSelect from './component/warehouseSelect.vue'
export default {
// componentName: '验收入库申请流程详情',
name: 'PurchasingWarehousingProcessView', // name写在组件的最前方,自定义组件为必填
components: { EditDrawer }, // name写在组件的最前方,自定义组件为必填
components: { EditDrawer, PrintTag }, // name写在组件的最前方,自定义组件为必填
props: {
basicData: {
type: Object,
......@@ -53,7 +59,29 @@ export default {
pageSize: 20,
total: 0,
pageSizes: [10, 20, 50, 100]
},
tools: [
{
name: '打印标签',
icon: '/icons/components/new/add.png',
handler: {
click: () => this.print()
}
}
],
// 打印标签
printConfig: {
visible: false,
width: 300,
prints: []
},
selections: [],
selectable: (row, index) => {
if (row.isRoot && row.state === 'In_Confirm') {
return true
}
}
}
},
computed: {
......@@ -65,18 +93,18 @@ export default {
name: 'EditTableRow',
props: {
btns: [
{
{ // 理化试验阶段展示
operation: '理化编辑',
handleClick: (row, index) => {
this.$refs.editDrawer.onShow(row, { typeName: 'InStorageRequestItem', layKey: '1c4983a2-6f51-49e4-95ee-2f5506b8e217' })
},
icon: '/icons/b-inspection.png',
icon: '/icons/o-noc.png',
showFun: (row) => {
return (row.subTypeName === 'InStoragePurchaseItem' || row.subTypeName === 'InStorageRecallItem') && row.state === 'Check_Result_Maintain'
}
},
{
operation: '检验编辑',
{ // 物料检验及入库确认节点展示
operation: `检验信息`,
handleClick: (row, index) => {
if (row.state === 'In_Confirm') {
row.allDisabled = true
......@@ -87,6 +115,16 @@ export default {
showFun: (row) => {
return (row.subTypeName === 'InStoragePurchaseItem' || row.subTypeName === 'InStorageRecallItem') && (row.state === 'Material_Check' || row.state === 'In_Confirm')
}
},
{ // 物料检验阶段及入库确认阶段展示
operation: '理化查看',
handleClick: (row, index) => {
this.$refs.editDrawer.onShow(row, { typeName: 'InStorageRequestItem', layKey: 'checkResultMaintain_only' })
},
icon: '/icons/o-noc.png',
showFun: (row) => {
return (row.subTypeName === 'InStoragePurchaseItem' || row.subTypeName === 'InStorageRecallItem') && (row.state === 'In_Confirm' || row.state === 'Material_Check')
}
}
]
}
......@@ -253,7 +291,7 @@ export default {
{
'fieldName': 'id',
'operator': 'EQ',
'value': this.basicData.id
'value': this.basicData.id || ''
},
{
'fieldName': 'parentId',
......@@ -353,6 +391,54 @@ export default {
changePageNum(pageNum) {
this.pagination.currentPage = pageNum
this.searchInStorageRequestItem()
},
selectionChange(row) {
this.selections = row
},
// 打印标签
print() {
if (!this.selections.length) {
this.$utils.showMessageWarning('请先选择需要操作的数据')
return
}
// 获取需要打印的数据
this.printConfig.prints = []
let JobResponseInStorageEntryId = ''
this.selections.forEach((row) => {
this.$message.closeAll()
if (!row.exWorkUnitName) {
this.$utils.showMessageWarning('打印标签需要先选择库位')
return
}
// 打印标签二维码扫描结果展示入库响应的id
if (row.inventoryJobResponses && row.inventoryJobResponses.length) {
const entryResponse = row.inventoryJobResponses.find(el => el.subTypeName === 'JobResponseInEntry' || el.subTypeName.includes('JobResponseOutStorage'))
entryResponse && (JobResponseInStorageEntryId = entryResponse.id)
}
this.printConfig = Object.assign({}, this.printConfig, {
visible: true
})
const testJobResponse = this.$utils.getTargetJobResponses(row, 'JobResponseInTest')
this.printConfig.prints.push({
text: JobResponseInStorageEntryId || row.id,
propertys: [
{ label: '编码', value: row.extMaterial.resCode },
{ label: '名称', value: row.extMaterial.resName },
{ label: '型号/牌号/件号', value: row.extMaterial.modelNo },
{ label: '规格', value: row.extMaterial.spec },
{ label: '批号', value: row.lotNo },
{ label: '系列号/序列号', value: row.serialNo },
{ label: '机型', value: row.airModel },
{ label: '验收单号', value: testJobResponse && testJobResponse.testNo || '' },
{ label: '库位号', value: row.exWorkUnitName || '' },
{ label: '备注', value: row.remark || '' }
]
})
})
// 打印操作
this.selections.every((item) => item.exWorkUnitName) &&
this.$refs.print.print()
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment