fix: 参数数据与示例对比差异显示功能

This commit is contained in:
TsMask
2024-07-22 18:16:48 +08:00
parent 94ccb45f8c
commit 76499d98e0
2 changed files with 96 additions and 11 deletions

View File

@@ -26,6 +26,19 @@ export function ptResetAsDefault(neType: string) {
});
}
/**
* 数据比较示例
* @param params 查询参数
* @returns object
*/
export function ptContrastAsDefault(params: Record<string, any>) {
return request({
url: `/pt/neConfigData/contrast`,
params,
method: 'get',
});
}
/**
* 网元参数配置信息
* @param params 数据 {neType,paramName}

View File

@@ -20,7 +20,7 @@ import useConfigList from './hooks/useConfigList';
import useConfigArray from './hooks/useConfigArray';
import useConfigArrayChild from './hooks/useConfigArrayChild';
import { getAllNeConfig } from '@/api/ne/neConfig';
import { getPtNeConfigData } from '@/api/pt/neConfig';
import { getPtNeConfigData, ptContrastAsDefault } from '@/api/pt/neConfig';
import { isSystemAdmin, hasRoles } from '@/plugins/auth-user';
const neInfoStore = useNeInfoStore();
const { t } = useI18n();
@@ -397,6 +397,29 @@ function openOpeateDrawer() {
operateDrawer.value = !operateDrawer.value;
}
// 数据与示例比较
const dataDiffState = reactive({
visible: false,
title: '对比示例',
exampleData: '',
data: '',
});
// 获取当前数据与示例数据
function fnDataDiff() {
ptContrastAsDefault({
neType: treeState.neType,
paramName: treeState.selectNode.paramName,
student: classState.student,
}).then(res => {
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
dataDiffState.data = JSON.stringify(res.data, null, 2);
dataDiffState.exampleData = JSON.stringify(res.exampleData, null, 2);
dataDiffState.title = treeState.selectNode.paramDisplay;
dataDiffState.visible = true;
}
});
}
onMounted(() => {
// 获取网元网元列表
neInfoStore.fnNelist().then(res => {
@@ -488,7 +511,7 @@ onMounted(() => {
"
:loading="ptConfigState.applyLoading"
>
应用学生配置
应用学生配置
</a-button>
<a-button
@click="
@@ -496,7 +519,7 @@ onMounted(() => {
"
:loading="ptConfigState.applyLoading"
>
退回学生配置
退回学生配置
</a-button>
</template>
@@ -506,14 +529,14 @@ onMounted(() => {
@click="ptConfigApply(treeState.neType, '2')"
:loading="ptConfigState.applyLoading"
>
(管理员/教师) 应用到网元
应用配置到网元
</a-button>
<a-button
@click="ptConfigSave(treeState.neType)"
:loading="ptConfigState.saveLoading"
v-roles:has="['admin']"
>
(管理员)载入网元配置为系统示例
载入当前网元配置
</a-button>
<a-button
@click="ptConfigReset(treeState.neType)"
@@ -521,21 +544,21 @@ onMounted(() => {
:loading="ptConfigState.restLoading"
v-roles:has="['teacher']"
>
(教师)重置为系统示例
重置为示例
</a-button>
<a-button
@click="ptConfigReset(treeState.neType)"
:loading="ptConfigState.restLoading"
v-roles:has="['student']"
>
(学生)重置为教师示例
重置为示例
</a-button>
<a-button
@click="ptConfigApply(treeState.neType, '0')"
:loading="ptConfigState.applyLoading"
v-roles:has="['student']"
>
(学生)申请应用到 {{ treeState.neType }}
申请配置应用到 {{ treeState.neType }}
</a-button>
</a-space>
</a-form-item>
@@ -587,7 +610,11 @@ onMounted(() => {
:loading="treeState.selectLoading"
>
<template #title>
<a-button type="text" @click.prevent="changeCollapsible()">
<a-button
type="text"
size="small"
@click.prevent="changeCollapsible()"
>
<template #icon>
<MenuFoldOutlined v-show="collapsible" />
<MenuUnfoldOutlined v-show="!collapsible" />
@@ -603,11 +630,29 @@ onMounted(() => {
</template>
<template #extra>
<a-space :size="8" align="center" v-show="!treeState.selectLoading">
<span v-roles:has="['teacher', 'student']">
<a-tooltip>
<template #title>与示例比较</template>
<a-button
type="default"
size="small"
@click.prevent="fnDataDiff()"
>
<template #icon>
<BlockOutlined />
</template>
</a-button>
</a-tooltip>
</span>
<a-tooltip>
<template #title>历史记录</template>
<a-button type="default" @click.prevent="openOpeateDrawer()">
<a-button
type="default"
size="small"
@click.prevent="openOpeateDrawer()"
>
<template #icon>
<BlockOutlined />
<BarsOutlined />
</template>
</a-button>
</a-tooltip>
@@ -615,6 +660,7 @@ onMounted(() => {
<template #title>{{ t('common.reloadText') }}</template>
<a-button
type="default"
size="small"
@click.prevent="fnActiveConfigNode('#')"
>
<template #icon>
@@ -1068,6 +1114,32 @@ onMounted(() => {
</a-form>
</ProModal>
<!-- 与示例对比差异 -->
<a-modal
:width="800"
:destroyOnClose="true"
:mask-closable="false"
v-model:visible="dataDiffState.visible"
:title="dataDiffState.title"
:footer="null"
:body-style="{ padding: 0, maxHeight: '650px', 'overflow-y': 'auto' }"
>
<div
style="
display: flex;
flex-direction: row;
justify-content: space-between;
"
>
<div style="flex: 1; text-align: center">示例配置</div>
<div style="flex: 1; text-align: center">当前个人</div>
</div>
<CodemirrorEditeDiff
:old-area="dataDiffState.exampleData"
:new-area="dataDiffState.data"
></CodemirrorEditeDiff>
</a-modal>
<!-- 历史记录抽屉 -->
<OpeateDrawer
v-model:visible="operateDrawer"