236 lines
6.7 KiB
Vue
236 lines
6.7 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="app-container">
|
|||
|
|
<!-- 工具栏 -->
|
|||
|
|
<div class="head-container">
|
|||
|
|
<el-form
|
|||
|
|
:inline="true"
|
|||
|
|
class="demo-form-inline"
|
|||
|
|
label-position="right"
|
|||
|
|
label-width="80px"
|
|||
|
|
label-suffix=":"
|
|||
|
|
>
|
|||
|
|
<el-form-item label="监听端口">
|
|||
|
|
<el-input
|
|||
|
|
v-model="query.search"
|
|||
|
|
clearable
|
|||
|
|
style="width: 300px"
|
|||
|
|
size="mini"
|
|||
|
|
placeholder="请输入监听端口"
|
|||
|
|
class="filter-item"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
|
|||
|
|
<!-- 新增滑块开关 -->
|
|||
|
|
<el-form-item label="设备监听">
|
|||
|
|
<el-switch
|
|||
|
|
v-model="rfidStatus"
|
|||
|
|
active-color="#13ce66"
|
|||
|
|
inactive-color="#ccc"
|
|||
|
|
@change="open"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
|
|||
|
|
<rrOperation />
|
|||
|
|
</el-form>
|
|||
|
|
|
|||
|
|
<crudOperation :permission="permission" />
|
|||
|
|
|
|||
|
|
<!-- 表格 -->
|
|||
|
|
<el-table
|
|||
|
|
ref="table"
|
|||
|
|
v-loading="crud.loading"
|
|||
|
|
:data="crud.data"
|
|||
|
|
size="mini"
|
|||
|
|
style="width: 100%;"
|
|||
|
|
@selection-change="crud.selectionChangeHandler"
|
|||
|
|
>
|
|||
|
|
<el-table-column prop="device_code" label="设备编号" />
|
|||
|
|
<el-table-column prop="ip" label="IP" />
|
|||
|
|
<el-table-column prop="status" label="连接状态">
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<span :style="{ color: scope.row.status === 1 ? '#13ce66' : '#ff4949' }">
|
|||
|
|
{{ scope.row.status === 1 ? '已连接' : '未连接' }}
|
|||
|
|
</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<el-table-column prop="start_time" label="开始连接时间" />
|
|||
|
|
<el-table-column
|
|||
|
|
prop="online_time"
|
|||
|
|
label="在线时间"
|
|||
|
|
:min-width="flexWidth('online_time', crud.data, '在线时间')"
|
|||
|
|
/>
|
|||
|
|
<el-table-column
|
|||
|
|
prop="rfid"
|
|||
|
|
label="当前rfid值"
|
|||
|
|
:min-width="flexWidth('rfid', crud.data, '当前rfid值')"
|
|||
|
|
/>
|
|||
|
|
<!-- <el-table-column prop="is_used" label="是否启用 ">-->
|
|||
|
|
<!-- <template slot-scope="scope">-->
|
|||
|
|
<!-- <el-switch-->
|
|||
|
|
<!-- v-model="scope.row.is_used"-->
|
|||
|
|
<!-- active-color="#409EFF"-->
|
|||
|
|
<!-- inactive-color="#F56C6C"-->
|
|||
|
|
<!-- @change="changeEnabled(scope.row, scope.row.is_used)"-->
|
|||
|
|
<!-- />-->
|
|||
|
|
<!-- </template>-->
|
|||
|
|
<!-- </el-table-column>-->
|
|||
|
|
<el-table-column
|
|||
|
|
v-permission="['admin', 'mdPbMeasureunit:edit', 'mdPbMeasureunit:del']"
|
|||
|
|
fixed="right"
|
|||
|
|
label="操作"
|
|||
|
|
width="150px"
|
|||
|
|
align="center"
|
|||
|
|
>
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<udOperation :data="scope.row" :permission="permission" />
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
</el-table>
|
|||
|
|
|
|||
|
|
<el-input
|
|||
|
|
v-model="logText"
|
|||
|
|
type="textarea"
|
|||
|
|
:rows="15"
|
|||
|
|
placeholder="设备运行日志..."
|
|||
|
|
readonly
|
|||
|
|
style="width: 100%; margin-top: 5px;"
|
|||
|
|
/>
|
|||
|
|
|
|||
|
|
<!-- 分页 -->
|
|||
|
|
<pagination />
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import crudRfid from './vehicle_rfid'
|
|||
|
|
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
|||
|
|
import crudOperation from '@crud/CRUD.operation'
|
|||
|
|
import udOperation from '@crud/UD.operation'
|
|||
|
|
import pagination from '@crud/Pagination'
|
|||
|
|
|
|||
|
|
const defaultForm = {
|
|||
|
|
id: null,
|
|||
|
|
ip: null,
|
|||
|
|
port: null,
|
|||
|
|
device_code: null,
|
|||
|
|
is_used: true,
|
|||
|
|
online_time: null,
|
|||
|
|
create_id: null,
|
|||
|
|
create_name: null,
|
|||
|
|
create_time: null,
|
|||
|
|
update_id: null,
|
|||
|
|
update_name: null,
|
|||
|
|
update_time: null,
|
|||
|
|
status: null,
|
|||
|
|
start_time: null
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
dicts: ['is_used'],
|
|||
|
|
name: 'VehicleRfid',
|
|||
|
|
components: { pagination, crudOperation, udOperation },
|
|||
|
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
|||
|
|
cruds() {
|
|||
|
|
return CRUD({
|
|||
|
|
title: '计量单位',
|
|||
|
|
url: 'api/rfid',
|
|||
|
|
optShow: {
|
|||
|
|
add: true
|
|||
|
|
},
|
|||
|
|
idField: 'id',
|
|||
|
|
sort: 'id,desc',
|
|||
|
|
crudMethod: { ...crudRfid }
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
intervalId: null,
|
|||
|
|
permission: {},
|
|||
|
|
rfidStatus: false, // 新增开关状态变量
|
|||
|
|
logText: '', // 展示日志内容
|
|||
|
|
logTextList: [], // 存储日志行数组(最多10条)
|
|||
|
|
query: {
|
|||
|
|
search: '8160' // 设置默认监听端口
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
mounted() {
|
|||
|
|
// 读写器定时器
|
|||
|
|
this.intervalId = setInterval(() => {
|
|||
|
|
this.crud.toQuery()
|
|||
|
|
this.updateLogFromResult()
|
|||
|
|
}, 3000)
|
|||
|
|
},
|
|||
|
|
beforeDestroy() {
|
|||
|
|
if (this.intervalId) {
|
|||
|
|
clearInterval(this.intervalId)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
[CRUD.HOOK.beforeRefresh]() {
|
|||
|
|
return true
|
|||
|
|
},
|
|||
|
|
// updateLogFromResult() {
|
|||
|
|
// const logList = this.crud.data.map(item => item.log).filter(log => !!log)
|
|||
|
|
// if (logList.length === 0) return
|
|||
|
|
// const newLog = logList.join('\n')
|
|||
|
|
// //每次都添加日志
|
|||
|
|
// this.logTextList.unshift(newLog) // 新日志放最前
|
|||
|
|
// if (this.logTextList.length > 15) {
|
|||
|
|
// this.logTextList.pop() // 最多保留10条
|
|||
|
|
// }
|
|||
|
|
// this.logText = this.logTextList.join('\n\n') // 更新展示内容
|
|||
|
|
// },
|
|||
|
|
updateLogFromResult() {
|
|||
|
|
const s = this.crud.data
|
|||
|
|
const logList = this.crud.data.map(item => item.log).filter(log => !!log)
|
|||
|
|
if (logList.length === 0) {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
const newLog = logList.join('\n')
|
|||
|
|
// 判断最新日志是否和旧的重复,避免重复添加
|
|||
|
|
if (!this.logTextList.includes(newLog)) {
|
|||
|
|
this.logTextList.unshift(newLog) // 新日志放最前
|
|||
|
|
if (this.logTextList.length > 15) {
|
|||
|
|
this.logTextList.pop() // 最多保留10条
|
|||
|
|
}
|
|||
|
|
this.logText = this.logTextList.join('\n\n') // 更新展示内容
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
changeEnabled(data, val) {
|
|||
|
|
this.$confirm('此操作将改变' + data.device_code + '状态, 是否继续?', '提示', {
|
|||
|
|
confirmButtonText: '确定',
|
|||
|
|
cancelButtonText: '取消',
|
|||
|
|
type: 'warning'
|
|||
|
|
}).then(() => {
|
|||
|
|
crudRfid.edit(data).then(() => {
|
|||
|
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
|||
|
|
}).catch(() => {
|
|||
|
|
data.is_used = !val
|
|||
|
|
})
|
|||
|
|
}).catch(() => {
|
|||
|
|
data.is_used = !val
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
open(val) {
|
|||
|
|
debugger
|
|||
|
|
const payload = {
|
|||
|
|
port: this.query.search == null ? '8160' : this.query.search,
|
|||
|
|
isOpen: val ? '1' : '0'
|
|||
|
|
}
|
|||
|
|
crudRfid.open(JSON.stringify(payload)).then(res => {
|
|||
|
|
this.crud.toQuery()
|
|||
|
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
|||
|
|
}).catch(() => {
|
|||
|
|
this.$message.error('操作失败')
|
|||
|
|
this.rfidStatus = !val
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
</style>
|