study.vue 243 KB

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