Compare commits

...

3 Commits
dev ... mimicry

Author SHA1 Message Date
94fde69dd9 feat: 更新音色选项并优化音色列显示 2026-09-18 11:01:31 +08:00
28639f0771 feat: 更新样式和组件,优化用户界面 2026-08-28 10:47:25 +08:00
7225f7ea60 feat: update development environment API URLs and add neumorphism styles
- Changed VITE_API_URL and VITE_WS_URL in .env.development to new IP addresses.
- Imported neumorphism.scss for global theme overrides in main.js.
- Modified device registration and terminal views to remove certain columns and adjust layout.
- Updated intelligence test views to comment out unused fields and adjust form items.
- Adjusted user management view to comment out tree panel component.
- Updated test configurations and detect views to comment out group-related fields.
- Increased column widths in corpus views for better layout.
2026-08-27 13:51:37 +08:00
11 changed files with 1505 additions and 23 deletions

View File

@ -7,8 +7,8 @@ VITE_APP_ENV = 'development'
# 招商车研物联网平台/开发环境 # 招商车研物联网平台/开发环境
VITE_APP_BASE_API = '/dev-api' VITE_APP_BASE_API = '/dev-api'
VITE_API_URL = http://192.168.0.222:13080 VITE_API_URL = http://192.168.0.199:13080
VITE_WS_URL = ws://192.168.0.222:13080/ws VITE_WS_URL = ws://192.168.0.199:13080/ws
VITE_PORT = 80 VITE_PORT = 80
VITE_INSPECTION_TYPE = "inspection" VITE_INSPECTION_TYPE = "inspection"
VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/" VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/"

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,7 @@ import 'element-plus/theme-chalk/dark/css-vars.css'
import locale from 'element-plus/es/locale/lang/zh-cn' import locale from 'element-plus/es/locale/lang/zh-cn'
import '@/assets/styles/index.scss' // global css import '@/assets/styles/index.scss' // global css
import '@/assets/styles/neumorphism.scss' // neumorphic theme overrides
import App from './App' import App from './App'
import store from './store' import store from './store'

View File

