From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001 From: ZZJ <zzjdsg2300@163.com> Date: 星期二, 09 十一月 2021 18:01:59 +0800 Subject: [PATCH] 问题修复 --- src/pages/settings/components/BasicSetting.vue | 1147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,147 insertions(+), 0 deletions(-) diff --git a/src/pages/settings/components/BasicSetting.vue b/src/pages/settings/components/BasicSetting.vue new file mode 100644 index 0000000..ebb164e --- /dev/null +++ b/src/pages/settings/components/BasicSetting.vue @@ -0,0 +1,1147 @@ +<template> + <div class="s-basic-setting"> + <el-tabs + id="e-basic-setting" + v-model="activeName" + v-loading="loading" + :element-loading-text="loadingText" + type="border-card" + > + <!-- 鏈満淇℃伅 --> + <el-tab-pane + label="鏈満淇℃伅" + name="sysInfo" + v-if="isShow('settings:sysInfo')" + > + <el-menu + :default-openeds="openeds" + background-color="#fff" + text-color="#303133" + active-text-color="#409EFF" + style="height: 100%" + class="menu-css" + @open="menuOpen" + @close="menuClose" + > + <!-- 鏈満淇℃伅 --> + <el-submenu index="0"> + <template slot="title"> + <b class="tree-font">鏈満淇℃伅</b> + </template> + <el-menu-item-group class="item-group"> + <el-form + :model="sysinfo" + :rules="rules" + ref="sysinfo" + label-width="100px" + > + <el-row> + <el-col :span="12"> + <el-form-item label="鍚嶇О" prop="server_name"> + <el-input + v-model="sysinfo.server_name" + placeholder="鏈嶅姟鍣ㄥ悕绉�" + size="small" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绔彛" prop="server_port"> + <el-input + v-model="sysinfo.server_port" + placeholder="WEB鏈嶅姟绔彛" + size="small" + ></el-input> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="12"> + <el-form-item label="IP" prop="ip"> + <ip-input + :ip="sysinfo.ip" + @on-blur="sysinfo.ip = arguments[0]" + ></ip-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瀛愮綉鎺╃爜" prop="subMask"> + <ip-input + :ip="sysinfo.subMask" + @on-blur="sysinfo.subMask = arguments[0]" + ></ip-input> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="12"> + <el-form-item label="缃戝叧" prop="gateway"> + <ip-input + :ip="sysinfo.gateway" + @on-blur="sysinfo.gateway = arguments[0]" + ></ip-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="DNS" prop="dns"> + <ip-input + :ip="sysinfo.dns" + @on-blur="sysinfo.dns = arguments[0]" + ></ip-input> + </el-form-item> + </el-col> + </el-row> + <div class="mt15 mb10 save-btn"> + <el-button type="primary" @click="submitSysinfo" size="small" + >淇濆瓨</el-button + > + </div> + </el-form> + </el-menu-item-group> + </el-submenu> + + <el-submenu index="1"> + <template slot="title"> + <b class="tree-font">璇︾粏淇℃伅</b> + </template> + <el-menu-item-group class="item-group desc-info"> + <el-row :gutter="gutter"> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">璁惧ID</div> + <div class="xiangqing-info">{{ sysinfo.server_id }}</div> + </el-col> + <!-- <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">璁惧缂栧彿</div> + <div class="xiangqing-info">{{sysinfo.deviceNum}}</div> + </el-col>--> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">璁惧鍨嬪彿</div> + <div class="xiangqing-info">{{ sysinfo.deviceModel }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">璁惧绫诲瀷</div> + <div class="xiangqing-info">{{ sysinfo.deviceDesc }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">閫氶亾涓暟</div> + <div class="xiangqing-info">{{ sysinfo.channelCount }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">涓绘帶鐗堟湰</div> + <div class="xiangqing-info">{{ sysinfo.masterVersion }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">web鐗堟湰</div> + <div class="xiangqing-info">{{ sysinfo.webVersion }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">纭洏淇℃伅</div> + <div class="xiangqing-info">{{ sysinfo.disks }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">CPU</div> + <div class="xiangqing-info">{{ sysinfo.cpuInfo }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">鍐呭瓨</div> + <div class="xiangqing-info">{{ sysinfo.mem }}</div> + </el-col> + <el-col :span="12" class="flex-box"> + <div class="xiangqin-label">杩愯鏃堕棿</div> + <div class="xiangqing-info">{{ sysinfo.uptime }}</div> + </el-col> + </el-row> + </el-menu-item-group> + </el-submenu> + <!-- 浜嬩欢褰曞儚鏃堕暱 --> + <el-submenu index="2"> + <template slot="title"> + <b class="tree-font">浜嬩欢褰曞儚鏃堕暱</b> + </template> + <el-menu-item-group class="item-group"> + <el-form + label-width="150px" + class="alarmSetting" + style="padding-left: 5px; padding-right: 5px" + > + <el-form-item label="瑙嗛鎴彇鏈�鐭椂闀�" style="width: 724px"> + <el-slider + id="cut_min_duration" + @input="min_len = min_video_len" + v-model="fakeObj.min" + :min="5 / 1.2" + :max="100" + :step="5 / 1.2" + show-stops + :show-tooltip="true" + :format-tooltip="formatTooltip" + ></el-slider> + <el-input-number + v-model="min_len" + @change="fakeObj.min = +(min_len / 1.2)" + controls-position="right" + :min="5" + :max="120" + size="small" + ></el-input-number + > s + </el-form-item> + <el-form-item label="瑙嗛鎴彇鏈�闀挎椂闀�" style="width: 724px"> + <el-slider + id="cut_max_duration" + v-model="fakeObj.max" + :min="5 / 1.2" + @input="max_len = max_video_len" + :max="100" + :step="5 / 1.2" + show-stops + :format-tooltip="formatTooltip" + :show-tooltip="true" + ></el-slider> + <el-input-number + v-model="max_len" + @change="fakeObj.max = +(max_len / 1.2)" + controls-position="right" + :min="5" + :max="120" + size="small" + ></el-input-number + > s + </el-form-item> + <div class="mt15 mb10 save-btn"> + <el-button type="primary" @click="submitAlarm" size="small" + >淇濆瓨</el-button + > + </div> + </el-form> + </el-menu-item-group> + </el-submenu> + <!-- 瀵瑰鏈嶅姟IP 鏀瑰悕涓哄閮ㄧ綉缁�(鏂皌ab)--> + </el-menu> + </el-tab-pane> + + <!-- 鏃堕棿閰嶇疆 --> + <el-tab-pane + label="鏃堕棿閰嶇疆" + name="timeSet" + v-if="isShow('settings:timeSet')" + > + <el-form label-width="100px"> + <el-form-item label="璁惧鏃堕棿"> + {{ equipmentTime }} + </el-form-item> + <div style="text-align: left; padding: 10px 0px"> + <div class="time-type">NTP鏍℃椂</div> + <div style="padding: 10px 0px"> + <el-radio v-model="syncType" label="1">NTP鏍℃椂</el-radio> + </div> + </div> + + <el-form-item label="鏈嶅姟鍣ㄥ湴鍧�"> + <ip-input + :ip="ntpServer" + @on-blur="ntpServer = arguments[0]" + :disabled="syncType === '2'" + ></ip-input> + </el-form-item> + + <el-form-item label="鏍℃椂鏃堕棿闂撮殧" style="width: 41.3%"> + <el-input-number + v-model.number="timeInterval" + :min="1" + :max="60" + placeholder="璇疯緭鍏�" + size="small" + :controls="false" + :disabled="syncType === '2'" + ></el-input-number + > 鍒嗛挓 + <el-button + type="text" + style="position: absolute; left: 330px" + :disabled="syncType === '2'" + @click="testNTP" + :loading="ntpTestLoading" + >娴嬭瘯</el-button + > + </el-form-item> + + <div style="text-align: left; padding: 10px 0px"> + <div class="time-type">鎵嬪姩鏍℃椂</div> + <div style="padding: 10px 0px"> + <el-radio v-model="syncType" label="2">鎵嬪姩鏍℃椂</el-radio> + </div> + </div> + + <el-form-item label="璁剧疆鏃堕棿"> + <el-date-picker + v-model="settime" + type="datetime" + placeholder="閫夋嫨鏃ユ湡鏃堕棿" + size="small" + value-format="yyyy-MM-dd HH:mm:ss" + :disabled="syncType === '1'" + ></el-date-picker> + <el-checkbox + v-model="settimeRadio" + style="margin-left: 12px" + @change="syncBrowser" + :disabled="syncType === '1'" + >鍚屾鏈绠楁満鏃堕棿</el-checkbox + > + </el-form-item> + + <el-col :span="12" style="padding-right: 40px"> + <el-form-item> + <el-button type="primary" @click="submitClock" size="small" + >淇濆瓨</el-button + > + </el-form-item> + </el-col> + </el-form> + </el-tab-pane> + + <!-- 闆嗙兢绠$悊 --> + <el-tab-pane + label="闆嗙兢绠$悊" + name="cluster" + v-if="isShow('settings:cluster')" + > + <cluster-management></cluster-management> + </el-tab-pane> + <!-- <el-tab-pane label="澶栭儴璁块棶" name="fourth"> + <el-menu + :default-openeds="openeds" + background-color="#fff" + text-color="#303133" + active-text-color="#409EFF" + style="height: 100%;" + class="menu-css" + @open="menuOpen" + @close="menuClose" + > + <el-submenu index="0"> + <template slot="title"> + <b class="tree-font">澶栭儴璁块棶璁剧疆</b> + </template> + <el-menu-item-group class="item-group"> + <el-form :model="sysinfo" :rules="rules" ref="sysinfo" label-width="100px"> + <div class="flex-box"> + <label>璁剧疆澶栭儴IP</label> + <div style="width:300px;"> + <ip-input :ip="ipServer.ip" @on-blur="ipServer.ip = arguments[0]"></ip-input> + </div> + <el-checkbox label="閫夌敤鏈満IP" size="small" style="margin-left: 20px"></el-checkbox> + </div> + <div class="flex-box"> + <label>鍩熷悕</label> + <el-input size="small" v-model="ipServer.localhost"></el-input> + </div> + <div class="flex-box"> + <label>鏈湴鏂囦欢绔彛</label> + <el-input size="small" v-model="ipServer.localFilePort"></el-input> + </div> + <div class="mt15 mb10 save-btn"> + <el-button type="primary" @click="submitSysinfo" size="small">淇濆瓨</el-button> + </div> + </el-form> + </el-menu-item-group> + </el-submenu> + </el-menu> + </el-tab-pane>--> + <el-tab-pane + label="鏉冮檺绠$悊" + name="permission" + v-if="isShow('settings:permission')" + > + <authority-management + v-if="activeName === 'permission'" + ></authority-management> + </el-tab-pane> + <el-tab-pane + label="骞挎挱璁剧疆" + name="broadcast" + v-if="isShow('settings:broadcast')" + > + <radio-set v-if="activeName === 'broadcast'"></radio-set> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { + getDevInfo, + getAlarmConfig, + saveDevInfo, + saveAlarmConfig, + getClockInfo, + saveClockInfo, + testNTPserver, + getResourceConfig, + saveResourceConfig, +} from "@/api/system"; + +import { isPort, isIPv4 } from "@/scripts/validate"; +import ipInput from "@/components/subComponents/IPInput"; +import TimeZones from "@/Pool/TimeZones"; + +import ClusterManagement from "./ClusterManagement"; +import AuthorityManagement from "./AuthorityManagement"; +import RadioSet from "./RadioSet"; +import config from "../../../../package.json"; + +export default { + name: "BasicSettings", + components: { + ipInput, + ClusterManagement, + AuthorityManagement, + RadioSet, + }, + computed: { + min_video_len() { + // return +(this.fakeObj.min * 1.2).toFixed(0); + return Math.round(this.fakeObj.min * 1.2); + }, + max_video_len() { + return Math.round(this.fakeObj.max * 1.2); + // return +(this.fakeObj.max * 1.2).toFixed(0); + }, + isAdmin() { + if ( + sessionStorage.getItem("userInfo") && + sessionStorage.getItem("userInfo") !== "" + ) { + let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; + return loginName === "superadmin" || loginName === "basic"; + } + return false; + }, + }, + directives: { + focus: { + inserted: function (el) { + el.querySelector("input").focus(); + }, + }, + }, + data() { + return { + loading: true, + loadingText: "", + gutter: 10, + activeName: "sysInfo", + timezone: "", + syncType: "1", + ntpServer: "", + equipmentTime: "", + NYPport: "", + settime: "", + timeInterval: 10, + settimeRadio: false, + clockTimer: null, + browserTimer: null, + timestamp: 0, + sysinfo: {}, + alarmConf: {}, + min_len: 0, + max_len: 0, + fakeObj: { + min: 0, + max: 0, + }, + originNetConfig: { + ip: "", + gw: "", + mask: "", + dns: "", + }, + rules: { + ip: [ + { + required: true, + message: "璇疯緭鍏P鍦板潃", + trigger: "change", + }, + { validator: isIPv4, trigger: "change" }, + ], + ServerIp: [ + { + required: true, + message: "璇疯緭鍏P鍦板潃", + trigger: "change", + }, + { validator: isIPv4, trigger: "change" }, + ], + ServerPort: [ + { + required: true, + message: "璇疯緭鍏ョ鍙�", + trigger: "change", + }, + { validator: isPort, trigger: "change" }, + ], + GbServerPort: [ + { + required: true, + message: "璇疯緭鍏ョ鍙�", + trigger: "change", + }, + { validator: isPort, trigger: "change" }, + ], + gateway: [ + { + required: true, + message: "璇疯緭鍏ョ綉鍏�", + trigger: "change", + }, + { validator: isIPv4, trigger: "change" }, + ], + dns: [ + { + required: true, + message: "璇疯緭鍏ns鍦板潃", + trigger: "change", + }, + { validator: isIPv4, trigger: "change" }, + ], + server_name: [ + { required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "change" }, + ], + subMask: [ + { + required: true, + message: "璇疯緭鍏ュ瓙缃戞帺鐮�", + trigger: "change", + }, + { validator: isIPv4, trigger: "change" }, + ], + }, + openeds: ["0"], + ipServer: { + diyOrLocalIP: "1", + ip: "", + localhost: "", + localFilePort: "", + }, + locationCity: { + province: "", + city: "", + county: "", + provinceOptions: [], + cityOptions: [], + countyOptions: [], + }, + webPort: 0, + ntpTestLoading: false, + buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], + }; + }, + created() { + if (this.isShow("settings:sysInfo")) { + this.activeName = "sysInfo"; + } else if (this.isShow("settings:timeSet")) { + this.activeName = "timeSet"; + } else if (this.isShow("settings:cluster")) { + this.activeName = "cluster"; + } else if (this.isShow("settings:permission")) { + this.activeName = "permission"; + } else if (this.isShow("settings:broadcast")) { + this.activeName = "broadcast"; + } + }, + mounted() { + this.$nextTick(() => { + this.initSysinfo(); + // this.initAlarmConf(); + this.initResourceConfig(); + this.initClockConf(); + //this.markStartTime(); + }); + }, + beforeDestroy() { + clearTimeout(this.clockTimer); + clearInterval(this.browserTimer); + }, + methods: { + formatTooltip(v){ + return Math.round(v*1.2) + }, + isShow(authority) { + return ( + this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1 + ); + }, + initSysinfo() { + this.loadingText = "姝e湪鑾峰彇璁惧淇℃伅..."; + getDevInfo() + .then((rsp) => { + if (rsp && rsp.success) { + this.sysinfo = rsp.data; + this.sysinfo.gateway = this.sysinfo.gateway.trim(); + this.originNetConfig.ip = this.sysinfo.ip; + this.originNetConfig.mask = this.sysinfo.subMask; + this.originNetConfig.gw = this.sysinfo.gateway.trim(); + this.originNetConfig.dns = this.sysinfo.dns ? this.sysinfo.dns : ""; + // this.alarmConf.min_video_len = rsp.data.min_video_len; + // this.alarmConf.max_video_len = rsp.data.max_video_len; + this.fakeObj.min = rsp.data.min_video_len / 1.2 + this.fakeObj.max = rsp.data.max_video_len / 1.2 + if (this.sysinfo.deviceInfo) { + let devInfo = this.sysinfo.deviceInfo; + + this.sysinfo.cpuInfo = devInfo.cpu[0].modelName; + this.sysinfo.disks = "( " + devInfo.disk + ") "; + this.sysinfo.mem = + (devInfo.mem.total / 1024 / 1024 / 1024).toFixed(2) + "GB"; + // this.sysinfo.arch = devInfo.host.kernelArch; + this.sysinfo.uptime = this.secondsFormat(devInfo.host.uptime); + } + + if (!this.sysinfo.server_port) { + this.sysinfo.server_port = 7003; + } + + this.webPort = this.sysinfo.server_port; + + this.sysinfo.webVersion = "V" + config.version; + } + + this.loading = false; + }) + .catch((err) => { + this.loading = false; + }); + }, + secondsFormat(s) { + var day = Math.floor(s / (24 * 3600)); // Math.floor()鍚戜笅鍙栨暣 + var hour = Math.floor((s - day * 24 * 3600) / 3600); + var minute = Math.floor((s - day * 24 * 3600 - hour * 3600) / 60); + var second = s - day * 24 * 3600 - hour * 3600 - minute * 60; + return day + "澶�" + hour + "鏃�" + minute + "鍒�" + second + "绉�"; + }, + initClockConf(ntpTest = false) { + getClockInfo().then((rsp) => { + if (rsp && rsp.success) { + this.timezone = rsp.data.time_zone; + if (!ntpTest) { + this.syncType = rsp.data.ntp ? "1" : "2"; + } + if (rsp.data.ntp) { + this.ntpServer = rsp.data.ntp_server; + this.timeInterval = rsp.data.interval; + } + this.timestamp = rsp.data.local_time; + if (this.clockTimer === null) { + this.runClock(); + } + } + }); + }, + runClock() { + this.equipmentTime = this.formatTime(++this.timestamp, "Y-M-D h:m:s"); + this.clockTimer = setTimeout(() => { + this.runClock(); + }, 1000); + }, + initAlarmConf() { + // getAlarmConfig().then(rsp => { + // if (rsp && rsp.success) { + // this.alarmConf = rsp.data; + // } + // }); + }, + initResourceConfig() { + getResourceConfig().then((rsp) => { + if (rsp && rsp.success) { + this.ipServer.diyOrLocalIP = rsp.data.ipType; + this.ipServer.ip = rsp.data.serviceIp; + this.ipServer.localhost = rsp.data.domain; + this.ipServer.localFilePort = rsp.data.filePort; + } + }); + }, + syncBrowser(enable) { + if (!enable) { + clearInterval(this.browserTimer); + } else { + this.browserTimer = setInterval(() => { + let timestamp = new Date().getTime() / 1000; + this.settime = this.formatTime(timestamp, "Y-M-D h:m:s"); + }, 1000); + } + }, + markStartTime() { + let timestamp = new Date().getTime() / 1000; + this.settime = this.formatTime(timestamp, "Y-M-D h:m:s"); + }, + submitSysinfo() { + this.$refs["sysinfo"].validate((valid) => { + if (valid) { + if ( + this.sysinfo.ip !== this.originNetConfig.ip || + this.sysinfo.subMask !== this.originNetConfig.mask || + this.sysinfo.dns !== this.originNetConfig.dns || + this.sysinfo.gateway !== this.originNetConfig.gw + ) { + if (this.sysinfo.ip !== this.originNetConfig.ip) { + let newUri = + location.protocol + + "//" + + this.sysinfo.ip + + ":" + + this.sysinfo.server_port; + var changeIPTimer = setTimeout(() => { + this.$alert( + '<strong>鎮ㄥ凡淇敼浜嗘湇鍔″櫒ip, 璇烽噸鏂扮櫥褰�</strong><a target="_parent" href="' + + newUri + + '"> ' + + newUri + + "<a/>", + "鎻愮ず", + { + dangerouslyUseHTMLString: true, + } + ); + }, 10000); + } + + this.$confirm("纭闇�瑕佷慨鏀规湇鍔″櫒缃戠粶閰嶇疆鍚楋紵", { + center: true, + cancelButtonClass: "comfirm-class-cancle", + confirmButtonClass: "comfirm-class-sure", + }) + .then(() => { + this.loading = true; + this.loadingText = "姝e湪澶勭悊..."; + saveDevInfo(this.sysinfo) + .then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "鏈満淇℃伅淇濆瓨鎴愬姛", + }); + } + this.initSysinfo(); + this.loading = false; + }) + .catch((err) => { + this.loading = false; + clearTimeout(changeIPTimer); + this.$notify({ + type: "error", + message: "淇濆瓨澶辫触", + }); + }); + }) + .catch((err) => {}); + } else { + saveDevInfo(this.sysinfo).then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "鏈満淇℃伅淇濆瓨鎴愬姛", + }); + this.initSysinfo(); + } + }); + + if (this.sysinfo.server_port !== this.webPort) { + let newUri = + location.protocol + + "//" + + this.sysinfo.ip + + ":" + + this.sysinfo.server_port; + var changeIPTimer = setTimeout(() => { + this.$alert( + '<strong>鎮ㄥ凡淇敼浜嗘湇鍔″櫒绔彛, 璇烽噸鏂扮櫥褰�</strong><a target="_parent" href="' + + newUri + + '"> ' + + newUri + + "<a/>", + "鎻愮ず", + { + dangerouslyUseHTMLString: true, + } + ); + }, 5000); + } + } + } else { + console.log("error submit!!"); + return false; + } + }); + }, + checkTimeZone(val) {}, + submitClock() { + if (this.syncType === "1") { + if (this.ntpServer === "") { + this.$notify({ + type: "error", + message: "NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖", + }); + return false; + } else if (this.timeInterval === "") { + this.timeInterval = 1; + } + } else { + if (this.settime === "") { + this.$notify({ + type: "error", + message: "璁剧疆鏃堕棿涓嶈兘涓虹┖", + }); + return false; + } + } + let requestBody = { + timeZone: this.timezone, + ntp: this.syncType === "1", + ntpServer: this.ntpServer, + interval: this.timeInterval, + newTime: this.settime, + }; + saveClockInfo(requestBody).then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "璁剧疆鎴愬姛", + }); + } + this.initClockConf(); + }); + }, + testNTP() { + this.ntpTestLoading = true; + testNTPserver({ server: this.ntpServer }) + .then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "鏃堕棿鍚屾鎴愬姛", + }); + } else { + this.$notify({ + type: "error", + message: "鏃堕棿鍚屾澶辫触", + }); + } + this.ntpTestLoading = false; + this.initClockConf(true); + }) + .catch((err) => { + this.$notify({ + type: "error", + message: "鏃堕棿鍚屾澶辫触,璇锋鏌ユ湇鍔″櫒ip", + }); + this.ntpTestLoading = false; + }); + }, + submitAlarm() { + saveAlarmConfig({ + min_video_len: this.min_video_len, + max_video_len: this.max_video_len, + }).then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "淇濆瓨鎴愬姛", + }); + } + }); + }, + // submitResource() { + // let regNum = /^[0-9]*$/; + // if (!this.vaildHost(this.ipServer.localhost)) { + // this.$notify({ + // type: "warning", + // message: "璇疯緭鍏ユ纭牸寮忓緱鍩熷悕锛�", + // }); + // return false; + // } + // if (!regNum.test(this.ipServer.localFilePort)) { + // this.$notify({ + // type: "warning", + // message: "璇疯緭鍏ユ纭殑绔彛鍙凤紒", + // }); + // return false; + // } + // saveResourceConfig({ + // domain: this.ipServer.localhost, + // ipType: this.ipServer.diyOrLocalIP, + // serviceIp: this.ipServer.ip, + // filePort: Number(this.ipServer.localFilePort), + // }).then((res) => { + // if (res && res.success) { + // this.$notify({ + // type: "success", + // message: "淇濆瓨鎴愬姛", + // }); + // } else { + // this.$notify({ + // type: "error", + // message: "淇濆瓨澶辫触", + // }); + // } + // }); + // }, + // onIpBlur(e, ip) { + // console.log(e, ip); + // }, + formatTime(number, format) { + var formateArr = ["Y", "M", "D", "h", "m", "s"]; + var returnArr = []; + + var date = new Date(number * 1000); + returnArr.push(date.getFullYear()); + returnArr.push(this.formatNumber(date.getMonth() + 1)); + returnArr.push(this.formatNumber(date.getDate())); + + returnArr.push(this.formatNumber(date.getHours())); + returnArr.push(this.formatNumber(date.getMinutes())); + returnArr.push(this.formatNumber(date.getSeconds())); + + for (var i in returnArr) { + format = format.replace(formateArr[i], returnArr[i]); + } + return format; + }, + + //鏁版嵁杞寲 + formatNumber(n) { + n = n.toString(); + return n[1] ? n : "0" + n; + }, + menuOpen(event) {}, + menuClose(event) {}, + // handleEdit(row) { + // console.log(row); + // row.edit = true; + // }, + // handleCancel(row) { + // row.edit = false; + // console.log(row); + // }, + // handleSave(row) { + // console.log(row); + // row.edit = false; + // this.$notify({ + // message: "淇濆瓨鎴愬姛", + // type: "success", + // }); + // }, + //鏍¢獙鍩熷悕 + vaildHost(str) { + let re = /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/; + return re.test(str); + }, + }, +}; +</script> +<style lang="scss"> +.s-basic-setting { + width: 100%; + height: 100%; + .el-form { + width: 1000px; + + // margin-left: -80px; + .el-form-item { + text-align: left; + &.is-required:not(.is-no-asterisk) > .el-form-item__label:before { + margin-left: -8px; + } + .el-button { + float: right; + } + + .el-form-item__content { + text-align: left; + input { + max-width: 360px; + } + .el-date-editor.el-input, + .el-date-editor.el-input__inner { + width: 216px; + } + .el-checkbox__label { + padding-left: 5px; + } + } + + .el-form-item__label { + text-align: left; + } + } + } + .alarmSetting { + .el-input { + width: 100%; + // padding-right: 10px; + } + .el-select { + max-width: 113px; + } + .el-slider { + width: calc(100% - 120px); + display: inline-block; + padding-right: 30px; + box-sizing: border-box; + vertical-align: middle; + } + .el-input-number { + width: 100px; + display: inline-block; + .el-input { + width: 100%; + } + } + } + + .time-type { + height: 25px; + width: 413px; + line-height: 28px; + padding: 3px 23px; + font-size: 14px; + font-weight: 600; + background-color: #e4e6ed; + } + + #cut_min_duration { + .el-slider__bar { + background-color: #3d68e1; + } + .el-slider__button { + width: 10px; + height: 10px; + border: 4px solid #3d68e1; + } + } + + #cut_max_duration { + .el-slider__bar { + background-color: #ff9e6e; + } + .el-slider__button { + width: 10px; + height: 10px; + border: 4px solid #ff9e6e; + } + } + .menu-css, + .el-menu { + border-right: none; + list-style: none; + position: relative; + margin: 0; + padding-left: 10px; + background-color: #ffffff; + .el-submenu__title { + height: 35px; + line-height: 35px; + font-size: 14px; + color: #303133; + padding: 0 20px; + list-style: none; + cursor: pointer; + position: relative; + -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s; + transition: border-color 0.3s, background-color 0.3s, color 0.3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap; + } + .tree-font { + font-family: PingFangSC-Medium; + font-size: 14px; + color: #222222; + text-align: left; + } + li { + text-align: left; + .el-submenu__title { + // border-bottom: solid 1px #e6e6e6; + padding-left: 10px !important; + background-color: #e4e6ed !important; + border-radius: 2px; + .el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: auto; + left: 135px; + margin-top: -7px; + -webkit-transition: -webkit-transform 0.3s; + transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transition: transform 0.3s, -webkit-transform 0.3s; + font-size: 12px; + } + } + } + } + .save-btn { + text-align: right; + position: relative; + right: 40px; + } +} +</style> +<style lang="scss" scoped> +.flex-box { + display: flex; + height: 50px; + label { + width: 120px; + } + .el-input { + width: 300px; + } +} +.desc-info { + margin-bottom: 14px; + .flex-box { + height: 40px; + line-height: 40px; + .xiangqin-label { + width: 80px; + } + } +} +.menu-css, +.el-menu { + border-right: none; + list-style: none; + position: relative; + margin: 0; + padding-left: 0; + background-color: #ffffff; + + .tree-font { + font-family: PingFangSC-Medium; + font-size: 14px; + color: #222222; + text-align: left; + } + li { + text-align: left; + .el-submenu__title { + .el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: 0; + margin-top: -7px; + -webkit-transition: -webkit-transform 0.3s; + transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transition: transform 0.3s, -webkit-transform 0.3s; + font-size: 12px; + } + } + } +} +</style> -- Gitblit v1.8.0