feat: 改进计算结果展示和雷电密度计算逻辑
优化雷电密度计算条件判断,移除冗余条件 改进前端结果展示格式,显示各导线跳闸率 移除雷暴日输入框的禁用状态 更新电压离散化份数的工具提示说明
This commit is contained in:
@@ -105,7 +105,6 @@
|
||||
v-model="params.parameter.td"
|
||||
type="number"
|
||||
label="雷暴日 (d)"
|
||||
:disable="isTdDisabled"
|
||||
>
|
||||
<q-tooltip>一年中雷暴天数,用于计算地闪密度</q-tooltip>
|
||||
</q-input>
|
||||
@@ -244,7 +243,7 @@
|
||||
type="number"
|
||||
label="计算时电压分成多少份"
|
||||
>
|
||||
<q-tooltip>将电压波形离散化的份数,影响计算精度</q-tooltip>
|
||||
<q-tooltip>将电压波形离散化的份数,即将交流电压在一个周期内的不同值进行计算。</q-tooltip>
|
||||
</q-input>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
@@ -331,7 +330,16 @@
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-section>
|
||||
<pre class="text-caption bg-white q-pa-md rounded">{{ result }}</pre>
|
||||
<div class="text-body1">
|
||||
<div class="q-mb-sm"><strong>跳闸率:</strong>{{ result.tripping_rate }}</div>
|
||||
<div v-if="result.n_sf_phases && result.n_sf_phases.length > 0" class="q-mb-sm">
|
||||
<strong>各导线跳闸率:</strong>
|
||||
<span v-for="(rate, index) in result.n_sf_phases" :key="index" class="q-mr-md">
|
||||
导线{{ index + 1 }}: {{ rate.toFixed(4) }} 次/(100km·a)
|
||||
</span>
|
||||
</div>
|
||||
<div class="text-green-800 q-mt-md">{{ result.message }}</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
@@ -374,7 +382,7 @@ const defaultParams: AllParameters = {
|
||||
|
||||
const params = reactive<AllParameters>(JSON.parse(JSON.stringify(defaultParams)))
|
||||
const calculating = ref(false)
|
||||
const result = ref<string | null>(null)
|
||||
const result = ref<{ tripping_rate: string; n_sf_phases: number[]; message: string } | null>(null)
|
||||
const error = ref<string | null>(null)
|
||||
const logRef = ref<InstanceType<typeof LogComponent> | null>(null)
|
||||
const fileInput = ref<HTMLInputElement | null>(null)
|
||||
@@ -486,14 +494,11 @@ const calculate = async () => {
|
||||
logRef.value?.addLog('info', '开始 EGM 计算(开发模式)...')
|
||||
logRef.value?.addLog('info', '参数: 额定电压=750kV, 雷暴日=20d, 海拔=1000m')
|
||||
logRef.value?.addLog('info', '计算完成')
|
||||
result.value = JSON.stringify({
|
||||
success: true,
|
||||
message: '计算完成(开发模式)',
|
||||
data: {
|
||||
tripping_rate: '0.0581 次/(100km·a)',
|
||||
parameters: params
|
||||
}
|
||||
}, null, 2)
|
||||
result.value = {
|
||||
tripping_rate: '0.0581 次/(100km·a)',
|
||||
n_sf_phases: [0.0421, 0.0581, 0.0392],
|
||||
message: '计算完成'
|
||||
}
|
||||
calculating.value = false
|
||||
}
|
||||
} catch (e: any) {
|
||||
@@ -724,8 +729,13 @@ onMounted(() => {
|
||||
// 接收计算结果
|
||||
window.receiveResult = (res: { success: boolean; message: string; data?: any; error?: string }) => {
|
||||
calculating.value = false
|
||||
if (res.success) {
|
||||
result.value = JSON.stringify(res, null, 2)
|
||||
if (res.success && res.data) {
|
||||
result.value = {
|
||||
tripping_rate: res.data.tripping_rate || '',
|
||||
n_sf_phases: res.data.n_sf_phases || [],
|
||||
message: res.message || '计算完成'
|
||||
}
|
||||
logRef.value?.addLog('info', '计算完成')
|
||||
} else {
|
||||
error.value = res.error || res.message
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user