diff --git a/src/forge/Information/Pages/sourceDetail.jsx b/src/forge/Information/Pages/sourceDetail.jsx
index 775df358f..1a6c7d0f2 100644
--- a/src/forge/Information/Pages/sourceDetail.jsx
+++ b/src/forge/Information/Pages/sourceDetail.jsx
@@ -1,7 +1,7 @@
import React , { useEffect , useState } from 'react';
import { Badge, Breadcrumb } from 'antd';
import SourceFile from '../img/sourceFile.png';
-import { getSourceDetail } from '../api';
+import { getFileByZone, getSourceDetail } from '../api';
import { Link } from 'react-router-dom';
import { httpUrl } from '../fetch';
import { AlignCenter, FlexAJ } from '../../Component/layout';
@@ -9,11 +9,17 @@ import SourceIcon from '../img/sourceIcon.png';
import { addMeta, setSeoMeta } from 'educoder';
import {getUniqueIdentifier,getUserName,getBrowserPlatform,getBrowserBrand} from '../utils';
import {setZoneVisits} from '../api'
+import axios from 'axios';
+import RenderHtml from '../../../components/render-html';
function SourceDetail(props){
const { deptId , sourceid } = props.match.params;
const [ detail , setDetail ] = useState(undefined);
+ const [files, setFiles] = useState([]);
+ const [mdFiles, setMdFiles] = useState([]);
+ const [mdContents, setMdContents] = useState(undefined);
+
const zonedetail = props.data;
const {temp} = props;
@@ -51,12 +57,51 @@ function SourceDetail(props){
}
}
- function getDetails(){
- getSourceDetail(sourceid).then(response=>{
- if(response){
+ function getDetails() {
+ getSourceDetail(sourceid).then(response => {
+ if (response) {
setDetail(response.data.data);
+ const { fileList } = response.data.data;
+ if (deptId === "NSCC") {
+ initMDContent(fileList)
+ }else{
+ setFiles(fileList);
+ }
+
}
- }).catch(error=>{})
+ }).catch(error => { })
+ }
+
+ async function initMDContent(fileList) {
+ const mdFileList = fileList.filter(item =>
+ item.fileOriginName && item.fileOriginName.toLowerCase().endsWith('.md')
+ );
+
+ const nonMdFiles = fileList.filter(item =>
+ !item.fileOriginName || !item.fileOriginName.toLowerCase().endsWith('.md')
+ );
+ setFiles(nonMdFiles);
+
+ if (mdFileList.length > 0) {
+ setMdFiles(mdFileList);
+
+ try {
+ const contents = await Promise.all(
+ mdFileList.map(async (file) => {
+ const res = await axios.get(`${httpUrl}/file/open/download/${file.fileId}`, {
+ responseType: 'text'
+ });
+ return { [file.fileId]: res.data };
+ })
+ );
+
+ // 合并所有结果为单个对象
+ setMdContents(contents.reduce((acc, item) => ({ ...acc, ...item }), {}));
+
+ } catch (error) {
+ console.error('获取 md 文件失败:', error);
+ }
+ }
}
return(
@@ -84,12 +129,18 @@ function SourceDetail(props){
{detail.auditStatus === '0' &&