模板管理

main
wangqiujuan0808 2024-04-16 14:48:50 +08:00
parent 20a20f8d5e
commit 88bcff5741
9 changed files with 221 additions and 332 deletions

View File

@ -6,7 +6,7 @@ const infoApi = {
getSys() { getSys() {
return postPBRequest("/info", null, 51000); return postPBRequest("/info", null, 51000);
}, },
// // //
getNet(params) { getNet(params) {
return postPBRequest("/net", params, 52000); return postPBRequest("/net", params, 52000);
}, },
@ -31,7 +31,7 @@ const infoApi = {
// }, // },
// //
getTxSupport() { getTxSupport() {
return postPBRequest('/driver', null,53001) return postPBRequest('/driver', null, 53001)
}, },
// // api/com // // api/com
@ -53,26 +53,26 @@ const infoApi = {
// delTc(params) { // delTc(params) {
// return deleteRequest("/tc", params); // return deleteRequest("/tc", params);
// }, // },
// // //
// getMb(params) { getMb(params) {
// return getRequest('/tx/mb/list', params) return postPBRequest('/template', params, 54000)
// }, },
// // //
// addMb(params) { addMb(params) {
// return postJsonRequest('/tx/mb', params) return postPBRequest('/template', params, 54100)
// }, },
// // //
// editMb(params) { editMb(params) {
// return putRequest('/tx/mb', params) return postPBRequest('/template', params, 54200)
// }, },
// // //
// delMb(params) { delMb(params) {
// return deleteRequest('/tx/mb', params) return postPBRequest('/template', params, 54300)
// }, },
// // //
// addP(params) { addP(params) {
// return putRequest('/tx/mb', params) return postPBRequest('/tx/mb', params)
// }, },
// // // //
// getP(params) { // getP(params) {
@ -86,14 +86,22 @@ const infoApi = {
// addSet(params) { // addSet(params) {
// return putRequest('/tx/device', params) // return putRequest('/tx/device', params)
// }, // },
// //
getTx(params) { getTx(params) {
return postPBRequest('/driver', params, 53000) return postPBRequest('/driver', params, 53000)
}, },
// // //
// saveTx(params) { saveTx(params) {
// return postJsonRequest("/tx", params); return postPBRequest("/driver", params, 53100);
// }, },
//
getSupportTx(params) {
return postPBRequest("/driver", params, 53001);
},
//
getTxConfig(params) {
return postPBRequest("/driver", params, 53002);
}
// // , // // ,
// changeStatus(params) { // changeStatus(params) {

View File

@ -206,7 +206,7 @@ export default {
stop_bits_select: [1, 2], stop_bits_select: [1, 2],
timeout_select: [0, 100, 200, 500, 1000, 2000], timeout_select: [0, 100, 200, 500, 1000, 2000],
rules: { rules: {
name: [ index: [
{ required: true, message: "请输入通讯名称", trigger: "blur" }, { required: true, message: "请输入通讯名称", trigger: "blur" },
{ required: true, validator: validName, trigger: "blur" }, { required: true, validator: validName, trigger: "blur" },
], ],
@ -319,10 +319,8 @@ export default {
// com // com
const getCom = async () => { const getCom = async () => {
const res = await infoApi.getCom(); const res = await infoApi.getCom();
const ret = response.decode(new Uint8Array(res)); if (res.code == 0) {
if (ret.code == 0) { state.comArr = res.data.com;
const infodata = com_list.decode(ret.data);
state.comArr = infodata.com;
console.log('comlist',state.comArr) console.log('comlist',state.comArr)
state.com_select = []; state.com_select = [];
infodata.com.forEach(e => { infodata.com.forEach(e => {

View File

@ -1,42 +1,23 @@
<template> <template>
<el-dialog <el-dialog v-model="visible" :title="type === 'I' ? '新增模板' : '编辑模板'" width="30%" :before-close="closeDialog">
v-model="visible" <el-form :model="addForm" label-width="100px" :rules="rules" ref="ruleFormRef">
:title="type === 'I' ? '新增模板': '编辑模板'"
width="30%"
:before-close="closeDialog"
>
<el-form
:model="addForm"
label-width="100px"
:rules="rules"
ref="ruleFormRef"
>
<el-form-item label="模板名称:" prop="name"> <el-form-item label="模板名称:" prop="name">
<el-input <el-input v-model="addForm.name" placeholder="请输入模板名称" clearable :disabled="type === 'I' ? false : true" />
v-model="addForm.name"
placeholder="请输入模板名称"
clearable
:disabled="type === 'I' ? false: true"
/>
</el-form-item> </el-form-item>
<el-form-item label="模板描述:" prop="description"> <el-form-item label="模板描述:" prop="description">
<el-input <el-input v-model="addForm.description" placeholder="请输入模板描述" clearable />
v-model="addForm.description"
placeholder="请输入模板描述"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item label="模板类型:" prop="type"> <el-form-item label="模板类型:" prop="type">
<el-input
v-model="addForm.type" <el-select v-model="addForm.type" clearable placeholder="请选择模板类型" @change="driveChange" :disabled="type!=='I'">
disabled <el-option v-for="(item, index) of typeOptions" :key="index" :label="item.name" :value="item.key" />
/> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="closeDialog"></el-button> <el-button @click="closeDialog"></el-button>
<el-button type="primary" @click="saveFormData"> </el-button> <el-button type="primary" @click="saveFormData"> </el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@ -45,12 +26,12 @@
import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue"; import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
import infoApi from "@/api/infoApi.js"; import infoApi from "@/api/infoApi.js";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { mb_list, mb_info, response} from '../proto/data/pd' // import { mb_list, mb_info, response} from '../proto/data/pd'
export default { export default {
props: ["formData", "dialogVisible", "type"], props: ["formData", "dialogVisible", "type"],
emits: ["dialogClose", "dialogSuccess"], emits: ["dialogClose", "dialogSuccess"],
setup(props, ctx) { setup(props, ctx) {
const ruleFormRef = ref(null); const ruleFormRef = ref(null);
const state = reactive({ const state = reactive({
addForm: {}, addForm: {},
rules: { rules: {
@ -64,6 +45,16 @@ export default {
{ required: true, message: "请选择类型", trigger: "blur" } { required: true, message: "请选择类型", trigger: "blur" }
], ],
}, },
typeOptions: [
{
key: 1,
name: 'MODBUS'
},
{
key: 2,
name: 'PLC'
}
]
}); });
const visible = computed(() => { const visible = computed(() => {
return props.dialogVisible; return props.dialogVisible;
@ -72,35 +63,28 @@ export default {
return props.type; return props.type;
}); });
onMounted(() => { onMounted(() => {
state.addForm = props.formData; state.addForm = props.formData;
}); });
const closeDialog = () => { const closeDialog = () => {
ctx.emit("dialogClose"); ctx.emit("dialogClose");
}; };
const importData = () => {}; const importData = () => { };
const exoportData = () => {}; const exoportData = () => { };
const saveFormData = () => { const saveFormData = () => {
ruleFormRef.value.validate(async (valid) => { ruleFormRef.value.validate(async (valid) => {
if (valid) { if (valid) {
const req_databuf = mb_info.encode(state.addForm).finish(); const res = props.type === 'I' ? await infoApi.addMb(state.addForm) : await infoApi.editMb(state.addForm);
// if (res.code == 0) {
const req_data = req_databuf.slice(0, req_databuf.length); ElMessage.success(res.message || "请求成功");
const res = props.type === 'I' ? await infoApi.addMb(req_data) : await infoApi.editMb(req_data); //
console.log(555, res) ctx.emit("dialogSuccess");
const ret = response.decode(new Uint8Array(res));
if (ret.code == 0) {
//
console.log(new TextDecoder().decode(ret.data));
ElMessage.success(new TextDecoder().decode(ret.data) || "请求成功");
//
ctx.emit("dialogSuccess");
} else { } else {
console.log(res); ElMessage.error(res.message);
} }
} else { } else {
console.log("error submit!"); console.log("error submit!");
@ -126,42 +110,50 @@ export default {
line-height: 40px; line-height: 40px;
display: flex; display: flex;
> div { >div {
width: 15%; width: 15%;
span { span {
margin-right: 10px; margin-right: 10px;
} }
} }
} }
.tree-div { .tree-div {
height: 780px; height: 780px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.tree { .tree {
width: 20%; width: 20%;
border: 1px solid #f2f2f2; border: 1px solid #f2f2f2;
height: 100%; height: 100%;
padding: 10px; padding: 10px;
} }
.table { .table {
height: 100%; height: 100%;
width: 79%; width: 79%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
.point-table { .point-table {
border: 1px solid #f2f2f2; border: 1px solid #f2f2f2;
padding: 10px; padding: 10px;
} }
.propertie-table { .propertie-table {
padding: 10px; padding: 10px;
border: 1px solid #f2f2f2; border: 1px solid #f2f2f2;
} }
} }
.custom-tree-node { .custom-tree-node {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width: 100%; width: 100%;
.add-icon { .add-icon {
padding-right: 15px; padding-right: 15px;
} }

View File

@ -1,132 +1,61 @@
<template> <template>
<el-dialog <el-dialog v-model="visible" title="点位管理" width="60%" :before-close="closeDialog">
v-model="visible"
title="点位管理"
width="60%"
:before-close="closeDialog"
>
<el-card class="top-title"> <el-card class="top-title">
<span>模板名称{{ addForm.name }}</span> <span>模板名称{{ addForm.name }}</span>
<span>模板描述{{ addForm.description }}</span> <span>模板描述{{ addForm.description }}</span>
<span>模板类型{{ addForm.type }}</span> <span>模板类型{{ addForm.type == 1 ? 'MODBUS' : 'PLC' }}</span>
</el-card> </el-card>
<div class="btns"> <div class="btns">
<div> <div>
<el-button type="primary" @click="saveP"> </el-button> <el-button type="primary" @click="saveP"> </el-button>
<el-button @click="closeDialog"></el-button> <el-button @click="closeDialog"></el-button>
</div> </div>
<div> <div>
<el-button type="primary" @click="importData"> </el-button> <el-button type="primary" @click="importData"> </el-button>
<el-button type="primary" @click="exportData"> </el-button> <el-button type="primary" @click="exportData"> </el-button>
</div> </div>
</div> </div>
<div> <div>
<el-table <el-table :data="propertiesData" height="230" style="width: 100%" border stripe
:data="propertiesData" :header-cell-style="{ background: '#F6F7FC' }">
height="230" <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
style="width: 100%"
border
stripe
:header-cell-style="{ background: '#F6F7FC' }"
>
<el-table-column
prop="name"
label="点位名称"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-input <el-input v-model="scope.row.name" clearable />
v-model="scope.row.name"
clearable
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="address" label="点位地址" align="center" show-overflow-tooltip>
prop="address"
label="点位地址"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-input <el-input v-model="scope.row.address" clearable />
v-model="scope.row.address"
clearable
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="datatype" label="点位类型" align="center" show-overflow-tooltip>
prop="datatype"
label="点位类型"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.datatype" size="mini"> <el-select v-model="scope.row.datatype" size="mini">
<el-option <el-option v-for="item in datatypeArr" :key="item.value" :label="item.label" :value="item.value" />
v-for="item in datatypeArr"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="byteorder" label="字节顺序" align="center" show-overflow-tooltip>
prop="byteorder"
label="字节顺序"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.byteorder" size="mini"> <el-select v-model="scope.row.byteorder" size="mini">
<el-option <el-option v-for="item in byteorderArr" :key="item.value" :label="item.label" :value="item.value" />
v-for="item in byteorderArr"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="multplier" label="缩放系数" align="center" show-overflow-tooltip>
prop="multplier"
label="缩放系数"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-input <el-input v-model="scope.row.multplier" clearable />
v-model="scope.row.multplier"
clearable
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="unit" label="点位单位" align="center" show-overflow-tooltip>
prop="unit"
label="点位单位"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-input <el-input v-model="scope.row.unit" clearable />
v-model="scope.row.unit"
clearable
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="description" label="点位描述" align="center" show-overflow-tooltip>
prop="description"
label="点位描述"
align="center"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<el-input <el-input v-model="scope.row.description" clearable />
v-model="scope.row.description"
clearable
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" show-overflow-tooltip> <el-table-column label="操作" align="center" show-overflow-tooltip>
@ -147,7 +76,7 @@
import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue"; import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
import infoApi from "@/api/infoApi.js"; import infoApi from "@/api/infoApi.js";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { m_point, m_properties, mb_info, response} from '../proto/data/pd' // import { m_point, m_properties, mb_info, response} from '../proto/data/pd'
export default { export default {
props: ["formData", "dialogVisible"], props: ["formData", "dialogVisible"],
emits: ["dialogClose", "dialogSuccess"], emits: ["dialogClose", "dialogSuccess"],
@ -158,44 +87,44 @@ export default {
datatypeArr: [{ datatypeArr: [{
label: 'bool', label: 'bool',
value: 'bool' value: 'bool'
},{ }, {
label: 'int16', label: 'int16',
value: 'int16' value: 'int16'
},{ }, {
label: 'int32', label: 'int32',
value: 'int32' value: 'int32'
},{ }, {
label: 'unit16', label: 'unit16',
value: 'unit16' value: 'unit16'
},{ }, {
label: 'unit32', label: 'unit32',
value: 'unit32' value: 'unit32'
},{ }, {
label: 'float32', label: 'float32',
value: 'float32' value: 'float32'
},{ }, {
label: 'float64', label: 'float64',
value: 'float64' value: 'float64'
}], }],
byteorderArr: [{ byteorderArr: [{
label: 'null', label: 'null',
value: 'null' value: 'null'
},{ }, {
label: '12', label: '12',
value: '12' value: '12'
},{ }, {
label: '21', label: '21',
value: '21' value: '21'
},{ }, {
label: '1234', label: '1234',
value: '1234' value: '1234'
},{ }, {
label: '4321', label: '4321',
value: '4321' value: '4321'
},{ }, {
label: 'ABCD', label: 'ABCD',
value: 'ABCD' value: 'ABCD'
},{ }, {
label: 'DCBA', label: 'DCBA',
value: 'DCBA' value: 'DCBA'
}] }]
@ -210,9 +139,9 @@ export default {
// //
getPointList(); getPointList();
}); });
const getPointList = async() => { const getPointList = async () => {
const parm = mb_info.encode({ const parm = mb_info.encode({
name: state.addForm.name name: state.addForm.name
}).finish(); }).finish();
// //
const parm_data = parm.slice(0, parm.length); const parm_data = parm.slice(0, parm.length);
@ -223,29 +152,29 @@ export default {
state.propertiesData = []; state.propertiesData = [];
propArr.forEach(v => { propArr.forEach(v => {
state.propertiesData.push({ state.propertiesData.push({
name: v.name, name: v.name,
address: v.properties[0].value, address: v.properties[0].value,
datatype: v.properties[1].value, datatype: v.properties[1].value,
byteorder: v.properties[2].value, byteorder: v.properties[2].value,
multplier: v.properties[3].value, multplier: v.properties[3].value,
unit: v.properties[4].value, unit: v.properties[4].value,
description: v.properties[5].value, description: v.properties[5].value,
}) })
}) })
} else { } else {
console.log(res); console.log(res);
} }
}; };
const closeDialog = () => { const closeDialog = () => {
ctx.emit("dialogClose"); ctx.emit("dialogClose");
}; };
const importData = () => {}; const importData = () => { };
const exportData = () => {}; const exportData = () => { };
const saveP = async () => { const saveP = async () => {
if (state.propertiesData.length<1) { if (state.propertiesData.length < 1) {
return ElMessage.error("请添加一条点位"); return ElMessage.error("请添加一条点位");
} }
const newArr = []; const newArr = [];
@ -254,55 +183,53 @@ export default {
name: item.name, name: item.name,
properties: [ properties: [
m_properties.create({ m_properties.create({
name: 'address',value:item.address name: 'address', value: item.address
}), }),
m_properties.create({ m_properties.create({
name: 'datatype',value:item.datatype name: 'datatype', value: item.datatype
}), }),
m_properties.create({ m_properties.create({
name: 'byteorder',value:item.byteorder name: 'byteorder', value: item.byteorder
}), }),
m_properties.create({ m_properties.create({
name: 'multplier',value:item.multplier name: 'multplier', value: item.multplier
}), }),
m_properties.create({ m_properties.create({
name: 'unit',value:item.unit name: 'unit', value: item.unit
}), }),
m_properties.create({ m_properties.create({
name: 'description',value:item.description name: 'description', value: item.description
}) })
] ]
})) }))
}) })
console.log(123, newArr) console.log(123, newArr)
const req_databuf = mb_info.encode({ const param = {
name: state.addForm.name, name: state.addForm.name,
type: state.addForm.type, type: state.addForm.type,
description: state.addForm.description, description: state.addForm.description,
points: newArr points: newArr
}).finish(); }
// const res = await infoApi.addP(param);
const req_data = req_databuf.slice(0, req_databuf.length); if (res.code == 0) {
const res = await infoApi.addP(req_data); ElMessage.success(res.message || "请求成功");
const ret = response.decode(new Uint8Array(res));
if (ret.code == 0) {
console.log(new TextDecoder().decode(ret.data));
ElMessage.success(new TextDecoder().decode(ret.data) || "请求成功");
// //
getPointList(); getPointList();
} else {
ElMessage.error(res.message);
} }
}; };
const addRow = () => { const addRow = () => {
let newRow = { let newRow = {
name: '', name: '',
address: '', address: '',
datatype: 'bool', datatype: 'bool',
byteorder: 'null', byteorder: 'null',
multplier: '', multplier: '',
unit: '', unit: '',
description: '' description: ''
}; };
state.propertiesData.push(newRow); state.propertiesData.push(newRow);
} }
const delData = (index) => { const delData = (index) => {
@ -324,6 +251,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.top-title { .top-title {
width: 100%; width: 100%;
::v-deep .el-card__body { ::v-deep .el-card__body {
width: 100%; width: 100%;
display: flex; display: flex;
@ -331,13 +259,15 @@ export default {
font-weight: 800; font-weight: 800;
font-size: 16px; font-size: 16px;
} }
} }
.btns { .btns {
padding: 15px 0; padding: 15px 0;
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.flex-center { .flex-center {
display: flex; display: flex;
justify-content: center; justify-content: center;

View File

@ -90,7 +90,7 @@ export default {
}, },
{ {
id: 3 - 2, id: 3 - 2,
name: "通讯管理", name: "驱动管理",
index: "/page", index: "/page",
}, },
// { // {

View File

@ -32,26 +32,26 @@ const router = createRouter({
name: 'page', name: 'page',
component: () => import('../views/Page.vue') component: () => import('../views/Page.vue')
}, },
{ // {
path: '/data', // path: '/data',
name: 'data', // name: 'data',
component: () => import('../views/Data.vue') // component: () => import('../views/Data.vue')
}, // },
{ // {
path: '/report', // path: '/report',
name: 'report', // name: 'report',
component: () => import('../views/Report.vue') // component: () => import('../views/Report.vue')
}, // },
{ // {
path: '/transparent', // path: '/transparent',
name: 'transparent', // name: 'transparent',
component: () => import('../views/Transparent.vue') // component: () => import('../views/Transparent.vue')
}, // },
{ // {
path: '/rules', // path: '/rules',
name: 'rules', // name: 'rules',
component: () => import('../views/Rules.vue') // component: () => import('../views/Rules.vue')
} // }
] ]
}) })

View File

@ -48,7 +48,7 @@ axios.interceptors.response.use(
}, },
(error) => { (error) => {
ElMessage.closeAll(); ElMessage.closeAll();
ElMessage.error(error); ElMessage.error("请求错误");
// router.push({ // router.push({
// path: "/login" // path: "/login"
// }); // });

View File

@ -3,37 +3,17 @@
<div class="all-content"> <div class="all-content">
<div class="top-div"> <div class="top-div">
<el-button type="primary" @click="addData"></el-button> <el-button type="primary" @click="addData"></el-button>
</div> </div>
<el-table <el-table :data="tableData" height="730" style="width: 100%" border stripe
:data="tableData" :header-cell-style="{ background: '#F6F7FC' }">
height="730"
style="width: 100%"
border
stripe
:header-cell-style="{ background: '#F6F7FC' }"
>
<el-table-column type="index" label="序号" width="80" align="center" /> <el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column <el-table-column prop="name" label="模板名称" width="240" align="center" show-overflow-tooltip />
prop="name" <el-table-column prop="type" label="模板类型" width="240" align="center" show-overflow-tooltip>
label="模板名称" <template #default="scope">
width="200" <span>{{ scope.row.type === 1 ? 'MODBUS' : 'PLC' }}</span>
align="center" </template>
show-overflow-tooltip </el-table-column>
/> <el-table-column prop="description" label="模板描述" width="600" align="center" show-overflow-tooltip />
<el-table-column
prop="type"
label="模板类型"
width="200"
align="center"
show-overflow-tooltip
/>
<el-table-column
prop="description"
label="模板描述"
width="200"
align="center"
show-overflow-tooltip
/>
<el-table-column label="模板管理" align="center" show-overflow-tooltip> <el-table-column label="模板管理" align="center" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">
<el-button type="info" @click="manageData(scope.row)"> <el-button type="info" @click="manageData(scope.row)">
@ -49,32 +29,21 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<AddMb <AddMb :type="type" :formData="formData" :dialogVisible="dialogVisible" v-if="dialogVisible"
:type="type" @dialogClose="dialogClose" @dialogSuccess="dialogSuccess">
:formData="formData"
:dialogVisible="dialogVisible"
v-if="dialogVisible"
@dialogClose="dialogClose"
@dialogSuccess="dialogSuccess"
>
</AddMb> </AddMb>
<AddPoint <AddPoint :formData="formData1" :dialogVisible="dialogVisible1" v-if="dialogVisible1" @dialogClose="dialogClose"
:formData="formData1" @dialogSuccess="dialogSuccess">
:dialogVisible="dialogVisible1"
v-if="dialogVisible1"
@dialogClose="dialogClose"
@dialogSuccess="dialogSuccess"
>
</AddPoint> </AddPoint>
</el-card> </el-card>
</template> </template>
<script> <script>
import { onMounted, reactive, ref, toRefs } from "vue"; import { onMounted, reactive, ref, toRefs } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import AddMb from "@/components/AddMb.vue"; import AddMb from "@/components/AddMb.vue";
import infoApi from "@/api/infoApi.js"; import infoApi from "@/api/infoApi.js";
import { response, mb_info, mb_list } from '../proto/data/pd' // import { response, mb_info, mb_list } from '../proto/data/pd'
import AddPoint from "@/components/AddPoint.vue"; import AddPoint from "@/components/AddPoint.vue";
export default { export default {
name: "model", name: "model",
@ -101,14 +70,11 @@ export default {
}); });
const getTableData = async () => { const getTableData = async () => {
const res = await infoApi.getMb(); const res = await infoApi.getMb();
const ret = response.decode(new Uint8Array(res)); if (res.code == 0) {
//
if (ret.code == 0) { state.tableData = res.data;
//
state.tableData = mb_list.decode(ret.data).mb;
console.log(mb_list.decode(ret.data).mb);
} else { } else {
console.log(res); console.log(res);
} }
}; };
const editData = (item) => { const editData = (item) => {
@ -124,19 +90,12 @@ export default {
type: "warning", type: "warning",
}) })
.then(async () => { .then(async () => {
const req_databuf = mb_info.encode({ const res = await infoApi.delMb(item);
name: item.name, if (res.code == 0) {
}).finish(); ElMessage.success(res.message || "请求成功");
//
const req_data = req_databuf.slice(0, req_databuf.length);
const res = await infoApi.delMb(req_data);
const ret = response.decode(new Uint8Array(res));
if (ret.code == 0) {
ElMessage.success(res.msg || "请求成功");
getTableData(); getTableData();
} else { } else {
ElMessage.error(res.msg); ElMessage.error(res.message);
} }
}) })
.catch(() => { .catch(() => {
@ -150,7 +109,7 @@ export default {
state.formData = { state.formData = {
name: '', name: '',
description: '', description: '',
type: 'modbus' type: 1
} }
state.type = 'I'; state.type = 'I';
}; };
@ -186,7 +145,8 @@ export default {
.all-content { .all-content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.top-div { .top-div {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;

View File

@ -33,7 +33,11 @@
width="200" width="200"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
/> >
<template #default="scope">
<span>{{ qudongOptions[scope.row.type]}}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
prop="host" prop="host"
label="主机地址" label="主机地址"
@ -200,18 +204,15 @@ export default {
type: "warning", type: "warning",
}) })
.then(async () => { .then(async () => {
const req_databuf = tx_info.encode({ let param = {
name: state.formData.name, name: state.formData.name
}).finish(); }
// const res = await infoApi.delTx(param);
const req_data = req_databuf.slice(0, req_databuf.length); if (res.code == 0) {
const res = await infoApi.delTx(req_data); ElMessage.success(res.message || "删除成功");
const ret = response.decode(new Uint8Array(res));
if (ret.code == 0) {
ElMessage.success(res.msg || "删除成功");
getTableData(); getTableData();
} else { } else {
ElMessage.error(res.msg | "删除失败"); ElMessage.error(res.message | "删除失败");
} }
}) })
.catch(() => { .catch(() => {
@ -249,7 +250,7 @@ export default {
dialogSuccess, dialogSuccess,
changeStatus, changeStatus,
dialogClose1, dialogClose1,
dialogSuccess1, dialogSuccess1
}; };
}, },
}; };