studyStudent.vue 216 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043
  1. <template>
  2. <div class="pb_content" style="overflow: unset">
  3. <div class="pb_content_body" style="display: flex; height: 900px; position: relative">
  4. <div class="pb_left">
  5. <!-- <div class="courseTitle">{{ courseDetail.title }}</div> -->
  6. <el-tooltip class="courseTitle" effect="light" :content="courseDetail.title" placement="top">
  7. <div>{{ courseDetail.title }}</div>
  8. </el-tooltip>
  9. <div class="ml">目录</div>
  10. <div class="cru_selectBox">
  11. <div v-for="(item, stageIndex) in navList" :key="stageIndex">
  12. <div class="blue_box_one" @click="get(stageIndex)">
  13. <div>第{{ stageIndex + 1 }}阶段</div>
  14. <div>{{ item.dyName }}</div>
  15. </div>
  16. <div class="twoChild" :class="{ navActive: item.isOpen }">
  17. <div class="navChild" v-for="(nav, navIndex) in item.task" :key="navIndex">
  18. <div class="navTask" @click="openTask(stageIndex, navIndex, nav.id)" :class="{
  19. openTaskActive:
  20. navIndex == taskCount &&
  21. nav.id == navId &&
  22. stageIndex == courseType,
  23. }">
  24. <div class="vedioNav" :class="{
  25. isClick:
  26. navIndex == taskCount &&
  27. nav.id == navId &&
  28. stageIndex == courseType,
  29. }" style="margin: 0">
  30. 任务{{ navIndex + 1 }}
  31. </div>
  32. <el-tooltip class="navTaskname item" effect="light" :content="nav.taskName" placement="top">
  33. <div>{{ nav.taskName }}</div>
  34. </el-tooltip>
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="body_student">
  42. <div class="new_top" style="
  43. position: fixed;
  44. top: 0;
  45. left: 20.7%;
  46. width: 80%;
  47. z-index: 999;
  48. box-shadow: 0px 9px 0 0 #f2f2f2;
  49. ">
  50. <div class="courseIndex">
  51. <div>第{{ courseType - 0 + 1 }}阶段</div>
  52. <el-tooltip effect="light" :content="chapInfoList[courseType].dyName" placement="top">
  53. <div>{{ chapInfoList[courseType].dyName }}</div>
  54. </el-tooltip>
  55. <div>任务{{ taskCount + 1 }}</div>
  56. </div>
  57. <div class="btnAll">
  58. <div class="returnBtn" @click="nextOrpreSteps(0)">上一步</div>
  59. <div class="returnBtn" @click="nextOrpreSteps(1)">下一步</div>
  60. <div class="returnBtn" @click="allScrell">全屏</div>
  61. <div class="returnBtn" @click="juriVisible = true" v-if="tType == 1">
  62. 权限
  63. </div>
  64. <div class="returnBtn" style="background: #225bc7" @click.stop="
  65. goTo(
  66. '/courseDetail?userid=' +
  67. userid +
  68. '&oid=' +
  69. oid +
  70. '&org=' +
  71. org +
  72. '&cid=' +
  73. classId +
  74. '&courseId=' +
  75. id +
  76. '&tType=' +
  77. tType +
  78. '&screenType=' +
  79. screenType
  80. )
  81. ">
  82. 返回
  83. </div>
  84. </div>
  85. </div>
  86. <!-- v-for="(task, index) in chapInfoList[courseType].chapterInfo[0]
  87. .taskJson"
  88. :key="index"-->
  89. <div class="isNoMessage" v-if="
  90. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  91. .chapterData.length == 0 &&
  92. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  93. .toolChoose[0].tool.length == 0 &&
  94. chapInfoList[courseType].chapterInfo[0].video.length == 0 &&
  95. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  96. .taskDetail == '' &&
  97. !chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].eList
  98. ">
  99. <img src="../assets/icon/isNoMessage.png" alt />
  100. </div>
  101. <div class="study_top">
  102. <div class="vedioBox" v-if="
  103. vedio[taskCount].length > 0 ||
  104. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  105. .taskDetail != '' ||
  106. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  107. .chapterData.length > 0
  108. ">
  109. <div class="checkbox">
  110. <div class="check" style="font-size: 25px" :id="
  111. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].id
  112. ">
  113. <!-- {{ taskCount + 1 }}
  114. {{ chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].task }}-->
  115. 学一学
  116. </div>
  117. </div>
  118. <div class="student_head" v-if="
  119. vedio[taskCount].length > 0 ||
  120. textList[taskCount].length > 0 ||
  121. file[taskCount].length > 0 ||
  122. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  123. .taskDetail != ''
  124. ">
  125. <div class="taskBox">
  126. <div style="
  127. display: flex;
  128. flex-wrap: nowrap;
  129. flex-direction: column;
  130. position: relative;
  131. ">
  132. <div style="padding: 15px 0 15px 20px" v-if="
  133. chapInfoList[courseType].chapterInfo[0].taskJson[
  134. taskCount
  135. ].taskDetail != ''
  136. " v-html="
  137. chapInfoList[courseType].chapterInfo[0].taskJson[
  138. taskCount
  139. ].taskDetail
  140. ? chapInfoList[courseType].chapterInfo[0].taskJson[
  141. taskCount
  142. ].taskDetail
  143. : '暂无描述'
  144. ">
  145. <!-- <span style="color: #cbcbcb">任务描述</span> -->
  146. <!-- {{
  147. chapInfoList[courseType].chapterInfo[0].taskJson[
  148. taskCount
  149. ].taskDetail
  150. ? chapInfoList[courseType].chapterInfo[0].taskJson[
  151. taskCount
  152. ].taskDetail
  153. : "暂无描述"
  154. }}-->
  155. </div>
  156. </div>
  157. </div>
  158. <div class="vedioTaskBox">
  159. <div class="box_course" v-if="
  160. vedio[taskCount].length > 0 ||
  161. textList[taskCount].length > 0 ||
  162. file[taskCount].length > 0
  163. ">
  164. <div class="wheel" v-if="
  165. vedio.length &&
  166. vedio[taskCount] &&
  167. vedio[taskCount].length > 0 &&
  168. showType == 0
  169. ">
  170. <div class="workd_media" style="height: 100%">
  171. <video-player class="video-player vjs-custom-skin" :playsinline="true"
  172. :options="playerO[taskCount]" @play="onPlayerPlay($event)"
  173. style="width: 90%; height: 100%; margin: 0 0 0 30px"></video-player>
  174. </div>
  175. </div>
  176. <div class="wheel" v-if="showType == 1" style="
  177. box-shadow: 0 0 6px 1px #f2f2f2;
  178. width: 95%;
  179. margin: 0 auto;
  180. background: #f1f1f1;
  181. ">
  182. <div class="title">查看文档</div>
  183. <el-form class="textBox">
  184. <el-form-item class="textTitle">
  185. <div style="
  186. font-size: 22px;
  187. max-height: 100px;
  188. overflow: auto;
  189. ">
  190. {{ text.name }}
  191. </div>
  192. </el-form-item>
  193. <!-- <div style="color: #918f8f; width: 85%">文档内容</div> -->
  194. <div v-html="text.url" class="textContent"></div>
  195. </el-form>
  196. </div>
  197. <div class="wheel" v-if="showType == 2" style="height: 650px; width: 95%; margin: 0 auto">
  198. <iframe style="width: 100%; height: 100%; border: none" :src="pptImgUrl1"></iframe>
  199. </div>
  200. <div class="wheel" v-if="showType == 3" style="height: 650px; width: 95%; margin: 0 auto">
  201. <!-- <iframe
  202. style="width: 100%; height: 100%; border: none"
  203. :src="pptImgUrl1"
  204. ></iframe>-->
  205. <pdf :pdfUrl="pptImgUrl1" style="width: 100%; height: 100%; overflow: auto"></pdf>
  206. </div>
  207. <div class="wheel" v-if="showType == 4" style="height: 650px; width: 95%; margin: 0 auto">
  208. <el-image :src="pptImgUrl1" fit="cover" style="width: 100%"></el-image>
  209. </div>
  210. </div>
  211. <!-- :class="
  212. vedio[taskCount].length == 0 && file[taskCount].length == 0
  213. ? 'listNoVedio'
  214. : ''
  215. "-->
  216. <div class="vedioList" :class="
  217. vedio[taskCount].length == 0 &&
  218. file[taskCount].length == 0 &&
  219. textList[taskCount].length == 0
  220. ? 'listNoVedio'
  221. : ''
  222. " v-if="
  223. (vedio.length &&
  224. vedio[taskCount] &&
  225. vedio[taskCount].length > 0) ||
  226. (textList.length &&
  227. textList[taskCount] &&
  228. textList[taskCount].length > 0) ||
  229. (lineList.length &&
  230. lineList[taskCount] &&
  231. lineList[taskCount].length > 0) ||
  232. (file.length &&
  233. file[taskCount] &&
  234. file[taskCount].length > 0)
  235. ">
  236. <div class="navTitile">内容列表:</div>
  237. <div class="navBox">
  238. <div v-show="
  239. vedio.length &&
  240. vedio[taskCount] &&
  241. vedio[taskCount].length > 0
  242. ">
  243. <!-- <div
  244. class="vedioNav"
  245. style="
  246. width: 80px;
  247. min-width: 80px;
  248. height: 30px;
  249. line-height: 36px;
  250. font-size: 16px;
  251. border-radius: 10px;
  252. "
  253. >
  254. 视频
  255. </div> -->
  256. <div class="vedioTimeBox" v-for="(media, vedioIndex) in vedio[taskCount]" :key="vedioIndex + '1'"
  257. @click="lookVedio(media.url, vedioIndex)">
  258. <!-- <div class="media" style="width: 90px; height: 60px; position: relative">
  259. <img style="height: 90px; width: 160px" :src="
  260. media.cover != null && media.cover != ''
  261. ? JSON.parse(media.cover).length > 0
  262. ? JSON.parse(media.cover)[0].url
  263. : mr
  264. : mr
  265. " alt />
  266. </div> -->
  267. <!-- <div class="vedioTime">
  268. {{ vedioTime[vedioIndex] }}
  269. </div> -->
  270. <!-- <div class="vedioName">{{ media.name }}</div> -->
  271. <div class="vedioName" :class="
  272. isClickNav == 'video' + vedioIndex
  273. ? 'isClickNav'
  274. : ''
  275. ">
  276. {{ media.name }}
  277. </div>
  278. </div>
  279. </div>
  280. <div v-show="
  281. textList.length &&
  282. textList[taskCount] &&
  283. textList[taskCount].length > 0
  284. " class="newNav" v-for="(text, textIndex) in textList[taskCount]" :key="textIndex + '2'"
  285. @click="lookText(taskCount, textIndex)">
  286. <!-- <div
  287. class="vedioNav"
  288. style="
  289. width: 80px;
  290. min-width: 80px;
  291. height: 30px;
  292. line-height: 36px;
  293. font-size: 16px;
  294. border-radius: 10px;
  295. "
  296. >
  297. 文档
  298. </div> -->
  299. <div style="width: calc(100% - 0px)">
  300. <div class="navText" :class="
  301. isClickNav == 'text' + textIndex ? 'isClickNav' : ''
  302. ">
  303. {{
  304. textList[taskCount].length > 0 ? text.name : ""
  305. }}.doc
  306. </div>
  307. </div>
  308. </div>
  309. <!-- <div
  310. v-show="
  311. chapInfoList.length &&
  312. chapToolList[taskCount] &&
  313. chapToolList[taskCount].length > 0
  314. "
  315. class="newNav"
  316. v-for="(tools, toolsIndex) in chapToolList[taskCount]"
  317. :key="toolsIndex + '3'"
  318. >
  319. <div class="vedioNav">工具</div>
  320. <div>
  321. <div
  322. class="navText"
  323. @click="lookTools(taskCount, toolsIndex)"
  324. >
  325. {{
  326. chapToolList[taskCount].length > 0 ? tools.name : ""
  327. }}
  328. </div>
  329. </div>
  330. </div>-->
  331. <div v-show="
  332. lineList.length &&
  333. lineList[taskCount] &&
  334. lineList[taskCount].length > 0
  335. " class="newNav" v-for="(lines, lineIndex) in lineList[taskCount]" :key="lineIndex + '4'"
  336. @click="doUrl(lines.url, lineIndex)">
  337. <!-- <div
  338. class="vedioNav"
  339. style="
  340. width: 80px;
  341. min-width: 80px;
  342. height: 30px;
  343. line-height: 36px;
  344. font-size: 16px;
  345. border-radius: 10px;
  346. "
  347. >
  348. 链接
  349. </div> -->
  350. <div style="width: calc(100% - 0px)">
  351. <div class="navText" :class="isClickNav == lineIndex ? 'isClickNav' : ''">
  352. <a style="text-decoration: none; color: #000" target="_Blank">{{ lines.url }}</a>
  353. </div>
  354. </div>
  355. </div>
  356. <div class="newNav" v-show="
  357. file.length &&
  358. file[taskCount] &&
  359. file[taskCount].length > 0
  360. " v-for="(f, fileIndex) in file[taskCount]" :key="fileIndex" @click="downFile(f, fileIndex)">
  361. <!-- <div
  362. class="vedioNav"
  363. style="
  364. width: 80px;
  365. min-width: 80px;
  366. height: 30px;
  367. line-height: 36px;
  368. font-size: 16px;
  369. border-radius: 10px;
  370. "
  371. >
  372. 文档
  373. </div> -->
  374. <div style="width: calc(100% - 0px)">
  375. <div class="navText" :class="
  376. isClickNav == 'word' + fileIndex ? 'isClickNav' : ''
  377. ">
  378. {{ f.name }}
  379. </div>
  380. </div>
  381. </div>
  382. </div>
  383. </div>
  384. </div>
  385. <div style="padding: 10px 30px 0" v-if="showType == 2 || showType == 3">
  386. <el-button type="primary" @click="checkFileFull(showType, pptImgUrl1)">全屏查看</el-button>
  387. </div>
  388. <div style="padding: 0px 30px" v-if="showType == 1">
  389. <el-button type="primary" @click="checkFileFull(showType, text)">全屏查看</el-button>
  390. </div>
  391. </div>
  392. </div>
  393. <div class="student_body">
  394. <!-- <div
  395. class="vedioBox"
  396. v-if="
  397. file.length && file[taskCount] && file[taskCount].length > 0
  398. "
  399. >
  400. <div class="queTop">
  401. <div class="question" style="width: 30px; margin-top: 5px">
  402. <img src="../assets/icon/fileIcon.png" alt />
  403. </div>
  404. <div class="queTitle">
  405. <div>附件</div>
  406. </div>
  407. </div>
  408. <div class="filebox" style="width: 100%">
  409. <div
  410. class="file"
  411. v-for="(f, fileIndex) in file[taskCount]"
  412. :key="fileIndex"
  413. @click="downFile(f, fileIndex)"
  414. >
  415. <img :src="require('../assets/file.png')" alt />
  416. <div>{{ f.name }}</div>
  417. </div>
  418. </div>
  419. <div class="upFile" v-if="type == 3">提交</div>
  420. </div>-->
  421. <div class="vedioBox" v-if="
  422. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  423. .toolChoose[0].tool &&
  424. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  425. .toolChoose[0].tool.length &&
  426. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  427. .toolChoose[0].tool.length > 0
  428. ">
  429. <div class="queTop" style="
  430. font-size: 25px;
  431. padding: 15px 0 15px 30px;
  432. font-weight: bold;
  433. ">
  434. <!-- <div class="question" style="width: 30px">
  435. <img src="../assets/icon/toolIcon.png" alt />
  436. </div>
  437. <div class="queTitle">
  438. <div>工具</div>
  439. </div>-->
  440. 练一练
  441. </div>
  442. <div class="toolHeng2" style="position: relative">
  443. <div class="filebox" style="flex-wrap: nowrap; margin: 0 20px" v-for="(tool, toolIndex) in chapInfoList[courseType]
  444. .chapterInfo[0].taskJson[taskCount].toolChoose" :key="toolIndex">
  445. <div class="bzBox">
  446. <div></div>
  447. <div>步骤{{ toolIndex + 1 }}</div>
  448. </div>
  449. <div class="toolBox">
  450. <div>
  451. <!-- v-for="(itemTool, indexTool) in toolTypeList"
  452. :key="indexTool"-->
  453. <!-- <div class="iframeBox">
  454. <div
  455. class="addPoint isBorder"
  456. v-for="(tooC, toolCIndex) in tool.tool"
  457. :key="toolCIndex"
  458. >
  459. <div v-if="tooC == 1" style="border: 1px soild #ccc">
  460. <div
  461. class="iframeName"
  462. >
  463. 电子白板
  464. </div>
  465. <iframe
  466. src="https://iwb.cocorobo.cn/"
  467. ref="whiteBoard"
  468. ></iframe>
  469. </div>
  470. </div>
  471. </div>-->
  472. <div class="noiframeBox">
  473. <div class="addPoint" v-for="(tooC, toolCIndex) in tool.tool" :key="toolCIndex">
  474. <div v-if="tooC == 1">
  475. <img src="../assets/icon/secondToolList/whiteBoard.png" alt
  476. @click="addTools(tooC, toolIndex, taskCount)" />
  477. <div style="margin: 5px 0">电子白板</div>
  478. </div>
  479. <div v-if="tooC == 3">
  480. <img src="../assets/icon/secondToolList/mindMapping.png" alt
  481. @click="addTools(tooC, toolIndex, taskCount)" />
  482. <div style="margin: 5px 0">思维导图</div>
  483. </div>
  484. <div v-if="tooC == 6">
  485. <img src="../assets/icon/secondToolList/doc.png" alt
  486. @click="addTools(tooC, toolIndex, taskCount)" />
  487. <div style="margin: 5px 0">协同文档</div>
  488. </div>
  489. <div v-if="tooC == 7">
  490. <img src="../assets/icon/secondToolList/mindNetwork.png" alt
  491. @click="addTools(tooC, toolIndex, taskCount)" />
  492. <div style="margin: 5px 0">思维网格</div>
  493. </div>
  494. <div v-if="tooC == 8">
  495. <img src="../assets/icon/secondToolList/library.png" alt
  496. @click="addTools(tooC, toolIndex, taskCount)" />
  497. <div style="margin: 5px 0">素材库</div>
  498. </div>
  499. <div v-if="tooC == 17">
  500. <img src="../assets/icon/secondToolList/library.png" alt
  501. @click="addTools(tooC, toolIndex, taskCount)" />
  502. <div style="margin: 5px 0">学习资料</div>
  503. </div>
  504. <div v-if="tooC == 2">
  505. <img @click="addTools(tooC, toolIndex, taskCount)"
  506. src="../assets/icon/secondToolList/note.png" alt />
  507. <div style="margin: 5px 0">便签</div>
  508. </div>
  509. <div v-if="tooC == 4">
  510. <img @click="addTools(tooC, toolIndex, taskCount)"
  511. src="../assets/icon/thirdToolList/ask.png" alt />
  512. <div style="margin: 5px 0">选择题</div>
  513. </div>
  514. <!-- <div v-if="tooC == 5">
  515. <img
  516. @click="addTools(tooC, toolIndex, taskCount)"
  517. src="../assets/icon/thirdToolList/score.png"
  518. alt
  519. />
  520. <div style="margin: 5px 0">量规评分</div>
  521. </div> -->
  522. <div v-if="tooC == 10">
  523. <img @click="addTools(tooC, toolIndex, taskCount)"
  524. src="../assets/icon/thirdToolList/time.png" alt />
  525. <div style="margin: 5px 0">倒计时</div>
  526. </div>
  527. <div v-if="tooC == 15">
  528. <img @click="addTools(tooC, toolIndex, taskCount)"
  529. src="../assets/icon/thirdToolList/answer.png" alt />
  530. <div style="margin: 5px 0">问答工具</div>
  531. </div>
  532. <div v-if="tooC == 26">
  533. <img @click="addTools(tooC, toolIndex, taskCount)"
  534. src="../assets/icon/thirdToolList/courseDesign.png" alt />
  535. <div style="margin: 5px 0">课程设计</div>
  536. </div>
  537. <div v-if="tooC == 18">
  538. <img @click="addTools(tooC, toolIndex, taskCount)"
  539. src="../assets/icon/thirdToolList/trainPlatform.png" alt />
  540. <div style="margin: 5px 0">训练服务器</div>
  541. </div>
  542. <div v-if="tooC == 16">
  543. <img @click="addTools(tooC, toolIndex, taskCount)"
  544. src="../assets/icon/thirdToolList/work.png" alt />
  545. <div style="margin: 5px 0">作业提交</div>
  546. </div>
  547. <div v-if="tooC == 21">
  548. <img @click="addTools(tooC, toolIndex, taskCount)"
  549. src="../assets/icon/fourthToolList/program.png" alt />
  550. <div style="margin: 5px 0">编程平台</div>
  551. </div>
  552. <div v-if="tooC == 22">
  553. <img @click="addTools(tooC, toolIndex, taskCount)"
  554. src="../assets/icon/fourthToolList/program.png" alt />
  555. <div style="margin: 5px 0">AI体验</div>
  556. </div>
  557. <div v-if="tooC == 23">
  558. <img @click="addTools(tooC, toolIndex, taskCount)"
  559. src="../assets/icon/fourthToolList/program.png" alt />
  560. <div style="margin: 5px 0">python</div>
  561. </div>
  562. <div v-if="tooC == 24">
  563. <img @click="addTools(tooC, toolIndex, taskCount)"
  564. src="../assets/icon/fourthToolList/program.png" alt />
  565. <div style="margin: 5px 0">AI平台</div>
  566. </div>
  567. <div v-if="tooC == 25">
  568. <img @click="addTools(tooC, toolIndex, taskCount)"
  569. src="../assets/icon/thirdToolList/evalua.png" alt />
  570. <div style="margin: 5px 0">目标管理</div>
  571. </div>
  572. <div v-if="tooC == 31">
  573. <img @click="addTools(tooC, toolIndex, taskCount)"
  574. src="../assets/icon/secondToolList/networkPanel.png" alt />
  575. <div style="margin: 5px 0">数学画板</div>
  576. </div>
  577. <div v-if="tooC == 28">
  578. <img @click="addTools(tooC, toolIndex, taskCount)"
  579. src="../assets/icon/secondToolList/translation.png" alt />
  580. <div style="margin: 5px 0">翻译</div>
  581. </div>
  582. <div v-if="tooC == 37">
  583. <img @click="addTools(tooC, toolIndex, taskCount)"
  584. src="../assets/icon/secondToolList/mohe.png" alt />
  585. <div style="margin: 5px 0">魔盒识字</div>
  586. </div>
  587. <div v-if="tooC == 38">
  588. <img @click="addTools(tooC, toolIndex, taskCount)"
  589. src="../assets/icon/secondToolList/24game.png" alt />
  590. <div style="margin: 5px 0">24点</div>
  591. </div>
  592. <div v-if="tooC == 39">
  593. <img @click="addTools(tooC, toolIndex, taskCount)"
  594. src="../assets/icon/secondToolList/GeoGebra.png" alt />
  595. <div style="margin: 5px 0">GeoGebra</div>
  596. </div>
  597. <div v-if="tooC == 32">
  598. <img @click="addTools(tooC, toolIndex, taskCount)"
  599. src="../assets/icon/thirdToolList/code.png" alt />
  600. <div style="margin: 5px 0">源码编辑</div>
  601. </div>
  602. <div v-if="tooC == 40">
  603. <img @click="addTools(tooC, toolIndex, taskCount)"
  604. src="../assets/icon/secondToolList/eval.png" alt />
  605. <div style="margin: 5px 0">学生评价</div>
  606. </div>
  607. <div v-if="tooC == 41">
  608. <img @click="addTools(tooC, toolIndex, taskCount)"
  609. src="../assets/icon/thirdToolList/select.png" alt />
  610. <div style="margin: 5px 0">选择填空</div>
  611. </div>
  612. </div>
  613. </div>
  614. </div>
  615. <div class="tooldetail" v-if="tool.toolDetail != ''">
  616. <!-- <div class="toolTitle">工具描述</div> -->
  617. <div v-html="contentConvent(tool.toolDetail)">
  618. <!-- {{ contentConvent(tool.toolDetail) }} -->
  619. </div>
  620. </div>
  621. </div>
  622. <div v-if="tType && tType == 2 && tool.tool.indexOf(16) != -1" class="worksBox">
  623. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  624. <span>作业预览</span>
  625. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  626. </div>
  627. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  628. <div class="works" style="
  629. width: 200px;
  630. height: 140px;
  631. margin: 10px 10px 10px 0;
  632. box-shadow: 0 0 6px 1px #dfdada;
  633. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  634. <div class="workImg" v-if="w.type == 0">
  635. <img :src="w.works" @click="previewImg(w.works)" alt />
  636. </div>
  637. <div class="workImg" v-if="w.type == 1">
  638. <img :src="word" @click="openFile(w.works)" alt />
  639. </div>
  640. <div class="workImg" v-if="w.type == 3">
  641. <img style="cursor: pointer" :src="video" @click="openVideo(w.works)" alt />
  642. </div>
  643. <div class="worksName">
  644. <div>{{ w.sName }}</div>
  645. </div>
  646. </div>
  647. </div>
  648. </div>
  649. <div v-if="tType && tType == 2 && tool.tool.indexOf(4) != -1" class="worksBox">
  650. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  651. <span>作业预览</span>
  652. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  653. </div>
  654. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  655. <div class="works" style="
  656. width: 200px;
  657. height: 140px;
  658. border-radius: 10px;
  659. box-shadow: 0 0 6px 1px #dfdada;
  660. overflow: hidden;
  661. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  662. <div class="workImg">
  663. <img src="../assets/icon/works/noImg.png" @click="
  664. openTools(
  665. 4,
  666. toolIndex,
  667. taskCount,
  668. w.works,
  669. w.sName
  670. )
  671. " alt />
  672. </div>
  673. <div class="worksName">
  674. <div>{{ w.sName }}</div>
  675. <div>{{ w.time }}</div>
  676. </div>
  677. </div>
  678. </div>
  679. </div>
  680. <div v-if="tType && tType == 2 && tool.tool.indexOf(15) != -1" class="worksBox">
  681. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  682. <span>作业预览</span>
  683. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  684. </div>
  685. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  686. <div class="works" v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  687. <div class="workImg">
  688. <!-- <img
  689. src="../assets/icon/works/noImg.png"
  690. @click="openTools(15, toolIndex, taskCount, w.works)"
  691. alt=""
  692. />-->
  693. <div class="answerBg">
  694. <div>{{ w.sName }}</div>
  695. <el-tooltip class="item" effect="light" :content="JSON.parse(w.works)[0].answer"
  696. placement="top">
  697. <div class="answerContent">
  698. {{ JSON.parse(w.works)[0].answer }}
  699. </div>
  700. </el-tooltip>
  701. </div>
  702. </div>
  703. </div>
  704. </div>
  705. </div>
  706. <div v-if="tType && tType == 2 && tool.tool.indexOf(1) != -1" class="worksBox">
  707. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  708. <span>作业预览</span>
  709. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  710. </div>
  711. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  712. <div class="works" style="
  713. width: 200px;
  714. height: 140px;
  715. margin: 10px 10px 10px 0;
  716. box-shadow: 0 0 6px 1px #dfdada;
  717. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  718. <div class="workImg">
  719. <img :src="w.works" @click="previewImg(w.works)" alt />
  720. </div>
  721. <div class="worksName">
  722. <div>{{ w.sName }}</div>
  723. </div>
  724. </div>
  725. </div>
  726. </div>
  727. <div v-if="tType && tType == 2 && tool.tool.indexOf(3) != -1" class="worksBox">
  728. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  729. <span>作业预览</span>
  730. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  731. </div>
  732. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  733. <div class="works" style="
  734. width: 200px;
  735. height: 140px;
  736. margin: 10px 10px 10px 0;
  737. box-shadow: 0 0 6px 1px #dfdada;
  738. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  739. <div class="workImg">
  740. <img :src="w.works" @click="previewImg(w.works)" alt />
  741. </div>
  742. <div class="worksName">
  743. <div>{{ w.sName }}</div>
  744. </div>
  745. </div>
  746. </div>
  747. </div>
  748. <div v-if="tType && tType == 2 && tool.tool.indexOf(6) != -1" class="worksBox">
  749. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  750. <span>作业预览</span>
  751. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  752. </div>
  753. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  754. <div class="works" style="
  755. width: 200px;
  756. height: 140px;
  757. margin: 10px 10px 10px 0;
  758. box-shadow: 0 0 6px 1px #dfdada;
  759. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  760. <div class="workImg">
  761. <img :src="w.works" @click="previewImg(w.works)" alt />
  762. </div>
  763. <div class="worksName">
  764. <div>{{ w.sName }}</div>
  765. </div>
  766. </div>
  767. </div>
  768. </div>
  769. <div v-if="tType && tType == 2 && tool.tool.indexOf(7) != -1" class="worksBox">
  770. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  771. <span>作业预览</span>
  772. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  773. </div>
  774. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  775. <div class="works" style="
  776. width: 200px;
  777. height: 140px;
  778. margin: 10px 10px 10px 0;
  779. box-shadow: 0 0 6px 1px #dfdada;
  780. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  781. <div class="workImg">
  782. <img :src="w.works" @click="previewImg(w.works)" alt />
  783. </div>
  784. <div class="worksName">
  785. <div>{{ w.sName }}</div>
  786. </div>
  787. </div>
  788. </div>
  789. </div>
  790. <div v-if="tType && tType == 2 && tool.tool.indexOf(26) != -1" class="worksBox">
  791. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  792. <span>作业预览</span>
  793. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  794. </div>
  795. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  796. <div class="works" style="
  797. width: 200px;
  798. height: 140px;
  799. margin: 10px 10px 10px 0;
  800. box-shadow: 0 0 6px 1px #dfdada;
  801. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  802. <div class="workImg">
  803. <img :src="w.works" @click="previewImg(w.works)" alt />
  804. </div>
  805. <div class="worksName">
  806. <div>{{ w.sName }}</div>
  807. </div>
  808. </div>
  809. </div>
  810. </div>
  811. <div v-if="
  812. tType &&
  813. ((tType == 2 && sIsOpen == true) ||
  814. tType == 1 ||
  815. tType == 4) &&
  816. tool.tool.indexOf(16) != -1
  817. " class="worksBox">
  818. <div class="zuoyeYulan" v-if="
  819. worksStudent.length &&
  820. worksStudent[toolIndex].length > 0
  821. ">
  822. <span>作业预览</span>
  823. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  824. </div>
  825. <div class="worksDetailBox" v-if="
  826. worksStudent.length &&
  827. worksStudent[toolIndex].length > 0
  828. ">
  829. <div class="works" style="
  830. width: 200px;
  831. height: 140px;
  832. margin: 10px 10px 10px 0;
  833. border-radius: 15px;
  834. box-shadow: 0 0 6px 1px #dfdada;
  835. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex"
  836. :class="w.type == 1 ? 'isTypeOne' : ''">
  837. <div class="workImg" v-if="w.type == 0">
  838. <img :src="w.works" @click="previewImg(w.works)" alt />
  839. </div>
  840. <div class="workImg" v-if="w.type == 1">
  841. <img :src="word" @click="openFile(w.works)" alt />
  842. </div>
  843. <div class="workImg" v-if="w.type == 3">
  844. <img style="cursor: pointer" :src="video" @click="openVideo(w.works)" alt />
  845. </div>
  846. <div class="comment" style="min-width: 200px">
  847. <div class="worksName">
  848. <div>{{ w.sName }}</div>
  849. </div>
  850. <div class="commentList">
  851. <div class="commentList">
  852. <div class="commentImg" @click="
  853. isLikes(w.wid, userid, 1, null, w.isLikes)
  854. ">
  855. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  856. </div>
  857. <div>{{ w.likesCount }}</div>
  858. </div>
  859. <div class="commentList" style="margin-right: 15px">
  860. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  861. <img src="../assets/icon/comment/comment.png" alt="" />
  862. </div>
  863. <div>{{ w.commentCount }}</div>
  864. </div>
  865. </div>
  866. </div>
  867. </div>
  868. </div>
  869. <div style="font-size: 18px">未提交</div>
  870. <div class="noWorksS">
  871. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  872. {{ s.student }}
  873. </div>
  874. </div>
  875. </div>
  876. <div v-if="
  877. tType &&
  878. ((tType == 2 && sIsOpen == true) ||
  879. tType == 1 ||
  880. tType == 4) &&
  881. tool.tool.indexOf(4) != -1 &&
  882. (tool.askJson[0].answer ||
  883. tool.askJson[0].answer === 0) &&
  884. checkJson[toolIndex].length
  885. " class="xuan_right_box">
  886. <div class="tool_right_box" v-for="(item, index) in tool.askJson" :key="index">
  887. <div>
  888. <span>{{ index + 1 + "、" + item.askstitle }}</span>
  889. </div>
  890. <div class="right_box_xuan" v-for="(item1, checkIndex) in item.askItem" :key="checkIndex"
  891. v-if="item.answer == checkIndex">
  892. <span>正确率</span>
  893. <span>{{
  894. (checkJson[toolIndex][index].checkPerent[checkIndex]
  895. ? checkJson[toolIndex][index].checkPerent[
  896. checkIndex
  897. ]
  898. : 0) + "%"
  899. }}</span>
  900. </div>
  901. </div>
  902. </div>
  903. <div v-if="
  904. tType &&
  905. ((tType == 2 && sIsOpen == true) ||
  906. tType == 1 ||
  907. tType == 4) &&
  908. tool.tool.indexOf(4) != -1
  909. " class="worksBox">
  910. <div class="zuoyeYulan" v-if="
  911. worksStudent.length &&
  912. worksStudent[toolIndex].length > 0
  913. ">
  914. <span>作业预览</span>
  915. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  916. </div>
  917. <div>
  918. <div class="worksDetailBox" v-if="
  919. worksStudent.length &&
  920. worksStudent[toolIndex].length > 0
  921. ">
  922. <div class="works" style="
  923. width: 200px;
  924. height: 140px;
  925. border-radius: 10px;
  926. box-shadow: 0 0 6px 1px #dfdada;
  927. overflow: hidden;
  928. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  929. <!-- @click="previewImg(w.works)" -->
  930. <div class="workImg">
  931. <img src="../assets/icon/works/noImg.png" @click="
  932. openTools(
  933. 4,
  934. toolIndex,
  935. taskCount,
  936. w.works,
  937. w.sName
  938. )
  939. " alt />
  940. </div>
  941. <div class="worksName">
  942. <div>{{ w.sName }}</div>
  943. <div>{{ w.time }}</div>
  944. </div>
  945. </div>
  946. </div>
  947. </div>
  948. <div style="font-size: 18px">未提交</div>
  949. <div class="noWorksS">
  950. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  951. {{ s.student }}
  952. </div>
  953. </div>
  954. <AskStatic v-if="
  955. worksStudent.length &&
  956. worksStudent[toolIndex].length > 0
  957. " :askJSON="tool" :checkJson="checkJson[toolIndex]"></AskStatic>
  958. </div>
  959. <div v-if="
  960. tType &&
  961. ((tType == 2 && sIsOpen == true) ||
  962. tType == 1 ||
  963. tType == 4) &&
  964. tool.tool.indexOf(15) != -1
  965. " class="worksBox">
  966. <div class="zuoyeYulan" v-if="
  967. worksStudent.length &&
  968. worksStudent[toolIndex].length > 0
  969. ">
  970. <span>作业预览</span>
  971. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  972. </div>
  973. <div class="worksDetailBox" v-if="
  974. worksStudent.length &&
  975. worksStudent[toolIndex].length > 0
  976. ">
  977. <div class="works" v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  978. <div class="workImg" style="
  979. border-radius: 15px;
  980. box-shadow: #eee 0px 0px 5px 5px;
  981. ">
  982. <!-- <img
  983. src="../assets/icon/works/noImg.png"
  984. @click="openTools(15, toolIndex, taskCount, w.works)"
  985. alt=""
  986. />-->
  987. <div class="answerBg" style="border-radius: 15px 15px 0 0"
  988. @click="commentOther(w, toolIndex, wIndex)">
  989. <div>{{ w.sName }}</div>
  990. <el-tooltip class="item" effect="light" :content="JSON.parse(w.works)[0].answer"
  991. placement="top">
  992. <div class="answerContent">
  993. {{ JSON.parse(w.works)[0].answer }}
  994. </div>
  995. </el-tooltip>
  996. </div>
  997. <div class="comment">
  998. <div class="commentList">
  999. <div class="commentImg" @click="
  1000. isLikes(w.wid, userid, 1, null, w.isLikes)
  1001. ">
  1002. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1003. </div>
  1004. <div>{{ w.likesCount }}</div>
  1005. </div>
  1006. <div class="commentList" style="margin-right: 15px">
  1007. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1008. <img src="../assets/icon/comment/comment.png" alt="" />
  1009. </div>
  1010. <div>{{ w.commentCount }}</div>
  1011. </div>
  1012. </div>
  1013. </div>
  1014. </div>
  1015. </div>
  1016. <div style="font-size: 18px">未提交</div>
  1017. <div class="noWorksS">
  1018. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1019. {{ s.student }}
  1020. </div>
  1021. </div>
  1022. </div>
  1023. <div v-if="
  1024. tType &&
  1025. ((tType == 2 && sIsOpen == true) ||
  1026. tType == 1 ||
  1027. tType == 4) &&
  1028. tool.tool.indexOf(1) != -1
  1029. " class="worksBox">
  1030. <div class="zuoyeYulan" v-if="
  1031. worksStudent.length &&
  1032. worksStudent[toolIndex].length > 0
  1033. ">
  1034. <span>作业预览</span>
  1035. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1036. </div>
  1037. <div class="worksDetailBox" v-if="
  1038. worksStudent.length &&
  1039. worksStudent[toolIndex].length > 0
  1040. ">
  1041. <div class="works" style="
  1042. width: 200px;
  1043. height: 140px;
  1044. margin: 10px 10px 10px 0;
  1045. border-radius: 15px;
  1046. box-shadow: 0 0 6px 1px #dfdada;
  1047. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  1048. <!-- @click="previewImg(w.works)" -->
  1049. <div class="workImg">
  1050. <img :src="w.works" @click="previewImg(w.works)" alt />
  1051. </div>
  1052. <div class="comment" style="min-width: 200px">
  1053. <div class="worksName">
  1054. <div>{{ w.sName }}</div>
  1055. </div>
  1056. <div class="commentList">
  1057. <div class="commentList">
  1058. <div class="commentImg" @click="
  1059. isLikes(w.wid, userid, 1, null, w.isLikes)
  1060. ">
  1061. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1062. </div>
  1063. <div>{{ w.likesCount }}</div>
  1064. </div>
  1065. <div class="commentList" style="margin-right: 15px">
  1066. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1067. <img src="../assets/icon/comment/comment.png" alt="" />
  1068. </div>
  1069. <div>{{ w.commentCount }}</div>
  1070. </div>
  1071. </div>
  1072. </div>
  1073. </div>
  1074. </div>
  1075. <div style="font-size: 18px">未提交</div>
  1076. <div class="noWorksS">
  1077. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1078. {{ s.student }}
  1079. </div>
  1080. </div>
  1081. </div>
  1082. <div v-if="
  1083. tType &&
  1084. ((tType == 2 && sIsOpen == true) ||
  1085. tType == 1 ||
  1086. tType == 4) &&
  1087. tool.tool.indexOf(3) != -1
  1088. " class="worksBox">
  1089. <div class="zuoyeYulan" v-if="
  1090. worksStudent.length &&
  1091. worksStudent[toolIndex].length > 0
  1092. ">
  1093. <span>作业预览</span>
  1094. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1095. </div>
  1096. <div class="worksDetailBox" v-if="
  1097. worksStudent.length &&
  1098. worksStudent[toolIndex].length > 0
  1099. ">
  1100. <div class="works" style="
  1101. width: 200px;
  1102. height: 140px;
  1103. margin: 10px 10px 10px 0;
  1104. border-radius: 15px;
  1105. box-shadow: 0 0 6px 1px #dfdada;
  1106. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  1107. <!-- @click="previewImg(w.works)" -->
  1108. <div class="workImg">
  1109. <img :src="w.works" @click="previewImg(w.works)" alt />
  1110. </div>
  1111. <div class="comment" style="min-width: 200px">
  1112. <div class="worksName">
  1113. <div>{{ w.sName }}</div>
  1114. </div>
  1115. <div class="commentList">
  1116. <div class="commentList">
  1117. <div class="commentImg" @click="
  1118. isLikes(w.wid, userid, 1, null, w.isLikes)
  1119. ">
  1120. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1121. </div>
  1122. <div>{{ w.likesCount }}</div>
  1123. </div>
  1124. <div class="commentList" style="margin-right: 15px">
  1125. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1126. <img src="../assets/icon/comment/comment.png" alt="" />
  1127. </div>
  1128. <div>{{ w.commentCount }}</div>
  1129. </div>
  1130. </div>
  1131. </div>
  1132. </div>
  1133. </div>
  1134. <div style="font-size: 18px">未提交</div>
  1135. <div class="noWorksS">
  1136. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1137. {{ s.student }}
  1138. </div>
  1139. </div>
  1140. </div>
  1141. <div v-if="
  1142. tType &&
  1143. ((tType == 2 && sIsOpen == true) ||
  1144. tType == 1 ||
  1145. tType == 4) &&
  1146. tool.tool.indexOf(6) != -1
  1147. " class="worksBox">
  1148. <div class="zuoyeYulan" v-if="
  1149. worksStudent.length &&
  1150. worksStudent[toolIndex].length > 0
  1151. ">
  1152. <span>作业预览</span>
  1153. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1154. </div>
  1155. <div class="worksDetailBox" v-if="
  1156. worksStudent.length &&
  1157. worksStudent[toolIndex].length > 0
  1158. ">
  1159. <div class="works" style="
  1160. width: 200px;
  1161. height: 140px;
  1162. margin: 10px 10px 10px 0;
  1163. border-radius: 15px;
  1164. box-shadow: 0 0 6px 1px #dfdada;
  1165. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  1166. <!-- @click="previewImg(w.works)" -->
  1167. <div class="workImg">
  1168. <img :src="w.works" @click="previewImg(w.works)" alt />
  1169. </div>
  1170. <div class="comment" style="min-width: 200px">
  1171. <div class="worksName">
  1172. <div>{{ w.sName }}</div>
  1173. </div>
  1174. <div class="commentList">
  1175. <div class="commentList">
  1176. <div class="commentImg" @click="
  1177. isLikes(w.wid, userid, 1, null, w.isLikes)
  1178. ">
  1179. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1180. </div>
  1181. <div>{{ w.likesCount }}</div>
  1182. </div>
  1183. <div class="commentList" style="margin-right: 15px">
  1184. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1185. <img src="../assets/icon/comment/comment.png" alt="" />
  1186. </div>
  1187. <div>{{ w.commentCount }}</div>
  1188. </div>
  1189. </div>
  1190. </div>
  1191. </div>
  1192. </div>
  1193. <div style="font-size: 18px">未提交</div>
  1194. <div class="noWorksS">
  1195. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1196. {{ s.student }}
  1197. </div>
  1198. </div>
  1199. </div>
  1200. <div v-if="
  1201. tType &&
  1202. ((tType == 2 && sIsOpen == true) ||
  1203. tType == 1 ||
  1204. tType == 4) &&
  1205. tool.tool.indexOf(7) != -1
  1206. " class="worksBox">
  1207. <div class="zuoyeYulan" v-if="
  1208. worksStudent.length &&
  1209. worksStudent[toolIndex].length > 0
  1210. ">
  1211. <span>作业预览</span>
  1212. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1213. </div>
  1214. <div class="worksDetailBox" v-if="
  1215. worksStudent.length &&
  1216. worksStudent[toolIndex].length > 0
  1217. ">
  1218. <div class="works" style="
  1219. width: 200px;
  1220. height: 140px;
  1221. margin: 10px 10px 10px 0;
  1222. border-radius: 15px;
  1223. box-shadow: 0 0 6px 1px #dfdada;
  1224. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  1225. <!-- @click="previewImg(w.works)" -->
  1226. <div class="workImg">
  1227. <img :src="w.works" @click="previewImg(w.works)" alt />
  1228. </div>
  1229. <div class="comment" style="min-width: 200px">
  1230. <div class="worksName">
  1231. <div>{{ w.sName }}</div>
  1232. </div>
  1233. <div class="commentList">
  1234. <div class="commentList">
  1235. <div class="commentImg" @click="
  1236. isLikes(w.wid, userid, 1, null, w.isLikes)
  1237. ">
  1238. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1239. </div>
  1240. <div>{{ w.likesCount }}</div>
  1241. </div>
  1242. <div class="commentList" style="margin-right: 15px">
  1243. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1244. <img src="../assets/icon/comment/comment.png" alt="" />
  1245. </div>
  1246. <div>{{ w.commentCount }}</div>
  1247. </div>
  1248. </div>
  1249. </div>
  1250. </div>
  1251. </div>
  1252. <div style="font-size: 18px">未提交</div>
  1253. <div class="noWorksS">
  1254. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1255. {{ s.student }}
  1256. </div>
  1257. </div>
  1258. </div>
  1259. <div v-if="
  1260. tType &&
  1261. ((tType == 2 && sIsOpen == true) ||
  1262. tType == 1 ||
  1263. tType == 4) &&
  1264. tool.tool.indexOf(26) != -1
  1265. " class="worksBox">
  1266. <div class="zuoyeYulan" v-if="
  1267. worksStudent.length &&
  1268. worksStudent[toolIndex].length > 0
  1269. ">
  1270. <span>作业预览</span>
  1271. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1272. </div>
  1273. <div class="worksDetailBox" v-if="
  1274. worksStudent.length &&
  1275. worksStudent[toolIndex].length > 0
  1276. ">
  1277. <div class="works" style="width: 240px; height: 140px; overflow: hidden"
  1278. v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex"
  1279. :class="w.type == 1 ? 'isTypeOne' : ''">
  1280. <div class="workImg" v-if="w.type == 0">
  1281. <img :src="w.works" @click="previewImg(w.works)" alt />
  1282. </div>
  1283. <div class="workImg" v-if="w.type == 1">
  1284. <img :src="word" @click="openFile(w.works)" alt />
  1285. </div>
  1286. <div class="worksName">
  1287. <div>{{ w.sName }}</div>
  1288. </div>
  1289. </div>
  1290. </div>
  1291. <div style="font-size: 18px">未提交</div>
  1292. <div class="noWorksS">
  1293. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1294. {{ s.student }}
  1295. </div>
  1296. </div>
  1297. </div>
  1298. <div v-if="
  1299. tType &&
  1300. ((tType == 2 && sIsOpen == true) ||
  1301. tType == 1 ||
  1302. tType == 4) &&
  1303. tool.tool.indexOf(40) != -1
  1304. " class="worksBox">
  1305. <div class="zuoyeYulan" v-if="
  1306. worksStudent.length &&
  1307. worksStudent[toolIndex].length > 0
  1308. ">
  1309. <span>作业预览</span>
  1310. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1311. </div>
  1312. <div class="worksDetailBox" v-if="
  1313. worksStudent.length &&
  1314. worksStudent[toolIndex].length > 0
  1315. ">
  1316. <div class="works" style="
  1317. width: 200px;
  1318. height: 140px;
  1319. margin: 10px 10px 10px 0;
  1320. border-radius: 15px;
  1321. box-shadow: 0 0 6px 1px #dfdada;
  1322. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex"
  1323. :class="w.type == 1 ? 'isTypeOne' : ''">
  1324. <div class="workImg">
  1325. <img src="../assets/icon/works/noImg.png" @click="openPj(w.works, toolIndex)" alt />
  1326. </div>
  1327. <div class="comment" style="min-width: 200px">
  1328. <div class="worksName">
  1329. <div>{{ w.sName }}</div>
  1330. </div>
  1331. <div class="commentList">
  1332. <div class="commentList">
  1333. <div class="commentImg" @click="
  1334. isLikes(w.wid, userid, 1, null, w.isLikes)
  1335. ">
  1336. <img :src="w.isLikes == true ? likes : noLikes" alt="" />
  1337. </div>
  1338. <div>{{ w.likesCount }}</div>
  1339. </div>
  1340. <div class="commentList" style="margin-right: 15px">
  1341. <div class="commentImg" @click="commentOther(w, toolIndex, wIndex)">
  1342. <img src="../assets/icon/comment/comment.png" alt="" />
  1343. </div>
  1344. <div>{{ w.commentCount }}</div>
  1345. </div>
  1346. </div>
  1347. </div>
  1348. </div>
  1349. </div>
  1350. <div style="font-size: 18px">未提交</div>
  1351. <div class="noWorksS">
  1352. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1353. {{ s.student }}
  1354. </div>
  1355. </div>
  1356. </div>
  1357. <div v-if="tType && tType == 2 && tool.tool.indexOf(40) != -1" class="worksBox">
  1358. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  1359. <span>作业预览</span>
  1360. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1361. </div>
  1362. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  1363. <div class="works" style="
  1364. width: 200px;
  1365. height: 140px;
  1366. margin: 10px 10px 10px 0;
  1367. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  1368. <div class="workImg">
  1369. <img src="../assets/icon/works/noImg.png" @click="openPj(w.works, toolIndex)" alt />
  1370. </div>
  1371. <div class="worksName">
  1372. <div>{{ w.sName }}</div>
  1373. </div>
  1374. </div>
  1375. </div>
  1376. </div>
  1377. <div v-if="
  1378. tType &&
  1379. ((tType == 2 && sIsOpen == true) ||
  1380. tType == 1 ||
  1381. tType == 4) &&
  1382. tool.tool.indexOf(41) != -1
  1383. " class="worksBox">
  1384. <div class="zuoyeYulan" v-if="
  1385. worksStudent.length &&
  1386. worksStudent[toolIndex].length > 0
  1387. ">
  1388. <span>作业预览</span>
  1389. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1390. </div>
  1391. <div class="worksDetailBox" v-if="
  1392. worksStudent.length &&
  1393. worksStudent[toolIndex].length > 0
  1394. ">
  1395. <div class="works" style="
  1396. width: 200px;
  1397. height: 140px;
  1398. margin: 10px 10px 10px 0;
  1399. border-radius: 15px;
  1400. box-shadow: 0 0 6px 1px #dfdada;
  1401. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex"
  1402. :class="w.type == 5 ? 'isTypeOne' : ''">
  1403. <div class="workImg">
  1404. <img src="../assets/icon/works/noImg.png" @click="openXz(w, toolIndex)" alt />
  1405. </div>
  1406. <div class="worksName">
  1407. <div>{{ w.sName }}</div>
  1408. </div>
  1409. <!-- <div class="comment" style="min-width: 200px">
  1410. <div class="worksName">
  1411. <div>{{ w.sName }}</div>
  1412. </div>
  1413. <div class="commentList">
  1414. <div class="commentList">
  1415. <div
  1416. class="commentImg"
  1417. @click="
  1418. isLikes(w.wid, userid, 1, null, w.isLikes)
  1419. "
  1420. >
  1421. <img
  1422. :src="w.isLikes == true ? likes : noLikes"
  1423. alt=""
  1424. />
  1425. </div>
  1426. <div>{{ w.likesCount }}</div>
  1427. </div>
  1428. <div class="commentList" style="margin-right: 15px">
  1429. <div
  1430. class="commentImg"
  1431. @click="commentOther(w, toolIndex)"
  1432. >
  1433. <img
  1434. src="../assets/icon/comment/comment.png"
  1435. alt=""
  1436. />
  1437. </div>
  1438. <div>{{ w.commentCount }}</div>
  1439. </div>
  1440. </div>
  1441. </div> -->
  1442. </div>
  1443. </div>
  1444. <div style="font-size: 18px">未提交</div>
  1445. <div class="noWorksS">
  1446. <div v-for="(s, sIndex) in noWorksS[toolIndex]" :key="sIndex" class="noWorksName">
  1447. {{ s.student }}
  1448. </div>
  1449. </div>
  1450. <AnswerData2 v-if="
  1451. worksStudent.length &&
  1452. worksStudent[toolIndex].length > 0
  1453. " :problemJson="tool.selectJson.answer" :people="worksStudent[toolIndex]"></AnswerData2>
  1454. </div>
  1455. <div v-if="tType && tType == 2 && tool.tool.indexOf(41) != -1" class="worksBox">
  1456. <div class="zuoyeYulan" v-if="workStudent[toolIndex].length > 0">
  1457. <span>作业预览</span>
  1458. <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button>
  1459. </div>
  1460. <div class="worksDetailBox" v-if="workStudent[toolIndex].length > 0">
  1461. <div class="works" style="
  1462. width: 200px;
  1463. height: 140px;
  1464. margin: 10px 10px 10px 0;
  1465. " v-for="(w, wIndex) in workStudent[toolIndex]" :key="wIndex">
  1466. <div class="workImg">
  1467. <img src="../assets/icon/works/noImg.png" @click="openXz(w, toolIndex)" alt />
  1468. </div>
  1469. <div class="worksName">
  1470. <div>{{ w.sName }}</div>
  1471. </div>
  1472. </div>
  1473. </div>
  1474. </div>
  1475. </div>
  1476. <!-- <div class="upload_toolBtn" @click="addImg($event)">
  1477. 上传文件
  1478. <input
  1479. type="file"
  1480. accept="image/png, image/gif, image/jpeg"
  1481. style="display: none"
  1482. @change="beforeUpload1($event, 2, index)"
  1483. />
  1484. </div>-->
  1485. </div>
  1486. </div>
  1487. <div class="vedioBox" v-if="
  1488. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  1489. .eList &&
  1490. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  1491. .eList.length &&
  1492. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  1493. .eList.length > 0 &&
  1494. tType != 2
  1495. ">
  1496. <div class="queTop" style="
  1497. font-size: 25px;
  1498. padding: 15px 0 15px 30px;
  1499. font-weight: bold;
  1500. ">
  1501. <!-- <div class="question" style="width: 30px">
  1502. <img src="../assets/icon/toolIcon.png" alt />
  1503. </div>
  1504. <div class="queTitle">
  1505. <div>工具</div>
  1506. </div>-->
  1507. 评一评
  1508. </div>
  1509. <div class="evaCss">
  1510. <div class="elist_input">
  1511. <div v-for="(eItem, eIndex) in chapInfoList[courseType]
  1512. .chapterInfo[0].taskJson[taskCount].eList" :key="eIndex" class="elist_input_box">
  1513. <div style="width: 95%">
  1514. <div style="
  1515. display: flex;
  1516. flex-direction: row;
  1517. flex-wrap: nowrap;
  1518. align-items: center;
  1519. ">
  1520. <div style="max-width: calc(100% - 285px)">
  1521. <span>{{ eItem.value }}</span>
  1522. </div>
  1523. <div style="
  1524. padding-left: 25px;
  1525. display: flex;
  1526. flex-direction: row;
  1527. align-items: center;
  1528. ">
  1529. <el-rate v-model="eItem.score" :colors="colors" disabled></el-rate>
  1530. </div>
  1531. </div>
  1532. <div class="elist_inptu_text" style="padding-left: 10px">
  1533. <span v-if="eItem.detail != ''">{{
  1534. eItem.detail
  1535. }}</span>
  1536. <span v-else style="color: #b2b1b3; font-size: 14px">暂无描述...</span>
  1537. </div>
  1538. </div>
  1539. </div>
  1540. </div>
  1541. <div v-if="evalua" style="
  1542. border: 1px solid #e5e5e5;
  1543. width: 650px;
  1544. margin-top: 20px;
  1545. box-shadow: 3px 1px 15px 3px #e0e0e0;
  1546. ">
  1547. <div class="e_add_top">
  1548. <div class="e_add_title">
  1549. <span>目标管理名称</span>
  1550. <span>{{ eTitle }}</span>
  1551. <img src="../assets/line.png" class="cru_line" style="
  1552. width: 125px;
  1553. height: 20px;
  1554. bottom: -10px;
  1555. left: 120px;
  1556. " />
  1557. <!-- <el-input
  1558. v-model="eTitle"
  1559. placeholder="请输入名称"
  1560. @change="setMindData"
  1561. ></el-input>-->
  1562. </div>
  1563. </div>
  1564. <div class="e_add_content">
  1565. <div class="e_add_list_pbox">
  1566. <div class="e_add_list_pbox_title">
  1567. <span class="type_title">切换模式</span>
  1568. <div class="type_content">
  1569. <span :class="{ active: typeMode == 1 }" @click="typeMode = 1">目标树</span>
  1570. <span :class="{ active: typeMode == 2 }" @click="typeMode = 2">目标罗盘</span>
  1571. <span :class="{ active: typeMode == 3 }" @click="typeMode = 3">目标看板</span>
  1572. </div>
  1573. </div>
  1574. <div class="e_add_list_pbox_content">
  1575. <Mind :showBar="false" :mindData="data" style="width: 100%" v-show="typeMode == 1"></Mind>
  1576. <Sunburst :Josn="eJson" :num="eJSONNum" style="width: 100%" v-if="typeMode == 2"></Sunburst>
  1577. <SeeBoard :Josn="eJson" :num="eJSONNum" :ename="eTitle" style="width: 100%"
  1578. v-if="typeMode == 3"></SeeBoard>
  1579. </div>
  1580. </div>
  1581. </div>
  1582. </div>
  1583. </div>
  1584. </div>
  1585. <!-- <div
  1586. class="project_box"
  1587. style="margin-top: 15px; padding-bottom: 30px"
  1588. >
  1589. <div
  1590. style="
  1591. display: flex;
  1592. flex-wrap: nowrap;
  1593. flex-direction: column;
  1594. position: relative;
  1595. "
  1596. >
  1597. <div class="queTop">
  1598. <div class="question">
  1599. <img src="../assets/icon/homeWork.png" alt="" />
  1600. </div>
  1601. <div class="queTitle">
  1602. <div>作业提交<span>(提交图文视频等)</span></div>
  1603. <div>:任务:{{ task.task }}</div>
  1604. </div>
  1605. </div>
  1606. <div class="ediBottom">
  1607. <div
  1608. class="addEditor"
  1609. style="margin-top: 23px"
  1610. @click="openAddWork"
  1611. v-if="!isNoHomeWork"
  1612. >
  1613. 选择文件
  1614. </div>
  1615. <div
  1616. class="addEditor"
  1617. style="margin-top: 23px"
  1618. @click="openAddWork"
  1619. v-else
  1620. >
  1621. 已提交
  1622. </div>
  1623. </div>
  1624. </div>
  1625. </div>-->
  1626. </div>
  1627. </div>
  1628. <el-dialog title="提交实践作业" :visible.sync="dialogVisible" :append-to-body="true" width="500px"
  1629. :before-close="handleClose" class="dialog_change">
  1630. <div class="marginT">
  1631. <div>上传文件</div>
  1632. <div class="chapter_add" @click="addImg($event)" v-if="studyJuri[0].cover.length == 0">
  1633. <div class="up_photo">
  1634. <img src="../assets/icon/uploadImg.png" alt />
  1635. </div>
  1636. <input type="file"
  1637. accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
  1638. capture="camera" style="display: none" @change="beforeUpload1($event, 1)" />
  1639. <!-- <input
  1640. type="file"
  1641. accept="image/*"
  1642. capture="camera"
  1643. style="display: none"
  1644. @change="beforeUpload1($event, 1)"
  1645. /> -->
  1646. </div>
  1647. <div class="chapter_add" style="
  1648. display: flex;
  1649. width: 100%;
  1650. flex-direction: row;
  1651. flex-wrap: wrap;
  1652. justify-content: flex-start;
  1653. padding: 15px 0;
  1654. " v-if="studyJuri[0].cover.length > 0">
  1655. <div class="upCover">
  1656. <img :src="studyJuri[0].cover[0].url" alt v-if="fileType == 0" />
  1657. <img :src="word" alt v-else-if="fileType == 1" />
  1658. <img :src="video" alt v-else />
  1659. <span class="picName">{{ studyJuri[0].cover[0].name }}</span>
  1660. <div class="deleteWord" @click="clean(1)">
  1661. <img src="../assets/icon/deleteWorks.png" alt />
  1662. </div>
  1663. </div>
  1664. </div>
  1665. </div>
  1666. <!-- <div class="first">
  1667. <div>作业名称:</div>
  1668. <div>{{ chapInfoList[courseType].dyName }}</div>
  1669. </div>
  1670. <div style="font-size: 20px; margin-bottom: 10px">上传作业</div>
  1671. <el-input
  1672. type="textarea"
  1673. resize="none"
  1674. rows="7"
  1675. placeholder="输入文字描述..."
  1676. v-model="studyJuri[0].content"
  1677. ></el-input>
  1678. <div class="marginT">
  1679. <div>上传图片</div>
  1680. <div class="chapter_add" @click="addImg($event)">
  1681. <div class="up_photo">
  1682. <img src="../assets/photo.png" alt />
  1683. </div>
  1684. <input
  1685. type="file"
  1686. accept="image/png, image/gif, image/jpeg"
  1687. style="display: none"
  1688. @change="beforeUpload1($event, 1)"
  1689. />
  1690. </div>
  1691. <div
  1692. class="chapter_add"
  1693. style="
  1694. display: flex;
  1695. width: 100%;
  1696. flex-direction: row;
  1697. flex-wrap: wrap;
  1698. justify-content: flex-start;
  1699. "
  1700. v-if="studyJuri[0].cover.length > 0"
  1701. >
  1702. <div
  1703. v-for="(c, cIndex) in studyJuri[0].cover"
  1704. :key="cIndex"
  1705. class="upCover"
  1706. >
  1707. <img :src="c.url != null && c.url != '' ? c.url : mr" alt />
  1708. <span class="picName">{{ c.name }}</span>
  1709. <div class="deleteWord" @click="clean(1)">
  1710. <img src="../assets/icon/delete.png" alt />
  1711. </div>
  1712. </div>
  1713. </div>
  1714. </div>
  1715. <div class="marginT">
  1716. <div>上传视频</div>
  1717. <div class="chapter_add" @click="addImg($event)">
  1718. <div class="up_photo">
  1719. <img src="../assets/vidio.png" alt />
  1720. </div>
  1721. <input
  1722. type="file"
  1723. accept="video/mp4, video/quicktime, video/x-msvideo"
  1724. style="display: none"
  1725. @change="beforeUpload2($event, 2)"
  1726. />
  1727. </div>
  1728. <div
  1729. class="chapter_add"
  1730. style="
  1731. display: flex;
  1732. flex-direction: row;
  1733. flex-wrap: wrap;
  1734. width: 100%;
  1735. justify-content: flex-start;
  1736. "
  1737. v-if="studyJuri[0].upVedio.length > 0"
  1738. >
  1739. <div
  1740. style="
  1741. width: 100%;
  1742. display: flex;
  1743. flex-direction: row;
  1744. flex-wrap: wrap;
  1745. align-content: flex-start;
  1746. justify-content: flex-start;
  1747. align-items: center;
  1748. "
  1749. >
  1750. <div
  1751. class="uploadVedio isAddThings"
  1752. v-for="(v, vIndex) in studyJuri[0].upVedio"
  1753. :key="vIndex"
  1754. >
  1755. <img src="../assets/uploadMp4.png" alt />
  1756. <span>{{ v.name }}</span>
  1757. <div class="deleteWord" @click="clean(2)">
  1758. <img src="../assets/icon/delete.png" alt />
  1759. </div>
  1760. </div>
  1761. </div>
  1762. </div>
  1763. </div>-->
  1764. <div class="upload_send" @click="addCourseWorks(taskCount)">提交</div>
  1765. </el-dialog>
  1766. </div>
  1767. </div>
  1768. <div class="pButton" @click="(pzDialog = true), selectPz()" v-if="tType == 4">
  1769. </div>
  1770. <div v-if="pzDialog == true" class="newDialogCss">
  1771. <div class="pzTop">
  1772. <div>批注</div>
  1773. <div @click="pzDialog = false">
  1774. <img src="../assets/close1.png" alt="" />
  1775. </div>
  1776. </div>
  1777. <div :class="pzList && pzList.length ? 'pzBox' : 'noPzBox'">
  1778. <div class="pzListBox" v-if="pzList && pzList.length">
  1779. <div class="pzList" v-for="(pz, pzIndex) in pzList" :key="pzIndex">
  1780. <div class="pzNavTop">
  1781. <div>批</div>
  1782. <div>{{ pz.username }}的批注</div>
  1783. </div>
  1784. <div class="pzContent">
  1785. {{ pz.content }}
  1786. </div>
  1787. <div class="time">
  1788. {{ pz.time }}
  1789. </div>
  1790. </div>
  1791. </div>
  1792. <div class="noPz" v-else>
  1793. <img src="../assets/icon/noPz.png" alt="" />
  1794. </div>
  1795. <div class="addPz" @click="addPzDialog = true">添加批注</div>
  1796. </div>
  1797. </div>
  1798. <div v-if="addPzDialog == true" class="addDialogCss">
  1799. <div class="pzTop">
  1800. <div class="teacherPz">
  1801. <div class="teacherPzImg">
  1802. <img src="../assets/icon/teacherPz.png" alt="" />
  1803. </div>
  1804. <div style="margin-left: 10px; height: 25px">教师批注</div>
  1805. </div>
  1806. <div @click="addPzDialog = false">
  1807. <img src="../assets/close1.png" alt="" />
  1808. </div>
  1809. </div>
  1810. <div class="addPzBox">
  1811. <div style="padding-top: 10px; height: 80%">
  1812. <textarea class="binfo_input pzConText" cols placeholder="请填写项目课程关键问题...." v-model="pzConText"></textarea>
  1813. </div>
  1814. <div class="addTextCss" @click="addPz">确定</div>
  1815. </div>
  1816. </div>
  1817. <div v-if="proVisible" class="mask">
  1818. <div class="progressBox">
  1819. <div class="lbox">
  1820. <img src="../assets/loading.gif" />上传中,请稍后
  1821. </div>
  1822. <el-progress :text-inside="true" :stroke-width="20" :percentage="progress" style="width: 80%"></el-progress>
  1823. </div>
  1824. </div>
  1825. <el-dialog :visible.sync="pictureDialog" size="tiny">
  1826. <img width="100%" :src="dialogImageUrl" alt />
  1827. </el-dialog>
  1828. <el-dialog :title="noteName != '' ? noteName : '查看选择题'" :visible.sync="dialogVisible5" :append-to-body="true"
  1829. width="1000px" :before-close="handleClose" class="dialog_diy dialog_diy3">
  1830. <div>
  1831. <div class="a_add_title" style="
  1832. display: flex;
  1833. flex-direction: row;
  1834. align-items: center;
  1835. justify-content: center;
  1836. ">
  1837. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  1838. <div style="font-size: 20px">{{ askJson.askTitle }}</div>
  1839. </div>
  1840. <div class="a_addBox">
  1841. <div style="font-size: 16px; color: #c7c7c7">题目内容</div>
  1842. <div class="a_add_box" v-for="(item1, index1) in askJson.askCount" :key="index1">
  1843. <div class="a_add_head">
  1844. <div style="display: flex">
  1845. {{ index1 + 1 + "、" }}
  1846. <div>题目:{{ askJson.askJson[index1].askstitle }}</div>
  1847. </div>
  1848. <img v-if="askJson.askJson[index1].img" :src="askJson.askJson[index1].img"
  1849. style="width: 100%; margin-top: 10px" />
  1850. </div>
  1851. <div class="a_add_body">
  1852. <div class="a_add_input">
  1853. <el-radio-group v-model="radio[index1]">
  1854. <el-radio v-for="(item2, checkIndex) in askJson.askJson[index1]
  1855. .checkList" :key="checkIndex" :label="checkIndex" :disabled="isAnswer" class="redioStyle"><span
  1856. v-html="item2"></span></el-radio>
  1857. </el-radio-group>
  1858. </div>
  1859. </div>
  1860. </div>
  1861. </div>
  1862. </div>
  1863. <span slot="footer" class="dialog-footer">
  1864. <el-button @click="dialogVisible5 = false" v-show="noteName == ''">取 消</el-button>
  1865. <el-button type="primary" @click="addStudentAsk" v-show="noteName == ''">确 定</el-button>
  1866. </span>
  1867. </el-dialog>
  1868. <el-dialog title="查看富文本" :visible.sync="dialogVisible1" :append-to-body="true" width="500px"
  1869. :before-close="handleClose" class="dialog_diy textCss">
  1870. <el-form style="font-size: 20px">
  1871. <el-form-item label="文本标题" class="textTitle">
  1872. <div style="font-size: 20px">{{ text.name }}</div>
  1873. </el-form-item>
  1874. <div>富文本内容</div>
  1875. <div v-html="text.url" style="font-size: 18px; padding: 40px 0 0 0"></div>
  1876. </el-form>
  1877. <span slot="footer" class="dialog-footer">
  1878. <el-button type="primary" @click="dialogVisible1 = false">确定</el-button>
  1879. </span>
  1880. </el-dialog>
  1881. <el-dialog title="文件预览" :visible.sync="dialogVisible3" width="50%" :before-close="handleClose" class="dialog_diy"
  1882. :class="{ fullStyle: full }">
  1883. <div slot="title" class="header-title">
  1884. <div style="color: #fff">文件预览</div>
  1885. <div style="position: absolute; top: 19px; right: 50px">
  1886. <img src="../assets/full.png" style="height: 16px; cursor: pointer" alt="" @click="fullTools" />
  1887. </div>
  1888. </div>
  1889. <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"
  1890. :class="{ fullStyle: full }"></pdf>
  1891. <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600" :class="{ fullStyle: full }"></iframe>
  1892. </el-dialog>
  1893. <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="50%" :before-close="handleClose" class="dialog_diy">
  1894. <iframe :src="pptImgUrl1" frameborder="0" width="100%" height="600"></iframe>
  1895. </el-dialog>
  1896. <el-dialog title="提示" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
  1897. :before-close="handleClose" class="dialog_diy notice">
  1898. <div>此功能暂未开放!</div>
  1899. <el-button type="primary" @click="dialogVisible4 = false">确定</el-button>
  1900. </el-dialog>
  1901. <el-dialog title="问答" :visible.sync="answerDialogVisible" :append-to-body="true" width="800px"
  1902. :before-close="handleClose" class="dialog_diy">
  1903. <div>
  1904. <div style="
  1905. display: flex;
  1906. flex-wrap: nowrap;
  1907. flex-direction: column;
  1908. position: relative;
  1909. ">
  1910. <div class="queTop" style="padding: 20px 0 20px 0">
  1911. <div class="question">
  1912. <img src="../assets/icon/question.png" alt />
  1913. </div>
  1914. <div class="queTitle">
  1915. <div style="width: 90px; min-width: 90px">提问:</div>
  1916. <div>{{ answerQ }}</div>
  1917. </div>
  1918. </div>
  1919. <div class="ediBottom">
  1920. <textarea rows="6" class="binfo_input" cols style="width: 95%; height: 120px"
  1921. v-model="questionAnswer"></textarea>
  1922. </div>
  1923. </div>
  1924. </div>
  1925. <div slot="footer">
  1926. <el-button @click="answerDialogVisible = false">取 消</el-button>
  1927. <el-button type="primary" @click="addQuestion">提 交</el-button>
  1928. </div>
  1929. </el-dialog>
  1930. <el-dialog title="倒计时" :visible.sync="timeDialogVisible" :append-to-body="true" width="800px"
  1931. :before-close="handleClose" class="dialog_diy">
  1932. <div>
  1933. <Time v-if="timeDialogVisible"></Time>
  1934. </div>
  1935. <div slot="footer">
  1936. <el-button @click="timeDialogVisible = false">关 闭</el-button>
  1937. </div>
  1938. </el-dialog>
  1939. <el-dialog title="权限设置" :visible.sync="juriVisible" :append-to-body="true" width="400px" :before-close="handleClose"
  1940. class="dialog_diy">
  1941. <div>
  1942. <div>
  1943. <div>
  1944. <el-switch v-model="sIsOpen" active-text="学生是否能查看所有作业" class="switchCss" @change="updateSLook"></el-switch>
  1945. </div>
  1946. </div>
  1947. </div>
  1948. <div slot="footer">
  1949. <el-button style="background: #409efe; color: #fff" @click="juriVisible = false">关 闭</el-button>
  1950. </div>
  1951. </el-dialog>
  1952. <el-dialog title="查看视频" :visible.sync="videoVisible" :append-to-body="true" width="1000px"
  1953. :before-close="handleClose" class="dialog_diy1">
  1954. <div class="workd_media" style="height: 100%" v-if="videoDetail.sources">
  1955. <video-player class="video-player vjs-custom-skin" :playsinline="true" :options="videoDetail"
  1956. @play="onPlayerPlay($event)" style="width: 100%; height: 100%"></video-player>
  1957. </div>
  1958. <div slot="footer">
  1959. <el-button style="background: #409efe; color: #fff" @click="videoVisible = false,videoDetail.sources[0].src=''">
  1960. 关 闭</el-button>
  1961. </div>
  1962. </el-dialog>
  1963. <el-dialog title="查看详情" :visible.sync="commentDialogVisible" :append-to-body="true" width="800px"
  1964. :before-close="handleClose" class="dialog_diy">
  1965. <div class="commentTop">
  1966. <div class="studentDetail">
  1967. <div class="tx"><img src="../assets/avatar.png" alt="" /></div>
  1968. <div class="nameAndTime">
  1969. <div style="margin-bottom: 5px">{{ commentDetail.sName }}</div>
  1970. <div>{{ commentDetail.time }}</div>
  1971. </div>
  1972. </div>
  1973. <div class="worksAnswer" v-if="commentDetail.works && commentDetail.type == 2">
  1974. {{ JSON.parse(commentDetail.works)[0].answer }}
  1975. </div>
  1976. <div class="worksAnswer" v-if="commentDetail.works && commentDetail.type == 1">
  1977. <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"
  1978. :class="{ fullStyle: full }"></pdf>
  1979. <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"
  1980. :class="{ fullStyle: full }"></iframe>
  1981. </div>
  1982. <div class="worksAnswer" v-if="commentDetail.works && commentDetail.type == 0">
  1983. <img :src="commentDetail.works" alt="" @click="previewImg(commentDetail.works)" />
  1984. </div>
  1985. <div class="worksAnswer" v-if="commentDetail.works && commentDetail.type == 3">
  1986. <video-player class="video-player vjs-custom-skin" :playsinline="true" :options="videoDetail"
  1987. @play="onPlayerPlay($event)" style="width: 90%; height: 100%; margin: 0 0 0 30px"></video-player>
  1988. </div>
  1989. <div class="worksAnswer" v-if="commentDetail.works && commentDetail.type == 4">
  1990. <div class="evalCss">
  1991. <div class="nav">请选择星星进行评分</div>
  1992. <div class="middleBox" v-if="eScore.eStar">
  1993. <div class="pfBox" v-for="(e, eIndex) in rateJson" :key="eIndex">
  1994. <div class="nameAndrate">
  1995. <div>{{ e.value }}</div>
  1996. <el-rate v-model="eScore.eStar[eIndex]" disabled></el-rate>
  1997. </div>
  1998. <div v-if="e.detail">{{ e.detail }}</div>
  1999. </div>
  2000. <div class="bz">
  2001. <textarea disabled rows="4" class="pj" style="
  2002. padding: 10px 5px;
  2003. width: 70%;
  2004. background: #f7f6f9;
  2005. font-size: 14px;
  2006. text-indent: 10px;
  2007. color: #000;
  2008. " cols v-model="eScore.eBzText" placeholder="请输入评价内容..."></textarea>
  2009. </div>
  2010. </div>
  2011. </div>
  2012. </div>
  2013. <div class="comment">
  2014. <div class="commentList">
  2015. <div class="commentImg">
  2016. <img @click="
  2017. isLikes(
  2018. commentDetail.wid,
  2019. commentDetail.userid,
  2020. 1,
  2021. null,
  2022. commentDetail.isLikes
  2023. )
  2024. " :src="commentDetail.isLikes == true ? likes : noLikes" alt="" />
  2025. </div>
  2026. <div>{{ commentDetail.likesCount }}</div>
  2027. </div>
  2028. <div class="commentList">
  2029. <div class="commentImg">
  2030. <img src="../assets/icon/comment/comment.png" alt="" />
  2031. </div>
  2032. <div>{{ commentDetail.commentCount }}</div>
  2033. </div>
  2034. </div>
  2035. </div>
  2036. <div class="commentBox">
  2037. <div class="pl">评论:</div>
  2038. <div style="max-height: 200px; overflow: auto">
  2039. <div v-if="commentDetail.commentJson" style="padding: 10px 0 0 0">
  2040. <div class="studentDetail" style="padding-top: 10px" v-for="(co, coIndex) in commentDetail.commentJson"
  2041. :key="coIndex">
  2042. <div class="tx" style="min-width: 40px">
  2043. <img src="../assets/avatar.png" alt="" />
  2044. </div>
  2045. <div class="plPerson">
  2046. <div class="plName">
  2047. <div>{{ co.commentPeople }}</div>
  2048. <div style="margin-left: 5px">
  2049. {{ co.commentTime }}
  2050. </div>
  2051. </div>
  2052. <div class="plContent">{{ co.commentText }}</div>
  2053. </div>
  2054. </div>
  2055. </div>
  2056. <div v-else style="padding: 10px 0 0 0">暂无评论</div>
  2057. </div>
  2058. </div>
  2059. <div style="margin-top: 10px">
  2060. <div class="displayBox">
  2061. <div style="
  2062. color: #556db4;
  2063. font-size: 14px;
  2064. font-weight: bold;
  2065. padding-bottom: 10px;
  2066. ">
  2067. 评价
  2068. </div>
  2069. <div class="easy_comment">
  2070. <div v-for="(p, pIndex) in PlTextList" :key="pIndex" @click="fastText(p, 1)">
  2071. {{ p }}
  2072. </div>
  2073. </div>
  2074. </div>
  2075. <div>
  2076. <textarea rows="3" class="pj" style="padding: 10px 5px" cols v-model="commentText"
  2077. placeholder="请输入对该学生的评价"></textarea>
  2078. </div>
  2079. </div>
  2080. <div slot="footer">
  2081. <el-button @click="(commentDialogVisible = false), (this.commentIndexJson = {})">取 消</el-button>
  2082. <el-button type="primary" @click="addComment(commentDetail.wid, userid, 2)">确 定</el-button>
  2083. </div>
  2084. </el-dialog>
  2085. <el-dialog title="查看文档" :visible.sync="fullDialogVisible" :append-to-body="true" width="100%"
  2086. :before-close="handleClose" :show-close="false" class="dialog_diy full_diy">
  2087. <div slot="title" class="header-title">
  2088. <div style="color: #fff">查看文档</div>
  2089. <div @click="fullDialogVisible = false" style="
  2090. cursor: pointer;
  2091. position: absolute;
  2092. top: 20px;
  2093. right: 20px;
  2094. color: #fff;
  2095. ">
  2096. 退出全屏
  2097. </div>
  2098. </div>
  2099. <div style="height: 100%">
  2100. <iframe v-if="fulltype == 2" style="width: 100%; height: 100%; border: none" :src="fullUrl"></iframe>
  2101. <pdf v-else-if="fulltype == 3" :pdfUrl="fullUrl" style="width: 100%; height: 100%; overflow: auto"></pdf>
  2102. <div class="wheel" v-if="fulltype == 1" style="
  2103. box-shadow: 0 0 6px 1px #f2f2f2;
  2104. width: 100%;
  2105. background: #f1f1f1;
  2106. ">
  2107. <div class="title" style="width: 100%; box-sizing: border-box">
  2108. 查看文档
  2109. </div>
  2110. <el-form class="textBox" style="height: 90%">
  2111. <el-form-item class="textTitle">
  2112. <div style="font-size: 22px; max-height: 100px; overflow: auto">
  2113. {{ fullUrl.name }}
  2114. </div>
  2115. </el-form-item>
  2116. <!-- <div style="color: #918f8f; width: 85%">文档内容</div> -->
  2117. <div v-html="fullUrl.url" class="textContent" style="height: auto"></div>
  2118. </el-form>
  2119. </div>
  2120. </div>
  2121. <!-- <div slot="footer">
  2122. <el-button @click="fullDialogVisible = false">关 闭</el-button>
  2123. </div> -->
  2124. </el-dialog>
  2125. <el-dialog title="学生评价" :visible.sync="studentEvalDialogVisible" :append-to-body="true" width="800px"
  2126. :before-close="handleClose" class="dialog_diy">
  2127. <div class="evalCss">
  2128. <div class="nav">请选择星星进行评分</div>
  2129. <div class="middleBox" v-if="eScore.eStar">
  2130. <div class="pfBox" v-for="(e, eIndex) in rateJson" :key="eIndex">
  2131. <div class="nameAndrate">
  2132. <div>{{ e.value }}</div>
  2133. <el-rate v-model="eScore.eStar[eIndex]" :disabled="isStar"></el-rate>
  2134. </div>
  2135. <div v-if="e.detail">{{ e.detail }}</div>
  2136. </div>
  2137. <div class="easy_comment" v-if="isStar == false">
  2138. <div v-for="(p, pIndex) in PlTextList" :key="pIndex" @click="fastText(p, 2)">
  2139. {{ p }}
  2140. </div>
  2141. </div>
  2142. <div class="bz">
  2143. <textarea :disabled="isStar" rows="4" class="pj" style="
  2144. padding: 10px 5px;
  2145. width: 70%;
  2146. background: #f7f6f9;
  2147. font-size: 14px;
  2148. text-indent: 10px;
  2149. " cols v-model="eScore.eBzText" placeholder="请输入评价内容..."></textarea>
  2150. </div>
  2151. </div>
  2152. </div>
  2153. <div slot="footer">
  2154. <el-button @click="studentEvalDialogVisible = false">取 消</el-button>
  2155. <el-button type="primary" @click="addBzWorks" v-if="!isStar">确 定</el-button>
  2156. </div>
  2157. </el-dialog>
  2158. <el-dialog title="选择填空" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="90%"
  2159. :before-close="handleClose" class="dialog_diy dialog_diy3">
  2160. <div v-if="selectJson">
  2161. <div class="select_box2">
  2162. <div class="select_box2_title">
  2163. <div>选择填空</div>
  2164. <div>请选择对应的答案进行答题!</div>
  2165. </div>
  2166. <div class="select_box2_box">
  2167. <div class="select_box2_img">
  2168. <img :src="selectJson.url" @click="previewImg(selectJson.url)" alt="" />
  2169. </div>
  2170. <div :class="isSelect ? 'rightWidthCss' : 'select_box2_answer'">
  2171. <div style="padding-top: 15px">
  2172. <div class="select_answer_title" v-if="isSelect">
  2173. {{ selectAnswer.stu }}
  2174. </div>
  2175. <div class="select_answer_title" v-else>
  2176. 根据题目选择对应答案
  2177. </div>
  2178. <div class="select_box2_answer_box" v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex">
  2179. <span style="min-width: 30px">{{ checkIndex + 1 }}、</span>
  2180. <el-select :disabled="isSelect" v-model="selectAnswer.answer[checkIndex]" placeholder="请选择正确答案">
  2181. <el-option v-for="(e, eIndex) in selectJson.select" :key="eIndex" :label="e" :value="eIndex">
  2182. </el-option>
  2183. </el-select>
  2184. </div>
  2185. </div>
  2186. <div class="rightAnswerCss" v-if="isSelect && tType == 1">
  2187. <div v-for="(a, aIndex) in selectJson.answer" :key="aIndex" class="rightAnswer">
  2188. <div v-if="selectAnswer.answer[aIndex] === a" style="color: #767de1">
  2189. 回答正确
  2190. </div>
  2191. <div v-else>回答错误</div>
  2192. <div style="margin-left: 10px" v-if="selectAnswer.answer[aIndex] !== a">
  2193. 正确答案:
  2194. </div>
  2195. <div :class="
  2196. selectAnswer.answer[aIndex] === a ? 'blueCss' : 'redCss'
  2197. ">
  2198. {{ selectJson.select[a] }}
  2199. </div>
  2200. </div>
  2201. </div>
  2202. </div>
  2203. <div class="upAnswerCss">
  2204. <el-button type="primary" @click="addSelectAnswer" v-if="!isSelect">提交答案</el-button>
  2205. </div>
  2206. </div>
  2207. </div>
  2208. </div>
  2209. </el-dialog>
  2210. </div>
  2211. </template>
  2212. <script>
  2213. import "../common/aws-sdk-2.235.1.min.js";
  2214. import pdf from "./components/pdf3";
  2215. import AskStatic from "./components/askStatic";
  2216. import AnswerData2 from "./components/answerData2";
  2217. import EditorBar from "./tools/wangEnduit.vue";
  2218. import Time from "./tools/time.vue";
  2219. import Mind from "./tools/jsmind.vue";
  2220. import Sunburst from "./tools/sunburst";
  2221. import SeeBoard from "./tools/seeBoard";
  2222. import * as imageConversion from "image-conversion";
  2223. export default {
  2224. components: {
  2225. EditorBar,
  2226. Time,
  2227. pdf,
  2228. AskStatic,
  2229. Mind,
  2230. Sunburst,
  2231. SeeBoard,
  2232. AnswerData2,
  2233. },
  2234. data() {
  2235. return {
  2236. dialogVisible: false,
  2237. commentDialogVisible: false,
  2238. videoVisible: false,
  2239. isStar: false,
  2240. studentEvalDialogVisible: false,
  2241. dialogVisibleSelect: false,
  2242. bzText: "",
  2243. commentDetail: [],
  2244. selectAnswer: [],
  2245. videoDetail: {},
  2246. selectJson: {},
  2247. eScore: { eBzText: "", eStar: [] },
  2248. id: this.$route.query.courseId,
  2249. userid: this.$route.query.userid,
  2250. classId: this.$route.query.cid,
  2251. // courseTypeLine: this.$route.query.type,
  2252. oid: this.$route.query.oid,
  2253. org: this.$route.query.org,
  2254. tType: this.$route.query.tType,
  2255. courseType: this.$route.query.type,
  2256. screenType: this.$route.query.screenType,
  2257. pptImgUrl: "",
  2258. pptImgUrl1: "",
  2259. commentText: "",
  2260. full: false,
  2261. sIsOpen: false,
  2262. pzDialog: false,
  2263. type: 1,
  2264. vedio: [],
  2265. text: [],
  2266. textList: [],
  2267. line: [],
  2268. lineList: [],
  2269. chapTools: [],
  2270. chapToolList: [],
  2271. file: [],
  2272. vedioTime: [],
  2273. upToolImg: "",
  2274. rateList: {
  2275. ca: 0,
  2276. },
  2277. rateParams: [],
  2278. colors: ["#DFDFDF", "#DFDFDF", "#DFDFDF"],
  2279. studyJuri: [
  2280. {
  2281. content: "",
  2282. cover: [],
  2283. upVedio: [],
  2284. upFile: [],
  2285. },
  2286. ],
  2287. mr: require("../assets/vedioPic.png"),
  2288. word: require("../assets/icon/isWord.png"),
  2289. video: require("../assets/icon/isVideo.png"),
  2290. noLikes: require("../assets/icon/comment/noLikes.png"),
  2291. likes: require("../assets/icon/comment/likes.png"),
  2292. courseDetail: {},
  2293. isSelect: false,
  2294. chapInfo: [],
  2295. chapInfoList: [],
  2296. taskCount: 0,
  2297. imgList: [],
  2298. noImgList: [],
  2299. pzList: [],
  2300. PlTextList: [
  2301. "Excellent!",
  2302. "nice!",
  2303. "很有创意!",
  2304. "还不错哦~",
  2305. "继续努力哦~",
  2306. ],
  2307. isClickNav: "",
  2308. navId: "",
  2309. playerOptions: {
  2310. playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
  2311. autoplay: false, //如果true,浏览器准备好时开始回放。
  2312. muted: false, // 默认情况下将会消除任何音频。
  2313. loop: false, // 导致视频一结束就重新开始。
  2314. preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  2315. language: "zh-CN",
  2316. aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  2317. fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
  2318. sources: [
  2319. {
  2320. type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
  2321. src: "", //url地址require("../../assets/media/aaa.mp4")
  2322. },
  2323. ],
  2324. // poster: require("../../assets/tu31.png"), //你的封面地址
  2325. // poster: dataRes.imgUrl, //你的封面地址
  2326. notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
  2327. controlBar: {
  2328. timeDivider: true, //当前时间和持续时间的分隔符
  2329. durationDisplay: true, //显示持续时间
  2330. remainingTimeDisplay: false, //是否显示剩余时间功能
  2331. fullscreenToggle: true, //全屏按钮
  2332. },
  2333. },
  2334. playerOptions1: {
  2335. playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
  2336. autoplay: false, //如果true,浏览器准备好时开始回放。
  2337. muted: false, // 默认情况下将会消除任何音频。
  2338. loop: false, // 导致视频一结束就重新开始。
  2339. preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  2340. language: "zh-CN",
  2341. aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  2342. fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
  2343. sources: [
  2344. {
  2345. type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
  2346. src: "", //url地址require("../../assets/media/aaa.mp4")
  2347. },
  2348. ],
  2349. // poster: require("../../assets/tu31.png"), //你的封面地址
  2350. // poster: dataRes.imgUrl, //你的封面地址
  2351. notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
  2352. controlBar: {
  2353. timeDivider: true, //当前时间和持续时间的分隔符
  2354. durationDisplay: true, //显示持续时间
  2355. remainingTimeDisplay: false, //是否显示剩余时间功能
  2356. fullscreenToggle: true, //全屏按钮
  2357. },
  2358. },
  2359. playerO: {},
  2360. noneBtnImg: false,
  2361. proVisible: false,
  2362. progress: 0,
  2363. questionAnswer: "",
  2364. answerQ: "", //问答标题
  2365. rateJson: [],
  2366. wbCount: 0,
  2367. wordCount: 0,
  2368. mindCount: 0,
  2369. askCount: 0,
  2370. noteCount: 0,
  2371. mindNetWorkCount: 0,
  2372. libraryCount: 0,
  2373. workCount: 0,
  2374. timeCount: 0,
  2375. answerCount: 0,
  2376. trainCount: 0,
  2377. evalCount: 0,
  2378. dialogImageUrl: "",
  2379. pictureDialog: false,
  2380. toolTypeList: [],
  2381. dialogVisible1: false,
  2382. dialogVisible2: false,
  2383. dialogVisible3: false,
  2384. dialogVisible6: false,
  2385. dialogVisible4: false,
  2386. isNoHomeWork: false,
  2387. dialogVisible5: false,
  2388. answerDialogVisible: false,
  2389. juriVisible: false,
  2390. timeDialogVisible: false,
  2391. radio: [],
  2392. isAsk: false,
  2393. askJson: {
  2394. askCount: 1,
  2395. askTitle: "",
  2396. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  2397. },
  2398. checkJson: [],
  2399. askList: [],
  2400. answerList: [],
  2401. navList: [],
  2402. addPzDialog: false,
  2403. pzConText: "",
  2404. worksStudent: [],
  2405. workStudent: [],
  2406. noWorksS: [],
  2407. isWorksS: [],
  2408. noWorksStudent: [],
  2409. toolindex: 0,
  2410. workTypeA: false,
  2411. workTypeB: false,
  2412. workTypeC: false,
  2413. isAnswer: false,
  2414. timer: null,
  2415. showType: 0,
  2416. fileType: 0,
  2417. showPDF: false,
  2418. noteName: "",
  2419. evaJuri: [],
  2420. evalua: "",
  2421. eTitle: "",
  2422. eName: "",
  2423. eJson: {},
  2424. fid: "", //一级
  2425. sid: "", //二级
  2426. tid: "", //二级
  2427. typeMode: 1,
  2428. eJSONNum: 0,
  2429. Etype: 1,
  2430. data: {
  2431. meta: {
  2432. name: "example",
  2433. author: "dd@163.com",
  2434. version: "0.2",
  2435. },
  2436. format: "node_array",
  2437. data: [{ id: "root", isroot: true, topic: "" }],
  2438. },
  2439. fullDialogVisible: false,
  2440. fulltype: "",
  2441. fullUrl: "",
  2442. commentIndexJson: {},
  2443. };
  2444. },
  2445. methods: {
  2446. jump() {
  2447. window.parent.postMessage({ tools: "43" }, "*");
  2448. },
  2449. previewImg(url) {
  2450. this.$hevueImgPreview(url);
  2451. },
  2452. change(val) {
  2453. console.log(val);
  2454. },
  2455. goTo(path) {
  2456. this.$router.push(path);
  2457. },
  2458. handlePictureCardPreview(url) {
  2459. this.dialogImageUrl = url;
  2460. this.pictureDialog = true;
  2461. },
  2462. clean(type) {
  2463. if (type == 1) {
  2464. this.studyJuri[0].cover.splice(0, 1);
  2465. } else if (type == 2) {
  2466. this.studyJuri[0].upVedio.splice(0, 1);
  2467. } else {
  2468. this.studyJuri[0].upFile.splice(0, 1);
  2469. }
  2470. },
  2471. handleClose(done) {
  2472. this.videoDetail.sources[0].src=''
  2473. this.commentIndexJson = {};
  2474. done();
  2475. },
  2476. fullTools() {
  2477. this.full = !this.full;
  2478. },
  2479. imgChange(file, fileList, type) {
  2480. if (type == 1) {
  2481. var _tmp = this.studyJuri[0].cover;
  2482. } else if (type == 2) {
  2483. var _tmp = this.studyJuri[0].upVedio;
  2484. } else {
  2485. var _tmp = this.studyJuri[0].upFile;
  2486. }
  2487. this.noneBtnImg = _tmp.length >= 1;
  2488. },
  2489. addImg(e) {
  2490. var el = e.currentTarget;
  2491. // this.$message.success('触发上传')
  2492. el.getElementsByTagName("input")[0].click();
  2493. },
  2494. addSelectAnswer() {
  2495. let params = [
  2496. {
  2497. uid: this.userid,
  2498. cid: this.id,
  2499. stage: this.courseType,
  2500. task: this.taskCount,
  2501. tool: this.toolindex,
  2502. content: this.selectAnswer.answer,
  2503. type: 7,
  2504. },
  2505. ];
  2506. this.ajax
  2507. .post(this.$store.state.api + "addCourseWorks", params)
  2508. .then((res) => {
  2509. this.$message({
  2510. message: "提交成功",
  2511. type: "success",
  2512. });
  2513. this.dialogVisibleSelect = false;
  2514. // this.selectAnswer = {};
  2515. this.selectSWorks();
  2516. this.selectStudent();
  2517. })
  2518. .catch((err) => {
  2519. this.$message.error("提交失败");
  2520. console.error(err);
  2521. });
  2522. },
  2523. addCourseWorks(i) {
  2524. var typesql;
  2525. if (this.fileType === 0) {
  2526. typesql = 1;
  2527. } else if (this.fileType === 1) {
  2528. typesql = 4;
  2529. } else {
  2530. typesql = 5;
  2531. }
  2532. if (this.workTypeA == true) {
  2533. this.$confirm(
  2534. "您已经提交了该作业了,如果您再提交将覆盖上次提交的作业!",
  2535. "提示",
  2536. {
  2537. confirmButtonText: "确定",
  2538. cancelButtonText: "取消",
  2539. type: "warning",
  2540. }
  2541. )
  2542. .then(() => {
  2543. let params = [
  2544. {
  2545. uid: this.userid,
  2546. cid: this.id,
  2547. stage: this.courseType,
  2548. task: i,
  2549. tool: this.toolindex,
  2550. content: this.studyJuri[0].cover[0].url,
  2551. type: typesql,
  2552. },
  2553. ];
  2554. this.ajax
  2555. .post(this.$store.state.api + "addCourseWorks", params)
  2556. .then((res) => {
  2557. this.$message({
  2558. message: "提交成功",
  2559. type: "success",
  2560. });
  2561. this.studyJuri[0].cover = [];
  2562. this.dialogVisible = false;
  2563. this.getCourseDetail();
  2564. })
  2565. .catch((err) => {
  2566. this.$message.error("提交失败");
  2567. console.error(err);
  2568. });
  2569. })
  2570. .catch(() => { });
  2571. } else {
  2572. let params = [
  2573. {
  2574. uid: this.userid,
  2575. cid: this.id,
  2576. stage: this.courseType,
  2577. task: i,
  2578. tool: this.toolindex,
  2579. content: this.studyJuri[0].cover[0].url,
  2580. type: typesql,
  2581. },
  2582. ];
  2583. this.ajax
  2584. .post(this.$store.state.api + "addCourseWorks", params)
  2585. .then((res) => {
  2586. this.$message({
  2587. message: "提交成功",
  2588. type: "success",
  2589. });
  2590. this.studyJuri[0].cover = [];
  2591. this.dialogVisible = false;
  2592. this.getCourseDetail();
  2593. })
  2594. .catch((err) => {
  2595. this.$message.error("提交失败");
  2596. console.error(err);
  2597. });
  2598. }
  2599. },
  2600. selectWorksStudent() {
  2601. let params = {
  2602. oid: this.oid,
  2603. cid: this.courseDetail.juri,
  2604. };
  2605. this.ajax
  2606. .get(this.$store.state.api + "selectWorksStudent", params)
  2607. .then((res) => {
  2608. var a = res.data[0];
  2609. for (var i = 0; i < this.isWorksS.length; i++) {
  2610. this.noWorksS[i] = [];
  2611. var studentK = [];
  2612. if (this.isWorksS[i].length > 0) {
  2613. for (var z = 0; z < this.isWorksS[i].length; z++) {
  2614. studentK.push(this.isWorksS[i][z].uid);
  2615. }
  2616. studentK = studentK.join(",");
  2617. for (var j = 0; j < a.length; j++) {
  2618. if (studentK.indexOf(a[j].userid) == -1) {
  2619. this.noWorksS[i].push({ student: a[j].name });
  2620. }
  2621. }
  2622. } else {
  2623. for (var k = 0; k < a.length; k++) {
  2624. this.noWorksS[i].push({ student: a[k].name });
  2625. }
  2626. }
  2627. }
  2628. this.$forceUpdate();
  2629. if (Object.keys(this.commentIndexJson).length) {
  2630. this.commentOther(
  2631. this.worksStudent[this.commentIndexJson.toolIndex][
  2632. this.commentIndexJson.wIndex
  2633. ],
  2634. this.commentIndexJson.toolIndex,
  2635. this.commentIndexJson.wIndex
  2636. );
  2637. }
  2638. })
  2639. .catch((err) => {
  2640. console.error(err);
  2641. });
  2642. },
  2643. selectStudent() {
  2644. //学生查看自己作业
  2645. let params = {
  2646. uid: this.userid,
  2647. cid: this.id,
  2648. s: this.courseType,
  2649. t: this.taskCount,
  2650. };
  2651. this.ajax
  2652. .get(this.$store.state.api + "selectStudentWorks", params)
  2653. .then((res) => {
  2654. var a =
  2655. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  2656. this.taskCount
  2657. ].toolChoose;
  2658. var b = res.data[0];
  2659. var c = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  2660. var y = [
  2661. "AVI",
  2662. "NAVI",
  2663. "MPEG",
  2664. "ASF",
  2665. "MOV",
  2666. "WMV",
  2667. "3GP",
  2668. "RM",
  2669. "RMVB",
  2670. "FLV",
  2671. "F4V",
  2672. "H.264",
  2673. "H.265",
  2674. "REAL VIDEO",
  2675. "MKV",
  2676. "WebM",
  2677. "HDDVD",
  2678. "MP4",
  2679. "MPG",
  2680. "M4V",
  2681. "MGV",
  2682. "OGV",
  2683. "QTM",
  2684. "STR",
  2685. "AMC",
  2686. "DVX",
  2687. "EVO",
  2688. "DAT",
  2689. "OGG",
  2690. "OGM",
  2691. ];
  2692. for (var i = 0; i < a.length; i++) {
  2693. this.workStudent[i] = [];
  2694. for (var j = 0; j < b.length; j++) {
  2695. if (i == b[j].tool) {
  2696. if (
  2697. (b[j].type == 1 ||
  2698. b[j].type == 4 ||
  2699. b[j].type == 5 ||
  2700. b[j].type == 6 ||
  2701. b[j].type == 7) &&
  2702. a[i].tool[0] != 15 &&
  2703. a[i].tool[0] != 4
  2704. ) {
  2705. if (
  2706. c.indexOf(
  2707. b[j].content
  2708. .split(".")
  2709. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  2710. ) != -1
  2711. ) {
  2712. this.workStudent[i].push({
  2713. works: b[j].content,
  2714. sName: b[j].name,
  2715. type: 1,
  2716. time: b[j].time,
  2717. });
  2718. } else if (
  2719. y.indexOf(
  2720. b[j].content
  2721. .split(".")
  2722. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  2723. ) != -1
  2724. ) {
  2725. this.workStudent[i].push({
  2726. userid: b[j].userid,
  2727. wid: b[j].id,
  2728. works: b[j].content,
  2729. sName: b[j].name,
  2730. type: 3,
  2731. time: b[j].time,
  2732. });
  2733. } else if (b[j].type == 6) {
  2734. this.workStudent[i].push({
  2735. userid: b[j].userid,
  2736. wid: b[j].id,
  2737. works: b[j].content,
  2738. sName: b[j].name,
  2739. type: 4,
  2740. time: b[j].time,
  2741. });
  2742. } else if (b[j].type == 7) {
  2743. this.workStudent[i].push({
  2744. userid: b[j].userid,
  2745. wid: b[j].id,
  2746. works: b[j].content,
  2747. sName: b[j].name,
  2748. type: 5,
  2749. time: b[j].time,
  2750. });
  2751. } else {
  2752. this.workStudent[i].push({
  2753. works: b[j].content,
  2754. sName: b[j].name,
  2755. type: 0,
  2756. time: b[j].time,
  2757. });
  2758. }
  2759. } else if (b[j].type == 3 && a[i].tool[0] == 15) {
  2760. this.workStudent[i].push({
  2761. works: b[j].content,
  2762. sName: b[j].name,
  2763. type: 2,
  2764. time: b[j].time,
  2765. });
  2766. } else if (b[j].type == 2 && a[i].tool[0] == 4) {
  2767. this.workStudent[i].push({
  2768. works: b[j].content,
  2769. sName: b[j].name,
  2770. type: 2,
  2771. time: b[j].time,
  2772. });
  2773. }
  2774. }
  2775. }
  2776. }
  2777. })
  2778. .catch((err) => {
  2779. console.error(err);
  2780. });
  2781. },
  2782. openVideo(w) {
  2783. this.videoDetail = {};
  2784. this.playerOptions1.sources[0].src = w;
  2785. this.videoDetail = this.playerOptions1;
  2786. this.videoVisible = true;
  2787. },
  2788. isLikes(wid, uid, t, c, isLikes) {
  2789. if (isLikes == false) {
  2790. let params = [
  2791. {
  2792. wid: wid,
  2793. lid: uid,
  2794. t: t,
  2795. c: c,
  2796. },
  2797. ];
  2798. this.ajax
  2799. .post(this.$store.state.api + "insertComment", params)
  2800. .then((res) => {
  2801. this.$message({
  2802. message: "点赞成功",
  2803. type: "success",
  2804. });
  2805. this.selectSWorks();
  2806. this.selectStudent();
  2807. })
  2808. .catch((err) => {
  2809. this.$message.error("点赞失败");
  2810. console.error(err);
  2811. });
  2812. } else {
  2813. let params = {
  2814. wid: wid,
  2815. lid: uid,
  2816. type: t,
  2817. };
  2818. this.ajax
  2819. .get(this.$store.state.api + "deleteComment", params)
  2820. .then((res) => {
  2821. this.$message({
  2822. message: "取消点赞成功",
  2823. type: "success",
  2824. });
  2825. this.selectSWorks();
  2826. this.selectStudent();
  2827. })
  2828. .catch((err) => {
  2829. console.error(err);
  2830. });
  2831. }
  2832. },
  2833. commentOther(w, toolIndex, wIndex) {
  2834. this.commentIndexJson = { toolIndex: toolIndex, wIndex: wIndex };
  2835. this.commentDetail = [];
  2836. this.commentDialogVisible = true;
  2837. if (w.works && w.type == 1) {
  2838. this.commentDetail = w;
  2839. this.pptImgUrl = "";
  2840. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
  2841. if (
  2842. a.indexOf(
  2843. w.works
  2844. .split(".")
  2845. [w.works.split(".").length - 1].toLocaleUpperCase()
  2846. ) != -1
  2847. ) {
  2848. this.pptImgUrl =
  2849. "https://view.officeapps.live.com/op/view.aspx?src=" + w.works;
  2850. this.showPDF = false;
  2851. } else if (
  2852. w.works
  2853. .split(".")
  2854. [w.works.split(".").length - 1].toLocaleUpperCase() == "PDF"
  2855. ) {
  2856. this.pptImgUrl = w.works;
  2857. this.showPDF = true;
  2858. }
  2859. } else if (w.works && w.type == 3 && this.commentDialogVisible == false) {
  2860. this.videoDetail = {};
  2861. this.playerOptions1.sources[0].src = w.works;
  2862. this.videoDetail = this.playerOptions1;
  2863. this.videoVisible = true;
  2864. } else if (w.works && w.type == 4) {
  2865. this.commentDetail = w;
  2866. this.eScore = JSON.parse(w.works);
  2867. this.rateJson =
  2868. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  2869. this.taskCount
  2870. ].toolChoose[toolIndex].rateJson;
  2871. } else {
  2872. this.commentDetail = w;
  2873. }
  2874. },
  2875. addComment(wid, uid, t) {
  2876. let params = [
  2877. {
  2878. wid: wid,
  2879. lid: uid,
  2880. t: t,
  2881. c: this.commentText,
  2882. },
  2883. ];
  2884. this.ajax
  2885. .post(this.$store.state.api + "insertComment", params)
  2886. .then((res) => {
  2887. this.$message({
  2888. message: "评论成功",
  2889. type: "success",
  2890. });
  2891. this.commentText = "";
  2892. this.selectSWorks();
  2893. this.selectStudent();
  2894. })
  2895. .catch((err) => {
  2896. this.$message.error("评论失败");
  2897. console.error(err);
  2898. });
  2899. },
  2900. openXz(w, i) {
  2901. this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
  2902. .taskJson[this.taskCount].toolChoose[i].selectJson
  2903. ? JSON.parse(
  2904. JSON.stringify(
  2905. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  2906. this.taskCount
  2907. ].toolChoose[i].selectJson
  2908. )
  2909. )
  2910. : { url: "", select: [], answer: [] };
  2911. var a = w.works.split(",");
  2912. for (var k = 0; k < a.length; k++) {
  2913. a[k] = parseInt(a[k]);
  2914. }
  2915. this.selectAnswer = { answer: a, stu: w.sName };
  2916. this.isSelect = true;
  2917. this.dialogVisibleSelect = true;
  2918. },
  2919. openPj(w, toolindex) {
  2920. this.isStar = true;
  2921. this.eScore = JSON.parse(w);
  2922. this.rateJson =
  2923. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  2924. this.taskCount
  2925. ].toolChoose[toolindex].rateJson;
  2926. this.studentEvalDialogVisible = true;
  2927. },
  2928. selectSWorks() {
  2929. //教师查看全部作业
  2930. let params = {
  2931. cid: this.id,
  2932. s: this.courseType,
  2933. t: this.taskCount,
  2934. };
  2935. this.ajax
  2936. .get(this.$store.state.api + "selectSWorks", params)
  2937. .then((res) => {
  2938. var a =
  2939. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  2940. this.taskCount
  2941. ].toolChoose;
  2942. var b = res.data[0];
  2943. var c = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  2944. var y = [
  2945. "AVI",
  2946. "NAVI",
  2947. "MPEG",
  2948. "ASF",
  2949. "MOV",
  2950. "WMV",
  2951. "3GP",
  2952. "RM",
  2953. "RMVB",
  2954. "FLV",
  2955. "F4V",
  2956. "H.264",
  2957. "H.265",
  2958. "REAL VIDEO",
  2959. "MKV",
  2960. "WebM",
  2961. "HDDVD",
  2962. "MP4",
  2963. "MPG",
  2964. "M4V",
  2965. "MGV",
  2966. "OGV",
  2967. "QTM",
  2968. "STR",
  2969. "AMC",
  2970. "DVX",
  2971. "EVO",
  2972. "DAT",
  2973. "OGG",
  2974. "OGM",
  2975. ];
  2976. var d = res.data[1];
  2977. var e = res.data[2];
  2978. for (var i = 0; i < a.length; i++) {
  2979. this.worksStudent[i] = [];
  2980. this.isWorksS[i] = [];
  2981. this.checkJson[i] = [];
  2982. for (var j = 0; j < b.length; j++) {
  2983. var likesCount = 0;
  2984. var commentCount = 0;
  2985. var isLikes = false;
  2986. var commentJson = [];
  2987. var data = b[j];
  2988. if (i == b[j].tool) {
  2989. if (data.type == 2 && a[i].tool[0] == 4) {
  2990. var checkL = JSON.parse(data.content)[0].anwer.split(",");
  2991. for (var z = 0; z < checkL.length; z++) {
  2992. if (!this.checkJson[i][z]) {
  2993. this.checkJson[i].push({
  2994. checkCount: [],
  2995. checkPerson: [],
  2996. });
  2997. }
  2998. if (!this.checkJson[i][z].checkCount.length) {
  2999. this.checkJson[i][z].checkCount = [];
  3000. let _askItemCount = JSON.parse(data.content)[0].askJson
  3001. .askJson[z].askItem;
  3002. for (var aic = 0; aic < _askItemCount; aic++) {
  3003. this.checkJson[i][z].checkCount.push(0);
  3004. }
  3005. }
  3006. this.checkJson[i][z].checkPerson[parseInt(checkL[z])]
  3007. ? this.checkJson[i][z].checkPerson[
  3008. parseInt(checkL[z])
  3009. ].push(data.name)
  3010. : (this.checkJson[i][z].checkPerson[parseInt(checkL[z])] =
  3011. [data.name]);
  3012. this.checkJson[i][z].checkCount[parseInt(checkL[z])]
  3013. ? this.checkJson[i][z].checkCount[parseInt(checkL[z])]++
  3014. : (this.checkJson[i][z].checkCount[
  3015. parseInt(checkL[z])
  3016. ] = 1);
  3017. }
  3018. }
  3019. for (var k = 0; k < d.length; k++) {
  3020. //点赞
  3021. if (d[k].workId == b[j].id) {
  3022. likesCount++;
  3023. if (d[k].likesId == this.userid) {
  3024. isLikes = true;
  3025. }
  3026. }
  3027. }
  3028. for (var l = 0; l < e.length; l++) {
  3029. //评论
  3030. if (e[l].workId == b[j].id) {
  3031. commentCount++;
  3032. if (e[l].comment != "") {
  3033. commentJson.push({
  3034. commentText: e[l].comment,
  3035. commentTime: e[l].commentTime,
  3036. commentPeople: e[l].commentPeople,
  3037. });
  3038. }
  3039. }
  3040. }
  3041. if (
  3042. (b[j].type == 1 ||
  3043. b[j].type == 4 ||
  3044. b[j].type == 5 ||
  3045. b[j].type == 6 ||
  3046. b[j].type == 7) &&
  3047. a[i].tool[0] != 15 &&
  3048. a[i].tool[0] != 4
  3049. ) {
  3050. if (
  3051. c.indexOf(
  3052. b[j].content
  3053. .split(".")
  3054. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  3055. ) != -1
  3056. ) {
  3057. this.worksStudent[i].push({
  3058. userid: b[j].userid,
  3059. wid: b[j].id,
  3060. works: b[j].content,
  3061. sName: b[j].name,
  3062. type: 1,
  3063. time: b[j].time,
  3064. likesCount: likesCount,
  3065. commentCount: commentCount,
  3066. isLikes: isLikes,
  3067. commentJson: commentJson,
  3068. });
  3069. } else if (
  3070. y.indexOf(
  3071. b[j].content
  3072. .split(".")
  3073. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  3074. ) != -1
  3075. ) {
  3076. this.worksStudent[i].push({
  3077. userid: b[j].userid,
  3078. wid: b[j].id,
  3079. works: b[j].content,
  3080. sName: b[j].name,
  3081. type: 3,
  3082. time: b[j].time,
  3083. likesCount: likesCount,
  3084. commentCount: commentCount,
  3085. isLikes: isLikes,
  3086. commentJson: commentJson,
  3087. });
  3088. } else if (b[j].type == 6) {
  3089. this.worksStudent[i].push({
  3090. userid: b[j].userid,
  3091. wid: b[j].id,
  3092. works: b[j].content,
  3093. sName: b[j].name,
  3094. type: 4,
  3095. time: b[j].time,
  3096. likesCount: likesCount,
  3097. commentCount: commentCount,
  3098. isLikes: isLikes,
  3099. commentJson: commentJson,
  3100. });
  3101. } else if (b[j].type == 7) {
  3102. this.worksStudent[i].push({
  3103. userid: b[j].userid,
  3104. wid: b[j].id,
  3105. works: b[j].content,
  3106. sName: b[j].name,
  3107. type: 5,
  3108. time: b[j].time,
  3109. likesCount: likesCount,
  3110. commentCount: commentCount,
  3111. isLikes: isLikes,
  3112. commentJson: commentJson,
  3113. });
  3114. } else {
  3115. this.worksStudent[i].push({
  3116. userid: b[j].userid,
  3117. wid: b[j].id,
  3118. works: b[j].content,
  3119. sName: b[j].name,
  3120. type: 0,
  3121. time: b[j].time,
  3122. likesCount: likesCount,
  3123. commentCount: commentCount,
  3124. isLikes: isLikes,
  3125. commentJson: commentJson,
  3126. });
  3127. }
  3128. } else if (b[j].type == 3 && a[i].tool[0] == 15) {
  3129. this.worksStudent[i].push({
  3130. userid: b[j].userid,
  3131. wid: b[j].id,
  3132. works: b[j].content,
  3133. sName: b[j].name,
  3134. type: 2,
  3135. time: b[j].time,
  3136. likesCount: likesCount,
  3137. commentCount: commentCount,
  3138. isLikes: isLikes,
  3139. commentJson: commentJson,
  3140. });
  3141. } else if (b[j].type == 2 && a[i].tool[0] == 4) {
  3142. this.worksStudent[i].push({
  3143. userid: b[j].userid,
  3144. wid: b[j].id,
  3145. works: b[j].content,
  3146. sName: b[j].name,
  3147. type: 2,
  3148. time: b[j].time,
  3149. likesCount: likesCount,
  3150. commentCount: commentCount,
  3151. isLikes: isLikes,
  3152. commentJson: commentJson,
  3153. });
  3154. }
  3155. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  3156. }
  3157. }
  3158. }
  3159. for (var i = 0; i < a.length; i++) {
  3160. for (var j = 0; j < b.length; j++) {
  3161. var data = b[j];
  3162. if (i == b[j].tool) {
  3163. if (data.type == 2) {
  3164. for (var z = 0; z < this.checkJson[i].length; z++) {
  3165. this.checkJson[i][z].checkPerent = [];
  3166. for (
  3167. var k = 0;
  3168. k < this.checkJson[i][z].checkCount.length;
  3169. k++
  3170. ) {
  3171. this.checkJson[i][z].checkPerent.push(
  3172. Math.round(
  3173. (this.checkJson[i][z].checkCount[k] /
  3174. parseInt(this.worksStudent[i].length)) *
  3175. 100
  3176. )
  3177. );
  3178. }
  3179. }
  3180. }
  3181. }
  3182. }
  3183. }
  3184. this.selectWorksStudent();
  3185. })
  3186. .catch((err) => {
  3187. console.error(err);
  3188. });
  3189. },
  3190. async beforeUpload1(event, type, i) {
  3191. // this.$message.success('进入上传')
  3192. var file = event.target.files[0];
  3193. var credentials = {
  3194. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  3195. secretAccessKey: "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",
  3196. }; //秘钥形式的登录上传
  3197. window.AWS.config.update(credentials);
  3198. window.AWS.config.region = "cn-northwest-1"; //设置区域
  3199. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  3200. var _this = this;
  3201. var b = [
  3202. "DOC",
  3203. "DOCX",
  3204. "DOCM",
  3205. "DOTM",
  3206. "DOTX",
  3207. "PPTX",
  3208. "PPSX",
  3209. "PPT",
  3210. "PPS",
  3211. "PPTM",
  3212. "POTM",
  3213. "PPAM",
  3214. "POTX",
  3215. "PPSM",
  3216. ];
  3217. var excelA = ["XLSX", "XLXB", "XLS", "XLSM"];
  3218. var photoA = [
  3219. "BMP",
  3220. "GIF",
  3221. "PNG",
  3222. "JPGE",
  3223. "JPG",
  3224. "TIF",
  3225. "PCX",
  3226. "TGA",
  3227. "EXIF",
  3228. "FPX",
  3229. "SVG",
  3230. "APNG",
  3231. ];
  3232. if (
  3233. b.indexOf(
  3234. file.name
  3235. .split(".")
  3236. [file.name.split(".").length - 1].toLocaleUpperCase()
  3237. ) != -1
  3238. ) {
  3239. if (file.size / 1024 / 1024 > 10) {
  3240. this.$message.error("上传文件大于10兆,请重新选择文件!");
  3241. return;
  3242. }
  3243. } else if (
  3244. excelA.indexOf(
  3245. file.name
  3246. .split(".")
  3247. [file.name.split(".").length - 1].toLocaleUpperCase()
  3248. ) != "-1"
  3249. ) {
  3250. if (file.size / 1024 / 1024 > 5) {
  3251. this.$message.error("添加成上传文件大于5兆,请重新选择文件!");
  3252. return;
  3253. }
  3254. }
  3255. if (
  3256. photoA.indexOf(
  3257. file.name
  3258. .split(".")
  3259. [file.name.split(".").length - 1].toLocaleUpperCase()
  3260. ) != -1
  3261. ) {
  3262. // const blob = await imageConversion.compress(file, 0.8)
  3263. const blob = await imageConversion.compressAccurately(file, 32);
  3264. file = new File([blob], file.name, { type: file.type });
  3265. }
  3266. _this.progress = 0;
  3267. _this.proVisible = true;
  3268. if (file) {
  3269. var params = {
  3270. Key:
  3271. file.name.split(".")[0] +
  3272. new Date().getTime() +
  3273. "." +
  3274. file.name.split(".")[file.name.split(".").length - 1],
  3275. ContentType: file.type,
  3276. Body: file,
  3277. "Access-Control-Allow-Credentials": "*",
  3278. ACL: "public-read",
  3279. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  3280. var options = {
  3281. // partSize: 2048 * 1024 * 1024,
  3282. partSize: 1024 * 1024 * 1024,
  3283. queueSize: 2,
  3284. leavePartsOnError: true,
  3285. };
  3286. bucket
  3287. .upload(params, options)
  3288. .on("httpUploadProgress", function (evt) {
  3289. //这里可以写进度条
  3290. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  3291. _this.progress = parseInt((evt.loaded * 80) / evt.total);
  3292. })
  3293. .send(function (err, data) {
  3294. _this.progress = 100;
  3295. setTimeout(() => {
  3296. _this.proVisible = false;
  3297. }, 1000);
  3298. if (err) {
  3299. var a = _this.$refs.upload1.uploadFiles;
  3300. a.splice(a.length - 1, a.length);
  3301. _this.$message.error("上传失败");
  3302. } else {
  3303. // _this.$message.success('上传成功')
  3304. if (type == 1) {
  3305. _this.studyJuri[0].cover.push({
  3306. name: file.name,
  3307. url: data.Location,
  3308. uid: file.uid,
  3309. });
  3310. var b = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  3311. var c = [
  3312. "AVI",
  3313. "NAVI",
  3314. "MPEG",
  3315. "ASF",
  3316. "MOV",
  3317. "WMV",
  3318. "3GP",
  3319. "RM",
  3320. "RMVB",
  3321. "FLV",
  3322. "F4V",
  3323. "H.264",
  3324. "H.265",
  3325. "REAL VIDEO",
  3326. "MKV",
  3327. "WebM",
  3328. "HDDVD",
  3329. "MP4",
  3330. "MPG",
  3331. "M4V",
  3332. "MGV",
  3333. "OGV",
  3334. "QTM",
  3335. "STR",
  3336. "AMC",
  3337. "DVX",
  3338. "EVO",
  3339. "DAT",
  3340. "OGG",
  3341. "OGM",
  3342. ];
  3343. if (
  3344. c.indexOf(
  3345. _this.studyJuri[0].cover[0].url
  3346. .split(".")
  3347. [
  3348. _this.studyJuri[0].cover[0].url.split(".").length - 1
  3349. ].toLocaleUpperCase()
  3350. ) != -1
  3351. ) {
  3352. _this.fileType = 2;
  3353. } else if (
  3354. b.indexOf(
  3355. _this.studyJuri[0].cover[0].url
  3356. .split(".")
  3357. [
  3358. _this.studyJuri[0].cover[0].url.split(".").length - 1
  3359. ].toLocaleUpperCase()
  3360. ) != -1
  3361. ) {
  3362. _this.fileType = 1;
  3363. } else {
  3364. _this.fileType = 0;
  3365. }
  3366. _this.imgChange(null, null, type);
  3367. } else if (type == 2) {
  3368. _this.upToolImg = data.Location;
  3369. _this.imgChange(null, null, type);
  3370. _this.addCourseWorks(i);
  3371. }
  3372. _this.imgChange(null, null, type);
  3373. console.log(data.Location);
  3374. // _this.$message.success('上传成功'+data.Location)
  3375. }
  3376. });
  3377. }
  3378. },
  3379. beforeUpload2(event, type) {
  3380. var file = event.target.files[0];
  3381. var credentials = {
  3382. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  3383. secretAccessKey: "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",
  3384. }; //秘钥形式的登录上传
  3385. window.AWS.config.update(credentials);
  3386. window.AWS.config.region = "cn-northwest-1"; //设置区域
  3387. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  3388. var _this = this;
  3389. _this.progress = 0;
  3390. _this.proVisible = true;
  3391. if (file) {
  3392. var params = {
  3393. Key:
  3394. file.name.split(".")[0] +
  3395. new Date().getTime() +
  3396. "." +
  3397. file.name.split(".")[file.name.split(".").length - 1],
  3398. ContentType: file.type,
  3399. Body: file,
  3400. "Access-Control-Allow-Credentials": "*",
  3401. ACL: "public-read",
  3402. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  3403. var options = {
  3404. partSize: 2048 * 1024 * 1024,
  3405. queueSize: 2,
  3406. leavePartsOnError: true,
  3407. };
  3408. bucket
  3409. .upload(params, options)
  3410. .on("httpUploadProgress", function (evt) {
  3411. //这里可以写进度条
  3412. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  3413. _this.progress = parseInt((evt.loaded * 80) / evt.total);
  3414. })
  3415. .send(function (err, data) {
  3416. _this.progress = 100;
  3417. setTimeout(() => {
  3418. _this.proVisible = false;
  3419. }, 1000);
  3420. if (err) {
  3421. var a = _this.$refs.upload1.uploadFiles;
  3422. a.splice(a.length - 1, a.length);
  3423. _this.$message.error("上传失败");
  3424. } else {
  3425. if (type == 2) {
  3426. _this.studyJuri[0].upVedio.push({
  3427. name: file.name,
  3428. url: data.Location,
  3429. uid: file.uid,
  3430. });
  3431. _this.imgChange(null, null, type);
  3432. } else if (type == 3) {
  3433. _this.studyJuri[0].upFile.push({
  3434. name: file.name,
  3435. url: data.Location,
  3436. uid: file.uid,
  3437. });
  3438. _this.imgChange(null, null, type);
  3439. }
  3440. console.log(data.Location);
  3441. }
  3442. });
  3443. }
  3444. },
  3445. allScrell() {
  3446. window.parent.postMessage({ allScreen: this.screenType }, "*");
  3447. },
  3448. nextOrpreSteps(t) {
  3449. document.scrollingElement.scrollTop = 0;
  3450. this.showType = 0;
  3451. var b = this.chapInfoList.length - 1;
  3452. if (t == 0) {
  3453. if (this.courseType == 0) {
  3454. if (this.taskCount == 0) {
  3455. this.navList[this.courseType].isOpen = false;
  3456. this.courseType = b;
  3457. this.taskCount =
  3458. this.chapInfoList[this.courseType].chapterInfo[0].taskJson
  3459. .length - 1;
  3460. this.navList[this.courseType].isOpen = true;
  3461. } else {
  3462. this.taskCount--;
  3463. }
  3464. } else {
  3465. if (this.taskCount == 0) {
  3466. this.navList[this.courseType].isOpen = false;
  3467. this.courseType--;
  3468. this.taskCount =
  3469. this.chapInfoList[this.courseType].chapterInfo[0].taskJson
  3470. .length - 1;
  3471. this.navList[this.courseType].isOpen = true;
  3472. } else {
  3473. this.taskCount--;
  3474. }
  3475. }
  3476. } else {
  3477. var b = this.chapInfoList.length - 1;
  3478. if (this.courseType == b) {
  3479. if (
  3480. this.taskCount ==
  3481. this.chapInfoList[this.courseType].chapterInfo[0].taskJson.length -
  3482. 1
  3483. ) {
  3484. this.navList[this.courseType].isOpen = false;
  3485. this.courseType = 0;
  3486. this.taskCount = 0;
  3487. this.navList[this.courseType].isOpen = true;
  3488. } else {
  3489. this.taskCount++;
  3490. }
  3491. } else {
  3492. if (
  3493. this.taskCount ==
  3494. this.chapInfoList[this.courseType].chapterInfo[0].taskJson.length -
  3495. 1
  3496. ) {
  3497. this.navList[this.courseType].isOpen = false;
  3498. this.courseType++;
  3499. this.taskCount = 0;
  3500. this.navList[this.courseType].isOpen = true;
  3501. } else {
  3502. this.taskCount++;
  3503. }
  3504. }
  3505. // if (
  3506. // this.taskCount ==
  3507. // this.chapInfo.chapterInfo[0].taskJson.length - 1
  3508. // ) {
  3509. // this.taskCount = this.chapInfo.chapterInfo[0].taskJson.length - 1;
  3510. // } else {
  3511. // this.taskCount++;
  3512. // }
  3513. }
  3514. this.navId = this.navList[this.courseType].task[this.taskCount].id;
  3515. // if (this.vedio[this.taskCount].length > 0) {
  3516. // var a =
  3517. // document.getElementsByClassName("box_course")[this.taskCount]
  3518. // .offsetHeight;
  3519. // document.getElementsByClassName("vedioList")[
  3520. // this.taskCount
  3521. // ].style.height = a + "px";
  3522. // document.getElementsByClassName("navBox")[this.taskCount].style.height =
  3523. // a - 40 + "px";
  3524. // }
  3525. this.isNoHomeWork = false;
  3526. (this.studyJuri = [
  3527. {
  3528. content: "",
  3529. cover: [],
  3530. upVedio: [],
  3531. upFile: [],
  3532. },
  3533. ]),
  3534. (this.radio = []);
  3535. this.isClickNav = "";
  3536. this.getHomeWork();
  3537. this.getCourseDetail();
  3538. this.$forceUpdate();
  3539. },
  3540. openTask(s, n, i) {
  3541. document.scrollingElement.scrollTop = 0;
  3542. this.courseType = s;
  3543. this.navId = i;
  3544. this.taskCount = n;
  3545. this.showType = 0;
  3546. this.isNoHomeWork = false;
  3547. (this.studyJuri = [
  3548. {
  3549. content: "",
  3550. cover: [],
  3551. upVedio: [],
  3552. upFile: [],
  3553. },
  3554. ]),
  3555. (this.radio = []);
  3556. // setTimeout(() => {
  3557. // let a = document.getElementById(i);
  3558. // if (a.offsetTop - 110 == 0) {
  3559. // window.scrollTo(0, 0);
  3560. // } else {
  3561. // window.scrollTo(0, a.offsetTop);
  3562. // }
  3563. // }, 0);
  3564. this.selectPz();
  3565. this.getHomeWork();
  3566. this.getCourseDetail();
  3567. },
  3568. get(i) {
  3569. this.navList[i].isOpen = !this.navList[i].isOpen;
  3570. },
  3571. addQuestion() {
  3572. this.answerList.push({
  3573. answerTitle: this.answerQ,
  3574. answer: this.questionAnswer,
  3575. });
  3576. let params = [
  3577. {
  3578. uid: this.userid,
  3579. cid: this.id,
  3580. stage: this.courseType,
  3581. task: this.taskCount,
  3582. tool: this.toolindex,
  3583. content: JSON.stringify(this.answerList),
  3584. type: 3,
  3585. },
  3586. ];
  3587. this.ajax
  3588. .post(this.$store.state.api + "addCourseWorks", params)
  3589. .then((res) => {
  3590. this.$message({
  3591. message: "提交成功",
  3592. type: "success",
  3593. });
  3594. this.answerList = [];
  3595. this.answerDialogVisible = false;
  3596. })
  3597. .catch((err) => {
  3598. this.$message.error("提交失败");
  3599. console.error(err);
  3600. });
  3601. },
  3602. getCourseDetail() {
  3603. const loading = this.$loading.service({
  3604. background: "rgba(255, 255, 255, 0.7)",
  3605. target: document.querySelector(".student_table"),
  3606. });
  3607. // this.navList[0].isOpen = false;
  3608. // this.navList[this.courseType].isOpen = true;
  3609. // this.courseType = this.courseTypeLine;
  3610. // this.navId = this.navList[this.courseType].task[this.taskCount].id;
  3611. let params = {
  3612. courseId: this.id,
  3613. };
  3614. this.ajax
  3615. .get(this.$store.state.api + "selectCourseDetail", params)
  3616. .then((res) => {
  3617. loading.close();
  3618. var a = JSON.parse(res.data[0][0].chapters)[this.courseType]
  3619. .chapterInfo[0].taskJson;
  3620. var b = [
  3621. "AVI",
  3622. "NAVI",
  3623. "MPEG",
  3624. "ASF",
  3625. "MOV",
  3626. "WMV",
  3627. "3GP",
  3628. "RM",
  3629. "RMVB",
  3630. "FLV",
  3631. "F4V",
  3632. "H.264",
  3633. "H.265",
  3634. "REAL VIDEO",
  3635. "MKV",
  3636. "WebM",
  3637. "HDDVD",
  3638. "MP4",
  3639. "MPG",
  3640. "M4V",
  3641. "MGV",
  3642. "OGV",
  3643. "QTM",
  3644. "STR",
  3645. "AMC",
  3646. "DVX",
  3647. "EVO",
  3648. "DAT",
  3649. "OGG",
  3650. "OGM",
  3651. ];
  3652. for (var i = 0; i < a.length; i++) {
  3653. var c = a[i].chapterData;
  3654. this.vedio[i] = [];
  3655. this.textList[i] = [];
  3656. this.lineList[i] = [];
  3657. this.chapToolList[i] = [];
  3658. this.file[i] = [];
  3659. for (var j = 0; j < c.length; j++) {
  3660. if (c[j].type == 7) {
  3661. this.chapToolList[i].push(c[j]);
  3662. } else if (c[j].type == 8) {
  3663. this.lineList[i].push(c[j]);
  3664. } else if (c[j].type == 6) {
  3665. this.textList[i].push(c[j]);
  3666. } else {
  3667. if (
  3668. b.indexOf(
  3669. c[j].url
  3670. .split(".")
  3671. [c[j].url.split(".").length - 1].toLocaleUpperCase()
  3672. ) != -1
  3673. ) {
  3674. this.vedio[i].push(c[j]);
  3675. } else {
  3676. this.file[i].push(c[j]);
  3677. }
  3678. }
  3679. }
  3680. var d = JSON.parse(JSON.stringify(this.playerOptions));
  3681. d.sources[0].src =
  3682. this.vedio[i].length > 0 ? this.vedio[i][0].url : this.mr;
  3683. this.playerO[i] = d;
  3684. }
  3685. this.courseDetail = res.data[0][0];
  3686. this.evalua = res.data[0][0].evaId;
  3687. this.chapInfo = JSON.parse(this.courseDetail.chapters)[
  3688. this.courseType
  3689. ];
  3690. this.chapInfoList = JSON.parse(this.courseDetail.chapters);
  3691. if (this.navList.length == 0) {
  3692. this.navList = [];
  3693. for (var l = 0; l < this.chapInfoList.length; l++) {
  3694. var q = this.chapInfoList[l].dyName;
  3695. var w = this.chapInfoList[l].chapterInfo[0].taskJson;
  3696. var e;
  3697. this.navList.push({
  3698. dyName: q,
  3699. isOpen: l === 0 ? true : false,
  3700. task: [],
  3701. });
  3702. for (var r = 0; r < w.length; r++) {
  3703. e = w[r].task;
  3704. this.navList[l].task.push({ taskName: e, id: l + "-" + r });
  3705. this.navId = this.navId ? this.navId : l + "-" + r;
  3706. }
  3707. }
  3708. }
  3709. this.navList[0].isOpen = false;
  3710. this.navList[this.courseType].isOpen = true;
  3711. this.navId = this.navList[this.courseType].task[this.taskCount].id;
  3712. for (var l = 0; l < this.chapInfoList.length; l++) {
  3713. var w = this.chapInfoList[l].chapterInfo[0].taskJson;
  3714. for (var m = 0; m < w.length; m++) {
  3715. w[m].id = l + "-" + m;
  3716. }
  3717. }
  3718. if (
  3719. !this.vedio[this.taskCount][0] ||
  3720. this.vedio[this.taskCount][0].url == ""
  3721. ) {
  3722. if (
  3723. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3724. this.taskCount
  3725. ].chapterData.length > 0
  3726. ) {
  3727. if (
  3728. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3729. this.taskCount
  3730. ].chapterData[0].type != 8
  3731. ) {
  3732. if (
  3733. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3734. this.taskCount
  3735. ].chapterData[0].type == 3
  3736. ) {
  3737. let _url =
  3738. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3739. this.taskCount
  3740. ].chapterData[0].url;
  3741. if (
  3742. _url
  3743. .split(".")
  3744. [_url.split(".").length - 1].toLocaleUpperCase() == "PDF"
  3745. ) {
  3746. this.showType = 3;
  3747. this.pptImgUrl1 = _url;
  3748. this.isClickNav = "word0";
  3749. } else if (
  3750. this.isAssetTypeAnImage(
  3751. _url
  3752. .split(".")
  3753. [_url.split(".").length - 1].toLocaleLowerCase()
  3754. )
  3755. ) {
  3756. this.showType = 4;
  3757. this.pptImgUrl1 = _url;
  3758. this.isClickNav = "word0";
  3759. } else {
  3760. this.showType = 2;
  3761. this.pptImgUrl1 =
  3762. "https://view.officeapps.live.com/op/view.aspx?src=" +
  3763. _url;
  3764. this.isClickNav = "word0";
  3765. }
  3766. } else if (
  3767. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3768. this.taskCount
  3769. ].chapterData[0].type == 6
  3770. ) {
  3771. this.showType = 1;
  3772. this.text = this.textList[this.taskCount][0];
  3773. this.isClickNav = "text0";
  3774. }
  3775. } else {
  3776. for (
  3777. var y = 0;
  3778. y <
  3779. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3780. this.taskCount
  3781. ].chapterData.length;
  3782. y++
  3783. ) {
  3784. if (
  3785. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  3786. this.taskCount
  3787. ].chapterData[y].type != 8
  3788. ) {
  3789. if (
  3790. this.chapInfoList[this.courseType].chapterInfo[0]
  3791. .taskJson[this.taskCount].chapterData[y].type == 3
  3792. ) {
  3793. let _url =
  3794. this.chapInfoList[this.courseType].chapterInfo[0]
  3795. .taskJson[this.taskCount].chapterData[y].url;
  3796. if (
  3797. _url
  3798. .split(".")
  3799. [_url.split(".").length - 1].toLocaleUpperCase() ==
  3800. "PDF"
  3801. ) {
  3802. this.showType = 3;
  3803. this.pptImgUrl1 = _url;
  3804. } else if (
  3805. this.isAssetTypeAnImage(
  3806. _url
  3807. .split(".")
  3808. [_url.split(".").length - 1].toLocaleLowerCase()
  3809. )
  3810. ) {
  3811. this.showType = 4;
  3812. this.pptImgUrl1 = _url;
  3813. } else {
  3814. this.showType = 2;
  3815. this.pptImgUrl1 =
  3816. "https://view.officeapps.live.com/op/view.aspx?src=" +
  3817. _url;
  3818. }
  3819. } else if (
  3820. this.chapInfoList[this.courseType].chapterInfo[0]
  3821. .taskJson[this.taskCount].chapterData[y].type == 6
  3822. ) {
  3823. this.showType = 1;
  3824. this.text = this.textList[this.taskCount][0];
  3825. }
  3826. }
  3827. }
  3828. }
  3829. }
  3830. } else {
  3831. this.isClickNav = "video0";
  3832. }
  3833. setTimeout(() => {
  3834. this.checkEva();
  3835. }, 500);
  3836. this.selectStudent();
  3837. this.selectSWorks();
  3838. let _this = this;
  3839. _this.timer = setInterval(function () {
  3840. _this.selectSWorks();
  3841. _this.selectStudent();
  3842. _this.selectSLook();
  3843. }, 5000);
  3844. _this.$nextTick(function () {
  3845. setTimeout(() => {
  3846. var a =
  3847. document.getElementsByClassName("box_course")[0].offsetHeight;
  3848. document.getElementsByClassName("vedioList")[0].style.height =
  3849. a + "px";
  3850. document.getElementsByClassName("navBox")[0].style.height =
  3851. a - 40 + "px";
  3852. if (_this.vedio[_this.taskCount].length > 0) {
  3853. _this.vedioTime = [];
  3854. for (var i = 0; i < _this.vedio[_this.taskCount].length; i++) {
  3855. _this.vedioTime[i] = document.getElementsByClassName(
  3856. "vjs-duration-display"
  3857. )[i].textContent;
  3858. }
  3859. }
  3860. }, 500);
  3861. });
  3862. })
  3863. .catch((err) => {
  3864. loading.close();
  3865. console.error(err);
  3866. });
  3867. },
  3868. addPz() {
  3869. if (this.pzConText == "") {
  3870. this.$message.error("批注不能为空!");
  3871. return;
  3872. }
  3873. let params = [
  3874. {
  3875. cid: this.id,
  3876. uid: this.userid,
  3877. s: this.courseType,
  3878. t: this.taskCount,
  3879. c: this.pzConText,
  3880. },
  3881. ];
  3882. this.ajax
  3883. .post(this.$store.state.api + "addPz", params)
  3884. .then((res) => {
  3885. this.$message({
  3886. message: "添加成功",
  3887. type: "success",
  3888. });
  3889. this.pzConText = "";
  3890. this.addPzDialog = false;
  3891. this.selectPz();
  3892. })
  3893. .catch((err) => {
  3894. this.$message.error("添加失败");
  3895. console.error(err);
  3896. });
  3897. },
  3898. selectPz() {
  3899. let params = {
  3900. cid: this.id,
  3901. s: this.courseType,
  3902. t: this.taskCount,
  3903. };
  3904. this.ajax
  3905. .get(this.$store.state.api + "selectPzList", params)
  3906. .then((res) => {
  3907. this.pzList = res.data[0];
  3908. })
  3909. .catch((err) => {
  3910. console.error(err);
  3911. });
  3912. },
  3913. updateSLook() {
  3914. let params = {
  3915. sopen: this.sIsOpen == false ? 1 : 2,
  3916. cid: this.id,
  3917. };
  3918. this.ajax
  3919. .get(this.$store.state.api + "updateCourseSLook", params)
  3920. .then((res) => {
  3921. if (this.sIsOpen == true) {
  3922. this.$message({
  3923. message: "权限开放成功",
  3924. type: "success",
  3925. });
  3926. } else {
  3927. this.$message({
  3928. message: "权限关闭成功",
  3929. type: "success",
  3930. });
  3931. }
  3932. })
  3933. .catch((err) => {
  3934. console.error(err);
  3935. });
  3936. },
  3937. selectSLook() {
  3938. let params = {
  3939. cid: this.id,
  3940. };
  3941. this.ajax
  3942. .get(this.$store.state.api + "selectCourseSLook", params)
  3943. .then((res) => {
  3944. this.sIsOpen = res.data[0][0].sopen == 1 ? false : true;
  3945. })
  3946. .catch((err) => {
  3947. console.error(err);
  3948. });
  3949. },
  3950. getHomeWork() {
  3951. let params = {
  3952. cid: this.id,
  3953. stage: this.courseType,
  3954. task: this.taskCount,
  3955. uid: this.userid,
  3956. };
  3957. this.ajax
  3958. .get(this.$store.state.api + "selectWork", params)
  3959. .then((res) => {
  3960. if (res.data[0].length > 0) {
  3961. this.studyJuri = JSON.parse(res.data[0][0].content);
  3962. this.isNoHomeWork = true;
  3963. }
  3964. })
  3965. .catch((err) => {
  3966. console.error(err);
  3967. });
  3968. },
  3969. isAssetTypeAnImage(ext) {
  3970. return (
  3971. [
  3972. "png",
  3973. "jpg",
  3974. "jpeg",
  3975. "bmp",
  3976. "gif",
  3977. "webp",
  3978. "psd",
  3979. "svg",
  3980. "tiff",
  3981. ].indexOf(ext) !== -1
  3982. );
  3983. },
  3984. switchVideo(media) {
  3985. this.playerO = {};
  3986. this.playerOptions.poster = "";
  3987. this.playerOptions.sources[0].src = media;
  3988. this.playerO = this.playerOptions;
  3989. },
  3990. onPlayerPlay() { },
  3991. lookVedio(u, i) {
  3992. this.isClickNav = "";
  3993. // this.playerOptions.sources[0].src = u;
  3994. var d = JSON.parse(JSON.stringify(this.playerOptions));
  3995. d.sources[0].src = u;
  3996. this.playerO[this.taskCount] = d;
  3997. this.showType = 0;
  3998. this.isClickNav = "video" + i;
  3999. this.$forceUpdate();
  4000. },
  4001. lookText(i, t) {
  4002. this.isClickNav = "";
  4003. this.text = this.textList[i][t];
  4004. // this.dialogVisible1 = true;
  4005. this.showType = 1;
  4006. this.isClickNav = "text" + t;
  4007. },
  4008. lookTools(i, t) {
  4009. this.chapTools = this.chapToolList[i][t];
  4010. this.dialogVisible2 = true;
  4011. },
  4012. openFile(f) {
  4013. this.pptImgUrl = "";
  4014. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
  4015. if (
  4016. a.indexOf(f.split(".")[f.split(".").length - 1].toLocaleUpperCase()) !=
  4017. -1
  4018. ) {
  4019. this.pptImgUrl =
  4020. "https://view.officeapps.live.com/op/view.aspx?src=" + f;
  4021. this.showPDF = false;
  4022. this.dialogVisible3 = true;
  4023. } else if (
  4024. f.split(".")[f.split(".").length - 1].toLocaleUpperCase() == "PDF"
  4025. ) {
  4026. this.pptImgUrl = f;
  4027. this.showPDF = true;
  4028. this.dialogVisible3 = true;
  4029. }
  4030. },
  4031. downFile(f, i) {
  4032. this.isClickNav = "";
  4033. this.pptImgUrl1 = "";
  4034. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"]; //"PDF",
  4035. if (
  4036. a.indexOf(
  4037. f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase()
  4038. ) != -1
  4039. ) {
  4040. this.pptImgUrl1 =
  4041. "https://view.officeapps.live.com/op/view.aspx?src=" + f.url;
  4042. // this.dialogVisible3 = true;
  4043. this.showType = 2;
  4044. } else if (
  4045. this.isAssetTypeAnImage(
  4046. f.url.split(".")[f.url.split(".").length - 1].toLocaleLowerCase()
  4047. )
  4048. ) {
  4049. this.showType = 4;
  4050. this.pptImgUrl1 = f.url;
  4051. } else if (
  4052. f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase() ==
  4053. "PDF"
  4054. ) {
  4055. this.pptImgUrl1 = f.url;
  4056. // this.dialogVisible3 = true;
  4057. this.showType = 3;
  4058. } else {
  4059. window.open(this.file[i].url);
  4060. }
  4061. this.isClickNav = "word" + i;
  4062. },
  4063. downFileList(i) {
  4064. window.open(this.noImgList[i].url);
  4065. },
  4066. openAddWork() {
  4067. this.dialogVisible = true;
  4068. },
  4069. addBzWorks() {
  4070. let params = [
  4071. {
  4072. uid: this.userid,
  4073. cid: this.id,
  4074. stage: this.courseType,
  4075. task: this.taskCount,
  4076. tool: this.toolindex,
  4077. content: JSON.stringify(this.eScore),
  4078. type: 6,
  4079. },
  4080. ];
  4081. this.ajax
  4082. .post(this.$store.state.api + "addCourseWorks", params)
  4083. .then((res) => {
  4084. this.$message({
  4085. message: "提交成功",
  4086. type: "success",
  4087. });
  4088. this.eScore = { eBzText: "", eStar: [] };
  4089. this.studentEvalDialogVisible = false;
  4090. this.selectSWorks();
  4091. })
  4092. .catch((err) => {
  4093. this.$message.error("提交失败");
  4094. console.error(err);
  4095. });
  4096. },
  4097. addStudentAsk() {
  4098. this.askList.push({ askJson: this.askJson, anwer: this.radio.join(",") });
  4099. let params = [
  4100. {
  4101. uid: this.userid,
  4102. cid: this.id,
  4103. stage: this.courseType,
  4104. task: this.taskCount,
  4105. tool: this.toolindex,
  4106. content: JSON.stringify(this.askList).replace(/%/g, "%25"),
  4107. type: 2,
  4108. },
  4109. ];
  4110. this.ajax
  4111. .post(this.$store.state.api + "addCourseWorks", params)
  4112. .then((res) => {
  4113. this.$message({
  4114. message: "提交成功",
  4115. type: "success",
  4116. });
  4117. this.askList = [];
  4118. this.dialogVisible5 = false;
  4119. })
  4120. .catch((err) => {
  4121. this.$message.error("提交失败");
  4122. console.error(err);
  4123. });
  4124. },
  4125. addWork() {
  4126. if (this.studyJuri[0].content == "") {
  4127. this.$message.error("请将信息填写完整");
  4128. return;
  4129. } else if (this.studyJuri[0].cover.length == 0) {
  4130. this.$message.error("请将信息填写完整");
  4131. return;
  4132. } else if (this.studyJuri[0].upVedio.length == 0) {
  4133. this.$message.error("请将信息填写完整");
  4134. return;
  4135. }
  4136. if (this.isNoHomeWork) {
  4137. this.$confirm(
  4138. "您已经提交了该作业了,如果您再提交将覆盖上次提交的作业!",
  4139. "提示",
  4140. {
  4141. confirmButtonText: "确定",
  4142. cancelButtonText: "取消",
  4143. type: "warning",
  4144. }
  4145. )
  4146. .then(() => {
  4147. let params = [
  4148. {
  4149. uid: this.userid,
  4150. cid: this.id,
  4151. stage: this.courseType,
  4152. task: this.taskCount,
  4153. content: JSON.stringify(this.studyJuri),
  4154. },
  4155. ];
  4156. this.ajax
  4157. .post(this.$store.state.api + "addWorks", params)
  4158. .then((res) => {
  4159. this.$message({
  4160. message: "提交成功",
  4161. type: "success",
  4162. });
  4163. this.isNoHomeWork = true;
  4164. this.dialogVisible = false;
  4165. })
  4166. .catch((err) => {
  4167. this.$message.error("提交失败");
  4168. console.error(err);
  4169. });
  4170. })
  4171. .catch(() => { });
  4172. } else {
  4173. let params = [
  4174. {
  4175. uid: this.userid,
  4176. cid: this.id,
  4177. stage: this.courseType,
  4178. task: this.taskCount,
  4179. content: JSON.stringify(this.studyJuri),
  4180. },
  4181. ];
  4182. this.ajax
  4183. .post(this.$store.state.api + "addWorks", params)
  4184. .then((res) => {
  4185. this.$message({
  4186. message: "提交成功",
  4187. type: "success",
  4188. });
  4189. this.isNoHomeWork = true;
  4190. this.dialogVisible = false;
  4191. })
  4192. .catch((err) => {
  4193. this.$message.error("提交失败");
  4194. console.error(err);
  4195. });
  4196. }
  4197. },
  4198. selectCount() {
  4199. let params = {
  4200. cid: this.id,
  4201. chid: this.courseType,
  4202. uid: this.userid,
  4203. };
  4204. this.ajax
  4205. .get(this.$store.state.api + "selectToolsCount", params)
  4206. .then((res) => {
  4207. for (var i = 0; i < res.data[0].length; i++) {
  4208. if (res.data[0][i].tools == 1) {
  4209. this.wbCount = res.data[0][i].count;
  4210. } else if (res.data[0][i].tools == 2) {
  4211. this.wordCount = res.data[0][i].count;
  4212. } else if (res.data[0][i].tools == 3) {
  4213. this.mindCount = res.data[0][i].count;
  4214. } else if (res.data[0][i].tools == 4) {
  4215. this.askCount = res.data[0][i].count;
  4216. } else if (res.data[0][i].tools == 6) {
  4217. this.noteCount = res.data[0][i].count;
  4218. } else if (res.data[0][i].tools == 7) {
  4219. this.mindNetWorkCount = res.data[0][i].count;
  4220. } else if (res.data[0][i].tools == 8) {
  4221. this.libraryCount = res.data[0][i].count;
  4222. } else if (res.data[0][i].tools == 16) {
  4223. this.workCount = res.data[0][i].count;
  4224. } else if (res.data[0][i].tools == 10) {
  4225. this.timeCount = res.data[0][i].count;
  4226. } else if (res.data[0][i].tools == 15) {
  4227. this.answerCount = res.data[0][i].count;
  4228. } else if (res.data[0][i].tools == 18) {
  4229. this.trainCount = res.data[0][i].count;
  4230. }
  4231. }
  4232. })
  4233. .catch((err) => {
  4234. console.error(err);
  4235. });
  4236. },
  4237. openTools(t, i, index, c, sName) {
  4238. var z = JSON.parse(c);
  4239. this.noteName = sName;
  4240. if (t == 4) {
  4241. this.radio = [];
  4242. this.isAnswer = false;
  4243. for (var i = 0; i < z.length; i++) {
  4244. let a = z[i];
  4245. let b = a.anwer.split(",");
  4246. let d = [];
  4247. for (var j = 0; j < b.length; j++) {
  4248. d.push(parseInt(b[j]));
  4249. }
  4250. this.radio = d;
  4251. this.askJson = a.askJson;
  4252. }
  4253. this.isAnswer = true;
  4254. this.dialogVisible5 = true;
  4255. }
  4256. // else if (t == 15) {
  4257. // this.answerQ = "";
  4258. // this.questionAnswer = "";
  4259. // this.answerQ = z[0].answerTitle;
  4260. // this.questionAnswer = z[0].answer;
  4261. // this.answerDialogVisible = true;
  4262. // }
  4263. },
  4264. doUrl(url, i) {
  4265. this.isClickNav = "";
  4266. if (url.indexOf("https://") == -1 && url.indexOf("http://") == -1) {
  4267. url = "https://" + url;
  4268. }
  4269. window.open(url);
  4270. this.isClickNav = i;
  4271. },
  4272. fastText(p, t) {
  4273. if (t == 1) {
  4274. this.commentText += p;
  4275. } else {
  4276. this.eScore.eBzText += p;
  4277. }
  4278. },
  4279. addTools(t, i, index) {
  4280. var a = 0;
  4281. // this.taskCount = index;
  4282. this.toolindex = i;
  4283. if (t == 1) {
  4284. if (this.wbCount > 0) {
  4285. this.updateCount(this.wbCount, t);
  4286. } else {
  4287. this.wbCount++;
  4288. a = this.wbCount;
  4289. this.toolsCount(a, t);
  4290. }
  4291. window.parent.postMessage(
  4292. {
  4293. tools: "1",
  4294. cid: this.id,
  4295. stage: this.courseType,
  4296. task: this.taskCount,
  4297. tool: i,
  4298. },
  4299. "*"
  4300. );
  4301. } else if (t == 2) {
  4302. if (this.wordCount > 0) {
  4303. this.updateCount(this.wordCount, t);
  4304. } else {
  4305. this.wordCount++;
  4306. a = this.wordCount;
  4307. this.toolsCount(a, t);
  4308. }
  4309. window.parent.postMessage({ tools: "2" }, "*");
  4310. } else if (t == 3) {
  4311. if (this.mindCount > 0) {
  4312. this.updateCount(this.mindCount, t);
  4313. } else {
  4314. this.mindCount++;
  4315. a = this.mindCount;
  4316. this.toolsCount(a, t);
  4317. }
  4318. window.parent.postMessage(
  4319. {
  4320. tools: "3",
  4321. cid: this.id,
  4322. stage: this.courseType,
  4323. task: this.taskCount,
  4324. tool: i,
  4325. },
  4326. "*"
  4327. );
  4328. } else if (t == 4) {
  4329. this.radio = [];
  4330. this.noteName = "";
  4331. this.isAnswer = false;
  4332. if (this.askCount > 0) {
  4333. this.updateCount(this.askCount, t);
  4334. } else {
  4335. this.askCount++;
  4336. a = this.askCount;
  4337. this.toolsCount(a, t);
  4338. }
  4339. if (!this.dialogVisible2) {
  4340. this.askJson.askJson =
  4341. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4342. index
  4343. ].toolChoose[i].askJson;
  4344. this.askJson.askTitle =
  4345. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4346. index
  4347. ].toolChoose[i].askTitle;
  4348. this.askJson.askCount =
  4349. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4350. index
  4351. ].toolChoose[i].askCount;
  4352. } else {
  4353. this.askJson.askJson = this.chapTools.askJson.askJson;
  4354. this.askJson.askTitle = this.chapTools.askJson.askTitle;
  4355. this.askJson.askCount = this.chapTools.askJson.askCount;
  4356. }
  4357. this.dialogVisible5 = true;
  4358. // window.parent.postMessage({ tools: "4" }, "*");
  4359. } else if (t == 5) {
  4360. if (this.scoreCount > 0) {
  4361. this.updateCount(this.scoreCount, t);
  4362. } else {
  4363. this.scoreCount++;
  4364. a = this.scoreCount;
  4365. this.toolsCount(a, t);
  4366. }
  4367. this.dialogVisible4 = true;
  4368. // window.parent.postMessage({ tools: "5" }, "*");
  4369. } else if (t == 6) {
  4370. if (this.noteCount > 0) {
  4371. this.updateCount(this.noteCount, t);
  4372. } else {
  4373. this.noteCount++;
  4374. a = this.noteCount;
  4375. this.toolsCount(a, t);
  4376. }
  4377. window.parent.postMessage(
  4378. {
  4379. tools: "6",
  4380. cid: this.id,
  4381. stage: this.courseType,
  4382. task: this.taskCount,
  4383. tool: i,
  4384. },
  4385. "*"
  4386. );
  4387. } else if (t == 7) {
  4388. if (this.mindNetWorkCount > 0) {
  4389. this.updateCount(this.mindNetWorkCount, t);
  4390. } else {
  4391. this.mindNetWorkCount++;
  4392. a = this.mindNetWorkCount;
  4393. this.toolsCount(a, t);
  4394. }
  4395. window.parent.postMessage(
  4396. {
  4397. tools: "7",
  4398. cid: this.id,
  4399. stage: this.courseType,
  4400. task: this.taskCount,
  4401. tool: i,
  4402. },
  4403. "*"
  4404. );
  4405. } else if (t == 16) {
  4406. if (this.workCount > 0) {
  4407. this.updateCount(this.workCount, t);
  4408. } else {
  4409. this.workCount++;
  4410. a = this.workCount;
  4411. this.toolsCount(a, t);
  4412. }
  4413. this.dialogVisible = true;
  4414. } else if (t == 8) {
  4415. if (this.libraryCount > 0) {
  4416. this.updateCount(this.libraryCount, t);
  4417. } else {
  4418. this.libraryCount++;
  4419. a = this.libraryCount;
  4420. this.toolsCount(a, t);
  4421. }
  4422. window.parent.postMessage({ tools: "8" }, "*");
  4423. } else if (t == 17) {
  4424. if (this.libraryCount > 0) {
  4425. this.updateCount(this.libraryCount, t);
  4426. } else {
  4427. this.libraryCount++;
  4428. a = this.libraryCount;
  4429. this.toolsCount(a, t);
  4430. }
  4431. window.parent.postMessage({ tools: "17" }, "*");
  4432. } else if (t == 18) {
  4433. if (this.trainCount > 0) {
  4434. this.updateCount(this.trainCount, t);
  4435. } else {
  4436. this.trainCount++;
  4437. a = this.trainCount;
  4438. this.toolsCount(a, t);
  4439. }
  4440. window.parent.postMessage({ tools: "18" }, "*");
  4441. } else if (t == 10) {
  4442. if (this.timeCount > 0) {
  4443. this.updateCount(this.timeCount, t);
  4444. } else {
  4445. this.timeCount++;
  4446. a = this.timeCount;
  4447. this.toolsCount(a, t);
  4448. }
  4449. this.timeDialogVisible = true;
  4450. } else if (t == 15) {
  4451. this.answerQ = "";
  4452. this.questionAnswer = "";
  4453. if (this.answerCount > 0) {
  4454. this.updateCount(this.answerCount, t);
  4455. } else {
  4456. this.answerCount++;
  4457. a = this.answerCount;
  4458. this.toolsCount(a, t);
  4459. }
  4460. this.answerQ = this.chapInfoList[this.courseType].chapterInfo[0]
  4461. .taskJson[index].toolChoose[i].answerQ
  4462. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  4463. .toolChoose[i].answerQ
  4464. : "";
  4465. this.answerDialogVisible = true;
  4466. } else if (t == 21) {
  4467. window.parent.postMessage({ tools: "21" }, "*");
  4468. } else if (t == 22) {
  4469. window.parent.postMessage({ tools: "22" }, "*");
  4470. } else if (t == 23) {
  4471. window.parent.postMessage({ tools: "23" }, "*");
  4472. } else if (t == 24) {
  4473. window.parent.postMessage({ tools: "24" }, "*");
  4474. } else if (t == 25) {
  4475. window.parent.postMessage({ tools: "25" }, "*");
  4476. } else if (t == 31) {
  4477. window.parent.postMessage({ tools: "31" }, "*");
  4478. } else if (t == 28) {
  4479. window.parent.postMessage({ tools: "28" }, "*");
  4480. } else if (t == 37) {
  4481. window.parent.postMessage({ tools: "37" }, "*");
  4482. } else if (t == 38) {
  4483. window.parent.postMessage({ tools: "38" }, "*");
  4484. } else if (t == 39) {
  4485. window.parent.postMessage({ tools: "39" }, "*");
  4486. } else if (t == 32) {
  4487. window.parent.postMessage({ tools: "32" }, "*");
  4488. } else if (t == 26) {
  4489. window.parent.postMessage(
  4490. {
  4491. tools: "26",
  4492. cid: this.id,
  4493. stage: this.courseType,
  4494. task: this.taskCount,
  4495. tool: i,
  4496. },
  4497. "*"
  4498. );
  4499. } else if (t == 40) {
  4500. if (this.evalCount > 0) {
  4501. this.updateCount(this.evalCount, t);
  4502. } else {
  4503. this.evalCount++;
  4504. a = this.evalCount;
  4505. this.toolsCount(a, t);
  4506. }
  4507. if (this.worksStudent[i].length) {
  4508. for (var k = 0; k < this.worksStudent[i].length; k++) {
  4509. if (this.userid == this.worksStudent[i][k].userid) {
  4510. this.eScore = JSON.parse(this.worksStudent[i][k].works);
  4511. this.rateJson =
  4512. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4513. index
  4514. ].toolChoose[i].rateJson;
  4515. break;
  4516. } else {
  4517. this.rateJson =
  4518. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4519. index
  4520. ].toolChoose[i].rateJson;
  4521. }
  4522. }
  4523. } else {
  4524. this.rateJson =
  4525. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4526. index
  4527. ].toolChoose[i].rateJson;
  4528. }
  4529. this.isStar = false;
  4530. this.studentEvalDialogVisible = true;
  4531. } else if (t == 41) {
  4532. this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
  4533. .taskJson[index].toolChoose[i].selectJson
  4534. ? JSON.parse(
  4535. JSON.stringify(
  4536. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  4537. index
  4538. ].toolChoose[i].selectJson
  4539. )
  4540. )
  4541. : { url: "", select: [], answer: [] };
  4542. if (this.worksStudent[i].length) {
  4543. for (var k = 0; k < this.worksStudent[i].length; k++) {
  4544. if (this.userid == this.worksStudent[i][k].userid) {
  4545. var a = this.worksStudent[i][k].works.split(",");
  4546. for (var ki = 0; ki < a.length; ki++) {
  4547. a[ki] = parseInt(a[ki]);
  4548. }
  4549. this.selectAnswer = {
  4550. answer: a,
  4551. stu: this.worksStudent[i][k].sName,
  4552. };
  4553. break;
  4554. } else {
  4555. this.selectAnswer = { answer: [], stu: "" };
  4556. }
  4557. }
  4558. } else {
  4559. this.selectAnswer = { answer: [], stu: "" };
  4560. }
  4561. this.isSelect = false;
  4562. this.dialogVisibleSelect = true;
  4563. }
  4564. },
  4565. toolsCount(a, t) {
  4566. let params = {
  4567. cid: this.id,
  4568. chid: this.courseType,
  4569. uid: this.userid,
  4570. tid: t,
  4571. count: a,
  4572. };
  4573. this.ajax
  4574. .get(this.$store.state.api + "insertToolsCount", params)
  4575. .then((res) => {
  4576. this.selectCount();
  4577. })
  4578. .catch((err) => {
  4579. console.error(err);
  4580. });
  4581. },
  4582. updateCount(c, t) {
  4583. c++;
  4584. let params = {
  4585. cid: this.id,
  4586. chid: this.courseType,
  4587. uid: this.userid,
  4588. tid: t,
  4589. count: c,
  4590. };
  4591. this.ajax
  4592. .get(this.$store.state.api + "updateToolsCount", params)
  4593. .then((res) => {
  4594. this.selectCount();
  4595. })
  4596. .catch((err) => {
  4597. console.error(err);
  4598. });
  4599. },
  4600. checkEva() {
  4601. if (this.evalua != "") {
  4602. for (var i = 0; i < this.evaJuri.length; i++) {
  4603. if (this.evalua == this.evaJuri[i].id) {
  4604. this.eTitle = this.evaJuri[i].title;
  4605. this.eJson = JSON.parse(this.evaJuri[i].content);
  4606. }
  4607. }
  4608. this.$forceUpdate();
  4609. setTimeout(() => {
  4610. this.setMindData();
  4611. }, 0);
  4612. }
  4613. },
  4614. selectEva() {
  4615. let params = {
  4616. oid: this.oid,
  4617. };
  4618. this.ajax
  4619. .get(this.$store.state.api + "selectAllEvaluation", params)
  4620. .then((res) => {
  4621. this.evaJuri = res.data[0];
  4622. })
  4623. .catch((err) => {
  4624. console.error(err);
  4625. });
  4626. },
  4627. setMindData() {
  4628. this.data.data = [];
  4629. this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
  4630. let _eJson = Object.keys(this.eJson);
  4631. let _e = this.eJson;
  4632. for (let i = 0; i < _eJson.length; i++) {
  4633. let element = _e[_eJson[i]];
  4634. this.data.data.push({
  4635. id: element.id,
  4636. parentid: "root",
  4637. topic: element.name,
  4638. });
  4639. let _eJsonc = Object.keys(element.child);
  4640. let _e2 = element.child;
  4641. for (let j = 0; j < _eJsonc.length; j++) {
  4642. let _ec = _e2[_eJsonc[j]];
  4643. this.data.data.push({
  4644. id: _ec.id,
  4645. parentid: element.id,
  4646. topic: _ec.name,
  4647. });
  4648. let _eJsonz = Object.keys(_ec.child);
  4649. let _e3 = _ec.child;
  4650. for (let z = 0; z < _eJsonz.length; z++) {
  4651. let _ez = _e3[_eJsonz[z]];
  4652. this.data.data.push({
  4653. id: _ez.id,
  4654. parentid: _ec.id,
  4655. topic: _ez.name,
  4656. });
  4657. }
  4658. }
  4659. }
  4660. this.$forceUpdate();
  4661. },
  4662. checkFileFull(type, url) {
  4663. this.fullDialogVisible = true;
  4664. this.fulltype = type;
  4665. this.fullUrl = url;
  4666. },
  4667. },
  4668. destroyed() {
  4669. window.onresize = null;
  4670. },
  4671. computed: {
  4672. contentConvent() {
  4673. return function (c) {
  4674. return c
  4675. ? c
  4676. .replaceAll(/\r\n/g, "<br/>")
  4677. .replaceAll(/\n/g, "<br/>")
  4678. .replaceAll(/\s/g, " &nbsp")
  4679. : "";
  4680. };
  4681. },
  4682. },
  4683. created() {
  4684. if (this.screenType == 2) {
  4685. window.parent.postMessage({ allScreen: 4 }, "*");
  4686. } else if (this.screenType == 3) {
  4687. window.parent.postMessage({ allScreen: 5 }, "*");
  4688. } else if (this.screenType == 1) {
  4689. window.parent.postMessage({ allScreen: 6 }, "*");
  4690. }
  4691. this.selectEva();
  4692. this.getCourseDetail();
  4693. this.selectCount();
  4694. this.getHomeWork();
  4695. this.selectSLook();
  4696. if (this.tType == 4) {
  4697. this.pzDialog = true;
  4698. this.selectPz();
  4699. }
  4700. document.scrollingElement.scrollTop = 0;
  4701. window.addEventListener("resize", () => {
  4702. var a = document.getElementsByClassName("box_course")[0].offsetHeight;
  4703. document.getElementsByClassName("vedioList")[0].style.height = a + "px";
  4704. document.getElementsByClassName("navBox")[0].style.height = a - 40 + "px";
  4705. });
  4706. let _this = this;
  4707. setTimeout(() => {
  4708. _this.vedioTime = [];
  4709. for (var i = 0; i < _this.vedio[_this.taskCount].length; i++) {
  4710. _this.vedioTime[i] = document.getElementsByClassName(
  4711. "vjs-duration-display"
  4712. )[i].textContent;
  4713. }
  4714. }, 1000);
  4715. },
  4716. };
  4717. </script>
  4718. <style scoped>
  4719. @media screen and (max-width: 1280px) {
  4720. /* .courseIndex > div:first-child(2) {
  4721. width: 15% !important;
  4722. } */
  4723. /* .navText {
  4724. width: 120px !important;
  4725. } */
  4726. .evaCss {
  4727. flex-direction: column !important;
  4728. align-items: center !important;
  4729. }
  4730. .dialog_diy1>>>.el-dialog {
  4731. width: 100% !important;
  4732. }
  4733. .rightWidthCss {
  4734. width: 100% !important;
  4735. }
  4736. .dialog_diy3>>>.el-dialog {
  4737. width: 100% !important;
  4738. }
  4739. /* .textTitle >>> .el-form-item__label {
  4740. width: 150px !important;
  4741. } */
  4742. }
  4743. .dialog_diy>>>.el-dialog {
  4744. margin-top: 10vh !important;
  4745. }
  4746. .body_student {
  4747. width: 77%;
  4748. height: 100%;
  4749. position: absolute;
  4750. left: 22%;
  4751. top: 0;
  4752. }
  4753. .student_head {
  4754. width: 100%;
  4755. margin: 0 auto;
  4756. padding-bottom: 50px;
  4757. display: flex;
  4758. flex-direction: column;
  4759. flex-wrap: nowrap;
  4760. align-items: flex-start;
  4761. justify-content: flex-start;
  4762. }
  4763. .pb_left {
  4764. width: 20%;
  4765. margin-right: 10px;
  4766. background: rgb(255, 255, 255);
  4767. padding-right: 10px;
  4768. position: fixed;
  4769. height: 100%;
  4770. }
  4771. .wheel>img,
  4772. .project>img,
  4773. .star>img,
  4774. .evaluate>img,
  4775. .up_photo>img,
  4776. .chapter_add>img,
  4777. .upCover>img,
  4778. .deleteWord>img,
  4779. .question>img,
  4780. .homework>img {
  4781. width: 100%;
  4782. height: 100%;
  4783. }
  4784. .upCover {
  4785. width: calc(100% / 3.5);
  4786. position: relative;
  4787. margin: 0 15px 10px 0;
  4788. display: flex;
  4789. flex-direction: column;
  4790. flex-wrap: nowrap;
  4791. justify-content: center;
  4792. align-content: center;
  4793. align-items: center;
  4794. }
  4795. .chapter_add {
  4796. width: 120px;
  4797. position: relative;
  4798. text-align: center;
  4799. }
  4800. .isAddThings {
  4801. margin-top: 20px;
  4802. position: relative;
  4803. text-align: center;
  4804. background: #f7f8fa;
  4805. height: 90px;
  4806. width: 90px;
  4807. display: flex;
  4808. flex-direction: column;
  4809. justify-content: center;
  4810. }
  4811. .deleteWord {
  4812. width: 22px;
  4813. height: 22px;
  4814. position: absolute;
  4815. right: -5px;
  4816. top: -5px;
  4817. cursor: pointer;
  4818. }
  4819. .box_course {
  4820. /* width: 60%; */
  4821. width: 81%;
  4822. }
  4823. .wheel {
  4824. width: 100%;
  4825. height: 100%;
  4826. }
  4827. .right_box {
  4828. display: flex;
  4829. flex-direction: column;
  4830. margin-left: 30px;
  4831. justify-content: space-around;
  4832. }
  4833. .right_box_title {
  4834. font-size: 23px;
  4835. }
  4836. .people {
  4837. display: flex;
  4838. }
  4839. .student_body {
  4840. width: 100%;
  4841. margin: 0 auto;
  4842. margin-top: 10px;
  4843. padding: 0 0 20px;
  4844. }
  4845. .study_top {
  4846. margin-top: 70px;
  4847. width: 100%;
  4848. /* overflow: auto; */
  4849. height: auto;
  4850. }
  4851. .study_top .checkbox {
  4852. display: flex;
  4853. align-items: center;
  4854. padding: 15px 0 15px 30px;
  4855. flex: 0 0 auto;
  4856. font-weight: bold;
  4857. border-bottom: 1px solid #eee;
  4858. }
  4859. .study_top .check {
  4860. padding-bottom: 5px;
  4861. text-align: center;
  4862. cursor: pointer;
  4863. height: 30px;
  4864. box-sizing: border-box;
  4865. display: flex;
  4866. }
  4867. .study_top .checked {
  4868. border-bottom: 4px solid #3fc6a0;
  4869. padding-bottom: 5px;
  4870. color: #3fc6a0;
  4871. display: flex;
  4872. height: 35px;
  4873. }
  4874. .study_top .checked>div,
  4875. .study_top .check>div {
  4876. margin-right: 5px;
  4877. }
  4878. .videoTop {
  4879. display: flex;
  4880. flex-direction: row;
  4881. justify-content: space-between;
  4882. background: #fff;
  4883. align-items: center;
  4884. width: 95%;
  4885. padding: 20px;
  4886. }
  4887. .upbtn {
  4888. margin: 25px;
  4889. background: #70afdb;
  4890. color: #fff;
  4891. width: 120px;
  4892. text-align: center;
  4893. height: 30px;
  4894. line-height: 30px;
  4895. font-size: 13px;
  4896. border-radius: 5px;
  4897. cursor: pointer;
  4898. }
  4899. .filebox {
  4900. display: flex;
  4901. flex-wrap: wrap;
  4902. flex-direction: column;
  4903. padding: 15px 0 5px;
  4904. }
  4905. .filebox .tooldetail {
  4906. width: 100%;
  4907. margin: 0px 12px;
  4908. background: rgb(247, 247, 247);
  4909. padding: 20px;
  4910. line-height: 30px;
  4911. word-break: break-word;
  4912. }
  4913. .file {
  4914. display: flex;
  4915. flex-direction: column;
  4916. align-items: center;
  4917. justify-content: center;
  4918. cursor: pointer;
  4919. width: 200px;
  4920. }
  4921. .file div {
  4922. margin-top: 10px;
  4923. width: 150px;
  4924. text-align: center;
  4925. overflow: hidden;
  4926. white-space: nowrap;
  4927. text-overflow: ellipsis;
  4928. }
  4929. .media {
  4930. display: flex;
  4931. flex-direction: column;
  4932. align-items: center;
  4933. justify-content: center;
  4934. margin: 0 20px 20px 0;
  4935. cursor: pointer;
  4936. margin: 12px 0 5px 15px;
  4937. overflow: hidden;
  4938. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
  4939. 0px 2px 1px -1px rgb(0 0 0 / 12%);
  4940. box-sizing: border-box;
  4941. }
  4942. .media img {
  4943. height: 90px;
  4944. width: 160px;
  4945. object-fit: cover;
  4946. }
  4947. .media .title {
  4948. padding: 5px;
  4949. text-align: left;
  4950. width: 100%;
  4951. box-sizing: border-box;
  4952. }
  4953. .media .btn {
  4954. width: 100%;
  4955. height: 35px;
  4956. line-height: 35px;
  4957. color: #fff;
  4958. background: #606060;
  4959. text-align: center;
  4960. overflow: hidden;
  4961. white-space: nowrap;
  4962. text-overflow: ellipsis;
  4963. }
  4964. .detail_content_top {
  4965. width: 100%;
  4966. padding: 25px 0 25px 0;
  4967. }
  4968. .detail_title {
  4969. text-align: center;
  4970. font-size: 24px;
  4971. }
  4972. .detail_time {
  4973. font-size: 13px;
  4974. padding: 15px 0 0 40px;
  4975. }
  4976. .detail_content {
  4977. line-height: 2pc;
  4978. width: 90%;
  4979. margin: 0 auto;
  4980. padding-top: 30px;
  4981. text-indent: 30px;
  4982. overflow: auto;
  4983. height: 200px;
  4984. }
  4985. .score_box>>>.el-rate {
  4986. margin-left: 10px;
  4987. }
  4988. .dialog_change>>>.el-dialog {
  4989. border-radius: 5px;
  4990. }
  4991. .dialog_change>>>.el-dialog__header {
  4992. background: #f2f2f2;
  4993. text-align: center;
  4994. }
  4995. .dialog_change>>>.el-dialog__title {
  4996. line-height: 5px;
  4997. }
  4998. .dialog_change>>>.el-dialog__body {
  4999. background: #fff;
  5000. padding: 10px 20px;
  5001. }
  5002. .score_box {
  5003. display: flex;
  5004. align-items: center;
  5005. margin-bottom: 18px;
  5006. margin-top: 20px;
  5007. }
  5008. .up_photo {
  5009. width: 120px;
  5010. cursor: pointer;
  5011. margin-top: 10px;
  5012. }
  5013. .upload_send {
  5014. margin: 30px auto 30px;
  5015. width: 60%;
  5016. background: #169bd6;
  5017. text-align: center;
  5018. height: 35px;
  5019. line-height: 35px;
  5020. color: #fff;
  5021. border-radius: 5px;
  5022. cursor: pointer;
  5023. }
  5024. .marginT {
  5025. margin-top: 20px;
  5026. }
  5027. .cd_content_steps {
  5028. display: flex;
  5029. width: 90%;
  5030. justify-content: space-around;
  5031. border-top: 1px solid #eeeeee;
  5032. }
  5033. .cd_steps_box {
  5034. display: flex;
  5035. justify-content: center;
  5036. align-items: center;
  5037. flex-direction: column;
  5038. cursor: pointer;
  5039. }
  5040. .first {
  5041. display: flex;
  5042. align-items: center;
  5043. margin: 15px 0 20px 0;
  5044. font-size: 20px;
  5045. }
  5046. .first>div:nth-child(2) {
  5047. font-size: 16px !important;
  5048. padding-left: 10px;
  5049. line-height: 26px;
  5050. box-sizing: border-box;
  5051. }
  5052. .blue_box_one {
  5053. text-align: center;
  5054. color: #fff;
  5055. background-image: linear-gradient(90deg, #477cd7, #65b9fc);
  5056. border-radius: 7px;
  5057. margin: 10px;
  5058. cursor: pointer;
  5059. width: 95%;
  5060. height: 45px;
  5061. display: flex;
  5062. flex-direction: row;
  5063. justify-content: flex-start;
  5064. align-items: center;
  5065. }
  5066. .blue_box_one>div:nth-child(1) {
  5067. line-height: 30px;
  5068. margin: 0 5px 0 10px;
  5069. width: 30%;
  5070. min-width: 70px;
  5071. border-radius: 4px;
  5072. }
  5073. .blue_box_one>div:nth-child(2) {
  5074. white-space: nowrap;
  5075. text-overflow: ellipsis;
  5076. overflow: hidden;
  5077. word-break: break-all;
  5078. width: 70%;
  5079. text-align: left;
  5080. margin-right: 10px;
  5081. max-width: calc(100% - 85px);
  5082. }
  5083. .blue_box_one>div:nth-child(2):hover {
  5084. overflow: hidden;
  5085. text-overflow: ellipsis;
  5086. white-space: nowrap;
  5087. cursor: pointer;
  5088. }
  5089. .upFile {
  5090. margin: 0 auto;
  5091. width: 120px;
  5092. background: #70afdb;
  5093. color: #fff;
  5094. height: 30px;
  5095. text-align: center;
  5096. line-height: 30px;
  5097. border-radius: 5px;
  5098. font-size: 14px;
  5099. cursor: pointer;
  5100. }
  5101. .courseTitle {
  5102. background: #205cc6;
  5103. width: 85%;
  5104. margin: 10px auto;
  5105. height: 50px;
  5106. color: #fff;
  5107. line-height: 50px;
  5108. text-align: center;
  5109. font-size: 20px;
  5110. font-weight: bold;
  5111. border-radius: 5px;
  5112. cursor: pointer;
  5113. white-space: nowrap;
  5114. overflow: hidden;
  5115. text-overflow: ellipsis;
  5116. padding: 0 10px;
  5117. }
  5118. .ml {
  5119. margin-left: 20px;
  5120. color: #5b7dba;
  5121. border-left: 3px solid #5b7dba;
  5122. padding-left: 5px;
  5123. font-weight: bold;
  5124. }
  5125. .return {
  5126. width: 2rem;
  5127. height: 2rem;
  5128. cursor: pointer;
  5129. }
  5130. .return>img {
  5131. width: 100%;
  5132. height: 100%;
  5133. }
  5134. .returnBtn {
  5135. background: #499eef;
  5136. width: 65px;
  5137. height: 30px;
  5138. color: #fff;
  5139. text-align: center;
  5140. line-height: 32px;
  5141. margin-right: 20px;
  5142. cursor: pointer;
  5143. border-radius: 5px;
  5144. font-size: 14px;
  5145. }
  5146. .tool {
  5147. display: flex;
  5148. flex-direction: column;
  5149. flex-wrap: nowrap;
  5150. width: 13%;
  5151. margin: 0 30px;
  5152. align-items: center;
  5153. }
  5154. .whiteBIcon {
  5155. width: 150px;
  5156. cursor: pointer;
  5157. }
  5158. .whiteBIcon>img {
  5159. width: 100%;
  5160. height: 100%;
  5161. }
  5162. .mask {
  5163. background-color: rgba(0, 0, 0, 0);
  5164. position: fixed;
  5165. top: 0;
  5166. left: 0;
  5167. width: 100%;
  5168. height: 100%;
  5169. z-index: 20000;
  5170. display: flex;
  5171. align-items: center;
  5172. justify-content: center;
  5173. }
  5174. .progressBox {
  5175. width: 500px;
  5176. height: 180px;
  5177. background: #fff;
  5178. border-radius: 10px;
  5179. box-shadow: 0 0 6px 1px #bfbfbf;
  5180. display: flex;
  5181. align-items: center;
  5182. justify-content: center;
  5183. flex-direction: column;
  5184. }
  5185. .progressBox .lbox {
  5186. height: 100px;
  5187. font-size: 19px;
  5188. display: flex;
  5189. align-items: center;
  5190. }
  5191. .progressBox .lbox img {
  5192. width: 40px;
  5193. margin-right: 20px;
  5194. }
  5195. .progressBox>>>.el-progress-bar__outer {
  5196. background-color: #d1dfff !important;
  5197. }
  5198. .progressBox .lbox {
  5199. height: 100px;
  5200. font-size: 19px;
  5201. display: flex;
  5202. align-items: center;
  5203. }
  5204. .progressBox .lbox img {
  5205. width: 40px;
  5206. margin-right: 20px;
  5207. }
  5208. .uploadVedio {
  5209. display: flex;
  5210. flex-direction: column;
  5211. flex-wrap: nowrap;
  5212. justify-content: center;
  5213. align-items: center;
  5214. margin: 0 15px 10px 0;
  5215. }
  5216. .uploadVedio>img {
  5217. width: 30px;
  5218. height: 30px;
  5219. }
  5220. .uploadVedio>span {
  5221. white-space: nowrap;
  5222. overflow: hidden;
  5223. text-overflow: ellipsis;
  5224. width: 75px;
  5225. margin-top: 7px;
  5226. }
  5227. .picName {
  5228. white-space: nowrap;
  5229. overflow: hidden;
  5230. text-overflow: ellipsis;
  5231. width: 75px;
  5232. margin-top: 7px;
  5233. }
  5234. .new_top {
  5235. display: flex;
  5236. background: #fff;
  5237. flex-direction: row;
  5238. justify-content: flex-start;
  5239. align-items: center;
  5240. height: 60px;
  5241. position: relative;
  5242. }
  5243. .before {
  5244. position: absolute;
  5245. background: #c3dad4;
  5246. width: 6px;
  5247. height: 100%;
  5248. }
  5249. .courseIndex {
  5250. display: flex;
  5251. flex-direction: row;
  5252. align-items: center;
  5253. width: calc(100% - 350px);
  5254. }
  5255. .courseIndex>div:nth-child(1) {
  5256. margin: 0 20px;
  5257. padding-left: 5px;
  5258. font-size: 24px;
  5259. min-width: 100px;
  5260. font-weight: bold;
  5261. border-left: 4px solid #3363b9;
  5262. height: 35px;
  5263. text-align: center;
  5264. line-height: 35px;
  5265. }
  5266. .courseIndex>div:nth-child(2) {
  5267. font-size: 23px;
  5268. width: 300px;
  5269. white-space: nowrap;
  5270. overflow: hidden;
  5271. text-overflow: ellipsis;
  5272. }
  5273. .courseIndex>div:nth-child(3) {
  5274. border-bottom: 1px solid #d7d7d7;
  5275. padding-bottom: 5px;
  5276. background: #49a0f0;
  5277. width: 55px;
  5278. min-width: 55px;
  5279. border-radius: 5px;
  5280. color: #fff;
  5281. text-align: center;
  5282. height: 20px;
  5283. line-height: 26px;
  5284. font-size: 14px;
  5285. margin: 0 0 0 10px;
  5286. }
  5287. .course_text {
  5288. padding: 20px 0 0 15px;
  5289. text-indent: 30px;
  5290. width: 80%;
  5291. min-height: 20px;
  5292. }
  5293. .vedioList {
  5294. background: #f2f2f2;
  5295. border: 1px solid #ececec;
  5296. /* width: 38.8%; */
  5297. width: calc(100% - 83%);
  5298. height: 445px;
  5299. border-radius: 10px;
  5300. overflow: hidden;
  5301. }
  5302. .vedioNav {
  5303. margin: 10px 0 0 15px;
  5304. border-bottom: 1px solid #d7d7d7;
  5305. padding-bottom: 5px;
  5306. background: #96d1ff;
  5307. width: 55px;
  5308. min-width: 55px;
  5309. border-radius: 5px;
  5310. color: #fff;
  5311. text-align: center;
  5312. height: 20px;
  5313. line-height: 26px;
  5314. font-size: 14px;
  5315. }
  5316. .queTop {
  5317. display: flex;
  5318. padding: 20px 0 20px 30px;
  5319. width: 100%;
  5320. flex-direction: row;
  5321. justify-content: flex-start;
  5322. align-items: center;
  5323. border-bottom: 1px solid #eeeeee;
  5324. box-sizing: border-box;
  5325. }
  5326. .question {
  5327. width: 40px;
  5328. margin-right: 10px;
  5329. margin-top: 7px;
  5330. }
  5331. .queTitle {
  5332. margin-left: 5px;
  5333. font-size: 25px;
  5334. display: flex;
  5335. align-items: center;
  5336. }
  5337. .addEditor {
  5338. width: 100px;
  5339. height: 30px;
  5340. background: #42cda6;
  5341. color: #fff;
  5342. border-radius: 5px;
  5343. text-align: center;
  5344. line-height: 30px;
  5345. box-shadow: 1px 3px 6px 1px #bfbfbf;
  5346. cursor: pointer;
  5347. }
  5348. .vedioName {
  5349. /* text-overflow: ellipsis;
  5350. top: 8px;
  5351. font-size: 14px;
  5352. overflow: hidden;
  5353. width: 100%;
  5354. word-break: break-all;
  5355. white-space: nowrap; */
  5356. cursor: pointer;
  5357. margin: 0px 0px 10px 5px;
  5358. white-space: nowrap;
  5359. overflow: hidden;
  5360. text-overflow: ellipsis;
  5361. width: 100%;
  5362. }
  5363. .vedioTime {
  5364. width: 35px;
  5365. position: absolute;
  5366. color: #fff;
  5367. bottom: 0px;
  5368. right: 0px;
  5369. text-align: center;
  5370. background: #46411f;
  5371. height: 20px;
  5372. font-size: 14px;
  5373. line-height: 20px;
  5374. }
  5375. .homework {
  5376. width: 200px;
  5377. display: flex;
  5378. flex-direction: column;
  5379. flex-wrap: nowrap;
  5380. align-items: center;
  5381. cursor: pointer;
  5382. }
  5383. .homebox {
  5384. display: flex;
  5385. flex-wrap: wrap;
  5386. flex-direction: row;
  5387. justify-content: flex-start;
  5388. align-items: center;
  5389. padding: 15px 0;
  5390. }
  5391. .isChooseActive {
  5392. color: #3e88f4;
  5393. border-bottom: 2px solid #2f80f3;
  5394. }
  5395. .chooseWho {
  5396. display: flex;
  5397. width: 100%;
  5398. flex-direction: row;
  5399. flex-wrap: nowrap;
  5400. justify-content: flex-start;
  5401. padding-bottom: 10px;
  5402. }
  5403. .chooseWho>div {
  5404. cursor: pointer;
  5405. padding-bottom: 10px;
  5406. margin: 0 30px;
  5407. }
  5408. .addPoint>div>img {
  5409. cursor: pointer;
  5410. margin: 0 10px;
  5411. width: 85px;
  5412. border-radius: 15px;
  5413. box-shadow: 0px 1px 8px 0px rgb(20 20 20 / 14%);
  5414. }
  5415. .addPoint>div {
  5416. display: flex;
  5417. flex-direction: column;
  5418. flex-wrap: nowrap;
  5419. align-items: center;
  5420. }
  5421. .isBorder>div {
  5422. margin: 0 0 10px 0;
  5423. align-items: flex-start !important;
  5424. }
  5425. .noiframeBox {
  5426. display: flex;
  5427. flex-wrap: wrap;
  5428. }
  5429. .iframeBox iframe {
  5430. width: 100%;
  5431. height: 800px;
  5432. border: none;
  5433. margin-bottom: 20px;
  5434. border: 1px solid #ccc;
  5435. }
  5436. .upload_toolBtn {
  5437. background: #6b92c9;
  5438. color: #fff;
  5439. width: 110px;
  5440. text-align: center;
  5441. height: 35px;
  5442. line-height: 35px;
  5443. font-size: 14px;
  5444. border-radius: 5px;
  5445. cursor: pointer;
  5446. position: absolute;
  5447. right: 10px;
  5448. bottom: 0;
  5449. }
  5450. .binfo_input,
  5451. .pj {
  5452. font: inherit;
  5453. color: currentColor;
  5454. width: 100%;
  5455. margin: 0;
  5456. padding: 15px 14px;
  5457. display: block;
  5458. min-width: 0;
  5459. outline: none;
  5460. box-sizing: content-box;
  5461. background: none;
  5462. -webkit-tap-highlight-color: transparent;
  5463. border: 1px solid rgba(0, 0, 0, 0.23);
  5464. border-radius: 4px;
  5465. box-sizing: border-box;
  5466. resize: none;
  5467. }
  5468. .binfo_input:focus-visible {
  5469. border: 1px solid rgba(61, 103, 188);
  5470. }
  5471. .dialog_diy>>>.el-dialog__header,
  5472. .dialog_diy1>>>.el-dialog__header {
  5473. background: #002e81 !important;
  5474. padding: 15px 20px;
  5475. }
  5476. .dialog_diy>>>.el-dialog__title,
  5477. .dialog_diy1>>>.el-dialog__title {
  5478. color: #fff;
  5479. }
  5480. .dialog_diy>>>.el-dialog__headerbtn,
  5481. .dialog_diy1>>>.el-dialog__headerbtn {
  5482. top: 19px;
  5483. }
  5484. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close,
  5485. .dialog_diy1>>>.el-dialog__headerbtn .el-dialog__close {
  5486. color: #fff;
  5487. }
  5488. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover,
  5489. .dialog_diy1>>>.el-dialog__headerbtn .el-dialog__close:hover {
  5490. color: #fff;
  5491. }
  5492. .dialog_diy1>>>.el-dialog__body {
  5493. padding: 0;
  5494. }
  5495. .dialog_diy>>>.el-dialog__body,
  5496. .dialog_diy>>>.el-dialog__footer,
  5497. .dialog_diy1>>>.el-dialog__footer {
  5498. background: #fafafa;
  5499. }
  5500. .a_addBox {
  5501. margin: 10px 0;
  5502. background: #fff;
  5503. padding: 15px;
  5504. max-height: 400px;
  5505. overflow: auto;
  5506. }
  5507. .a_add_box {
  5508. border-bottom: 2px solid #eee;
  5509. padding-bottom: 10px;
  5510. }
  5511. .a_add_head {
  5512. display: flex;
  5513. align-items: flex-start;
  5514. /* justify-content: space-between; */
  5515. flex-direction: column;
  5516. margin: 10px 0;
  5517. font-size: 18px;
  5518. width: 100%;
  5519. }
  5520. .a_add_head .a_add_head_input {
  5521. width: 300px;
  5522. }
  5523. .a_add_head .a_add_head_div {
  5524. display: flex;
  5525. align-items: center;
  5526. justify-content: space-between;
  5527. }
  5528. .a_add_body {
  5529. display: flex;
  5530. align-items: center;
  5531. }
  5532. .a_add_input {
  5533. display: flex;
  5534. align-items: center;
  5535. flex-wrap: wrap;
  5536. }
  5537. .a_add_input>>>el-radio-group {
  5538. margin: 10px 0;
  5539. }
  5540. .a_add_input>>>.el-radio {
  5541. margin-bottom: 10px;
  5542. }
  5543. .redioStyle>>>.el-radio__label {
  5544. font-size: 18px;
  5545. }
  5546. .toolHeng2 {
  5547. width: 100%;
  5548. }
  5549. .toolHeng {
  5550. display: flex;
  5551. flex-direction: row;
  5552. flex-wrap: wrap;
  5553. justify-content: flex-start;
  5554. align-items: center;
  5555. width: 100%;
  5556. }
  5557. .toolHeng>div {
  5558. padding-left: 20px;
  5559. }
  5560. .isWidth {
  5561. width: 20%;
  5562. }
  5563. .textTitle {
  5564. display: flex;
  5565. flex-direction: row;
  5566. flex-wrap: nowrap;
  5567. align-items: center;
  5568. width: 95%;
  5569. }
  5570. .textTitle>>>.el-form-item__label {
  5571. font-size: 22px;
  5572. color: #918f8f;
  5573. width: 100px;
  5574. }
  5575. .textTitle>>>.el-form-item__content {
  5576. width: calc(100% - 100px);
  5577. }
  5578. .textCss>>>.el-dialog {
  5579. width: 800px !important;
  5580. height: 400px;
  5581. background: #fafafa;
  5582. }
  5583. .textCss>>>.el-dialog__body {
  5584. margin: 55px 8% 0 8%;
  5585. padding: 0 !important;
  5586. }
  5587. .textCss>>>.el-dialog__footer {
  5588. padding-top: 38px;
  5589. }
  5590. .toolsCss>>>.el-dialog__body {
  5591. padding: 20px;
  5592. }
  5593. .lineCss>>>.el-dialog__body {
  5594. display: flex;
  5595. flex-direction: row;
  5596. align-items: center;
  5597. justify-content: center;
  5598. }
  5599. .newNav {
  5600. display: flex;
  5601. flex-direction: row;
  5602. align-items: baseline;
  5603. justify-content: flex-start;
  5604. }
  5605. .navText {
  5606. cursor: pointer;
  5607. margin: 0px 0px 10px 5px;
  5608. white-space: nowrap;
  5609. overflow: hidden;
  5610. text-overflow: ellipsis;
  5611. /* width: 300px; */
  5612. width: 100%;
  5613. }
  5614. .noVedio {
  5615. display: flex;
  5616. flex-direction: row;
  5617. justify-content: center;
  5618. align-content: center;
  5619. }
  5620. .noNavText {
  5621. cursor: pointer;
  5622. margin: 0px 0px 10px 5px;
  5623. width: 112px;
  5624. }
  5625. .listNoVedio {
  5626. margin: 0 0 0 30px;
  5627. width: 97%;
  5628. }
  5629. .video-player>>>.video-js {
  5630. height: 100%;
  5631. }
  5632. .hangVedioList {
  5633. width: 90% !important;
  5634. height: 150px !important;
  5635. margin: 20px 0 0 30px;
  5636. }
  5637. .hangVedio {
  5638. width: 100%;
  5639. height: 170px !important;
  5640. align-items: flex-start !important;
  5641. }
  5642. .hangHand {
  5643. height: 150px !important;
  5644. }
  5645. .twoChild {
  5646. width: 95%;
  5647. margin: 10px;
  5648. border-radius: 5px;
  5649. background: #f2f2f2;
  5650. display: flex;
  5651. flex-direction: column;
  5652. flex-wrap: nowrap;
  5653. justify-content: flex-start;
  5654. align-items: flex-start;
  5655. transition: all 0.5s;
  5656. overflow: hidden;
  5657. height: 0;
  5658. background: #e7f3ff;
  5659. }
  5660. .twoChild>div:nth-child(1) {
  5661. margin-top: 5px;
  5662. }
  5663. .navChild {
  5664. width: 100%;
  5665. cursor: pointer;
  5666. margin-bottom: 10px;
  5667. }
  5668. .navActive {
  5669. height: auto;
  5670. }
  5671. .navTask {
  5672. display: flex;
  5673. flex-direction: row;
  5674. flex-wrap: nowrap;
  5675. align-items: center;
  5676. align-content: flex-start;
  5677. height: 40px;
  5678. justify-content: flex-start;
  5679. padding: 0 10px;
  5680. width: 100%;
  5681. box-sizing: border-box;
  5682. }
  5683. .navTaskname {
  5684. white-space: nowrap;
  5685. text-overflow: ellipsis;
  5686. overflow: hidden;
  5687. word-break: break-all;
  5688. padding-left: 5px;
  5689. }
  5690. .openTaskActive {
  5691. color: #4386e6;
  5692. }
  5693. .iframeName {
  5694. margin: 5px 0;
  5695. border-left: 4px solid #41c4a4;
  5696. padding-left: 4px;
  5697. }
  5698. .toolTitle {
  5699. margin: 0px 0px 20px;
  5700. font-size: 20px;
  5701. font-weight: 500;
  5702. border-left: 4px solid #41c4a4;
  5703. padding-left: 4px;
  5704. }
  5705. .cru_selectBox {
  5706. overflow: auto;
  5707. width: 96%;
  5708. margin: 0 auto;
  5709. height: calc(100% - 40px - 21px - 20px);
  5710. }
  5711. .cru_selectBox::-webkit-scrollbar,
  5712. .study_top::-webkit-scrollbar,
  5713. .textContent::-webkit-scrollbar {
  5714. /*滚动条整体样式*/
  5715. width: 6px;
  5716. /*高宽分别对应横竖滚动条的尺寸*/
  5717. height: 6px;
  5718. }
  5719. /*定义滚动条轨道 内阴影+圆角*/
  5720. .cru_selectBox::-webkit-scrollbar-track,
  5721. .study_top::-webkit-scrollbar-track,
  5722. .textContent::-webkit-scrollbar {
  5723. border-radius: 10px;
  5724. background-color: #b8bdc9;
  5725. }
  5726. /*定义滑块 内阴影+圆角*/
  5727. .cru_selectBox::-webkit-scrollbar-thumb,
  5728. .study_top::-webkit-scrollbar-thumb,
  5729. .textContent::-webkit-scrollbar-thumb {
  5730. border-radius: 10px;
  5731. -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
  5732. background-color: #2c5ab3;
  5733. }
  5734. .vedioBox {
  5735. border-radius: 20px;
  5736. background: #fff;
  5737. margin-bottom: 10px;
  5738. }
  5739. .taskBox {
  5740. margin: 15px auto 20px;
  5741. background: #f7f7f7;
  5742. width: 97%;
  5743. border-radius: 10px;
  5744. }
  5745. .vedioTaskBox {
  5746. width: 100%;
  5747. display: flex;
  5748. flex-direction: row;
  5749. flex-wrap: nowrap;
  5750. align-items: center;
  5751. }
  5752. .toolBox {
  5753. padding: 20px 0 0 0;
  5754. display: flex;
  5755. }
  5756. .btnAll {
  5757. position: absolute;
  5758. right: 0;
  5759. display: flex;
  5760. flex-direction: row;
  5761. flex-wrap: nowrap;
  5762. align-items: center;
  5763. }
  5764. .vedioTimeBox {
  5765. display: flex;
  5766. flex-direction: row;
  5767. align-items: center;
  5768. flex-wrap: nowrap;
  5769. position: relative;
  5770. }
  5771. .navBox {
  5772. background: rgb(255, 255, 255);
  5773. height: 400px;
  5774. padding: 5px 1px 0 1px;
  5775. overflow: auto;
  5776. }
  5777. .worksBox {
  5778. padding: 5px 0 0 10px;
  5779. border-bottom: 1px solid #eeeeee;
  5780. }
  5781. .worksBTitle {
  5782. font-size: 20px;
  5783. padding-bottom: 15px;
  5784. border-bottom: 1px solid #eeeeee;
  5785. display: flex;
  5786. align-items: center;
  5787. }
  5788. .greenBox {
  5789. width: 5px;
  5790. height: 30px;
  5791. background: #63b6fa;
  5792. margin-right: 5px;
  5793. }
  5794. .worksDetailBox {
  5795. display: flex;
  5796. width: 100%;
  5797. flex-direction: row;
  5798. flex-wrap: wrap;
  5799. align-items: center;
  5800. justify-content: flex-start;
  5801. padding: 15px 0;
  5802. }
  5803. .works {
  5804. display: flex;
  5805. flex-direction: column;
  5806. flex-wrap: nowrap;
  5807. align-items: flex-start;
  5808. justify-content: flex-start;
  5809. align-content: center;
  5810. max-width: 240px;
  5811. width: calc(100% / 3 - 10px);
  5812. height: auto;
  5813. margin-right: 10px;
  5814. margin-bottom: 10px;
  5815. overflow: hidden;
  5816. height: 140px;
  5817. box-shadow: 0 0 6px 1px #dfdada;
  5818. border-radius: 15px;
  5819. }
  5820. .workImg {
  5821. width: 100%;
  5822. /* height: calc(100% - 40px); */
  5823. height: 105px;
  5824. }
  5825. .workImg>img {
  5826. width: 100%;
  5827. height: 100%;
  5828. }
  5829. .worksName {
  5830. height: 40px;
  5831. line-height: 40px;
  5832. display: flex;
  5833. width: 92%;
  5834. flex-direction: row;
  5835. flex-wrap: nowrap;
  5836. justify-content: space-between;
  5837. align-items: center;
  5838. margin: 0 10px;
  5839. }
  5840. .worksName>div:nth-child(1) {
  5841. width: 48px;
  5842. white-space: nowrap;
  5843. overflow: hidden;
  5844. text-overflow: ellipsis;
  5845. }
  5846. .worksName>div:nth-child(2) {
  5847. color: #b7b4b5;
  5848. }
  5849. .noWorksS {
  5850. padding: 15px 0;
  5851. display: flex;
  5852. flex-direction: row;
  5853. flex-wrap: wrap;
  5854. align-items: center;
  5855. justify-content: flex-start;
  5856. }
  5857. .noWorksName {
  5858. background: #46a1eb;
  5859. color: #fff;
  5860. width: 90px;
  5861. height: 25px;
  5862. text-align: center;
  5863. line-height: 25px;
  5864. border-radius: 5px;
  5865. margin: 10px 15px 10px 0;
  5866. white-space: nowrap;
  5867. overflow: hidden;
  5868. padding: 5px;
  5869. text-overflow: ellipsis;
  5870. }
  5871. .noWorksName:hover {
  5872. background: #e7e7e7 !important;
  5873. }
  5874. .title {
  5875. background: #1e5cc9;
  5876. /* width: 98%; */
  5877. height: 45px;
  5878. color: #fff;
  5879. line-height: 45px;
  5880. padding-left: 20px;
  5881. box-sizing: border-box;
  5882. }
  5883. .textBox {
  5884. font-size: 20px;
  5885. width: 90%;
  5886. display: flex;
  5887. flex-direction: column;
  5888. align-items: center;
  5889. margin: 20px auto 0;
  5890. }
  5891. .textContent {
  5892. font-size: 18px;
  5893. height: 450px;
  5894. width: 95%;
  5895. overflow: auto;
  5896. line-height: 30px;
  5897. }
  5898. .answerBg {
  5899. background: url("../assets/icon/answerBgNew.png") no-repeat;
  5900. background-size: 100% 100%;
  5901. width: 100%;
  5902. height: 100%;
  5903. color: #fff;
  5904. text-align: center;
  5905. display: flex;
  5906. flex-direction: column;
  5907. flex-wrap: nowrap;
  5908. align-items: center;
  5909. }
  5910. .answerBg>div:nth-child(1) {
  5911. font-size: 22px;
  5912. padding: 25px 0 10px;
  5913. }
  5914. .answerContent {
  5915. width: 215px;
  5916. height: 60px;
  5917. word-break: break-all;
  5918. text-align: center;
  5919. white-space: nowrap;
  5920. overflow: hidden;
  5921. text-overflow: ellipsis;
  5922. }
  5923. .elist_input_box {
  5924. display: flex;
  5925. align-items: flex-start;
  5926. flex-wrap: nowrap;
  5927. padding: 10px 0 15px 30px;
  5928. flex-direction: column;
  5929. }
  5930. .elist_input {
  5931. /* width: 40%; */
  5932. width: 100%;
  5933. }
  5934. .elist_input .elist_input_box input {
  5935. font: inherit;
  5936. color: currentColor;
  5937. width: 200px;
  5938. padding: 8px 14px;
  5939. display: block;
  5940. min-width: 0;
  5941. outline: none;
  5942. border: 1px solid rgba(0, 0, 0, 0.23);
  5943. border-radius: 4px;
  5944. box-sizing: border-box;
  5945. background: #fff;
  5946. margin: 0 20px 0 0;
  5947. }
  5948. .elist_input .elist_input_box span {
  5949. height: 36px;
  5950. line-height: 36px;
  5951. color: rgb(82, 82, 82);
  5952. }
  5953. .elist_input .elist_input_box .remove {
  5954. height: 20px;
  5955. width: 20px;
  5956. background-size: 100% 100%;
  5957. background-position: unset;
  5958. margin-left: 5px;
  5959. }
  5960. .elist_input_box>>>.el-rate {
  5961. display: flex;
  5962. height: 36px;
  5963. align-items: center;
  5964. }
  5965. .elist_input_box .elist_inptu_text {
  5966. min-height: 50px;
  5967. /* width: 500px;
  5968. max-height: 150px; */
  5969. width: 100%;
  5970. line-height: 50px;
  5971. color: rgb(82, 82, 82);
  5972. overflow: auto;
  5973. text-indent: 5px;
  5974. background: #f7f6f9;
  5975. border-radius: 10px;
  5976. }
  5977. .elist_input_box .elist_inptu_text input {
  5978. width: 500px;
  5979. }
  5980. .elist_input_box>>>.el-rate__icon {
  5981. font-size: 24px;
  5982. }
  5983. .isClick {
  5984. background: #4d9def;
  5985. }
  5986. .bzBox {
  5987. display: flex;
  5988. flex-direction: row;
  5989. align-items: center;
  5990. }
  5991. .bzBox>div:nth-child(1) {
  5992. width: 4px;
  5993. height: 40px;
  5994. background-image: linear-gradient(180deg, #2c5cbd, #a1cff4);
  5995. }
  5996. .bzBox>div:nth-child(2) {
  5997. font-size: 23px;
  5998. font-weight: bold;
  5999. padding: 0px 0px 0 10px;
  6000. }
  6001. .navTitile {
  6002. padding: 0 0px 0 15px;
  6003. background: #1e5cc9;
  6004. color: #fff;
  6005. height: 40px;
  6006. line-height: 40px;
  6007. border-top-left-radius: 10px;
  6008. border-top-right-radius: 10px;
  6009. }
  6010. .isTypeOne {
  6011. width: 240px;
  6012. height: 170px;
  6013. /* border: 1px solid #f8f8f8; */
  6014. border-radius: 10px;
  6015. box-shadow: 0 0 6px 1px #dfdada;
  6016. }
  6017. .e_add_top {
  6018. display: flex;
  6019. justify-content: space-between;
  6020. padding: 20px 20px 0 20px;
  6021. border-radius: 3px;
  6022. background: #fff;
  6023. }
  6024. .e_add_title2 {
  6025. display: flex;
  6026. align-items: center;
  6027. }
  6028. .e_add_title2 span {
  6029. width: 40px;
  6030. }
  6031. .e_add_title {
  6032. display: flex;
  6033. align-items: center;
  6034. color: #b8b8b8;
  6035. font-size: 18px;
  6036. position: relative;
  6037. height: 40px;
  6038. }
  6039. .e_add_title span {
  6040. margin-right: 10px;
  6041. }
  6042. .e_add_title .el_input {
  6043. width: 300px;
  6044. }
  6045. .e_add_title>>>.el-input__inner {
  6046. width: 400px;
  6047. }
  6048. .e_add_btn {}
  6049. .e_add_content {
  6050. display: flex;
  6051. width: 650px;
  6052. height: 550px;
  6053. }
  6054. .e_add_list {
  6055. background: #fff;
  6056. height: 500px;
  6057. width: 210px;
  6058. position: relative;
  6059. margin: 15px 5px 0 0;
  6060. flex-shrink: 0;
  6061. display: flex;
  6062. flex-direction: column;
  6063. }
  6064. .e_add_list_title {
  6065. font-size: 20px;
  6066. width: 100%;
  6067. box-sizing: border-box;
  6068. padding: 15px 40px;
  6069. text-align: center;
  6070. border-bottom: 1px solid #eaeaea;
  6071. position: relative;
  6072. display: flex;
  6073. align-items: center;
  6074. justify-content: center;
  6075. height: 57px;
  6076. background: #f6f6f6;
  6077. }
  6078. .e_add_list_title span {
  6079. overflow: hidden;
  6080. white-space: nowrap;
  6081. text-overflow: ellipsis;
  6082. }
  6083. .e_add_list_title img {
  6084. position: absolute;
  6085. right: 15px;
  6086. width: 25px;
  6087. cursor: pointer;
  6088. top: 50%;
  6089. transform: translateY(-50%);
  6090. }
  6091. .e_add_list_body {
  6092. height: calc(100% - 187px);
  6093. overflow: auto;
  6094. }
  6095. .e_add_list_child {
  6096. width: 100%;
  6097. display: flex;
  6098. align-items: center;
  6099. justify-content: center;
  6100. position: relative;
  6101. box-sizing: border-box;
  6102. padding: 15px 40px;
  6103. text-align: center;
  6104. }
  6105. .e_add_list_child span {
  6106. overflow: hidden;
  6107. white-space: nowrap;
  6108. text-overflow: ellipsis;
  6109. cursor: pointer;
  6110. }
  6111. .e_add_list_child img {
  6112. position: absolute;
  6113. right: 10px;
  6114. width: 21px;
  6115. cursor: pointer;
  6116. top: 50%;
  6117. transform: translateY(-50%);
  6118. }
  6119. .e_add_list_child+.e_add_list_child {
  6120. border-top: 1px solid #eaeaea;
  6121. }
  6122. .e_add_list_child .active {
  6123. color: #409eff;
  6124. }
  6125. .e_add_list_btn {
  6126. position: absolute;
  6127. bottom: 0;
  6128. height: 50px;
  6129. background: rgb(120, 120, 254);
  6130. width: 100%;
  6131. color: #fff;
  6132. font-size: 16px;
  6133. text-align: center;
  6134. line-height: 50px;
  6135. cursor: pointer;
  6136. }
  6137. .e_add_list_detail {
  6138. position: absolute;
  6139. bottom: 0;
  6140. height: 130px;
  6141. background: rgb(120, 120, 254);
  6142. width: 100%;
  6143. color: #fff;
  6144. font-size: 16px;
  6145. display: flex;
  6146. align-items: center;
  6147. justify-content: center;
  6148. }
  6149. .e_add_list_detail textarea {
  6150. height: 90%;
  6151. width: 95%;
  6152. border: none;
  6153. resize: none;
  6154. outline: none;
  6155. padding: 5px;
  6156. box-sizing: border-box;
  6157. }
  6158. .e_add_list_pbox {
  6159. width: 650px;
  6160. /* height: 600px; */
  6161. }
  6162. .e_add_list_pbox_title {
  6163. height: 50px;
  6164. background: #fff;
  6165. display: flex;
  6166. align-items: center;
  6167. width: 100%;
  6168. box-sizing: border-box;
  6169. padding: 0 20px;
  6170. }
  6171. .type_title {
  6172. font-size: 18px;
  6173. font-weight: 700;
  6174. }
  6175. .type_content {
  6176. font-size: 16px;
  6177. margin-left: 30px;
  6178. }
  6179. .type_content span+span {
  6180. margin-left: 20px;
  6181. }
  6182. .type_content span {
  6183. cursor: pointer;
  6184. padding-bottom: 5px;
  6185. box-sizing: border-box;
  6186. }
  6187. .type_content .active {
  6188. color: #409eff;
  6189. border-bottom: 2px solid #409eff;
  6190. }
  6191. .e_add_list_pbox_content {
  6192. height: calc(100% - 50px);
  6193. display: flex;
  6194. align-items: center;
  6195. width: 100%;
  6196. background: #fff;
  6197. }
  6198. .evaCss {
  6199. display: flex;
  6200. flex-direction: row;
  6201. flex-wrap: nowrap;
  6202. align-items: flex-start;
  6203. }
  6204. .cru_line {
  6205. position: absolute;
  6206. bottom: 0px;
  6207. transition: all 0.5s;
  6208. left: 0px;
  6209. width: 125px;
  6210. margin-left: -25px;
  6211. }
  6212. .isNoMessage {
  6213. width: 20%;
  6214. margin: 25% auto 0;
  6215. }
  6216. .isNoMessage>img {
  6217. width: 100%;
  6218. height: 100%;
  6219. }
  6220. .fullStyle>>>.el-dialog__body {
  6221. height: 100% !important;
  6222. }
  6223. .fullStyle>>>.el-dialog,
  6224. .fullStyle {
  6225. width: 100% !important;
  6226. max-width: 100% !important;
  6227. height: 100% !important;
  6228. margin: 0 !important;
  6229. }
  6230. .full_diy>>>.el-dialog {
  6231. margin: 0 !important;
  6232. height: 100%;
  6233. padding: 4px;
  6234. }
  6235. .full_diy>>>.el-dialog__body {
  6236. height: calc(100% - 100px);
  6237. }
  6238. .switchCss {
  6239. width: 100%;
  6240. display: flex;
  6241. flex-direction: row;
  6242. flex-wrap: nowrap;
  6243. align-items: center;
  6244. justify-content: center;
  6245. }
  6246. .isClickNav {
  6247. color: #499eef;
  6248. }
  6249. .commentImg {
  6250. width: 25px;
  6251. height: 25px;
  6252. cursor: pointer;
  6253. }
  6254. .commentImg>img {
  6255. width: 100%;
  6256. height: 100%;
  6257. }
  6258. .comment {
  6259. background: #f9f9f9;
  6260. border-radius: 0 0 15px 15px;
  6261. display: flex;
  6262. flex-direction: row;
  6263. flex-wrap: nowrap;
  6264. align-items: center;
  6265. justify-content: flex-end;
  6266. height: 35px;
  6267. }
  6268. .commentList {
  6269. display: flex;
  6270. flex-direction: row;
  6271. flex-wrap: nowrap;
  6272. align-items: center;
  6273. justify-content: center;
  6274. align-content: center;
  6275. margin-left: 15px;
  6276. }
  6277. .studentDetail {
  6278. display: flex;
  6279. flex-direction: row;
  6280. flex-wrap: nowrap;
  6281. /* align-items: center; */
  6282. align-items: flex-start;
  6283. }
  6284. .tx {
  6285. width: 50px;
  6286. }
  6287. .tx>img {
  6288. width: 100%;
  6289. height: 100%;
  6290. }
  6291. .nameAndTime {
  6292. display: flex;
  6293. flex-direction: column;
  6294. flex-wrap: nowrap;
  6295. align-items: flex-start;
  6296. margin-left: 10px;
  6297. }
  6298. .worksAnswer {
  6299. color: #4078dd;
  6300. margin: 10px 0;
  6301. font-size: 16px;
  6302. }
  6303. .worksAnswer>img {
  6304. width: 100%;
  6305. height: 100%;
  6306. }
  6307. .commentTop {
  6308. border-bottom: 1px solid #eaeaea;
  6309. padding-bottom: 10px;
  6310. }
  6311. .commentBox {
  6312. padding-top: 15px;
  6313. }
  6314. .pl {
  6315. font-size: 18px;
  6316. }
  6317. .plName {
  6318. display: flex;
  6319. flex-direction: row;
  6320. flex-wrap: nowrap;
  6321. align-items: baseline;
  6322. color: #78787a;
  6323. }
  6324. .evalCss {
  6325. background: #fff;
  6326. font-size: 18px;
  6327. }
  6328. .nav {
  6329. color: #9d9d9d;
  6330. padding: 5px 0 15px 20px;
  6331. }
  6332. .middleBox {
  6333. padding: 5px 0 15px 20px;
  6334. }
  6335. .pfBox {
  6336. padding-bottom: 30px;
  6337. }
  6338. .nameAndrate {
  6339. display: flex;
  6340. flex-direction: row;
  6341. flex-wrap: nowrap;
  6342. align-items: center;
  6343. padding-bottom: 10px;
  6344. }
  6345. .nameAndrate>div {
  6346. margin-left: 10px;
  6347. color: #000;
  6348. }
  6349. .pfBox>div:nth-child(2) {
  6350. background: #f7f6f9;
  6351. width: 400px;
  6352. min-height: 45px;
  6353. border-radius: 10px;
  6354. font-size: 16px;
  6355. display: flex;
  6356. flex-wrap: wrap;
  6357. align-items: center;
  6358. padding: 10px 20px;
  6359. box-sizing: border-box;
  6360. color: #000;
  6361. }
  6362. .bz {
  6363. display: flex;
  6364. flex-direction: row;
  6365. flex-wrap: nowrap;
  6366. align-items: flex-start;
  6367. }
  6368. .bz>div {
  6369. padding: 0 10px;
  6370. }
  6371. .select_box2_title {
  6372. background: #fff;
  6373. border-radius: 5px;
  6374. padding: 15px 10px;
  6375. box-sizing: border-box;
  6376. margin-bottom: 10px;
  6377. display: flex;
  6378. flex-direction: row;
  6379. flex-wrap: nowrap;
  6380. align-items: center;
  6381. }
  6382. .select_box2_title>div:nth-child(2) {
  6383. margin-left: 10px;
  6384. color: #c4c4c4;
  6385. }
  6386. .select_box2_box {
  6387. display: flex;
  6388. height: 500px;
  6389. }
  6390. .select_box2_img {
  6391. width: calc(100% - 310px);
  6392. height: 100%;
  6393. overflow: auto;
  6394. background: #fff;
  6395. border-radius: 5px;
  6396. }
  6397. .select_box2_img img {
  6398. width: 100%;
  6399. }
  6400. .select_box2_answer {
  6401. background: #fff;
  6402. margin-left: 10px;
  6403. border-radius: 5px;
  6404. width: 300px;
  6405. overflow: auto;
  6406. height: 90%;
  6407. display: flex;
  6408. flex-direction: column;
  6409. align-items: flex-start;
  6410. padding-top: 10px;
  6411. box-sizing: border-box;
  6412. position: relative;
  6413. }
  6414. .select_answer_title {
  6415. padding: 0 0 15px 20px;
  6416. color: #c4c4c4;
  6417. }
  6418. .select_box2_answer_box {
  6419. margin: 0 0 10px 20px;
  6420. width: 85%;
  6421. display: flex;
  6422. flex-direction: row;
  6423. flex-wrap: nowrap;
  6424. align-items: center;
  6425. }
  6426. .upAnswerCss {
  6427. position: absolute;
  6428. bottom: 15px;
  6429. right: 15px;
  6430. }
  6431. .upAnswerCss>>>.el-button {
  6432. width: 95px;
  6433. height: 35px;
  6434. line-height: 35px;
  6435. padding: 0;
  6436. }
  6437. .rightWidthCss {
  6438. width: 60%;
  6439. display: flex;
  6440. flex-direction: row;
  6441. align-items: flex-start;
  6442. }
  6443. .rightAnswer {
  6444. display: flex;
  6445. flex-direction: row;
  6446. flex-wrap: nowrap;
  6447. align-items: center;
  6448. color: red;
  6449. margin-bottom: 31px;
  6450. }
  6451. .rightAnswerCss {
  6452. display: flex;
  6453. flex-direction: column;
  6454. flex-wrap: nowrap;
  6455. padding-top: 60px;
  6456. }
  6457. .blueCss {
  6458. color: #767de1;
  6459. margin-left: 10px;
  6460. }
  6461. .redCss {
  6462. color: red;
  6463. }
  6464. .redioStyle>>>.el-radio__input.is-checked+.el-radio__label {
  6465. color: rgb(0 123 255) !important;
  6466. }
  6467. .zuoyeYulan {
  6468. padding-top: 15px;
  6469. font-size: 18px;
  6470. display: flex;
  6471. align-items: flex-end;
  6472. }
  6473. .buttonA {
  6474. margin-left: 10px;
  6475. padding: 0;
  6476. }
  6477. .displayBox {
  6478. margin-bottom: 10px;
  6479. display: block;
  6480. border-bottom: 3px solid #eee;
  6481. display: flex;
  6482. align-items: center;
  6483. }
  6484. .easy_comment {
  6485. width: calc(100% - 90px);
  6486. margin-left: 10px;
  6487. display: flex;
  6488. flex-wrap: wrap;
  6489. }
  6490. .easy_comment>div {
  6491. border: 1px solid #4a4a4a;
  6492. color: #666;
  6493. border-radius: 15px;
  6494. padding: 5px 10px;
  6495. font-size: 16px;
  6496. margin-bottom: 10px;
  6497. margin-right: 5px;
  6498. cursor: pointer;
  6499. }
  6500. .easy_comment div:hover {
  6501. border: 1px solid #f7ba2a;
  6502. color: #c69217;
  6503. }
  6504. .xuan_right_box {
  6505. padding: 10px;
  6506. background: rgb(247, 247, 247);
  6507. margin: 10px 12px;
  6508. border-radius: 5px;
  6509. }
  6510. .tool_right_box {
  6511. display: flex;
  6512. align-items: center;
  6513. }
  6514. .tool_right_box+.tool_right_box {
  6515. margin-top: 10px;
  6516. }
  6517. .right_box_xuan {
  6518. background: rgb(0 123 255);
  6519. color: #fff;
  6520. border-radius: 5px;
  6521. padding: 5px;
  6522. margin-left: 10px;
  6523. }
  6524. .pButton {
  6525. position: fixed;
  6526. right: 5%;
  6527. bottom: 5%;
  6528. color: #fff;
  6529. width: 50px;
  6530. height: 50px;
  6531. border-radius: 50%;
  6532. text-align: center;
  6533. line-height: 50px;
  6534. background-image: -webkit-linear-gradient(left, #72aaf4, #4d81d5);
  6535. cursor: pointer;
  6536. z-index: 999;
  6537. }
  6538. .newDialogCss {
  6539. position: fixed;
  6540. right: 5%;
  6541. top: 50%;
  6542. width: 340px;
  6543. transform: translateY(-50%);
  6544. height: 60%;
  6545. box-shadow: 0px 0 8px 0px #555555;
  6546. border-radius: 15px;
  6547. z-index: 999;
  6548. }
  6549. .pzTop {
  6550. color: #fff;
  6551. background: #000;
  6552. display: flex;
  6553. flex-direction: row;
  6554. flex-wrap: nowrap;
  6555. align-items: center;
  6556. justify-content: space-between;
  6557. height: 40px;
  6558. border-radius: 15px 15px 0 0;
  6559. }
  6560. .pzTop>div:nth-child(1) {
  6561. padding-left: 10px;
  6562. }
  6563. .pzTop>div:nth-child(2) {
  6564. width: 15px;
  6565. height: 15px;
  6566. padding-right: 10px;
  6567. cursor: pointer;
  6568. }
  6569. .pzTop>div:nth-child(2)>img {
  6570. width: 100%;
  6571. height: 100%;
  6572. }
  6573. .pzBox,
  6574. .noPzBox {
  6575. height: calc(100% - 40px);
  6576. background: #ededed;
  6577. border-radius: 0 0 15px 15px;
  6578. }
  6579. .noPzBox {
  6580. display: flex;
  6581. flex-direction: column;
  6582. flex-wrap: nowrap;
  6583. justify-content: center;
  6584. align-items: center;
  6585. }
  6586. .pzList {
  6587. background: #fff;
  6588. width: 90%;
  6589. margin: 0 auto 15px;
  6590. }
  6591. .pzNavTop {
  6592. display: flex;
  6593. flex-direction: row;
  6594. flex-wrap: nowrap;
  6595. padding: 10px 10px 0 10px;
  6596. align-items: center;
  6597. }
  6598. .pzNavTop>div:nth-child(1) {
  6599. background: #3760af;
  6600. width: 40px;
  6601. height: 40px;
  6602. color: #fff;
  6603. text-align: center;
  6604. line-height: 40px;
  6605. border-radius: 50%;
  6606. font-size: 14px;
  6607. }
  6608. .pzNavTop>div:nth-child(2) {
  6609. font-size: 18px;
  6610. color: #959595;
  6611. margin-left: 5px;
  6612. }
  6613. .pzContent {
  6614. padding: 10px;
  6615. word-break: break-word;
  6616. }
  6617. .pzListBox {
  6618. padding-top: 15px;
  6619. height: calc(100% - 60px);
  6620. overflow: auto;
  6621. }
  6622. .addPz {
  6623. background: #4b79ce;
  6624. width: 100px;
  6625. color: #fff;
  6626. font-size: 12px;
  6627. height: 30px;
  6628. margin: 0 auto;
  6629. text-align: center;
  6630. line-height: 30px;
  6631. border-radius: 10px;
  6632. cursor: pointer;
  6633. }
  6634. .addDialogCss {
  6635. position: fixed;
  6636. right: 37%;
  6637. top: 50%;
  6638. width: 600px;
  6639. transform: translateY(-50%);
  6640. height: 50%;
  6641. box-shadow: 0px 0 8px 0px #555555;
  6642. border-radius: 15px;
  6643. z-index: 999;
  6644. }
  6645. .teacherPz {
  6646. display: flex;
  6647. flex-direction: row;
  6648. align-items: center;
  6649. flex-wrap: nowrap;
  6650. }
  6651. .teacherPzImg {
  6652. width: 30px;
  6653. height: 30px;
  6654. }
  6655. .teacherPzImg>img {
  6656. width: 100%;
  6657. height: 100%;
  6658. }
  6659. .addPzBox {
  6660. height: calc(100% - 40px);
  6661. background: #ededed;
  6662. }
  6663. .pzConText {
  6664. width: 95%;
  6665. height: 100%;
  6666. margin: 0 auto;
  6667. border: none;
  6668. background: #fff;
  6669. border-radius: 0px;
  6670. }
  6671. .addTextCss {
  6672. background: #4b79ce;
  6673. width: 80px;
  6674. height: 30px;
  6675. text-align: center;
  6676. color: #fff;
  6677. line-height: 30px;
  6678. border-radius: 10px;
  6679. margin: 10px auto 0;
  6680. cursor: pointer;
  6681. }
  6682. .pzConText:focus-visible {
  6683. border: none !important;
  6684. }
  6685. .maxWidth {
  6686. width: 1000px;
  6687. }
  6688. .noPz {
  6689. width: 150px;
  6690. margin: 0 auto;
  6691. }
  6692. .noPz>img {
  6693. width: 100%;
  6694. height: 100%;
  6695. }
  6696. .pzList .time{
  6697. text-align: right;
  6698. box-sizing: border-box;
  6699. padding: 0 10px 10px 0px;
  6700. color: #949494;
  6701. font-size: 14px;
  6702. }
  6703. </style>