123
This commit is contained in:
parent
71d7956e65
commit
7e3578391b
|
@ -86,10 +86,6 @@ function StudentLink(){
|
|||
</tbody>
|
||||
</table>}
|
||||
<button onClick={submit} className='submit'>确定</button>
|
||||
<button onClick={()=>{
|
||||
console.log(score);
|
||||
console.log(suggestion);
|
||||
}}>测试</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -8,3 +8,30 @@
|
|||
float: right;
|
||||
background-color: #f7f8fa;
|
||||
}
|
||||
.body-right-Pods-table{
|
||||
margin-left: 20px;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.body-right-Pods-table th{
|
||||
width: 100px;
|
||||
}
|
||||
.body-right-Pods-table td{
|
||||
text-align: center;
|
||||
}
|
||||
span{
|
||||
all: unset;
|
||||
}
|
||||
.SrcBox{
|
||||
border: 1px solid black;
|
||||
}
|
||||
.SrcBox th{
|
||||
border-bottom: 1px solid black;
|
||||
width: 220px;
|
||||
}
|
||||
.SrcBox td{
|
||||
text-align: center;
|
||||
}
|
||||
.thd{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
|
@ -3,8 +3,86 @@ import axios from 'axios';
|
|||
import './TrainPods.css'
|
||||
|
||||
function TrainPods(){
|
||||
const teacher_ID=localStorage.getItem('islogin')
|
||||
const[isTrue,setisTrue]=useState(true)
|
||||
const [Pods,setPods]=useState()
|
||||
const FindPodsFunc=async ()=>{
|
||||
try{
|
||||
const FindPodsFunc=await axios.post('/api/teacher/list_pods')
|
||||
setPods(FindPodsFunc.data)
|
||||
}catch{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(()=>{
|
||||
FindPodsFunc()
|
||||
},[])
|
||||
|
||||
const handleDelete=async(name)=> {
|
||||
try{
|
||||
const delPods=await axios.post('/api/teacher/DelPods',{
|
||||
name
|
||||
})
|
||||
alert('删除成功')
|
||||
}catch{
|
||||
alert('出错')
|
||||
}
|
||||
};
|
||||
|
||||
const [SrcData,setSrcData]=useState()
|
||||
const FindSrc=async(ID,key)=>{
|
||||
try{
|
||||
const FindSrcc=await axios.post('/api/teacher/FindSrc',{
|
||||
ID,
|
||||
key
|
||||
})
|
||||
setSrcData(FindSrcc.data['data'])
|
||||
setisTrue(false)
|
||||
}catch{
|
||||
alert('SrcDAta出错')
|
||||
}
|
||||
}
|
||||
// // eslint-disable-next-line no-restricted-globals
|
||||
//
|
||||
|
||||
return(
|
||||
<div className='body-right-Pods'>asdas</div>
|
||||
<div className='body-right-Pods'>
|
||||
{isTrue&&<table className='body-right-Pods-table'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>学号</th><th>实训类型</th><th>实训ID</th><th>IP</th><th>实训链接</th><span className='thd'>操作</span>
|
||||
</tr>
|
||||
</thead>
|
||||
{Pods&&<tbody>
|
||||
{Object.keys(Pods['list']).map((key,index)=>(
|
||||
index>1&&
|
||||
<tr key={key}>
|
||||
<td>{Pods['list'][key]['name'].substring(1, 9)}</td>
|
||||
<td>{Pods['list'][key]['name'].substring(0,1)==='n'? '终端实训':'网页实训'}</td>
|
||||
<td>{Pods['list'][key]['name'].substring(10)}</td>
|
||||
<td>{Pods['list'][key]['ip']}</td>
|
||||
<td><button onClick={()=>FindSrc(Pods['list'][key]['name'].substring(1, 9),Pods['list'][key]['name'].substring(10))}>查看链接</button></td>
|
||||
<td><button onClick={()=>handleDelete(Pods['list'][key]['name'])}>删除</button></td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>}
|
||||
</table>}
|
||||
{!isTrue&& <table>
|
||||
<span className='spanBox'>此学生的实训地址为:</span>
|
||||
<div className='SrcBox'>
|
||||
<tr>
|
||||
<th>LINK</th><th>LINK2</th><th>LINK3</th>
|
||||
</tr>
|
||||
{Object.keys(SrcData).map((key)=>(
|
||||
<tr key={key}>
|
||||
<td>{SrcData[0][0]}</td><td>{SrcData[0][1]}</td><td>{SrcData[0][2]}</td>
|
||||
</tr>
|
||||
))}
|
||||
</div>
|
||||
<button onClick={()=>setisTrue(!isTrue)} style={{marginLeft:'600px'}}>返回</button>
|
||||
</table>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,19 @@
|
|||
text-decoration: none;
|
||||
color: #000;
|
||||
position: absolute;
|
||||
bottom: 50px;
|
||||
bottom: 170px;
|
||||
right: 100px;
|
||||
background-color: rgb(186, 237, 237);
|
||||
border-radius: 20px;
|
||||
}
|
||||
.ManagePods{
|
||||
border-radius: 20px;
|
||||
position: absolute;
|
||||
padding: 20px 30px;
|
||||
text-decoration: none;
|
||||
font-size: 20px;
|
||||
color: #000;
|
||||
right: 300px;
|
||||
bottom: 170px;
|
||||
background-color: rgb(186, 237, 237);
|
||||
}
|
|
@ -48,12 +48,9 @@ function TrainManage(){
|
|||
<p>关闭时间:2024-11-5</p>
|
||||
</li>
|
||||
</ul>
|
||||
<Link to='/teacher/trainmanage/TrainPods' >管理实训</Link>
|
||||
<Link to='/teacher/SendTrain' className='sendtestpage'>前往发布实训</Link>
|
||||
<Link to='/teacher/trainmanage/TrainPods' className='ManagePods' >管理实训</Link>
|
||||
<Link to='/teacher/SendTrain' className='sendtestpage'>发布实训</Link>
|
||||
</div>}
|
||||
<button onClick={()=>{
|
||||
console.log(Data);
|
||||
}}></button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -145,6 +145,7 @@ function Operation1() {
|
|||
localStorage.setItem('answeredComple',answeredComple)
|
||||
localStorage.setItem('answeredJudge',answeredJudge)
|
||||
localStorage.setItem('TrainData',JSON.stringify(TrainData))
|
||||
localStorage.setItem('score',score)
|
||||
|
||||
};
|
||||
|
||||
|
@ -205,6 +206,7 @@ function Operation1() {
|
|||
}
|
||||
JUD_sum++
|
||||
}
|
||||
alert('保存成功')
|
||||
}
|
||||
|
||||
// 题目预览框
|
||||
|
@ -349,9 +351,7 @@ function Operation1() {
|
|||
</tbody>
|
||||
</table>
|
||||
)}
|
||||
<button onClick={click}>测试</button>
|
||||
<button onClick={clear}>清除测试</button>
|
||||
<button onClick={submit}>假提交按钮</button>
|
||||
<button onClick={submit}>保存答案</button>
|
||||
<Link to={`/operation2/${operateID}`}><button onClick={saveAnswers}>下一页</button></Link>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,6 +12,7 @@ import axios from 'axios';
|
|||
import Test from '../../../TeacherPages/TestManage/Test';
|
||||
function Operation2() {
|
||||
const student_ID=localStorage.getItem('islogin')
|
||||
const score=localStorage.getItem('score')
|
||||
const { operateID } = useParams();
|
||||
const [isTrue,setisTrue]=useState(false)
|
||||
|
||||
|
@ -100,6 +101,7 @@ function Operation2() {
|
|||
localStorage.removeItem('answeredComple')
|
||||
localStorage.removeItem('answeredJudge')
|
||||
localStorage.removeItem('RemainingTime')
|
||||
localStorage.removeItem('score')
|
||||
alert('提交成功')
|
||||
window.location.href='/train'
|
||||
localStorage.removeItem('TrainData')
|
||||
|
@ -163,9 +165,6 @@ function Operation2() {
|
|||
<Link to={Src[8]}>{Src[8]}</Link>
|
||||
<br />
|
||||
点击以上链接前往实训
|
||||
<button onClick={()=>{
|
||||
console.log(Src);
|
||||
}}>dads</button>
|
||||
</div>
|
||||
}
|
||||
{/* 前端连接数据库 ⬆*/}
|
||||
|
|
|
@ -299,23 +299,30 @@ def GetTrain():
|
|||
data=getTrainFunc(teacherID)
|
||||
return jsonify({'data':data})
|
||||
|
||||
@app.route('/api/teacher/FindSrc',methods=["POST"])
|
||||
def FindSrc():
|
||||
testID=request.json['key']
|
||||
studentID=request.json['ID']
|
||||
data=FindSrcFunc(studentID,testID)
|
||||
return jsonify({'data':data})
|
||||
|
||||
|
||||
|
||||
@app.route("/api/teacher/list_pods") # 列出pod
|
||||
@app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod
|
||||
def teacher_list_pods():
|
||||
return jsonify(list_pods())
|
||||
return list_pods()
|
||||
@app.route("/api/teacher/list_services") # 列出服务
|
||||
def teacher_list_services():
|
||||
return list_services()
|
||||
|
||||
@app.route("/api/teacher/create_pod") # 创建服务 1为项目实训, 0为安装实训
|
||||
def teacher_create_pod():
|
||||
create_pod(1, "test2")
|
||||
|
||||
@app.route("/api/teacher/delete_pod") # 删除服务
|
||||
# @app.route("/api/teacher/create_pod") # 创建服务 1为项目实训, 0为安装实训
|
||||
# def teacher_create_pod():
|
||||
# create_pod(1, "test2")
|
||||
#
|
||||
@app.route("/api/teacher/delete_pod",methods=['POST']) # 删除服务
|
||||
def teacher_delete_pod():
|
||||
return delete_pod("test2")
|
||||
name=request.json['name']
|
||||
return delete_pod(name=name)
|
||||
|
||||
@app.route("/api/student/check_pod",methods=['POST']) # 检测数据库是否安装成功 若成功,返回OK 否则返回NO
|
||||
def teacher_check_pod():
|
||||
|
@ -323,7 +330,7 @@ def teacher_check_pod():
|
|||
testID=request.json["operateID"]
|
||||
name= 'n' + str(name) + '-' + str(testID)
|
||||
result = check_dm(name)
|
||||
return jsonify({'result':result})
|
||||
return jsonify(result)
|
||||
|
||||
@app.route('/')
|
||||
@app.route('/<path:path>')
|
||||
|
|
|
@ -17,8 +17,8 @@ spec:
|
|||
runAsGroup: 0
|
||||
resources:
|
||||
limits:
|
||||
cpu: '1'
|
||||
memory: 1.2Gi
|
||||
requests:
|
||||
cpu: '0.2'
|
||||
memory: 0.2Gi
|
||||
requests:
|
||||
cpu: '0.1'
|
||||
memory: 0.1Gi
|
|
@ -15,8 +15,8 @@ spec:
|
|||
runAsGroup: 0
|
||||
resources:
|
||||
limits:
|
||||
cpu: '1.3'
|
||||
memory: 1.3Gi
|
||||
cpu: '0.2'
|
||||
memory: 0.2Gi
|
||||
requests:
|
||||
cpu: '0.3'
|
||||
memory: 0.3Gi
|
||||
cpu: '0.1'
|
||||
memory: 0.1Gi
|
|
@ -1,5 +1,5 @@
|
|||
import k8s_func
|
||||
studentList=['n20240101-56','n20240102-56','s20240101-52','s20240102-52']
|
||||
studentList=['n20240101-63','n20240102-63','s20240101-66']
|
||||
|
||||
for i in studentList:
|
||||
k8s_func.delete_pod(i)
|
||||
|
|
|
@ -388,3 +388,13 @@ def getTrainFunc(teacherID):
|
|||
data = cursor.fetchall()
|
||||
return data
|
||||
|
||||
def FindSrcFunc(studentID, testID):
|
||||
cursor = db.cursor()
|
||||
cursor.execute(f'SELECT LINK,LINK2,LINK3 FROM TRAINSCORE WHERE STUDENT_ID=? AND TEST_ID=?',(studentID,testID))
|
||||
data = cursor.fetchall()
|
||||
cursor.close()
|
||||
return data
|
||||
|
||||
# FindSrcFunc('20240101','68')
|
||||
|
||||
|
||||
|
|
|
@ -1,29 +1,4 @@
|
|||
import json
|
||||
import dmPython
|
||||
import k8s_func
|
||||
db = dmPython.connect(user='SYSDBA', password='dameng!!', host="36.138.114.105", port="32522")
|
||||
cursor=db.cursor()
|
||||
studentList=['20240101','20240102']
|
||||
testID='5'
|
||||
type1=2
|
||||
for i in studentList:
|
||||
if type1==1:
|
||||
name='s'+i+'-'+testID
|
||||
# k8s_func.create_pod(type1,name)
|
||||
item=k8s_func.list_services()
|
||||
for j in item['list']:
|
||||
if j['name']==name+'-service':
|
||||
Link = 'http://36.138.114.105/' + str(j['ports'][0]['node_port'])
|
||||
Link2 = 'http://36.138.114.105/' + str(j['ports'][1]['node_port'])
|
||||
Link3 = 'http://36.138.114.105/' + str(j['ports'][2]['node_port'])
|
||||
else:
|
||||
name='n'+i+'-'+testID
|
||||
# k8s_func.create_pod(0,name)
|
||||
item=k8s_func.list_services()
|
||||
for j in item['list']:
|
||||
if j['name']==name+'-service':
|
||||
Link=j['ip']
|
||||
print(Link)
|
||||
print('a')
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue