领料记录查询详情-增加审批流

This commit is contained in:
bb_pan 2025-08-19 09:49:57 +08:00
parent 58e35a17c1
commit 63442e3a15
3 changed files with 443 additions and 336 deletions

View File

@ -1,341 +1,387 @@
<template>
<div class="app-container">
<el-form
:model="maForm"
ref="maForm"
size="small"
:rules="rules"
:inline="true"
label-width="120px"
:disabled="isDetail"
>
<el-form-item label="领用单位" prop="unitId">
<treeselect
v-model="maForm.unitId"
:disabled="isEdit || isDetail"
:options="uniteList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择领用单位"
@select="uniteChange"
v-if="pageTitle === '新增'"
/>
<el-input v-else v-model="maForm.leaseUnit" style="width: 240px" disabled />
</el-form-item>
<el-form-item label="领用工程" prop="projectId">
<treeselect
v-model="maForm.projectId"
:disabled="isEdit || isDetail"
:options="projectList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择领用工程"
@select="projectChange"
v-if="pageTitle === '新增'"
/>
<el-input v-else v-model="maForm.leaseProject" style="width: 240px" disabled />
</el-form-item>
<el-form-item label="领料人" prop="leasePerson">
<el-input
v-model="maForm.leasePerson"
placeholder="请输入领料人"
clearable
maxlength="50"
style="width: 240px"
/>
</el-form-item>
<el-row :gutter="20">
<el-col :span="24" :offset="0">
<el-form-item label="供货时间" prop="supplierTime">
<el-date-picker
v-model="maForm.supplierTime"
type="date"
placeholder="请选择供货时间"
clearable
style="width: 240px"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
/>
</el-form-item>
<el-form-item label="供货地点" prop="supplierPlace">
<el-input
v-model="maForm.supplierPlace"
placeholder="请输入供货地点"
clearable
maxlength="200"
style="width: 240px"
/>
</el-form-item>
<el-form-item label="联系电话" prop="phone">
<el-input
v-model="maForm.phone"
placeholder="请输入联系电话"
clearable
maxlength="11"
style="width: 240px"
/>
</el-form-item>
<el-form-item label="适用班组数" prop="fitNum">
<el-input
v-model="maForm.fitNum"
placeholder="请输入适用班组数"
maxlength="10"
type="number"
style="width: 240px"
@blur="fitNumChange"
/>
</el-form-item>
<el-form-item label="业务单号" prop="code" v-if="isEdit || isDetail">
<el-input
v-model="maForm.code"
placeholder="请输入业务单号"
clearable
maxlength="150"
style="width: 240px"
disabled
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="标准配置" prop="standardConfig">
<treeselect
v-model="maForm.standardConfig"
:disabled="isDetail"
:options="standardConfigList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择标准配置"
@select="standardConfigChange"
/>
</el-form-item>
<el-form-item label="类型规格" prop="deviceType">
<el-row :gutter="10">
<el-col :span="15">
<el-select
ref="typeSelect"
v-model="tempDeviceType"
multiple
filterable
placeholder="请输入类型规格"
style="width: 500px"
@change="handleTypeChange"
clearable
collapse-tags
:filter-method="handleSearchImpl"
:popper-class="'type-select-dropdown'"
:popper-append-to-body="false"
@visible-change="handleVisibleChange"
>
<el-option
v-for="item in filteredOptions"
:key="item.typeId"
:label="item.fullPath"
:value="item.typeId"
:data-key="item.typeId"
@mouseenter.native="showCustomTooltip(item, $event)"
@mouseleave.native="hideCustomTooltip"
>
<span v-html="highlightText(item.fullPath, searchKeyword)"></span>
</el-option>
</el-select>
<!-- <div
v-if="currentTooltipItem"
class="custom-tooltip"
:style="{
left: tooltipPosition.x + 'px',
top: tooltipPosition.y + 'px'
}"
>
<img
:src="currentTooltipItem.imageUrl || defaultImage"
style="max-width: 200px; max-height: 150px"
@load="imageLoaded"
@error="imageLoadError"
/>
<p>库存: {{ currentTooltipItem.storageNum }}</p>
</div> -->
</el-col>
<el-col :span="6">
<el-input
ref="searchInput"
v-model="searchKeyword"
placeholder="输入类型规格高亮搜索"
prefix-icon="el-icon-search"
clearable
style="width: 300px"
@input="handleHighlightSearch"
@focus="handleSearchFocus"
@click.native="handleSearchClick"
>
<template slot="append">
<span v-if="matchedOptions.length" style="margin: 0 5px">
{{ currentMatchIndex + 1 }}/{{ matchedOptions.length }}
</span>
</template>
</el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="委托书" prop="bmFileInfos" v-if="isFileFbs">
<el-upload
:action="uploadUrl"
:file-list="maForm.bmFileInfos"
:show-file-list="true"
:auto-upload="true"
:key="uploadKey"
:limit="5"
list-type="picture-card"
accept=".png, .jpg, .jpeg, .pdf"
:on-change="handleChangeBusinessList"
:class="{ disabledFbs: uploadDisabled }"
:on-preview="picturePreviewFbs"
:on-remove="handleRemoveElectricianImgList"
<el-row :gutter="20">
<el-col :span="isDetail ? 18 : 24" :offset="0">
<el-form
:model="maForm"
ref="maForm"
size="small"
:rules="rules"
:inline="true"
label-width="120px"
:disabled="isDetail"
>
<!-- 文件格式下载图片格式预览 -->
<div slot="file" slot-scope="{ file }">
<img v-if="isImage(file)" class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
<div v-else class="picture-card-container">
<img class="picture-card" :src="urlTemp" alt="" />
<p class="file-name">{{ file.name }}</p>
</div>
<span class="el-upload-list__item-actions">
<span v-if="updataIf(file)" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download" />
</span>
<span v-else class="el-upload-list__item-preview" @click="picturePreviewFbs(file)">
<i class="el-icon-zoom-in" />
</span>
<span v-if="!isDetail" class="el-upload-list__item-delete" @click="handleRemoveElectricianImgList(file)">
<i class="el-icon-delete" />
</span>
</span>
</div>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5" v-if="!isDetail">
<el-button type="primary" plain icon="el-icon-document" size="mini" @click="handleSave">
{{ isEdit ? '提交' : '发起申请' }}
</el-button>
<el-form-item label="领用单位" prop="unitId">
<treeselect
v-model="maForm.unitId"
:disabled="isEdit || isDetail"
:options="uniteList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择领用单位"
@select="uniteChange"
v-if="pageTitle === '新增'"
/>
<el-input v-else v-model="maForm.leaseUnit" style="width: 240px" disabled />
</el-form-item>
<el-form-item label="领用工程" prop="projectId">
<treeselect
v-model="maForm.projectId"
:disabled="isEdit || isDetail"
:options="projectList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择领用工程"
@select="projectChange"
v-if="pageTitle === '新增'"
/>
<el-input v-else v-model="maForm.leaseProject" style="width: 240px" disabled />
</el-form-item>
<el-form-item label="领料人" prop="leasePerson">
<el-input
v-model="maForm.leasePerson"
placeholder="请输入领料人"
clearable
maxlength="50"
style="width: 240px"
/>
</el-form-item>
<el-row :gutter="20">
<el-col :span="24" :offset="0">
<el-form-item label="供货时间" prop="supplierTime">
<el-date-picker
v-model="maForm.supplierTime"
type="date"
placeholder="请选择供货时间"
clearable
style="width: 240px"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
/>
</el-form-item>
<el-form-item label="供货地点" prop="supplierPlace">
<el-input
v-model="maForm.supplierPlace"
placeholder="请输入供货地点"
clearable
maxlength="200"
style="width: 240px"
/>
</el-form-item>
<el-form-item label="联系电话" prop="phone">
<el-input
v-model="maForm.phone"
placeholder="请输入联系电话"
clearable
maxlength="11"
style="width: 240px"
/>
</el-form-item>
<el-form-item label="适用班组数" prop="fitNum">
<el-input
v-model="maForm.fitNum"
placeholder="请输入适用班组数"
maxlength="10"
type="number"
style="width: 240px"
@blur="fitNumChange"
/>
</el-form-item>
<el-form-item label="业务单号" prop="code" v-if="isEdit || isDetail">
<el-input
v-model="maForm.code"
placeholder="请输入业务单号"
clearable
maxlength="150"
style="width: 240px"
disabled
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="标准配置" prop="standardConfig">
<treeselect
v-model="maForm.standardConfig"
:disabled="isDetail"
:options="standardConfigList"
:normalizer="normalizer"
:show-count="true"
style="width: 240px"
:disable-branch-nodes="true"
noChildrenText="没有数据了"
noOptionsText="没有数据"
noResultsText="没有搜索结果"
placeholder="请选择标准配置"
@select="standardConfigChange"
/>
</el-form-item>
<el-form-item label="类型规格" prop="deviceType">
<el-row :gutter="10">
<el-col :span="15">
<el-select
ref="typeSelect"
v-model="tempDeviceType"
multiple
filterable
placeholder="请输入类型规格"
style="width: 500px"
@change="handleTypeChange"
clearable
collapse-tags
:filter-method="handleSearchImpl"
:popper-class="'type-select-dropdown'"
:popper-append-to-body="false"
@visible-change="handleVisibleChange"
>
<el-option
v-for="item in filteredOptions"
:key="item.typeId"
:label="item.fullPath"
:value="item.typeId"
:data-key="item.typeId"
@mouseenter.native="showCustomTooltip(item, $event)"
@mouseleave.native="hideCustomTooltip"
>
<span v-html="highlightText(item.fullPath, searchKeyword)"></span>
</el-option>
</el-select>
<!-- <div
v-if="currentTooltipItem"
class="custom-tooltip"
:style="{
left: tooltipPosition.x + 'px',
top: tooltipPosition.y + 'px'
}"
>
<img
:src="currentTooltipItem.imageUrl || defaultImage"
style="max-width: 200px; max-height: 150px"
@load="imageLoaded"
@error="imageLoadError"
/>
<p>库存: {{ currentTooltipItem.storageNum }}</p>
</div> -->
</el-col>
<el-col :span="6">
<el-input
ref="searchInput"
v-model="searchKeyword"
placeholder="输入类型规格高亮搜索"
prefix-icon="el-icon-search"
clearable
style="width: 300px"
@input="handleHighlightSearch"
@focus="handleSearchFocus"
@click.native="handleSearchClick"
>
<template slot="append">
<span v-if="matchedOptions.length" style="margin: 0 5px">
{{ currentMatchIndex + 1 }}/{{ matchedOptions.length }}
</span>
</template>
</el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="委托书" prop="bmFileInfos" v-if="isFileFbs">
<el-upload
:action="uploadUrl"
:file-list="maForm.bmFileInfos"
:show-file-list="true"
:auto-upload="true"
:key="uploadKey"
:limit="5"
list-type="picture-card"
accept=".png, .jpg, .jpeg, .pdf"
:on-change="handleChangeBusinessList"
:class="{ disabledFbs: uploadDisabled }"
:on-preview="picturePreviewFbs"
:on-remove="handleRemoveElectricianImgList"
:disabled="isDetail"
>
<!-- 文件格式下载图片格式预览 -->
<div slot="file" slot-scope="{ file }">
<img v-if="isImage(file)" class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
<div v-else class="picture-card-container">
<img class="picture-card" :src="urlTemp" alt="" />
<p class="file-name">{{ file.name }}</p>
</div>
<span class="el-upload-list__item-actions">
<span v-if="updataIf(file)" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download" />
</span>
<span v-else class="el-upload-list__item-preview" @click="picturePreviewFbs(file)">
<i class="el-icon-zoom-in" />
</span>
<span
v-if="!isDetail"
class="el-upload-list__item-delete"
@click="handleRemoveElectricianImgList(file)"
>
<i class="el-icon-delete" />
</span>
</span>
</div>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5" v-if="!isDetail">
<el-button type="primary" plain icon="el-icon-document" size="mini" @click="handleSave">
{{ isEdit ? '提交' : '发起申请' }}
</el-button>
</el-col>
<el-col :span="1.5" v-if="!isDetail">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="addColumns">新增条目</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-arrow-left" size="mini" @click="handleApplyRecord">
领料记录查看
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">
导出工具器清单
</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="equipmentList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column align="center" label="序号" type="index" width="55" />
<el-table-column align="center" label="类型名称" prop="maTypeName" show-overflow-tooltip>
<template v-slot="scope">
<el-cascader
v-if="scope.row.isManual == 1"
v-model="scope.row.maTypeIds"
placeholder="请选择类型名称"
:options="maTypeList"
:props="{ label: 'typeName', value: 'typeId' }"
filterable
clearable
:disabled="isDetail"
@change="selectedIds => getTypeList(scope.row, selectedIds, scope.$index)"
></el-cascader>
<span v-else>{{ scope.row.maTypeName }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="规格型号" prop="typeName" show-overflow-tooltip>
<template v-slot="scope">
<el-select
v-if="scope.row.isManual == 1"
v-model="scope.row.typeId"
clearable
filterable
placeholder="请选择规格型号"
:disabled="isDetail"
@change="val => changeTypeName(scope.row, val, getSelectedItemName(val, scope.row))"
>
<el-option
v-for="item in scope.row.typeList"
:key="item.typeId"
:label="item.name"
:value="item.typeId"
></el-option>
</el-select>
<span v-else>{{ scope.row.typeName }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="计量单位" prop="unitName" />
<el-table-column label="预领数量" prop="preNum" align="center">
<template v-slot="scope">
<el-input
v-model="scope.row.preNum"
type="text"
style="width: 100%"
:disabled="!!(scope.row.alNum && scope.row.alNum != 0)"
:readonly="isDetail"
@input="handlePreNum(scope.row, $event, 'input')"
@blur="handlePreNum(scope.row, $event, 'blur')"
/>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="当前库存" prop="storageNum" /> -->
<!-- <el-table-column label="待出库数量" align="center" prop="alNum" show-overflow-tooltip /> -->
<el-table-column label="备注" prop="remark" align="center" label-width="500px">
<template v-slot="scope">
<el-input
v-model="scope.row.remark"
controls-position="right"
:readonly="isDetail"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center" v-if="!isDetail">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
style="color: red"
@click="handleDelete(scope.$index, scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="1.5" v-if="!isDetail">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="addColumns">新增条目</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-arrow-left" size="mini" @click="handleApplyRecord">
领料记录查看
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">
导出工具器清单
</el-button>
<el-col :span="6" :offset="0" v-if="isDetail">
<div class="right-title">
<div></div>
<div></div>
<div>流程记录</div>
</div>
<div class="process-record">
<el-steps :active="active" :space="120" direction="vertical">
<el-step v-for="step in auditingList" :key="step.id" :title="step.nodeName">
<template slot="description">
<div class="custom-description">
审核结果:
<el-tag size="mini" type="primary" v-if="step.isAccept === 0">待审批</el-tag>
<el-tag size="mini" type="success" v-if="step.isAccept === 1">已通过</el-tag>
<el-tag size="mini" type="danger" v-if="step.isAccept === 2">已驳回</el-tag>
</div>
<div class="node-info" v-if="step.auditBy">
审核人:
{{ step.auditBy }}
</div>
<div class="node-info" v-if="step.createTime">
审核时间:
{{ step.createTime }}
</div>
<div class="node-info" v-if="step.remark">
审核意见:
{{ step.remark }}
</div>
</template>
</el-step>
</el-steps>
</div>
</el-col>
</el-row>
<el-table v-loading="loading" :data="equipmentList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column align="center" label="序号" type="index" width="55" />
<el-table-column align="center" label="类型名称" prop="maTypeName" show-overflow-tooltip>
<template v-slot="scope">
<el-cascader
v-if="scope.row.isManual == 1"
v-model="scope.row.maTypeIds"
placeholder="请选择类型名称"
:options="maTypeList"
:props="{ label: 'typeName', value: 'typeId' }"
filterable
clearable
:disabled="isDetail"
@change="selectedIds => getTypeList(scope.row, selectedIds, scope.$index)"
></el-cascader>
<span v-else>{{ scope.row.maTypeName }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="规格型号" prop="typeName" show-overflow-tooltip>
<template v-slot="scope">
<el-select
v-if="scope.row.isManual == 1"
v-model="scope.row.typeId"
clearable
filterable
placeholder="请选择规格型号"
:disabled="isDetail"
@change="val => changeTypeName(scope.row, val, getSelectedItemName(val, scope.row))"
>
<el-option
v-for="item in scope.row.typeList"
:key="item.typeId"
:label="item.name"
:value="item.typeId"
></el-option>
</el-select>
<span v-else>{{ scope.row.typeName }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="计量单位" prop="unitName" />
<el-table-column label="预领数量" prop="preNum" align="center">
<template v-slot="scope">
<el-input
v-model="scope.row.preNum"
type="text"
style="width: 100%"
:disabled="scope.row.alNum && scope.row.alNum != 0"
@input="handlePreNum(scope.row, $event, 'input')"
@blur="handlePreNum(scope.row, $event, 'blur')"
/>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="当前库存" prop="storageNum" /> -->
<!-- <el-table-column label="待出库数量" align="center" prop="alNum" show-overflow-tooltip /> -->
<el-table-column label="备注" prop="remark" align="center" label-width="500px">
<template v-slot="scope">
<el-input
v-model="scope.row.remark"
controls-position="right"
:disabled="isDetail"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center" v-if="!isDetail">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
style="color: red"
@click="handleDelete(scope.$index, scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 弹框 -->
<el-dialog title="领用申请" :visible.sync="dialogVisible" width="60%">
<el-form ref="dialogForm" :model="maForm" label-width="120px" inline>
@ -390,6 +436,7 @@ import {
getCode
} from '@/api/business/index'
import { getEquipmentThreeTypeThree, getMaTypeOpt } from '@/api/ma/base'
import { getAuditingDetailsApi } from '@/api/receive-apply/index.js'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@ -566,7 +613,10 @@ export default {
defaultImage: 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg',
tooltipTimeout: null,
pageTitle: '新增'
pageTitle: '新增',
auditingList: [],
active: 1,
taskId: ''
}
},
computed: {
@ -625,6 +675,8 @@ export default {
// const obj = Object.assign({}, this.$route, { title: '' })
// this.$tab.updatePage(obj)
} else if (this.$route.query.type == 'detail') {
this.taskId = this.$route.query.taskId
this.getLeaseTaskDetailFun()
// this.isEdit = false
// this.isDetail = true
// this.id = this.$route.query.id
@ -651,11 +703,18 @@ export default {
console.log(this.$route.query, 'this.$route.query')
},
methods: {
//
async getLeaseTaskDetailFun() {
const { rows: result } = await getAuditingDetailsApi({ taskId: this.taskId })
this.auditingList = result
console.log('审核列表数据:', this.auditingList)
},
handlePreNum(row, val, type) {
if (type === 'input') {
const reg = row.unitValue == 1
? val.replace(/[^\d.]/g, '') //
: val.replace(/[^\d]/g, '') //
const reg =
row.unitValue == 1
? val.replace(/[^\d.]/g, '') //
: val.replace(/[^\d]/g, '') //
row.preNum = reg
} else if (type === 'blur') {
if (row.preNum !== '') {
@ -1542,4 +1601,52 @@ export default {
max-width: 250px;
color: white;
}
.process-record {
margin-top: 20px;
// height: 60vh;
}
.btn-container {
margin-top: 10px;
display: flex;
justify-content: space-around;
}
::v-deep .el-step__icon.is-text {
background-color: #19a4a0;
color: #19a4a0;
border: none;
width: 16px;
height: 16px;
}
::v-deep .el-step.is-vertical .el-step__line {
width: 2px;
top: 26px;
bottom: 8px;
left: 7px;
}
::v-deep .el-step__title.is-finish {
font-weight: bold;
color: #303133;
font-size: 16px;
}
::v-deep .el-step__title.is-wait {
font-weight: bold;
color: #303133;
font-size: 16px;
}
.custom-description {
padding: 8px 0 8px 20px;
color: #666;
}
.node-info {
// padding: 2px 0;
padding-left: 20px;
color: #666;
letter-spacing: 1px;
}
</style>

View File

@ -376,7 +376,7 @@ export default {
console.log('编辑', row)
let params = {}
if (type === 1) {
params = { type: 'detail', id: row.id }
params = { type: 'detail', id: row.id, taskId: row.taskId }
} else {
params = { type: 'edit', id: row.id }
}

View File

@ -351,7 +351,7 @@
<div class="uploadImg">
<div id="qrcode" class="qrcode" ref="codeItem"></div>
</div>
<div class="boxCode">二维码编号{{ rowObj.qrCode }}</div>
<div class="boxCode">设备编号{{ rowObj.maCode }}</div>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="downloadCode"> </el-button>