From b4902c47c0ffd80276ffd9cb0ea6bf6908b0420c Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 30 七月 2020 11:15:40 +0800
Subject: [PATCH] 添加数据推送, 日志管理
---
src/pages/datapush/index/RightEvent.vue | 862 ++++++++++++++++++++++++++
src/pages/datapush/index/main.ts | 25
src/pages/vindicate/index/App.vue | 159 ++--
src/pages/settings/components/BasicSetting.vue | 230 ------
src/pages/datapush/index/App.vue | 113 +++
src/pages/desktop/index/App.vue | 8
src/pages/desktop/index/components/Tools.vue | 109 +-
src/pages/desktop/index/mock/userData.json | 2
src/pages/datapush/index/LeftList.vue | 225 ++++++
src/pages/syslog/index/App.vue | 190 +++++
src/pages/syslog/index/main.ts | 11
11 files changed, 1,574 insertions(+), 360 deletions(-)
diff --git a/src/pages/datapush/index/App.vue b/src/pages/datapush/index/App.vue
new file mode 100644
index 0000000..c217fe8
--- /dev/null
+++ b/src/pages/datapush/index/App.vue
@@ -0,0 +1,113 @@
+<template>
+ <div class="flex-box bg-w p10">
+ <div class="ev-left-list">
+ <leftList
+ ref="baseSync"
+ listWidth="350px"
+ title="鍚屾搴�"
+ type="1"
+ :isSelected="isSelected"
+ :activeId="selectedId"
+ @getEvents="getEventList"
+ @del-list="delList"
+ @add="changeToAdd"
+ @enabled="eventSwitch"
+ ></leftList>
+ </div>
+
+ <div v-show="isShowRight">
+ <rightEvent
+ ref="right"
+ :eventObject="eventObject"
+ @onCancle="onCancle"
+ @updateList="updateList"
+ ></rightEvent>
+ </div>
+ </div>
+</template>
+<script>
+import leftList from "./LeftList";
+import rightEvent from "./RightEvent";
+import { getById } from "@/api/event";
+
+export default {
+ name: "eventPush",
+ components: {
+ leftList,
+ rightEvent
+ },
+ props: {},
+ data() {
+ return {
+ // 鏄惁灞曠ず鍙充晶
+ isShowRight: false,
+ // 鏄惁閫変腑
+ isSelected: false,
+ // 褰撳墠閫変腑鐨勪簨浠�
+ eventObject: {},
+ selectedId: ""
+ };
+ },
+ methods: {
+ eventSwitch(e) {
+ if (this.eventObject.id) {
+ if (e.id === this.eventObject.id) {
+ this.eventObject.enable = e.enable
+ }
+ }
+ // console.log(e)
+ },
+ /**
+ * 娣诲姞浜嬩欢鎺ㄩ��
+ */
+ changeToAdd() {
+ this.$refs.right.reAdd();
+ this.isShowRight = true;
+ },
+ // 鑾峰彇浜嬩欢鍒楄〃
+ async getEventList(data) {
+ // console.log(data, "褰撳墠閫変腑鐨�");
+ let json = {
+ id: data.id
+ };
+ let res = await getById(json);
+ if (res && res.success) {
+ this.eventObject = res.data;
+ this.isShowRight = true;
+ }
+ },
+ // 淇濆瓨鎴愬姛鍚庣殑鍥炶皟
+ updateList(id) {
+ this.$refs.baseSync.findAll();
+ this.getEventList({ id: id });
+ this.selectedId = id;
+ },
+ delList() {
+ this.$refs.baseSync.findAll();
+ this.isShowRight = false;
+ },
+ onCancle() {
+ this.isShowRight = false;
+ }
+ }
+};
+</script>
+
+<style src="../../../assets/css/common.scss" lang="scss"></style>
+<style src="../../../assets/css/overried.scss" lang="scss"></style>
+<style lang="scss">
+.ev-left-list {
+ border-right: 1px solid #e0e0e0;
+}
+
+.ant-divider,
+.ant-divider-vertical {
+ margin: 0 8px;
+ display: inline-block;
+ height: 100%;
+ width: 1px;
+ vertical-align: middle;
+ position: relative;
+ top: -0.06em;
+}
+</style>
diff --git a/src/pages/datapush/index/LeftList.vue b/src/pages/datapush/index/LeftList.vue
new file mode 100644
index 0000000..4feb9e5
--- /dev/null
+++ b/src/pages/datapush/index/LeftList.vue
@@ -0,0 +1,225 @@
+<template>
+ <div class="out-div">
+ <div class="flex-center left-list">
+ <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="eventName" size="mini" style="width: 280px">
+ <i slot="suffix" class="el-input__icon el-icon-search"></i>
+ </el-input>
+
+ <div class="icon-btn" @click="add" style="margin-left:10px">
+ <i class="el-icon-circle-plus-outline"></i>
+ <span> 鏂板</span>
+ </div>
+ </div>
+ <div class="max-height" style="overflow-y:auto;overflow-x:hidden">
+ <el-row
+ class="cursor-pointer"
+ v-for="(item, index) in eventList"
+ :key="item.id"
+ @click.native="clickCategory(index, item)"
+ :class="{activeRow:categoryIndex==index}"
+ >
+ <div class="event-name">
+ <b>{{item.name}}</b>
+ <p style="margin-top:8px; color:#9e9e9e">{{item.time_start}} ~ {{item.time_end}}</p>
+ </div>
+
+ <div class="event-btn">
+ <el-switch
+ v-model="item.enable"
+ @change="enabled(item)"
+ :inactive-value="false"
+ :active-value="true"
+ style="margin-top:-5px"
+ ></el-switch>
+ <span
+ class="iconfont iconshanchu iconStyle1"
+ style="color:#E74C3C"
+ @click.stop="deleteBase(item)"
+ ></span>
+ </div>
+ </el-row>
+ </div>
+ </div>
+</template>
+<script>
+import { findAll, changeStatus, deleteByid } from "@/api/event";
+export default {
+ name: "leftList",
+
+ props: {
+ listWidth: {
+ default: "350px",
+ type: String
+ },
+ title: {
+ default: "",
+ type: String
+ },
+ isSelected: {
+ default: false,
+ type: Boolean
+ },
+ type: {
+ default: "",
+ type: String
+ },
+ activeId: {
+ default: "",
+ type: String
+ }
+ },
+ data() {
+ return {
+ activeNames: ["1"],
+ categoryIndex: -1,
+ eventList: [],
+ // 褰撳墠鐐瑰嚮鐨勪簨浠跺璞�
+ clickBase: {},
+ // 浜嬩欢鍚嶇О
+ eventName: ""
+ };
+ },
+ mounted() {
+ this.findAll();
+ },
+ methods: {
+ async enabled(item) {
+ let json = {
+ id: item.id,
+ enable: item.enable
+ };
+ let res = await changeStatus(json);
+ if (res && res.success) {
+ // console.log(res, "鏇存柊鐘舵��");
+ this.$emit("enabled", item)
+ }
+ // this.$emit("getEvents", item);
+ },
+ async searchSyncTables() {
+ // let res = await selectSyncTables()
+ // this.data = res.data.datalist
+ },
+ async searchLocalTables() {
+ // let res = await selectLocalTables()
+ // this.data = res.data.datalist
+ },
+ add() {
+ this.$emit("add");
+ this.categoryIndex = -1;
+ },
+ clickCategory(index, item) {
+ // 杩欓噷鎴戜滑浼犲叆涓�涓綋鍓嶅��
+ this.categoryIndex = index;
+ // 璋冪敤鍒囨崲鍙充晶闈㈡澘鐨勫嚱鏁板苟涓斿垏鎹㈢埗缁勪欢涓璱sSelected鐨勫�艰鍙︿竴涓粍浠舵竻闄よ閫変腑鐘舵��
+ this.clickBase = item;
+ this.$emit("getEvents", item);
+ },
+ edit(item) {
+ this.$emit("changeShow", item, this.type);
+ },
+ async deleteBase(data) {
+ // console.log(data, "瑕佸垹闄ょ殑浜嬩欢鎺ㄩ��");
+ this.$confirm("纭畾瑕佸垹闄よ鏉℃帹閫佷换鍔″悧锛�", {
+ center: true,
+ cancelButtonClass: "comfirm-class-cancle",
+ confirmButtonClass: "comfirm-class-sure"
+ }).then(() => {
+ let json = {
+ type: "formData",
+ id: data.id
+ };
+ deleteByid(json).then(res => {
+ if (res && res.success) {
+ this.$emit("del-list");
+ this.$notify({
+ type: "success",
+ message: "鍒犻櫎鎴愬姛"
+ })
+ }
+ });
+ })
+ },
+ // 鏌ヨ浜嬩欢鍒楄〃
+ async findAll() {
+ let json = {
+ name: this.eventName
+ };
+ let res = await findAll(json);
+ if (res && res.success) {
+ // console.log(res, "鏌ヨ鎵�鏈変簨浠跺垪琛�");
+ if (this.activeId !== "") {
+ res.data.forEach((element, index) => {
+ if (element.id === this.activeId) {
+ this.categoryIndex = index;
+ }
+ });
+ }
+ this.eventList = res.data;
+
+
+ }
+ }
+ }
+};
+</script>
+<style lang="scss" scoped>
+.flex-center {
+ justify-content: left;
+}
+.iconStyle1 {
+ font-size: 18px;
+ margin-left: 15px;
+ cursor: pointer;
+}
+.activeRow {
+ background: #f8f8f8;
+}
+.cursor-pointer {
+ cursor: pointer;
+ height: 75px;
+}
+.max-height {
+ position: absolute;
+ left: 0px;
+ width: 355px;
+ height: 100%;
+ margin-top: 20px;
+ border-top: 1px solid #e0e0e0;
+ border-bottom: 1px solid #e0e0e0;
+}
+.out-div {
+ width: 350px;
+ height: 58.9em;
+ text-align: left;
+ padding-top: 20px;
+ .left-list {
+ position: absolute;
+ left: 15px;
+ top: 10px;
+ }
+}
+.event-name {
+ padding: 17px;
+ font-size: 14px;
+}
+.event-btn {
+ position: absolute;
+ left: 79%;
+ top: 18%;
+}
+.icon-btn {
+ i {
+ font-size: 18px;
+ position: relative;
+ top: 2px;
+ }
+ span {
+ font-size: 14px;
+ }
+ display: inline;
+ color: #3d68e1;
+ line-height: 38px;
+ margin-left: 10px;
+ cursor: pointer;
+}
+</style>
diff --git a/src/pages/datapush/index/RightEvent.vue b/src/pages/datapush/index/RightEvent.vue
new file mode 100644
index 0000000..cc4c6f0
--- /dev/null
+++ b/src/pages/datapush/index/RightEvent.vue
@@ -0,0 +1,862 @@
+<template>
+ <div class="s-event-push-right">
+ <div class="s-right-config">
+ <el-form>
+ <el-form-item label="鍚嶇О">
+ <el-input v-model="eventData.name" placeholder="璇疯緭鍏ュ悕绉�" size="small" style="width:400px"></el-input>
+ </el-form-item>
+
+ <el-form-item label="鏃堕棿">
+ <el-date-picker
+ v-model="eventData.time"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="datetimerange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ size="small"
+ ></el-date-picker>
+ </el-form-item>
+
+ <span style="line-height: 38px;">鎺ㄩ�佹湇鍔″櫒</span>
+ <div class="icon-btn" v-if="ips.length < 1" @click="addUrl('ip')">
+ <i class="el-icon-circle-plus-outline"></i>
+ <span> 娣诲姞ip</span>
+ </div>
+ <div class="icon-btn" v-if="domains.length < 1" @click="addUrl('domain')">
+ <i class="el-icon-circle-plus-outline"></i>
+ <span> 娣诲姞鍩熷悕</span>
+ </div>
+ <div v-for="(item,index) in urls" :key="item.hash" class="flex-box server-url">
+ <div>
+ <el-checkbox v-model="item.enable"></el-checkbox>
+ <span class="ml20">{{item.type =='ip' ? 'IP ' : '鍩熷悕 '}}</span>
+ <!-- <el-input v-model="item.url" style="width:400px;margin-left:34px;" size="small"></el-input> -->
+ <ip-input
+ v-if="item.type == 'ip'"
+ :id="item.url"
+ :ip="item.ip"
+ :item="item"
+ :on-item-change="onIpBlur"
+ style="width: 255px"
+ ></ip-input>
+ <el-input
+ v-else
+ v-model="item.domain"
+ style="width:256px;margin-left:0px;"
+ size="small"
+ ></el-input>
+ <span class="ml10">绔彛</span>
+ <el-input v-model="item.port" style="width:100px;margin-left:5px;" size="small"></el-input>
+ </div>
+ <div class="server-add">
+ <i
+ class="el-icon-remove-outline"
+ @click="delUrl(index)"
+ style="color:red;margin-right:10px"
+ />
+ <i class="el-icon-circle-plus-outline" @click="addUrl(item.type)"></i>
+ </div>
+ </div>
+
+ <el-form-item label="鑱斿姩鏂瑰紡" style="margin-top: 20px;width:100">
+ <el-select v-model="eventData.lineWay" placeholder="璇烽�夋嫨" size="small">
+ <el-option
+ v-for="item in eventData.lineOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="鏍囩">
+ <el-radio v-model="eventData.radioValue" label="1">婊¤冻鍏ㄩ儴</el-radio>
+ <el-radio v-model="eventData.radioValue" label="2">婊¤冻浠绘剰涓�涓�</el-radio>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div class="s-right-mid"></div>
+ <div class="s-right-rule">
+ <div class="rule-title">
+ <b style="margin-right:20px">浠诲姟閰嶇疆</b>
+ <div class="icon-btn" v-if="dataList.length === 0" @click="createSet">
+ <i class="el-icon-circle-plus-outline"></i>
+ <span> 鏂板</span>
+ </div>
+ <div class="icon-btn" v-if="dataList.length > 0" @click="cleanSet">
+ <i class="el-icon-remove-outline"></i>
+ <span> 娓呯┖</span>
+ </div>
+ </div>
+
+ <div v-for="(temp,index) in dataList" :key="index" style="margin-top:10px">
+ <el-row :gutter="20">
+ <el-col :span="4">
+ <el-select
+ v-model="temp.polygon_id"
+ placeholder="璇烽�夋嫨"
+ @change="selectChange($event,'options1',temp)"
+ size="small"
+ >
+ <el-option
+ v-for="item in temp.options1"
+ :key="item.id"
+ :label="item.name"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-col>
+ <el-col :span="4">
+ <el-select
+ v-model="temp.sdk_id"
+ placeholder="璇烽�夋嫨"
+ @change="selectChange($event,'options2',temp)"
+ size="small"
+ >
+ <el-option
+ v-for="item in temp.options2"
+ :key="item.id"
+ :label="item.name"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-col>
+ <el-col :span="4">
+ <el-select
+ v-model="temp.sdk_arg_alias"
+ placeholder="璇烽�夋嫨"
+ @change="selectChange($event,'options3',temp)"
+ size="small"
+ >
+ <el-option
+ v-for="item in temp.options3"
+ :key="item.id"
+ :label="item.name"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-col>
+ <el-col :span="4">
+ <el-select
+ v-model="temp.operator"
+ placeholder="璇烽�夋嫨"
+ @change="selectChange($event,'options4',temp)"
+ size="small"
+ >
+ <el-option
+ v-for="item in temp.options4"
+ :key="item.id"
+ :label="item.name"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-col>
+ <el-col :span="4">
+ <div v-if="temp.operator === 'custom'">
+ <el-input v-model="temp.operator_type" placeholder="璇疯緭鍏ュ唴瀹�" size="small"></el-input>
+ </div>
+ <div v-if="temp.operator !== 'custom'">
+ <el-select
+ v-model="temp.operator_type"
+ placeholder="璇烽�夋嫨"
+ @change="selectChange($event,'options5',temp)"
+ size="small"
+ >
+ <el-option
+ v-for="item in temp.options5"
+ :key="item.id"
+ :label="item.name"
+ :disabled="item.disabled"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </div>
+ </el-col>
+ <el-col :span="4">
+ <div class="rule-edit-btn">
+ <i
+ v-show="dataList.length > 1"
+ class="el-icon-remove-outline"
+ @click="delRule(index)"
+ style="color:red;margin-right:10px"
+ />
+ <i
+ v-show="index === dataList.length -1"
+ class="el-icon-circle-plus-outline"
+ @click="addRule()"
+ style="color:#3D68E1"
+ ></i>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row></el-row>
+ </div>
+
+ <div class="rule-title2">
+ <b>瑙勫垯</b>
+ <div class="div-border">{{eventData.eventTxt}}</div>
+ </div>
+ <div class="save-btn">
+ <el-button type="info" size="small" @click="onCancle">鍙栨秷</el-button>
+ <el-button type="primary" @click="eventPushsSave" size="small">淇濆瓨</el-button>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import ipInput from "@/components/subComponents/IPInput";
+
+import { eventPushsSave, findByEventTopic } from "@/api/event";
+import { findDictionaryByType, findDictionaryByID } from "@/api/dictionary";
+export default {
+ name: "rightEvent",
+ components: { ipInput },
+ filters: {
+ ipSplit(url) {
+ return url.split(":")[0]
+ },
+ portSplit(url) {
+ return url.split(":")[1]
+ }
+ },
+ props: {
+ eventObject: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ }
+ },
+ computed: {
+ urls() {
+ return this.eventData.urls
+ },
+ ips() {
+ return this.eventData.urls.filter(item => {
+ return item.type === 'ip';
+ })
+ },
+ domains() {
+ return this.eventData.urls.filter(item => {
+ return item.type === 'domain';
+ })
+ }
+ },
+ watch: {
+ eventObject: {
+ handler(newVal, oldVal) {
+ this.eventData.enable = this.eventObject.enable;
+ if (newVal !== oldVal) {
+ // console.log(newVal, "褰撳墠閫変腑鐨勪簨浠秝atch");
+ if (this.eventData.id !== newVal.id) {
+ this.dataList = [];
+ // console.log(this.eventObject.enable)
+
+ this.eventData.id = newVal.id;
+ this.eventData.name = newVal.name;
+ this.eventData.time = [
+ this.eventObject.time_start,
+ this.eventObject.time_end
+ ];
+ this.eventData.serverIp = newVal.ip_ports;
+ this.eventData.urls = newVal.urls;
+ this.eventData.lineWay = newVal.link_type;
+ this.eventData.eventTxt = newVal.rule_text;
+ this.eventData.radioValue = newVal.is_satisfy_all ? "1" : "2";
+
+ // urls鍙嶈В鏋�
+ let ipSum = 0, domainSum = 0;
+ if (!this.eventData.urls) {
+ this.$set(this.eventData, "urls", [])
+ }
+ for (let i = 0; i < this.eventData.urls.length; i++) {
+ let item = this.eventData.urls[i]
+ item.hash = Math.random().toString(36).substr(2);
+ // 瑙f瀽鎴恑p鎴栧煙鍚�
+ let addr = item.url.split(":")[0]
+ if (this.isValidIP(addr)) {
+ item.ip = addr
+ this.$set(item, "domain", "")
+ this.$set(item, "type", "ip")
+ ipSum++
+ } else {
+ this.$set(item, "domain", addr)
+ this.$set(item, "type", "domain")
+ item.ip = ""
+ domainSum++
+ }
+ // item.port =
+ this.$set(item, "port", item.url.split(":")[1])
+ }
+ this.eventData.urls.sort(function (a, b) {
+ var val1 = b.type;
+ var val2 = a.type;
+ if (val1 < val2) {
+ return -1;
+ } else if (val1 > val2) {
+ return 1;
+ } else {
+ return 0;
+ }
+ })
+ if (newVal.rules) {
+ newVal.rules.map((i, index) => {
+ this.dataList.push(JSON.parse(JSON.stringify(this.baseDateL)));
+ this.dataList[index].id = i.id;
+ this.dataList[index].event_push_id = i.event_push_id;
+ this.dataList[index].polygon_id = i.topic_type;
+ this.selectChange(i.topic_type, "options1", this.dataList[index]);
+ this.dataList[index].sdk_id = i.topic_arg;
+ this.selectChange(i.topic_arg, "options2", this.dataList[index]);
+ this.dataList[index].operator_type = i.rule_value;
+ this.dataList[index].sdk_arg_alias = i.operator;
+ this.dataList[index].operator = i.operator_type;
+ });
+ }
+ }
+ }
+ },
+ deep: true
+ }
+ },
+ data() {
+ return {
+ eventData: {
+ enable: false,
+ id: "",
+ name: "",
+ time: [
+ this.$moment().format("YYYY-MM-DD 00:00:00"),
+ this.$moment().format("YYYY-MM-DD HH:mm:ss")
+ ],
+ serverIp: [
+ {
+ enable: true,
+ server_ip: "",
+ port: 0
+ }
+ ],
+ urls: [
+ {
+ enable: true,
+ url: "http://"
+ }
+ ],
+ lineWay: "",
+ lineOptions: [
+ {
+ value: "001",
+ label: "IP骞挎挱"
+ }
+ ],
+ radioValue: "1",
+ eventTxt: ""
+ },
+ dataList: [],
+ baseDateL: {
+ event_push_id: "",
+ id: "",
+ options1: [
+ {
+ id: "all",
+ name: "鍏ㄩ儴鍖哄煙"
+ },
+ {
+ id: "002",
+ name: "鐭╁舰1"
+ }
+ ],
+ polygon_id: "",
+ options2: [
+ {
+ value: "001",
+ label: "鍏ㄩ儴绠楁硶"
+ },
+ {
+ value: "002",
+ label: "绠楁硶1"
+ },
+ {
+ value: "003",
+ label: "绠楁硶2"
+ }
+ ],
+ sdk_id: "",
+ options3: [
+ {
+ value: "001",
+ label: "浜烘暟"
+ },
+ {
+ value: "002",
+ label: "鏁忔劅搴�"
+ },
+ {
+ value: "003",
+ label: "鎸佺画鏃堕棿"
+ }
+ ],
+ sdk_arg_alias: "",
+ unit: "",
+ options4: [
+ {
+ value: "001",
+ label: ">"
+ },
+ {
+ value: "002",
+ label: "<"
+ },
+ {
+ value: "003",
+ label: "=="
+ }
+ ],
+ operator: "",
+ options5: [
+ {
+ value: "001",
+ label: "鍊�"
+ },
+ {
+ value: "002",
+ label: "澶囬�夐」"
+ }
+ ],
+ operator_type: "",
+ options6: [
+ {
+ value: "001",
+ label: "鍊�"
+ },
+ {
+ value: "002",
+ label: "澶囬�夐」"
+ }
+ ],
+ select_time_rule: "",
+ sdk_arg_value: "",
+ options7: [
+ {
+ value: "001",
+ label: "浠诲姟1"
+ },
+ {
+ value: "002",
+ label: "浠诲姟2"
+ }
+ ],
+ select_task: ""
+ }
+ };
+ },
+ methods: {
+ addServer() {
+ // console.log("addServer");
+ let obj = {
+ enable: true,
+ server_ip: "",
+ port: ""
+ };
+ this.eventData.serverIp.push(obj);
+ },
+ addUrl(type) {
+ let obj = {
+ checked: true,
+ hash: Math.random().toString(36).substr(2),
+ url: "",
+ ip: "",
+ port: "",
+ type: type,
+ domain: ""
+ };
+ this.eventData.urls.push(obj);
+ this.eventData.urls.sort(function (a, b) {
+ var val1 = b.type;
+ var val2 = a.type;
+ if (val1 < val2) {
+ return -1;
+ } else if (val1 > val2) {
+ return 1;
+ } else {
+ return 0;
+ }
+ })
+ },
+ delUrl(index) {
+ this.$set(this.eventData.urls, index, this.baseDateL)
+ this.eventData.urls.splice(index, 1)
+ },
+ // 淇濆瓨
+ async eventPushsSave() {
+ // 鍒ゆ柇淇濆瓨鐨刬p鏄惁绗﹀悎鏍煎紡瑕佹眰
+ if (this.eventData.urls.length < 1) {
+ this.$notify({
+ type: "warning",
+ message: "璇烽厤缃嚦灏戜竴鍙版帹閫佹湇鍔″櫒"
+ });
+ return;
+ }
+ let isValid = true;
+ for (let i = 0; i < this.eventData.urls.length; i++) {
+ let item = this.eventData.urls[i]
+ if (item.type == 'ip') {
+ if (this.isValidIP(item.ip) && this.isValidPort(item.port)) {
+ item.url = item.ip + ":" + item.port
+ } else {
+ isValid = false
+ }
+ } else {
+ if (item.domain.length > 0 && this.isValidPort(item.port)) {
+ item.url = item.domain + ":" + item.port
+ } else {
+ isValid = false
+ }
+ }
+ }
+ if (!isValid) {
+ this.$notify({
+ type: "warning",
+ message: "璇疯緭鍏ユ纭牸寮忕殑鏈嶅姟鍣ㄥ湴鍧� 鍜� 绔彛"
+ });
+ return;
+ }
+ // 鎷兼帴瀛楃涓�
+
+ let ruleDesc = []
+ this.dataList.map(i => {
+ let str = "";
+ if (i.polygon_id) {
+ str += this.getNameByValue(i.options1, i.polygon_id);
+ }
+ if (i.sdk_id && i.sdk_id !== 'empty') {
+ str += this.getNameByValue(i.options2, i.sdk_id);
+ }
+ if (i.sdk_arg_alias === '==') {
+ str += '=';
+ } else {
+ // str += i.sdk_arg_alias;
+ str += this.getNameByValue(i.options3, i.sdk_arg_alias);
+ }
+ if (i.operator_type) {
+ if (i.operator === "custom") {
+ str += i.operator_type;
+ } else {
+ str += this.getNameByValue(i.options5, i.operator_type);
+ }
+ }
+
+ if (str.length > 0) {
+ ruleDesc.push(str)
+ }
+ });
+ // 澶勭悊瑙勫垯鍒楄〃鏁版嵁缁撴瀯
+ let list = this.dataList.map(i => {
+ let obj = {};
+ obj.operator = i.sdk_arg_alias;
+ obj.rule_value = i.operator_type;
+ obj.operator_type = i.operator;
+ obj.topic_type = i.polygon_id;
+ obj.topic_arg = i.sdk_id;
+ return obj;
+ });
+ // console.log(this.eventData)
+ let json = {
+ enable: this.eventData.enable,
+ id: this.eventData.id,
+ ip_ports: this.eventData.serverIp,
+ name: this.eventData.name,
+ rule_text: ruleDesc.join("锛�"),
+ rules: list,
+ time_start: this.eventData.time[0],
+ time_end: this.eventData.time[1],
+ urls: this.eventData.urls,
+ is_satisfy_all: this.eventData.radioValue === "1",
+ link_type: this.eventData.lineWay
+ };
+ let res = await eventPushsSave(json);
+ if (res && res.success) {
+ this.eventData.eventTxt = ruleDesc.join("锛�");
+ this.$emit("updateList", res.data.id);
+ this.$notify({
+ type: "success",
+ message: "淇濆瓨鎴愬姛"
+ });
+ }
+ },
+ // 鏌ユ壘瀛楀吀
+ async findByType() {
+ let res = await findDictionaryByType();
+ if (res && res.success) {
+ // console.log(res, "鏌ヨ閰嶇疆鍖哄煙鏁版嵁婧�");
+ this.baseDateL.options1 = res.data.EVENTRULETOPIC;
+ this.baseDateL.options3 = res.data.RULECOMPUTE;
+ this.baseDateL.options4 = res.data.EVENTTYPECOMPUTE;
+ }
+ },
+ // 楠岃瘉ip鐨刯s鏂规硶
+ isValidIP(str) {
+ // let reg = /^(http:\/\/|https:\/\/)(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\:([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5])(\/)([a-zA-Z0-9_/]+)$/
+ /* eslint-disable */
+ let reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
+ return reg.test(str);
+ },
+ isValidPort(str) {
+ return parseInt(str) > 0 && parseInt(str) < 65536
+ },
+ // 鏂板缓閰嶇疆
+ createSet() {
+ this.dataList.push(JSON.parse(JSON.stringify(this.baseDateL)));
+ },
+ cleanSet() {
+ this.dataList.splice(0, this.dataList.length);
+ },
+ // 娣诲姞瀛愯鍒�
+ addRule() {
+ this.dataList.push(JSON.parse(JSON.stringify(this.baseDateL)));
+ },
+ // 鍒犻櫎瀛愯鍒�
+ delRule(index) {
+ this.dataList.splice(index, 1);
+ },
+ // 瑙勫垯涓笅鎷夋鐨勯�夋嫨鍥炶皟
+ async selectChange(value, type, data) {
+ if (type === "options1") {
+ this.$set(data, "sdk_id", "");
+ if (value === "dbtable" || value === "task" || value === "alarmLevel") {
+ let list = [
+ {
+ name: "绌�",
+ value: "empty",
+ id: "000"
+ }
+ ];
+ this.$set(data, "options2", list);
+ this.$set(data, "sdk_id", "empty");
+ let json = {
+ topic: data.polygon_id,
+ type: ""
+ };
+ let res = await findByEventTopic(json);
+ if (res && res.success) {
+ console.log(res, "鏍规嵁涓�浜岀骇閫夐」鑾峰彇");
+ this.$set(data, "options5", res.data);
+ }
+ } else {
+ let id = this.getIdByValue(data.options1, value);
+ if (id !== undefined) {
+ this.findByParentId(id).then(i => {
+ // console.log(i, '鏍规嵁鐖秈d鏌ヨ瀛愬弬鏁�')
+ if (i && i.length !== 0) {
+ this.$set(data, "options2", i);
+ }
+ });
+ }
+ }
+ }
+ if (type === "options2") {
+ if (data.polygon_id && data.sdk_id) {
+ let json = {
+ topic: data.polygon_id,
+ type: data.sdk_id
+ };
+ let res = await findByEventTopic(json);
+ if (res && res.success) {
+ // console.log(res, "鏍规嵁涓�浜岀骇閫夐」鑾峰彇");
+ this.$set(data, "options5", res.data);
+ }
+ }
+ }
+ if (type === "options3") {
+ return false;
+ }
+ if (type === "options4") {
+ return false;
+ }
+ if (type === "options5") {
+ return false;
+ }
+ },
+ // 鏍规嵁value杩斿洖瀵瑰簲鐨刬d
+ getIdByValue(arr, id) {
+ let s = arr.find(item => {
+ return item.value === id;
+ });
+ // console.log(s, 'label')
+ return s.id;
+ },
+ // 鏍规嵁value杩斿洖瀵瑰簲鐨刵ame
+ getNameByValue(arr, value) {
+ let s = arr.find(item => {
+ return item.value === value;
+ });
+ return s.name;
+ },
+ // 鏍规嵁瀛楀吀鐨刬d鏌ヨ瀵瑰簲鐨勫瓧鍏�
+ async findByParentId(id) {
+ let res = await findDictionaryByID({ parentId: id });
+ if (res && res.success) {
+ // console.log(res, "鏍规嵁瀛楀吀鐨刬d鏌ヨ瀵瑰簲鐨勫瓧鍏�");
+ let list = JSON.parse(JSON.stringify(res.data));
+ return list;
+ }
+ },
+ // 娓呯┖閲嶆柊鏂板
+ reAdd() {
+ this.eventData = {
+ id: "",
+ name: "",
+ time: [
+ this.$moment().format("YYYY-MM-DD 00:00:00"),
+ this.$moment().format("YYYY-MM-DD HH:mm:ss")
+ ],
+ serverIp: [
+ {
+ enable: true,
+ server_ip: "",
+ port: 0
+ }
+ ],
+ urls: [
+ ],
+ lineWay: "",
+ lineOptions: [
+ {
+ value: "001",
+ label: "IP骞挎挱"
+ }
+ ],
+ radioValue: "1",
+ eventTxt: ""
+ };
+ this.dataList = [];
+ },
+ onIpBlur(ip, item) {
+ item.ip = ip
+ },
+ onCancle(){
+ this.$emit('onCancle')
+ }
+ },
+ mounted() {
+ this.findByType().then(() => {
+ if (Object.keys(this.eventObject).length !== 0) {
+ // console.log(this.eventObject, "褰撳墠閫変腑鐨勪簨浠秏ounted");
+ this.eventData.enable = this.eventObject.enable;
+ this.eventData.id = this.eventObject.id;
+ this.eventData.name = this.eventObject.name;
+ this.eventData.time = [
+ this.eventObject.time_start,
+ this.eventObject.time_end
+ ];
+ this.eventData.serverIp = this.eventObject.ip_ports;
+ this.eventData.urls = this.eventObject.urls;
+ this.eventData.lineWay = this.eventObject.link_type;
+ this.eventData.eventTxt = this.eventObject.rule_text;
+ this.eventData.radioValue = this.eventObject.is_satisfy_all ? "1" : "2";
+
+ if (this.eventObject.rules) {
+ this.eventObject.rules.map((i, index) => {
+ this.dataList.push(JSON.parse(JSON.stringify(this.baseDateL)));
+ this.dataList[index].id = i.id;
+ this.dataList[index].event_push_id = i.event_push_id;
+ this.dataList[index].polygon_id = i.topic_type;
+ this.selectChange(i.topic_type, "options1", this.dataList[index]);
+ this.dataList[index].sdk_id = i.topic_arg;
+ this.selectChange(i.topic_arg, "options2", this.dataList[index]);
+ this.dataList[index].sdk_arg_alias = i.operator;
+ this.dataList[index].operator = i.operator_type;
+ this.dataList[index].operator_type = i.rule_value;
+ });
+ }
+ }
+ });
+ }
+};
+</script>
+<style lang="scss">
+.s-event-push-right {
+ text-align: left;
+ font-size: 14px;
+ i {
+ cursor: pointer;
+ }
+ .s-right-config {
+ padding: 10px 40px;
+ }
+
+ .el-form-item__label {
+ text-align: left;
+ }
+
+ .s-right-mid {
+ height: 10px;
+ background-color: #e9ebf2;
+ width: 100%;
+ position: absolute;
+ }
+
+ .s-right-rule {
+ padding: 20px 40px;
+ margin-top: 17px;
+ .rule-title {
+ border-bottom: 1px solid #e0e0e0;
+ }
+ .rule-title2 {
+ margin-top: 20px;
+ }
+
+ .div-border {
+ width: 995px;
+ padding: 10px;
+ margin-top: 15px;
+ min-height: 80px;
+ background: #fafafa;
+ border: 1px solid #f2f2f2;
+ }
+
+ .rule-edit-btn {
+ font-size: 18px;
+ line-height: 38px;
+ }
+
+ .save-btn {
+ // float: right;
+ margin-top: 20px;
+ margin-left: 895px;
+ }
+ }
+
+ .el-button--text {
+ text-decoration: unset;
+ }
+
+ .icon-btn {
+ i {
+ font-size: 18px;
+ position: relative;
+ top: 2px;
+ }
+ span {
+ font-size: 14px;
+ }
+ display: inline;
+ color: #3d68e1;
+ line-height: 38px;
+ margin-left: 10px;
+ cursor: pointer;
+ }
+
+ .server-url {
+ padding-top: 25px;
+ }
+ .server-add {
+ font-size: 18px;
+ margin-left: 8px;
+ color: #3d68e1;
+ line-height: 39px;
+ }
+}
+</style>
diff --git a/src/pages/datapush/index/main.ts b/src/pages/datapush/index/main.ts
new file mode 100644
index 0000000..74d944a
--- /dev/null
+++ b/src/pages/datapush/index/main.ts
@@ -0,0 +1,25 @@
+import Vue from 'vue';
+import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+import "@/assets/css/element-variables.scss";
+import "../../../assets/icons/alibaba/iconfont.css";
+import "../../../assets/icons/basic/iconfont.css";
+import "../../../assets/icons/iconfont.css";
+import "../../../assets/icons/symbol.js";
+
+import App from './App.vue'
+import moment from "moment";
+Vue.prototype.$moment = moment;
+
+Vue.use(ElementUI)
+
+Vue.filter('moment', function (value, formatString) {
+ formatString = formatString || 'YYYY-MM-DD HH:mm:ss';
+ return moment(value).format(formatString);
+
+});
+
+new Vue({
+ el: '#app',
+ render: h => h(App)
+})
diff --git a/src/pages/desktop/index/App.vue b/src/pages/desktop/index/App.vue
index d87fecd..38d0b0e 100644
--- a/src/pages/desktop/index/App.vue
+++ b/src/pages/desktop/index/App.vue
@@ -11,8 +11,6 @@
<script>
import Desktop from './components/Desktop';
-import Dock from './components/Dock';
-import Preference from './components/Preference';
import NotificationCenter from './components/NotificationCenter';
import NoticeTip from './components/NoticeTip';
import Tools from './components/Tools';
@@ -22,7 +20,7 @@
export default {
name: 'app',
components: {
- Desktop, Dock, Preference, NotificationCenter, NoticeTip, Tools, ToolsEntry
+ Desktop, NotificationCenter, NoticeTip, Tools, ToolsEntry
},
mounted() {
document.getElementById('app').style.backgroundImage = process.env.VUE_APP_MAIN_URL;
@@ -118,8 +116,8 @@
background-attachment: fixed;
}
-.clearFix:after{
- content: '';
+.clearFix:after {
+ content: "";
display: block;
height: 0;
clear: both;
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 124e00a..72b59ef 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -1,67 +1,56 @@
<template>
<div class="tools">
-
- <div class="tools-left">
- <div
- :class="['tools-icon','tools-show-desktop', {clicked:this.$store.state.desktop.preferenceVisiable}]"
- @click="togglePreference()"
- >
- <img class="system" :src="`${publicPath}images/header-icon/system.png`" />
- <!-- <span class="fa fa-apple"></span> -->
- </div>
- <div class="tools-icon" >
- <!-- <span class="fa fa-safari"></span> -->
- <img class="smart-ai" :src="`${publicPath}images/header-icon/SmartAI.png`" alt />
- </div>
+ <div class="tools-left">
+ <div
+ :class="['tools-icon','tools-show-desktop', {clicked:this.$store.state.desktop.preferenceVisiable}]"
+ @click="togglePreference()"
+ >
+ <img class="system" :src="`${publicPath}images/header-icon/system.png`" />
+ <!-- <span class="fa fa-apple"></span> -->
</div>
- <div class="tools-middle">
- <div
- v-for="dock in this.$store.state.desktop.minDocks"
- :key="dock.id"
- class="dock-item-wrap"
-
- >
- <a @click="dockClick(dock)">
- <img class="dock-item" :src="dock.src" :alt="dock.alt" />
- </a>
- </div>
+ <div class="tools-icon">
+ <!-- <span class="fa fa-safari"></span> -->
+ <img class="smart-ai" :src="`${publicPath}images/header-icon/SmartAI.png`" alt />
</div>
- <div class="tools-right">
- <div class="tools-icon">
- <!-- <span class="fa fa-battery-full"></span> -->
- <img :src="`${publicPath}images/header-icon/search.png`" alt />
- </div>
- <div class="tools-icon">
- <!-- <span class="fa fa-battery-full"></span> -->
- <img :src="`${publicPath}images/header-icon/help.png`" alt />
- </div>
- <div class="tools-icon" @click="notificationCenterClick()">
- <!-- <span class="fa fa-battery-full"></span> -->
- <img :src="`${publicPath}images/header-icon/notice.png`" alt />
- </div>
- <div class="tools-icon">
- <!-- <span class="fa fa-battery-full"></span> -->
- <img :src="`${publicPath}images/header-icon/user.png`" alt />
- </div>
- <!-- <timer></timer> -->
- <!-- <div class="tools-icon tools-notification-center" @click="notificationCenterClick()">
+ </div>
+ <div class="tools-middle">
+ <div v-for="dock in this.$store.state.desktop.minDocks" :key="dock.id" class="dock-item-wrap">
+ <a @click="dockClick(dock)">
+ <img class="dock-item" :src="dock.src" :alt="dock.alt" />
+ </a>
+ </div>
+ </div>
+ <div class="tools-right">
+ <div class="tools-icon">
+ <!-- <span class="fa fa-battery-full"></span> -->
+ <img :src="`${publicPath}images/header-icon/search.png`" alt />
+ </div>
+ <div class="tools-icon">
+ <!-- <span class="fa fa-battery-full"></span> -->
+ <img :src="`${publicPath}images/header-icon/help.png`" alt />
+ </div>
+ <div class="tools-icon" @click="notificationCenterClick()">
+ <!-- <span class="fa fa-battery-full"></span> -->
+ <img :src="`${publicPath}images/header-icon/notice.png`" alt />
+ </div>
+ <div class="tools-icon">
+ <!-- <span class="fa fa-battery-full"></span> -->
+ <img :src="`${publicPath}images/header-icon/user.png`" alt />
+ </div>
+ <!-- <timer></timer> -->
+ <!-- <div class="tools-icon tools-notification-center" @click="notificationCenterClick()">
<span
:class="['fa', {'fa-list-ul':notificationCenterNoMessage()}, {'fa-comment-o on-new-msg':!notificationCenterNoMessage()},{'fa-commenting-o':notificationCenterMessageFlicker()}]"
></span>
- </div> -->
- </div>
-
+ </div>-->
+ </div>
</div>
</template>
<script>
-import Timer from "./Timer";
export default {
name: "Tools",
- components: {
- Timer
- },
data() {
return {
publicPath: process.env.BASE_URL,
@@ -75,23 +64,23 @@
window.toolIntervalArr.forEach(item => clearInterval(item));
}
window.toolIntervalArr = [
- setInterval(function() {
+ setInterval(function () {
_that.notificationCenterMessageCount += 1;
}, 600)
];
},
methods: {
- notificationCenterClick: function() {
+ notificationCenterClick: function () {
this.notificationCenterVisible = !this.notificationCenterVisible;
this.$store.commit(
"desktop/changeNotificationCenterVisible",
this.notificationCenterVisible
);
},
- notificationCenterNoMessage: function() {
+ notificationCenterNoMessage: function () {
return this.$store.state.desktop.messageNotices.length === 0;
},
- notificationCenterMessageFlicker: function() {
+ notificationCenterMessageFlicker: function () {
return (
this.notificationCenterMessageCount % 2 === 0 &&
!this.notificationCenterNoMessage()
@@ -102,7 +91,7 @@
//this.$store.commit("desktop/togglePreference");
//鏄剧ず妗岄潰,鏈�灏忓寲宸叉墦寮�鐨勫簲鐢�
debugger;
- this.$store.state.desktop.frames.forEach(frame=>{
+ this.$store.state.desktop.frames.forEach(frame => {
this.$store.commit('desktop/addMinDock', {
id: frame.id,
src: frame.icon,
@@ -152,14 +141,14 @@
float: left;
margin-left: 14px;
}
-.tools .tools-middle{
+.tools .tools-middle {
float: left;
position: relative;
}
-.tools .tools-middle::before{
+.tools .tools-middle::before {
width: 1px;
height: 20px;
- content: '';
+ content: "";
position: absolute;
top: 10px;
left: 0;
@@ -174,10 +163,10 @@
border-bottom: 2px solid transparent;
}
.tools .tools-middle .dock-item-wrap:hover,
-.tools .tools-middle .dock-item-wrap.clicked{
+.tools .tools-middle .dock-item-wrap.clicked {
color: white;
background-color: #98aabe;
- border-color: #40C3FF;
+ border-color: #40c3ff;
cursor: pointer;
}
.dock-item-wrap a {
diff --git a/src/pages/desktop/index/mock/userData.json b/src/pages/desktop/index/mock/userData.json
index a08717b..5e2e466 100644
--- a/src/pages/desktop/index/mock/userData.json
+++ b/src/pages/desktop/index/mock/userData.json
@@ -120,7 +120,7 @@
"src": "../../images/app-mid/log-manage.png",
"alt": "鏃ュ織绠$悊",
"type": "2",
- "url": "/view/logManage",
+ "url": "/view/syslog",
"name": "鏃ュ織绠$悊"
},
{
diff --git a/src/pages/settings/components/BasicSetting.vue b/src/pages/settings/components/BasicSetting.vue
index 3562a61..255e35d 100644
--- a/src/pages/settings/components/BasicSetting.vue
+++ b/src/pages/settings/components/BasicSetting.vue
@@ -18,7 +18,6 @@
class="menu-css"
@open="menuOpen"
@close="menuClose"
-
>
<!-- 鏈満淇℃伅 -->
<el-submenu index="0">
@@ -160,7 +159,7 @@
</el-menu-item-group>
</el-submenu>
<!-- 瀵瑰鏈嶅姟IP 鏀瑰悕涓哄閮ㄧ綉缁�(鏂皌ab)-->
-
+
<!-- 鏂囦欢闊宠棰� -->
<!-- <el-submenu index="4">
<template slot="title">
@@ -362,157 +361,30 @@
</div>
<div class="flex-box">
<label>鍩熷悕</label>
- <el-input size="small" v-model="ipServer.localhost"></el-input>
+ <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>
+ <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-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>
- <el-tab-pane label="鏉冮檺绠$悊" name="user" >
+ <el-tab-pane label="鏉冮檺绠$悊" name="user">
<authority-management v-if="activeName === 'user'"></authority-management>
</el-tab-pane>
- <el-tab-pane label="骞挎挱璁剧疆" name="radio" >
+ <el-tab-pane label="骞挎挱璁剧疆" name="radio">
<radio-set v-if="activeName === 'radio'"></radio-set>
- </el-tab-pane>
- <!-- GB28181璁剧疆 -->
- <el-tab-pane label="GB28181璁剧疆" name="fifth">
- <el-form
- :model="gb28181"
- :rules="rules"
- label-width="140px"
- class="alarmSetting"
- ref="gb28181"
- >
- <!-- <el-form-item label="鍥介檯鏈嶅姟鍣↖P" prop="ServerIp">
- <ip-input :ip="gb28181.ServerIp" @on-blur="gb28181.ServerIp = arguments[0]"></ip-input>
- </el-form-item>-->
-
- <div style="text-align: left;margin-bottom: 22px;">
- <el-radio-group v-model="gb28181.idType">
- <el-radio :label="0">杈撳叆宸叉湁ID</el-radio>
- <el-radio :label="1">鐢熸垚鏂扮殑ID</el-radio>
- </el-radio-group>
- </div>
-
- <el-form-item label="鎵�鍦ㄥ湴">
- <el-select
- v-model="locationCity.province"
- @change="changeProvince"
- size="small"
- placeholder="璇烽�夋嫨鐪佷唤"
- >
- <el-option
- v-for="item in locationCity.provinceOptions"
- :key="item.id"
- :label="item.name"
- size="small"
- :value="item.id"
- ></el-option>
- </el-select>
- <el-select
- class="ml10 mr10"
- v-model="locationCity.city"
- :disabled="!locationCity.province"
- @change="changeCity"
- size="small"
- placeholder="璇烽�夋嫨鍩庡競"
- >
- <el-option
- v-for="item in locationCity.cityOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
- </el-select>
- <el-select
- v-model="locationCity.county"
- :disabled="!locationCity.city"
- size="small"
- placeholder="璇烽�夋嫨鍖哄幙"
- >
- <el-option
- v-for="item in locationCity.countyOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
- </el-select>
- <el-button
- type="text"
- style="position: absolute"
- v-show="gb28181.idType === 1"
- @click="newGBID"
- >鐢熸垚ID</el-button>
- </el-form-item>
-
- <!-- <el-form-item label="鍥介檯鏈嶅姟鍣ㄧ鍙�" prop="GbServerPort">
- <el-input v-model.number="gb28181.ServerPort" placeholder="璇疯緭鍏�" size="small"></el-input>
- </el-form-item>-->
-
- <el-form-item label="鍥芥爣ID">
- <el-input v-model="gb28181.PublicId" placeholder="璇疯緭鍏�" size="small"></el-input>
- </el-form-item>
-
- <el-form-item label="鍥芥爣绔彛" prop="ServerPort">
- <el-input v-model.number="gb28181.GbServerPort" placeholder="璇疯緭鍏�" size="small"></el-input>
- </el-form-item>
-
- <el-form-item label="寮�鍚壌鏉�">
- <el-switch v-model="gb28181.IsAuth"></el-switch>
- </el-form-item>
-
- <el-form-item label="閴存潈瀵嗙爜" v-show="gb28181.IsAuth">
- <el-input v-model="gb28181.Password" placeholder="璇疯緭鍏�" size="small"></el-input>
- </el-form-item>
-
- <el-col :span="12">
- <el-form-item>
- <el-button type="primary" @click="submitGB28281" size="small">淇濆瓨</el-button>
- </el-form-item>
- </el-col>
- </el-form>
</el-tab-pane>
</el-tabs>
</div>
@@ -522,17 +394,13 @@
import {
getDevInfo,
getAlarmConfig,
- getGB28181Config,
saveDevInfo,
saveAlarmConfig,
- saveGB28181Config,
getClockInfo,
saveClockInfo,
testNTPserver,
getResourceConfig,
saveResourceConfig,
- getGb28181AreaList,
- newGb28181ID
} from "@/api/system";
import { isPort, isIPv4 } from "@/scripts/validate";
@@ -588,7 +456,6 @@
timestamp: 0,
sysinfo: {},
alarmConf: {},
- gb28181: {},
originNetConfig: {
ip: "",
gw: "",
@@ -702,7 +569,6 @@
this.initSysinfo();
// this.initAlarmConf();
this.initResourceConfig();
- this.initGB28181Conf();
this.initClockConf();
});
},
@@ -773,19 +639,6 @@
this.ipServer.ip = rsp.data.serviceIp
this.ipServer.localhost = rsp.data.domain
this.ipServer.localFilePort = rsp.data.filePort
- }
- })
- },
- initGB28181Conf() {
- getGB28181Config().then(rsp => {
- if (rsp && rsp.success) {
- this.gb28181 = rsp.data;
- this.gb28181.idType = 0;
- }
- });
- getGb28181AreaList().then(rsp => {
- if (rsp && rsp.success) {
- this.locationCity.provinceOptions = rsp.data;
}
})
},
@@ -969,23 +822,6 @@
}
})
},
- submitGB28281() {
- this.$refs["gb28181"].validate(valid => {
- if (valid) {
- saveGB28181Config(this.gb28181).then(rsp => {
- if (rsp && rsp.success) {
- this.$notify({
- type: "success",
- message: "GB28181璁剧疆淇濆瓨鎴愬姛"
- });
- }
- });
- } else {
- console.log("error submit!!");
- return false;
- }
- });
- },
onIpBlur(e, ip) {
console.log(e, ip);
},
@@ -1040,33 +876,6 @@
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)
},
- changeProvince() {
- let pid = this.locationCity.province;
- getGb28181AreaList({ parentId: pid }).then(rsp => {
- if (rsp && rsp.success) {
- this.locationCity.cityOptions = rsp.data;
- this.locationCity.city = this.locationCity.cityOptions[0].id;
- this.changeCity();
- }
- })
- },
- changeCity() {
- let pid = this.locationCity.city;
- getGb28181AreaList({ parentId: pid }).then(rsp => {
- if (rsp && rsp.success) {
- this.locationCity.countyOptions = rsp.data;
- this.locationCity.county = this.locationCity.countyOptions[0].id;
- }
- })
- },
- newGBID() {
- let cCode = this.locationCity.county + "";
- newGb28181ID({ code: cCode }).then(rsp => {
- if (rsp && rsp.success) {
- this.gb28181.PublicId = rsp.data;
- }
- })
- }
}
};
</script>
@@ -1076,7 +885,7 @@
height: 100%;
.el-form {
width: 1000px;
-
+
// margin-left: -80px;
.el-form-item {
text-align: left;
@@ -1136,7 +945,6 @@
font-weight: 600;
background-color: #e4e6ed;
}
-
#cut_min_duration {
.el-slider__bar {
@@ -1218,13 +1026,13 @@
}
</style>
<style lang="scss" scoped>
-.flex-box{
+.flex-box {
display: flex;
height: 50px;
- label{
+ label {
width: 120px;
- }
- .el-input{
+ }
+ .el-input {
width: 300px;
}
}
@@ -1236,7 +1044,7 @@
margin: 0;
padding-left: 0;
background-color: #ffffff;
-
+
.tree-font {
font-family: PingFangSC-Medium;
font-size: 14px;
diff --git a/src/pages/syslog/index/App.vue b/src/pages/syslog/index/App.vue
new file mode 100644
index 0000000..2b2d37e
--- /dev/null
+++ b/src/pages/syslog/index/App.vue
@@ -0,0 +1,190 @@
+<template>
+ <div class="s-log-management">
+ <div class="top">
+ <b>鏃ュ織绫诲瀷:</b>
+ <el-select v-model="logValue" placeholder="璇烽�夋嫨" size="small">
+ <el-option
+ v-for="item in logOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ <b>鏃堕棿:</b>
+ <el-date-picker
+ v-model="timeValue"
+ type="datetimerange"
+ size="small"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ <el-input
+ v-model="searchValue"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ clearable
+ style="width: 150px;margin: 0px 10px;"
+ size="small"
+ ></el-input>
+ <el-button type="primary" size="small">鎼滅储</el-button>
+ <el-button type="danger" size="small" @click="delSelected">鎵归噺鍒犻櫎</el-button>
+ <el-button type="text" size="small" style="font-size: 13px;font-weight: 600;">瀵煎嚭</el-button>
+ </div>
+ <div class="foot-table s-table">
+ <el-table
+ ref="multipleTable"
+ highlight-current-row
+ :data="tableData"
+ style="width: 100%"
+ :header-cell-style="{background:'#f8f8f8',color:'#222222'}"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="index" label="搴忓彿"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="logtype" label="鏃ュ織绫诲瀷"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="username" label="鐢ㄦ埛鍚�"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="ipaddress" label="IP鍦板潃"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="operation" label="鎿嶄綔鍔熻兘"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="operatetime" label="鎿嶄綔鏃堕棿"></el-table-column>
+ <el-table-column :align="'center'" sortable prop="operateinfo" label="鎿嶄綔淇℃伅"></el-table-column>
+ <el-table-column label="鎿嶄綔" :align="'center'">
+ <template slot-scope="scope">
+ <el-button
+ type="text"
+ style="color: red;font-size:16px"
+ @click="handleDelete(scope.$index, scope.row)"
+ icon="el-icon-delete"
+ ></el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ tableData: [
+ {
+ index: "1",
+ logtype: "寮傚父",
+ username: "admin",
+ ipaddress: "192.168.10.110",
+ operation: "娣诲姞鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ },
+ {
+ index: "2",
+ logtype: "淇℃伅",
+ username: "admin",
+ ipaddress: "192.168.10.108",
+ operation: "鍒犻櫎鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ },
+ {
+ index: "3",
+ logtype: "鎿嶄綔",
+ username: "admin",
+ ipaddress: "192.168.10.110",
+ operation: "娣诲姞鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ },
+ {
+ index: "4",
+ logtype: "寮傚父",
+ username: "admin",
+ ipaddress: "192.168.10.110",
+ operation: "娣诲姞鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ },
+ {
+ index: "5",
+ logtype: "寮傚父",
+ username: "admin",
+ ipaddress: "192.168.10.110",
+ operation: "鍒犻櫎鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ },
+ {
+ index: "6",
+ logtype: "寮傚父",
+ username: "admin",
+ ipaddress: "192.168.10.110",
+ operation: "娣诲姞鎽勫儚鏈�",
+ operatetime: "2019-5-31 16:38:21",
+ operateinfo: "娣诲姞鎿嶄綔"
+ }
+ ],
+ multipleSelection: [],
+ logOptions: [
+ {
+ value: "鍏ㄩ儴绫诲瀷",
+ label: "鍏ㄩ儴绫诲瀷"
+ },
+ {
+ value: "鍏朵粬绫诲瀷",
+ label: "鍏朵粬绫诲瀷"
+ }
+ ],
+ logValue: "鍏ㄩ儴绫诲瀷",
+ timeValue: [
+ new Date(2000, 10, 10, 10, 10),
+ new Date(2000, 10, 11, 10, 10)
+ ],
+ searchValue: ""
+ };
+ },
+ methods: {
+ handleDelete(index, row) {
+ console.log(index, row);
+ },
+ handleSelectionChange(val) {
+ this.multipleSelection = val;
+ },
+ delSelected() {
+ console.log(this.multipleSelection);
+ }
+ }
+};
+</script>
+<style lang="scss">
+.s-log-management {
+ height: 100%;
+ width: 100%;
+ .top {
+ width: 100%;
+ margin-top: 10px;
+ margin-bottom: 20px;
+ overflow-y: auto;
+ min-width: 1156px;
+ height: 40px;
+ text-align: left;
+ b {
+ padding: 0px 10px;
+ }
+ }
+ .export {
+ display: inline-block;
+ padding-right: 10px;
+ box-sizing: border-box;
+ margin-top: 20px;
+ b:hover {
+ color: #2249b4;
+ }
+ }
+ .clear-searching {
+ cursor: pointer;
+ text-decoration: underline;
+ width: 40px;
+ font-size: 13px;
+ color: #3d68e1;
+ }
+}
+</style>
diff --git a/src/pages/syslog/index/main.ts b/src/pages/syslog/index/main.ts
new file mode 100644
index 0000000..80f18a4
--- /dev/null
+++ b/src/pages/syslog/index/main.ts
@@ -0,0 +1,11 @@
+import Vue from 'vue'
+import ElementUI from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css'
+import App from './App.vue'
+
+Vue.use(ElementUI)
+
+new Vue({
+ el: '#app',
+ render: h => h(App)
+})
diff --git a/src/pages/vindicate/index/App.vue b/src/pages/vindicate/index/App.vue
index 8ff9750..5884d28 100644
--- a/src/pages/vindicate/index/App.vue
+++ b/src/pages/vindicate/index/App.vue
@@ -1,12 +1,12 @@
<template>
- <el-tabs
- id="systemMaintenance"
- v-model="activeName"
- v-loading="loading"
- :element-loading-text="loadingText"
- >
- <el-tab-pane label="璁惧缁存姢" name="first" >
- <div class="s-system-maintenance">
+ <el-tabs
+ id="systemMaintenance"
+ v-model="activeName"
+ v-loading="loading"
+ :element-loading-text="loadingText"
+ >
+ <el-tab-pane label="璁惧缁存姢" name="first">
+ <div class="s-system-maintenance">
<div class="box-card">
<div class="ui-top-view">
<div class="ui-top-title">閲嶅惎</div>
@@ -14,14 +14,10 @@
<el-divider></el-divider>
<div class="box-card-content">
-
-
- <el-button type="primary" size="small" style="width:80px" @click="reboot">閲嶅惎</el-button>
-
-
- <b class="card-text">閲嶅惎鑺傜偣</b>
-
-
+ <el-button type="primary" size="small" style="width:80px" @click="reboot">閲嶅惎</el-button>
+
+ <b class="card-text">閲嶅惎鑺傜偣</b>
+
<el-row style="margin-top:20px">
<el-col>
<vue-cron :expression="rebootCron" @update="setRebootCron" />
@@ -124,43 +120,42 @@
</el-row>
</div>
</div>
- </el-tab-pane>
- <el-tab-pane label="鏁版嵁搴撶淮鎶�" name="second" >
- <div class="box">
- <p class="title">
- <label>鏁版嵁娓呯悊</label>
- </p>
- <div class="range">
- <div class="left">
- <p>閫夋嫨鏁版嵁鑼冨洿锛�</p>
- </div>
- <div class="middle">
- <el-date-picker
- v-model="dataRange"
- type="daterange"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- style="height:38px"
- :picker-options="pickerOptions"
- ></el-date-picker>
- </div>
- <div class="right">
- <el-button @click="deleteData" style="height:38px;background:#ff0000;color:white">鍒犻櫎鏁版嵁</el-button>
- </div>
- </div>
- <div class="tip">
- <i class="iconfont icontishi-zhuyi"></i>
- <p class="zhuyi">璇锋敞鎰忥紝鎸変互涓婃棩鏈熻寖鍥村垹闄ょ殑鏁版嵁涓嶅彲鎭㈠锛岀珛鍗崇敓鏁堬紝璇疯皑鎱庢搷浣�</p>
- </div>
- </div>
- </el-tab-pane>
- </el-tabs>
-
+ </el-tab-pane>
+ <el-tab-pane label="鏁版嵁搴撶淮鎶�" name="second">
+ <div class="box">
+ <p class="title">
+ <label>鏁版嵁娓呯悊</label>
+ </p>
+ <div class="range">
+ <div class="left">
+ <p>閫夋嫨鏁版嵁鑼冨洿锛�</p>
+ </div>
+ <div class="middle">
+ <el-date-picker
+ v-model="dataRange"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ style="height:38px"
+ :picker-options="pickerOptions"
+ ></el-date-picker>
+ </div>
+ <div class="right">
+ <el-button @click="deleteData" style="height:38px;background:#ff0000;color:white">鍒犻櫎鏁版嵁</el-button>
+ </div>
+ </div>
+ <div class="tip">
+ <i class="iconfont icontishi-zhuyi"></i>
+ <p class="zhuyi">璇锋敞鎰忥紝鎸変互涓婃棩鏈熻寖鍥村垹闄ょ殑鏁版嵁涓嶅彲鎭㈠锛岀珛鍗崇敓鏁堬紝璇疯皑鎱庢搷浣�</p>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
</template>
<script>
-import { rebootServer, getDevInfo, getRebootTask, setRebootTask, fileUpload, doUpgrade,deleteDate } from "@/api/system"
+import { rebootServer, getDevInfo, getRebootTask, setRebootTask, fileUpload, doUpgrade, deleteDate } from "@/api/system"
import VueCron from "@/components/subComponents/VueCron"
import FileUploader from "@/components/subComponents/FileUpload/index"
@@ -220,7 +215,7 @@
}
},
methods: {
- isShow (authority) {
+ isShow(authority) {
if (this.isAdmin) {
return true
} else if (
@@ -285,8 +280,8 @@
var timeRange = this.format(this.dataRange);
var showStartTime = timeRange[0]
var showEndTime = timeRange[1]
- console.log("鏃堕棿锛�",showStartTime,showEndTime)
- this.$confirm("鎻愮ず锛�"+showStartTime+" 鑷� "+showEndTime+" 浜х敓鐨勫叏閮ㄦ暟鎹皢琚垹闄わ紝姝ゆ搷浣滅珛鍗崇敓鏁堬紝涓嶅彲鎭㈠锛屾槸鍚﹀垹闄わ紵", {
+ console.log("鏃堕棿锛�", showStartTime, showEndTime)
+ this.$confirm("鎻愮ず锛�" + showStartTime + " 鑷� " + showEndTime + " 浜х敓鐨勫叏閮ㄦ暟鎹皢琚垹闄わ紝姝ゆ搷浣滅珛鍗崇敓鏁堬紝涓嶅彲鎭㈠锛屾槸鍚﹀垹闄わ紵", {
center: true,
cancelButtonClass: "comfirm-class-cancle",
confirmButtonClass: "comfirm-class-sure"
@@ -417,13 +412,13 @@
}
}
}
-.box{
+.box {
width: 50%;
min-width: 700px;
height: 270px;
border: 1px solid #eee;
.title {
- font-size:20px;
+ font-size: 20px;
font-weight: bold;
text-align: left;
padding: 20px;
@@ -475,35 +470,33 @@
}
}
}
-#systemMaintenance{
-
+#systemMaintenance {
.el-tabs__header {
- border: 0px solid #dcdfe6;
- .el-tabs__item {
- padding: 5px 50px;
- height: 50px;
- font-family: PingFangSC-Regular;
- font-size: 14px;
- color: #222222;
- text-align: center;
- border: 0px solid transparent;
- }
- .el-tabs__item:nth-child(2) {
- padding-left: 50px;
- }
- .el-tabs__item:last-child {
- padding-right: 50px;
- }
- .el-tabs__item.is-active {
- color: #ff7733;
- font-weight: bold;
- // border-right-color: #fff;
- // border-left-color: #fff;
- }
- .el-tabs__item:not(.is-disabled):hover {
- color: #ff7733;
- }
-
+ border: 0px solid #dcdfe6;
+ .el-tabs__item {
+ padding: 5px 50px;
+ height: 50px;
+ font-family: PingFangSC-Regular;
+ font-size: 14px;
+ color: #222222;
+ text-align: center;
+ border: 0px solid transparent;
+ }
+ .el-tabs__item:nth-child(2) {
+ padding-left: 50px;
+ }
+ .el-tabs__item:last-child {
+ padding-right: 50px;
+ }
+ .el-tabs__item.is-active {
+ color: #ff7733;
+ font-weight: bold;
+ // border-right-color: #fff;
+ // border-left-color: #fff;
+ }
+ .el-tabs__item:not(.is-disabled):hover {
+ color: #ff7733;
+ }
}
.el-tabs__active-bar {
background-color: #ff7733;
--
Gitblit v1.8.0