From 401524fb5661d57ffb2229d683fe4de85b65fd1c Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期四, 31 八月 2023 17:54:24 +0800 Subject: [PATCH] 生产管理看板+删不需要的文件 --- src/pages/settings/components/BasicSetting.vue | 889 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 440 insertions(+), 449 deletions(-) diff --git a/src/pages/settings/components/BasicSetting.vue b/src/pages/settings/components/BasicSetting.vue index ff22658..985f4bc 100644 --- a/src/pages/settings/components/BasicSetting.vue +++ b/src/pages/settings/components/BasicSetting.vue @@ -5,16 +5,16 @@ v-model="activeName" v-loading="loading" :element-loading-text="loadingText" - type="card" + type="border-card" > <!-- 鏈満淇℃伅 --> - <el-tab-pane label="鏈満淇℃伅" name="first"> + <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%;" + style="height: 100%" class="menu-css" @open="menuOpen" @close="menuClose" @@ -28,8 +28,15 @@ <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-form-item label="鏈嶅姟鍣ㄥ悕绉�" prop="server_name"> <el-input v-model="sysinfo.server_name" placeholder="鏈嶅姟鍣ㄥ悕绉�" size="small"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鍩熷悕" prop="server_name"> + <el-input v-model="sysinfo.server_domain" placeholder="WEB鏈嶅姟鍩熷悕" size="small"></el-input> </el-form-item> </el-col> <el-col :span="12"> @@ -71,44 +78,55 @@ </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"> + <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> + <div class="xiangqin-label">璁惧ID</div> + <div class="xiangqing-info">{{ sysinfo.server_id }}</div> </el-col> - <el-col :span="12" class="flex-box"> + <!-- <el-col :span="12" class="flex-box"> <div class="xiangqin-label">璁惧缂栧彿</div> <div class="xiangqing-info">{{sysinfo.deviceNum}}</div> - </el-col> + </el-col>--> <el-col :span="12" class="flex-box"> <div class="xiangqin-label">璁惧鍨嬪彿</div> - <div class="xiangqing-info">{{sysinfo.deviceType}}</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.deviceSerialNum}}</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> + <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> + <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.diskCount}}</div> + <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> @@ -119,38 +137,50 @@ <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-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" - v-model="alarmConf.min_video_len" - :show-tooltip="false" + @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="alarmConf.min_video_len" + v-model="min_len" + @change="fakeObj.min = +(min_len / 1.2)" controls-position="right" - :min="0" - :max="100" + :min="5" + :max="120" size="small" - ></el-input-number> s + ></el-input-number + > s </el-form-item> - <el-form-item label="瑙嗛鎴彇鏈�闀挎椂闀�" style="width:724px"> + <el-form-item label="瑙嗛鎴彇鏈�闀挎椂闀�" style="width: 724px"> <el-slider id="cut_max_duration" - v-model="alarmConf.max_video_len" - :show-tooltip="false" + 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="alarmConf.max_video_len" + v-model="max_len" + @change="fakeObj.max = +(max_len / 1.2)" controls-position="right" - :min="0" - :max="100" + :min="5" + :max="120" size="small" - ></el-input-number> s + ></el-input-number + > s </el-form-item> <div class="mt15 mb10 save-btn"> <el-button type="primary" @click="submitAlarm" size="small">淇濆瓨</el-button> @@ -159,144 +189,27 @@ </el-menu-item-group> </el-submenu> <!-- 瀵瑰鏈嶅姟IP 鏀瑰悕涓哄閮ㄧ綉缁�(鏂皌ab)--> - - <!-- 鏂囦欢闊宠棰� --> - <!-- <el-submenu index="4"> - <template slot="title"> - <b class="tree-font">鏂囦欢闊宠棰�</b> - </template> - <el-menu-item-group class="item-group"> - <el-row :gutter="20"> - <el-col :span="8"> - <div class="p5"> - <span class="iconfont iconpicture" style="margin-right: 5px;"></span> - <span class="mr10">鍥剧墖绔彛</span> - <el-input v-model="localFile.picPort" style="width:300px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - </div> - <div class="p5"> - <span class="iconfont iconshipin" style="margin-right: 5px;"></span> - <span class="mr10">瑙嗛绔彛</span> - <el-input v-model="localFile.videoPort" style="width:300px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - </div> - <div class="p5"> - <span class="iconfont iconyinpinx" style="margin-right: 5px;"></span> - <span class="mr10">闊抽绔彛</span> - <el-input v-model="localFile.audioPort" style="width:300px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - </div> - </el-col> - <el-col :span="16"> - <el-table - :data="localFile.fileTable" - border - style="width: 100%"> - <el-table-column - type="index" - label="搴忓彿" - align="center" - width="50"> - </el-table-column> - <el-table-column - prop="date" - label="鍚嶇О" - align="center" - width="180"> - </el-table-column> - <el-table-column - prop="name" - label="ID" - align="center" - width="180"> - </el-table-column> - <el-table-column - prop="name" - label="IP" - align="center" - width="180"> - </el-table-column> - <el-table-column - prop="name" - label="鍦ㄧ嚎鐘舵��" - align="center" - width="80"> - </el-table-column> - <el-table-column - label="绫诲埆" - align="center" - width="100"> - <template> - <span class="iconfont iconpicture" style="margin-right: 5px;"></span> - <span class="iconfont iconshipin" style="margin-right: 5px;"></span> - <span class="iconfont iconyinpinx" style="margin-right: 5px;"></span> - </template> - </el-table-column> - <el-table-column - prop="address" - align="center" - label="澶囨敞"> - <template slot-scope="{row}"> - <div v-if="row.edit"> - <el-input :autofocus="row.edit" v-focus v-model="row.address" size="small" /> - <el-button size="mini" type="info" @click="handleCancel(row)">鍙栨秷</el-button> - <el-button size="mini" type="primary" @click="handleSave(row)">淇濆瓨</el-button> - </div> - <div v-else> - <span>{{ row.address }}</span> - <el-button - type="text" - style="color: black;font-size:16px" - @click="handleEdit(row)" - icon="iconfont iconbianji" - ></el-button> - </div> - </template> - </el-table-column> - </el-table> - </el-col> - </el-row> - </el-menu-item-group> - </el-submenu>--> </el-menu> </el-tab-pane> <!-- 鏃堕棿閰嶇疆 --> - <el-tab-pane label="鏃堕棿閰嶇疆" name="second"> + <el-tab-pane label="鏃堕棿閰嶇疆" name="timeSet" v-if="isShow('settings:timeSet')"> <el-form label-width="100px"> <el-form-item label="璁惧鏃堕棿"> - <!-- <el-input v-model="equipmentTime" placeholder="璇疯緭鍏�" size="small"></el-input> --> {{ equipmentTime }} </el-form-item> - - <el-form-item label="鏃跺尯" prop="timezone"> - <el-select - v-model="timezone" - placeholder="璇烽�夋嫨" - style="width: 360px; height: 32px" - size="small" - > - <el-option - v-for="item in timeZoneOption" - :key="item.value" - :label="item.label" - :value="item.value" - ></el-option> - </el-select> - </el-form-item> - <div style="text-align: left;padding: 10px 0px"> + <div style="text-align: left; padding: 10px 0px"> <div class="time-type">NTP鏍℃椂</div> - <div style="padding: 10px 0px;"> + <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> + <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-form-item label="鏍℃椂鏃堕棿闂撮殧" style="width: 41.3%"> <el-input-number v-model.number="timeInterval" :min="1" @@ -305,18 +218,21 @@ size="small" :controls="false" :disabled="syncType === '2'" - ></el-input-number> 鍒嗛挓 + ></el-input-number + > 鍒嗛挓 <el-button type="text" - style="position: absolute; left: 330px;" + style="position: absolute; left: 330px" :disabled="syncType === '2'" @click="testNTP" - >娴嬭瘯</el-button> + :loading="ntpTestLoading" + >娴嬭瘯</el-button + > </el-form-item> - <div style="text-align: left;padding: 10px 0px"> + <div style="text-align: left; padding: 10px 0px"> <div class="time-type">鎵嬪姩鏍℃椂</div> - <div style="padding: 10px 0px;"> + <div style="padding: 10px 0px"> <el-radio v-model="syncType" label="2">鎵嬪姩鏍℃椂</el-radio> </div> </div> @@ -328,18 +244,18 @@ placeholder="閫夋嫨鏃ユ湡鏃堕棿" size="small" value-format="yyyy-MM-dd HH:mm:ss" - :readonly="settimeRadio" :disabled="syncType === '1'" ></el-date-picker> <el-checkbox v-model="settimeRadio" - style="margin-left: 12px;" + style="margin-left: 12px" @change="syncBrowser" :disabled="syncType === '1'" - >鍚屾鏈绠楁満鏃堕棿</el-checkbox> + >鍚屾鏈绠楁満鏃堕棿</el-checkbox + > </el-form-item> - <el-col :span="12" style="padding-right: 40px;"> + <el-col :span="12" style="padding-right: 40px"> <el-form-item> <el-button type="primary" @click="submitClock" size="small">淇濆瓨</el-button> </el-form-item> @@ -348,43 +264,54 @@ </el-tab-pane> <!-- 闆嗙兢绠$悊 --> - <el-tab-pane label="闆嗙兢绠$悊" name="third"> + <el-tab-pane label="闆嗙兢绠$悊" name="cluster" v-if="isShow('settings:cluster')"> <cluster-management></cluster-management> </el-tab-pane> - <el-tab-pane label="澶栭儴缃戠粶" name="fourth"> - <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 save-btn" style="width:460px; margin-bottom:20px; float:left;"> - <el-button type="primary" @click="submitResource" size="small">淇濆瓨</el-button> - </div> - <div> - <el-table :data="ipServer.fileTable" border fit style="width: 100%"> - <el-table-column type="index" label="搴忓彿" align="center" width="50"></el-table-column> - <el-table-column prop="date" label="鍚嶇О" align="center"></el-table-column> - <el-table-column prop="name" label="ID" align="center"></el-table-column> - <el-table-column prop="name" label="IP" align="center"></el-table-column> - <el-table-column prop="name" label="鍦ㄧ嚎鐘舵��" align="center"></el-table-column> - </el-table> - </div> + <!-- <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="user"> - <authority-management v-if="activeName === 'user'"></authority-management> - </el-tab-pane> - <el-tab-pane label="骞挎挱璁剧疆" name="radio"> - <radio-set v-if="activeName === 'radio'"></radio-set> + <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> @@ -400,16 +327,17 @@ saveClockInfo, testNTPserver, getResourceConfig, - saveResourceConfig, -} from "@/api/system"; + saveResourceConfig +} from "@/api/system" -import { isPort, isIPv4 } from "@/scripts/validate"; -import ipInput from "@/components/subComponents/IPInput"; +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 ClusterManagement from "./ClusterManagement" +import AuthorityManagement from "./AuthorityManagement" +import RadioSet from "./RadioSet" +import config from "../../../../package.json" export default { name: "BasicSettings", @@ -420,20 +348,26 @@ RadioSet }, computed: { - timeZoneOption() { - let options = [] - TimeZones.forEach(zone => { - options = options.concat(zone.utc.map(v => { - return { value: v, label: v } - })) - }) - return options + 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() + inserted: function(el) { + el.querySelector("input").focus() } } }, @@ -442,7 +376,7 @@ loading: true, loadingText: "", gutter: 10, - activeName: "first", + activeName: "sysInfo", timezone: "", syncType: "1", ntpServer: "", @@ -456,6 +390,12 @@ timestamp: 0, sysinfo: {}, alarmConf: {}, + min_len: 0, + max_len: 0, + fakeObj: { + min: 0, + max: 0 + }, originNetConfig: { ip: "", gw: "", @@ -511,9 +451,7 @@ }, { validator: isIPv4, trigger: "change" } ], - server_name: [ - { required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "change" } - ], + server_name: [{ required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "change" }], subMask: [ { required: true, @@ -528,101 +466,123 @@ diyOrLocalIP: "1", ip: "", localhost: "", - localFilePort: "", - fileTable: [ - { - date: '2016-05-02', - name: '鐜嬪皬铏�', - address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�', - edit: false - }, { - date: '2016-05-04', - name: '鐜嬪皬铏�', - address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�', - edit: false - }, { - date: '2016-05-01', - name: '鐜嬪皬铏�', - address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�', - edit: false - }, { - date: '2016-05-03', - name: '鐜嬪皬铏�', - address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�', - edit: false - } - ] + localFilePort: "" }, locationCity: { - province: '', - city: '', - county: '', + province: "", + city: "", + county: "", provinceOptions: [], cityOptions: [], countyOptions: [] }, - }; - webPort: 0; + 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.initSysinfo() // this.initAlarmConf(); - this.initResourceConfig(); - this.initClockConf(); - }); + this.initResourceConfig() + this.initClockConf() + //this.markStartTime(); + }) }, beforeDestroy() { - clearTimeout(this.clockTimer); - clearInterval(this.browserTimer); + 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.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 - if (!this.sysinfo.server_port) { - this.sysinfo.server_port = 7003; + 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.webPort = this.sysinfo.server_port; - } - - this.loading = false; - }).catch(err => { - this.loading = false; - }); + this.loading = false + }) + .catch((err) => { + this.loading = false + }) }, - initClockConf() { - getClockInfo().then(rsp => { + 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; - this.syncType = rsp.data.ntp ? "1" : "2"; + 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.ntpServer = rsp.data.ntp_server + this.timeInterval = rsp.data.interval } this.timestamp = rsp.data.local_time if (this.clockTimer === null) { - this.runClock(); + this.runClock() } } }) }, runClock() { - this.equipmentTime = this.formatTime(++this.timestamp, 'Y-M-D h:m:s'); - // console.log(this.equipmentTime) + this.equipmentTime = this.formatTime(++this.timestamp, "Y-M-D h:m:s") this.clockTimer = setTimeout(() => { - this.runClock(); + this.runClock() }, 1000) }, initAlarmConf() { @@ -633,7 +593,7 @@ // }); }, initResourceConfig() { - getResourceConfig().then(rsp => { + getResourceConfig().then((rsp) => { if (rsp && rsp.success) { this.ipServer.diyOrLocalIP = rsp.data.ipType this.ipServer.ip = rsp.data.serviceIp @@ -647,237 +607,258 @@ clearInterval(this.browserTimer) } else { this.browserTimer = setInterval(() => { - let timestamp = new Date().getTime() / 1000; - this.settime = this.formatTime(timestamp, 'Y-M-D h:m:s') + 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 => { + 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 || + this.sysinfo.subMask !== this.originNetConfig.mask || + this.sysinfo.dns !== this.originNetConfig.dns || + this.sysinfo.gateway !== this.originNetConfig.gw || + this.sysinfo.server_port !== this.originNetConfig.server_port || + this.sysinfo.server_domain !== this.originNetConfig.server_domain + ) { if (this.sysinfo.ip !== this.originNetConfig.ip) { - let newUri = location.protocol + "//" + this.sysinfo.ip + ":" + this.sysinfo.server_port; + let newUri = location.protocol + "//" + this.sysinfo.ip + ":" + this.sysinfo.server_port var changeIPTimer = setTimeout(() => { - this.$alert('<strong>鎮ㄥ凡淇敼浜嗘湇鍔″櫒ip, 璇烽噸鏂扮櫥褰�</strong><a href="' + newUri + '"> ' + newUri + '<a/>', '鎻愮ず', { - dangerouslyUseHTMLString: true - }); + this.$alert( + '<strong>鎮ㄥ凡淇敼浜嗘湇鍔″櫒閰嶇疆, 璇烽噸鏂扮櫥褰�</strong><a target="_parent" href="' + + newUri + + '"> ' + + newUri + + "<a/>", + "鎻愮ず", + { + dangerouslyUseHTMLString: true + } + ) }, 10000) } - this.$confirm("纭闇�瑕佷慨鏀规湇鍔″櫒缃戠粶閰嶇疆鍚楋紵", { + 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 => { - }); + }) + .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 => { + saveDevInfo(this.sysinfo).then((rsp) => { if (rsp && rsp.success) { this.$notify({ type: "success", - message: "鏈満淇℃伅淇濆瓨鎴愬姛" - }); - this.initSysinfo(); + message: "鏈満淇℃伅淇敼鎴愬姛" + }) + this.initSysinfo() + } else { + this.$notify({ + type: "error", + message: "淇濆瓨澶辫触" + }) } - }); - - 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 href="' + newUri + '"> ' + newUri + '<a/>', '鎻愮ず', { - dangerouslyUseHTMLString: true - }); - }, 5000) - } + }) } } else { - console.log("error submit!!"); - return false; + console.log("error submit!!") + return false } - }); + }) }, + checkTimeZone(val) {}, submitClock() { - if (this.syncType === '1') { + if (this.syncType === "1") { if (this.ntpServer === "") { this.$notify({ type: "error", message: "NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖" - }); + }) return false } else if (this.timeInterval === "") { - this.timeInterval = 1; + this.timeInterval = 1 } } else { if (this.settime === "") { this.$notify({ type: "error", message: "璁剧疆鏃堕棿涓嶈兘涓虹┖" - }); + }) return false } } let requestBody = { timeZone: this.timezone, - ntp: this.syncType === '1', + ntp: this.syncType === "1", ntpServer: this.ntpServer, interval: this.timeInterval, newTime: this.settime } - saveClockInfo(requestBody).then(rsp => { + saveClockInfo(requestBody).then((rsp) => { if (rsp && rsp.success) { this.$notify({ type: "success", message: "璁剧疆鎴愬姛" - }); + }) } + this.initClockConf() }) }, testNTP() { - testNTPserver({ server: this.ntpServer }).then(rsp => { - if (rsp && rsp.success) { - this.$notify({ - type: "success", - message: "鏃堕棿鍚屾鎴愬姛" - }); - } else { + 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: "鏃堕棿鍚屾澶辫触" - }); - } - }).catch(err => { - this.$notify({ - type: "error", - message: "鏃堕棿鍚屾澶辫触,璇锋鏌ユ湇鍔″櫒ip" - }); - }) + message: "鏃堕棿鍚屾澶辫触,璇锋鏌ユ湇鍔″櫒ip" + }) + this.ntpTestLoading = false + }) }, submitAlarm() { - saveAlarmConfig(this.alarmConf).then(rsp => { + 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); - }, + // 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 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())); + 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())); + 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]); + format = format.replace(formateArr[i], returnArr[i]) } - return format; + return format }, - //鏁版嵁杞寲 + //鏁版嵁杞寲 formatNumber(n) { n = n.toString() - return n[1] ? n : '0' + n + 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" - }); - }, + 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 { @@ -889,8 +870,8 @@ // margin-left: -80px; .el-form-item { text-align: left; - &.is-required:not(.is-no-asterisk)>.el-form-item__label:before{ - margin-left:-8px; + &.is-required:not(.is-no-asterisk) > .el-form-item__label:before { + margin-left: -8px; } .el-button { float: right; @@ -1039,6 +1020,16 @@ 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; -- Gitblit v1.8.0