设备列表接口对接

main
guanxiaohan 1 year ago
parent b542fd4131
commit 3d3aef776a
  1. BIN
      public/img/tuobu/fuwuyigua.png
  2. 28
      src/api/equipment/index.js
  3. 7
      src/api/itemManagement/itemList.js
  4. 45
      src/page/itemManagement/applicationExamine/index.vue
  5. 164
      src/page/itemManagement/itemList/index.vue
  6. 6
      src/page/opsVisualization/serviceDataOAM.vue
  7. 16
      src/page/opsVisualization/tuobu.vue
  8. 8
      src/router/views/index.js
  9. 4
      src/views/equipment/index.vue
  10. 652
      src/views/equipment/operationDetails.vue
  11. 2
      src/views/opsVisualization/tuobu.vue
  12. 15
      vue.config.js

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -315,3 +315,31 @@ export const getDetail = (query) => {
params: query,
});
};
export const save = (data) => {
return request({
url: "/api/blade-desk/equipOperate/save",
method: "post",
data,
});
};
export const findPage = (params) => {
return request({
url: "/api/blade-desk/equipOperate/findPage",
method: "get",
params,
});
};
export const detail = (params) => {
return request({
url: "/api/blade-desk/equipOperate/detail",
method: "get",
params,
});
};
export const equipOperateRemove = (params) => {
return request({
url: "/api/blade-desk/equipOperate/remove",
method: "get",
params,
});
};

@ -41,4 +41,11 @@ export const historyDetail = (params) => {
method: 'get',
params
})
}
export const check = (params) => {
return request({
url: '/api/blade-desk/goods/check',
method: 'get',
params
})
}

