<template>
|
<a-card :bordered="false">
|
<!-- 查询区域 -->
|
<div class="table-page-search-wrapper">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-row :gutter="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="关键设备标识">
|
<j-dict-select-tag dict-code="equipment_importance" placeholder="请选择关键设备标识"
|
v-model="queryParam.equipmentImportance"/>
|
</a-form-item>
|
</a-col>
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="统一编码">
|
<a-input placeholder="请输入统一编码模糊查询" v-model="queryParam.equipmentCode"></a-input>
|
</a-form-item>
|
</a-col>
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="设备名称">
|
<a-input placeholder="请输入设备名称模糊查询" v-model="queryParam.equipmentName"></a-input>
|
</a-form-item>
|
</a-col>
|
<template v-if="toggleSearchStatus">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="所属分类">
|
<j-dict-select-tag dict-code="equipment_category" placeholder="请选择设备所属分类"
|
v-model="queryParam.equipmentCategory"/>
|
</a-form-item>
|
</a-col>
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="使用部门">
|
<a-tree-select v-model="queryParam.factoryOrgCode" style="width: 100%" :tree-data="productionTreeData"
|
show-search :replaceFields="{key:'orgCode',value:'orgCode'}"
|
treeNodeFilterProp="title" searchPlaceholder="请输入关键字搜索"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" placeholder="请选择使用部门"
|
allow-clear tree-default-expand-all>
|
</a-tree-select>
|
</a-form-item>
|
</a-col>
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-form-item label="维修班组">
|
<a-tree-select v-model="queryParam.repairDepartOrgCode" style="width: 100%"
|
show-search :tree-data="repairDepartTreeData" treeNodeFilterProp="title"
|
:replaceFields="{key:'orgCode',value:'orgCode'}" searchPlaceholder="请输入关键字搜索"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" placeholder="请选择维修班组"
|
allow-clear tree-default-expand-all>
|
</a-tree-select>
|
</a-form-item>
|
</a-col>
|
</template>
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
<a @click="handleToggleSearch" style="margin-left: 8px">
|
{{ toggleSearchStatus ? '收起' : '展开' }}
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
</a>
|
</span>
|
</a-col>
|
|
</a-row>
|
</a-form>
|
</div>
|
|
<!-- 操作按钮区域 -->
|
<div class="table-operator">
|
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
|
<a-button type="primary" icon="download" @click="handleExportXls('设备台账')">导出</a-button>
|
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
|
@change="handleImportExcel">
|
<a-button type="primary" icon="import">导入</a-button>
|
</a-upload>
|
<a-button type="primary" icon="download" @click="handleTemplateXlsDownload">导入模板下载</a-button>
|
<a-dropdown v-if="selectedRowKeys.length > 0">
|
<a-menu slot="overlay">
|
<a-menu-item key="2" @click="batchDel">
|
<a-icon type="delete"/>
|
删除
|
</a-menu-item>
|
</a-menu>
|
<a-button style="margin-left: 8px"> 批量操作
|
<a-icon type="down"/>
|
</a-button>
|
</a-dropdown>
|
</div>
|
|
<!-- table区域-begin -->
|
<div>
|
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
|
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
|
style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
|
<a style="margin-left: 24px" @click="onSelectChange([])">清空</a>
|
</div>
|
<a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
|
:pagination="ipagination" :loading="loading" :scroll="{ x: 'max-content' }"
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange">
|
<!--统一编码-->
|
<template slot="equipmentCode" slot-scope="text,record">
|
<a href="#" @click="handleDetail(record)" style="display: inline-block;height: 100%">{{text}}</a>
|
</template>
|
|
<!--使用部门-->
|
<template slot="factoryOrgCode" slot-scope="text,record">
|
{{[record.gsfactoryOrgCode_dictText,record.zxfactoryOrgCode_dictText,record.gqfactoryOrgCode_dictText,record.factoryOrgCode_dictText].filter(item=>item).join('/')}}
|
</template>
|
|
<!--安装位置-->
|
<template slot="installationPosition" slot-scope="text">
|
<j-ellipsis :value="text" :length="5"/>
|
</template>
|
|
<!--操作系统-->
|
<template slot="operationSystem" slot-scope="text">
|
<a-switch checked-children="是" un-checked-children="否" :checked="Boolean(+text)" disabled/>
|
</template>
|
|
<!--灭火器-->
|
<template slot="fireExtinguisher" slot-scope="text">
|
<a-switch checked-children="是" un-checked-children="否" :checked="Boolean(+text)" disabled/>
|
</template>
|
|
<!--真空热处理炉-->
|
<template slot="trueHeatTreatment" slot-scope="text">
|
<a-switch checked-children="是" un-checked-children="否" :checked="Boolean(+text)" disabled/>
|
</template>
|
|
<!--资产制造商-->
|
<template slot="manufacturingEnterprise" slot-scope="text">
|
<j-ellipsis :value="text" :length="8"/>
|
</template>
|
|
<span slot="action" slot-scope="text, record">
|
<a @click.stop="handleEdit(record)">编辑</a>
|
|
<a-divider type="vertical"/>
|
|
<a-dropdown>
|
<a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
|
<a-menu slot="overlay">
|
<a-menu-item>
|
<a href="javascript:;" @click="handleOpenResumeDrawer(record)">履历</a>
|
</a-menu-item>
|
<a-menu-item>
|
<a href="javascript:;" @click="handleDetail(record)">详情</a>
|
</a-menu-item>
|
<a-menu-item>
|
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
|
<a>删除</a>
|
</a-popconfirm>
|
</a-menu-item>
|
</a-menu>
|
</a-dropdown>
|
</span>
|
|
</a-table>
|
</div>
|
<!-- table区域-end -->
|
<!-- 表单区域 -->
|
<eamEquipment-modal ref="modalForm" @ok="modalFormOk" :productionTreeData="productionTreeData"
|
:repairDepartTreeData="repairDepartTreeData"/>
|
<!--履历弹窗-->
|
<resume-drawer ref="resumeDrawerRef" :currentTableRowRecord="currentTableRowRecord"/>
|
</a-card>
|
</template>
|
|
<script>
|
import EamEquipmentModal from './modules/EamEquipmentModal.vue'
|
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
|
import { getAction, templateXlsDownload } from '@api/manage'
|
import ResumeDrawer from '@views/eam/equipment/modules/ResumeDrawer.vue'
|
|
export default {
|
name: 'EquipmentLedger',
|
mixins: [JeecgListMixin],
|
components: {
|
ResumeDrawer,
|
EamEquipmentModal
|
},
|
data() {
|
return {
|
description: '设备台账管理页面',
|
// 表头
|
columns: [
|
{
|
title: '#',
|
dataIndex: '',
|
key: 'rowIndex',
|
width: 60,
|
align: 'center',
|
customRender: function(t, r, index) {
|
return parseInt(index) + 1
|
},
|
fixed: 'left'
|
},
|
{
|
title: '关键设备标识',
|
align: 'center',
|
dataIndex: 'equipmentImportance',
|
fixed: 'left'
|
},
|
{
|
title: '统一编码',
|
align: 'center',
|
dataIndex: 'equipmentCode',
|
scopedSlots: { customRender: 'equipmentCode' },
|
fixed: 'left'
|
},
|
{
|
title: '设备名称',
|
align: 'center',
|
dataIndex: 'equipmentName',
|
fixed: 'left'
|
},
|
{
|
title: '型号',
|
align: 'center',
|
dataIndex: 'equipmentModel',
|
fixed: 'left'
|
},
|
{
|
title: '使用部门',
|
align: 'center',
|
dataIndex: 'factoryOrgCode',
|
scopedSlots: { customRender: 'factoryOrgCode' }
|
},
|
{
|
title: '所属分类',
|
align: 'center',
|
dataIndex: 'equipmentCategory_dictText'
|
},
|
{
|
title: '保养状态',
|
align: 'center',
|
dataIndex: 'maintenanceStatus_dictText'
|
},
|
{
|
title: '维修状态',
|
align: 'center',
|
dataIndex: 'repairStatus_dictText'
|
},
|
{
|
title: '技术状态',
|
align: 'center',
|
dataIndex: 'technologyStatus_dictText'
|
},
|
{
|
title: 'ABC标识',
|
align: 'center',
|
dataIndex: 'abcFlag'
|
},
|
{
|
title: '维修班组',
|
align: 'center',
|
dataIndex: 'repairDepartOrgCode_dictText'
|
},
|
{
|
title: '安全配置',
|
align: 'center',
|
dataIndex: 'securityConfiguration'
|
},
|
{
|
title: '冷却系统',
|
align: 'center',
|
dataIndex: 'coolSystem_dictText'
|
},
|
{
|
title: '灭火器',
|
align: 'center',
|
dataIndex: 'fireExtinguisher',
|
scopedSlots: { customRender: 'fireExtinguisher' }
|
},
|
{
|
title: '灭火器有效期',
|
align: 'center',
|
dataIndex: 'fireExtinguisherExpirationDate'
|
},
|
{
|
title: '操作系统',
|
align: 'center',
|
dataIndex: 'operationSystem',
|
scopedSlots: { customRender: 'operationSystem' }
|
},
|
{
|
title: '系统',
|
align: 'center',
|
dataIndex: 'system'
|
},
|
{
|
title: '真空热处理炉',
|
align: 'center',
|
dataIndex: 'trueHeatTreatment',
|
scopedSlots: { customRender: 'trueHeatTreatment' }
|
},
|
{
|
title: '设备端口',
|
align: 'center',
|
dataIndex: 'equipmentPort'
|
},
|
{
|
title: '坐标数量',
|
align: 'center',
|
dataIndex: 'coordinateNum'
|
},
|
{
|
title: '重量',
|
align: 'center',
|
dataIndex: 'equipmentWeight'
|
},
|
{
|
title: '重量计量单位',
|
align: 'center',
|
dataIndex: 'weightUnit'
|
},
|
{
|
title: '功能位置',
|
align: 'center',
|
dataIndex: 'functionalLocation'
|
},
|
{
|
title: '安装位置',
|
align: 'center',
|
dataIndex: 'installationPosition',
|
scopedSlots: { customRender: 'installationPosition' }
|
},
|
{
|
title: '出厂日期',
|
align: 'center',
|
dataIndex: 'leaveFactoryDate'
|
},
|
{
|
title: '立项卡号',
|
align: 'center',
|
dataIndex: 'cardNumber'
|
},
|
{
|
title: '资金来源',
|
align: 'center',
|
dataIndex: 'fundingSource'
|
},
|
{
|
title: '验收日期',
|
align: 'center',
|
dataIndex: 'acceptanceCheckDate'
|
},
|
{
|
title: '出厂编号',
|
align: 'center',
|
dataIndex: 'factoryNumber'
|
},
|
{
|
title: '资产制造商',
|
align: 'center',
|
dataIndex: 'manufacturingEnterprise',
|
scopedSlots: { customRender: 'manufacturingEnterprise' }
|
},
|
{
|
title: '资产来源国家',
|
align: 'center',
|
dataIndex: 'originCountry'
|
},
|
{
|
title: '设备规格',
|
align: 'center',
|
dataIndex: 'equipmentSpecification'
|
},
|
{
|
title: '总功率',
|
align: 'center',
|
dataIndex: 'equipmentPower'
|
},
|
{
|
title: '质保开始日期',
|
align: 'center',
|
dataIndex: 'warrantyStartDate'
|
},
|
{
|
title: '质保结束日期',
|
align: 'center',
|
dataIndex: 'warrantyEndDate'
|
},
|
{
|
title: '资产状态',
|
align: 'center',
|
dataIndex: 'assetStatus_dictText'
|
},
|
{
|
title: '本次三保日期',
|
align: 'center',
|
dataIndex: 'latestThirdMaintenance'
|
},
|
{
|
title: '下次三保日期',
|
align: 'center',
|
dataIndex: 'nextThirdMaintenance'
|
},
|
{
|
title: '三保周期(年)',
|
align: 'center',
|
dataIndex: 'thirdMaintenancePeriod'
|
},
|
{
|
title: '本次技术鉴定日期',
|
align: 'center',
|
dataIndex: 'latestTechnologyCheck'
|
},
|
{
|
title: '下次技术鉴定日期',
|
align: 'center',
|
dataIndex: 'nextTechnologyCheck'
|
},
|
{
|
title: '技术鉴定周期(年)',
|
align: 'center',
|
dataIndex: 'technologyCheckPeriod'
|
},
|
{
|
title: '操作',
|
dataIndex: 'action',
|
align: 'center',
|
width: 150,
|
scopedSlots: { customRender: 'action' },
|
fixed: 'right'
|
}
|
],
|
url: {
|
list: '/eam/equipment/list',
|
delete: '/eam/equipment/delete',
|
deleteBatch: '/eam/equipment/deleteBatch',
|
exportXlsUrl: 'eam/equipment/exportXls',
|
importExcelUrl: 'eam/equipment/importExcel',
|
getProductionTreeList: '/eam/BaseFactory/queryTreeList',
|
repairDepartTreeList: '/eam/eamBaseRepairDepart/queryTreeList',
|
templateXlsDownloadUrl: '导入模板/设备台账导入模板.xls'
|
},
|
currentTableRowRecord: {},
|
productionTreeData: [],
|
repairDepartTreeData: []
|
}
|
},
|
computed: {
|
importExcelUrl: function() {
|
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
|
}
|
},
|
created() {
|
this.getProductionTreeDataByApi()
|
this.getRepairDepartTreeDataByApi()
|
},
|
methods: {
|
// 获取使用部门树
|
getProductionTreeDataByApi() {
|
getAction(this.url.getProductionTreeList)
|
.then(res => {
|
if (res.success) {
|
this.productionTreeData = res.result
|
} else {
|
this.$notification.warning({
|
message: '消息',
|
description: res.message
|
})
|
}
|
})
|
},
|
|
// 获取维修班组树
|
getRepairDepartTreeDataByApi() {
|
getAction(this.url.repairDepartTreeList)
|
.then(res => {
|
if (res.success) {
|
this.repairDepartTreeData = res.result
|
} else {
|
this.$notification.warning({
|
message: '消息',
|
description: res.message
|
})
|
}
|
})
|
},
|
|
/**
|
* 开启履历抽屉
|
* @param record 表格行信息
|
*/
|
handleOpenResumeDrawer(record) {
|
this.currentTableRowRecord = Object.assign({}, record)
|
this.$refs.resumeDrawerRef.title = '设备履历' + `(${record.equipmentCode})`
|
this.$refs.resumeDrawerRef.dataSource = []
|
this.$refs.resumeDrawerRef.visible = true
|
this.$nextTick(() => this.$refs.resumeDrawerRef.getEquipmentResumeByApi())
|
},
|
|
handleTemplateXlsDownload() {
|
templateXlsDownload(this.url.templateXlsDownloadUrl)
|
}
|
}
|
}
|
</script>
|