Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# AT命令工具 (atMaster)
# AT命令工具 (atMaster-Plus)

## 项目简介

这是一个基于Vue 3和Vite构建的网页版AT命令工具,用于通过浏览器直接与设备的串口通信,支持多种芯片平台的AT命令操作。该工具可以在浏览器中直接选择串口设备并发送AT命令,无需安装额外的桌面软件。
该项目基于atMaster项目,添加了一些美观的UI,并将毛坯助手修改为精装助手。(By xcfstudio,20250511)

## 支持的芯片平台

Expand Down
25 changes: 14 additions & 11 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>毛坯助手</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>精装助手</title>
</head>

<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>

</html>
255 changes: 232 additions & 23 deletions src/assets/main.css
Original file line number Diff line number Diff line change
@@ -1,35 +1,244 @@
@import './base.css';
:root {
/* 主色调 */
--primary-color: #6366f1;
--primary-light: #818cf8;
--primary-dark: #4f46e5;

/* 彩色主题 */
--color-zte: #e74c3c;
--color-asr: #3498db;
--color-sprd: #2ecc71;

/* 背景色 */
--bg-gradient-start: #0f0f23;
--bg-gradient-end: #1a1a2e;
--bg-card: rgba(255, 255, 255, 0.05);
--bg-card-hover: rgba(255, 255, 255, 0.08);

/* 文字颜色 */
--text-primary: #ffffff;
--text-secondary: rgba(255, 255, 255, 0.7);
--text-muted: rgba(255, 255, 255, 0.5);

/* 边框 */
--border-color: rgba(255, 255, 255, 0.1);
--border-radius: 16px;
--border-radius-sm: 8px;

/* 阴影 */
--shadow-card: 0 8px 32px rgba(0, 0, 0, 0.3);
--shadow-button: 0 4px 16px rgba(99, 102, 241, 0.4);

/* 间距 */
--spacing-xs: 8px;
--spacing-sm: 12px;
--spacing-md: 16px;
--spacing-lg: 24px;
--spacing-xl: 32px;

/* 字体 */
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-size-xs: 12px;
--font-size-sm: 14px;
--font-size-md: 16px;
--font-size-lg: 18px;
--font-size-xl: 24px;
--font-size-2xl: 32px;

/* 过渡 */
--transition-fast: 0.15s ease;
--transition-normal: 0.3s ease;
--transition-slow: 0.5s ease;
}

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

html {
min-height: 100vh;
}

body {
font-family: var(--font-family);
font-size: var(--font-size-md);
color: var(--text-primary);
background: linear-gradient(135deg, var(--bg-gradient-start) 0%, var(--bg-gradient-end) 100%);
min-height: 100vh;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

#app {
max-width: 1280px;
min-height: 100vh;
}

/* 容器 */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
font-weight: normal;
padding: var(--spacing-lg);
}

a,
.green {
text-decoration: none;
color: hsla(160, 100%, 37%, 1);
transition: 0.4s;
padding: 3px;
/* 卡片 */
.card {
background: var(--bg-card);
backdrop-filter: blur(20px);
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
padding: var(--spacing-lg);
box-shadow: var(--shadow-card);
transition: all var(--transition-normal);
}

@media (hover: hover) {
a:hover {
background-color: hsla(160, 100%, 37%, 0.2);
}
.card:hover {
background: var(--bg-card-hover);
transform: translateY(-2px);
}

@media (min-width: 1024px) {
body {
display: flex;
place-items: center;
}
/* 按钮 */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: var(--spacing-sm) var(--spacing-lg);
font-size: var(--font-size-sm);
font-weight: 600;
border: none;
border-radius: var(--border-radius-sm);
cursor: pointer;
transition: all var(--transition-fast);
text-transform: uppercase;
letter-spacing: 0.5px;
}

.btn-primary {
background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-dark) 100%);
color: white;
box-shadow: var(--shadow-button);
}

#app {
display: grid;
grid-template-columns: 1fr 1fr;
padding: 0 2rem;
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 24px rgba(99, 102, 241, 0.5);
}

.btn-primary:active {
transform: translateY(0);
}

.btn-secondary {
background: rgba(255, 255, 255, 0.1);
color: var(--text-primary);
border: 1px solid var(--border-color);
}

.btn-secondary:hover {
background: rgba(255, 255, 255, 0.15);
}

.btn-danger {
background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
color: white;
}

.btn-danger:hover {
transform: translateY(-2px);
box-shadow: 0 6px 24px rgba(239, 68, 68, 0.4);
}

.btn-success {
background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
color: white;
}

.btn-success:hover {
transform: translateY(-2px);
box-shadow: 0 6px 24px rgba(34, 197, 94, 0.4);
}

/* 输入框 */
.input {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: var(--border-radius-sm);
padding: var(--spacing-sm) var(--spacing-md);
color: var(--text-primary);
font-size: var(--font-size-sm);
transition: all var(--transition-fast);
outline: none;
}

.input:focus {
border-color: var(--primary-color);
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
}

.input::placeholder {
color: var(--text-muted);
}

/* 标签 */
.label {
display: inline-block;
font-size: var(--font-size-xs);
font-weight: 600;
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: var(--spacing-xs);
}

/* 网格布局 */
.grid {
display: grid;
gap: var(--spacing-lg);
}

.grid-2 {
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-3 {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

/* 段落文字 */
.text-secondary {
color: var(--text-secondary);
}

.text-muted {
color: var(--text-muted);
}

.text-center {
text-align: center;
}

/* 间距 */
.mt-xs { margin-top: var(--spacing-xs); }
.mt-sm { margin-top: var(--spacing-sm); }
.mt-md { margin-top: var(--spacing-md); }
.mt-lg { margin-top: var(--spacing-lg); }
.mt-xl { margin-top: var(--spacing-xl); }

.mb-xs { margin-bottom: var(--spacing-xs); }
.mb-sm { margin-bottom: var(--spacing-sm); }
.mb-md { margin-bottom: var(--spacing-md); }
.mb-lg { margin-bottom: var(--spacing-lg); }
.mb-xl { margin-bottom: var(--spacing-xl); }

/* 响应式 */
@media (max-width: 768px) {
.container {
padding: var(--spacing-md);
}

.card {
padding: var(--spacing-md);
}
}
5 changes: 2 additions & 3 deletions src/main.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// import './assets/main.css'
import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'
Expand All @@ -8,5 +8,4 @@ const app = createApp(App)

app.use(router)

app.mount('#app')

app.mount('#app')
Loading