studyStudent.vue 217 KB

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