studyStudent.vue 224 KB

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