@ -15,7 +15,11 @@
<el-table-column prop="language" label="语种" /> <el-table-column prop="language" label="语种" />
<el-table-column prop="dialect" label="方言" /> <el-table-column prop="dialect" label="方言" />
<el-table-column prop="emotion" label="情绪" /> <el-table-column prop="emotion" label="情绪" />
<el-table-column prop="voice" label="音色" /> <el-table-column prop="voice" label="音色" >
<template #default="{ row }">
<span>{{ voiceOption.find(item => item.value === row.voice)?.label || row.voice }}</span>
</template>
</el-table-column>
<el-table-column prop="fileSize" label="文件大小" /> <el-table-column prop="fileSize" label="文件大小" />
<el-table-column label="操作" fixed="right"> <el-table-column label="操作" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -104,10 +108,45 @@ const props = defineProps({
const addCorpusVisible = ref(false) const addCorpusVisible = ref(false)
const voiceOption = ref([ const voiceOption = ref([
{ {
label: '女声', label: '普通话-男声',
value: 'xiaoyan' value: 'x4_lingbosong'
} }, {
label: '普通话-女声',
value: 'x4_yezi'
},
{
label: '晓燕-女声',
value: 'x4_xiaoyan'
},
{
label: '晓燕-女声',
value: 'xiaoyan'
}, {
label: '英语-女声',
value: 'x4_EnUs_Laura_education'
}, {
label: '英语-男声',
value: 'x4_enus_ryan_assist'
}, {
label: '粤语-女声',
value: 'x3_xiaoyue'
}, {
label: '东北话-女声',
value: 'x4_xiaobei'
}, {
label: '四川话-女声',
value: 'x3_yezi_sc'
}, {
label: '韩语-女声',
value: 'x2_KoKr_Miya'
}, {
label: '日语-女声',
value: 'x2_JaJp_ZhongCun'
}, {
label: '俄语-女声',
value: 'x2_RuRu_Keshu'
}
]) ])
const langOption = ref([ const langOption = ref([

View File

@ -110,6 +110,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="情绪">
<el-select v-model="form.emotion" placeholder="情绪">
<el-option label="高兴" value="高兴" />
<el-option label="悲伤" value="悲伤" />
<el-option label="平淡" value="平淡" />
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row style="margin-top: 20px;" :gutter="20"> <el-row style="margin-top: 20px;" :gutter="20">
<el-col :span="12"> <el-col :span="12">
@ -211,7 +220,8 @@ const form = ref({
volume: 50, volume: 50,
pitch: 50, pitch: 50,
sampleRate: '16000', sampleRate: '16000',
outputFormat: 'wav' outputFormat: 'wav',
emotion: '高兴'
}) })
const formRef = ref(null) const formRef = ref(null)

View File

@ -39,17 +39,17 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="类型" width="130"> <el-table-column label="类型" >
<template #default="{ row }">{{ kindLabel(row.deviceKind, row.typeName) }}</template> <template #default="{ row }">{{ kindLabel(row.deviceKind, row.typeName) }}</template>
</el-table-column> </el-table-column>
<el-table-column label="运行状态" width="120" align="center"> <el-table-column label="运行状态" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="row.onlineStatus === '1' ? 'success' : 'info'" effect="light"> <el-tag :type="row.onlineStatus === '1' ? 'success' : 'info'" effect="light">
{{ row.onlineStatus === '1' ? '在线' : '离线' }} {{ row.onlineStatus === '1' ? '在线' : '离线' }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="健康状态" width="120" align="center"> <el-table-column label="健康状态" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="isFault(row) ? 'danger' : 'success'" effect="plain"> <el-tag :type="isFault(row) ? 'danger' : 'success'" effect="plain">
{{ isFault(row) ? '故障' : '正常' }} {{ isFault(row) ? '故障' : '正常' }}
@ -60,7 +60,7 @@
<template #default="{ row }">{{ row.errorMessage || '运行正常' }}</template> <template #default="{ row }">{{ row.errorMessage || '运行正常' }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="lastSeenTime" label="最后上报" width="180" /> <el-table-column prop="lastSeenTime" label="最后上报" width="180" />
<el-table-column label="操作" width="100" fixed="right" align="center"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-if="controlRoute(row.deviceKind)" link type="primary" <el-button v-if="controlRoute(row.deviceKind)" link type="primary"
:disabled="row.onlineStatus !== '1'" @click="openControl(row)">示教</el-button> :disabled="row.onlineStatus !== '1'" @click="openControl(row)">示教</el-button>

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="container"> <div class="container cockpit-shell">
<div class="header"> <div class="header">
<Header @active-page="activePage" /> <Header @active-page="activePage" />
</div> </div>
@ -28,23 +28,34 @@ const activePage = (page) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container.cockpit-shell {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative; position: relative;
z-index: 1; z-index: 1;
background-color: #000d2e; background: var(--neu-bg);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
color: var(--neu-text-primary);
.header { .header {
height: 64px; height: 64px;
background: linear-gradient(180deg, rgba(0, 20, 70, 0.98) 0%, rgba(0, 10, 50, 0.95) 100%); background: var(--neu-bg);
border-bottom: 1px solid rgba(0, 194, 255, 0.3); border-bottom: 0;
box-shadow: 0 8px 16px -12px var(--neu-shadow-dark), 0 -4px 10px -10px var(--neu-shadow-light);
z-index: 2;
} }
.body-box { .body-box {
flex: 1; flex: 1;
min-height: 0;
padding: 14px;
} }
} }
</style>
@media (max-width: 768px) {
.container.cockpit-shell .body-box {
padding: 8px;
}
}
</style>

View File

@ -164,7 +164,7 @@
<el-table-column <el-table-column
label="操作" label="操作"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="200" width="240"
fixed="right" fixed="right"
> >
<template #default="scope"> <template #default="scope">

View File

@ -128,7 +128,7 @@
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="280" width="320"
fixed="right" fixed="right"
> >
<template #default="{ row }"> <template #default="{ row }">

View File

@ -163,7 +163,7 @@
<el-table-column <el-table-column
label="操作" label="操作"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="200" width="280"
fixed="right" fixed="right"
> >
<template #default="scope"> <template #default="scope">
@ -516,4 +516,4 @@ defineExpose({
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
} }
</style> </style>

View File

@ -17,7 +17,11 @@
width="150" width="150"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="音色" align="center" prop="voice" /> <el-table-column label="音色" align="center" prop="voice">
<template #default="{ row }">
<span>{{ voiceOption.find(item => item.value === row.voice)?.label || row.voice }}</span>
</template>
</el-table-column>
<el-table-column label="语种" align="center" prop="language" /> <el-table-column label="语种" align="center" prop="language" />
</el-table> </el-table>
@ -95,6 +99,49 @@ const props = defineProps({
}, },
}); });
const voiceOption = ref([
{
label: '普通话-男声',
value: 'x4_lingbosong'
}, {
label: '普通话-女声',
value: 'x4_yezi'
},
{
label: '晓燕-女声',
value: 'x4_xiaoyan'
},
{
label: '晓燕-女声',
value: 'xiaoyan'
}, {
label: '英语-女声',
value: 'x4_EnUs_Laura_education'
}, {
label: '英语-男声',
value: 'x4_enus_ryan_assist'
}, {
label: '粤语-女声',
value: 'x3_xiaoyue'
}, {
label: '东北话-女声',
value: 'x4_xiaobei'
}, {
label: '四川话-女声',
value: 'x3_yezi_sc'
}, {
label: '韩语-女声',
value: 'x2_KoKr_Miya'
}, {
label: '日语-女声',
value: 'x2_JaJp_ZhongCun'
}, {
label: '俄语-女声',
value: 'x2_RuRu_Keshu'
}
])
const emits = defineEmits(["updateSelectRows"]); const emits = defineEmits(["updateSelectRows"]);
const selectList = ref([]); const selectList = ref([]);