@ -9,16 +9,16 @@
<el-form-item label="物品大类">
<el-select
class="search_select"
v-model="queryForm.type"
v-model="queryForm.bigClass"
placeholder="请选择物品大类"
clearable
filterable
>
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -32,9 +32,9 @@
>
<el-option
v-for="item in brandList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -213,9 +213,9 @@
>
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -245,11 +245,19 @@
label="品牌"
prop="brand"
>
<el-input
<el-select
class="search_select"
v-model="registerForm.brand"
placeholder="请输入品牌"
placeholder="请选择物品品牌"
disabled
/>
>
<el-option
v-for="item in brandList"
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
@ -400,6 +408,7 @@
<script>
import { findPage, detail, remove } from "@/api/itemManagement/applicationExamine";
import { goodsApplySave } from "@/api/itemManagement/itemList";
import {getDictionary} from '@/api/system/dictbiz'
export default {
data() {
return {
@ -536,6 +545,16 @@
// init
init() {
this.findPage()
this.selectDict()
},
//
async selectDict() {
await getDictionary({code: 'big_class'}).then(res => {
this.typeList = res.data.data.filter(item => item.parentId != '0')
})
await getDictionary({code: 'brand'}).then(res => {
this.brandList = res.data.data.filter(item => item.parentId != '0')
})
},
//
findPage() {

@ -16,9 +16,9 @@
>
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -32,9 +32,9 @@
>
<el-option
v-for="item in brandList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -205,13 +205,14 @@
<el-select
v-model="registerForm.bigClass"
placeholder="请选择物品大类"
filterable
:disabled="dialogFormDisabled"
>
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -248,11 +249,20 @@
label="品牌"
prop="brand"
>
<el-input
<el-select
class="search_select"
v-model="registerForm.brand"
placeholder="请输入品牌"
placeholder="请选择物品品牌"
filterable
:disabled="dialogFormDisabled"
/>
>
<el-option
v-for="item in brandList"
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
@ -293,18 +303,11 @@
label="货位"
prop="allocation"
>
<el-select
<el-input
v-model="registerForm.allocation"
placeholder="请选择货位"
placeholder="请输入货位"
:disabled="dialogFormDisabled"
>
<el-option
v-for="item in goodsAllocationList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
/>
</el-form-item>
</el-col>
<el-col
@ -494,7 +497,8 @@
</template>
<script>
import { findPage, detail, save, goodsApplySave, remove, historyDetail } from "@/api/itemManagement/itemList";
import { findPage, detail, save, goodsApplySave, remove, historyDetail, check } from "@/api/itemManagement/itemList";
import {getDictionary} from '@/api/system/dictbiz'
export default {
data() {
return {
@ -503,34 +507,8 @@
brand: '',
name: '',
},
typeList: [
{
value: '1',
label: '类型1'
},
{
value: '2',
label: '类型2'
},
{
value: '3',
label: '类型3'
}
],
brandList: [
{
value: '1',
label: '品牌1'
},
{
value: '2',
label: '品牌2'
},
{
value: '3',
label: '品牌3'
}
],
typeList: [],
brandList: [],
tableData: [],
multipleSelection: [],
currentPage: 1,
@ -539,20 +517,6 @@
registerDialogVisible: false,
dialogFormType: '',
dialogFormDisabled: false,
goodsAllocationList: [
{
label: '货位1',
value: '1',
},
{
label: '货位2',
value: '2',
},
{
label: '货位3',
value: '3',
},
],
registerForm: {
bigClass: '',
name: '',
@ -581,7 +545,7 @@
{ required: true, message: '请输入物品编号', trigger: 'blur' },
],
brand: [
{ required: true, message: '请输入品牌', trigger: 'blur' },
{ required: true, message: '请选择品牌', trigger: 'blur' },
],
model: [
{ required: true, message: '请输入型号', trigger: 'blur' },
@ -604,7 +568,7 @@
trigger: 'blur' },
],
allocation: [
{ required: true, message: '请输入选择货位', trigger: 'blur' },
{ required: true, message: '请输入货位', trigger: 'blur' },
],
inNum: [
{
@ -673,6 +637,16 @@
// init
init() {
this.findPage()
this.selectDict()
},
//
async selectDict() {
await getDictionary({code: 'big_class'}).then(res => {
this.typeList = res.data.data.filter(item => item.parentId != '0')
})
await getDictionary({code: 'brand'}).then(res => {
this.brandList = res.data.data.filter(item => item.parentId != '0')
})
},
//
findPage() {
@ -795,29 +769,39 @@
registerHandleClick(type) {
if(type == 'confirm') {
if(this.dialogFormType == 'add') {
const fieldsToValidate = ['bigClass','name','code','brand','model','standard','price','allocation','inNum','unit','useTo','inDate','remarks']
this.$refs.registerForm.validate((valid) => {
if (valid) {
this.registerForm.num = 0
save(this.registerForm).then(res => {
this.$message({
message: '入库成功',
type: 'success'
});
this.registerHandleClose()
this.currentPage = 1
this.pageSize = 10
this.findPage()
}).catch(error => {
this.$message({
message: '入库失败',
type: 'error'
});
})
check({code: this.registerForm.code}).then(res => {
if(!res.data) {
this.$message({
message: '该编号已存在',
type: 'error'
});
return;
} else {
return false;
const fieldsToValidate = ['bigClass','name','code','brand','model','standard','price','allocation','inNum','unit','useTo','inDate','remarks']
this.$refs.registerForm.validate((valid) => {
if (valid) {
this.registerForm.num = 0
save(this.registerForm).then(res => {
this.$message({
message: '入库成功',
type: 'success'
});
this.registerHandleClose()
this.currentPage = 1
this.pageSize = 10
this.findPage()
}).catch(error => {
this.$message({
message: '入库失败',
type: 'error'
});
})
} else {
return false;
}
}, fieldsToValidate);
}
}, fieldsToValidate);
})
} else if(this.dialogFormType == 'edit') {
const fieldsToValidate = ['bigClass','name','brand','model','standard','price','allocation','unit','useTo','inDate','remarks']
this.$refs.registerForm.validate((valid) => {
@ -825,7 +809,7 @@
this.registerForm.num = this.registerForm.inNum
save(this.registerForm).then(res => {
this.$message({
message: '入库成功',
message: '修改成功',
type: 'success'
});
this.registerHandleClose()
@ -834,7 +818,7 @@
this.findPage()
}).catch(error => {
this.$message({
message: '入库失败',
message: '修改失败',
type: 'error'
});
})

@ -315,10 +315,10 @@ export default {
computed: {},
mounted() {
const { equipCode = "", warnStatus = "", classCode } = this.$route.query;
const { equipCode = "", warnStatus, classCode } = this.$route.query;
this.equipCode = equipCode;
this.warnStatus = warnStatus;
this.classCode = classCode;
this.warnStatus = warnStatus || '';
this.classCode = classCode || '';
this.handleSearch();
},
methods: {

@ -22,7 +22,7 @@
<div class="center_jiedian_box">
<jiedian class="jiedian jiedian_1" :img="'jiedian_blue'" :status="dataList.some(item => item.name == 'mqtt服务' && item.status == 1)" :text="'mqtt服务'" :left="'-33'"></jiedian>
<jiedian class="jiedian jiedian_2" :img="'jiedian_blue'" :status="dataList.some(item => item.name == 'http服务' && item.status == 1)" :text="'http服务'" :left="'-30'"></jiedian>
<jiedian class="jiedian jiedian_3" :img="'jiedian_blue'" :status="dataList.some(item => item.name == 'modebus服务' && item.status == 1)" :text="'modebus服务'" :left="'-30'"></jiedian>
<jiedian class="jiedian jiedian_3" :img="'jiedian_blue'" :status="dataList.some(item => item.name == 'modBus服务' && item.status == 1)" :text="'modBus服务'" :left="'-30'"></jiedian>
</div>
<img class="server_1_bottom_center_left" src="../../../public/img/tuobu/server_1_bottom_center.png" alt="">
<div class="bottom_jiedian_box_1">
@ -75,6 +75,7 @@
<jiedian class="jiedian jiedian_1" :status="dataList.some(item => item.type == 'redis' && item.status == 1)" :img="'jiedian_blue'" :text="'resdis服务监控'" :left="'0'" :top="'40'"></jiedian>
<jiedian class="jiedian jiedian_2" :status="dataList.some(item => item.type == 'mysql' && item.status == 1)" :img="'jiedian_blue'" :text="'数据库监控'" :left="'10'" :top="'40'"></jiedian>
</div>
<el-button class="goto_button" @click="goto">告警详情</el-button>
</div>
</template>
@ -155,6 +156,14 @@ export default {
if (this.timer) {
clearInterval(this.timer);
}
},
goto() {
this.$router.push({
path: '/opsVisualization/serviceDataOAM',
query: {
warnStatus: '1'
}
})
}
}
}
@ -166,6 +175,11 @@ export default {
width: calc(100% - 218px);
margin-left: 218px;
position: relative;
.goto_button{
position: absolute;
top: 20px;
right: 20px;
}
.server_1{
position: absolute;
left: 400px;

@ -116,6 +116,14 @@ export default [{
},
component: () =>
import( /* webpackChunkName: "views" */ '@/views/equipment/doorRecord')
}, {
path: 'operationDetails',
name: '操作明细',
meta: {
i18n: 'dashboard'
},
component: () =>
import( /* webpackChunkName: "views" */ '@/views/equipment/operationDetails')
}]
},
{

@ -29,6 +29,7 @@
<template slot-scope="{row,index}" slot="menu">
<el-button type="text" size="small" @click="handleAdd('look',row)">查看</el-button>
<el-button type="text" size="small" @click="handleAdd('edit',row)">编辑</el-button>
<el-button type="text" size="small" @click="operationDetails(row)">操作明细</el-button>
<!-- <el-button v-if="row.modelId" type="text" size="small" @click="addModel(row)">编辑模型</el-button>
<el-button v-else type="text" size="small" @click="addModel(row)">添加模型</el-button> -->
</template>
@ -863,6 +864,9 @@
})
}
},
operationDetails(row) {
this.$router.push({path: '/equipment/operationDetails', query: {name: row.name, code: row.code}})
},
chooseFloor(e){
getLc1(Number(e)).then(res => {
this.ruleForm.floored = null;

@ -0,0 +1,652 @@
<template>
<basic-container class="content">
<div class="content-top">
<el-form
:inline="true"
:model="queryForm"
class="serch_form"
>
<el-form-item label="类型">
<el-select
class="search_select"
v-model="queryForm.type"
placeholder="请选择类型"
clearable
filterable
>
<el-option
v-for="item in typeList"
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button class="search_button" @click="handleSearch">
<i class="el-icon-search"></i>
</el-button>
</el-form-item>
</el-form>
<div>
<el-button v-if="multipleSelection.length != 0" class="register" @click="batchDeletion">批量删除</el-button>
<el-button class="register" @click="handleAdd">新增</el-button>
<el-button class="register" @click="handleBack">返回</el-button>
</div>
</div>
<div class="content-main">
<el-table
:data="tableData"
stripe
border
style="width: 100%"
:header-cell-style="{'text-align':'center'}"
:cell-style="{'text-align':'center'}"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
type="index"
label="序号"
width="70">
</el-table-column>
<el-table-column
prop="code"
label="设备编码">
</el-table-column>
<el-table-column
prop="name"
label="设备名称">
</el-table-column>
<el-table-column
prop="type"
label="类型">
</el-table-column>
<el-table-column
prop="operateTime"
label="操作时间">
</el-table-column>
<el-table-column
prop="operateUser"
label="操作人员">
</el-table-column>
<el-table-column
prop="remarks"
label="备注">
</el-table-column>
<el-table-column
prop="address"
label="操作"
width="150"
align="center"
>
<template slot-scope="scope">
<el-popover
placement="bottom"
width="150"
trigger="hover">
<div class="more-box">
<div
class="item"
@click="handleOperation('view', scope.row)">查看
</div>
<div
class="item"
@click="handleOperation('edit', scope.row)">编辑
</div>
<div
class="item"
@click="handleOperation('delete', scope.row)">删除
</div>
</div>
<div class="more" slot="reference">更多</div>
</el-popover>
</template>
</el-table-column>
</el-table>
<div class="el_pagination">
<!-- <div
style="
width: 100%;
height: 100%;
position: absolute;
background: rgba(255,255,255,.9);
z-index: 9;
position: absolute;
top: 0;
left: 0;
"
v-show="loading"
></div> -->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[6, 10, 20, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
<el-dialog
:title="title"
:append-to-body="true"
:visible.sync="dialongVisable"
width="50%"
:before-close="handleClose">
<el-form
class="dialogForm"
:model="dialogForm"
label-width="80px"
ref="dialogForm"
>
<el-col :span="8">
<el-form-item label="设备名称" prop="name">
<el-input
v-model="dialogForm.name"
disabled
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备编码" prop="code">
<el-input
v-model="dialogForm.code"
disabled
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="类型" prop="type">
<el-select
v-model="dialogForm.type"
placeholder="请选择类型"
:disabled="dialogFormDisabled"
>
<el-option
v-for="item in typeList"
:key="item.dictValue"
:label="item.dictKey"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="操作人员" prop="operateUser">
<el-input
v-model="dialogForm.operateUser"
placeholder="请输入操作人员"
:disabled="dialogFormDisabled"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="操作时间" prop="operateTime">
<el-date-picker
v-model="dialogForm.operateTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择操作时间"
:disabled="dialogFormDisabled">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remarks">
<el-input
v-model="dialogForm.remarks"
placeholder="选输入备注"
:disabled="dialogFormDisabled"
/>
</el-form-item>
</el-col>
</el-form>
<div class="dialog-footer">
<el-button v-if="dialogFormType != 'view'" @click="dialogHandleClick('cancel')"> </el-button>
<el-button type="primary" @click="dialogHandleClick('confirm')"> </el-button>
</div>
</el-dialog>
</basic-container>
</template>
<script>
import { save, findPage, detail, equipOperateRemove } from "@/api/equipment/index";
import {getDictionary} from '@/api/system/dictbiz'
export default {
data() {
return {
queryForm: {
type: '',
},
typeList: [],
tableData: [],
multipleSelection: [],
currentPage: 1,
pageSize: 10,
total: 0,
dialongVisable: false,
dialogFormDisabled: false,
dialogFormType: '',
dialogForm: {
name: '',
code: '',
type: '',
operateUser: '',
operateTime: '',
remarks: '',
},
rules: {
type: [
{ required: true, message: '请选择类型', trigger: 'blur' },
],
operateTime: [
{ required: true, message: '请选择操作时间', trigger: 'blur' },
],
operateUser: [
{ required: true, message: '请选择操作人员', trigger: 'blur' },
],
}
}
},
computed: {
title() {
if(this.dialogFormType == 'view') {
return '查看详情'
} else if(this.dialogFormType == 'edit') {
return '编辑'
} else if(this.dialogFormType == 'add') {
return '新增'
}
}
},
mounted() {
this.dialogForm.name = this.$route.query.name
this.dialogForm.code = this.$route.query.code
this.init()
},
methods: {
// init
init() {
this.findPage()
this.selectDict()
},
//
selectDict() {
getDictionary({code: 'operate_type'}).then(res => {
this.typeList = res.data.data.filter(item => item.parentId != '0')
})
},
//
findPage() {
let params = {
...this.queryForm,
code: this.dialogForm.code,
current: this.currentPage,
size: this.pageSize
}
findPage(params).then(res => {
this.tableData = res.data.data.records
this.total = res.data.data.total
})
},
//
handleSearch() {
this.currentPage = 1
this.findPage()
},
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleAdd() {
this.dialogFormType = 'add'
this.dialongVisable = true
},
//
batchDeletion() {
this.$confirm('确认批量删除删除所选数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let ids = []
this.multipleSelection.forEach(item => {
ids.push(item.id)
})
equipOperateRemove({ids: ids.join(',')}).then(res => {
this.$message({
message: '删除成功',
type: 'success'
})
this.findPage()
}).catch(err => {
this.$message({
type: 'error',
message: '删除失败!'
})
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
//
detail(id) {
detail({id}).then(res => {
console.log(res)
this.dialogForm = res.data.data
})
},
//
handleOperation(type, row) {
this.dialogFormType = type
if(type == 'view') {
this.dialongVisable = true
this.dialogFormDisabled = true
this.detail(row.id)
} else if(type == 'edit') {
this.dialongVisable = true
this.detail(row.id)
} else if(type == 'delete') {
this.$confirm('确认删除该条数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
equipOperateRemove({ids: row.id}).then(res => {
this.$message({
message: '删除成功',
type: 'success'
})
this.findPage()
}).catch(err => {
this.$message({
type: 'error',
message: '删除失败!'
})
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
}
},
dialogHandleClick(type) {
if(type == 'confirm') {
if(this.dialogFormType == 'add') {
const fieldsToValidate = ['type','operateUser','operateTime']
this.$refs.dialogForm.validate((valid) => {
if (valid) {
save(this.dialogForm).then(res => {
this.$message({
message: '入库成功',
type: 'success'
});
this.handleClose()
this.currentPage = 1
this.pageSize = 10
this.findPage()
}).catch(error => {
this.$message({
message: '入库失败',
type: 'error'
});
})
} else {
return false;
}
}, fieldsToValidate);
} else if(this.dialogFormType == 'edit') {
const fieldsToValidate = ['type','operateUser','operateTime']
this.$refs.dialogForm.validate((valid) => {
if (valid) {
save(this.dialogForm).then(res => {
this.$message({
message: '修改成功',
type: 'success'
});
this.handleClose()
this.currentPage = 1
this.pageSize = 10
this.findPage()
}).catch(error => {
this.$message({
message: '修改失败',
type: 'error'
});
})
} else {
return false;
}
}, fieldsToValidate);
}
} else {
this.handleClose()
}
},
//
handleClose() {
this.dialongVisable = false
this.dialogFormDisabled = false
this.resetForm()
this.dialogForm = {
name: this.$route.query.name,
code: this.$route.query.code,
type: '',
operateUser: '',
operateTime: '',
remarks: '',
}
},
//
resetForm() {
this.$refs['dialogForm'].resetFields();
},
//
handleSizeChange(val) {
this.currentPage = 1
this.pageSize = val
this.findPage()
},
handleCurrentChange(val) {
this.currentPage = val
this.findPage()
},
handleBack() {
this.$router.push({path: '/equipment/index'})
}
}
}
</script>
<style lang="scss" scoped>
.content {
height: 100%;
background-color: white;
padding: 20px !important;
.content-top{
display: flex;
justify-content: space-between;
align-items: flex-start;
.register{
height: 40px;
}
.serch_form {
// display: flex;
// margin-bottom: 30px;
.el-form-item{
// padding: 0 10px;
margin-right: 20px !important;
}
.search_select {
// width: 138px;
height: 40px;
}
.search_input {
// width: 238px;
height: 40px;
}
/deep/.el-input__inner {
border-radius: 0;
}
.search_button {
width: 50px;
height: 40px;
border-radius: 0;
display: flex;
justify-content: center;
align-items: center;
margin-left: 6px;
.el-icon-search {
font-size: 19px;
color: #c9c9c9;
}
}
}
}
.content-main{
.more{
cursor: pointer;
}
.el_pagination {
display: flex;
justify-content: end;
margin-top: 20px;
}
}
}
.more-box{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.item{
width: 100%;
padding: 5px 0;
text-align: center;
cursor: pointer;
}
}
.dialogForm{
display: flex;
flex-wrap: wrap;
.el-select{
width: 100%;
}
}
.dialog-footer{
height: 40px;
display: flex;
justify-content: flex-end;
}
.message{
// padding: 0 20px;
margin: 0 20px 0px 20px;
display: flex;
flex-direction: column;
border: 1px solid #D1D1D1;
.box{
margin: 0 20px 0px 20px;
}
.title{
height: 40px;
background: #FFFFFF;
border-radius: 0px 0px 0px 0px;
display: flex;
align-items: center;
margin: 0 20px 0px 20px;
}
.item{
display: flex;
align-items: center;
margin-bottom: 10px;
.label{
width: 80px;
text-align: end;
margin-right: 10px;
}
}
}
.history{
// padding: 0 20px;
margin: 0 20px 20px 20px;
display: flex;
flex-direction: column;
border: 1px solid #D1D1D1;
border-top: none;
.title{
height: 40px;
background: #FFFFFF;
border-radius: 0px 0px 0px 0px;
display: flex;
align-items: center;
margin: 0 20px 0px 20px;
}
.el-collapse{
margin: 0 20px;
border: none !important;
margin-bottom: 20px;
}
}
.title-text{
margin: 0 20px;
}
.name-time{
// width: 327px;
height: 40px;
background: #F9F9F9;
display: flex;
align-items: center;
padding: 0 20px;
.time{
margin-left: 30px;
}
}
.form-title{
// width: 100%;
height: 40px;
background: #F9F9F9;
border-radius: 0px 0px 0px 0px;
border: 1px solid #D1D1D1;
display: flex;
align-items: center;
padding: 0 20px;
margin-bottom: 20px;
}
.status-box-wrapper{
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.status-box{
width: 62px;
height: 25px;
}
.blue{
background: rgba(43, 142, 229, 0.2);
color: #2B8EE5;
}
.green{
background: rgba(30, 185, 76, 0.2);
color: #1EB94C;
}
.red{
background: rgba(225, 75, 51, 0.2);
color: #E14B33;
}
.grey{
background: rgba(151, 151, 151, 0.2);
color: #333333;
}
</style>

@ -22,7 +22,7 @@
<div class="center_jiedian_box">
<jiedian class="jiedian jiedian_1" :img="'jiedian_blue'" :text="'mqtt服务'" :left="'-33'"></jiedian>
<jiedian class="jiedian jiedian_2" :img="'jiedian_blue'" :text="'http服务'" :left="'-30'"></jiedian>
<jiedian class="jiedian jiedian_3" :img="'jiedian_blue'" :text="'modebus服务'" :left="'-30'"></jiedian>
<jiedian class="jiedian jiedian_3" :img="'jiedian_blue'" :text="'modBus服务'" :left="'-30'"></jiedian>
</div>
<img class="server_1_bottom_center_left" src="../../../public/img/tuobu/server_1_bottom_center.png" alt="">
<div class="bottom_jiedian_box_1">

@ -65,12 +65,19 @@ module.exports = {
"^/api": "/",
},
},
"/kgApi": {
"/monitor-system": {
target: "http://192.168.1.5:8080",
ws: true,
pathRewrite: {
"^/kgApi": "/",
},
// pathRewrite: {
// "^/monitor-system": "/",
// },
},
"/monitor-business": {
target: "http://192.168.1.5:8080",
ws: true,
// pathRewrite: {
// "^/monitor-system": "/",
// },
},
},
},

Loading…
Cancel
Save