Files
CN_Tool_client/frontend/src/views/tools/index.vue
yexb 92b7d3cd73 refactor(steady): 重构稳态校验功能的合同验证逻辑
- 优化测量点对话框路径解析格式化
- 添加稳态校验重启API端点验证功能
- 更新创建参数类型定义支持可选lineId和lineIds数组
- 修复任务表格组件模板缩进格式问题
- 扩展任务表格列配置验证数组格式
- 添加任务表格仅对失败行显示重启操作功能
- 集成共享台账树组件发送选中叶节点监测点功能
- 添加多监测点创建参数构建支持
- 实现指标选择为空时全指标校验功能
- 添加预期项目数量计算功能
- 优化创建对话框指标选择标签防止输入框重置
- 添加任务表格树形选择滚动下拉菜单样式
- 实现页面创建流程调用创建API并轮询任务状态
- 添加创建结果面板加载状态和进度显示
- 实现页面重启流程确认调用重启API功能
- 优化汇总表格异常字段持久化支持
- 添加汇总表格监测点名称显示功能
- 优化详情面板按需加载项目详情
- 更新接口类型支持分页字段定义
- 优化ICD路径检查对话框标准映射参数传递
- 添加ICD记录导出SQL和JSON功能
- 扩展ICD路径API端点和类型定义
- 添加ICD路径参考选项和映射详情功能
- 重构ICD表格列显示移除激活和创建时间列
- 添加ICD映射详情对话框三个标签页功能
- 优化ICD映射详情JSON树形视图显示
- 更新ICD类型选项覆盖手动和上游标准状态
2026-06-18 16:35:06 +08:00

155 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="tools-view">
<div class="tools-card">
<div class="page-header">
<div>
<h1 class="tools-title">工具中心</h1>
<p class="tools-description">当前工具页面统一从这里进入后续新增工具可继续在此扩展</p>
</div>
</div>
<div class="tool-grid">
<button class="tool-item" type="button" @click="handleNavigate('/tools/waveform')">
<div class="tool-name">波形查看</div>
<div class="tool-text">选择同名 cfg/dat 文件并查看波形RMS 和摘要信息</div>
</button>
<button class="tool-item" type="button" @click="handleNavigate('/tools/mmsMapping')">
<div class="tool-name">MMS 映射</div>
<div class="tool-text">进入 MMS 映射页面后续可继续补充映射配置和预览能力</div>
</button>
<button class="tool-item" type="button" @click="handleNavigate('/tools/parsePqdif')">
<div class="tool-name">PQDIF解析</div>
<div class="tool-text">进入 PQDIF 解析页面后续可接入文件上传解析进度和结果展示能力</div>
</button>
<button class="tool-item" type="button" @click="handleNavigate('/tools/deviceTypes')">
<div class="tool-name">设备类型维护</div>
<div class="tool-text">维护设备类型并从列表进入 ICD 一致性校验和 PQDIF 预留校验</div>
</button>
<button class="tool-item" type="button" @click="handleNavigate('/tools/addData')">
<div class="tool-name">addData</div>
<div class="tool-text">进入 addData 页面壳子后续在此扩展补录数据能力和业务交互</div>
</button>
<button class="tool-item" type="button" @click="handleNavigate('/tools/addLedger')">
<div class="tool-name">数据台账</div>
<div class="tool-text">维护工程项目设备和监测点的四级台账配置关系</div>
</button>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router'
defineOptions({
name: 'ToolsView'
})
const router = useRouter()
const handleNavigate = async (path: string) => {
if (!path) return
await router.push(path)
}
</script>
<style scoped lang="scss">
.tools-view {
min-height: 100%;
padding: 24px;
background: #f5f7fa;
}
.tools-card {
display: flex;
flex-direction: column;
gap: 24px;
padding: 32px;
border-radius: 12px;
background: #ffffff;
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}
.page-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
}
.tools-title {
margin: 0 0 12px;
font-size: 24px;
font-weight: 600;
color: #1f2937;
}
.tools-description {
margin: 0;
font-size: 14px;
line-height: 1.6;
color: #4b5563;
}
.tool-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 20px;
}
.tool-item {
display: flex;
flex-direction: column;
gap: 10px;
padding: 20px;
border: 1px solid #dbe3f0;
border-radius: 12px;
background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
cursor: pointer;
text-align: left;
transition:
transform 0.2s ease,
border-color 0.2s ease,
box-shadow 0.2s ease;
}
.tool-item:hover {
border-color: #94a3b8;
box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
transform: translateY(-2px);
}
.tool-name {
font-size: 18px;
font-weight: 600;
color: #172033;
}
.tool-text {
font-size: 13px;
line-height: 1.7;
color: #64748b;
}
@media (max-width: 992px) {
.tool-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 768px) {
.tools-view {
padding: 16px;
}
.tools-card {
padding: 20px;
}
}
</style>