🔨 统一前端卡片风格.

This commit is contained in:
lijiahangmax
2025-10-07 14:27:19 +08:00
parent 2103698417
commit 773d95207f
18 changed files with 47 additions and 72 deletions

View File

@@ -95,7 +95,7 @@
// 标准卡片 // 标准卡片
.general-card { .general-card {
border-radius: 4px; border-radius: 8px;
border: none; border: none;
& > .arco-card-header { & > .arco-card-header {

View File

@@ -14,58 +14,6 @@ body {
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
} }
// -- echarts
.echarts-tooltip-diy {
background: linear-gradient(304.17deg,
rgba(253, 254, 255, 0.6) -6.04%,
rgba(244, 247, 252, 0.6) 85.2%) !important;
border: none !important;
backdrop-filter: blur(10px) !important;
/* Note: backdrop-filter has minimal browser support */
border-radius: 6px !important;
.content-panel {
display: flex;
justify-content: space-between;
padding: 0 9px;
background: rgba(255, 255, 255, 0.8);
width: 164px;
height: 32px;
line-height: 32px;
box-shadow: 6px 0 20px rgba(34, 87, 188, 0.1);
border-radius: 4px;
margin-bottom: 4px;
}
.tooltip-title {
margin: 0 0 10px 0;
}
p {
margin: 0;
}
.tooltip-title,
.tooltip-value {
font-size: 13px;
line-height: 15px;
display: flex;
align-items: center;
text-align: right;
color: #1D2129;
font-weight: bold;
}
.tooltip-item-icon {
display: inline-block;
margin-right: 8px;
width: 10px;
height: 10px;
border-radius: 50%;
}
}
// flex // flex
.flex-center { .flex-center {
display: flex; display: flex;

View File

@@ -162,8 +162,8 @@
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 4px; border-radius: 8px;
border: 1px solid var(--color-neutral-3); //border: 1px solid var(--color-neutral-3);
transition-property: all; transition-property: all;
& > .arco-card-header { & > .arco-card-header {
@@ -230,7 +230,7 @@
// -- card // -- card
.simple-card { .simple-card {
background: var(--color-bg-2); background: var(--color-bg-2);
border-radius: 4px; border-radius: 8px;
} }
// -- doption // -- doption

View File

@@ -27,7 +27,19 @@
</div> </div>
<!-- 状态 --> <!-- 状态 -->
<div class="exec-host-item-status"> <div class="exec-host-item-status">
<a-tag :color="getDictValue(execHostStatusKey, item.status, 'execColor')"> <!-- 执行结果 -->
<a-tag v-if="item.exitCode || item.exitCode === 0"
class="exit-code-tag"
title="exitCode"
:color="item.exitCode === 0 ? 'rgb(var(--arcoblue-4))' : 'rgb(var(--orangered-4))'">
<template #icon>
<icon-check v-if="item.exitCode === 0" />
<icon-exclamation v-else />
</template>
<span class="exit-code-value">{{ item.exitCode }}</span>
</a-tag>
<!-- 执行状态 -->
<a-tag v-else :color="getDictValue(execHostStatusKey, item.status, 'execColor')">
{{ getDictValue(execHostStatusKey, item.status) }} {{ getDictValue(execHostStatusKey, item.status) }}
</a-tag> </a-tag>
</div> </div>
@@ -141,8 +153,16 @@
&-status { &-status {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} gap: 8px;
:deep(.exit-code-tag .arco-tag-icon) {
color: #FFFFFF;
}
.exit-code-value {
font-weight: 600;
}
}
} }
</style> </style>

View File

@@ -15,7 +15,7 @@
<!-- exitCode --> <!-- exitCode -->
<a-tag v-if="host.exitCode || host.exitCode === 0" <a-tag v-if="host.exitCode || host.exitCode === 0"
:color="host.exitCode === 0 ? 'arcoblue' : 'orangered'" :color="host.exitCode === 0 ? 'arcoblue' : 'orangered'"
title="exit code"> title="exitCode">
<template #icon> <template #icon>
<icon-check v-if="host.exitCode === 0" /> <icon-check v-if="host.exitCode === 0" />
<icon-exclamation v-else /> <icon-exclamation v-else />

View File

@@ -179,7 +179,7 @@
&-wrapper { &-wrapper {
background: var(--color-bg-2); background: var(--color-bg-2);
padding: 0 12px; padding: 0 12px;
border-radius: 4px; border-radius: 8px;
.card-list-info { .card-list-info {
height: var(--header-info-height); height: var(--header-info-height);

View File

@@ -12,6 +12,10 @@ export function isString(obj: any): obj is string {
return opt.call(obj) === '[object String]'; return opt.call(obj) === '[object String]';
} }
export function isBoolean(obj: any): obj is boolean {
return opt.call(obj) === '[object Boolean]';
}
export function isNumber(obj: any): obj is number { export function isNumber(obj: any): obj is number {
return opt.call(obj) === '[object Number]' && obj === obj; // eslint-disable-line return opt.call(obj) === '[object Number]' && obj === obj; // eslint-disable-line
} }

View File

@@ -98,7 +98,7 @@
:deep(.card) { :deep(.card) {
padding: 16px 20px; padding: 16px 20px;
border-radius: 4px; border-radius: 8px;
background-color: var(--color-bg-2); background-color: var(--color-bg-2);
&-title { &-title {

View File

@@ -301,7 +301,7 @@
.panel-item { .panel-item {
height: 100%; height: 100%;
padding: 16px; padding: 16px;
border-radius: 4px; border-radius: 8px;
margin-right: 16px; margin-right: 16px;
position: relative; position: relative;
background: var(--color-bg-2); background: var(--color-bg-2);

View File

@@ -295,7 +295,7 @@
.exec-form-container, .exec-command-container, .exec-history-container { .exec-form-container, .exec-command-container, .exec-history-container {
background: var(--color-bg-2); background: var(--color-bg-2);
border-radius: 4px; border-radius: 8px;
height: 100%; height: 100%;
padding: 16px; padding: 16px;
position: relative; position: relative;

View File

@@ -229,8 +229,8 @@
// 获取指标名称 // 获取指标名称
const getMetricsField = (metricsId: number, field: string) => { const getMetricsField = (metricsId: number, field: string) => {
return (monitorMetrics as Array<MetricsQueryResponse>).find(m => m.id === metricsId)?.[field]; return (monitorMetrics as Array<MetricsQueryResponse> || []).find(m => m.id === metricsId)?.[field];
}; };
// 提取标签 // 提取标签
const extraTags = (record: AlarmEventQueryResponse) => { const extraTags = (record: AlarmEventQueryResponse) => {

View File

@@ -48,7 +48,7 @@
allow-clear /> allow-clear />
</a-form-item> </a-form-item>
<!-- 数据集 --> <!-- 数据集 -->
<a-form-item field="metricsId" label="数据集"> <a-form-item field="metricsMeasurement" label="数据集">
<a-select v-model="formModel.metricsMeasurement" <a-select v-model="formModel.metricsMeasurement"
:options="toOptions(MetricsMeasurementKey)" :options="toOptions(MetricsMeasurementKey)"
placeholder="数据集" placeholder="数据集"

View File

@@ -30,8 +30,8 @@
placeholder="请输入策略描述" placeholder="请输入策略描述"
allow-clear /> allow-clear />
</a-form-item> </a-form-item>
<!-- 通知模板 --> <!-- 通知渠道 -->
<a-form-item field="notifyIdList" label="通知模板"> <a-form-item field="notifyIdList" label="通知渠道">
<notify-template-selector v-model="formModel.notifyIdList" <notify-template-selector v-model="formModel.notifyIdList"
biz-type="ALARM" biz-type="ALARM"
multiple multiple

View File

@@ -203,7 +203,7 @@
// 获取指标名称 // 获取指标名称
const getMetricsField = (metricsId: number, field: string) => { const getMetricsField = (metricsId: number, field: string) => {
return (monitorMetrics as Array<MetricsQueryResponse>).find(m => m.id === metricsId)?.[field]; return (monitorMetrics as Array<MetricsQueryResponse> || []).find(m => m.id === metricsId)?.[field];
}; };
// 切换规则开关 // 切换规则开关

View File

@@ -41,7 +41,7 @@
allow-clear /> allow-clear />
</a-form-item> </a-form-item>
<!-- 数据集 --> <!-- 数据集 -->
<a-form-item field="metricsId" label="数据集"> <a-form-item field="metricsMeasurement" label="数据集">
<a-select v-model="formModel.metricsMeasurement" <a-select v-model="formModel.metricsMeasurement"
:options="toOptions(MetricsMeasurementKey)" :options="toOptions(MetricsMeasurementKey)"
placeholder="数据集" placeholder="数据集"

View File

@@ -177,6 +177,9 @@
if (type === ValueType.BOOLEAN) { if (type === ValueType.BOOLEAN) {
extraValue.value[nameKey] = false; extraValue.value[nameKey] = false;
continue; continue;
} else if (type === ValueType.STRING) {
extraValue.value[nameKey] = '';
continue;
} }
formRef.value.setFields({ formRef.value.setFields({
[nameKey]: { [nameKey]: {

View File

@@ -90,7 +90,7 @@
padding: 16px; padding: 16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 4px; border-radius: 8px;
} }
:deep(.arco-tabs-nav-tab-list) { :deep(.arco-tabs-nav-tab-list) {

View File

@@ -117,7 +117,7 @@
padding: 16px; padding: 16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 4px; border-radius: 8px;
} }
:deep(.arco-tabs-nav-tab-list) { :deep(.arco-tabs-nav-tab-list) {