Merge branch 'master' of https://gitee.com/likeshop_gitee/likeadmin-java
This commit is contained in:
commit
860dff2f92
|
|
@ -69,9 +69,9 @@ export function apiSystemLogLists(params: any) {
|
||||||
return request.get('/system/log/operate', { params })
|
return request.get('/system/log/operate', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清除系统缓存
|
// 系统缓存
|
||||||
export function apiSystemCacheClear() {
|
export function apiSystemCache(params: any) {
|
||||||
return request.post('/setting.system.cache/clear')
|
return request.get('/monitor/cache', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑管理员信息
|
// 编辑管理员信息
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,14 @@ import { App } from '@vue/runtime-core'
|
||||||
|
|
||||||
// 手动引入 ECharts 各模块来减小打包体积
|
// 手动引入 ECharts 各模块来减小打包体积
|
||||||
import { CanvasRenderer } from 'echarts/renderers'
|
import { CanvasRenderer } from 'echarts/renderers'
|
||||||
import { BarChart, PieChart, LineChart, PieSeriesOption } from 'echarts/charts'
|
import {
|
||||||
|
BarChart,
|
||||||
|
PieChart,
|
||||||
|
LineChart,
|
||||||
|
PieSeriesOption,
|
||||||
|
GaugeChart,
|
||||||
|
GaugeSeriesOption
|
||||||
|
} from 'echarts/charts'
|
||||||
import { LabelLayout } from 'echarts/features'
|
import { LabelLayout } from 'echarts/features'
|
||||||
import {
|
import {
|
||||||
GridComponent,
|
GridComponent,
|
||||||
|
|
@ -25,7 +32,8 @@ use([
|
||||||
TitleComponent,
|
TitleComponent,
|
||||||
LegendComponent,
|
LegendComponent,
|
||||||
LineChart,
|
LineChart,
|
||||||
LabelLayout
|
LabelLayout,
|
||||||
|
GaugeChart
|
||||||
])
|
])
|
||||||
|
|
||||||
export default (app: App) => {
|
export default (app: App) => {
|
||||||
|
|
|
||||||
|
|
@ -15,25 +15,40 @@
|
||||||
<!-- <div class="muted">建议尺寸:240*200,支持jpg、png格式</div> -->
|
<!-- <div class="muted">建议尺寸:240*200,支持jpg、png格式</div> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="账号:" prop="account">
|
<el-form-item label="账号:" prop="username">
|
||||||
<el-input v-model="formData.account" placeholder="" disabled></el-input>
|
<el-input v-model="formData.username" placeholder="" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="名称:" prop="name">
|
<el-form-item label="名称:" prop="nickname">
|
||||||
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
|
<el-input v-model="formData.nickname" placeholder="请输入名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="当前密码:" prop="password_old">
|
<el-form-item label="当前密码:" prop="password_old">
|
||||||
<el-input v-model.trim="formData.password_old" placeholder="修改密码时必填, 不修改密码时留空" type="password" show-password></el-input>
|
<el-input
|
||||||
|
v-model.trim="formData.password_old"
|
||||||
|
placeholder="修改密码时必填, 不修改密码时留空"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="新的密码:" prop="password">
|
<el-form-item label="新的密码:" prop="password">
|
||||||
<el-input v-model.trim="formData.password" placeholder="修改密码时必填, 不修改密码时留空" type="password" show-password></el-input>
|
<el-input
|
||||||
</el-form-item>
|
v-model.trim="formData.password"
|
||||||
|
placeholder="修改密码时必填, 不修改密码时留空"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="确定密码:" prop="password_confirm">
|
<el-form-item label="确定密码:" prop="password_confirm">
|
||||||
<el-input v-model.trim="formData.password_confirm" placeholder="修改密码时必填, 不修改密码时留空" type="password" show-password></el-input>
|
<el-input
|
||||||
</el-form-item>
|
v-model.trim="formData.password_confirm"
|
||||||
|
placeholder="修改密码时必填, 不修改密码时留空"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
|
@ -44,102 +59,105 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted } from 'vue'
|
import { reactive, ref, onMounted } from 'vue'
|
||||||
import type { ElForm } from 'element-plus'
|
import type { ElForm } from 'element-plus'
|
||||||
import MaterialSelect from '@/components/material-select/index.vue'
|
import MaterialSelect from '@/components/material-select/index.vue'
|
||||||
import FooterBtns from '@/components/footer-btns/index.vue'
|
import FooterBtns from '@/components/footer-btns/index.vue'
|
||||||
import { apiAuthAdminEditSelf, apiAuthAdminMySelf } from '@/api/setting'
|
import { apiAdminEdit, apiAdminDetail } from '@/api/auth'
|
||||||
import { ElMessage } from 'element-plus'
|
import { apiUserInfo } from '@/api/user'
|
||||||
import { useAdmin } from '@/core/hooks/app'
|
import { ElMessage } from 'element-plus'
|
||||||
|
import { useAdmin } from '@/core/hooks/app'
|
||||||
|
|
||||||
const { store } = useAdmin()
|
const { store } = useAdmin()
|
||||||
type FormInstance = InstanceType<typeof ElForm>
|
type FormInstance = InstanceType<typeof ElForm>
|
||||||
const formRefs = ref<FormInstance>()
|
const formRefs = ref<FormInstance>()
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
avatar: '', // 头像
|
avatar: '', // 头像
|
||||||
account: '', // 账号
|
username: '', // 账号
|
||||||
name: '', // 名称
|
nickname: '', // 名称
|
||||||
password_old: '', // 当前密码
|
password_old: '', // 当前密码
|
||||||
password: '', // 新的密码
|
password: '', // 新的密码
|
||||||
password_confirm: '', // 确定密码
|
password_confirm: '' // 确定密码
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单校验规则
|
||||||
|
const rules = reactive<object>({
|
||||||
|
avatar: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '头像不能为空',
|
||||||
|
trigger: ['change']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
nickname: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取个人设置
|
||||||
|
const getAuthAdminMySelf = async (): Promise<void> => {
|
||||||
|
formData.value = await apiUserInfo()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置个人设置
|
||||||
|
const setAuthAdminEditSelf = async (): Promise<void> => {
|
||||||
|
if (formData.value.password_old || formData.value.password || formData.value.password_confirm) {
|
||||||
|
if (!formData.value.password_old) {
|
||||||
|
return ElMessage({ type: 'error', message: '请输入当前密码' })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formData.value.password) {
|
||||||
|
return ElMessage({ type: 'error', message: '请输入新的密码' })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!formData.value.password_confirm) {
|
||||||
|
return ElMessage({ type: 'error', message: '请输入确定密码' })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formData.value.password_confirm != formData.value.password) {
|
||||||
|
return ElMessage({ type: 'error', message: '两次输入的密码不一样' })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formData.value.password_old && formData.value.password && formData.value.password_confirm) {
|
||||||
|
if (formData.value.password_old.length < 6 || formData.value.password_old.length > 32) {
|
||||||
|
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
||||||
|
}
|
||||||
|
if (formData.value.password.length < 6 || formData.value.password.length > 32) {
|
||||||
|
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
formData.value.password_confirm.length < 6 ||
|
||||||
|
formData.value.password_confirm.length > 32
|
||||||
|
) {
|
||||||
|
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await apiAdminEdit({ ...formData.value })
|
||||||
|
getAuthAdminMySelf()
|
||||||
|
store.dispatch('user/getUser')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交数据
|
||||||
|
const onSubmit = (formEl: FormInstance | undefined): void => {
|
||||||
|
if (!formEl) return
|
||||||
|
|
||||||
|
formEl.validate((valid): Boolean | undefined => {
|
||||||
|
if (!valid) return false
|
||||||
|
setAuthAdminEditSelf()
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 表单校验规则
|
onMounted(() => {
|
||||||
const rules = reactive<object>({
|
getAuthAdminMySelf()
|
||||||
avatar: [
|
})
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '头像不能为空',
|
|
||||||
trigger: ['change'],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
name: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入名称',
|
|
||||||
trigger: ['blur'],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
|
|
||||||
// 获取个人设置
|
|
||||||
const getAuthAdminMySelf = async (): Promise<void> => {
|
|
||||||
formData.value = await apiAuthAdminMySelf()
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置个人设置
|
|
||||||
const setAuthAdminEditSelf = async ():Promise<void> => {
|
|
||||||
if(formData.value.password_old || formData.value.password || formData.value.password_confirm) {
|
|
||||||
if(!formData.value.password_old) {
|
|
||||||
return ElMessage({ type: 'error', message: '请输入当前密码' })
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!formData.value.password) {
|
|
||||||
return ElMessage({ type: 'error', message: '请输入新的密码' })
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!formData.value.password_confirm) {
|
|
||||||
return ElMessage({ type: 'error', message: '请输入确定密码' })
|
|
||||||
}
|
|
||||||
|
|
||||||
if(formData.value.password_confirm != formData.value.password) {
|
|
||||||
return ElMessage({ type: 'error', message: '两次输入的密码不一样' })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(formData.value.password_old && formData.value.password && formData.value.password_confirm) {
|
|
||||||
if(formData.value.password_old.length < 6 || formData.value.password_old.length > 32) {
|
|
||||||
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
|
||||||
}
|
|
||||||
if(formData.value.password.length < 6 || formData.value.password.length > 32) {
|
|
||||||
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
|
||||||
}
|
|
||||||
if(formData.value.password_confirm.length < 6 || formData.value.password_confirm.length > 32) {
|
|
||||||
return ElMessage({ type: 'error', message: '密码长度在6到32之间' })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await apiAuthAdminEditSelf({...formData.value})
|
|
||||||
getAuthAdminMySelf()
|
|
||||||
store.dispatch('user/getUser')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交数据
|
|
||||||
const onSubmit = (formEl: FormInstance | undefined): void => {
|
|
||||||
if(!formEl) return
|
|
||||||
|
|
||||||
formEl.validate((valid): Boolean | undefined => {
|
|
||||||
if(!valid) return false
|
|
||||||
setAuthAdminEditSelf()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
getAuthAdminMySelf()
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
</style>
|
|
||||||
|
|
|
||||||
|
|
@ -14,27 +14,56 @@
|
||||||
|
|
||||||
<el-card class="m-t-15" shadow="never">
|
<el-card class="m-t-15" shadow="never">
|
||||||
<div>
|
<div>
|
||||||
<div>基本信息</div>
|
<div class="m-b-15">基本信息</div>
|
||||||
<el-table class="m-t-20" :data="cacheDate">
|
|
||||||
<el-table-column label="Redis版本" prop=""></el-table-column>
|
<el-form :inline="true" :model="formData" label-width="110px" size="small">
|
||||||
<el-table-column label="运行模式" prop=""> </el-table-column>
|
<el-form-item label="Redis版本">
|
||||||
<el-table-column label="端口" prop=""> </el-table-column>
|
<div>{{ formData.redis_version || '-' }}</div>
|
||||||
<el-table-column label="客户端数" prop=""> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column label="运行时间(天)" prop=""> </el-table-column>
|
<el-form-item label="运行模式">
|
||||||
<el-table-column label="使用内存" prop=""> </el-table-column>
|
<div>{{ formData.redis_mode || '-' }}</div>
|
||||||
<el-table-column label="使用CPU" prop=""> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column label="内存配置" prop=""> </el-table-column>
|
<el-form-item label="端口">
|
||||||
<el-table-column label="AOF是否开启" prop=""> </el-table-column>
|
<div>{{ formData.tcp_port || '-' }}</div>
|
||||||
<el-table-column label="RDB是否成功" prop=""> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column label="Key数量" prop=""> </el-table-column>
|
<el-form-item label="客户端数">
|
||||||
<el-table-column label="网络入口/出口" prop=""> </el-table-column>
|
<div>{{ formData.connected_clients || '-' }}</div>
|
||||||
</el-table>
|
</el-form-item>
|
||||||
|
<el-form-item label="运行时间(天)">
|
||||||
|
<div>{{ formData.uptime_in_days || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="使用内存">
|
||||||
|
<div>{{ formData.used_memory_human || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="使用CPU">
|
||||||
|
<div>{{ formData.used_cpu_user_children || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="内存配置">
|
||||||
|
<div>{{ formData.maxmemory_human || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="AOF是否开启">
|
||||||
|
<div>{{ formData.aof_enabled || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="RDB是否成功">
|
||||||
|
<div>{{ formData.rdb_last_bgsave_status || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="Key数量">
|
||||||
|
<div>{{ formData.dbSize || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="网络入口/出口">
|
||||||
|
<div>
|
||||||
|
{{ formData.instantaneous_input_kbps || '-' }}
|
||||||
|
<span>/</span>
|
||||||
|
{{ formData.instantaneous_output_kbps || '-' }}
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<div class="m-t-15 flex">
|
<div class="m-t-15 flex">
|
||||||
<!-- 命令统计 -->
|
<!-- 命令统计 -->
|
||||||
<el-card class="m-r-15 flex-1" shadow="never">
|
<el-card class="m-r-15 flex-1 test" shadow="never">
|
||||||
<div>
|
<div>
|
||||||
<div class="p-b-60">命令统计</div>
|
<div class="p-b-60">命令统计</div>
|
||||||
<div class="statistical-chart">
|
<div class="statistical-chart">
|
||||||
|
|
@ -46,9 +75,9 @@
|
||||||
<!-- 内存信息 -->
|
<!-- 内存信息 -->
|
||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<div>
|
<div>
|
||||||
<div class="p-b-60">内存信息</div>
|
<div class="p-b-40">内存信息</div>
|
||||||
<div class="statistical-chart">
|
<div class="statistical-chart">
|
||||||
<div>12222222</div>
|
<v-chart class="chart" :option="statisticalData.memoryChartOption" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
@ -57,8 +86,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { apiSystemCacheClear } from '@/api/setting'
|
import { apiSystemCache } from '@/api/setting'
|
||||||
import { reactive, ref } from 'vue'
|
import { reactive, ref, onMounted } from 'vue'
|
||||||
import Popup from '@/components/Popup/index.vue'
|
import Popup from '@/components/Popup/index.vue'
|
||||||
|
|
||||||
// 列表数据
|
// 列表数据
|
||||||
|
|
@ -69,6 +98,8 @@ let cacheDate = ref<Array<object>>([
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
const formData = ref<any>({})
|
||||||
|
|
||||||
const statisticalData = reactive({
|
const statisticalData = reactive({
|
||||||
commandChartOption: {
|
commandChartOption: {
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
|
@ -79,20 +110,52 @@ const statisticalData = reactive({
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
label: {
|
label: {
|
||||||
show: false
|
show: true
|
||||||
},
|
},
|
||||||
labelLine: {
|
labelLine: {
|
||||||
show: false
|
show: true
|
||||||
},
|
},
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: '75%',
|
radius: '85%',
|
||||||
color: ['#3D87ED', '#CBDAF7', '#246AE7', '#0042de'],
|
color: [
|
||||||
|
'#0D47A1',
|
||||||
|
'#1565C0',
|
||||||
|
'#1976D2',
|
||||||
|
'#1E88E5',
|
||||||
|
'#2196F3',
|
||||||
|
'#42A5F5',
|
||||||
|
'#64B5F6',
|
||||||
|
'#90CAF9',
|
||||||
|
'#BBDEFB',
|
||||||
|
'#E3F2FD',
|
||||||
|
'#CAF0F8',
|
||||||
|
'#ADE8F4',
|
||||||
|
'#90E0EF',
|
||||||
|
'#48CAE4',
|
||||||
|
'#00B4D8',
|
||||||
|
'#0096C7',
|
||||||
|
'#0077B6',
|
||||||
|
'#023E8A',
|
||||||
|
'#03045E',
|
||||||
|
'#8ecae6',
|
||||||
|
'#98c1d9',
|
||||||
|
'#D9ED92',
|
||||||
|
'#B5E48C',
|
||||||
|
'#99D98C',
|
||||||
|
'#76C893',
|
||||||
|
'#52B69A',
|
||||||
|
'#34A0A4',
|
||||||
|
'#168AAD',
|
||||||
|
'#1A759F',
|
||||||
|
'#1E6091',
|
||||||
|
'#184E77',
|
||||||
|
'#457b9d'
|
||||||
|
],
|
||||||
data: [
|
data: [
|
||||||
{ value: 1048, name: 'Search Engine' },
|
{
|
||||||
{ value: 735, name: 'Direct' },
|
value: '',
|
||||||
{ value: 580, name: 'Email' },
|
name: ''
|
||||||
{ value: 484, name: 'Union Ads' },
|
}
|
||||||
{ value: 300, name: 'Video Ads' }
|
|
||||||
],
|
],
|
||||||
emphasis: {
|
emphasis: {
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
|
|
@ -103,18 +166,56 @@ const statisticalData = reactive({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
memoryChartOption: {
|
||||||
|
tooltip: {
|
||||||
|
formatter: '{a} <br/>{b} : {c}%'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Pressure',
|
||||||
|
type: 'gauge',
|
||||||
|
radius: '100%',
|
||||||
|
detail: {
|
||||||
|
formatter: '{value}'
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
value: '',
|
||||||
|
name: '内存消耗'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// 清理缓存
|
const getSystemCache = async () => {
|
||||||
const handleClean = async () => {
|
apiSystemCache({})
|
||||||
await apiSystemCacheClear()
|
.then((res: any) => {
|
||||||
|
console.log(res)
|
||||||
|
formData.value = res.info
|
||||||
|
formData.value.dbSize = res.dbSize || ''
|
||||||
|
|
||||||
|
statisticalData.commandChartOption.series[0].data = res.commandStats
|
||||||
|
statisticalData.memoryChartOption.series[0].data = res.info.used_memory_human
|
||||||
|
console.log(res.info.used_memory_human, '-------------------------')
|
||||||
|
})
|
||||||
|
.catch((err: any) => {
|
||||||
|
console.log('err', err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getSystemCache()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.statistical-chart {
|
.statistical-chart {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
height: 240px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -5,24 +5,40 @@
|
||||||
<el-card class="flex-1 m-r-15" shadow="never">
|
<el-card class="flex-1 m-r-15" shadow="never">
|
||||||
<div>CPU</div>
|
<div>CPU</div>
|
||||||
<div class="m-t-15">
|
<div class="m-t-15">
|
||||||
<el-table :data="info.cpu" size="medium">
|
<el-form :inline="true" :model="cpuFormData" label-width="110px" size="small">
|
||||||
<el-table-column prop="cpuNum" label="核心数"> </el-table-column>
|
<el-form-item label="核心数">
|
||||||
<el-table-column prop="used" label="用户使用率"> </el-table-column>
|
<div>{{ cpuFormData.cpuNum || '-' }}</div>
|
||||||
<el-table-column prop="sys" label="系统使用率"> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column prop="value" label="当前空闲率"> </el-table-column>
|
<el-form-item label="用户使用率">
|
||||||
</el-table>
|
<div>{{ cpuFormData.used || '-' }}%</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="系统使用率">
|
||||||
|
<div>{{ cpuFormData.sys || '-' }}%</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="当前空闲率">
|
||||||
|
<div>{{ cpuFormData.free || '-' }}%</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<div>内存</div>
|
<div>内存</div>
|
||||||
<div class="m-t-15">
|
<div class="m-t-15">
|
||||||
<el-table :data="info.mem" size="medium">
|
<el-form :inline="true" :model="memFormData" label-width="110px" size="small">
|
||||||
<el-table-column prop="total" label="总内存"> </el-table-column>
|
<el-form-item label="总内存">
|
||||||
<el-table-column prop="used" label="已用内存"> </el-table-column>
|
<div>{{ memFormData.total || '-' }}G</div>
|
||||||
<el-table-column prop="free" label="剩余内存"> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column prop="usage" label="使用率"> </el-table-column>
|
<el-form-item label="已用内存">
|
||||||
</el-table>
|
<div>{{ memFormData.used || '-' }}G</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="剩余内存">
|
||||||
|
<div>{{ memFormData.free || '-' }}G</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="使用率">
|
||||||
|
<div>{{ memFormData.usage || '-' }}%</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -30,27 +46,49 @@
|
||||||
<el-card shadow="never" class="m-t-15">
|
<el-card shadow="never" class="m-t-15">
|
||||||
<div>服务器信息</div>
|
<div>服务器信息</div>
|
||||||
<div class="m-t-15">
|
<div class="m-t-15">
|
||||||
<el-table :data="info.server" size="medium">
|
<el-form :inline="true" :model="serverFormData" label-width="160px" size="small">
|
||||||
<el-table-column prop="computerName" label="服务器名称"> </el-table-column>
|
<el-form-item label="服务器名称">
|
||||||
<el-table-column prop="computerIp" label="服务器IP"> </el-table-column>
|
<div>{{ serverFormData.computerName || '-' }}</div>
|
||||||
<el-table-column prop="osName" label="操作系统"> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column prop="osArch" label="系统架构"> </el-table-column>
|
<el-form-item label="服务器IP">
|
||||||
</el-table>
|
<div>{{ serverFormData.computerIp || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="操作系统">
|
||||||
|
<div>{{ serverFormData.osName || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="系统架构">
|
||||||
|
<div>{{ serverFormData.osArch || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目路径">
|
||||||
|
<div>{{ serverFormData.userDir || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card shadow="never" class="m-t-15">
|
<el-card shadow="never" class="m-t-15">
|
||||||
<div>Java虚拟机信息</div>
|
<div>Java虚拟机信息</div>
|
||||||
<div class="m-t-15">
|
<div class="m-t-15">
|
||||||
<el-table :data="info.server" size="medium">
|
<el-form :inline="true" :model="jvmFormData" label-width="120px" size="small">
|
||||||
<el-table-column prop="name" label="Java名称"> </el-table-column>
|
<el-form-item label="Java名称">
|
||||||
<el-table-column prop="startTime" label="启动时间"> </el-table-column>
|
<div>{{ jvmFormData.name || '-' }}</div>
|
||||||
<el-table-column prop="home" label="安装路径"> </el-table-column>
|
</el-form-item>
|
||||||
<!-- <el-table-column prop="remark" label="项目路径"> </el-table-column> -->
|
<el-form-item label="启动时间">
|
||||||
<el-table-column prop="inputArgs" label="运行参数"> </el-table-column>
|
<div>{{ jvmFormData.startTime || '-' }}</div>
|
||||||
<el-table-column prop="version" label="Java版本"> </el-table-column>
|
</el-form-item>
|
||||||
<el-table-column prop="runTime" label="运行时长"> </el-table-column>
|
<el-form-item label="安装路径">
|
||||||
</el-table>
|
<div>{{ jvmFormData.home || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="运行参数">
|
||||||
|
<div>{{ jvmFormData.inputArgs || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="Java版本">
|
||||||
|
<div>{{ jvmFormData.version || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="运行时长">
|
||||||
|
<div>{{ jvmFormData.runTime || '-' }}</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
|
@ -71,38 +109,37 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineComponent, reactive, onMounted } from 'vue'
|
import { defineComponent, reactive, onMounted, ref } from 'vue'
|
||||||
import { apiSystemInfo } from '@/api/setting'
|
import { apiSystemInfo } from '@/api/setting'
|
||||||
export default defineComponent({
|
|
||||||
setup() {
|
const info = reactive({
|
||||||
const info = reactive({
|
disk: [] // 硬盘
|
||||||
cpu: [], // cpu
|
})
|
||||||
mem: [], // 内存
|
|
||||||
server: [], // 服务器信息
|
const cpuFormData = ref<any>({})
|
||||||
auth: [], // 目录权限
|
const memFormData = ref<any>({})
|
||||||
disk: [] // 硬盘
|
const serverFormData = ref<any>({})
|
||||||
|
const jvmFormData = ref<any>({})
|
||||||
|
|
||||||
|
const getSystemInfo = () => {
|
||||||
|
apiSystemInfo()
|
||||||
|
.then((res: any) => {
|
||||||
|
console.log('res', res)
|
||||||
|
cpuFormData.value = res.cpu
|
||||||
|
memFormData.value = res.mem
|
||||||
|
serverFormData.value = res.sys
|
||||||
|
jvmFormData.value = res.jvm
|
||||||
|
|
||||||
|
info.disk = res.disk
|
||||||
})
|
})
|
||||||
|
.catch((err: any) => {
|
||||||
const getSystemInfo = () => {
|
console.log('err', err)
|
||||||
apiSystemInfo().then((res: any) => {
|
|
||||||
console.log('res', res)
|
|
||||||
info.cpu = res.cpu
|
|
||||||
info.server = res.server
|
|
||||||
info.auth = res.auth
|
|
||||||
info.disk = res.disk
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
getSystemInfo()
|
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
onMounted(() => {
|
||||||
info,
|
getSystemInfo()
|
||||||
getSystemInfo
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue