1 line
72 KiB
JSON
1 line
72 KiB
JSON
{"remainingRequest":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\babel-loader\\lib\\index.js!E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\视频边缘计算管理平台\\TransFlow\\src\\views\\general\\network.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\视频边缘计算管理平台\\TransFlow\\src\\views\\general\\network.vue","mtime":1679361014437},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\babel-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.typed.uint8-array\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.regexp.split\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n data: function data() {\n var validateIPAddress = function validateIPAddress(rule, value, callback) {\n if (value == null) {\n return callback(new Error('IP地址不能为空'));\n }\n\n var regexp = /^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$/;\n var valdata = value.split(',');\n var isCorrect = true;\n\n if (valdata.length) {\n for (var i = 0; i < valdata.length; i++) {\n if (regexp.test(valdata[i]) == false) {\n isCorrect = false;\n }\n }\n }\n\n if (!isCorrect) {\n callback(new Error('请输入正确的IP地址'));\n } else {\n callback();\n }\n };\n\n var validateIPAddressYes = function validateIPAddressYes(rule, value, callback) {\n if (value == null) {\n return callback(new Error('IP地址不能为空'));\n }\n\n var regexp = /^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$/; // value.split(\"/\")[0]\n\n var valdata = value.split('/')[0];\n var valdata2 = value.split('/')[1];\n console.log(\"valdata\", valdata);\n console.log(\"valdata2\", valdata2);\n var isCorrect = true;\n\n if (valdata.length) {\n for (var i = 0; i < valdata.length; i++) {\n if (regexp.test(valdata[i]) == false) {\n if (!Number(valdata2)) {\n // callback(new Error('请输入整数,值为[1,32]'));\n isCorrect = false;\n callback(new Error('请输入正确的IP地址'));\n } else {\n if (valdata2 < 1 || valdata2 > 32) {\n callback(new Error('请输入整数,值为[1,32]'));\n isCorrect = false;\n } else {\n callback();\n }\n }\n }\n }\n }\n };\n\n var metric = function metric(rule, value, callback) {\n if (!value) {\n return callback(new Error('输入不可以为空'));\n }\n\n setTimeout(function () {\n if (!Number(value)) {\n callback(new Error('请输入正整数'));\n } else {\n var re = /^[0-9]*[1-9][0-9]*$/;\n var rsCheck = re.test(value);\n\n if (!rsCheck) {\n callback(new Error('请输入正整数'));\n } else {\n callback();\n }\n }\n }, 0);\n };\n\n return {\n columnLabel: '',\n //要增加的列名\n columnPropIndex: 0,\n //列属性自增\n columnData: [],\n //列标题数组\n rules: {\n gateway4: [{\n required: true,\n pattern: /^(?:(?:1[0-9][0-9]\\.)|(?:2[0-4][0-9]\\.)|(?:25[0-5]\\.)|(?:[1-9][0-9]\\.)|(?:[0-9]\\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$/,\n message: \"请输入正确的IP地址\",\n trigger: \"blur\"\n }],\n via: [{\n required: true,\n pattern: /^(?:(?:1[0-9][0-9]\\.)|(?:2[0-4][0-9]\\.)|(?:25[0-5]\\.)|(?:[1-9][0-9]\\.)|(?:[0-9]\\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$/,\n message: \"请输入正确的IP地址\",\n trigger: \"blur\"\n }],\n // via:[{ required: true, validator: validateIPAddress, trigger: \"blur\" }]\n addressDNS: [{\n required: true,\n validator: validateIPAddress,\n trigger: \"blur\"\n }],\n address: [{\n required: true,\n validator: validateIPAddressYes,\n trigger: \"blur\"\n }],\n to: [{\n required: true,\n validator: validateIPAddressYes,\n trigger: \"blur\"\n }],\n metric: [{\n required: true,\n validator: metric,\n trigger: \"blur\"\n }]\n },\n optionsa: [{\n value: '1',\n label: '全局'\n }],\n tableRouter: [{\n name: 'Router0',\n metric: '',\n to: 'e.g.10.0.0.0/8',\n via: 'e.g.192.168.0.1',\n disabled: true\n }, {\n name: 'Router0',\n metric: '',\n to: 'e.g.10.0.0.0/8',\n via: 'e.g.192.168.0.1',\n disabled: true\n }, {\n name: 'Router0',\n metric: '',\n to: 'e.g.10.0.0.0/8',\n via: 'e.g.192.168.0.1',\n disabled: true\n }, {\n name: 'Router0',\n metric: '',\n to: 'e.g.10.0.0.0/8',\n via: 'e.g.192.168.0.1',\n disabled: true\n }],\n sizeForm: {\n name: 'eth0',\n region: '00:11:14:1a:62:fe',\n MTU: '1500',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: true,\n ip: '192.168.1.5/24',\n ip1: '192.168.50.10/24',\n ip2: 'e.g.192.168.50.10/24',\n ip3: 'e.g.192.168.50.10/24',\n ip4: 'e.g.192.168.50.10/24',\n dns1: 'e.g.1.1.1.1',\n dns2: 'e.g.1.0.0.1',\n dns3: 'e.g.1.0.0.1',\n status: 'NO',\n // mtu:'00:11:14:1a:62:fe',\n // mac:'00:11:14:1a:62:fe',\n // moren:'e.g.1.0.0.1',\n // speed:'1000',\n gateway4: '',\n mtu: '',\n mac: '',\n moren: '',\n speed: '',\n tableRouter: [// {\n // name: 'Router0',\n // metric: '',\n // to:'',\n // via:'',\n // disabled:true\n // },\n // {\n // name: 'Router0',\n // metric: '',\n // to:'',\n // via:'',\n // disabled:true\n // },\n ],\n tableData: [// {\n // id:'',\n // address: '',\n // },\n // {\n // id:'',\n // address: '',\n // },\n // {\n // id:'',\n // address: '',\n // }\n ],\n tableDataDNS: [// {\n // id:'',\n // address: '',\n // },\n // {\n // id:'',\n // address: '',\n // }\n ]\n },\n options: [{\n value: 'eth0',\n label: 'eth0'\n } // {\n // value: 'wlan0',\n // label: 'wlan0'\n // }\n ],\n //数据获取\n netWork: [{\n name: 'eth0',\n region: '00:11:14:1a:62:fe',\n MTU: '1500',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: true,\n ip: '192.168.1.5/24',\n gateway4: '192.168.1.5',\n ip1: '192.168.50.10/24',\n ip2: 'e.g.192.168.50.10/24',\n ip3: 'e.g.192.168.50.10/24',\n ip4: 'e.g.192.168.50.10/24',\n dns1: 'e.g.1.1.1.1',\n dns2: 'e.g.1.0.0.1',\n dns3: 'e.g.1.0.0.1',\n status: 'YES',\n mtu: '00:11:14:1a:62:fe',\n mac: '00:11:14:1a:62:fe',\n moren: 'e.g.1.0.0.1',\n speed: '1000'\n }, {\n name: 'wlan0',\n region: '00:11:14:1a:62:fe',\n MTU: '1500',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: true,\n ip: '192.168.1.5/24',\n gateway4: '192.168.1.5',\n ip1: '192.168.50.10/24',\n ip2: 'e.g.192.168.50.10/24',\n ip3: 'e.g.192.168.50.10/24',\n ip4: 'e.g.192.168.50.10/24',\n dns1: 'e.g.1.1.1.1',\n dns2: 'e.g.1.0.0.1',\n dns3: 'e.g.1.0.0.1',\n status: 'YES',\n mtu: '00:11:14:1a:62:fe',\n mac: '00:11:14:1a:62:fe',\n moren: 'e.g.1.0.0.1',\n speed: '1000'\n }],\n tableData: [{\n // agreement: 'NO',\n // Range: '1',\n id: '',\n address: '192.168.50.10/24' // term: '永久',\n // disabled:true\n\n }, {\n // agreement: 'YES',\n // Range: '1',\n id: '',\n address: '192.168.1.5/24' // term: '17小时',\n // disabled:true\n\n }, {\n // agreement: 'YES',\n // Range: '1',\n id: '',\n address: '192.168.1.5/24' // term: '17小时',\n // disabled:true\n\n }],\n tableDataDNS: [{\n // agreement: 'NO',\n // Range: '1',\n id: '',\n address: '192.168.50.10/24' // term: '永久',\n // disabled:true\n\n }, {\n // agreement: 'YES',\n // Range: '1',\n id: '',\n address: '192.168.1.5/24' // term: '17小时',\n // disabled:true\n\n }],\n tableDataPanduan: [],\n optionsData: 'eth0'\n };\n },\n watch: {},\n created: function created() {\n this.createMqtt();\n },\n mounted: function mounted() {// window.setInterval( () => { //每隔30秒自动请求一次方法 this.getdata() ,保证数据实时的更新\n // \tthis.publishClient()\n // }, 1000 * 5 )\n },\n methods: {\n //点击保存\n commit: function commit(tableRouter, tableData, tableDataDNS, sizeForm) {\n var _this = this;\n\n console.log(\"tableData\", tableData);\n console.log(\"tableDataDNS\", tableDataDNS);\n console.log(\"sizeForm\", sizeForm);\n var tableRouterN = tableRouter.map(function (value) {\n return value.to + ',' + value.via + ',' + value.metric;\n });\n var tableDataN = tableData.map(function (item) {\n return item.address;\n });\n var tableDataDNSN = tableDataDNS.map(function (item) {\n return item.address;\n });\n var ner = {\n type: \"netplanSet\",\n ethName: \"eth0\",\n dhcp4: false,\n addresses: tableDataN,\n //静态地址\n gateway4: sizeForm.gateway4,\n nameservers: tableDataDNSN,\n //DNS\n routes: tableRouterN //静态路由\n\n };\n this.$confirm('此操作将重新设置网络, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(function () {\n // this.$message({\n // type: 'success',\n // message: '删除成功!'\n // });\n console.log(\"JSON.stringify(ner)\", JSON.stringify(ner)); // window.publish('Contorl_client',JSON.stringify(ner)); \n }).catch(function () {\n _this.$message({\n type: 'info',\n message: '已取消'\n });\n }); // \n },\n //添加行静态路由\n addRows: function addRows() {\n var circle = this.sizeForm.tableRouter[0]; //取出数组中第一个对象\n\n if (circle) {\n var newObj = {};\n\n for (var key in circle) {\n //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\n newObj[key] = '';\n }\n\n this.sizeForm.tableRouter.splice(this.sizeForm.tableRouter.length, 0, newObj);\n }\n },\n //删除行静态路由\n deleteRows: function deleteRows(scope) {\n this.sizeForm.tableRouter.splice(scope.$index, 1);\n },\n //添加行静态地址\n addRowsTableData: function addRowsTableData() {\n var circle = this.sizeForm.tableData[0]; //取出数组中第一个对象\n\n if (circle) {\n var newObj = {};\n\n for (var key in circle) {\n //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\n newObj[key] = '';\n } // this.sizeForm.tableData.splice(this.sizeForm.tableData.length-1, 0, newObj);\n\n\n this.sizeForm.tableData.splice(this.sizeForm.tableData.length, 0, newObj);\n }\n },\n deleteRowsTableData: function deleteRowsTableData(scope) {\n this.sizeForm.tableData.splice(scope.$index, 1);\n },\n //添加DNS\n addRowsDNS: function addRowsDNS() {\n var circle = this.sizeForm.tableDataDNS[0]; //取出数组中第一个对象\n\n if (circle) {\n var newObj = {};\n\n for (var key in circle) {\n //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\n newObj[key] = '';\n }\n\n this.sizeForm.tableDataDNS.splice(this.sizeForm.tableDataDNS.length, 0, newObj);\n }\n },\n deleteRowsDNS: function deleteRowsDNS(scope) {\n this.sizeForm.tableDataDNS.splice(scope.$index, 1);\n },\n\n /** 创建mqtt */\n createMqtt: function createMqtt() {\n var _this2 = this;\n\n // window.publish('Contorl_client',JSON.stringify({\"type\":\"getNet\"})); \n //创建链接,接收数据\n var topicSends = ['Contorl_server'];\n window.PubScribe(topicSends, -1, this.realInfo);\n setTimeout(function () {\n _this2.publishClient();\n }, 5000);\n },\n publishClient: function publishClient() {\n window.publish('Contorl_client', JSON.stringify({\n \"type\": \"getNet\"\n }));\n },\n\n /** 实时数据分类 */\n realInfo: function realInfo(topic, message) {\n // console.log(\"topic\",topic)\n switch (topic) {\n case \"Contorl_server\":\n try {\n var utf8decoder = new TextDecoder();\n var u8arr = new Uint8Array(message);\n var temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\n\n var msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\n\n if (msg.type == 'getNet') {\n console.log(\"msg\", msg); // const netaddres = JSON.parse(msg.netaddres)\n // console.log(\"netaddres\",netaddres)\n // const netstates = JSON.parse(msg.netstates)\n\n this.changeNetstates(msg);\n }\n } catch (error) {}\n\n break;\n }\n },\n changeNetstates: function changeNetstates(msg) {\n console.log(\"msg\", msg); // var optionsDataN = this.optionsData\n // this.sizeForm.mtu = msg.netstates【this.optionsData}.mtu\n\n console.log(\" msg.netstates[this.optionsData]\", msg.netstates[this.optionsData]);\n\n if (msg.netstates[this.optionsData] != undefined) {\n this.sizeForm.mtu = msg.netstates[this.optionsData].mtu;\n var data = msg.netaddres[this.optionsData];\n this.sizeForm.speed = msg.netstates[this.optionsData].speed;\n this.tableDataPanduan = [];\n var optionN = Object.keys(msg.netplan);\n var optionNrr = optionN.map(function (value, index) {\n return {\n value: value,\n label: value\n };\n });\n console.log(\"optionNrr\", optionNrr);\n this.options = optionNrr;\n\n if (msg.netstates[this.optionsData].isup == true) {\n this.sizeForm.status = 'YES';\n } else {\n this.sizeForm.status = 'NO';\n }\n\n for (var i = 0; i < data.length; i++) {\n if (data[i].family == 17) {\n this.sizeForm.mac = data[i].address;\n } else if (data[i].family == 2) {\n this.tableDataPanduan.push(data[i]);\n }\n }\n\n if (this.tableDataPanduan.length == msg.netplan[this.optionsData].addresses.length) {\n for (var _i = 0; _i < this.tableDataPanduan.length; _i++) {\n for (var b = 0; b < msg.netplan[this.optionsData].addresses.length; b++) {\n // console.log(\"str1\",netstates.netplan.eth0.addresses[b].substring(0,netstates.netplan.eth0.addresses[b].indexOf(\"/\")))\n var ipos = msg.netplan[this.optionsData].addresses[b].indexOf(\"/\"); //指定开始的字符串\n\n var str1 = msg.netplan[this.optionsData].addresses[b].substring(0, ipos);\n\n if (this.tableDataPanduan[_i].address == str1) {} else {// this.$message({\n // message: '静态地址有误',\n // type: 'warning'\n // });\n }\n }\n }\n }\n\n var addressesN = msg.netplan[this.optionsData].addresses.map(function (value, index) {\n return {\n address: value,\n id: index\n };\n });\n this.sizeForm.tableData = addressesN; //获取静态路由\n\n var dataJ = msg.netplan[this.optionsData].routes;\n this.sizeForm.tableRouter = [];\n\n for (var r = 0; r < dataJ.length; r++) {\n this.sizeForm.tableRouter.push(dataJ[r]);\n }\n\n this.sizeForm.gateway4 = msg.netplan[this.optionsData].gateway4;\n var legend = msg.netplan[this.optionsData].nameservers.addresses.map(function (value, index) {\n return {\n address: value,\n id: index\n };\n });\n this.sizeForm.tableDataDNS = legend;\n } else {\n this.sizeForm = {\n name: this.optionsData,\n region: '00:11:14:1a:62:fe',\n MTU: '1500',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: true,\n status: 'NO',\n gateway4: msg.netplan[this.optionsData].gateway4,\n mtu: '',\n mac: '',\n moren: '',\n speed: ''\n }; //获取静态路由\n\n var dataJ = msg.netplan[this.optionsData].routes;\n this.sizeForm.tableRouter = [];\n\n for (var _r = 0; _r < dataJ.length; _r++) {\n this.sizeForm.tableRouter.push(dataJ[_r]);\n }\n\n var addressesN = msg.netplan[this.optionsData].addresses.map(function (value, index) {\n return {\n address: value,\n id: index\n };\n });\n this.sizeForm.tableData = addressesN;\n var legend = msg.netplan[this.optionsData].nameservers.addresses.map(function (value, index) {\n return {\n address: value,\n id: index\n };\n });\n this.sizeForm.tableDataDNS = legend;\n }\n },\n changeName: function changeName(val) {\n console.log(\"val\", val);\n this.sizeForm.name = val;\n this.optionsData = val;\n this.publishClient();\n },\n gernerateClass: function gernerateClass(status) {\n console.log(\"status\", status);\n\n if (status == 'YES') {\n return 'status';\n } else {\n return 'statusNo';\n }\n },\n changeVal: function changeVal(val, e) {\n this.sizeForm.tableData[e].disabled = false;\n },\n changeValT: function changeValT(val, e) {\n this.sizeForm.tableRouter[e].disabled = false;\n },\n handleClick: function handleClick(scope, e) {\n console.log(scope, 'scope');\n }\n }\n};",{"version":3,"sources":["network.vue"],"names":[],"mappings":"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","sourcesContent":["<template>\r\n <div class=\"content-box\">\r\n <div class=\"container\">\r\n <el-form ref=\"sizeForm\" :model=\"sizeForm\" :rules=\"rules\" label-width=\"140px\">\r\n <p class=\"title\">界面</p>\r\n <el-form-item label=\"界面:\" class=\"formItem\">\r\n <el-col :span=\"6\">\r\n <el-select v-model=\"sizeForm.name\" placeholder=\"请选择\" @change=\"changeName($event)\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"> </el-option>\r\n </el-select>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"MAC地址:\" class=\"formItem\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.mac\" disabled></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"MTU:\" class=\"formItem\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.mtu\" disabled></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"网络速度:\" class=\"formItem\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.speed\" disabled></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <p class=\"title\">运行状态</p>\r\n <el-form-item label=\"启用:\" class=\"formItem\">\r\n <el-col :span=\"0.9\" style=\"diaplay: flex\">\r\n <div :class=\"gernerateClass(sizeForm.status)\"></div>\r\n </el-col>\r\n <el-col :span=\"2\" style=\"diaplay: flex\">\r\n <span style=\"margin-left: 10px\">{{sizeForm.status}}</span>\r\n </el-col>\r\n </el-form-item>\r\n <!-- <el-form-item label=\"连接:\">\r\n <el-col :span=\"0.9\" style=\"diaplay: flex\">\r\n <div class=\"status\" style=\"width: 10px; height: 10px; border-radius: 50%; background: green\"></div>\r\n </el-col>\r\n <el-col :span=\"2\" style=\"diaplay: flex\">\r\n <span style=\"margin-left: 10px\">接通</span>\r\n </el-col>\r\n </el-form-item> -->\r\n <!-- <p class=\"title\">IPV4</p> -->\r\n <p class=\"title\">静态地址</p>\r\n <el-button type=\"primary\" @click=\"addRowsTableData()\" style=\"margin-bottom:10px\">新增</el-button>\r\n <el-table :data=\"sizeForm.tableData\" border style=\"width: 95%\">\r\n <el-table-column prop=\"address\" label=\"地址\">\r\n <template slot-scope=\"scope\">\r\n <!-- <el-input v-model=\"scope.row.address\" @change=\"changeVal(scope.row,scope.$index)\"></el-input> -->\r\n <el-form-item :prop=\"'tableData.'+ scope.$index + '.address'\" :rules=\"rules.address\" class=\"tableFormItem\">\r\n <el-input v-model.trim=\"scope.row.address\"\r\n placeholder=\"例:172.1.1.16/24\" :disabled=\"scope.$index ==0\"/>\r\n </el-form-item>\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column prop=\"agreement\" label=\"DHCP\"> \r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.agreement\" @change=\"changeVal(scope.row,scope.$index)\"></el-input>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"Range\" label=\"范围\">\r\n <template slot-scope=\"scope\">\r\n <el-select v-model=\"scope.row.Range\" placeholder=\"请选择\" @change=\"changeVal(scope.row,scope.$index)\">\r\n <el-option v-for=\"item in optionsa\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"> </el-option>\r\n </el-select>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"term\" label=\"期限\"> \r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.term\" @change=\"changeVal(scope.row,scope.$index)\"></el-input>\r\n </template>\r\n </el-table-column> -->\r\n <el-table-column\r\n fixed=\"right\"\r\n label=\"操作\"\r\n width=\"350\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <!-- <el-button @click=\"deleteRowsTableData(scope)\" v-if=\"scope.$index < sizeForm.tableData.length-1\" type=\"text\" size=\"small\">删除行\r\n </el-button> -->\r\n <el-button @click=\"deleteRowsTableData(scope)\" v-if=\"scope.$index != 0\" type=\"text\" size=\"small\">删除行\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <!-- <p style=\"margin-top: 10px\" class=\"title\">DHCP</p>\r\n <el-form-item label=\"启用:\">\r\n <el-col :span=\"2\" style=\"diaplay: flex\">\r\n <el-switch v-model=\"sizeForm.desc\" active-color=\"#13ce66\" inactive-color=\"#ff4949\"> </el-switch>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"网关:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.gateway\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"分配IP:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.ip\"></el-input>\r\n </el-col>\r\n </el-form-item> -->\r\n <div style=\"width:100%\" v-if=\"sizeForm.desc == true\">\r\n <!-- <p class=\"title\">静态地址</p>\r\n <el-form-item label=\"IP1:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.ip1\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"IP2:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.ip2\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"IP3:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.ip3\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"IP4:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.ip4\"></el-input>\r\n </el-col>\r\n </el-form-item> -->\r\n <!-- <el-form-item >\r\n <el-col :span=\"6\">\r\n <el-button type=\"primary\" size=\"small\" @click=\"commit()\">保存</el-button>\r\n </el-col>\r\n </el-form-item> -->\r\n <p class=\"title\">默认网关</p>\r\n <el-form-item label=\"默认网关:\" prop=\"gateway4\" class=\"formItem\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.gateway4\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <p class=\"title\">静态路由</p>\r\n <el-button type=\"primary\" @click=\"addRows()\" style=\"margin-bottom:10px\">新增</el-button>\r\n <el-table :data=\"sizeForm.tableRouter\" border style=\"width: 95%\">\r\n <!-- <el-table-column prop=\"name\" label=\"名称\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.name\" @change=\"changeValT(scope.row,scope.$index)\"></el-input>\r\n </template>\r\n </el-table-column> -->\r\n <!-- <el-table-column type=\"index\" label=\"序号\" fixed align='center'>\r\n </el-table-column> -->\r\n <el-table-column prop=\"to\" label=\"to\" > \r\n <template slot-scope=\"scope\" >\r\n <!-- <el-input v-model=\"scope.row.to\" @change=\"changeValT(scope.row,scope.$index)\"></el-input> -->\r\n <el-form-item :prop=\"'tableRouter.'+ scope.$index + '.to'\" :rules=\"rules.to\" class=\"tableFormItem\">\r\n <el-input v-model.trim=\"scope.row.to\"\r\n placeholder=\"例:172.1.1.16/24\" />\r\n </el-form-item>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"via\" label=\"via\" >\r\n <template slot-scope=\"scope\">\r\n <!-- <el-input v-model=\"scope.row.via\" @change=\"changeValT(scope.row,scope.$index)\"></el-input> -->\r\n <el-form-item :prop=\"'tableRouter.'+ scope.$index + '.via'\" :rules=\"rules.via\" class=\"tableFormItem\">\r\n <el-input v-model.trim=\"scope.row.via\"\r\n placeholder=\"例:172.1.1.16\" />\r\n </el-form-item>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"metric\" label=\"metric\">\r\n <template slot-scope=\"scope\">\r\n <!-- <el-input v-model=\"scope.row.metric\" @change=\"changeValT(scope.row,scope.$index)\"></el-input> -->\r\n <el-form-item :prop=\"'tableRouter.'+ scope.$index + '.metric'\" :rules=\"rules.metric\" class=\"tableFormItem\">\r\n <el-input v-model.trim=\"scope.row.metric\"\r\n placeholder=\"例:100\" />\r\n </el-form-item>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n fixed=\"right\"\r\n label=\"操作\"\r\n width=\"350\"\r\n >\r\n <!-- <template slot-scope=\"scope\" >\r\n <el-button @click=\"handleClick(scope.row)\" type=\"primary\" :disabled=\"scope.row.disabled\" size=\"small\">确认</el-button>\r\n </template> -->\r\n <template slot-scope=\"scope\">\r\n <el-button @click=\"deleteRows(scope)\" v-if=\"scope.$index < sizeForm.tableRouter.length\" type=\"text\" size=\"small\">删除行\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <p style=\"margin-top: 10px\" class=\"title\">DNS服务</p>\r\n \r\n <!-- <el-form-item v-for=\"(item,index) in sectionals\" :label=\"DNS\"+index :key=\"item\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.dns1\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"DNS2:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.dns2\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"DNS3:\">\r\n <el-col :span=\"6\">\r\n <el-input v-model=\"sizeForm.dns3\"></el-input>\r\n </el-col>\r\n </el-form-item> -->\r\n <el-button type=\"primary\" @click=\"addRowsDNS()\" style=\"margin-bottom:10px\">新增</el-button>\r\n <el-table :data=\"sizeForm.tableDataDNS\" border style=\"width: 95%\">\r\n \r\n <el-table-column prop=\"address\" label=\"地址\">\r\n <template slot-scope=\"scope\">\r\n <!-- <el-input v-model=\"scope.row.address\" @change=\"changeVal(scope.row,scope.$index)\"></el-input> -->\r\n <el-form-item :prop=\"'tableDataDNS.'+ scope.$index + '.address'\" :rules=\"rules.addressDNS\" class=\"tableFormItem\">\r\n <el-input v-model.trim=\"scope.row.address\"\r\n placeholder=\"例:172.1.1.16\" />\r\n </el-form-item>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n fixed=\"right\"\r\n label=\"操作\"\r\n width=\"350\"\r\n >\r\n <template slot-scope=\"scope\" >\r\n <el-button @click=\"deleteRowsDNS(scope)\" v-if=\"scope.$index < sizeForm.tableDataDNS.length\" type=\"text\" size=\"small\">删除行\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <!-- <el-form-item >\r\n <el-col :span=\"6\"> -->\r\n <el-button type=\"primary\" @click=\"commit(sizeForm.tableRouter,sizeForm.tableData,sizeForm.tableDataDNS,sizeForm)\" style=\"margin-top:10px\">保存</el-button>\r\n <!-- </el-col>\r\n </el-form-item> -->\r\n </div>\r\n </el-form>\r\n </div>\r\n </div>\r\n</template>\r\n \r\n <script>\r\n \r\nexport default {\r\n data() {\r\n let validateIPAddress = (rule, value, callback) => {\r\n if (value == null) {\r\n return callback(new Error('IP地址不能为空'));\r\n }\r\n let regexp = /^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$/;\r\n let valdata = value.split(',');\r\n let isCorrect = true;\r\n if (valdata.length) {\r\n for (let i = 0; i < valdata.length; i++) {\r\n if (regexp.test(valdata[i]) == false) {\r\n isCorrect = false;\r\n }\r\n }\r\n }\r\n if (!isCorrect) {\r\n callback(new Error('请输入正确的IP地址'));\r\n } else {\r\n callback()\r\n }\r\n }\r\n let validateIPAddressYes = (rule, value, callback) => {\r\n if (value == null) {\r\n return callback(new Error('IP地址不能为空'));\r\n }\r\n let regexp = /^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$/;\r\n // value.split(\"/\")[0]\r\n let valdata = value.split('/')[0];\r\n let valdata2 = value.split('/')[1];\r\n console.log(\"valdata\",valdata)\r\n console.log(\"valdata2\",valdata2)\r\n let isCorrect = true;\r\n if (valdata.length) {\r\n for (let i = 0; i < valdata.length; i++) {\r\n if (regexp.test(valdata[i]) == false) {\r\n if (!Number(valdata2)) {\r\n // callback(new Error('请输入整数,值为[1,32]'));\r\n isCorrect = false;\r\n callback(new Error('请输入正确的IP地址'));\r\n } else {\r\n if (valdata2 < 1 || valdata2 > 32) {\r\n callback(new Error('请输入整数,值为[1,32]'));\r\n isCorrect = false;\r\n } else {\r\n callback();\r\n }\r\n }\r\n \r\n }\r\n }\r\n }\r\n }\r\n let metric = (rule, value, callback) =>{\r\n if (!value) {\r\n return callback(new Error('输入不可以为空'));\r\n }\r\n setTimeout(() => {\r\n if (!Number(value)) {\r\n callback(new Error('请输入正整数'));\r\n } else {\r\n const re = /^[0-9]*[1-9][0-9]*$/;\r\n const rsCheck = re.test(value);\r\n if (!rsCheck) {\r\n callback(new Error('请输入正整数'));\r\n } else {\r\n callback();\r\n }\r\n }\r\n }, 0);\r\n}\r\n\r\n return {\r\n columnLabel: '', //要增加的列名\r\n columnPropIndex: 0, //列属性自增\r\n columnData: [],//列标题数组\r\n rules: {\r\n gateway4: [{ required: true, pattern: /^(?:(?:1[0-9][0-9]\\.)|(?:2[0-4][0-9]\\.)|(?:25[0-5]\\.)|(?:[1-9][0-9]\\.)|(?:[0-9]\\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$/,message: \"请输入正确的IP地址\", trigger: \"blur\"}],\r\n via: [{ required: true, pattern: /^(?:(?:1[0-9][0-9]\\.)|(?:2[0-4][0-9]\\.)|(?:25[0-5]\\.)|(?:[1-9][0-9]\\.)|(?:[0-9]\\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$/,message: \"请输入正确的IP地址\", trigger: \"blur\"}],\r\n // via:[{ required: true, validator: validateIPAddress, trigger: \"blur\" }]\r\n addressDNS:[{ required: true, validator: validateIPAddress, trigger: \"blur\" }], \r\n address:[{ required: true, validator: validateIPAddressYes, trigger: \"blur\" }],\r\n to:[{ required: true, validator: validateIPAddressYes, trigger: \"blur\" }],\r\n metric:[{ required: true, validator: metric, trigger: \"blur\" }],\r\n }, \r\n \r\n\r\n optionsa:[\r\n {\r\n value: '1',\r\n label: '全局'\r\n } \r\n ],\r\n tableRouter: [\r\n {\r\n name: 'Router0',\r\n metric: '',\r\n to:'e.g.10.0.0.0/8',\r\n via:'e.g.192.168.0.1',\r\n disabled:true\r\n },\r\n {\r\n name: 'Router0',\r\n metric: '',\r\n to:'e.g.10.0.0.0/8',\r\n via:'e.g.192.168.0.1',\r\n disabled:true\r\n },\r\n {\r\n name: 'Router0',\r\n metric: '',\r\n to:'e.g.10.0.0.0/8',\r\n via:'e.g.192.168.0.1',\r\n disabled:true\r\n },\r\n {\r\n name: 'Router0',\r\n metric: '',\r\n to:'e.g.10.0.0.0/8',\r\n via:'e.g.192.168.0.1',\r\n disabled:true\r\n }\r\n ],\r\n sizeForm: {\r\n name: 'eth0',\r\n region: '00:11:14:1a:62:fe',\r\n MTU: '1500',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: true,\r\n ip: '192.168.1.5/24',\r\n ip1: '192.168.50.10/24',\r\n ip2: 'e.g.192.168.50.10/24',\r\n ip3: 'e.g.192.168.50.10/24',\r\n ip4: 'e.g.192.168.50.10/24',\r\n dns1: 'e.g.1.1.1.1',\r\n dns2: 'e.g.1.0.0.1',\r\n dns3: 'e.g.1.0.0.1',\r\n status:'NO',\r\n // mtu:'00:11:14:1a:62:fe',\r\n // mac:'00:11:14:1a:62:fe',\r\n // moren:'e.g.1.0.0.1',\r\n // speed:'1000',\r\n gateway4: '',\r\n mtu:'',\r\n mac:'',\r\n moren:'',\r\n speed:'',\r\n tableRouter: [\r\n // {\r\n // name: 'Router0',\r\n // metric: '',\r\n // to:'',\r\n // via:'',\r\n // disabled:true\r\n // },\r\n // {\r\n // name: 'Router0',\r\n // metric: '',\r\n // to:'',\r\n // via:'',\r\n // disabled:true\r\n // },\r\n ],\r\n tableData: [\r\n // {\r\n // id:'',\r\n // address: '',\r\n // },\r\n // {\r\n\r\n // id:'',\r\n // address: '',\r\n // },\r\n // {\r\n // id:'',\r\n // address: '',\r\n // }\r\n ],\r\n tableDataDNS: [\r\n // {\r\n // id:'',\r\n // address: '',\r\n // },\r\n // {\r\n // id:'',\r\n // address: '',\r\n // }\r\n ],\r\n },\r\n options: [\r\n {\r\n value: 'eth0',\r\n label: 'eth0'\r\n },\r\n // {\r\n // value: 'wlan0',\r\n // label: 'wlan0'\r\n // }\r\n ],\r\n //数据获取\r\n netWork:[\r\n {\r\n name: 'eth0',\r\n region: '00:11:14:1a:62:fe',\r\n MTU: '1500',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: true,\r\n ip: '192.168.1.5/24',\r\n gateway4: '192.168.1.5',\r\n ip1: '192.168.50.10/24',\r\n ip2: 'e.g.192.168.50.10/24',\r\n ip3: 'e.g.192.168.50.10/24',\r\n ip4: 'e.g.192.168.50.10/24',\r\n dns1: 'e.g.1.1.1.1',\r\n dns2: 'e.g.1.0.0.1',\r\n dns3: 'e.g.1.0.0.1',\r\n status:'YES',\r\n mtu:'00:11:14:1a:62:fe',\r\n mac:'00:11:14:1a:62:fe',\r\n moren:'e.g.1.0.0.1',\r\n speed:'1000'\r\n },\r\n {\r\n name: 'wlan0',\r\n region: '00:11:14:1a:62:fe',\r\n MTU: '1500',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: true,\r\n ip: '192.168.1.5/24',\r\n gateway4: '192.168.1.5',\r\n ip1: '192.168.50.10/24',\r\n ip2: 'e.g.192.168.50.10/24',\r\n ip3: 'e.g.192.168.50.10/24',\r\n ip4: 'e.g.192.168.50.10/24',\r\n dns1: 'e.g.1.1.1.1',\r\n dns2: 'e.g.1.0.0.1',\r\n dns3: 'e.g.1.0.0.1',\r\n status:'YES',\r\n mtu:'00:11:14:1a:62:fe',\r\n mac:'00:11:14:1a:62:fe',\r\n moren:'e.g.1.0.0.1',\r\n speed:'1000'\r\n } \r\n ],\r\n tableData: [\r\n {\r\n // agreement: 'NO',\r\n // Range: '1',\r\n id:'',\r\n address: '192.168.50.10/24',\r\n // term: '永久',\r\n // disabled:true\r\n },\r\n {\r\n // agreement: 'YES',\r\n // Range: '1',\r\n id:'',\r\n address: '192.168.1.5/24',\r\n // term: '17小时',\r\n // disabled:true\r\n },\r\n {\r\n // agreement: 'YES',\r\n // Range: '1',\r\n id:'',\r\n address: '192.168.1.5/24',\r\n // term: '17小时',\r\n // disabled:true\r\n }\r\n ],\r\n tableDataDNS: [\r\n {\r\n // agreement: 'NO',\r\n // Range: '1',\r\n id:'',\r\n address: '192.168.50.10/24',\r\n // term: '永久',\r\n // disabled:true\r\n },\r\n {\r\n // agreement: 'YES',\r\n // Range: '1',\r\n id:'',\r\n address: '192.168.1.5/24',\r\n // term: '17小时',\r\n // disabled:true\r\n }\r\n ],\r\n tableDataPanduan:[],\r\n optionsData:'eth0'\r\n };\r\n },\r\n watch: {\r\n \r\n },\r\n created() {\r\n this.createMqtt()\r\n},\r\n mounted() {\r\n\r\n// window.setInterval( () => { //每隔30秒自动请求一次方法 this.getdata() ,保证数据实时的更新\r\n// \tthis.publishClient()\r\n// }, 1000 * 5 )\r\n },\r\n methods:{\r\n //点击保存\r\n commit(tableRouter,tableData,tableDataDNS,sizeForm){\r\n console.log(\"tableData\",tableData)\r\n console.log(\"tableDataDNS\",tableDataDNS)\r\n console.log(\"sizeForm\",sizeForm)\r\n var tableRouterN = tableRouter.map(value => {\r\n return value.to+','+value.via+','+value.metric\r\n })\r\n var tableDataN = tableData.map(item => {\r\n return item.address\r\n })\r\n var tableDataDNSN = tableDataDNS.map(item => {\r\n return item.address\r\n })\r\n \r\n var ner = {\r\n type:\"netplanSet\",\r\n ethName:\"eth0\",\r\n dhcp4: false,\r\n addresses:tableDataN,//静态地址\r\n gateway4:sizeForm.gateway4,\r\n nameservers:tableDataDNSN,//DNS\r\n routes:tableRouterN//静态路由\r\n }\r\n this.$confirm('此操作将重新设置网络, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n // this.$message({\r\n // type: 'success',\r\n // message: '删除成功!'\r\n // });\r\n console.log(\"JSON.stringify(ner)\",JSON.stringify(ner))\r\n // window.publish('Contorl_client',JSON.stringify(ner)); \r\n })\r\n .catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消'\r\n });\r\n });\r\n // \r\n },\r\n //添加行静态路由\r\n addRows() {\r\n const circle = this.sizeForm.tableRouter[0]; //取出数组中第一个对象\r\n if (circle) {\r\n const newObj = {};\r\n for (let key in circle) { //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\r\n newObj[key] = '';\r\n }\r\n this.sizeForm.tableRouter.splice(this.sizeForm.tableRouter.length, 0, newObj);\r\n }\r\n },\r\n \r\n //删除行静态路由\r\n deleteRows(scope) {\r\n this.sizeForm.tableRouter.splice(scope.$index, 1);\r\n },\r\n //添加行静态地址\r\n addRowsTableData(){\r\n const circle = this.sizeForm.tableData[0]; //取出数组中第一个对象\r\n if (circle) {\r\n const newObj = {};\r\n for (let key in circle) { //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\r\n newObj[key] = '';\r\n }\r\n // this.sizeForm.tableData.splice(this.sizeForm.tableData.length-1, 0, newObj);\r\n this.sizeForm.tableData.splice(this.sizeForm.tableData.length, 0, newObj);\r\n }\r\n },\r\n deleteRowsTableData(scope){\r\n this.sizeForm.tableData.splice(scope.$index, 1);\r\n },\r\n //添加DNS\r\n addRowsDNS(){\r\n const circle = this.sizeForm.tableDataDNS[0]; //取出数组中第一个对象\r\n if (circle) {\r\n const newObj = {};\r\n for (let key in circle) { //把第一个对象的属性都赋值给新对象newObj 然后每个属性的值都设置为空;\r\n newObj[key] = '';\r\n }\r\n this.sizeForm.tableDataDNS.splice(this.sizeForm.tableDataDNS.length, 0, newObj);\r\n }\r\n },\r\n deleteRowsDNS(scope){\r\n this.sizeForm.tableDataDNS.splice(scope.$index, 1);\r\n },\r\n /** 创建mqtt */\r\n createMqtt() {\r\n // window.publish('Contorl_client',JSON.stringify({\"type\":\"getNet\"})); \r\n //创建链接,接收数据\r\n var topicSends = ['Contorl_server'];\r\n window.PubScribe(topicSends,-1,this.realInfo);\r\n setTimeout(() => {\r\n this.publishClient()\r\n }, 5000);\r\n },\r\n publishClient(){\r\n window.publish('Contorl_client',JSON.stringify({\"type\":\"getNet\"})); \r\n },\r\n /** 实时数据分类 */\r\n realInfo(topic, message) {\r\n // console.log(\"topic\",topic)\r\n switch (topic) {\r\n case \"Contorl_server\":\r\n try {\r\n const utf8decoder = new TextDecoder()\r\n const u8arr = new Uint8Array(message)\r\n const temp = utf8decoder.decode(u8arr)\t// 将二进制数据转为字符串\r\n const msg = JSON.parse(temp)\t\t//这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n \r\n if(msg.type=='getNet'){\r\n console.log(\"msg\",msg)\r\n // const netaddres = JSON.parse(msg.netaddres)\r\n // console.log(\"netaddres\",netaddres)\r\n // const netstates = JSON.parse(msg.netstates)\r\n \r\n this.changeNetstates(msg)\r\n }\r\n \r\n } catch (error) {\r\n\r\n }\r\n break;\r\n }\r\n },\r\n changeNetstates(msg){\r\n console.log(\"msg\",msg)\r\n // var optionsDataN = this.optionsData\r\n // this.sizeForm.mtu = msg.netstates【this.optionsData}.mtu\r\n console.log(\" msg.netstates[this.optionsData]\",msg.netstates[this.optionsData])\r\n if(msg.netstates[this.optionsData]!=undefined){\r\n this.sizeForm.mtu = msg.netstates[this.optionsData].mtu\r\n var data = msg.netaddres[this.optionsData]\r\n this.sizeForm.speed = msg.netstates[this.optionsData].speed\r\n this.tableDataPanduan = []\r\n var optionN = Object.keys(msg.netplan)\r\n var optionNrr = optionN.map((value, index) => {\r\n return {\r\n value: value,\r\n label: value\r\n } \r\n })\r\n console.log(\"optionNrr\",optionNrr)\r\n this.options = optionNrr\r\n if(msg.netstates[this.optionsData].isup==true){\r\n this.sizeForm.status='YES'\r\n }else{\r\n this.sizeForm.status='NO'\r\n }\r\n for (let i = 0; i < data.length; i++) {\r\n if(data[i].family==17){\r\n this.sizeForm.mac =data[i].address\r\n }else if(data[i].family==2){\r\n this.tableDataPanduan.push(data[i])\r\n }\r\n }\r\n if(this.tableDataPanduan.length==msg.netplan[this.optionsData].addresses.length){\r\n for (let i = 0;i < this.tableDataPanduan.length; i++) {\r\n for (let b= 0;b < msg.netplan[this.optionsData].addresses.length; b++) {\r\n // console.log(\"str1\",netstates.netplan.eth0.addresses[b].substring(0,netstates.netplan.eth0.addresses[b].indexOf(\"/\")))\r\n var ipos = msg.netplan[this.optionsData].addresses[b].indexOf(\"/\");//指定开始的字符串\r\n let str1=msg.netplan[this.optionsData].addresses[b].substring(0,ipos);\r\n if(this.tableDataPanduan[i].address == str1){ \r\n \r\n }else{\r\n // this.$message({\r\n // message: '静态地址有误',\r\n // type: 'warning'\r\n // });\r\n }\r\n } \r\n }\r\n }\r\n var addressesN = msg.netplan[this.optionsData].addresses.map((value, index) => {\r\n return {\r\n address: value,\r\n id: index\r\n } \r\n })\r\n this.sizeForm.tableData = addressesN \r\n //获取静态路由\r\n var dataJ = msg.netplan[this.optionsData].routes\r\n this.sizeForm.tableRouter=[]\r\n for (let r= 0;r < dataJ.length; r++) {\r\n this.sizeForm.tableRouter.push(dataJ[r])\r\n }\r\n this.sizeForm.gateway4 = msg.netplan[this.optionsData].gateway4\r\n var legend = msg.netplan[this.optionsData].nameservers.addresses.map((value, index) => {\r\n return {\r\n address: value,\r\n id: index\r\n } \r\n })\r\n this.sizeForm.tableDataDNS = legend \r\n }else { \r\n this.sizeForm= {\r\n name: this.optionsData,\r\n region: '00:11:14:1a:62:fe',\r\n MTU: '1500',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: true,\r\n status:'NO',\r\n gateway4: msg.netplan[this.optionsData].gateway4,\r\n mtu:'',\r\n mac:'',\r\n moren:'',\r\n speed:'',\r\n }\r\n //获取静态路由\r\n var dataJ = msg.netplan[this.optionsData].routes\r\n this.sizeForm.tableRouter=[]\r\n for (let r= 0;r < dataJ.length; r++) {\r\n this.sizeForm.tableRouter.push(dataJ[r])\r\n }\r\n var addressesN = msg.netplan[this.optionsData].addresses.map((value, index) => {\r\n return {\r\n address: value,\r\n id: index\r\n } \r\n })\r\n this.sizeForm.tableData = addressesN \r\n var legend = msg.netplan[this.optionsData].nameservers.addresses.map((value, index) => {\r\n return {\r\n address: value,\r\n id: index\r\n } \r\n })\r\n this.sizeForm.tableDataDNS = legend \r\n }\r\n \r\n },\r\n changeName(val){\r\n console.log(\"val\",val) \r\n this.sizeForm.name = val\r\n this.optionsData = val\r\n this.publishClient()\r\n },\r\n gernerateClass(status){\r\n console.log(\"status\",status)\r\n if(status=='YES'){\r\n return 'status'\r\n }else {\r\n return 'statusNo'\r\n }\r\n },\r\n\r\n changeVal(val,e){\r\n this.sizeForm.tableData[e].disabled = false\r\n },\r\n changeValT(val,e){\r\n this.sizeForm.tableRouter[e].disabled = false\r\n },\r\n handleClick(scope,e){\r\n console.log(scope,'scope');\r\n }\r\n }\r\n};\r\n</script>\r\n \r\n <style>\r\n.test-div i {\r\n font-size: 25px;\r\n}\r\n</style>\r\n <style lang=\"scss\" scoped>\r\n.formItem /deep/ .el-form-item__content {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n}\r\n.formItem /deep/ .el-form-item__label {\r\n text-align: left;\r\n font-size: 15px;\r\n}\r\n.formItem .el-form-item{\r\n margin-bottom: 15px;\r\n}\r\n.tableFormItem {\r\n margin-bottom: 15px!important;\r\n} \r\n.tableFormItem /deep/ .el-form-item__content{\r\n margin-left: 0px!important;\r\n}\r\n.container {\r\n width: 100%;\r\n height: 100%;\r\n overflow-y: scroll;\r\n &::-webkit-scrollbar {\r\n width: 0;\r\n }\r\n .title {\r\n width: 95%;\r\n font-size: 25px;\r\n text-align: left;\r\n border-bottom: 1px solid black;\r\n margin-bottom: 20px;\r\n }\r\n .el-col-6{\r\n padding-left: 0;\r\n padding-top: 0;\r\n }\r\n}\r\n.status{\r\n width: 10px; height: 10px; border-radius: 50%; background: green\r\n}\r\n.statusNo{\r\n width: 10px; height: 10px; border-radius: 50%; background: red\r\n}\r\n</style>\r\n "],"sourceRoot":"src/views/general"}]} |