765 lines
21 KiB
Vue
765 lines
21 KiB
Vue
|
|
<template>
|
|||
|
|
<section class="realtime-wrapper">
|
|||
|
|
<el-form id="searchForm" :model="form">
|
|||
|
|
<el-row :gutter="5" class="search-row">
|
|||
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
|
|||
|
|
<el-form-item :label="$t('alarm.type') + ':'" label-width="90px">
|
|||
|
|
<el-select
|
|||
|
|
v-model="form.type"
|
|||
|
|
:placeholder="$t('alarm.placeSelectType')"
|
|||
|
|
style="width: 100%"
|
|||
|
|
filterable
|
|||
|
|
@change="SelectType"
|
|||
|
|
>
|
|||
|
|
<el-option
|
|||
|
|
v-for="item in TypeOptions"
|
|||
|
|
:key="item.typeId"
|
|||
|
|
:label="item.name"
|
|||
|
|
:value="item.deviceType"
|
|||
|
|
/>
|
|||
|
|
</el-select>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
|
|||
|
|
<el-form-item :label="$t('surveillance.name') + ':'" label-width="90px">
|
|||
|
|
<el-input
|
|||
|
|
v-model="form.name"
|
|||
|
|
maxlength="30"
|
|||
|
|
:placeholder="$t('surveillance.placeholderInput')"
|
|||
|
|
class="input-box"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
|
|||
|
|
<el-col :xs="24" :sm="10" :md="10" :lg="4" :xl="4">
|
|||
|
|
<el-button
|
|||
|
|
type="primary"
|
|||
|
|
icon="el-icon-search"
|
|||
|
|
:loading="searchLoading"
|
|||
|
|
@click="on_refresh"
|
|||
|
|
>{{ $t('surveillance.query') }}</el-button>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :xs="24" :sm="14" :md="14" :lg="4" :xl="4" style="display: flex;justify-content: end;">
|
|||
|
|
|
|||
|
|
<el-button
|
|||
|
|
type="primary"
|
|||
|
|
icon="el-icon-refresh"
|
|||
|
|
:loading="SyncLoading"
|
|||
|
|
@click="handleSynchronous"
|
|||
|
|
>{{ $t('alarm.synchronous') }}</el-button>
|
|||
|
|
<!-- <el-button
|
|||
|
|
type="primary"
|
|||
|
|
icon="el-icon-plus"
|
|||
|
|
:loading="addLoading"
|
|||
|
|
@click="handleAdd"
|
|||
|
|
>新增</el-button> -->
|
|||
|
|
<el-upload
|
|||
|
|
class="upload-demo"
|
|||
|
|
:action="uploadUrl"
|
|||
|
|
:headers="headers"
|
|||
|
|
:show-file-list="false"
|
|||
|
|
:file-list="fileList"
|
|||
|
|
:on-success="handleOnSuccess"
|
|||
|
|
:on-error="handleOnError"
|
|||
|
|
/>
|
|||
|
|
<!-- <el-button
|
|||
|
|
type="primary"
|
|||
|
|
:loading="exportLoading"
|
|||
|
|
icon="el-icon-upload2"
|
|||
|
|
class="reset-btn"
|
|||
|
|
>导入</el-button>
|
|||
|
|
</el-upload>
|
|||
|
|
|
|||
|
|
<el-button
|
|||
|
|
type="primary"
|
|||
|
|
:loading="uploadLoading"
|
|||
|
|
class="reset-btn"
|
|||
|
|
icon="el-icon-download"
|
|||
|
|
@click="handleExport"
|
|||
|
|
>导出</el-button> -->
|
|||
|
|
<el-button
|
|||
|
|
type="danger"
|
|||
|
|
icon="el-icon-delete"
|
|||
|
|
:loading="deleteLoading"
|
|||
|
|
@click="handleDelete"
|
|||
|
|
>{{ $t('alarm.delete') }}</el-button>
|
|||
|
|
|
|||
|
|
</el-col>
|
|||
|
|
|
|||
|
|
</el-row>
|
|||
|
|
</el-form>
|
|||
|
|
|
|||
|
|
<div class="table-wrapper">
|
|||
|
|
<el-table
|
|||
|
|
ref="table_data"
|
|||
|
|
v-loading="load_data"
|
|||
|
|
header-align="center"
|
|||
|
|
row-key="id"
|
|||
|
|
:height="$setAutoTableHeight(46,searchHeight)"
|
|||
|
|
:data="table_data"
|
|||
|
|
style="width: 100%"
|
|||
|
|
@selection-change="handleSelectionChange"
|
|||
|
|
>
|
|||
|
|
<el-table-column
|
|||
|
|
type="selection"
|
|||
|
|
width="55"
|
|||
|
|
:reserve-selection="true"
|
|||
|
|
/>
|
|||
|
|
<el-table-column
|
|||
|
|
prop="deviceName"
|
|||
|
|
:label="$t('alarm.deviceName')"
|
|||
|
|
show-overflow-tooltip
|
|||
|
|
/>
|
|||
|
|
<el-table-column prop="deviceType" :label="$t('alarm.deviceType')" />
|
|||
|
|
<el-table-column prop="colName" :label="$t('alarm.cName')" />
|
|||
|
|
<el-table-column prop="col" :label="$t('alarm.eName')" />
|
|||
|
|
<el-table-column prop="info0" :label="$t('alarm.recMessage')" />
|
|||
|
|
<el-table-column prop="info1" :label="$t('alarm.genMessage')" />
|
|||
|
|
<el-table-column :label="$t('alarm.operation')" align="center" width="200">
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<div class="table-column-btn">
|
|||
|
|
<el-button
|
|||
|
|
type="text"
|
|||
|
|
size="mini"
|
|||
|
|
icon="el-icon-edit"
|
|||
|
|
@click="handleEdit(scope.row)"
|
|||
|
|
>{{ $t('alarm.edit') }}</el-button>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
</el-table>
|
|||
|
|
<Pagingbar>
|
|||
|
|
<div slot="page">
|
|||
|
|
<el-pagination
|
|||
|
|
:current-page="currentPage"
|
|||
|
|
:page-size="pageSize"
|
|||
|
|
:page-sizes="pageSizes"
|
|||
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|||
|
|
:total="total"
|
|||
|
|
@current-change="handleCurrentChange"
|
|||
|
|
@size-change="handleSizeChange"
|
|||
|
|
/>
|
|||
|
|
</div>
|
|||
|
|
</Pagingbar>
|
|||
|
|
</div>
|
|||
|
|
<el-dialog
|
|||
|
|
:append-to-body="false"
|
|||
|
|
:visible.sync="dialogVisible"
|
|||
|
|
width="50%"
|
|||
|
|
:title="dialogTitle"
|
|||
|
|
center
|
|||
|
|
@close="onCancel"
|
|||
|
|
>
|
|||
|
|
<el-row class="top-search">
|
|||
|
|
<el-col :span="24" :offset="0">
|
|||
|
|
<el-form
|
|||
|
|
ref="formModel"
|
|||
|
|
:model="formModel"
|
|||
|
|
label-width="135px"
|
|||
|
|
label-position="right"
|
|||
|
|
>
|
|||
|
|
<el-row :gutter="20">
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item
|
|||
|
|
v-if="dialogType === 'add'"
|
|||
|
|
:label="$t('alarm.cName')"
|
|||
|
|
prop="colName"
|
|||
|
|
>
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.colName"
|
|||
|
|
:placeholder="$t('alarm.placeholderCName')"
|
|||
|
|
class="input-with-select"
|
|||
|
|
readonly
|
|||
|
|
@focus="openTableDialog"
|
|||
|
|
>
|
|||
|
|
<el-button
|
|||
|
|
slot="append"
|
|||
|
|
icon="el-icon-search"
|
|||
|
|
:loading="table_dialog_loading"
|
|||
|
|
@click="openTableDialog"
|
|||
|
|
/>
|
|||
|
|
</el-input>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item v-else :label="$t('alarm.cName')" prop="colName">
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.colName"
|
|||
|
|
:placeholder="$t('alarm.placeholderCName')"
|
|||
|
|
class="input-with-select"
|
|||
|
|
readonly
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item :label="$t('alarm.eName')" prop="col">
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.col"
|
|||
|
|
readonly
|
|||
|
|
/></el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row :gutter="20">
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item :label="$t('alarm.deviceTypeName')" prop="deviceType">
|
|||
|
|
<el-input v-model="formModel.deviceType" readonly />
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item :label="$t('alarm.type')" prop="sensType">
|
|||
|
|
<el-input
|
|||
|
|
v-model="sensType"
|
|||
|
|
readonly
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row :gutter="20">
|
|||
|
|
<el-col :span="24">
|
|||
|
|
<el-form-item label-width="195px" :label="$t('alarm.recMessage')" prop="info0">
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.info0"
|
|||
|
|
:disabled="formModel.sensType !== 1"
|
|||
|
|
:placeholder="$t('alarm.placeholderRecMessage')"
|
|||
|
|
maxlength="200"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="24">
|
|||
|
|
<el-form-item label-width="195px" :label="$t('alarm.genMessage')" prop="info1">
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.info1"
|
|||
|
|
:disabled="formModel.sensType !== 1"
|
|||
|
|
:placeholder="$t('alarm.placeholderGenMessage')"
|
|||
|
|
maxlength="200"
|
|||
|
|
/></el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
</el-form>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
<div slot="footer" class="dialog-footer">
|
|||
|
|
<el-button plain @click="onCancel"> {{ $t('alarm.cancel') }} </el-button>
|
|||
|
|
<el-button type="primary" @click="handleTosubmit"> {{ $t('alarm.sure') }} </el-button>
|
|||
|
|
</div>
|
|||
|
|
</el-dialog>
|
|||
|
|
|
|||
|
|
<el-dialog
|
|||
|
|
:append-to-body="false"
|
|||
|
|
:visible.sync="tableDialog"
|
|||
|
|
width="50%"
|
|||
|
|
:title="$t('alarm.selectName')"
|
|||
|
|
center
|
|||
|
|
@close="onTableCancel"
|
|||
|
|
>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col class="tableCol" :span="12" style="color: #fff">
|
|||
|
|
{{ $t('alarm.name') }}:
|
|||
|
|
<el-input
|
|||
|
|
v-model="formModel.name"
|
|||
|
|
maxlength="30"
|
|||
|
|
:placeholder="$t('alarm.placeholderCName')"
|
|||
|
|
style="width: 70%"
|
|||
|
|
@blur="blurChangeTable"
|
|||
|
|
/>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
<el-table
|
|||
|
|
ref="dialog_table_data"
|
|||
|
|
:key="dialog_table_key"
|
|||
|
|
v-loading="dialog_load_data"
|
|||
|
|
header-align="center"
|
|||
|
|
:height="$setTableHeight(300)"
|
|||
|
|
row-key="id"
|
|||
|
|
:data="dialog_table_data"
|
|||
|
|
style="width: 100%"
|
|||
|
|
@selection-change="handleDialogSelectionChange"
|
|||
|
|
>
|
|||
|
|
<el-table-column
|
|||
|
|
:reserve-selection="true"
|
|||
|
|
type="selection"
|
|||
|
|
width="55"
|
|||
|
|
/>
|
|||
|
|
<el-table-column
|
|||
|
|
prop="colName"
|
|||
|
|
:label="$t('alarm.cName')"
|
|||
|
|
show-overflow-tooltip
|
|||
|
|
/>
|
|||
|
|
|
|||
|
|
<el-table-column prop="col" :label="$t('alarm.eName')" />
|
|||
|
|
<el-table-column prop="deviceTypeName" :label="$t('alarm.deviceTypeName')" />
|
|||
|
|
</el-table>
|
|||
|
|
<Pagingbar>
|
|||
|
|
<div slot="page">
|
|||
|
|
<el-pagination
|
|||
|
|
:current-page="col_currentPage"
|
|||
|
|
:page-size="col_pageSize"
|
|||
|
|
:page-sizes="col_pageSizes"
|
|||
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|||
|
|
:total="col_total"
|
|||
|
|
@current-change="col_handleCurrentChange"
|
|||
|
|
@size-change="col_handleSizeChange"
|
|||
|
|
/>
|
|||
|
|
</div>
|
|||
|
|
</Pagingbar>
|
|||
|
|
<div slot="footer" class="dialog-footer">
|
|||
|
|
<el-button plain @click="onTableCancel"> {{ $t('alarm.cancel') }} </el-button>
|
|||
|
|
<el-button type="primary" @click="handleTableTosubmit">
|
|||
|
|
{{ $t('alarm.sure') }}
|
|||
|
|
</el-button>
|
|||
|
|
</div>
|
|||
|
|
</el-dialog>
|
|||
|
|
|
|||
|
|
</section>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import { getToken } from '@/utils/auth'
|
|||
|
|
import { pageSize, pageSizes } from '@/config'
|
|||
|
|
import Pagingbar from '@/components/Pagingbar'
|
|||
|
|
import { handleDownExcel } from '@/utils'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
GetDeviceType,
|
|||
|
|
SyncDeviceColDefine,
|
|||
|
|
GetDeviceColDefinePage,
|
|||
|
|
UpdataDeviceColDefine,
|
|||
|
|
AddDeviceColDefine,
|
|||
|
|
DelDeviceColDefine,
|
|||
|
|
GetDeviceTypeCol
|
|||
|
|
} from '@/api/alarm/alarm-definition'
|
|||
|
|
export default {
|
|||
|
|
components: { Pagingbar },
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
form: {
|
|||
|
|
type: null,
|
|||
|
|
name: null
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
stationId: null,
|
|||
|
|
searchLoading: false,
|
|||
|
|
load_data: false,
|
|||
|
|
dialog_load_data: false,
|
|||
|
|
addLoading: false,
|
|||
|
|
exportLoading: false,
|
|||
|
|
uploadLoading: false,
|
|||
|
|
deleteLoading: false,
|
|||
|
|
table_data: [],
|
|||
|
|
dialog_table_data: [],
|
|||
|
|
TypeOptions: [],
|
|||
|
|
uploadUrl:
|
|||
|
|
process.env.VUE_APP_BASE_API + '/flow/deviceColDefine/importExcel',
|
|||
|
|
headers: {
|
|||
|
|
authorization: getToken(),
|
|||
|
|
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
|
|||
|
|
},
|
|||
|
|
paramsData: {},
|
|||
|
|
fileList: [],
|
|||
|
|
currentPage: 1,
|
|||
|
|
col_currentPage: 1,
|
|||
|
|
// 数据总条目
|
|||
|
|
total: 0,
|
|||
|
|
col_total: 0,
|
|||
|
|
// 每页显示多少条数据
|
|||
|
|
pageSize: pageSize,
|
|||
|
|
col_pageSize: pageSize,
|
|||
|
|
col_pageSizes: pageSizes,
|
|||
|
|
pageSizes: pageSizes,
|
|||
|
|
dialogVisible: false,
|
|||
|
|
tableDialog: false,
|
|||
|
|
dialogTitle: this.$t('alarm.addAlarmDefinition'),
|
|||
|
|
dialogType: 'add',
|
|||
|
|
formModel: {
|
|||
|
|
colName: null,
|
|||
|
|
col: null,
|
|||
|
|
deviceType: null,
|
|||
|
|
deviceName: null,
|
|||
|
|
info0: null,
|
|||
|
|
info1: null
|
|||
|
|
},
|
|||
|
|
table_dialog_loading: false,
|
|||
|
|
delIdList: [],
|
|||
|
|
selectDialogData: [],
|
|||
|
|
dialog_table_key: 0,
|
|||
|
|
SyncLoading: false
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
stations: function() {
|
|||
|
|
return this.$store.getters.stations || []
|
|||
|
|
},
|
|||
|
|
currentStation() {
|
|||
|
|
return this.$store.getters.currentStation || undefined
|
|||
|
|
},
|
|||
|
|
sensType() {
|
|||
|
|
if (this.formModel.sensType === 1) {
|
|||
|
|
return this.$t('alarm.yx')
|
|||
|
|
} else if (this.formModel.sensType === 2) {
|
|||
|
|
return this.$t('alarm.yc')
|
|||
|
|
} else {
|
|||
|
|
return this.$t('alarm.yk')
|
|||
|
|
}
|
|||
|
|
// return this.formModel.sensType === 1 ? '遥信' : '遥测'
|
|||
|
|
},
|
|||
|
|
searchHeight() {
|
|||
|
|
return this.$store.getters.searchHeight
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
currentStation: {
|
|||
|
|
async handler(val) {
|
|||
|
|
if (val && val.id) {
|
|||
|
|
this.stationId = val.id
|
|||
|
|
this.form.type = null
|
|||
|
|
this.table_data = []
|
|||
|
|
this.form.name = ''
|
|||
|
|
this.currentPage = 1
|
|||
|
|
this.TypeOptions = []
|
|||
|
|
this.total = 0
|
|||
|
|
this.delIdList = []
|
|||
|
|
|
|||
|
|
this.col_currentPage = 1
|
|||
|
|
this.GetDeviceType()
|
|||
|
|
if (this.$refs.table_data) {
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
this.$refs.table_data.clearSelection()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
deep: true,
|
|||
|
|
immediate: true
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
created() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
|
|||
|
|
async GetDeviceType() {
|
|||
|
|
const { data } = await GetDeviceType({ stationId: this.stationId })
|
|||
|
|
this.TypeOptions = data
|
|||
|
|
this.form.type = data[0].deviceType
|
|||
|
|
this.get_table_data()
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
async GetDeviceTypeCol() {
|
|||
|
|
const params = {
|
|||
|
|
stationId: this.stationId,
|
|||
|
|
deviceType: this.form.type,
|
|||
|
|
name: this.formModel.name,
|
|||
|
|
pageNum: this.col_currentPage,
|
|||
|
|
pageSize: this.col_pageSize
|
|||
|
|
}
|
|||
|
|
this.dialog_load_data = true
|
|||
|
|
try {
|
|||
|
|
const res = await GetDeviceTypeCol(params)
|
|||
|
|
this.dialog_table_data = res.data.list
|
|||
|
|
this.col_total = res.data.totalRows
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error)
|
|||
|
|
} finally {
|
|||
|
|
this.dialog_load_data = false
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
blurChangeTable() {
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
// 查询
|
|||
|
|
on_refresh() {
|
|||
|
|
if (this.TypeOptions.length > 0) {
|
|||
|
|
this.currentPage = 1
|
|||
|
|
this.get_table_data()
|
|||
|
|
this.delIdList = []
|
|||
|
|
this.$refs.table_data.clearSelection()
|
|||
|
|
} else {
|
|||
|
|
return this.$message.error(this.$t('alarm.noDevice'))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
async get_table_data() {
|
|||
|
|
this.load_data = true
|
|||
|
|
try {
|
|||
|
|
const res = await GetDeviceColDefinePage({
|
|||
|
|
deviceType: this.form.type,
|
|||
|
|
pageNum: this.currentPage,
|
|||
|
|
pageSize: this.pageSize,
|
|||
|
|
name: this.form.name
|
|||
|
|
})
|
|||
|
|
this.table_data = res.data.list
|
|||
|
|
this.total = res.data.totalRows
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error);
|
|||
|
|
} finally {
|
|||
|
|
this.load_data = false
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 编辑
|
|||
|
|
handleEdit(row) {
|
|||
|
|
this.dialogVisible = true
|
|||
|
|
this.dialogTitle = this.$t('alarm.editAlarmDefinition')
|
|||
|
|
this.dialogType = 'edit'
|
|||
|
|
this.formModel = Object.assign({}, row)
|
|||
|
|
},
|
|||
|
|
// 选择类型
|
|||
|
|
SelectType() {
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 同步
|
|||
|
|
async handleSynchronous() {
|
|||
|
|
if (this.TypeOptions.length) {
|
|||
|
|
this.SyncLoading = true
|
|||
|
|
try {
|
|||
|
|
await SyncDeviceColDefine({
|
|||
|
|
stationId: this.stationId,
|
|||
|
|
deviceType: this.form.type
|
|||
|
|
})
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.tip'),
|
|||
|
|
message: this.$t('alarm.synchronousSuccess'),
|
|||
|
|
type: 'success',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error)
|
|||
|
|
} finally {
|
|||
|
|
this.SyncLoading = false
|
|||
|
|
this.get_table_data()
|
|||
|
|
this.delIdList = []
|
|||
|
|
this.$refs.table_data.clearSelection()
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return this.$message.error(this.$t('alarm.noDevice'))
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 新增
|
|||
|
|
handleAdd() {
|
|||
|
|
this.dialogVisible = true
|
|||
|
|
this.dialogType = 'add'
|
|||
|
|
this.dialogTitle = this.$t('alarm.addAlarmDefinition')
|
|||
|
|
},
|
|||
|
|
// 选择表格数据
|
|||
|
|
handleSelectionChange(val) {
|
|||
|
|
this.delIdList = []
|
|||
|
|
val.forEach((el) => {
|
|||
|
|
this.delIdList.push(el.id)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
// 选取弹出框表格数据
|
|||
|
|
handleDialogSelectionChange(val) {
|
|||
|
|
this.selectDialogData = val
|
|||
|
|
if (val.length > 1) {
|
|||
|
|
this.$refs.dialog_table_data.clearSelection()
|
|||
|
|
this.$refs.dialog_table_data.toggleRowSelection(val.pop())
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 删除
|
|||
|
|
handleDelete() {
|
|||
|
|
if (this.delIdList.length) {
|
|||
|
|
this.$confirm(this.$t('alarm.deleteAlarmDefinition'), this.$t('alarm.tip'), {
|
|||
|
|
confirmButtonText: this.$t('alarm.sure'),
|
|||
|
|
cancelButtonText: this.$t('alarm.cancel'),
|
|||
|
|
type: 'warning',
|
|||
|
|
showClose: false,
|
|||
|
|
center: true
|
|||
|
|
}).then(async() => {
|
|||
|
|
this.deleteLoading = true
|
|||
|
|
try {
|
|||
|
|
await DelDeviceColDefine({ idList: this.delIdList })
|
|||
|
|
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.tip'),
|
|||
|
|
message: this.$t('alarm.deleteSuccess'),
|
|||
|
|
type: 'success',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error)
|
|||
|
|
} finally {
|
|||
|
|
this.delIdList = []
|
|||
|
|
this.deleteLoading = false
|
|||
|
|
this.$refs.table_data.clearSelection()
|
|||
|
|
this.get_table_data()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.tip'),
|
|||
|
|
message: this.$t('alarm.selectDeleteDefinition'),
|
|||
|
|
type: 'warning',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 上传成功
|
|||
|
|
handleOnSuccess(file, fileList) {
|
|||
|
|
if (file.code === 200) {
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.importFileSuccess'),
|
|||
|
|
message: file.msg,
|
|||
|
|
type: 'success',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
this.getAllCurveTemp()
|
|||
|
|
} else {
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.importFileError'),
|
|||
|
|
message: file.msg,
|
|||
|
|
type: 'error',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 上传失败
|
|||
|
|
handleOnError(file, fileList) {
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.importFileError'),
|
|||
|
|
message: file.msg,
|
|||
|
|
type: 'error',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
// 导出
|
|||
|
|
handleExport() {
|
|||
|
|
const params = {
|
|||
|
|
title: '告警定义模板'
|
|||
|
|
}
|
|||
|
|
handleDownExcel(
|
|||
|
|
'/flow/deviceColDefine/exportTemplate',
|
|||
|
|
params,
|
|||
|
|
(callback) => {
|
|||
|
|
console.log(callback)
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
handleSizeChange(val) {
|
|||
|
|
this.currentPage = 1
|
|||
|
|
this.pageSize = val
|
|||
|
|
this.get_table_data()
|
|||
|
|
},
|
|||
|
|
// 页码选择
|
|||
|
|
handleCurrentChange(val) {
|
|||
|
|
this.currentPage = val
|
|||
|
|
this.get_table_data()
|
|||
|
|
},
|
|||
|
|
col_handleCurrentChange(val) {
|
|||
|
|
this.col_currentPage = val
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
col_handleSizeChange(val) {
|
|||
|
|
this.col_currentPage = 1
|
|||
|
|
this.col_pageSize = val
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 关闭新增编辑框
|
|||
|
|
onCancel() {
|
|||
|
|
this.dialogVisible = false
|
|||
|
|
this.formModel = {
|
|||
|
|
colName: null,
|
|||
|
|
col: null,
|
|||
|
|
deviceType: null,
|
|||
|
|
deviceName: null,
|
|||
|
|
info0: null,
|
|||
|
|
info1: null,
|
|||
|
|
name: null
|
|||
|
|
}
|
|||
|
|
// this.$refs.dialog_table_data.clearSelection()
|
|||
|
|
this.col_currentPage = 1
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 关闭字段选择框
|
|||
|
|
onTableCancel() {
|
|||
|
|
this.tableDialog = false
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 新增确认
|
|||
|
|
async handleTosubmit() {
|
|||
|
|
const params = {
|
|||
|
|
col: this.formModel.col,
|
|||
|
|
colName: this.formModel.colName,
|
|||
|
|
deviceName: this.formModel.deviceName,
|
|||
|
|
deviceType: this.formModel.deviceType,
|
|||
|
|
id: this.formModel.id,
|
|||
|
|
info0: this.formModel.info0 ? this.formModel.info0 : '',
|
|||
|
|
info1: this.formModel.info1 ? this.formModel.info1 : ''
|
|||
|
|
}
|
|||
|
|
if (this.dialogType === 'add') {
|
|||
|
|
try {
|
|||
|
|
await AddDeviceColDefine(params)
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.success'),
|
|||
|
|
message: this.$t('alarm.addSuccess'),
|
|||
|
|
type: 'success',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error);
|
|||
|
|
} finally {
|
|||
|
|
this.dialogVisible = false
|
|||
|
|
this.get_table_data()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (this.dialogType === 'edit') {
|
|||
|
|
try {
|
|||
|
|
await UpdataDeviceColDefine(params)
|
|||
|
|
this.$notify({
|
|||
|
|
title: this.$t('alarm.success'),
|
|||
|
|
message: this.$t('alarm.editSuccess'),
|
|||
|
|
type: 'success',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
} catch (error) {
|
|||
|
|
// console.log(error);
|
|||
|
|
} finally {
|
|||
|
|
this.dialogVisible = false
|
|||
|
|
this.get_table_data()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// 确认字段
|
|||
|
|
handleTableTosubmit() {
|
|||
|
|
this.tableDialog = false
|
|||
|
|
this.formModel = this.selectDialogData[0]
|
|||
|
|
// console.log(this.selectDialogData)
|
|||
|
|
},
|
|||
|
|
// 打开字段选择
|
|||
|
|
openTableDialog() {
|
|||
|
|
this.tableDialog = true
|
|||
|
|
// this.GetDeviceTypeCol()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
.realtime-wrapper {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
background:var(--table-bg);
|
|||
|
|
padding: 10px;
|
|||
|
|
box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.15);
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
.upload-demo {
|
|||
|
|
display: inline-block;
|
|||
|
|
margin-left: 5px;
|
|||
|
|
margin-right: 10px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.tableCol {
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
.table-wrapper{
|
|||
|
|
flex: 1;
|
|||
|
|
margin-top: 10px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|