zsysview 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/assets/default_avatar.png +0 -0
- package/assets/login_bg.jpg +0 -0
- package/components/export/export_dialog.vue +150 -0
- package/components/export/export_progress.vue +62 -0
- package/components/list/zsyslist.vue +2 -2
- package/components/list/zsyslist_header.vue +1 -1
- package/components/zsys_delbutton.vue +60 -0
- package/core/app.ts +13 -2
- package/core/common/common.ts +29 -0
- package/core/common/zsys_eventBus.ts +45 -0
- package/core/common/zsys_time.ts +26 -0
- package/core/httpapi/http_api_return_data.ts +43 -0
- package/core/httpapi/http_api_v1.ts +149 -0
- package/core/httpapi/http_axios.ts +54 -0
- package/core/router copy.ts +148 -0
- package/core/router.ts +95 -0
- package/core/user_token.ts +17 -0
- package/css/common.css +16 -0
- package/package.json +6 -2
- package/view/app.vue +0 -1
- package/view/backup/backup.vue +308 -0
- package/view/building.vue +22 -0
- package/view/department/department.vue +111 -0
- package/view/department/department_edit_dialog.vue +267 -0
- package/view/desktop/desktop.vue +11 -0
- package/view/log/log.vue +60 -0
- package/view/log/log_setting.vue +41 -0
- package/view/login.vue +5 -5
- package/view/main/breadcrumb.vue +41 -0
- package/view/main/main.vue +60 -0
- package/view/main/userHeader.vue +72 -0
- package/view/main/userMenu.vue +132 -0
- package/view/main/userMenuItem.vue +49 -0
- package/view/position/position.vue +58 -0
- package/view/position/position_edit_dialog.vue +203 -0
- package/view/role/role.vue +72 -0
- package/view/role/role_edit_dialog.vue +271 -0
- package/view/self/change_password.vue +97 -0
- package/view/self/self.vue +62 -0
- package/view/user/change_user_password_dialog.vue +155 -0
- package/view/user/user.vue +110 -0
- package/view/user/user_edit_dialog.vue +283 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { createRouter, createWebHistory } from 'vue-router/dist/vue-router.ts'//"vue-router"
|
|
2
|
+
import { useTokenStore } from "./user_token"
|
|
3
|
+
|
|
4
|
+
const routes = [
|
|
5
|
+
{
|
|
6
|
+
path: "/", //"/main"
|
|
7
|
+
redirect: '/main'
|
|
8
|
+
// component: () => import("../views/zsys_main/main.vue"),
|
|
9
|
+
// meta:{ requiresAuth: true},
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
path: "/test", //"/main"
|
|
13
|
+
component: () => import("../views/desktop/desktop.vue"),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
path: "/main", //"/main"
|
|
17
|
+
component: () => import("../views/zsys_main/main.vue"),
|
|
18
|
+
meta: { requiresAuth: true, title: '主界面' },
|
|
19
|
+
children: [{
|
|
20
|
+
path: "/desktop",//首页
|
|
21
|
+
meta: { title: '首页' },
|
|
22
|
+
component: () => import("../views/desktop/desktop.vue"),
|
|
23
|
+
}, {
|
|
24
|
+
path: "/self",//个人中心
|
|
25
|
+
meta: { title: '个人中心' },
|
|
26
|
+
component: () => import("../views/zsys_main/zsys_self/self.vue"),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
path: "/password",//修改密码
|
|
30
|
+
meta: { title: '修改密码' },
|
|
31
|
+
component: () => import("../views/zsys_main/zsys_self/change_password.vue"),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
path: "/chart",
|
|
35
|
+
meta: { title: '数据看板' },
|
|
36
|
+
component: () => import("@/views/chart/chart.vue"),
|
|
37
|
+
}, {
|
|
38
|
+
path: "/eventgroup/event",
|
|
39
|
+
meta: { title: '事件' },
|
|
40
|
+
component: () => import("../views/event/event.vue"),
|
|
41
|
+
}, {
|
|
42
|
+
path: "/eventgroup/event_detail",
|
|
43
|
+
meta: { title: '事件详情' },
|
|
44
|
+
component: () => import("../views/event/event_detail.vue"),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
path: "/eventgroup",
|
|
48
|
+
meta: { title: '事件管理' },
|
|
49
|
+
children: [{
|
|
50
|
+
path: "/user1",
|
|
51
|
+
meta: { title: '数据看板' },
|
|
52
|
+
component: () => import("@/views/chart/chart.vue"),
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
path: "/eventgroup/event",
|
|
56
|
+
meta: { title: '事件' },
|
|
57
|
+
component: () => import("../views/event/event.vue"),
|
|
58
|
+
}, {
|
|
59
|
+
path: "/eventgroup/event_detail",
|
|
60
|
+
meta: { title: '事件详情' },
|
|
61
|
+
component: () => import("../views/event/event_detail.vue"),
|
|
62
|
+
},]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: "/engine",
|
|
66
|
+
meta: { title: '行为分析引擎' },
|
|
67
|
+
component: () => import("../views/engine/engine.vue"),
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
path: "/equipment",
|
|
71
|
+
meta: { title: '设备管理' },
|
|
72
|
+
component: () => import("../views/equipment/equipment.vue"),
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
path: "/area",
|
|
76
|
+
meta: { title: '区域管理' },
|
|
77
|
+
component: () => import("../views/area/area.vue"),
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
path: "/sys",//系统管理
|
|
81
|
+
meta: { title: '系统管理' },
|
|
82
|
+
//component: () => import("../views/zsys_main/zsys_self/self.vue"),
|
|
83
|
+
children: [{
|
|
84
|
+
path: "/user",
|
|
85
|
+
meta: { title: '用户管理' },
|
|
86
|
+
component: () => import("../views/zsys_main/zsys/user/user.vue"),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
path: "/department",
|
|
90
|
+
meta: { title: '组织架构' },
|
|
91
|
+
component: () => import("@/views/zsys_main/zsys/department/department.vue"),
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
path: "/position",
|
|
95
|
+
meta: { title: '职务' },
|
|
96
|
+
component: () => import("../views/zsys_main/zsys/position/position.vue"),
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
path: "/role",
|
|
100
|
+
meta: { title: '角色权限' },
|
|
101
|
+
component: () => import("../views/zsys_main/zsys/role/role.vue"),
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
path: "/log",
|
|
105
|
+
meta: { title: '日志' },
|
|
106
|
+
component: () => import("../views/zsys_main/zsys/log/log.vue"),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
path: "/backup",
|
|
110
|
+
meta: { title: '备份' },
|
|
111
|
+
component: () => import("../views/zsys_main/zsys/backup/backup.vue"),
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
path: "/maintenance",
|
|
115
|
+
meta: { title: '维护' },
|
|
116
|
+
component: () => import("@/views/zsys_main/zsys/maintenance/maintenance.vue"),
|
|
117
|
+
}]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
path: "/login",
|
|
123
|
+
name: 'login',
|
|
124
|
+
component: () => import("../view/login.vue")
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
const router = createRouter({
|
|
129
|
+
history: createWebHistory(),
|
|
130
|
+
routes
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
router.beforeEach((to, _, next) => {
|
|
134
|
+
console.log('to', to.fullPath);
|
|
135
|
+
if (to.matched.some(r => r.meta?.requiresAuth)) {
|
|
136
|
+
let store = useTokenStore()
|
|
137
|
+
console.log('store.token.value', store.token.value);
|
|
138
|
+
if (!store.token.value || store.token.value == '') {
|
|
139
|
+
next({ name: 'login', query: { redirect: to.fullPath } })
|
|
140
|
+
} else {
|
|
141
|
+
next()
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
next()
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
export default router
|
package/core/router.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { createRouter, createWebHistory } from "vue-router"
|
|
2
|
+
import { useTokenStore } from "./user_token"
|
|
3
|
+
|
|
4
|
+
const routes = [
|
|
5
|
+
{
|
|
6
|
+
path: "/", //"/main"
|
|
7
|
+
redirect: '/main'
|
|
8
|
+
// component: () => import("../views/zsys_main/main.vue"),
|
|
9
|
+
// meta:{ requiresAuth: true},
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
path: "/main", //"/main"
|
|
13
|
+
component: () => import("../view/main/main.vue"),
|
|
14
|
+
meta: { requiresAuth: true, title: '主界面' },
|
|
15
|
+
children: [
|
|
16
|
+
{
|
|
17
|
+
path: "/desktop",
|
|
18
|
+
meta: { title: '首页' },
|
|
19
|
+
component: () => import("../view/desktop/desktop.vue"),
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: "/self",//个人中心
|
|
23
|
+
meta: { title: '个人中心' },
|
|
24
|
+
component: () => import("../view/self/self.vue"),
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
path: "/password",//修改密码
|
|
28
|
+
meta: { title: '修改密码' },
|
|
29
|
+
component: () => import("../view/self/change_password.vue"),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
path: "/sys",//系统管理
|
|
33
|
+
meta: { title: '系统管理' },
|
|
34
|
+
//component: () => import("../views/zsys_main/zsys_self/self.vue"),
|
|
35
|
+
children: [{
|
|
36
|
+
path: "/user",
|
|
37
|
+
meta: { title: '用户管理' },
|
|
38
|
+
component: () => import("../view/user/user.vue"),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
path: "/department",
|
|
42
|
+
meta: { title: '组织架构' },
|
|
43
|
+
component: () => import("../view/department/department.vue"),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
path: "/position",
|
|
47
|
+
meta: { title: '职务' },
|
|
48
|
+
component: () => import("../view/position/position.vue"),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
path: "/role",
|
|
52
|
+
meta: { title: '角色权限' },
|
|
53
|
+
component: () => import("../view/role/role.vue"),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
path: "/log",
|
|
57
|
+
meta: { title: '日志' },
|
|
58
|
+
component: () => import("../view/log/log.vue"),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
path: "/backup",
|
|
62
|
+
meta: { title: '备份' },
|
|
63
|
+
component: () => import("../view/backup/backup.vue"),
|
|
64
|
+
}]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
path: "/login",
|
|
70
|
+
name: 'login',
|
|
71
|
+
component: () => import("../view/login.vue")
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
const router = createRouter({
|
|
76
|
+
history: createWebHistory(),
|
|
77
|
+
routes
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
router.beforeEach((to, _, next) => {
|
|
81
|
+
console.log('to', to.fullPath);
|
|
82
|
+
if (to.matched.some(r => r.meta?.requiresAuth)) {
|
|
83
|
+
let store = useTokenStore()
|
|
84
|
+
console.log('store.token.value', store.token.value);
|
|
85
|
+
if (!store.token.value || store.token.value == '') {
|
|
86
|
+
next({ name: 'login', query: { redirect: to.fullPath } })
|
|
87
|
+
} else {
|
|
88
|
+
next()
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
next()
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
export default router
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { computed, ref } from "vue";
|
|
2
|
+
import { defineStore } from "pinia";
|
|
3
|
+
|
|
4
|
+
export const useTokenStore=defineStore("UseToken",()=>{
|
|
5
|
+
const token_data=ref("")
|
|
6
|
+
const token=computed(()=>{
|
|
7
|
+
return token_data
|
|
8
|
+
})
|
|
9
|
+
function saveToken(data:string){
|
|
10
|
+
token_data.value=data
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return {token_data,token,saveToken}
|
|
14
|
+
},{
|
|
15
|
+
// 启用持久化
|
|
16
|
+
persist: true,
|
|
17
|
+
})
|
package/css/common.css
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#app {
|
|
2
|
+
height: 100%; width: 100%;position: absolute;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
body{
|
|
6
|
+
padding: 0px; margin: 0px;
|
|
7
|
+
/* background-image: url("/src/assets/zsys/login/bg.jpg"); */
|
|
8
|
+
/* background-size: 100% 100%;
|
|
9
|
+
background-position: revert; */
|
|
10
|
+
/* !!!background-size: cover; */
|
|
11
|
+
/* background-repeat: no-repeat; */
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.main_btn{
|
|
15
|
+
width: 100px;
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zsysview",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "zsystem view",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "liuhaomiao"
|
|
7
7
|
},
|
|
8
8
|
"private": false,
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"
|
|
10
|
+
"axios": "^1.12.2",
|
|
11
|
+
"element-plus": "^2.11.2",
|
|
12
|
+
"json-bigint": "^1.0.0",
|
|
13
|
+
"ts-md5": "^2.0.1",
|
|
14
|
+
"vue": "^3.5.18"
|
|
11
15
|
}
|
|
12
16
|
}
|
package/view/app.vue
CHANGED
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<breadcrumb />
|
|
3
|
+
<div style="padding: 0px 20px">
|
|
4
|
+
<el-tabs v-model="activeName">
|
|
5
|
+
<el-tab-pane label="备份记录" name="list">
|
|
6
|
+
<el-alert
|
|
7
|
+
title="如需还原备份点,请联系技术人员。"
|
|
8
|
+
type="info"
|
|
9
|
+
show-icon
|
|
10
|
+
:closable="false"
|
|
11
|
+
style="width: 450px"
|
|
12
|
+
/>
|
|
13
|
+
<zsyslist :config="listconfig" module="backup" style="margin-top: 10px">
|
|
14
|
+
<template #headermain>
|
|
15
|
+
<el-button class="main_btn" type="primary" @click="startBackup"
|
|
16
|
+
>立即备份</el-button
|
|
17
|
+
>
|
|
18
|
+
</template>
|
|
19
|
+
<template #content>
|
|
20
|
+
<el-table-column prop="item_name" label="备份点" min-width="240" />
|
|
21
|
+
<el-table-column prop="size_desc" label="大小" width="200" />
|
|
22
|
+
<!-- <el-table-column label="操作" width="60">
|
|
23
|
+
<template #default="{ row }">
|
|
24
|
+
<el-space>
|
|
25
|
+
<el-link type="primary">删除</el-link> -->
|
|
26
|
+
<!-- <el-link type="primary"
|
|
27
|
+
@click="view.edit_id = BigInt(row.position_id); view.edit_dialog_show = true;">修改</el-link> -->
|
|
28
|
+
<!-- <zsys_delbutton :id="BigInt(row.position_id)"
|
|
29
|
+
:api_url="HttpApiV1.url_position_del" /> -->
|
|
30
|
+
<!-- </el-space>
|
|
31
|
+
</template>
|
|
32
|
+
</el-table-column> -->
|
|
33
|
+
</template>
|
|
34
|
+
</zsyslist>
|
|
35
|
+
</el-tab-pane>
|
|
36
|
+
<el-tab-pane label="设置" name="setting">
|
|
37
|
+
<el-form label-width="100px" style="margin-top: 10px">
|
|
38
|
+
<el-form-item label="自动备份">
|
|
39
|
+
<el-switch v-model="form.auto" />
|
|
40
|
+
</el-form-item>
|
|
41
|
+
<div v-if="form.auto">
|
|
42
|
+
<el-form-item label="备份频次">
|
|
43
|
+
<el-space>
|
|
44
|
+
<el-select v-model="form.plan" style="width: 150px">
|
|
45
|
+
<el-option label="每天" value="Everyday" />
|
|
46
|
+
<el-option label="每周一" value="Monday" />
|
|
47
|
+
<el-option label="每月第一天" value="FirstDayOfMonth" />
|
|
48
|
+
</el-select>
|
|
49
|
+
<el-select v-model="form.hour" style="width: 100px">
|
|
50
|
+
<el-option label="00点" value="00" />
|
|
51
|
+
<el-option label="01点" value="01" />
|
|
52
|
+
<el-option label="02点" value="02" />
|
|
53
|
+
<el-option label="03点" value="03" />
|
|
54
|
+
<el-option label="04点" value="04" />
|
|
55
|
+
<el-option label="05点" value="05" />
|
|
56
|
+
<el-option label="06点" value="06" />
|
|
57
|
+
<el-option label="07点" value="07" />
|
|
58
|
+
<el-option label="08点" value="08" />
|
|
59
|
+
<el-option label="09点" value="09" />
|
|
60
|
+
<el-option label="10点" value="10" />
|
|
61
|
+
<el-option label="11点" value="11" />
|
|
62
|
+
<el-option label="12点" value="12" />
|
|
63
|
+
<el-option label="13点" value="13" />
|
|
64
|
+
<el-option label="14点" value="14" />
|
|
65
|
+
<el-option label="15点" value="15" />
|
|
66
|
+
<el-option label="16点" value="16" />
|
|
67
|
+
<el-option label="17点" value="17" />
|
|
68
|
+
<el-option label="18点" value="18" />
|
|
69
|
+
<el-option label="19点" value="19" />
|
|
70
|
+
<el-option label="20点" value="20" />
|
|
71
|
+
<el-option label="21点" value="21" />
|
|
72
|
+
<el-option label="22点" value="22" />
|
|
73
|
+
<el-option label="23点" value="23" />
|
|
74
|
+
</el-select>
|
|
75
|
+
<el-select v-model="form.minute" style="width: 100px">
|
|
76
|
+
<el-option label="00分" value="00" />
|
|
77
|
+
<el-option label="15分" value="15" />
|
|
78
|
+
<el-option label="30分" value="30" />
|
|
79
|
+
<el-option label="45分" value="45" />
|
|
80
|
+
</el-select>
|
|
81
|
+
</el-space>
|
|
82
|
+
</el-form-item>
|
|
83
|
+
<el-form-item label="备份路径">
|
|
84
|
+
<el-space direction="vertical" :size="2" alignment="stretch">
|
|
85
|
+
<el-input style="width: 500px" />
|
|
86
|
+
<el-text type="info"
|
|
87
|
+
>如果您使用的是物理主机,并且不具备磁盘阵列功能,强烈建议备份路径设置到第二个硬盘/U盘</el-text
|
|
88
|
+
>
|
|
89
|
+
</el-space>
|
|
90
|
+
</el-form-item>
|
|
91
|
+
<el-form-item label="保存选项">
|
|
92
|
+
<el-select v-model="form.keep" style="width: 200px">
|
|
93
|
+
<el-option label="保留最近20个备份" value="lastkeep20" />
|
|
94
|
+
<el-option label="保留最近10个备份" value="lastkeep10" />
|
|
95
|
+
</el-select>
|
|
96
|
+
</el-form-item>
|
|
97
|
+
<el-divider content-position="left" style="width: 400px"
|
|
98
|
+
>上传FTP</el-divider
|
|
99
|
+
>
|
|
100
|
+
|
|
101
|
+
<el-form-item label="启用/关闭">
|
|
102
|
+
<el-switch v-model="form.use_ftp" />
|
|
103
|
+
<el-text type="info" style="margin-left: 10px"
|
|
104
|
+
>上传FTP可以解决本机备份空间不足的问题</el-text
|
|
105
|
+
>
|
|
106
|
+
</el-form-item>
|
|
107
|
+
<div v-if="form.use_ftp">
|
|
108
|
+
<el-form-item label="FTP主机地址">
|
|
109
|
+
<el-space>
|
|
110
|
+
<el-input v-model="form.f_host" style="width: 300px" />
|
|
111
|
+
<el-text>端口</el-text>
|
|
112
|
+
<el-input-number
|
|
113
|
+
v-model="form.f_port"
|
|
114
|
+
:min="1"
|
|
115
|
+
:max="65535"
|
|
116
|
+
:value-on-clear="21"
|
|
117
|
+
style="width: 120px"
|
|
118
|
+
controls-position="right"
|
|
119
|
+
/>
|
|
120
|
+
<!-- <el-input v-model="form.f_port" style="width: 80px;" /> -->
|
|
121
|
+
</el-space>
|
|
122
|
+
</el-form-item>
|
|
123
|
+
<el-form-item label="FTP用户">
|
|
124
|
+
<el-input v-model="form.f_u" style="width: 200px" />
|
|
125
|
+
</el-form-item>
|
|
126
|
+
<el-form-item label="FTP密码">
|
|
127
|
+
<el-space direction="vertical" :size="2" alignment="stretch">
|
|
128
|
+
<el-input
|
|
129
|
+
v-model="form.f_p"
|
|
130
|
+
type="password"
|
|
131
|
+
style="width: 200px"
|
|
132
|
+
/>
|
|
133
|
+
<el-text type="info"
|
|
134
|
+
>这里不显示保存的密码,要修改时才输入</el-text
|
|
135
|
+
>
|
|
136
|
+
</el-space>
|
|
137
|
+
</el-form-item>
|
|
138
|
+
<el-form-item label="FTP目录名">
|
|
139
|
+
<el-space direction="vertical" :size="2" alignment="stretch">
|
|
140
|
+
<el-input v-model="form.f_path" style="width: 200px" />
|
|
141
|
+
<el-text type="info"
|
|
142
|
+
>多台机器备份到同一个FTP时可按目录名区分</el-text
|
|
143
|
+
>
|
|
144
|
+
</el-space>
|
|
145
|
+
</el-form-item>
|
|
146
|
+
<el-form-item label="TLS">
|
|
147
|
+
<el-switch v-model="form.f_tls" />
|
|
148
|
+
</el-form-item>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
<el-form-item>
|
|
152
|
+
<el-button type="primary" @click="saveConfig">应用设置</el-button>
|
|
153
|
+
</el-form-item>
|
|
154
|
+
</el-form>
|
|
155
|
+
</el-tab-pane>
|
|
156
|
+
</el-tabs>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<department_edit_dialog :id="view.edit_id" v-model="view.edit_dialog_show" />
|
|
160
|
+
</template>
|
|
161
|
+
|
|
162
|
+
<script setup lang="ts">
|
|
163
|
+
import breadcrumb from "../main/breadcrumb.vue";
|
|
164
|
+
import { ref, reactive, onMounted } from "vue";
|
|
165
|
+
import { HttpApiV1 as http, HttpApiV1 } from "../../core/httpapi/http_api_v1";
|
|
166
|
+
// import zsys_delbutton from "@/components/zsys/zsys_delbutton.vue";
|
|
167
|
+
import zsyslist from "../../components/list/zsyslist.vue";
|
|
168
|
+
import { type ListConfig } from "../../components/list/zsyslist.vue";
|
|
169
|
+
// import { zsysEventBus } from "@/utils/zsys_eventBus";
|
|
170
|
+
import { ZSYSMessage } from "../../components/message";
|
|
171
|
+
|
|
172
|
+
const activeName = ref("list");
|
|
173
|
+
|
|
174
|
+
// const eventBus = zsysEventBus();
|
|
175
|
+
|
|
176
|
+
//============列表控件===========================
|
|
177
|
+
const listconfig: ListConfig = reactive({
|
|
178
|
+
ApiUrl: HttpApiV1.url_backup_list,
|
|
179
|
+
QuickConditionsGroups: [],
|
|
180
|
+
HideBottomToolbar: true,
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
const view = reactive({
|
|
184
|
+
edit_id: BigInt(0),
|
|
185
|
+
edit_dialog_show: false,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
interface BackupConfig {
|
|
189
|
+
auto: number;
|
|
190
|
+
plan: string;
|
|
191
|
+
hour: string;
|
|
192
|
+
minute: string;
|
|
193
|
+
path: string;
|
|
194
|
+
keep: string;
|
|
195
|
+
use_ftp: number;
|
|
196
|
+
f_host: string;
|
|
197
|
+
f_port: number;
|
|
198
|
+
f_u: string;
|
|
199
|
+
f_p: string;
|
|
200
|
+
f_path: string;
|
|
201
|
+
f_tls: number;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const form = reactive({
|
|
205
|
+
auto: true,
|
|
206
|
+
plan: "Everyday",
|
|
207
|
+
hour: "01",
|
|
208
|
+
minute: "00",
|
|
209
|
+
path: "",
|
|
210
|
+
keep: "keep20",
|
|
211
|
+
use_ftp: false,
|
|
212
|
+
f_host: "",
|
|
213
|
+
f_port: 21,
|
|
214
|
+
f_u: "",
|
|
215
|
+
f_p: "",
|
|
216
|
+
f_path: "",
|
|
217
|
+
f_tls: true,
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
const startBackup = async () => {
|
|
221
|
+
try {
|
|
222
|
+
let res = await http.Post(http.url_backup_start, {});
|
|
223
|
+
if (res.IsSuccess) {
|
|
224
|
+
ZSYSMessage.ShowSuccess("开始备份");
|
|
225
|
+
} else {
|
|
226
|
+
ZSYSMessage.ShowError(res.message);
|
|
227
|
+
}
|
|
228
|
+
} catch (e) {
|
|
229
|
+
console.log(e);
|
|
230
|
+
ZSYSMessage.ShowError("启动备份失败");
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
async function saveConfig() {
|
|
235
|
+
try {
|
|
236
|
+
let data = {
|
|
237
|
+
auto: form.auto ? 1 : 0,
|
|
238
|
+
plan: form.plan,
|
|
239
|
+
hour: form.hour,
|
|
240
|
+
minute: form.minute,
|
|
241
|
+
path: form.path,
|
|
242
|
+
keep: form.keep,
|
|
243
|
+
use_ftp: form.use_ftp ? 1 : 0,
|
|
244
|
+
f_host: form.f_host,
|
|
245
|
+
f_port: form.f_port,
|
|
246
|
+
f_u: form.f_u,
|
|
247
|
+
f_p: form.f_p,
|
|
248
|
+
f_path: form.f_path,
|
|
249
|
+
f_tls: form.f_tls ? 1 : 0,
|
|
250
|
+
};
|
|
251
|
+
let res = await http.Post(http.url_backup_config_save, data);
|
|
252
|
+
if (res.IsSuccess) {
|
|
253
|
+
ZSYSMessage.ShowSuccess("保存成功");
|
|
254
|
+
} else {
|
|
255
|
+
ZSYSMessage.ShowError(res.message);
|
|
256
|
+
}
|
|
257
|
+
} catch (e) {
|
|
258
|
+
console.log(e);
|
|
259
|
+
ZSYSMessage.ShowError("保存配置失败");
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
async function getConfig() {
|
|
264
|
+
try {
|
|
265
|
+
let res = await HttpApiV1.Post(HttpApiV1.url_backup_config_get, {});
|
|
266
|
+
if (res.IsSuccess) {
|
|
267
|
+
let data = res.data as BackupConfig;
|
|
268
|
+
form.auto = data.auto == 1 ? true : false;
|
|
269
|
+
form.plan = data.plan;
|
|
270
|
+
form.hour = data.hour;
|
|
271
|
+
form.minute = data.minute;
|
|
272
|
+
form.path = data.path;
|
|
273
|
+
form.keep = data.keep;
|
|
274
|
+
form.use_ftp = data.use_ftp == 1 ? true : false;
|
|
275
|
+
form.f_host = data.f_host;
|
|
276
|
+
form.f_port = data.f_port;
|
|
277
|
+
form.f_u = data.f_u;
|
|
278
|
+
form.f_p = data.f_p;
|
|
279
|
+
form.f_path = data.f_path;
|
|
280
|
+
form.f_tls = data.f_tls == 1 ? true : false;
|
|
281
|
+
} else {
|
|
282
|
+
ZSYSMessage.ShowError("获取备份配置失败");
|
|
283
|
+
}
|
|
284
|
+
} catch (e) {
|
|
285
|
+
ZSYSMessage.ShowError("获取备份配置失败");
|
|
286
|
+
console.log(e);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// //====基础
|
|
291
|
+
onMounted(() => {
|
|
292
|
+
getConfig();
|
|
293
|
+
// eventBus.on('aud', aud_event);
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
// onUnmounted(() => {
|
|
297
|
+
// eventBus.off('aud', aud_event);
|
|
298
|
+
// })
|
|
299
|
+
|
|
300
|
+
// // 处理aud事件
|
|
301
|
+
// const aud_event = (payload: { module: string, id: bigint }) => {
|
|
302
|
+
// if (payload.module = 'department') {
|
|
303
|
+
// getData()
|
|
304
|
+
// }
|
|
305
|
+
// };
|
|
306
|
+
</script>
|
|
307
|
+
|
|
308
|
+
<style scoped></style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<breadcrumb />
|
|
3
|
+
<div style="padding: 0px 20px; margin-top: 20px;">
|
|
4
|
+
<el-result icon="info" title="该功能开发中">
|
|
5
|
+
<template #sub-title>
|
|
6
|
+
<p>请期待</p>
|
|
7
|
+
</template>
|
|
8
|
+
<!-- <template #extra>
|
|
9
|
+
<el-button type="primary">Back</el-button>
|
|
10
|
+
</template> -->
|
|
11
|
+
</el-result>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import breadcrumb from './breadcrumb.vue';
|
|
17
|
+
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<style scoped>
|
|
21
|
+
|
|
22
|
+
</style>
|