You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NewEduCoderBuild/p__Shixuns__Edit__body__Lev...

1 line
34 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[49205],{57883:function(e,t,n){n.d(t,{t:function(){return h}});var s=n(82242),a=n.n(s),r=(n(59301),n(3113)),i="buttonFixed___vyq30",l="button___hxmYv",c="buttonWrap___uK8dl",o=n(92310),u=n.n(o),d=n(37712),h=function(e){var t=e.cancelText,n=void 0===t?"取消":t,s=e.okText,o=void 0===s?"确定":s,h=e.loading,p=void 0!==h&&h,x=e.hasOkBtn,m=void 0===x||x,_=e.hasCancelBtn,f=void 0===_||_,v=e.okButtonProps,j=void 0===v?{}:v,g=e.onCancel,b=void 0===g?function(){}:g,y=e.onOk,Z=void 0===y?function(){}:y,N=e.className,k=void 0===N?"":N;return(0,d.jsx)("div",{className:u()(i,k),children:(0,d.jsxs)("div",{className:c,children:[f&&(0,d.jsx)(r.ZP,{size:"middle",className:"".concat(l," mr20"),onClick:b,children:n}),m&&(0,d.jsx)(r.ZP,a()(a()({size:"middle",type:"primary",className:"".concat(l," mr20"),loading:p,onClick:Z},j),{},{children:o}))]})})}},59302:function(e,t,n){n.r(t),n.d(t,{PracticeFileType:function(){return U},default:function(){return H}});var s=n(37205),a=n.n(s),r=n(85573),i=n.n(r),l=n(7557),c=n.n(l),o=n(82242),u=n.n(o),d=n(41498),h=n.n(d),p=n(79800),x=n.n(p),m=n(59301),_=n(80608),f=n(2842),v=n(57809),j=n(24650),g=n(36381),b=n(78241),y=n(43418),Z=n(8591),N=n(24905),k=n(5112),P=n(60324),S=n(94001),w=n(81327),C=n(3113),I=n(6848),T=n(33329),F={flex_box_center:"flex_box_center___MjMLk",flex_space_between:"flex_space_between___PcWTa",flex_box_vertical_center:"flex_box_vertical_center___Cq7f3",flex_box_center_end:"flex_box_center_end___sMsFo",flex_box_column:"flex_box_column___n6Hxq",bg:"bg____Ic4Q",radioStyle:"radioStyle___kewjX",formWrap:"formWrap___jcehV",onePart:"onePart___ECsrp",twoPart:"twoPart___WVIpx",title:"title___RpX2E",threePart:"threePart___Tzme_",flexRowCenter:"flexRowCenter___M7zUK",fourPart:"fourPart___HgBFj",testJi:"testJi___s6Skh",upBtn:"upBtn___eKx0D",checkboxs:"checkboxs___B4uNe",averageWarp:"averageWarp___yXrlD",averageCustom:"averageCustom___t5o4x",groupWrap:"groupWrap___eT0sR",customInput:"customInput___pywUD"},E=n(57883),L=n(64165),V=n(99313),D=n(71418),B="wrap___AEhcV",W="content___NDdD8",O="colorBlue___UwyKz",q=n(37712),R=function(e){return null!=e&&e.length?e.filter((function(e,t){return 0!==t})).map((function(e){return e.val})).join("").substr(1):""},M=(0,_.connect)((function(e){return{shixunsDetail:e.shixunsDetail,globalSetting:e.globalSetting}}))((function(e){var t=e.shixunsDetail,n=(e.globalSetting,e.dispatch),s=e.fileType,a=e.path,r=e.onFinish,i=void 0===r?function(){}:r,l=(0,_.useParams)(),o=(0,m.useState)(""),d=x()(o,2),p=d[0],f=d[1],v=(0,m.useState)("1"),g=x()(v,2),b=g[0],Z=g[1],N=(0,m.useState)([]),k=x()(N,2),P=k[0],S=k[1],w=(0,m.useState)(!1),I=x()(w,2),T=I[0],F=I[1],E=(0,m.useState)([]),M=x()(E,2),A=M[0],z=M[1],G=[U.OriginalPicturePath,U.ExpectPicturePath,U.PicturePath].includes(s);(0,m.useEffect)((function(){"EditPracticeSetting-SelectFilePath"===t.actionTabs.key&&(f(a||""),X())}),[t.actionTabs.key,a,b]);var X=function(){var e=h()(c()().mark((function e(){var t,s,a,r=arguments;return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:"",F(!0),e.next=4,n({type:"shixunsDetail/".concat("1"===b?"getRepository":"getSecretRepository"),payload:{id:l.id,path:t}});case 4:null!=(s=e.sent)&&s.trees?(a=s.trees.map((function(e){return u()(u()({},e),{name:e.name,val:e.name})})),z(a||[])):z([]),F(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),K=function(){var e=h()(c()().mark((function e(){return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i(p),J();case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),J=function(){f(""),S([]),z([]),Z("1"),n({type:"shixunsDetail/setActionTabs",payload:{}})},H=R(P);return(0,q.jsx)(y.Z,{centered:!0,title:"文件路径",closable:!1,keyboard:!1,open:"EditPracticeSetting-SelectFilePath"===t.actionTabs.key,onOk:K,onCancel:J,children:(0,q.jsxs)("div",{className:B,children:[(0,q.jsxs)(V.Z,{activeKey:b,onChange:function(e){S([]),Z(e)},children:[(0,q.jsx)(V.Z.TabPane,{tab:"代码仓库"},"1"),"exec_path"===s&&(0,q.jsx)(V.Z.TabPane,{tab:"私密代码仓库"},"2")]}),(0,q.jsx)(D.Z,{style:{backgroundColor:"#f5f5f5",height:200},spinning:T,children:(0,q.jsxs)("div",{className:W,children:[(0,q.jsx)("div",{children:!(null==P||!P.length)&&P.map((function(e,t){return(0,q.jsx)("a",{style:{whiteSpace:0===t?"nowrap":""},onClick:function(){return function(e,t){var n=P.filter((function(e,n){return n<=t}));S(n);var s=R(n);G&&f(s),X(s)}(0,t)},children:e.val},t)}))}),null!=A&&A.length?A.map((function(e,t){return"tree"===e.type?(0,q.jsxs)("a",{onClick:function(){return function(e){if("tree"===e.type){P.length?P.push({val:"/".concat(e.val),path:e.val}):P.push({val:"根目录",path:""},{val:"/".concat(e.val),path:e.val}),S(P);var t=R(P);G&&f(t),X(t)}}(e)},children:[(0,q.jsx)("i",{className:"iconfont icon-wenjianjia ".concat(O)}),H?"".concat(H,"/"):H,e.name]},t):(0,q.jsxs)("a",{onClick:function(){return function(e){var t=R(P),n="".concat(t?"".concat(t,"/"):t).concat(e);"2"===b&&(n="secret/".concat(n)),s===U.Path?(null==p||!p.includes("".concat(n,"")))&&f("".concat(p).concat(n,"")):s===U.ExecPath&&f(n)}("".concat(e.name))},children:[(0,q.jsx)("i",{className:"iconfont icon-zuoye ".concat(O)}),H?"".concat(H,"/"):H,e.name]},t)})):(0,q.jsx)(L.Z,{style:{margin:"0 0"},image:L.Z.PRESENTED_IMAGE_SIMPLE,imageStyle:{height:60},description:(0,q.jsxs)("div",{children:[(0,q.jsx)("p",{style:{color:"#888",marginBottom:0},children:"私密代码仓库暂无文件。请先开启并上传代码文"}),(0,q.jsx)("span",{style:{color:"#888"},children:"件、标准图片等文件到私密代码仓库"})]}),children:(0,q.jsx)(C.ZP,{type:"primary",onClick:function(){J(),n({type:"practiceSetting/setSideBarTabs",payload:{tabsActive:"warehouse"}}),_.history.push("/shixuns/".concat(l.id,"/edit?tabId=warehouse"))},children:"去上传"})})]})}),(0,q.jsx)("label",{className:"mt5",children:"已选中的文件:"}),(0,q.jsx)(j.Z,{placeholder:"请输入新文件夹名/子文件夹名。src/step1",value:p,onChange:function(e){return f(e.target.value)}})]})})})),A=n(19989),z=n(89392),G=n(83795),X=n(43675),K=v.default.Option,J=j.Z.TextArea,U=(g.Z.Panel,function(e){return e.Path="path",e.ExecPath="exec_path",e.OriginalPicturePath="original_picture_path",e.ExpectPicturePath="expect_picture_path",e.PicturePath="picture_path",e}({})),H=(0,_.connect)((function(e){return{shixunsDetail:e.shixunsDetail,newCourse:e.newCourse,globalSetting:e.globalSetting,practiceSetting:e.practiceSetting}}))((function(e){var t,n,s,r,l,o,d=e.shixunsDetail,p=e.dispatch,g=e.practiceSetting,L=b.Z.useForm(),V=x()(L,1)[0],D=(0,m.useState)({}),B=x()(D,2),W=B[0],O=B[1],R=(0,m.useState)([]),H=x()(R,2),Y=H[0],Q=H[1],$=(0,m.useState)({}),ee=x()($,2),te=ee[0],ne=ee[1],se=(0,m.useState)([]),ae=x()(se,2),re=ae[0],ie=ae[1],le=(0,m.useState)(),ce=x()(le,2),oe=ce[0],ue=ce[1],de=(0,m.useRef)({formValue:{},testSetList:[],uploadData:[]}),he=(0,m.useState)(!0),pe=x()(he,2),xe=pe[0],me=pe[1],_e=(0,m.useState)(!0),fe=x()(_e,2),ve=fe[0],je=fe[1],ge=(0,m.useRef)(null),be=(0,m.useState)(!1),ye=x()(be,2),Ze=ye[0],Ne=ye[1],ke=(0,m.useState)(!1),Pe=x()(ke,2),Se=Pe[0],we=Pe[1],Ce=(0,_.useParams)(),Ie=(0,m.useState)(!1),Te=x()(Ie,2),Fe=Te[0],Ee=Te[1],Le=(0,m.useState)(!1),Ve=x()(Le,2),De=Ve[0],Be=Ve[1],We=(0,m.useState)(!1),Oe=x()(We,2),qe=Oe[0],Re=Oe[1],Me=["test_set_rules","go_back_url","next_challenge","position","name","chooses","st","id","path","exec_path","show_type","original_picture_path","expect_picture_path","picture_path","test_set_rules_expression","web_route","test_set_score","test_set_average","exec_time","ignore_space","with_code_file","unity_3d","unity_3d_routes","unity_3d_result","has_web_route","test_sets","is_file","proxy_port"];(0,m.useEffect)((function(){Ae()}),[]),(0,m.useEffect)((function(){console.log(Y);var e=Y.every((function(e){return 1===e.hidden}));Ee(e);var t=Y.every((function(e){return e.is_invisible}));Be(t);var n=Y.every((function(e){return e.last_match_rule}));Re(n)}),[Y]),(0,m.useEffect)((function(){return"{}"!==JSON.stringify(de.current.formValue)&&de.current.testSetList.length&&ze(),function(){clearTimeout(ge.current)}}),[W,re]);var Ae=function(){var e=h()(c()().mark((function e(){var t,n,s,a,r;return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return me(!0),e.next=3,p({type:"shixunsDetail/getRepository",payload:{id:Ce.id,path:""}});case 3:return t=e.sent,je(null===(null==t?void 0:t.trees)),e.next=7,(0,T.ii)({id:Ce.id,challengeId:Ce.challengesId,tab:1});case 7:(n=e.sent)&&(me(!1),a=(null===(s=n.test_sets)||void 0===s||null===(s=s[0])||void 0===s?void 0:s.is_file)||!1,r=u()(u()({},n),{},{is_file:a}),ne(r),parseInt(null==n?void 0:n.code_compile_score)>0&&we(!0),Xe(r));case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ze=function(){clearTimeout(ge.current),ge.current=setTimeout(Ge,500)},Ge=function(){!Me.some((function(e){var t=(0,z.isNumber)(W[e])?String(W[e]):W[e],n=(0,z.isNumber)(de.current.formValue[e])?String(de.current.formValue[e]):de.current.formValue[e];return!(0,z.isEqual)(t,n)}))&&(0,z.isEqual)(de.current.testSetList,re)&&(0,z.isEqual)(de.current.uploadData,Y)?p({type:"practiceSetting/setSideBarTabs",payload:{confirmLeave:!1}}):p({type:"practiceSetting/setSideBarTabs",payload:{confirmLeave:!0}})},Xe=function(e){if(e.proxy_port=(null==e?void 0:e.proxy_port)||8080,V.setFieldsValue(u()({},e)),O(u()({},e)),null!=e&&e.is_file){var t=e.test_sets||[];Q(t);var n=[{hidden:0,input:"",output:"",score:100}];de.current={formValue:u()({},e),testSetList:n,uploadData:t},ie(n)}else{var s,a=null!==(s=e.test_sets)&&void 0!==s&&s.length?e.test_sets:[{hidden:0,input:"",output:"",score:100}];de.current={formValue:u()({},e),testSetList:a,uploadData:[]},ie(a)}},Ke=function(){var e=h()(c()().mark((function e(t){return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!ve){e.next=3;break}return y.Z.confirm({centered:!0,title:"提示",content:"请先上传本关任务的所有代码文件、标准图片等所有必要的文件到代码仓库",okText:"去上传",onOk:function(){p({type:"practiceSetting/setSideBarTabs",payload:{tabsActive:"warehouse"}}),_.history.push("/shixuns/".concat(Ce.id,"/edit?tabId=warehouse"))},cancelText:"取消"}),e.abrupt("return");case 3:p({type:"shixunsDetail/setActionTabs",payload:{key:"EditPracticeSetting-SelectFilePath"}}),ue(t);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Je=function(e){var t=parseInt(V.getFieldValue("code_compile_score")||0),n=Math.floor((100-t)/e.length),s=n+(100-t)%e.length;e=e.map((function(t,a){return a===e.length-1?u()(u()({},t),{},{score:s}):u()(u()({},t),{},{score:n})})),de.current.testSetList=(0,z.clone)(e),ie(e)},Ue=function(e){var t=parseInt(V.getFieldValue("code_compile_score")||0),n=Math.floor((100-t)/e.length),s=n+(100-t)%e.length;e=e.map((function(t,a){return a===e.length-1?u()(u()({},t),{},{score:s}):u()(u()({},t),{},{score:n})})),de.current.uploadData=(0,z.clone)(e),Q(e)},He=function(){var e=h()(c()().mark((function e(t){var n,s,a,r,i,l;return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=[],s=parseInt(V.getFieldValue("code_compile_score")||0),!t.is_file){e.next=12;break}if(null!=Y&&Y.length){e.next=6;break}return Z.ZP.error("测试集不能为空"),e.abrupt("return");case 6:if(a=Y.map((function(e){return e.score})),r=a.reduce((function(e,t){return e+t}),0)+s,!t.test_set_score||100===r||null==re||!re.length){e.next=11;break}return Z.ZP.error("测试集的评分占比之和必须等于100"),e.abrupt("return");case 11:n=Y;case 12:if(t.is_file){e.next=19;break}if(i=re.map((function(e){return e.score})),l=i.reduce((function(e,t){return e+t}),0)+s,!t.test_set_score||100===l||null==re||!re.length){e.next=18;break}return Z.ZP.error("测试集的评分占比之和必须等于100"),e.abrupt("return");case 18:n=re.map((function(e){return u()(u()({},e),{},{is_file:!1})}));case 19:return t.test_set_score||(n=n.map((function(e){return u()(u()({},e),{},{is_target:!1,target_name:""})}))),e.next=22,(0,T.Rs)(u()(u()({},Ce),{},{tab:1,challenge:u()(u()(u()({},t),{test_set_rules_expression:0===t.test_set_rules?null:t.test_set_rules_expression}),{},{shixunfileexpectpicturepath:t.original_picture_path,shixunfilestandardpicturepath:t.expect_picture_path}),test_set:n}));case 22:e.sent.status>=0&&_.history.replace("/shixuns/".concat(Ce.id,"/edit/").concat(Ce.challengesId,"/tab=3"));case 24:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return console.log(Y,444),(0,q.jsxs)(m.Fragment,{children:[(0,q.jsxs)("section",{className:F.bg,children:[(0,q.jsxs)(b.Z,{form:V,className:F.formWrap,scrollToFirstError:!0,layout:"vertical",onValuesChange:function(e){var t=V.getFieldValue();O(u()({},t)),"test_set_score"in e&&e.test_set_score&&(V.setFieldsValue({test_set_average:!0}),W.is_file?Ue(Y):Je(re)),"test_set_average"in e&&e.test_set_average&&(W.is_file?Ue(Y):Je(re)),"unity_3d"in e&&(e.unity_3d||(V.setFieldsValue({with_code_file:!0}),O(u()(u()({},t),{},{with_code_file:!0}))))},onFinish:He,initialValues:{test_set_rules:0},children:[(0,q.jsx)(X.Z,{activeIndex:1}),(0,q.jsxs)("div",{className:F.onePart,children:[(null===(t=d.detail)||void 0===t?void 0:t.identity)<3&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(b.Z.Item,{label:"嵌入第三方平台:",children:[(0,q.jsx)(b.Z.Item,{name:"unity_3d",noStyle:!0,valuePropName:"checked",children:(0,q.jsx)(N.Z,{disabled:2===(null===(n=d.detail)||void 0===n?void 0:n.shixun_status)})}),(0,q.jsx)("span",{className:"font14 c-light-black",children:"(可以在学员页面直接嵌入第三方平台)"})]}),W.unity_3d&&(null===(s=d.detail)||void 0===s?void 0:s.identity)<3&&(0,q.jsx)(b.Z.Item,{name:"unity_3d_routes",label:"路径:",rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsx)(j.Z,{bordered:!1,disabled:2===(null===(r=d.detail)||void 0===r?void 0:r.shixun_status),placeholder:"请选择版本库中的代码文件。例: src/step1/HelloWorld.java"})})]}),W.unity_3d&&(null===(l=d.detail)||void 0===l?void 0:l.identity)<3&&(0,q.jsxs)(m.Fragment,{children:[(0,q.jsx)(b.Z.Item,{name:"with_code_file",label:"是否需要代码评测:",children:(0,q.jsxs)(k.ZP.Group,{children:[(0,q.jsx)(k.ZP,{value:!0,children:"是"}),(0,q.jsx)(k.ZP,{value:!1,children:"否"})]})}),W.with_code_file?(0,q.jsx)(b.Z.Item,{name:"unity_3d_result",label:"评测结果是否由 Unity3D 决定:",children:(0,q.jsxs)(k.ZP.Group,{children:[(0,q.jsx)(k.ZP,{value:!0,children:"是"}),(0,q.jsx)(k.ZP,{value:!1,children:"否"})]})}):null]})]}),(0,q.jsx)("div",{className:F.twoPart,children:W.with_code_file&&(0,q.jsxs)(m.Fragment,{children:[(0,q.jsx)("div",{className:F.title,children:"评测文件"}),(0,q.jsx)(b.Z.Item,{name:"exec_time",label:(0,q.jsxs)("div",{children:["评测时长限制 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(程序编译、执行所允许的最大时长,单位:秒)"})]}),rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"请输入评测时长",className:F.width300})}),(0,q.jsxs)(b.Z.Item,{label:(0,q.jsxs)("div",{children:["评测结果展示方式 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(学员评测本关任务时,查看效果页上需要展现的文件类型)"})]}),children:[(0,q.jsx)(b.Z.Item,{name:"show_type",noStyle:!0,rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsxs)(v.default,{bordered:!1,size:"large",style:{width:600},getPopupContainer:function(e){return e.parentNode},children:[(0,q.jsx)(K,{value:-1,children:"测试集对比"}),(0,q.jsx)(K,{value:1,children:"图片"}),(0,q.jsx)(K,{value:2,children:"apk/exe"}),(0,q.jsx)(K,{value:3,children:"txt"}),(0,q.jsx)(K,{value:4,children:"html"}),(0,q.jsx)(K,{value:5,children:"mp3"}),(0,q.jsx)(K,{value:6,children:"mp4"}),(0,q.jsx)(K,{value:7,children:"LaTeX"}),(0,q.jsx)(K,{value:8,children:"office"}),(0,q.jsx)(K,{value:9,children:"Verilog"})]})}),(0,q.jsx)(P.Z,{overlayClassName:F.popover,placement:"bottomLeft",content:(0,q.jsxs)("p",{className:"font12",children:["图片:处理或输出图片类型的任务,请选填此项",(0,q.jsx)("br",{}),"可以通过设置图片路径和学员答案文件路径,展示代码对应的图片效果",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"apk/exe写可执行文件的任务请选填此项",(0,q.jsx)("br",{}),"可以通过设置学员答案文件路径,展示二维码以供扫码下载",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"txt输出txt文档类型的任务请选填此项",(0,q.jsx)("br",{}),"可以通过学员答案文件路径设置展示txt文件内容",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"htmlweb类型的任务请选填此项",(0,q.jsx)("br",{}),"可以通过Web路由设置展示html效果预览页",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"mp3/mp4mp3/mp4文件类型的任务请选填此项",(0,q.jsx)("br",{}),"可以通过学员答案文件路径设置展示mp3/mp4文件内容",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"LaTeXLaTeX实验报告的任务请选择此项",(0,q.jsx)("br",{}),"学员可以使用LaTeX系统撰写实验报告最终以PDF格式展示",(0,q.jsx)("br",{}),(0,q.jsx)("span",{className:"c-red",children:"注意选择了LaTeX的关卡需要教师手动对该关卡进行判分"}),(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"OfficeMicrosoftOffice相关文件的任务请选填此项",(0,q.jsx)("br",{}),"注意学生上传的office文件目录是在/data/bigfiles目录下如果要做评测请读取此目录的文件",(0,q.jsx)("br",{})]}),trigger:"click",children:(0,q.jsx)(f.Z,{className:"ml5 font24 c-light-black"})})]}),(0,q.jsx)(b.Z.Item,{name:"path",label:(0,q.jsxs)("div",{children:["学员任务文件 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(该文件将直接显示给学生,需要学生在其中填写代码)"})]}),rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"点击选择代码文件,可同时选择多个文件",onClick:function(){return Ke(U.Path)}})}),(0,q.jsx)(b.Z.Item,{name:"exec_path",label:(0,q.jsxs)("div",{children:["评测执行文件 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(点击评测按钮时调用的文件,用于检测学员结果是否正确,可以与“学员任务文件”一致)"})]}),rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"点击选择代码文件",onClick:function(){return Ke(U.ExecPath)}})}),4===W.show_type&&(W.web_route||(null==te?void 0:te.has_web_route))&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(b.Z.Item,{name:"proxy_port",label:(0,q.jsxs)("div",{children:["端口号 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"请注意将服务器程序的端口号映射到以下端口默认8080"})]}),rules:[{required:!0,message:"请输入端口号"},{validator:function(e,t){return/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/.test(t)||!t?Promise.resolve():Promise.reject(new Error("端口输入范围(0-65535)"))}}],children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"请输入0-65535的值"})}),(0,q.jsx)(b.Z.Item,{name:"web_route",label:(0,q.jsxs)("div",{children:["Web路由 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:" 网站类型的实践项目请填写Web路由地址"})]}),children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"网站类型实训请填写Web路由地址。例java/mypage"})})]}),(1===W.show_type||5===W.show_type||6===W.show_type)&&(0,q.jsx)(b.Z.Item,{name:"original_picture_path",label:(0,q.jsxs)("div",{children:["源文件目录 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(该目录用于存放需要处理的图片/MP3/MP4等文件建议使用单独的文件夹"})]}),children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"点击选择文件目录src/step1/sourcefiles",onClick:function(){return Ke(U.OriginalPicturePath)}})}),-1!==W.show_type&&(0,q.jsx)(b.Z.Item,{name:"picture_path",label:(0,q.jsxs)("div",{children:["学员答案文件目录 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(该目录用于存放学员代码执行后生成的文件,建议使用单独的文件夹)"})]}),children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"点击选择文件目录src/step1/outputfiles",onClick:function(){return Ke(U.PicturePath)}})}),(1===W.show_type||5===W.show_type||6===W.show_type)&&(0,q.jsx)(b.Z.Item,{name:"expect_picture_path",label:(0,q.jsxs)("div",{children:["标准答案文件目录 ",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(该目录用于存放最终作为参考的文件,在评测通过后会展示给学员查看,建议使用单独的文件夹)"})]}),children:(0,q.jsx)(j.Z,{bordered:!1,placeholder:"点击选择文件目录src/step1/expectedfiles",onClick:function(){return Ke(U.ExpectPicturePath)}})})]})}),(0,q.jsx)("div",{className:F.threePart,children:W.with_code_file&&(0,q.jsxs)(m.Fragment,{children:[(0,q.jsx)("div",{className:F.title,children:"评测规则"}),(0,q.jsxs)("div",{className:F.flexRowCenter,children:[(0,q.jsx)(b.Z.Item,{className:F.formCustom,name:"test_set_rules",label:"通关判定:",children:(0,q.jsxs)(k.ZP.Group,{className:"ml25",children:[(0,q.jsx)(k.ZP,{className:F.radioStyle,value:0,children:"实际输出与预期输出对比"}),(0,q.jsx)(k.ZP,{className:F.radioStyle,value:1,children:"实际输出满足规则"})]})}),1===W.test_set_rules&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(b.Z.Item,{name:"test_set_rules_expression",style:{marginTop:50,position:"relative",top:40},rules:[{required:!0,message:"必填项:不能为空"}],children:(0,q.jsx)(j.Z,{style:{width:400,marginLeft:-40},bordered:!1,placeholder:"适用于输出结果动态变化的程序"})}),(0,q.jsx)(P.Z,{overlayClassName:F.popover,placement:"bottomLeft",content:(0,q.jsxs)("p",{className:"font12",children:["使用示例1实际输出与预期输出的相对误差在0.01以内,可使用以下表达式:",(0,q.jsx)("br",{}),"(actual-expect)/expect <= 0.01",(0,q.jsx)("br",{}),"使用示例2实际输出结果包含某段字符串hello可使用以下表达式",(0,q.jsx)("br",{}),'string.contains(actual, "hello")',(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),"若需要对输出结果中每个元素进行操作可使用list集合",(0,q.jsx)("br",{}),"示例参考假设程序实际输出为100 1000 10000预期输出为100.01 1000.02 10000.05",(0,q.jsx)("br",{}),"评测要求实际输出列表中元素与预期输出列表中对应元素相对误差在0.01 之内,可使以下表达式:",(0,q.jsx)("br",{}),"list.forEach( 'math.abs( (actualElem-expectElem)/expectElem ) <= 0.01 ' )",(0,q.jsx)("br",{}),(0,q.jsx)("br",{}),(0,q.jsx)("a",{href:"https://www.educoder.net/forums/4346",target:"_blank",style:{background:"#0152d9",color:"#fff"},children:"点击查看详情说明"}),(0,q.jsx)("br",{})]}),trigger:"click",children:(0,q.jsx)(f.Z,{style:{padding:"114px 0 0 9px"},className:"font24 c-light-black"})})]})]}),(0,q.jsx)(b.Z.Item,{className:F.formCustom,name:"ignore_space",label:"空格处理:",children:(0,q.jsxs)(k.ZP.Group,{className:"ml25",children:[(0,q.jsx)(k.ZP,{className:F.radioStyle,value:0,children:"不忽略空格"}),(0,q.jsx)(k.ZP,{className:F.radioStyle,value:1,children:"忽略首尾空格"}),(0,q.jsxs)(k.ZP,{className:F.radioStyle,value:2,children:["忽略所有空格",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(评测过程中自动去掉所有空格进行对比)"})]})]})})]})}),(0,q.jsx)("div",{className:F.fourPart,children:W.with_code_file&&(0,q.jsxs)(m.Fragment,{children:[(0,q.jsx)("div",{className:F.title,children:"测试集"}),(0,q.jsx)(b.Z.Item,{className:F.testJi,name:"test_set_score",label:"得分规范:",children:(0,q.jsxs)(k.ZP.Group,{className:"ml25",children:[(0,q.jsxs)(k.ZP,{value:!1,className:F.radioStyle,children:["通过全部测试集",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(所有测试集都正确时,才能获得金币)"})]}),(0,q.jsxs)(k.ZP,{value:!0,className:F.radioStyle,children:["通过部分测试集",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(部分测试集正确时,按配置的比例获得金币)"})]})]})}),W.test_set_score&&(0,q.jsx)("div",{className:F.averageWarp,children:(0,q.jsx)(b.Z.Item,{className:F.averageCustom,name:"test_set_average",label:"",children:(0,q.jsxs)(k.ZP.Group,{children:[(0,q.jsx)(k.ZP,{style:{margin:"0 40px 0 20px"},value:!0,children:"均分比例"}),(0,q.jsx)(k.ZP,{value:!1,children:"自定义比例"})]})})}),W.test_set_score&&(0,q.jsxs)("div",{children:[(0,q.jsxs)("div",{style:{display:"flex",height:"30px",marginBottom:"10px",paddingLeft:"93px"},children:[(0,q.jsx)(N.Z,{checked:Se,style:{display:"flex",alignItems:"center"},className:F.checkboxs,onChange:function(e){we(e.target.checked),V.setFieldsValue({code_compile_score:0}),W.test_set_average&&(W.is_file?Ue(Y):Je(re))},children:"启用编译通过即可得分"}),Se&&(0,q.jsxs)("span",{style:{display:"flex"},children:[(0,q.jsx)(b.Z.Item,{rules:[{required:!0,message:"请输入编译得分"}],name:"code_compile_score",children:(0,q.jsx)(S.Z,{onChange:function(){W.test_set_average&&(W.is_file?Ue(Y):Je(re))},parser:function(e){return isNaN(parseInt(e))?"":parseInt(e)},min:0,max:100,style:{width:"85px",margin:"5px 0px",fontSize:"14px"}})})," ",(0,q.jsx)("span",{style:{display:"flex",alignItems:"center",marginLeft:"5px"},children:"%"})]})]}),(0,q.jsx)("div",{style:{paddingLeft:"85px",color:"#999",fontSize:"12px",marginBottom:"20px"},children:"(请注意该实训题是否有编译过程,若没有则无法获得编译得分)"})]}),(0,q.jsx)(b.Z.Item,{className:F.testJi,name:"is_file",label:"用例类型:",children:(0,q.jsx)(k.ZP.Group,{className:"ml25",children:(0,q.jsxs)(w.Z,{direction:"horizontal",children:[(0,q.jsx)(k.ZP,{value:!1,className:F.radioStyle,children:"文本"}),(0,q.jsx)(k.ZP,{value:!0,className:F.radioStyle,children:"文件"})]})})}),(0,q.jsxs)("div",{style:{marginTop:"20px"},className:F.upBtn,children:[(0,q.jsx)(C.ZP,{ghost:!0,type:"primary",className:"mb20",style:{right:"174px"},onClick:function(){return function(){y.Z.confirm({title:"删除测试用例提示",content:"请确认是否将本关卡中的测试用例全部删除?",okText:"确认",cancelText:"取消",onOk:function(){e()}});var e=function(){W.is_file?Ue([]):Je([{hidden:0,input:"",output:"",score:0}])}}()},children:"一键删除测试用例"}),(0,q.jsx)(C.ZP,{ghost:!0,type:"primary",className:"mb20",style:{right:"4px"},onClick:function(){return Ne(!0)},children:"批量上传测试用例"}),W.is_file&&(0,q.jsx)(A.Y2,{showEvaluatingSetting:!0,onEvaluatingChange:function(e,t,n){"hidden"===n&&(e=e?1:0),console.log(e,t);var s=Y.map((function(s,a){return a===t?u()(u()({},s),{},i()({},n,e)):s}));Q(s),console.log(s);var a=s.every((function(t){return t[n]===e}));"hidden"===n?Ee(a&&e):"is_invisible"===n?Be(a&&e):Re(a&&e)},checkAll1:Fe,checkAll2:De,checkAll3:qe,onSelectAll:function(e,t){"hidden"===t&&(e=e?1:0),console.log(e);var n=Y.map((function(n,s){return u()(u()({},n),{},i()({},t,e))}));Q(n),"hidden"===t?Ee(e):"is_invisible"===t?Be(e):Re(e)},disabled:null==W?void 0:W.test_set_average,inputChange:function(e,t){console.log(e,t);var n=Y.map((function(n,s){return s===t?u()(u()({},n),{},{score:e.target.value?Number(e.target.value):0}):n}));Q(n)},showScore:null==W?void 0:W.test_set_score,data:Y,onRemove:function(e,t){var n=a()(Y);n.splice(t,1),W.test_set_average?Ue(n):Q(n)}})]}),!W.is_file&&re.map((function(e,t){return(0,q.jsxs)("div",{className:F.groupWrap,children:[(0,q.jsxs)("div",{className:"font16",children:[(0,q.jsxs)("span",{className:"mr10",children:["组",t+1," : "]}),W.test_set_score&&(0,q.jsxs)("span",{style:{marginRight:100},children:[(0,q.jsx)(j.Z,{style:{width:85},value:e.score,type:"number",onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{score:e.target.value?Number(e.target.value):0}):n})),s={test_set_average:!1};O(u()(u()({},W),s)),V.setFieldsValue(s),ie(n)}}),(0,q.jsx)("span",{className:"ml10 mr10",children:"%"})]}),(0,q.jsxs)(N.Z,{className:"font14 ml5",checked:1===e.hidden,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{hidden:e.target.checked?1:0}):n}));ie(n)},children:["隐藏 ",(0,q.jsx)(I.Z,{title:'隐藏测试集可以防止学生通过"print"等手段直接通关',children:(0,q.jsx)(f.Z,{className:"ml5 font12 c-light-black"})})," "]}),W.test_set_score&&(0,q.jsxs)(N.Z,{className:"font14 ml5",checked:e.is_target,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{is_target:e.target.checked}):n}));ie(n)},children:["指标测试集",(0,q.jsx)(I.Z,{title:"如需要输出指标,可以勾选指标测测试集,并对指标进行命名。教师可在实训作业的实训报告页面查看学生的指标是否合格。指标得分计入最终成绩",children:(0,q.jsx)(f.Z,{className:"ml5 font12 c-light-black"})})," "]}),e.is_target&&W.test_set_score&&(0,q.jsx)(j.Z,{value:e.target_name,maxLength:30,style:{width:"50%"},onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{target_name:e.target.value}):n}));ie(n)}}),(0,q.jsx)("span",{className:"tr flex1",style:{float:"right"},children:0!==t&&(0,q.jsx)(I.Z,{placement:"bottom",title:"删除",children:(0,q.jsx)("span",{className:"font16 c-red current",onClick:function(){var e=re.filter((function(e,n){return n!==t}));Je(e)},children:"删 除"})})})]}),(0,q.jsx)(J,{bordered:!1,className:"mt10",rows:5,placeholder:"输入",value:e.input,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{input:e.target.value}):n}));ie(n)}}),(0,q.jsx)(J,{bordered:!1,className:"mt10",rows:5,placeholder:"预期输出",value:e.output,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{output:e.target.value}):n}));ie(n)}}),(0,q.jsxs)("div",{className:"mt10",children:[(0,q.jsx)("span",{className:"font14 mr20",children:"预期输出:"}),(0,q.jsx)(N.Z,{checked:e.is_invisible,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{is_invisible:e.target.checked}):n}));ie(n)},children:(0,q.jsxs)("span",{className:"font14",children:["对学员不可见",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(勾选后,预期输出对学员始终不可见)"})]})})]}),(0,q.jsxs)("div",{children:[(0,q.jsx)("span",{className:"font14 mr20",children:"特殊判定:"}),(0,q.jsx)(N.Z,{checked:e.last_match_rule,onChange:function(e){var n=re.map((function(n,s){return s===t?u()(u()({},n),{},{last_match_rule:e.target.checked}):n}));ie(n)},children:(0,q.jsxs)("span",{className:"font14",children:["末尾匹配",(0,q.jsx)("span",{className:"font12 c-light-black",children:"(实际输出与预期输出最后一行相同即可通关)"})]})})]})]},t)})),!W.is_file&&(0,q.jsxs)("div",{children:[(0,q.jsx)(C.ZP,{type:"primary",ghost:!0,className:"mt10",onClick:function(){var e=[].concat(a()(re),[{hidden:0,input:"",output:"",score:0}]);V.getFieldValue("test_set_average")?Je(e):ie(e)},children:"新增测试集"}),(0,q.jsx)("span",{className:" ml20 mt10 font12 c-light-black",children:"温馨提示:公开测试集和隐藏测试集结合使用,可以降低作弊的机率;隐藏测试集,在“提交评测”时也将被系统自动检测"})]})]})})]}),(0,q.jsx)(M,{fileType:oe,path:null==W?void 0:W[oe],onFinish:function(e){return t=e,n=i()({},oe,t),V.setFieldsValue(n),void O(u()(u()({},W),n));var t,n}})]},1),(0,q.jsx)(E.t,{onOk:function(){return V.submit()},className:"customFixedButton",onCancel:function(){var e,t=function(){_.history.push("/shixuns/".concat(Ce.id,"/challenges")),p({type:"practiceSetting/setSideBarTabs",payload:{confirmLeave:!1}})};null!=g&&null!==(e=g.sideBar)&&void 0!==e&&e.confirmLeave?y.Z.confirm({title:"离开此页提示",content:"系统可能不会保存您所做的更改。",okText:"离开",cancelText:"取消",onOk:function(){t()}}):t()}},2),(0,q.jsx)(G.Z,{loading:xe}),(0,q.jsx)(A.ZP,{rootIdentifier:null==d||null===(o=d.detail)||void 0===o?void 0:o.root_identifier,visible:Ze,onClose:function(){return Ne(!1)},onOK:function(e){if(null!=e&&e.length){if(V.setFieldsValue({is_file:null==e?void 0:e[0].is_file}),O(u()(u()({},W),{},{is_file:null==e?void 0:e[0].is_file})),null!=e&&e[0].is_file){var t=Y.concat(e.map((function(e){return u()(u()({},e),{},{hidden:0,is_invisible:!1,last_match_rule:!1})})));W.test_set_average?Ue(t):Q(t)}if(null==e||!e[0].is_file){var n=null==re?void 0:re.filter((function(e){return e.input||e.output})).concat(e);W.test_set_average?Je(n):ie(n)}}},multiple:!0,defaultMultipleValue:null==W?void 0:W.is_file})]})}))},43675:function(e,t,n){n.d(t,{Z:function(){return l}});var s=n(59301),a=n(43418),r=n(80608),i=n(37712),l=(0,r.connect)((function(e){return{globalSetting:e.globalSetting,practiceSetting:e.practiceSetting}}))((function(e){var t=e.activeIndex,n=e.isEdit,l=void 0===n||n,c=e.dispatch,o=e.practiceSetting,u=(0,r.useParams)(),d=u.id,h=u.challengesId,p=(0,s.useMemo)((function(){return[{name:"本关任务",url:"/shixuns/".concat(d,"/edit/").concat(h,"/editcheckpoint")},{name:"评测设置",url:"/shixuns/".concat(d,"/edit/").concat(h,"/tab=2")},{name:"参考答案",url:"/shixuns/".concat(d,"/edit/").concat(h,"/tab=3")},{name:"关卡排行榜",url:"/shixuns/".concat(d,"/edit/").concat(h,"/tab=4")}]}),[d,h]);return(0,i.jsx)("ul",{className:"challenge-nav",children:l?p.map((function(e,n){return t===n?(0,i.jsxs)("li",{children:[" ",(0,i.jsx)("a",{className:"active",children:e.name})," "]},e.url):(0,i.jsxs)("li",{children:[" ",(0,i.jsx)("a",{onClick:function(){return t=e.url,s=function(){r.history.push(t),c({type:"practiceSetting/setSideBarTabs",payload:{confirmLeave:!1}})},void(null!=o&&null!==(n=o.sideBar)&&void 0!==n&&n.confirmLeave?a.Z.confirm({title:"离开此页提示",content:"系统可能不会保存您所做的更改。",okText:"离开",cancelText:"取消",onOk:function(){s()}}):s());var t,n,s},children:e.name})," "]},e.url)})):(0,i.jsxs)("li",{children:[" ",(0,i.jsx)("a",{className:"active",children:p[0].name})," "]},p[0].url)})}))},83795:function(e,t,n){n.d(t,{Z:function(){return i}});n(59301);var s=n(71418),a="loading___lueiN",r=n(37712),i=function(e){return e.loading?(0,r.jsx)("div",{className:a,children:(0,r.jsx)(s.Z,{})}):(0,r.jsx)(r.Fragment,{})}}}]);