studyStudent.vue 836 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112
  1. <template>
  2. <div class="pb_content" style="height: 100%;overflow: unset;">
  3. <div
  4. class="pb_content_body"
  5. style="
  6. display: flex;
  7. /* height: 900px; */
  8. height: 100%;
  9. position: relative;
  10. padding: 20px 0 20px 20px;
  11. box-sizing: border-box;
  12. overflow: auto;
  13. "
  14. >
  15. <!-- <div class="btnAllNT">
  16. <img
  17. v-if="
  18. courseDetail.userid == userid ||
  19. (courseDetail.course_teacher &&
  20. courseDetail.course_teacher.indexOf(userid) != -1)
  21. "
  22. src="../../assets/icon/learn/addTool.png"
  23. @click="openToolAll"
  24. style="position: relative"
  25. />
  26. <img
  27. src="../../assets/icon/learn/last.png"
  28. @click="nextOrpreSteps(0)"
  29. />
  30. <img
  31. src="../../assets/icon/learn/next.png"
  32. @click="nextOrpreSteps(1)"
  33. />
  34. <img
  35. src="../../assets/icon/learn/return.png"
  36. @click.stop="
  37. goTo(
  38. '/courseDetail?userid=' +
  39. userid +
  40. '&oid=' +
  41. oid +
  42. '&org=' +
  43. org +
  44. '&cid=' +
  45. classId +
  46. '&courseId=' +
  47. id +
  48. '&tType=' +
  49. tType +
  50. '&screenType=' +
  51. screenType
  52. )
  53. "
  54. />
  55. </div> -->
  56. <div
  57. class="pButton"
  58. style="left: 0; top: 140px"
  59. v-if="mlDialog == false && !(IsFollow && tType == 2)"
  60. @click="setContent2(true)"
  61. >
  62. <!-- 批 , getCourseDetail()-->
  63. <img
  64. src="../../assets/icon/newIcons/isRight.png"
  65. style="width: 45px"
  66. alt=""
  67. />
  68. </div>
  69. <div class="pb_left" v-else-if="!(IsFollow && tType == 2)">
  70. <!-- <div class="courseTitle">{{ courseDetail.title }}</div> -->
  71. <div style="border-bottom: 1px solid #cad1dc; width: 100%">
  72. <div class="courseTitle" :style="{ margin: tcid && inviteCode && '10px auto 0px'}">
  73. <div
  74. style="
  75. max-width: calc(100% - 40px);
  76. width: auto;
  77. white-space: nowrap;
  78. overflow: hidden;
  79. text-overflow: ellipsis;
  80. word-break: break-word;
  81. display: block;
  82. "
  83. >
  84. <el-tooltip
  85. effect="light"
  86. :content="courseDetail.title"
  87. placement="top"
  88. >
  89. <div class="ctitle">
  90. {{ courseDetail.title }}
  91. </div>
  92. </el-tooltip>
  93. </div>
  94. <el-tooltip effect="light" content="收缩" placement="top">
  95. <div class="mlImg" @click="setContent2(false)">
  96. <img src="../../assets/icon/newIcons/isRight.png" alt="" />
  97. </div>
  98. </el-tooltip>
  99. </div>
  100. <div
  101. class="inviteBox"
  102. v-if="tcid && inviteCode"
  103. style="padding: 0 0 8px 0"
  104. >
  105. <div>
  106. <span>随机码:{{ inviteCode }}</span>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="cru_selectBox">
  111. <div v-for="(item, stageIndex) in navList" :key="stageIndex">
  112. <div class="stageChild" :class="{ navActive: item.isOpen }">
  113. <div v-for="(nav, navIndex) in item.task" :key="navIndex">
  114. <div
  115. class="navItem"
  116. :class="{
  117. openTaskActive:
  118. navIndex == taskCount &&
  119. nav.id == navId &&
  120. stageIndex == courseType,
  121. }"
  122. >
  123. <div v-if="nav.tool[0].tool != undefined">
  124. <div
  125. class="closeTri1"
  126. v-if="navIndex == taskCount && nav.id == navId && stageIndex == courseType"
  127. @click="openTask(stageIndex, navIndex, nav.id)"
  128. >
  129. <img :style="{transform: nav.isOpen ? 'rotate(0deg)':'rotate(270deg)'}" src="../../assets/icon/newIcons/bDown2.png" alt />
  130. </div>
  131. <div
  132. class="closeTri1"
  133. v-else
  134. @click="openTask(stageIndex, navIndex, nav.id)"
  135. >
  136. <img :style="{transform: nav.isOpen ? 'rotate(90deg)':'rotate(0deg)'}" src="../../assets/icon/newIcons/right.png" alt />
  137. </div>
  138. </div>
  139. <div v-else class="noToolBlue"></div>
  140. <div
  141. @click="openTask(stageIndex, navIndex, nav.id)"
  142. class="navItemList"
  143. :class="{
  144. isItemList:
  145. navIndex == taskCount &&
  146. nav.id == navId &&
  147. stageIndex == courseType,
  148. }"
  149. >
  150. <div>任务{{ navIndex + 1 }}:</div>
  151. <el-tooltip
  152. effect="light"
  153. :content="nav.taskName"
  154. placement="top"
  155. >
  156. <div
  157. :style="{
  158. width:
  159. IsLookOpen && !nav.isLook
  160. ? 'calc(100% - 75px)'
  161. : 'auto',
  162. }"
  163. >
  164. {{ nav.taskName }}
  165. </div>
  166. </el-tooltip>
  167. </div>
  168. </div>
  169. <div
  170. v-if="nav.tool[0].tool != undefined"
  171. class="toolChild"
  172. :class="{ toolActive: nav.isOpen }"
  173. >
  174. <div v-for="(t, toolIndex2) in nav.tool" :key="toolIndex2">
  175. <div
  176. class="gjCss"
  177. :class="{
  178. isGjCss: t.isTool,
  179. }"
  180. @click="jumpGj(courseType, navIndex, toolIndex2, nav.id)"
  181. >
  182. <div>工具{{ toolIndex2 + 1 }}:</div>
  183. <div v-if="t.tool == 58">模拟驾驶</div>
  184. <div v-if="t.tool == 59">路径搜索</div>
  185. <div v-if="t.tool == 60">深度学习</div>
  186. <div v-if="t.tool == 10">倒计时</div>
  187. <div v-if="t.tool == 65">挑人</div>
  188. <div v-if="t.tool == 7">思维网格</div>
  189. <div v-if="t.tool == 1">电子白板</div>
  190. <div v-if="t.tool == 52">文档</div>
  191. <div v-if="t.tool == 3">思维导图</div>
  192. <div v-if="t.tool == 48">表格</div>
  193. <div v-if="t.tool == 49">学生分组</div>
  194. <div v-if="t.tool == 4">问卷调查</div>
  195. <div v-if="t.tool == 45">选择题</div>
  196. <div v-if="t.tool == 15">问答</div>
  197. <div v-if="t.tool == 16">作业提交</div>
  198. <div v-if="t.tool == 50">批量上传</div>
  199. <div v-if="t.tool == 41">选择匹配</div>
  200. <div v-if="t.tool == 47">排序</div>
  201. <div v-if="t.tool == 40">个人评价</div>
  202. <div v-if="t.tool == 18">训练平台</div>
  203. <div v-if="t.tool == 21">AIoT Blockly</div>
  204. <div v-if="t.tool == 23">AI Python</div>
  205. <div v-if="t.tool == 24">AI Blockly</div>
  206. <div v-if="t.tool == 32">源码编辑</div>
  207. <div v-if="t.tool == 57">CocoPi</div>
  208. <div v-if="t.tool == 63">海龟编程</div>
  209. <div v-if="t.tool == 28">翻译</div>
  210. <div v-if="t.tool == 31">数字画板</div>
  211. <div v-if="t.tool == 39">GeoGebra</div>
  212. <div v-if="t.tool == 66">公式编辑</div>
  213. <div v-if="t.tool == 67">分子结构</div>
  214. <div v-if="t.tool == 68">时间轴</div>
  215. <div v-if="t.tool == 69">英语写作</div>
  216. <div v-if="t.tool == 70">英语口语</div>
  217. <div v-if="t.tool == 25">目标管理</div>
  218. <div v-if="t.tool == 26">课程设计</div>
  219. <div v-if="t.tool == 62">交互视频</div>
  220. <div v-if="t.tool == 71">AI智能体</div>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
  230. <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
  231. <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 47px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
  232. <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid)) && !['2'].includes(tType) ? '100%' : 'calc(100% - 745px)'}">
  233. <div>任务{{ taskCount + 1 }}</div>
  234. <el-tooltip
  235. effect="light"
  236. :content="
  237. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].task
  238. "
  239. placement="top"
  240. >
  241. <div>
  242. {{
  243. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  244. .task
  245. }}
  246. </div>
  247. </el-tooltip>
  248. </div>
  249. <!-- v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'" -->
  250. <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid) || ['2'].includes(tType)">
  251. <div class="btnLeft">
  252. <el-tooltip effect="light" content="刷新" placement="top">
  253. <div class="reBtnIcon" @click="refreshCourse">
  254. <span>刷新</span>
  255. </div>
  256. </el-tooltip>
  257. <el-tooltip effect="light" content="评论" placement="top">
  258. <div class="commentIcon" @click="setPz" v-if="tType == 1">
  259. <span>评论</span>
  260. </div>
  261. </el-tooltip>
  262. <div v-if="!videoStart && (tType == 1 || tType == 4)">
  263. <el-tooltip effect="light" content="录制" placement="top">
  264. <div class="vedioIcon" @click="startRecording">
  265. <span>录制</span>
  266. </div>
  267. </el-tooltip>
  268. </div>
  269. <div v-else-if="tType == 1 || tType == 4">
  270. <el-tooltip effect="light" content="下载" placement="top">
  271. <div class="vedioIcon1" @click="stopRecording">
  272. <span>下载</span>
  273. </div>
  274. </el-tooltip>
  275. </div>
  276. </div>
  277. <div class="btnRight">
  278. <div
  279. class="last"
  280. @click="nextOrpreSteps(0)"
  281. v-if="!(IsFollow && tType == 2)"
  282. @mouseover="isHovered = true"
  283. @mouseout="isHovered = false"
  284. >
  285. <div class="lastImg">
  286. <img
  287. :src="
  288. isHovered
  289. ? require('../../assets/icon/newIcons/whiteLast.png')
  290. : require('../../assets/icon/newIcons/last.png')
  291. "
  292. alt=""
  293. />
  294. </div>
  295. <div class="lastText">上一步</div>
  296. </div>
  297. <div
  298. class="last"
  299. @click="nextOrpreSteps(1)"
  300. v-if="!(IsFollow && tType == 2)"
  301. @mouseover="isHovered1 = true"
  302. @mouseout="isHovered1 = false"
  303. >
  304. <div class="lastText">下一步</div>
  305. <div class="lastImg">
  306. <img
  307. :src="
  308. isHovered1
  309. ? require('../../assets/icon/newIcons/whiteNext.png')
  310. : require('../../assets/icon/newIcons/next.png')
  311. "
  312. alt=""
  313. />
  314. </div>
  315. </div>
  316. <div
  317. class="last"
  318. @click="juriVisible = true"
  319. v-if="tType == 1"
  320. @mouseover="isHovered2 = true"
  321. @mouseout="isHovered2 = false"
  322. >
  323. <div class="lastImg">
  324. <img
  325. :src="
  326. isHovered2
  327. ? require('../../assets/icon/newIcons/whiteLock.png')
  328. : require('../../assets/icon/newIcons/lock.png')
  329. "
  330. alt=""
  331. />
  332. </div>
  333. <div class="lastText">权限</div>
  334. </div>
  335. <div
  336. class="returnBtn1 returnIcon"
  337. @click.stop="
  338. goTo(
  339. '/courseDetail?userid=' +
  340. userid +
  341. '&oid=' +
  342. oid +
  343. '&org=' +
  344. org +
  345. '&cid=' +
  346. classId +
  347. '&courseId=' +
  348. id +
  349. '&tType=' +
  350. tType +
  351. '&screenType=' +
  352. screenType
  353. )
  354. "
  355. >
  356. <div class="lastImg">
  357. <img src="../../assets/icon/newIcon/return.png" alt="" />
  358. </div>
  359. <div class="lastText" style="color: #000">返回</div>
  360. </div>
  361. </div>
  362. <!-- <div
  363. class="returnBtn lockIcon"
  364. @click="juriVisible = true"
  365. v-if="tType == 1"
  366. >
  367. 权限
  368. </div>
  369. <div
  370. class="returnBtn vedioIcon"
  371. @click="startRecording"
  372. v-if="!videoStart && (tType == 1 || tType == 4)"
  373. >
  374. 录制
  375. </div>
  376. <div
  377. class="returnBtn"
  378. @click="stopRecording"
  379. v-else-if="tType == 1 || tType == 4"
  380. style="background: #ee5255"
  381. >
  382. 下载
  383. </div>
  384. <div class="returnBtn commentIcon" @click="setPz" v-if="tType == 1">
  385. 评论
  386. </div>
  387. <div
  388. class="returnBtn"
  389. @click="nextOrpreSteps(0)"
  390. v-if="!(IsFollow && tType == 2)"
  391. >
  392. 上一步
  393. </div>
  394. <div
  395. class="returnBtn"
  396. @click="nextOrpreSteps(1)"
  397. v-if="!(IsFollow && tType == 2)"
  398. >
  399. 下一步
  400. </div>
  401. <div class="returnBtn" @click="refreshCourse">刷新</div>
  402. <div
  403. class="returnBtn returnIcon"
  404. @click.stop="
  405. goTo(
  406. '/courseDetail?userid=' +
  407. userid +
  408. '&oid=' +
  409. oid +
  410. '&org=' +
  411. org +
  412. '&cid=' +
  413. classId +
  414. '&courseId=' +
  415. id +
  416. '&tType=' +
  417. tType +
  418. '&screenType=' +
  419. screenType
  420. )
  421. "
  422. >
  423. 返回
  424. </div> -->
  425. </div>
  426. </div>
  427. <!-- !chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  428. .taskDetail3 && -->
  429. <div
  430. class="isNoMessage"
  431. v-if="
  432. chapInfoList[courseType].chapterInfo[0].taskJson[0]
  433. .chapterData.length == 0 &&
  434. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  435. .toolChoose[0].tool.length == 0 &&
  436. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  437. .taskDetail == '' &&
  438. !chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  439. .eList &&
  440. !(
  441. courseDetail.userid == userid ||
  442. (courseDetail.course_teacher &&
  443. courseDetail.course_teacher.indexOf(userid) != -1)
  444. )
  445. "
  446. >
  447. <img src="../../assets/icon/isNoMessage.png" alt />
  448. </div>
  449. <div class="study_top" :class="{ pzClass: pzDialog }">
  450. <!-- chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  451. .taskDetail3 || -->
  452. <div
  453. class="vedioBox"
  454. v-if="
  455. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  456. .taskDetail != '' ||
  457. vChapterData[0].length > 0 ||
  458. fileC[0].length > 0
  459. "
  460. style="border-radius: 0 0 20px 20px"
  461. >
  462. <!-- <div
  463. class="taskBox"
  464. v-if="
  465. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  466. .taskDetail3
  467. "
  468. >
  469. <div
  470. style="
  471. display: flex;
  472. flex-wrap: nowrap;
  473. flex-direction: column;
  474. position: relative;
  475. "
  476. >
  477. <div
  478. style="
  479. padding: 15px 0;
  480. line-height: 29px;
  481. font-size: 18px;
  482. color: #0e1e33;
  483. "
  484. class="cont"
  485. v-if="
  486. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  487. .taskDetail3 != ''
  488. "
  489. v-html="
  490. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  491. .taskDetail3
  492. ? MarkdownT(chapInfoList[courseType].chapterInfo[0].taskJson[
  493. taskCount
  494. ].taskDetail3)
  495. : '暂无描述'
  496. "
  497. ></div>
  498. </div>
  499. </div> -->
  500. <div
  501. class="taskBox"
  502. v-if="
  503. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  504. .taskDetail != ''
  505. "
  506. >
  507. <div
  508. style="
  509. display: flex;
  510. flex-wrap: nowrap;
  511. flex-direction: column;
  512. position: relative;
  513. "
  514. >
  515. <div
  516. style="
  517. padding: 15px 0;
  518. line-height: 29px;
  519. font-size: 18px;
  520. color: #0e1e33;
  521. "
  522. class="cont"
  523. v-if="
  524. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  525. .taskDetail != ''
  526. "
  527. v-html="
  528. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  529. .taskDetail
  530. ? chapInfoList[courseType].chapterInfo[0].taskJson[
  531. taskCount
  532. ].taskDetail
  533. : '暂无描述'
  534. "
  535. ></div>
  536. </div>
  537. </div>
  538. <div
  539. class="student_head"
  540. v-if="vChapterData[0].length > 0 || fileC[0].length > 0"
  541. >
  542. <div class="vedioTaskBox" v-loading="downLoading || showType == 7">
  543. <div
  544. :class="
  545. contentDialog == false
  546. ? 'box_course isContentCss'
  547. : 'box_course'
  548. "
  549. v-if="
  550. vChapterData.length > 0 &&
  551. vChapterData[0] &&
  552. showType !== ''
  553. "
  554. >
  555. <div class="wheel" style="height: auto" v-if="showType === 0">
  556. <div
  557. class="workd_media"
  558. style="height: 650px; width: calc(100% - 50px)"
  559. >
  560. <video-player
  561. class="video-player vjs-custom-skin"
  562. :class="contentDialog == false ? 'isAllWidth' : ''"
  563. :playsinline="true"
  564. :options="playerO[0]"
  565. @play="onPlayerPlay($event)"
  566. style="width: 100%; height: 100%; margin: 0 0 0 30px"
  567. ></video-player>
  568. </div>
  569. </div>
  570. <div
  571. class="wheel"
  572. v-if="showType == 1"
  573. style="
  574. box-shadow: 0 0 6px 1px #f2f2f2;
  575. width: 95%;
  576. margin: 0 auto;
  577. background: #f1f1f1;
  578. "
  579. >
  580. <div class="title">查看文档</div>
  581. <el-form class="textBox">
  582. <el-form-item class="textTitle">
  583. <div style="font-size: 22px">
  584. {{ text.name }}
  585. </div>
  586. </el-form-item>
  587. <!-- <div style="color: #918f8f; width: 85%">文档内容</div> -->
  588. <div v-html="text.url" class="textContent cont"></div>
  589. </el-form>
  590. </div>
  591. <div
  592. class="wheel"
  593. v-if="
  594. pptImgUrl1.indexOf(
  595. 'https://view.officeapps.live.com/op/view.aspx?src='
  596. ) != -1 && showType == 2
  597. "
  598. style="width: 95%; margin: 0 auto"
  599. >
  600. <iframe
  601. style="width: 100%; height: 100%; border: none"
  602. :src="pptImgUrl1"
  603. ></iframe>
  604. </div>
  605. <div
  606. class="wheel"
  607. v-else-if="showType == 2"
  608. style="width: 95%; margin: 0 auto"
  609. >
  610. <iframe
  611. style="width: 100%; height: 100%; border: none"
  612. security="restricted"
  613. sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts allow-popups"
  614. :src="pptImgUrl1"
  615. ></iframe>
  616. </div>
  617. <div
  618. class="wheel"
  619. v-if="showType == 3"
  620. style="width: 95%; margin: 0 auto"
  621. >
  622. <pdf
  623. :pdfUrl="pptImgUrl1"
  624. style="width: 100%; height: 100%; overflow: auto"
  625. ></pdf>
  626. </div>
  627. <div
  628. class="wheel"
  629. v-if="showType == 4"
  630. style="width: 95%; margin: 0 auto"
  631. >
  632. <el-image
  633. :src="pptImgUrl1"
  634. fit="contain"
  635. style="width: 100%; height: 100%; cursor: pointer"
  636. @click="previewImg(pptImgUrl1)"
  637. ></el-image>
  638. </div>
  639. </div>
  640. <div
  641. class="pButton"
  642. style="position: absolute; right: 20px; top: 0; z-index: 998"
  643. v-if="!contentDialog"
  644. @click="setContent(true)"
  645. >
  646. <!-- 批 -->
  647. <img
  648. src="../../assets/icon/newIcons/isLeft.png"
  649. style="width: 45px"
  650. alt=""
  651. />
  652. </div>
  653. <div
  654. v-if="contentDialog == true"
  655. :style="{
  656. width:
  657. (vChapterData[0].length > 0 || fileC[0].length > 0) &&
  658. showType === ''
  659. ? 'calc(100%)'
  660. : '300px',
  661. margin:
  662. (vChapterData[0].length > 0 || fileC[0].length > 0) &&
  663. showType === ''
  664. ? '0 15px'
  665. : '0 15px 0 0',
  666. }"
  667. >
  668. <div
  669. class="vedioList"
  670. v-if="vChapterData[0].length > 0 || fileC[0].length > 0"
  671. style="height: 650px"
  672. >
  673. <div class="navCorOpenBox">
  674. <div class="navTitile">内容列表:</div>
  675. <div class="navCorOpen" @click="setContent(false)">
  676. <img
  677. src="../../assets/icon/newIcons/isRight.png"
  678. alt=""
  679. />
  680. </div>
  681. </div>
  682. <div class="navBox">
  683. <div
  684. v-show="
  685. vChapterData[0].length > 0 || fileC[0].length > 0
  686. "
  687. style="padding: 10px 0 25px 0"
  688. >
  689. <div
  690. class="vedioTimeBox"
  691. v-for="(vitem, vindex) in vChapterData[0]"
  692. :key="vindex + '1'"
  693. >
  694. <div class="navListItem" v-if="vitem.type == 2">
  695. <div
  696. @click="lookVedio(vitem.url, vindex)"
  697. class="navText"
  698. :class="isClickNav == vindex ? 'isClickNav' : ''"
  699. >
  700. <span v-if="vitem.text">{{ vitem.text }}-</span
  701. >{{ vitem.name }}
  702. </div>
  703. <div class="downIcon" @click="downloadFile2(vitem)">
  704. <img
  705. src="../../assets/icon/newIcon/down.png"
  706. alt
  707. />
  708. </div>
  709. </div>
  710. <div class="navListItem" v-if="vitem.type == 6">
  711. <div
  712. @click="lookText(0, vindex)"
  713. class="navText"
  714. :class="isClickNav == vindex ? 'isClickNav' : ''"
  715. >
  716. {{ vitem.name }}.doc
  717. </div>
  718. <div
  719. class="downIcon"
  720. @click="checkFileFull1(vitem.type, vitem)"
  721. >
  722. <img
  723. src="../../assets/icon/newIcon/allScreen.png"
  724. alt
  725. />
  726. </div>
  727. </div>
  728. <div
  729. class="navListItem"
  730. v-if="vitem.type == 8 || vitem.type == 14"
  731. >
  732. <div
  733. @click="doUrl(vitem.url, vindex)"
  734. class="navText"
  735. :class="isClickNav == vindex ? 'isClickNav' : ''"
  736. >
  737. {{ vitem.title ? vitem.title : vitem.url }}
  738. </div>
  739. <div
  740. class="downIcon"
  741. @click="checkFileFull1(vitem.type, vitem)"
  742. >
  743. <img
  744. src="../../assets/icon/newIcon/allScreen.png"
  745. alt
  746. />
  747. </div>
  748. </div>
  749. <div class="navListItem" v-if="vitem.type == 3">
  750. <div
  751. @click="downFile(vitem, vindex)"
  752. class="navText"
  753. :class="isClickNav == vindex ? 'isClickNav' : ''"
  754. >
  755. <span v-if="vitem.text">{{ vitem.text }}-</span
  756. >{{ vitem.name }}
  757. </div>
  758. <div
  759. class="downIcon"
  760. @click="checkFileFull1(vitem.type, vitem)"
  761. >
  762. <img
  763. src="../../assets/icon/newIcon/allScreen.png"
  764. alt
  765. />
  766. </div>
  767. <div class="downIcon" @click="downloadFile2(vitem)">
  768. <img
  769. src="../../assets/icon/newIcon/down.png"
  770. alt
  771. />
  772. </div>
  773. </div>
  774. <div class="navListItem" v-if="vitem.type == 12">
  775. <div class="navText" @click="downloadFile2(vitem)">
  776. <span v-if="vitem.text">{{ vitem.text }}-</span
  777. >{{ vitem.name }}
  778. </div>
  779. <div
  780. class="downIcon"
  781. @click="checkFileFull1(vitem.type, vitem)"
  782. >
  783. <img
  784. src="../../assets/icon/newIcon/allScreen.png"
  785. alt
  786. />
  787. </div>
  788. <div class="downIcon" @click="downloadFile2(vitem)">
  789. <img
  790. src="../../assets/icon/newIcon/down.png"
  791. alt
  792. />
  793. </div>
  794. </div>
  795. <div class="navListItem" v-if="vitem.type == 13">
  796. <div
  797. class="navText"
  798. @click="checkPhoto(vitem, vindex)"
  799. :class="isClickNav == vindex ? 'isClickNav' : ''"
  800. >
  801. {{ vitem.name }}
  802. </div>
  803. <div class="downIcon" @click="downloadFile2(vitem)">
  804. <img
  805. src="../../assets/icon/newIcon/down.png"
  806. alt
  807. />
  808. </div>
  809. </div>
  810. </div>
  811. <div class="fileC_box" v-if="fileC[0].length > 0">
  812. <div class="fileC_title">以下文件不支持预览</div>
  813. <div
  814. class="vedioTimeBox"
  815. v-for="(vitem, vindex) in fileC[0]"
  816. :key="vindex + '1'"
  817. >
  818. <div class="navListItem" v-if="vitem.type == 12">
  819. <div class="navText" style="color: #acb4bf">
  820. <span v-if="vitem.text">{{ vitem.text }}-</span
  821. >{{ vitem.name }}
  822. </div>
  823. <div
  824. class="downIcon"
  825. @click="downloadFile2(vitem)"
  826. >
  827. <img
  828. src="../../assets/icon/newIcon/down.png"
  829. alt
  830. />
  831. </div>
  832. </div>
  833. </div>
  834. </div>
  835. </div>
  836. </div>
  837. </div>
  838. </div>
  839. </div>
  840. <div style="width: calc(100% - 315px)">
  841. <div style="padding: 10px 0 0; width: 95%; margin: 0 auto">
  842. <!-- <el-button
  843. type="primary"
  844. class="newButton"
  845. @click="checkFileFull(showType, pptImgUrl1)"
  846. >全屏查看</el-button
  847. >
  848. <el-button
  849. type="primary"
  850. class="newButton"
  851. @click="downloadFile(pptImgUrl1)"
  852. v-if="showType != 2"
  853. >文件下载</el-button
  854. > -->
  855. <el-button
  856. v-if="
  857. showType == 2 &&
  858. pptImgUrl1.indexOf(
  859. 'https://view.officeapps.live.com/op/view.aspx?src='
  860. ) == -1
  861. "
  862. type="primary"
  863. class="newButton"
  864. @click="openLine(pptImgUrl1)"
  865. >打开链接
  866. </el-button>
  867. </div>
  868. <!-- <div
  869. style="padding: 10px 0 0; width: 95%; margin: 0 auto"
  870. v-if="showType == 1"
  871. >
  872. <el-button
  873. type="primary"
  874. class="newButton"
  875. @click="checkFileFull(showType, text)"
  876. >全屏查看</el-button
  877. >
  878. </div> -->
  879. </div>
  880. </div>
  881. </div>
  882. <div class="student_body" v-resize="resize">
  883. <div
  884. class="vedioBox"
  885. :style="{
  886. borderRadius:
  887. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  888. .taskDetail == '' &&
  889. vChapterData[taskCount].length == 0 &&
  890. fileC[taskCount].length == 0
  891. ? '0 0 20px 20px'
  892. : '20px',
  893. }"
  894. v-if="
  895. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  896. .toolChoose[0].tool &&
  897. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  898. .toolChoose[0].tool.length > 0
  899. "
  900. >
  901. <div
  902. class="toolHeng2"
  903. style="position: relative"
  904. v-if="
  905. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  906. .toolChoose[0].tool &&
  907. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  908. .toolChoose[0].tool.length &&
  909. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  910. .toolChoose[0].tool.length > 0
  911. "
  912. >
  913. <div class="workNav">工作区</div>
  914. <div
  915. class="filebox"
  916. style="flex-wrap: nowrap"
  917. v-for="(tool, toolIndex) in chapInfoList[courseType]
  918. .chapterInfo[0].taskJson[taskCount].toolChoose"
  919. :key="toolIndex"
  920. >
  921. <div class="bzBox">
  922. <div class="yCss"></div>
  923. <div :ref="'bz' + toolIndex" :id="'gj' + toolIndex">
  924. 工具{{ toolIndex + 1 }}
  925. </div>
  926. <div
  927. v-if="timeWorkList[toolIndex].length > 0"
  928. style="margin: 0 0 0 10px"
  929. >
  930. {{
  931. timeWorkList[toolIndex][0].time
  932. ? "时间:" + timeWorkList[toolIndex][0].time
  933. : ""
  934. }}
  935. </div>
  936. </div>
  937. <div class="toolBox">
  938. <div>
  939. <!-- v-for="(itemTool, indexTool) in toolTypeList"
  940. :key="indexTool"-->
  941. <!-- <div class="iframeBox">
  942. <div
  943. class="addPoint isBorder"
  944. v-for="(tooC, toolCIndex) in tool.tool"
  945. :key="toolCIndex"
  946. >
  947. <div v-if="tooC == 1" style="border: 1px soild #ccc">
  948. <div
  949. class="iframeName"
  950. >
  951. 电子白板
  952. </div>
  953. <iframe
  954. src="https://iwb.cocorobo.cn/"
  955. ref="whiteBoard"
  956. ></iframe>
  957. </div>
  958. </div>
  959. </div>-->
  960. <div class="noiframeBox">
  961. <div
  962. class="addPoint"
  963. v-for="(tooC, toolCIndex) in tool.tool"
  964. :key="toolCIndex"
  965. >
  966. <div v-if="tooC == 1">
  967. <img
  968. src="../../assets/icon/secondToolList/whiteBoard.png"
  969. alt
  970. @click="addTools(tooC, toolIndex, taskCount)"
  971. />
  972. <div style="margin: 5px 0">电子白板</div>
  973. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
  974. style="position: absolute;right: 33px;top: -30px;">
  975. 投影
  976. </div>
  977. </div>
  978. <div v-if="tooC == 3">
  979. <img
  980. src="../../assets/icon/secondToolList/mindMapping.png"
  981. alt
  982. @click="addTools(tooC, toolIndex, taskCount)"
  983. />
  984. <div style="margin: 5px 0">思维导图</div>
  985. </div>
  986. <div v-if="tooC == 6">
  987. <img
  988. src="../../assets/icon/secondToolList/doc.png"
  989. alt
  990. @click="addTools(tooC, toolIndex, taskCount)"
  991. />
  992. <div style="margin: 5px 0">协同文档</div>
  993. </div>
  994. <div v-if="tooC == 7">
  995. <img
  996. src="../../assets/icon/secondToolList/mindNetwork.png"
  997. alt
  998. @click="addTools(tooC, toolIndex, taskCount)"
  999. />
  1000. <div style="margin: 5px 0">思维网格</div>
  1001. <!-- && worksStudent[toolIndex].length>0 -->
  1002. <div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
  1003. style="position: absolute;right: 33px;top: -30px;">
  1004. 投影
  1005. </div>
  1006. </div>
  1007. <div v-if="tooC == 8">
  1008. <img
  1009. src="../../assets/icon/secondToolList/library.png"
  1010. alt
  1011. @click="addTools(tooC, toolIndex, taskCount)"
  1012. />
  1013. <div style="margin: 5px 0">素材库</div>
  1014. </div>
  1015. <div v-if="tooC == 17">
  1016. <img
  1017. src="../../assets/icon/secondToolList/library.png"
  1018. alt
  1019. @click="addTools(tooC, toolIndex, taskCount)"
  1020. />
  1021. <div style="margin: 5px 0">学习资料</div>
  1022. </div>
  1023. <div v-if="tooC == 2">
  1024. <img
  1025. @click="addTools(tooC, toolIndex, taskCount)"
  1026. src="../../assets/icon/secondToolList/note.png"
  1027. alt
  1028. />
  1029. <div style="margin: 5px 0">便签</div>
  1030. </div>
  1031. <div v-if="tooC == 4">
  1032. <img
  1033. @click="addTools(tooC, toolIndex, taskCount)"
  1034. src="../../assets/icon/thirdToolList/ask.png"
  1035. alt
  1036. />
  1037. <div style="margin: 5px 0">问卷调查</div>
  1038. <div class="upload_toolBtn" v-if="tType==='1'" @click="openStatisticalAnalysis(tooC,toolIndex,taskCount)"
  1039. style="position: absolute;right: 33px;top: -30px;">
  1040. 统计分析
  1041. </div>
  1042. </div>
  1043. <div v-if="tooC == 45">
  1044. <img
  1045. @click="addTools(tooC, toolIndex, taskCount)"
  1046. src="../../assets/icon/thirdToolList/choose.png"
  1047. alt
  1048. />
  1049. <div style="margin: 5px 0">选择题</div>
  1050. <div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,45)"
  1051. style="position: absolute;right: 33px;top: -30px;">
  1052. 投影
  1053. </div>
  1054. </div>
  1055. <!-- <div v-if="tooC == 5">
  1056. <img
  1057. @click="addTools(tooC, toolIndex, taskCount)"
  1058. src="../../assets/icon/thirdToolList/score.png"
  1059. alt
  1060. />
  1061. <div style="margin: 5px 0">量规评分</div>
  1062. </div> -->
  1063. <div v-if="tooC == 10">
  1064. <img
  1065. @click="addTools(tooC, toolIndex, taskCount)"
  1066. src="../../assets/icon/thirdToolList/time.png"
  1067. alt
  1068. />
  1069. <div style="margin: 5px 0">倒计时</div>
  1070. </div>
  1071. <div v-if="tooC == 15">
  1072. <img
  1073. @click="addTools(tooC, toolIndex, taskCount)"
  1074. src="../../assets/icon/thirdToolList/answer.png"
  1075. alt
  1076. />
  1077. <div style="margin: 5px 0">问答</div>
  1078. <div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
  1079. style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
  1080. 投影
  1081. </div>
  1082. </div>
  1083. <div v-if="tooC == 26">
  1084. <img
  1085. @click="addTools(tooC, toolIndex, taskCount)"
  1086. src="../../assets/icon/thirdToolList/courseDesign.png"
  1087. alt
  1088. />
  1089. <div style="margin: 5px 0">课程设计</div>
  1090. </div>
  1091. <div v-if="tooC == 18">
  1092. <img
  1093. @click="addTools(tooC, toolIndex, taskCount)"
  1094. src="../../assets/icon/thirdToolList/trainPlatform.png"
  1095. alt
  1096. />
  1097. <div style="margin: 5px 0">训练服务器</div>
  1098. </div>
  1099. <div v-if="tooC == 16">
  1100. <img
  1101. @click="addTools(tooC, toolIndex, taskCount)"
  1102. src="../../assets/icon/thirdToolList/work.png"
  1103. alt
  1104. />
  1105. <div style="margin: 5px 0">作业提交</div>
  1106. </div>
  1107. <div v-if="tooC == 50">
  1108. <img
  1109. @click="addTools(tooC, toolIndex, taskCount)"
  1110. src="../../assets/icon/thirdToolList/plwork.png"
  1111. alt
  1112. />
  1113. <div style="margin: 5px 0">批量上传</div>
  1114. </div>
  1115. <div v-if="tooC == 21">
  1116. <img
  1117. @click="addTools(tooC, toolIndex, taskCount)"
  1118. src="../../assets/icon/fourthToolList/program.png"
  1119. alt
  1120. />
  1121. <div style="margin: 5px 0">AIoT Blockly</div>
  1122. </div>
  1123. <!-- <div v-if="tooC == 22">
  1124. <img
  1125. @click="addTools(tooC, toolIndex, taskCount)"
  1126. src="../../assets/icon/fourthToolList/program.png"
  1127. alt
  1128. />
  1129. <div style="margin: 5px 0">AI体验</div>
  1130. </div> -->
  1131. <div v-if="tooC == 23">
  1132. <img
  1133. @click="addTools(tooC, toolIndex, taskCount)"
  1134. src="../../assets/icon/fourthToolList/Pythonprogram.png"
  1135. alt
  1136. />
  1137. <div style="margin: 5px 0">AI Python</div>
  1138. </div>
  1139. <div v-if="tooC == 24">
  1140. <img
  1141. @click="addTools(tooC, toolIndex, taskCount)"
  1142. src="../../assets/icon/fourthToolList/AIprogram.png"
  1143. alt
  1144. />
  1145. <div style="margin: 5px 0">AI Blockly</div>
  1146. </div>
  1147. <div v-if="tooC == 25">
  1148. <img
  1149. @click="addTools(tooC, toolIndex, taskCount)"
  1150. src="../../assets/icon/thirdToolList/evalua.png"
  1151. alt
  1152. />
  1153. <div style="margin: 5px 0">目标管理</div>
  1154. </div>
  1155. <div v-if="tooC == 31">
  1156. <img
  1157. @click="addTools(tooC, toolIndex, taskCount)"
  1158. src="../../assets/icon/secondToolList/networkPanel.png"
  1159. alt
  1160. />
  1161. <div style="margin: 5px 0">数学画板</div>
  1162. </div>
  1163. <div v-if="tooC == 28">
  1164. <img
  1165. @click="addTools(tooC, toolIndex, taskCount)"
  1166. src="../../assets/icon/secondToolList/translation.png"
  1167. alt
  1168. />
  1169. <div style="margin: 5px 0">翻译</div>
  1170. </div>
  1171. <div v-if="tooC == 37">
  1172. <img
  1173. @click="addTools(tooC, toolIndex, taskCount)"
  1174. src="../../assets/icon/secondToolList/mohe.png"
  1175. alt
  1176. />
  1177. <div style="margin: 5px 0">魔盒识字</div>
  1178. </div>
  1179. <div v-if="tooC == 38">
  1180. <img
  1181. @click="addTools(tooC, toolIndex, taskCount)"
  1182. src="../../assets/icon/secondToolList/24game.png"
  1183. alt
  1184. />
  1185. <div style="margin: 5px 0">24点</div>
  1186. </div>
  1187. <div v-if="tooC == 39">
  1188. <img
  1189. @click="addTools(tooC, toolIndex, taskCount)"
  1190. src="../../assets/icon/secondToolList/GeoGebra.png"
  1191. alt
  1192. />
  1193. <div style="margin: 5px 0">GeoGebra</div>
  1194. </div>
  1195. <div v-if="tooC == 32">
  1196. <img
  1197. @click="addTools(tooC, toolIndex, taskCount)"
  1198. src="../../assets/icon/thirdToolList/code.png"
  1199. alt
  1200. />
  1201. <div style="margin: 5px 0">源码编辑</div>
  1202. <!-- <div class="upload_toolBtn" @click="addImg($event)"
  1203. style="position: absolute;left: 110px;bottom: 30px;">
  1204. 上传文件
  1205. <input type="file" accept="*" style="display: none"
  1206. @change="beforeUpload1($event, 7, toolIndex)" />
  1207. </div> -->
  1208. </div>
  1209. <div v-if="tooC == 40">
  1210. <img
  1211. @click="addTools(tooC, toolIndex, taskCount)"
  1212. src="../../assets/icon/secondToolList/eval.png"
  1213. alt
  1214. />
  1215. <div style="margin: 5px 0">个人评价</div>
  1216. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
  1217. style="position: absolute;right: 33px;top: -30px;">
  1218. 投影
  1219. </div>
  1220. </div>
  1221. <div v-if="tooC == 41">
  1222. <img
  1223. @click="addTools(tooC, toolIndex, taskCount)"
  1224. src="../../assets/icon/thirdToolList/select.png"
  1225. alt
  1226. />
  1227. <div style="margin: 5px 0">选择匹配</div>
  1228. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
  1229. style="position: absolute;right: 33px;top: -30px;">
  1230. 投影
  1231. </div>
  1232. </div>
  1233. <div v-if="tooC == 44">
  1234. <img
  1235. @click="addTools(tooC, toolIndex, taskCount)"
  1236. src="../../assets/icon/thirdToolList/hanClass.png"
  1237. alt
  1238. />
  1239. <div style="margin: 5px 0">汉字宫</div>
  1240. </div>
  1241. <div v-if="tooC == 47">
  1242. <img
  1243. @click="addTools(tooC, toolIndex, taskCount)"
  1244. src="../../assets/icon/fourthToolList/conSentences.png"
  1245. alt
  1246. />
  1247. <div style="margin: 5px 0">排序</div>
  1248. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
  1249. style="position: absolute;right: 33px;top: -30px;">
  1250. 投影
  1251. </div>
  1252. </div>
  1253. <div v-if="tooC == 48">
  1254. <img
  1255. @click="addTools(tooC, toolIndex, taskCount)"
  1256. src="../../assets/icon/fourthToolList/table.png"
  1257. alt
  1258. />
  1259. <div style="margin: 5px 0">表格</div>
  1260. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
  1261. style="position: absolute;right: 33px;top: -30px;">
  1262. 投影
  1263. </div>
  1264. </div>
  1265. <div v-if="tooC == 52">
  1266. <img
  1267. @click="addTools(tooC, toolIndex, taskCount)"
  1268. src="../../assets/icon/fourthToolList/text.png"
  1269. alt
  1270. />
  1271. <div style="margin: 5px 0">文档</div>
  1272. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
  1273. style="position: absolute;right: 33px;top: -30px;">
  1274. 投影
  1275. </div>
  1276. </div>
  1277. <div v-if="tooC == 49">
  1278. <img
  1279. @click="addTools(tooC, toolIndex, taskCount)"
  1280. src="../../assets/icon/fourthToolList/group.png"
  1281. alt
  1282. />
  1283. <div style="margin: 5px 0">学生分组</div>
  1284. <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
  1285. style="position: absolute;right: 33px;top: -30px;">
  1286. 投影
  1287. </div>
  1288. </div>
  1289. <div v-if="tooC == 57">
  1290. <img
  1291. @click="addTools(tooC, toolIndex, taskCount)"
  1292. src="../../assets/icon/fourthToolList/cocopi.png"
  1293. alt
  1294. />
  1295. <div style="margin: 5px 0">CocoPi</div>
  1296. </div>
  1297. <div v-if="tooC == 58">
  1298. <img
  1299. @click="addTools(tooC, toolIndex, taskCount)"
  1300. src="../../assets/icon/fourthToolList/car.png"
  1301. alt
  1302. />
  1303. <div style="margin: 5px 0">模拟驾驶</div>
  1304. </div>
  1305. <div v-if="tooC == 59">
  1306. <img
  1307. @click="addTools(tooC, toolIndex, taskCount)"
  1308. src="../../assets/icon/fourthToolList/lineSearch.png"
  1309. alt
  1310. />
  1311. <div style="margin: 5px 0">路径搜索</div>
  1312. </div>
  1313. <div v-if="tooC == 60">
  1314. <img
  1315. @click="addTools(tooC, toolIndex, taskCount)"
  1316. src="../../assets/icon/fourthToolList/deepLearning.png"
  1317. alt
  1318. />
  1319. <div style="margin: 5px 0">深度学习</div>
  1320. </div>
  1321. <div v-if="tooC == 61">
  1322. <img
  1323. @click="addTools(tooC, toolIndex, taskCount)"
  1324. src="../../assets/icon/fourthToolList/allHistory.png"
  1325. alt
  1326. />
  1327. <div style="margin: 5px 0">全历史</div>
  1328. </div>
  1329. <div v-if="tooC == 62">
  1330. <img
  1331. @click="addTools(tooC, toolIndex, taskCount)"
  1332. src="../../assets/icon/fourthToolList/interVideo.png"
  1333. alt
  1334. />
  1335. <div style="margin: 5px 0">交互视频</div>
  1336. </div>
  1337. <div v-if="tooC == 63">
  1338. <img
  1339. @click="addTools(tooC, toolIndex, taskCount)"
  1340. src="../../assets/icon/fourthToolList/Wood.png"
  1341. alt
  1342. />
  1343. <div style="margin: 5px 0">海龟编程</div>
  1344. </div>
  1345. <div v-if="tooC == 71">
  1346. <img
  1347. @click="addTools(tooC, toolIndex, taskCount)"
  1348. src="../../assets/icon/fourthToolList/chatgpt.png"
  1349. alt
  1350. />
  1351. <div style="margin: 5px 0">AI智能体</div>
  1352. </div>
  1353. <div v-if="tooC == 65">
  1354. <img
  1355. @click="addTools(tooC, toolIndex, taskCount)"
  1356. src="../../assets/icon/firstToolList/pickPeople.png"
  1357. alt
  1358. />
  1359. <div style="margin: 5px 0">挑人</div>
  1360. </div>
  1361. <div v-if="tooC == 66">
  1362. <img
  1363. @click="addTools(tooC, toolIndex, taskCount)"
  1364. src="../../assets/icon/secondToolList/formulaEdi.png"
  1365. alt
  1366. />
  1367. <div style="margin: 5px 0">公式编辑</div>
  1368. </div>
  1369. <div v-if="tooC == 67">
  1370. <img
  1371. @click="addTools(tooC, toolIndex, taskCount)"
  1372. src="../../assets/icon/secondToolList/molStr.png"
  1373. alt
  1374. />
  1375. <div style="margin: 5px 0">分子结构</div>
  1376. </div>
  1377. <div v-if="tooC == 68">
  1378. <img
  1379. @click="addTools(tooC, toolIndex, taskCount)"
  1380. src="../../assets/icon/secondToolList/timeAxis.png"
  1381. alt
  1382. />
  1383. <div style="margin: 5px 0">时间轴</div>
  1384. </div>
  1385. <div v-if="tooC == 69">
  1386. <img
  1387. @click="addTools(tooC, toolIndex, taskCount)"
  1388. src="../../assets/icon/secondToolList/english.png"
  1389. alt
  1390. />
  1391. <div style="margin: 5px 0">英语写作</div>
  1392. </div>
  1393. <div v-if="tooC == 70">
  1394. <img
  1395. @click="addTools(tooC, toolIndex, taskCount)"
  1396. src="../../assets/icon/thirdToolList/englishVoice.png"
  1397. alt
  1398. />
  1399. <div style="margin: 5px 0">英语口语</div>
  1400. </div>
  1401. </div>
  1402. </div>
  1403. </div>
  1404. <div class="tooldetail" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
  1405. <!-- <div class="toolTitle">工具描述</div> -->
  1406. <!-- @click.stop="updateToolDetail(toolIndex, 2)" 点击开启修改-->
  1407. <div style="height:100%;"
  1408. v-html="contentConvent(tool.toolDetail)"
  1409. v-if="toolDetailIndex != toolIndex"
  1410. ></div>
  1411. <div v-else @click.stop="" style="height:100%;">
  1412. <textarea @change="() => { $forceUpdate() }" class="checkTextArea" rows="3" v-autoHeight="70" type="text" placeholder="请输入任务描述" v-model="updateToolDetailInner"></textarea>
  1413. </div>
  1414. </div>
  1415. <el-button
  1416. type="primary"
  1417. v-if="tool.tool[0] == 32"
  1418. style="position: absolute; right: 30px; top: -45px"
  1419. @click="addImg($event)"
  1420. >上传作业<input
  1421. type="file"
  1422. accept="*"
  1423. style="display: none"
  1424. @change="beforeUpload1($event, 7, toolIndex)"
  1425. /></el-button>
  1426. <el-button
  1427. type="primary"
  1428. v-if="tool.tool[0] == 15"
  1429. style="position: absolute; right: 30px; top: -45px"
  1430. @click="openWordCloud(toolIndex)"
  1431. >生成词云</el-button
  1432. >
  1433. <el-button
  1434. type="primary"
  1435. v-if="
  1436. tool.tool[0] == 16 && worksStudent[toolIndex].length > 0
  1437. "
  1438. style="position: absolute; right: 30px; top: -45px"
  1439. @click="uploadWorks(toolIndex)"
  1440. >导出作业</el-button
  1441. >
  1442. <!-- <el-button type="primary" v-if="tool.tool[0] == 57" style="
  1443. position: absolute;
  1444. right: 30px;
  1445. transform: translateY(-130%);
  1446. " @click="addImg($event)">上传作业<input type="file" accept="*" style="display: none"
  1447. @change="beforeUpload1($event, 8, toolIndex)" /></el-button> -->
  1448. </div>
  1449. <div
  1450. v-if="
  1451. tType &&
  1452. tType == 2 &&
  1453. !sIsOpen &&
  1454. tool.tool.indexOf(16) != -1
  1455. "
  1456. class="worksBox"
  1457. >
  1458. <div
  1459. class="zuoyeYulan"
  1460. v-if="workStudent[toolIndex].length > 0"
  1461. >
  1462. <span class="worksTitle">作业预览</span>
  1463. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  1464. </div>
  1465. <div
  1466. class="worksDetailBox"
  1467. v-if="workStudent[toolIndex].length > 0"
  1468. >
  1469. <div
  1470. class="works"
  1471. style="
  1472. width: 200px;
  1473. height: 140px;
  1474. margin: 10px 10px 10px 0;
  1475. box-shadow: 0 0 6px 1px #dfdada;
  1476. "
  1477. v-for="(w, wIndex) in workStudent[toolIndex]"
  1478. :key="wIndex"
  1479. >
  1480. <div class="workImg" v-if="w.type == 0">
  1481. <img
  1482. :src="w.works"
  1483. @click="previewImg(w.works,w)"
  1484. alt
  1485. />
  1486. <div
  1487. class="answerScore"
  1488. v-if="w.score"
  1489. @click.stop="openScore(w)"
  1490. :class="{
  1491. rightW:
  1492. w.userid == userid || tType == 1 || tType == 4,
  1493. }"
  1494. >
  1495. {{ JSON.parse(w.score).wScore }}分
  1496. </div>
  1497. <div
  1498. class="answerScore"
  1499. @click.stop="openScore(w)"
  1500. v-else-if="courseDetail.userid == userid"
  1501. :class="{
  1502. rightW:
  1503. w.userid == userid || tType == 1 || tType == 4,
  1504. }"
  1505. >
  1506. 评分
  1507. </div>
  1508. <img
  1509. class="deleteImg"
  1510. src="../../assets/deleteworks.png"
  1511. v-if="
  1512. w.userid == userid || tType == 1 || tType == 4
  1513. "
  1514. @click.stop="deleteWorks(w.wid)"
  1515. alt
  1516. />
  1517. </div>
  1518. <div class="workImg" v-if="w.type == 1">
  1519. <img :src="word" @click="openFile(w.works)" alt />
  1520. <div
  1521. class="answerScore"
  1522. v-if="w.score"
  1523. @click.stop="openScore(w)"
  1524. :class="{
  1525. rightW:
  1526. w.userid == userid || tType == 1 || tType == 4,
  1527. }"
  1528. >
  1529. {{ JSON.parse(w.score).wScore }}分
  1530. </div>
  1531. <div
  1532. class="answerScore"
  1533. @click.stop="openScore(w)"
  1534. v-else-if="courseDetail.userid == userid"
  1535. :class="{
  1536. rightW:
  1537. w.userid == userid || tType == 1 || tType == 4,
  1538. }"
  1539. >
  1540. 评分
  1541. </div>
  1542. <img
  1543. class="deleteImg"
  1544. src="../../assets/deleteworks.png"
  1545. v-if="
  1546. w.userid == userid || tType == 1 || tType == 4
  1547. "
  1548. @click.stop="deleteWorks(w.wid)"
  1549. alt
  1550. />
  1551. </div>
  1552. <div class="workImg" v-if="w.type == 3">
  1553. <img
  1554. style="cursor: pointer"
  1555. :src="video"
  1556. @click="openVideo(w)"
  1557. alt
  1558. />
  1559. <div
  1560. class="answerScore"
  1561. v-if="w.score"
  1562. @click.stop="openScore(w)"
  1563. :class="{
  1564. rightW:
  1565. w.userid == userid || tType == 1 || tType == 4,
  1566. }"
  1567. >
  1568. {{ JSON.parse(w.score).wScore }}分
  1569. </div>
  1570. <div
  1571. class="answerScore"
  1572. @click.stop="openScore(w)"
  1573. v-else-if="courseDetail.userid == userid"
  1574. :class="{
  1575. rightW:
  1576. w.userid == userid || tType == 1 || tType == 4,
  1577. }"
  1578. >
  1579. 评分
  1580. </div>
  1581. <img
  1582. class="deleteImg"
  1583. src="../../assets/deleteworks.png"
  1584. v-if="
  1585. w.userid == userid || tType == 1 || tType == 4
  1586. "
  1587. @click.stop="deleteWorks(w.wid)"
  1588. alt
  1589. />
  1590. </div>
  1591. <div class="workImg" v-if="w.type == 12">
  1592. <img
  1593. style="cursor: pointer"
  1594. :src="word2"
  1595. @click="downloadFile(w.works)"
  1596. alt
  1597. />
  1598. <div
  1599. class="answerScore"
  1600. v-if="w.score"
  1601. @click.stop="openScore(w)"
  1602. :class="{
  1603. rightW:
  1604. w.userid == userid || tType == 1 || tType == 4,
  1605. }"
  1606. >
  1607. {{ JSON.parse(w.score).wScore }}分
  1608. </div>
  1609. <div
  1610. class="answerScore"
  1611. @click.stop="openScore(w)"
  1612. v-else-if="courseDetail.userid == userid"
  1613. :class="{
  1614. rightW:
  1615. w.userid == userid || tType == 1 || tType == 4,
  1616. }"
  1617. >
  1618. 评分
  1619. </div>
  1620. <img
  1621. class="deleteImg"
  1622. src="../../assets/deleteworks.png"
  1623. v-if="
  1624. w.userid == userid || tType == 1 || tType == 4
  1625. "
  1626. @click.stop="deleteWorks(w.wid)"
  1627. alt
  1628. />
  1629. </div>
  1630. <div class="worksName">
  1631. <div>{{ w.sName }}</div>
  1632. </div>
  1633. </div>
  1634. </div>
  1635. </div>
  1636. <div
  1637. v-if="
  1638. tType &&
  1639. tType == 2 &&
  1640. !sIsOpen &&
  1641. tool.tool.indexOf(32) != -1
  1642. "
  1643. class="worksBox"
  1644. >
  1645. <div
  1646. class="zuoyeYulan"
  1647. v-if="workStudent[toolIndex].length > 0"
  1648. >
  1649. <span class="worksTitle">作业预览</span>
  1650. </div>
  1651. <div
  1652. class="worksDetailBox"
  1653. v-if="workStudent[toolIndex].length > 0"
  1654. >
  1655. <div
  1656. class="works"
  1657. style="
  1658. width: 200px;
  1659. height: 140px;
  1660. margin: 10px 10px 10px 0;
  1661. box-shadow: 0 0 6px 1px #dfdada;
  1662. "
  1663. v-for="(w, wIndex) in workStudent[toolIndex]"
  1664. :key="wIndex"
  1665. >
  1666. <div class="workImg">
  1667. <img
  1668. :src="word2"
  1669. @click="downloadFile(w.works)"
  1670. alt
  1671. />
  1672. <div
  1673. class="answerScore"
  1674. v-if="w.score"
  1675. @click.stop="openScore(w)"
  1676. :class="{
  1677. rightW:
  1678. w.userid == userid || tType == 1 || tType == 4,
  1679. }"
  1680. >
  1681. {{ JSON.parse(w.score).wScore }}分
  1682. </div>
  1683. <div
  1684. class="answerScore"
  1685. @click.stop="openScore(w)"
  1686. v-else-if="courseDetail.userid == userid"
  1687. :class="{
  1688. rightW:
  1689. w.userid == userid || tType == 1 || tType == 4,
  1690. }"
  1691. >
  1692. 评分
  1693. </div>
  1694. <img
  1695. class="deleteImg"
  1696. src="../../assets/deleteworks.png"
  1697. v-if="
  1698. w.userid == userid || tType == 1 || tType == 4
  1699. "
  1700. @click.stop="deleteWorks(w.wid)"
  1701. alt
  1702. />
  1703. </div>
  1704. <div class="worksName">
  1705. <div>{{ w.sName }}</div>
  1706. </div>
  1707. </div>
  1708. </div>
  1709. </div>
  1710. <div
  1711. v-if="
  1712. tType &&
  1713. tType == 2 &&
  1714. !sIsOpen &&
  1715. tool.tool.indexOf(57) != -1
  1716. "
  1717. class="worksBox"
  1718. >
  1719. <div
  1720. class="zuoyeYulan"
  1721. v-if="workStudent[toolIndex].length > 0"
  1722. >
  1723. <span class="worksTitle">作业预览</span>
  1724. </div>
  1725. <div
  1726. class="worksDetailBox"
  1727. v-if="workStudent[toolIndex].length > 0"
  1728. >
  1729. <div
  1730. class="works"
  1731. style="
  1732. width: 200px;
  1733. height: 140px;
  1734. margin: 10px 10px 10px 0;
  1735. box-shadow: 0 0 6px 1px #dfdada;
  1736. "
  1737. v-for="(w, wIndex) in workStudent[toolIndex]"
  1738. :key="wIndex"
  1739. >
  1740. <div class="workImg">
  1741. <img
  1742. :src="word2"
  1743. @click="downloadFile(w.works)"
  1744. v-if="w.type == 12"
  1745. alt
  1746. />
  1747. <img
  1748. :src="word2"
  1749. @click="
  1750. openCocoPi(57, toolIndex, w.userid, w.sName)
  1751. "
  1752. v-else-if="w.type == 15"
  1753. alt
  1754. />
  1755. <div
  1756. class="answerScore"
  1757. v-if="w.score"
  1758. @click.stop="openScore(w)"
  1759. :class="{
  1760. rightW:
  1761. w.userid == userid || tType == 1 || tType == 4,
  1762. }"
  1763. >
  1764. {{ JSON.parse(w.score).wScore }}分
  1765. </div>
  1766. <div
  1767. class="answerScore"
  1768. @click.stop="openScore(w)"
  1769. v-else-if="courseDetail.userid == userid"
  1770. :class="{
  1771. rightW:
  1772. w.userid == userid || tType == 1 || tType == 4,
  1773. }"
  1774. >
  1775. 评分
  1776. </div>
  1777. <img
  1778. class="deleteImg"
  1779. src="../../assets/deleteworks.png"
  1780. v-if="
  1781. w.userid == userid || tType == 1 || tType == 4
  1782. "
  1783. @click.stop="deleteWorks(w.wid)"
  1784. alt
  1785. />
  1786. </div>
  1787. <div class="worksName">
  1788. <div>{{ w.sName }}</div>
  1789. </div>
  1790. </div>
  1791. </div>
  1792. </div>
  1793. <div
  1794. v-if="
  1795. tType &&
  1796. tType == 2 &&
  1797. !sIsOpen &&
  1798. tool.tool.indexOf(4) != -1
  1799. "
  1800. class="worksBox"
  1801. >
  1802. <div
  1803. class="zuoyeYulan"
  1804. v-if="workStudent[toolIndex].length > 0"
  1805. >
  1806. <span class="worksTitle">作业预览</span>
  1807. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  1808. </div>
  1809. <div
  1810. class="worksDetailBox"
  1811. v-if="workStudent[toolIndex].length > 0"
  1812. >
  1813. <div
  1814. class="isWorksName2"
  1815. v-for="(w, wIndex) in workStudent[toolIndex]"
  1816. :key="wIndex"
  1817. @click="
  1818. openTools(4, toolIndex, taskCount, w.works, w.sName)
  1819. "
  1820. >
  1821. {{ w.sName }}
  1822. <img
  1823. class="deleteImg deleteImg2"
  1824. src="../../assets/deleteworks.png"
  1825. v-if="w.userid == userid || tType == 1 || tType == 4"
  1826. @click.stop="deleteWorks(w.wid)"
  1827. alt
  1828. />
  1829. </div>
  1830. <!-- <div
  1831. class="works"
  1832. style="
  1833. width: 200px;
  1834. height: 140px;
  1835. border-radius: 10px;
  1836. box-shadow: 0 0 6px 1px #dfdada;
  1837. overflow: hidden;
  1838. "
  1839. v-for="(w, wIndex) in workStudent[toolIndex]"
  1840. :key="wIndex"
  1841. >
  1842. <div class="workImg">
  1843. <img
  1844. src="../../assets/icon/works/noImg.png"
  1845. @click="
  1846. openTools(
  1847. 4,
  1848. toolIndex,
  1849. taskCount,
  1850. w.works,
  1851. w.sName
  1852. )
  1853. "
  1854. alt
  1855. />
  1856. </div>
  1857. <div class="worksName">
  1858. <div>{{ w.sName }}</div>
  1859. <div>{{ w.time }}</div>
  1860. </div>
  1861. </div> -->
  1862. </div>
  1863. </div>
  1864. <div
  1865. v-if="
  1866. tType &&
  1867. ((tType == 2 && sIsOpen == true) ||
  1868. tType == 1 ||
  1869. tType == 4) &&
  1870. tool.tool.indexOf(62) != -1
  1871. "
  1872. class="worksBox"
  1873. >
  1874. <div
  1875. class="zuoyeYulan"
  1876. v-if="
  1877. worksStudent.length &&
  1878. worksStudent[toolIndex].length > 0
  1879. "
  1880. >
  1881. <div class="worksTop">
  1882. <div>作业预览</div>
  1883. <div
  1884. class="corOpen"
  1885. @click="contract(toolIndex)"
  1886. v-if="
  1887. (isCloseList[toolIndex].isCloseBoolean) &&
  1888. isCloseList[toolIndex].isClose == 0
  1889. "
  1890. >
  1891. 折叠
  1892. </div>
  1893. <div
  1894. class="corOpen"
  1895. @click="contract(toolIndex)"
  1896. v-if="isCloseList[toolIndex].isClose == 1"
  1897. >
  1898. 展开
  1899. </div>
  1900. </div>
  1901. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  1902. </div>
  1903. <div>
  1904. <div
  1905. :id="'tool-' + toolIndex"
  1906. :style="{
  1907. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  1908. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  1909. }"
  1910. class="worksDetailBox"
  1911. v-if="
  1912. worksStudent.length &&
  1913. worksStudent[toolIndex].length > 0
  1914. "
  1915. >
  1916. <div
  1917. v-for="(w, wIndex) in worksStudent[toolIndex]"
  1918. :key="wIndex"
  1919. class="isWorksName2"
  1920. @click="
  1921. openTools(
  1922. 62,
  1923. toolIndex,
  1924. taskCount,
  1925. w.works,
  1926. w.sName
  1927. )
  1928. "
  1929. >
  1930. {{ w.sName }}
  1931. <img
  1932. class="deleteImg deleteImg2"
  1933. src="../../assets/deleteworks.png"
  1934. v-if="
  1935. w.userid == userid || tType == 1 || tType == 4
  1936. "
  1937. @click.stop="deleteWorks(w.wid)"
  1938. alt
  1939. />
  1940. </div>
  1941. </div>
  1942. </div>
  1943. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  1944. 未提交
  1945. </div>
  1946. <div
  1947. class="noWorksS"
  1948. v-if="noWorksS && noWorksS[toolIndex].length"
  1949. >
  1950. <div
  1951. v-for="(s, sIndex) in noWorksS[toolIndex]"
  1952. :key="sIndex"
  1953. class="noWorksName"
  1954. >
  1955. <el-tooltip effect="dark" :content="s.student" placement="top">
  1956. <span>{{ s.student }}</span>
  1957. </el-tooltip>
  1958. </div>
  1959. </div>
  1960. </div>
  1961. <div
  1962. v-if="
  1963. tType &&
  1964. tType == 2 &&
  1965. !sIsOpen &&
  1966. tool.tool.indexOf(62) != -1
  1967. "
  1968. class="worksBox"
  1969. >
  1970. <div
  1971. class="zuoyeYulan"
  1972. v-if="workStudent[toolIndex].length > 0"
  1973. >
  1974. <span class="worksTitle">作业预览</span>
  1975. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  1976. </div>
  1977. <div
  1978. class="worksDetailBox"
  1979. v-if="workStudent[toolIndex].length > 0"
  1980. >
  1981. <div
  1982. class="isWorksName2"
  1983. v-for="(w, wIndex) in workStudent[toolIndex]"
  1984. :key="wIndex"
  1985. @click="
  1986. openTools(62, toolIndex, taskCount, w.works, w.sName)
  1987. "
  1988. >
  1989. {{ w.sName }}
  1990. <img
  1991. class="deleteImg deleteImg2"
  1992. src="../../assets/deleteworks.png"
  1993. v-if="w.userid == userid || tType == 1 || tType == 4"
  1994. @click.stop="deleteWorks(w.wid)"
  1995. alt
  1996. />
  1997. </div>
  1998. </div>
  1999. </div>
  2000. <div
  2001. v-if="
  2002. tType &&
  2003. tType == 2 &&
  2004. !sIsOpen &&
  2005. tool.tool.indexOf(45) != -1
  2006. "
  2007. class="worksBox"
  2008. >
  2009. <div
  2010. class="zuoyeYulan"
  2011. v-if="workStudent[toolIndex].length > 0"
  2012. >
  2013. <span class="worksTitle">作业预览</span>
  2014. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2015. </div>
  2016. <div
  2017. class="worksDetailBox"
  2018. v-if="workStudent[toolIndex].length > 0"
  2019. >
  2020. <div
  2021. class="isWorksName2"
  2022. v-for="(w, wIndex) in workStudent[toolIndex]"
  2023. :key="wIndex"
  2024. @click="
  2025. openTools(45, toolIndex, taskCount, w.works, w.sName)
  2026. "
  2027. >
  2028. {{ w.sName }}
  2029. <img
  2030. class="deleteImg deleteImg2"
  2031. src="../../assets/deleteworks.png"
  2032. v-if="w.userid == userid || tType == 1 || tType == 4"
  2033. @click.stop="deleteWorks(w.wid)"
  2034. alt
  2035. />
  2036. </div>
  2037. </div>
  2038. </div>
  2039. <div
  2040. v-if="
  2041. tType &&
  2042. tType == 2 &&
  2043. !sIsOpen &&
  2044. tool.tool.indexOf(69) != -1
  2045. "
  2046. class="worksBox"
  2047. >
  2048. <div
  2049. class="zuoyeYulan"
  2050. v-if="workStudent[toolIndex].length > 0"
  2051. >
  2052. <span class="worksTitle">作业预览</span>
  2053. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2054. </div>
  2055. <div
  2056. class="worksDetailBox"
  2057. v-if="workStudent[toolIndex].length > 0"
  2058. >
  2059. <div
  2060. class="isWorksName2"
  2061. v-for="(w, wIndex) in workStudent[toolIndex]"
  2062. :key="wIndex"
  2063. @click="
  2064. openTools(69, toolIndex, taskCount, w.works, w.sName)
  2065. "
  2066. >
  2067. {{ w.sName }}
  2068. <img
  2069. class="deleteImg deleteImg2"
  2070. src="../../assets/deleteworks.png"
  2071. v-if="w.userid == userid || tType == 1 || tType == 4"
  2072. @click.stop="deleteWorks(w.wid)"
  2073. alt
  2074. />
  2075. </div>
  2076. </div>
  2077. </div>
  2078. <div
  2079. v-if="
  2080. tType &&
  2081. tType == 2 &&
  2082. !sIsOpen &&
  2083. tool.tool.indexOf(15) != -1
  2084. "
  2085. class="worksBox"
  2086. >
  2087. <div
  2088. class="zuoyeYulan"
  2089. v-if="workStudent[toolIndex].length > 0"
  2090. >
  2091. <span class="worksTitle">作业预览</span>
  2092. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2093. </div>
  2094. <div
  2095. class="worksDetailBox"
  2096. v-if="workStudent[toolIndex].length > 0"
  2097. >
  2098. <div
  2099. class="works"
  2100. v-for="(w, wIndex) in workStudent[toolIndex]"
  2101. :key="wIndex"
  2102. >
  2103. <div class="workImg">
  2104. <!-- <img
  2105. src="../../assets/icon/works/noImg.png"
  2106. @click="openTools(15, toolIndex, taskCount, w.works)"
  2107. alt=""
  2108. />-->
  2109. <div class="answerBg">
  2110. <!-- <div>{{ w.sName }}</div> -->
  2111. <el-tooltip
  2112. class="item"
  2113. effect="light"
  2114. :content="JSON.parse(w.works)[0].answer"
  2115. placement="top"
  2116. >
  2117. <div class="answerContent">
  2118. {{ JSON.parse(w.works)[0].answer }}
  2119. </div>
  2120. </el-tooltip>
  2121. <div
  2122. class="answerScore"
  2123. v-if="w.score"
  2124. @click.stop="openScore(w)"
  2125. :class="{
  2126. rightW:
  2127. w.userid == userid ||
  2128. tType == 1 ||
  2129. tType == 4,
  2130. }"
  2131. >
  2132. {{ JSON.parse(w.score).wScore }}分
  2133. </div>
  2134. <div
  2135. class="answerScore"
  2136. @click.stop="openScore(w)"
  2137. v-else-if="courseDetail.userid == userid"
  2138. :class="{
  2139. rightW:
  2140. w.userid == userid ||
  2141. tType == 1 ||
  2142. tType == 4,
  2143. }"
  2144. >
  2145. 评分
  2146. </div>
  2147. <img
  2148. class="deleteImg"
  2149. src="../../assets/deleteworks.png"
  2150. v-if="
  2151. w.userid == userid || tType == 1 || tType == 4
  2152. "
  2153. @click.stop="deleteWorks(w.wid)"
  2154. alt
  2155. />
  2156. </div>
  2157. <div class="comment">
  2158. <div class="worksName">
  2159. <div>{{ w.sName }}</div>
  2160. </div>
  2161. </div>
  2162. </div>
  2163. </div>
  2164. </div>
  2165. </div>
  2166. <div
  2167. v-if="
  2168. tType &&
  2169. tType == 2 &&
  2170. !sIsOpen &&
  2171. tool.tool.indexOf(1) != -1
  2172. "
  2173. class="worksBox"
  2174. >
  2175. <div
  2176. class="zuoyeYulan"
  2177. v-if="workStudent[toolIndex].length > 0"
  2178. >
  2179. <span class="worksTitle">作业预览</span>
  2180. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2181. </div>
  2182. <div
  2183. class="worksDetailBox"
  2184. v-if="workStudent[toolIndex].length > 0"
  2185. >
  2186. <div
  2187. class="works"
  2188. style="
  2189. width: 200px;
  2190. height: 140px;
  2191. margin: 10px 10px 10px 0;
  2192. box-shadow: 0 0 6px 1px #dfdada;
  2193. "
  2194. v-for="(w, wIndex) in workStudent[toolIndex]"
  2195. :key="wIndex"
  2196. >
  2197. <div class="workImg">
  2198. <img
  2199. :src="w.works"
  2200. @click="previewImg(w.works,w)"
  2201. alt
  2202. />
  2203. <div
  2204. class="answerScore"
  2205. v-if="w.score"
  2206. @click.stop="openScore(w)"
  2207. :class="{
  2208. rightW:
  2209. w.userid == userid || tType == 1 || tType == 4,
  2210. }"
  2211. >
  2212. {{ JSON.parse(w.score).wScore }}分
  2213. </div>
  2214. <div
  2215. class="answerScore"
  2216. @click.stop="openScore(w)"
  2217. v-else-if="courseDetail.userid == userid"
  2218. :class="{
  2219. rightW:
  2220. w.userid == userid || tType == 1 || tType == 4,
  2221. }"
  2222. >
  2223. 评分
  2224. </div>
  2225. <img
  2226. class="deleteImg"
  2227. src="../../assets/deleteworks.png"
  2228. v-if="
  2229. w.userid == userid || tType == 1 || tType == 4
  2230. "
  2231. @click.stop="deleteWorks(w.wid)"
  2232. alt
  2233. />
  2234. </div>
  2235. <div class="worksName">
  2236. <div>{{ w.sName }}</div>
  2237. </div>
  2238. </div>
  2239. </div>
  2240. </div>
  2241. <div
  2242. v-if="
  2243. tType &&
  2244. tType == 2 &&
  2245. !sIsOpen &&
  2246. tool.tool.indexOf(3) != -1
  2247. "
  2248. class="worksBox"
  2249. >
  2250. <div
  2251. class="zuoyeYulan"
  2252. v-if="workStudent[toolIndex].length > 0"
  2253. >
  2254. <span class="worksTitle">作业预览</span>
  2255. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2256. </div>
  2257. <div
  2258. class="worksDetailBox"
  2259. v-if="workStudent[toolIndex].length > 0"
  2260. >
  2261. <div
  2262. class="works"
  2263. style="
  2264. width: 200px;
  2265. height: 140px;
  2266. margin: 10px 10px 10px 0;
  2267. box-shadow: 0 0 6px 1px #dfdada;
  2268. "
  2269. v-for="(w, wIndex) in workStudent[toolIndex]"
  2270. :key="wIndex"
  2271. >
  2272. <div class="workImg">
  2273. <img
  2274. :src="w.works"
  2275. @click="previewImg(w.works,w)"
  2276. alt
  2277. />
  2278. <div
  2279. class="answerScore"
  2280. v-if="w.score"
  2281. @click.stop="openScore(w)"
  2282. :class="{
  2283. rightW:
  2284. w.userid == userid || tType == 1 || tType == 4,
  2285. }"
  2286. >
  2287. {{ JSON.parse(w.score).wScore }}分
  2288. </div>
  2289. <div
  2290. class="answerScore"
  2291. @click.stop="openScore(w)"
  2292. v-else-if="courseDetail.userid == userid"
  2293. :class="{
  2294. rightW:
  2295. w.userid == userid || tType == 1 || tType == 4,
  2296. }"
  2297. >
  2298. 评分
  2299. </div>
  2300. <img
  2301. class="deleteImg"
  2302. src="../../assets/deleteworks.png"
  2303. v-if="
  2304. w.userid == userid || tType == 1 || tType == 4
  2305. "
  2306. @click.stop="deleteWorks(w.wid)"
  2307. alt
  2308. />
  2309. </div>
  2310. <div class="worksName">
  2311. <div>{{ w.sName }}</div>
  2312. </div>
  2313. </div>
  2314. </div>
  2315. </div>
  2316. <div
  2317. v-if="
  2318. tType &&
  2319. tType == 2 &&
  2320. !sIsOpen &&
  2321. tool.tool.indexOf(6) != -1
  2322. "
  2323. class="worksBox"
  2324. >
  2325. <div
  2326. class="zuoyeYulan"
  2327. v-if="workStudent[toolIndex].length > 0"
  2328. >
  2329. <span class="worksTitle">作业预览</span>
  2330. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2331. </div>
  2332. <div
  2333. class="worksDetailBox"
  2334. v-if="workStudent[toolIndex].length > 0"
  2335. >
  2336. <div
  2337. class="works"
  2338. style="
  2339. width: 200px;
  2340. height: 140px;
  2341. margin: 10px 10px 10px 0;
  2342. box-shadow: 0 0 6px 1px #dfdada;
  2343. "
  2344. v-for="(w, wIndex) in workStudent[toolIndex]"
  2345. :key="wIndex"
  2346. >
  2347. <div class="workImg">
  2348. <img
  2349. :src="w.works"
  2350. @click="previewImg(w.works,w)"
  2351. alt
  2352. />
  2353. <div
  2354. class="answerScore"
  2355. v-if="w.score"
  2356. @click.stop="openScore(w)"
  2357. :class="{
  2358. rightW:
  2359. w.userid == userid || tType == 1 || tType == 4,
  2360. }"
  2361. >
  2362. {{ JSON.parse(w.score).wScore }}分
  2363. </div>
  2364. <div
  2365. class="answerScore"
  2366. @click.stop="openScore(w)"
  2367. v-else-if="courseDetail.userid == userid"
  2368. :class="{
  2369. rightW:
  2370. w.userid == userid || tType == 1 || tType == 4,
  2371. }"
  2372. >
  2373. 评分
  2374. </div>
  2375. <img
  2376. class="deleteImg"
  2377. src="../../assets/deleteworks.png"
  2378. v-if="
  2379. w.userid == userid || tType == 1 || tType == 4
  2380. "
  2381. @click.stop="deleteWorks(w.wid)"
  2382. alt
  2383. />
  2384. </div>
  2385. <div class="worksName">
  2386. <div>{{ w.sName }}</div>
  2387. </div>
  2388. </div>
  2389. </div>
  2390. </div>
  2391. <div
  2392. v-if="
  2393. tType &&
  2394. tType == 2 &&
  2395. !sIsOpen &&
  2396. tool.tool.indexOf(7) != -1
  2397. "
  2398. class="worksBox"
  2399. >
  2400. <div
  2401. class="zuoyeYulan"
  2402. v-if="workStudent[toolIndex].length > 0"
  2403. >
  2404. <span class="worksTitle">作业预览</span>
  2405. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2406. </div>
  2407. <div
  2408. class="worksDetailBox"
  2409. v-if="workStudent[toolIndex].length > 0"
  2410. >
  2411. <div
  2412. class="works"
  2413. style="
  2414. width: 200px;
  2415. height: 140px;
  2416. margin: 10px 10px 10px 0;
  2417. box-shadow: 0 0 6px 1px #dfdada;
  2418. "
  2419. v-for="(w, wIndex) in workStudent[toolIndex]"
  2420. :key="wIndex"
  2421. >
  2422. <div class="workImg">
  2423. <img
  2424. :src="w.works"
  2425. @click="previewImg(w.works,w)"
  2426. alt
  2427. />
  2428. <div
  2429. class="answerScore"
  2430. v-if="w.score"
  2431. @click.stop="openScore(w)"
  2432. :class="{
  2433. rightW:
  2434. w.userid == userid || tType == 1 || tType == 4,
  2435. }"
  2436. >
  2437. {{ JSON.parse(w.score).wScore }}分
  2438. </div>
  2439. <div
  2440. class="answerScore"
  2441. @click.stop="openScore(w)"
  2442. v-else-if="courseDetail.userid == userid"
  2443. :class="{
  2444. rightW:
  2445. w.userid == userid || tType == 1 || tType == 4,
  2446. }"
  2447. >
  2448. 评分
  2449. </div>
  2450. <img
  2451. class="deleteImg"
  2452. src="../../assets/deleteworks.png"
  2453. v-if="
  2454. w.userid == userid || tType == 1 || tType == 4
  2455. "
  2456. @click.stop="deleteWorks(w.wid)"
  2457. alt
  2458. />
  2459. </div>
  2460. <div class="worksName">
  2461. <div>{{ w.sName }}</div>
  2462. </div>
  2463. </div>
  2464. </div>
  2465. </div>
  2466. <div
  2467. v-if="
  2468. tType &&
  2469. tType == 2 &&
  2470. !sIsOpen &&
  2471. tool.tool.indexOf(26) != -1
  2472. "
  2473. class="worksBox"
  2474. >
  2475. <div
  2476. class="zuoyeYulan"
  2477. v-if="workStudent[toolIndex].length > 0"
  2478. >
  2479. <span class="worksTitle">作业预览</span>
  2480. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2481. </div>
  2482. <div
  2483. class="worksDetailBox"
  2484. v-if="workStudent[toolIndex].length > 0"
  2485. >
  2486. <div
  2487. class="works"
  2488. style="
  2489. width: 200px;
  2490. height: 140px;
  2491. margin: 10px 10px 10px 0;
  2492. box-shadow: 0 0 6px 1px #dfdada;
  2493. "
  2494. v-for="(w, wIndex) in workStudent[toolIndex]"
  2495. :key="wIndex"
  2496. >
  2497. <div class="workImg">
  2498. <img
  2499. :src="w.works"
  2500. @click="previewImg(w.works,w)"
  2501. alt
  2502. />
  2503. <img
  2504. class="deleteImg"
  2505. src="../../assets/deleteworks.png"
  2506. v-if="
  2507. w.userid == userid || tType == 1 || tType == 4
  2508. "
  2509. @click.stop="deleteWorks(w.wid)"
  2510. alt
  2511. />
  2512. </div>
  2513. <div class="worksName">
  2514. <div>{{ w.sName }}</div>
  2515. </div>
  2516. </div>
  2517. </div>
  2518. </div>
  2519. <div
  2520. v-if="
  2521. tType &&
  2522. ((tType == 2 && sIsOpen == true) ||
  2523. tType == 1 ||
  2524. tType == 4) &&
  2525. tool.tool.indexOf(16) != -1
  2526. "
  2527. class="worksBox"
  2528. >
  2529. <div
  2530. class="zuoyeYulan"
  2531. v-if="
  2532. (worksStudent.length &&
  2533. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  2534. "
  2535. >
  2536. <div class="worksTop">
  2537. <div>作业预览</div>
  2538. <div
  2539. class="corOpen"
  2540. @click="contract(toolIndex)"
  2541. v-if="
  2542. (isCloseList[toolIndex].isCloseBoolean) &&
  2543. isCloseList[toolIndex].isClose == 0
  2544. "
  2545. >
  2546. 折叠
  2547. </div>
  2548. <div
  2549. class="corOpen"
  2550. @click="contract(toolIndex)"
  2551. v-if="isCloseList[toolIndex].isClose == 1"
  2552. >
  2553. 展开
  2554. </div>
  2555. </div>
  2556. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  2557. </div>
  2558. <div
  2559. class="group_workBox"
  2560. v-for="(g, gindex) in courseGroup.group"
  2561. :key="gindex"
  2562. >
  2563. <div class="group_box">
  2564. <div class="group_title">
  2565. <el-tooltip
  2566. class="item"
  2567. effect="light"
  2568. :content="g.name"
  2569. placement="top"
  2570. >
  2571. <div class="group_name">{{ g.name }}</div>
  2572. </el-tooltip>
  2573. </div>
  2574. <div
  2575. class="group_work"
  2576. v-if="
  2577. g.works &&
  2578. g.works.length &&
  2579. g.works[toolIndex].length
  2580. "
  2581. >
  2582. <div
  2583. class="works"
  2584. style="
  2585. width: 200px;
  2586. height: 140px;
  2587. margin: 10px 10px 10px 0;
  2588. border-radius: 15px;
  2589. box-shadow: 0 0 6px 1px #dfdada;
  2590. "
  2591. v-for="(w, wIndex) in g.works[toolIndex]"
  2592. :key="wIndex"
  2593. :class="w.type == 1 ? 'isTypeOne' : ''"
  2594. >
  2595. <div class="workImg" v-if="w.type == 0">
  2596. <!-- @click="commentOther(w, toolIndex, wIndex)" -->
  2597. <img
  2598. :src="w.works"
  2599. @click="previewImg(w.works,w)"
  2600. alt
  2601. />
  2602. <div
  2603. class="answerScore"
  2604. v-if="w.score"
  2605. @click.stop="openScore(w)"
  2606. :class="{
  2607. rightW:
  2608. w.userid == userid ||
  2609. tType == 1 ||
  2610. tType == 4 ||
  2611. w.ateacher == userid,
  2612. }"
  2613. >
  2614. {{ JSON.parse(w.score).wScore }}分
  2615. </div>
  2616. <div
  2617. class="answerScore"
  2618. @click.stop="openScore(w)"
  2619. v-else-if="courseDetail.userid == userid"
  2620. :class="{
  2621. rightW:
  2622. w.userid == userid ||
  2623. tType == 1 ||
  2624. tType == 4 ||
  2625. w.ateacher == userid,
  2626. }"
  2627. >
  2628. 评分
  2629. </div>
  2630. <img
  2631. class="deleteImg"
  2632. src="../../assets/deleteworks.png"
  2633. v-if="
  2634. w.userid == userid || tType == 1 || tType == 4
  2635. "
  2636. @click.stop="deleteWorks(w.wid)"
  2637. alt
  2638. />
  2639. </div>
  2640. <div class="workImg" v-if="w.type == 1">
  2641. <img :src="word" @click="openFile(w.works)" alt />
  2642. <!-- @click="openFile(w.works)" -->
  2643. <div
  2644. class="answerScore"
  2645. v-if="w.score"
  2646. @click.stop="openScore(w)"
  2647. :class="{
  2648. rightW:
  2649. w.userid == userid ||
  2650. tType == 1 ||
  2651. tType == 4 ||
  2652. w.ateacher == userid,
  2653. }"
  2654. >
  2655. {{ JSON.parse(w.score).wScore }}分
  2656. </div>
  2657. <div
  2658. class="answerScore"
  2659. @click.stop="openScore(w)"
  2660. v-else-if="courseDetail.userid == userid"
  2661. :class="{
  2662. rightW:
  2663. w.userid == userid ||
  2664. tType == 1 ||
  2665. tType == 4 ||
  2666. w.ateacher == userid,
  2667. }"
  2668. >
  2669. 评分
  2670. </div>
  2671. <img
  2672. class="deleteImg"
  2673. src="../../assets/deleteworks.png"
  2674. v-if="
  2675. w.userid == userid || tType == 1 || tType == 4
  2676. "
  2677. @click.stop="deleteWorks(w.wid)"
  2678. alt
  2679. />
  2680. </div>
  2681. <div class="workImg" v-if="w.type == 3">
  2682. <img
  2683. style="cursor: pointer"
  2684. :src="video"
  2685. @click="openVideo(w)"
  2686. alt
  2687. />
  2688. <!-- @click="openVideo(w.works)" -->
  2689. <div
  2690. class="answerScore"
  2691. v-if="w.score"
  2692. @click.stop="openScore(w)"
  2693. :class="{
  2694. rightW:
  2695. w.userid == userid ||
  2696. tType == 1 ||
  2697. tType == 4 ||
  2698. w.ateacher == userid,
  2699. }"
  2700. >
  2701. {{ JSON.parse(w.score).wScore }}分
  2702. </div>
  2703. <div
  2704. class="answerScore"
  2705. @click.stop="openScore(w)"
  2706. v-else-if="courseDetail.userid == userid"
  2707. :class="{
  2708. rightW:
  2709. w.userid == userid ||
  2710. tType == 1 ||
  2711. tType == 4 ||
  2712. w.ateacher == userid,
  2713. }"
  2714. >
  2715. 评分
  2716. </div>
  2717. <img
  2718. class="deleteImg"
  2719. src="../../assets/deleteworks.png"
  2720. v-if="
  2721. w.userid == userid || tType == 1 || tType == 4
  2722. "
  2723. @click.stop="deleteWorks(w.wid)"
  2724. alt
  2725. />
  2726. </div>
  2727. <div class="workImg" v-if="w.type == 12">
  2728. <img
  2729. style="cursor: pointer"
  2730. :src="word2"
  2731. @click="downloadFile(w.works)"
  2732. alt
  2733. />
  2734. <!-- @click="openVideo(w.works)" -->
  2735. <div
  2736. class="answerScore"
  2737. v-if="w.score"
  2738. @click.stop="openScore(w)"
  2739. :class="{
  2740. rightW:
  2741. w.userid == userid ||
  2742. tType == 1 ||
  2743. tType == 4 ||
  2744. w.ateacher == userid,
  2745. }"
  2746. >
  2747. {{ JSON.parse(w.score).wScore }}分
  2748. </div>
  2749. <div
  2750. class="answerScore"
  2751. @click.stop="openScore(w)"
  2752. v-else-if="courseDetail.userid == userid"
  2753. :class="{
  2754. rightW:
  2755. w.userid == userid ||
  2756. tType == 1 ||
  2757. tType == 4 ||
  2758. w.ateacher == userid,
  2759. }"
  2760. >
  2761. 评分
  2762. </div>
  2763. <img
  2764. class="deleteImg"
  2765. src="../../assets/deleteworks.png"
  2766. v-if="
  2767. w.userid == userid || tType == 1 || tType == 4
  2768. "
  2769. @click.stop="deleteWorks(w.wid)"
  2770. alt
  2771. />
  2772. </div>
  2773. <div class="comment" style="min-width: 200px">
  2774. <div class="worksName">
  2775. <div>{{ w.sName }}</div>
  2776. </div>
  2777. <div class="commentList">
  2778. <div class="commentList">
  2779. <div
  2780. class="commentImg"
  2781. @click="
  2782. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  2783. "
  2784. >
  2785. <img
  2786. :src="w.isLikes == true ? likes : noLikes"
  2787. alt=""
  2788. />
  2789. </div>
  2790. <div>{{ w.likesCount }}</div>
  2791. </div>
  2792. <div
  2793. class="commentList"
  2794. style="margin-right: 15px"
  2795. >
  2796. <div
  2797. class="commentImg"
  2798. @click="
  2799. commentOther(
  2800. w,
  2801. toolIndex,
  2802. wIndex,
  2803. null,
  2804. g.id
  2805. )
  2806. "
  2807. >
  2808. <img
  2809. src="../../assets/icon/comment/comment.png"
  2810. alt=""
  2811. />
  2812. </div>
  2813. <div>{{ w.commentCount }}</div>
  2814. </div>
  2815. </div>
  2816. </div>
  2817. </div>
  2818. </div>
  2819. <div class="group_work" v-else>暂无提交作业</div>
  2820. </div>
  2821. </div>
  2822. <div
  2823. :id="'tool-' + toolIndex"
  2824. :style="{
  2825. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  2826. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  2827. }"
  2828. class="worksDetailBox"
  2829. v-if="
  2830. worksStudent.length &&
  2831. worksStudent[toolIndex].length > 0
  2832. "
  2833. >
  2834. <div
  2835. class="works"
  2836. style="
  2837. width: 200px;
  2838. height: 140px;
  2839. margin: 10px 10px 10px 0;
  2840. border-radius: 15px;
  2841. box-shadow: 0 0 6px 1px #dfdada;
  2842. "
  2843. v-for="(w, wIndex) in worksStudent[toolIndex]"
  2844. :key="wIndex"
  2845. :class="w.type == 1 ? 'isTypeOne' : ''"
  2846. >
  2847. <div class="workImg" v-if="w.type == 0">
  2848. <!-- @click="commentOther(w, toolIndex, wIndex)" -->
  2849. <img
  2850. :src="w.works"
  2851. @click="previewImg(w.works,w)"
  2852. alt
  2853. />
  2854. <div
  2855. class="answerScore"
  2856. v-if="w.score"
  2857. @click.stop="openScore(w)"
  2858. :class="{
  2859. rightW:
  2860. w.userid == userid ||
  2861. tType == 1 ||
  2862. tType == 4 ||
  2863. w.ateacher == userid,
  2864. }"
  2865. >
  2866. {{ JSON.parse(w.score).wScore }}分
  2867. </div>
  2868. <div
  2869. class="answerScore"
  2870. @click.stop="openScore(w)"
  2871. v-else-if="courseDetail.userid == userid"
  2872. :class="{
  2873. rightW:
  2874. w.userid == userid ||
  2875. tType == 1 ||
  2876. tType == 4 ||
  2877. w.ateacher == userid,
  2878. }"
  2879. >
  2880. 评分
  2881. </div>
  2882. <img
  2883. class="deleteImg"
  2884. src="../../assets/deleteworks.png"
  2885. v-if="
  2886. w.userid == userid || tType == 1 || tType == 4
  2887. "
  2888. @click.stop="deleteWorks(w.wid)"
  2889. alt
  2890. />
  2891. </div>
  2892. <div class="workImg" v-if="w.type == 1">
  2893. <img :src="word" @click="openFile(w.works)" alt />
  2894. <!-- @click="openFile(w.works)" -->
  2895. <div
  2896. class="answerScore"
  2897. v-if="w.score"
  2898. @click.stop="openScore(w)"
  2899. :class="{
  2900. rightW:
  2901. w.userid == userid ||
  2902. tType == 1 ||
  2903. tType == 4 ||
  2904. w.ateacher == userid,
  2905. }"
  2906. >
  2907. {{ JSON.parse(w.score).wScore }}分
  2908. </div>
  2909. <div
  2910. class="answerScore"
  2911. @click.stop="openScore(w)"
  2912. v-else-if="courseDetail.userid == userid"
  2913. :class="{
  2914. rightW:
  2915. w.userid == userid ||
  2916. tType == 1 ||
  2917. tType == 4 ||
  2918. w.ateacher == userid,
  2919. }"
  2920. >
  2921. 评分
  2922. </div>
  2923. <img
  2924. class="deleteImg"
  2925. src="../../assets/deleteworks.png"
  2926. v-if="
  2927. w.userid == userid || tType == 1 || tType == 4
  2928. "
  2929. @click.stop="deleteWorks(w.wid)"
  2930. alt
  2931. />
  2932. </div>
  2933. <div class="workImg" v-if="w.type == 3">
  2934. <img
  2935. style="cursor: pointer"
  2936. :src="video"
  2937. @click="openVideo(w)"
  2938. alt
  2939. />
  2940. <!-- @click="openVideo(w.works)" -->
  2941. <div
  2942. class="answerScore"
  2943. v-if="w.score"
  2944. @click.stop="openScore(w)"
  2945. :class="{
  2946. rightW:
  2947. w.userid == userid ||
  2948. tType == 1 ||
  2949. tType == 4 ||
  2950. w.ateacher == userid,
  2951. }"
  2952. >
  2953. {{ JSON.parse(w.score).wScore }}分
  2954. </div>
  2955. <div
  2956. class="answerScore"
  2957. @click.stop="openScore(w)"
  2958. v-else-if="courseDetail.userid == userid"
  2959. :class="{
  2960. rightW:
  2961. w.userid == userid ||
  2962. tType == 1 ||
  2963. tType == 4 ||
  2964. w.ateacher == userid,
  2965. }"
  2966. >
  2967. 评分
  2968. </div>
  2969. <img
  2970. class="deleteImg"
  2971. src="../../assets/deleteworks.png"
  2972. v-if="
  2973. w.userid == userid || tType == 1 || tType == 4
  2974. "
  2975. @click.stop="deleteWorks(w.wid)"
  2976. alt
  2977. />
  2978. </div>
  2979. <div class="workImg" v-if="w.type == 12">
  2980. <img
  2981. style="cursor: pointer"
  2982. :src="word2"
  2983. @click="downloadFile(w.works)"
  2984. alt
  2985. />
  2986. <!-- @click="openVideo(w.works)" -->
  2987. <div
  2988. class="answerScore"
  2989. v-if="w.score"
  2990. @click.stop="openScore(w)"
  2991. :class="{
  2992. rightW:
  2993. w.userid == userid ||
  2994. tType == 1 ||
  2995. tType == 4 ||
  2996. w.ateacher == userid,
  2997. }"
  2998. >
  2999. {{ JSON.parse(w.score).wScore }}分
  3000. </div>
  3001. <div
  3002. class="answerScore"
  3003. @click.stop="openScore(w)"
  3004. v-else-if="courseDetail.userid == userid"
  3005. :class="{
  3006. rightW:
  3007. w.userid == userid ||
  3008. tType == 1 ||
  3009. tType == 4 ||
  3010. w.ateacher == userid,
  3011. }"
  3012. >
  3013. 评分
  3014. </div>
  3015. <img
  3016. class="deleteImg"
  3017. src="../../assets/deleteworks.png"
  3018. v-if="
  3019. w.userid == userid || tType == 1 || tType == 4
  3020. "
  3021. @click.stop="deleteWorks(w.wid)"
  3022. alt
  3023. />
  3024. </div>
  3025. <div class="comment" style="min-width: 200px">
  3026. <div class="worksName">
  3027. <div>{{ w.sName }}</div>
  3028. </div>
  3029. <div class="commentList">
  3030. <div class="commentList">
  3031. <div
  3032. class="commentImg"
  3033. @click="
  3034. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  3035. "
  3036. >
  3037. <img
  3038. :src="w.isLikes == true ? likes : noLikes"
  3039. alt=""
  3040. />
  3041. </div>
  3042. <div>{{ w.likesCount }}</div>
  3043. </div>
  3044. <div class="commentList" style="margin-right: 15px">
  3045. <div
  3046. class="commentImg"
  3047. @click="commentOther(w, toolIndex, wIndex)"
  3048. >
  3049. <img
  3050. src="../../assets/icon/comment/comment.png"
  3051. alt=""
  3052. />
  3053. </div>
  3054. <div>{{ w.commentCount }}</div>
  3055. </div>
  3056. </div>
  3057. </div>
  3058. </div>
  3059. </div>
  3060. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3061. 未提交
  3062. </div>
  3063. <div
  3064. class="noWorksS"
  3065. v-if="noWorksS && noWorksS[toolIndex].length"
  3066. >
  3067. <div
  3068. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3069. :key="sIndex"
  3070. class="noWorksName"
  3071. @click="teacherWorkSubmit(16, toolIndex, taskCount, s)"
  3072. >
  3073. <el-tooltip effect="dark" :content="s.student" placement="top">
  3074. <span>{{ s.student }}</span>
  3075. </el-tooltip>
  3076. </div>
  3077. </div>
  3078. </div>
  3079. <div
  3080. v-if="
  3081. tType &&
  3082. ((tType == 2 && sIsOpen == true) ||
  3083. tType == 1 ||
  3084. tType == 4) &&
  3085. tool.tool.indexOf(70) != -1
  3086. "
  3087. class="worksBox"
  3088. >
  3089. <div
  3090. class="zuoyeYulan"
  3091. v-if="
  3092. (worksStudent.length &&
  3093. worksStudent[toolIndex].length > 0)
  3094. "
  3095. >
  3096. <div class="worksTop">
  3097. <div>作业预览</div>
  3098. <div
  3099. class="corOpen"
  3100. @click="contract(toolIndex)"
  3101. v-if="
  3102. (isCloseList[toolIndex].isCloseBoolean) &&
  3103. isCloseList[toolIndex].isClose == 0
  3104. "
  3105. >
  3106. 折叠
  3107. </div>
  3108. <div
  3109. class="corOpen"
  3110. @click="contract(toolIndex)"
  3111. v-if="isCloseList[toolIndex].isClose == 1"
  3112. >
  3113. 展开
  3114. </div>
  3115. </div>
  3116. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  3117. </div>
  3118. <div
  3119. :id="'tool-' + toolIndex"
  3120. :style="{
  3121. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  3122. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  3123. }"
  3124. class="worksDetailBox"
  3125. v-if="
  3126. worksStudent.length &&
  3127. worksStudent[toolIndex].length > 0
  3128. "
  3129. >
  3130. <div
  3131. class="works"
  3132. style="
  3133. width: 200px;
  3134. height: 140px;
  3135. margin: 10px 10px 10px 0;
  3136. border-radius: 15px;
  3137. box-shadow: 0 0 6px 1px #dfdada;
  3138. "
  3139. v-for="(w, wIndex) in worksStudent[toolIndex]"
  3140. :key="wIndex"
  3141. :class="w.type == 1 ? 'isTypeOne' : ''"
  3142. >
  3143. <div class="workImg" @click.stop="openScore(w, toolIndex)">
  3144. <img :src="word" alt />
  3145. <img
  3146. class="deleteImg"
  3147. src="../../assets/deleteworks.png"
  3148. v-if="
  3149. w.userid == userid || tType == 1 || tType == 4
  3150. "
  3151. @click.stop="deleteWorks(w.wid)"
  3152. alt
  3153. />
  3154. </div>
  3155. <div class="comment" style="min-width: 200px">
  3156. <div class="worksName">
  3157. <div>{{ w.sName }}</div>
  3158. </div>
  3159. </div>
  3160. </div>
  3161. </div>
  3162. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3163. 未提交
  3164. </div>
  3165. <div
  3166. class="noWorksS"
  3167. v-if="noWorksS && noWorksS[toolIndex].length"
  3168. >
  3169. <div
  3170. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3171. :key="sIndex"
  3172. class="noWorksName"
  3173. >
  3174. <el-tooltip effect="dark" :content="s.student" placement="top">
  3175. <span>{{ s.student }}</span>
  3176. </el-tooltip>
  3177. </div>
  3178. </div>
  3179. </div>
  3180. <div
  3181. v-if="
  3182. tType &&
  3183. tType == 2 &&
  3184. !sIsOpen &&
  3185. tool.tool.indexOf(70) != -1
  3186. "
  3187. class="worksBox"
  3188. >
  3189. <div
  3190. class="zuoyeYulan"
  3191. v-if="workStudent[toolIndex].length > 0"
  3192. >
  3193. <span class="worksTitle">作业预览</span>
  3194. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  3195. </div>
  3196. <div
  3197. class="worksDetailBox"
  3198. v-if="workStudent[toolIndex].length > 0"
  3199. >
  3200. <div
  3201. class="works"
  3202. style="
  3203. width: 200px;
  3204. height: 140px;
  3205. margin: 10px 10px 10px 0;
  3206. box-shadow: 0 0 6px 1px #dfdada;
  3207. "
  3208. v-for="(w, wIndex) in workStudent[toolIndex]"
  3209. :key="wIndex"
  3210. >
  3211. <div class="workImg" @click.stop="openScore(w, toolIndex)">
  3212. <img :src="word" alt />
  3213. <img
  3214. class="deleteImg"
  3215. src="../../assets/deleteworks.png"
  3216. v-if="
  3217. w.userid == userid || tType == 1 || tType == 4
  3218. "
  3219. @click.stop="deleteWorks(w.wid)"
  3220. alt
  3221. />
  3222. </div>
  3223. <div class="worksName">
  3224. <div>{{ w.sName }}</div>
  3225. </div>
  3226. </div>
  3227. </div>
  3228. </div>
  3229. <div
  3230. v-if="
  3231. tType &&
  3232. ((tType == 2 && sIsOpen == true) ||
  3233. tType == 1 ||
  3234. tType == 4) &&
  3235. tool.tool.indexOf(32) != -1
  3236. "
  3237. class="worksBox"
  3238. >
  3239. <div
  3240. class="zuoyeYulan"
  3241. v-if="
  3242. worksStudent.length &&
  3243. worksStudent[toolIndex].length > 0
  3244. "
  3245. >
  3246. <div class="worksTop">
  3247. <div>作业预览</div>
  3248. <div
  3249. class="corOpen"
  3250. @click="contract(toolIndex)"
  3251. v-if="
  3252. (isCloseList[toolIndex].isCloseBoolean) &&
  3253. isCloseList[toolIndex].isClose == 0
  3254. "
  3255. >
  3256. 折叠
  3257. </div>
  3258. <div
  3259. class="corOpen"
  3260. @click="contract(toolIndex)"
  3261. v-if="isCloseList[toolIndex].isClose == 1"
  3262. >
  3263. 展开
  3264. </div>
  3265. </div>
  3266. </div>
  3267. <div
  3268. :id="'tool-' + toolIndex"
  3269. :style="{
  3270. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  3271. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  3272. }"
  3273. class="worksDetailBox"
  3274. v-if="
  3275. worksStudent.length &&
  3276. worksStudent[toolIndex].length > 0
  3277. "
  3278. >
  3279. <div
  3280. class="works"
  3281. style="
  3282. width: 200px;
  3283. height: 140px;
  3284. margin: 10px 10px 10px 0;
  3285. border-radius: 15px;
  3286. box-shadow: 0 0 6px 1px #dfdada;
  3287. "
  3288. v-for="(w, wIndex) in worksStudent[toolIndex]"
  3289. :key="wIndex"
  3290. :class="w.type == 1 ? 'isTypeOne' : ''"
  3291. >
  3292. <div class="workImg">
  3293. <img
  3294. :src="word2"
  3295. @click="downloadFile(w.works)"
  3296. alt
  3297. />
  3298. <div
  3299. class="answerScore"
  3300. v-if="w.score"
  3301. @click.stop="openScore(w)"
  3302. :class="{
  3303. rightW:
  3304. w.userid == userid ||
  3305. tType == 1 ||
  3306. tType == 4 ||
  3307. w.ateacher == userid,
  3308. }"
  3309. >
  3310. {{ JSON.parse(w.score).wScore }}分
  3311. </div>
  3312. <div
  3313. class="answerScore"
  3314. @click.stop="openScore(w)"
  3315. v-else-if="courseDetail.userid == userid"
  3316. :class="{
  3317. rightW:
  3318. w.userid == userid ||
  3319. tType == 1 ||
  3320. tType == 4 ||
  3321. w.ateacher == userid,
  3322. }"
  3323. >
  3324. 评分
  3325. </div>
  3326. <img
  3327. class="deleteImg"
  3328. src="../../assets/deleteworks.png"
  3329. v-if="
  3330. w.userid == userid || tType == 1 || tType == 4
  3331. "
  3332. @click.stop="deleteWorks(w.wid)"
  3333. alt
  3334. />
  3335. </div>
  3336. <div class="comment" style="min-width: 200px">
  3337. <div class="worksName">
  3338. <div>{{ w.sName }}</div>
  3339. </div>
  3340. <div class="commentList">
  3341. <div class="commentList">
  3342. <div
  3343. class="commentImg"
  3344. @click="
  3345. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  3346. "
  3347. >
  3348. <img
  3349. :src="w.isLikes == true ? likes : noLikes"
  3350. alt=""
  3351. />
  3352. </div>
  3353. <div>{{ w.likesCount }}</div>
  3354. </div>
  3355. <div class="commentList" style="margin-right: 15px">
  3356. <div
  3357. class="commentImg"
  3358. @click="commentOther(w, toolIndex, wIndex)"
  3359. >
  3360. <img
  3361. src="../../assets/icon/comment/comment.png"
  3362. alt=""
  3363. />
  3364. </div>
  3365. <div>{{ w.commentCount }}</div>
  3366. </div>
  3367. </div>
  3368. </div>
  3369. </div>
  3370. </div>
  3371. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3372. 未提交
  3373. </div>
  3374. <div
  3375. class="noWorksS"
  3376. v-if="noWorksS && noWorksS[toolIndex].length"
  3377. >
  3378. <div
  3379. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3380. :key="sIndex"
  3381. class="noWorksName"
  3382. @click="teacherWorkSubmit(32, toolIndex, taskCount, s)"
  3383. >
  3384. <el-tooltip effect="dark" :content="s.student" placement="top">
  3385. <span>{{ s.student }}</span>
  3386. </el-tooltip>
  3387. </div>
  3388. </div>
  3389. </div>
  3390. <div
  3391. v-if="
  3392. tType &&
  3393. ((tType == 2 && sIsOpen == true) ||
  3394. tType == 1 ||
  3395. tType == 4) &&
  3396. tool.tool.indexOf(57) != -1
  3397. "
  3398. class="worksBox"
  3399. >
  3400. <div
  3401. class="zuoyeYulan"
  3402. v-if="
  3403. worksStudent.length &&
  3404. worksStudent[toolIndex].length > 0
  3405. "
  3406. >
  3407. <div class="worksTop">
  3408. <div>作业预览</div>
  3409. <div
  3410. class="corOpen"
  3411. @click="contract(toolIndex)"
  3412. v-if="
  3413. (isCloseList[toolIndex].isCloseBoolean) &&
  3414. isCloseList[toolIndex].isClose == 0
  3415. "
  3416. >
  3417. 折叠
  3418. </div>
  3419. <div
  3420. class="corOpen"
  3421. @click="contract(toolIndex)"
  3422. v-if="isCloseList[toolIndex].isClose == 1"
  3423. >
  3424. 展开
  3425. </div>
  3426. </div>
  3427. </div>
  3428. <div
  3429. :id="'tool-' + toolIndex"
  3430. :style="{
  3431. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  3432. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  3433. }"
  3434. class="worksDetailBox"
  3435. v-if="
  3436. worksStudent.length &&
  3437. worksStudent[toolIndex].length > 0
  3438. "
  3439. >
  3440. <div
  3441. class="works"
  3442. style="
  3443. width: 200px;
  3444. height: 140px;
  3445. margin: 10px 10px 10px 0;
  3446. border-radius: 15px;
  3447. box-shadow: 0 0 6px 1px #dfdada;
  3448. "
  3449. v-for="(w, wIndex) in worksStudent[toolIndex]"
  3450. :key="wIndex"
  3451. :class="w.type == 1 ? 'isTypeOne' : ''"
  3452. >
  3453. <div class="workImg">
  3454. <img
  3455. :src="word2"
  3456. @click="downloadFile(w.works)"
  3457. v-if="w.type == 12"
  3458. alt
  3459. />
  3460. <img
  3461. :src="word2"
  3462. @click="
  3463. openCocoPi(57, toolIndex, w.userid, w.sName)
  3464. "
  3465. v-else-if="w.type == 15"
  3466. alt
  3467. />
  3468. <div
  3469. class="answerScore"
  3470. v-if="w.score"
  3471. @click.stop="openScore(w)"
  3472. :class="{
  3473. rightW:
  3474. w.userid == userid ||
  3475. tType == 1 ||
  3476. tType == 4 ||
  3477. w.ateacher == userid,
  3478. }"
  3479. >
  3480. {{ JSON.parse(w.score).wScore }}分
  3481. </div>
  3482. <div
  3483. class="answerScore"
  3484. @click.stop="openScore(w)"
  3485. v-else-if="courseDetail.userid == userid"
  3486. :class="{
  3487. rightW:
  3488. w.userid == userid ||
  3489. tType == 1 ||
  3490. tType == 4 ||
  3491. w.ateacher == userid,
  3492. }"
  3493. >
  3494. 评分
  3495. </div>
  3496. <img
  3497. class="deleteImg"
  3498. src="../../assets/deleteworks.png"
  3499. v-if="
  3500. w.userid == userid || tType == 1 || tType == 4
  3501. "
  3502. @click.stop="deleteWorks(w.wid)"
  3503. alt
  3504. />
  3505. </div>
  3506. <div class="comment" style="min-width: 200px">
  3507. <div class="worksName">
  3508. <div>{{ w.sName }}</div>
  3509. </div>
  3510. <div class="commentList">
  3511. <div class="commentList">
  3512. <div
  3513. class="commentImg"
  3514. @click="
  3515. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  3516. "
  3517. >
  3518. <img
  3519. :src="w.isLikes == true ? likes : noLikes"
  3520. alt=""
  3521. />
  3522. </div>
  3523. <div>{{ w.likesCount }}</div>
  3524. </div>
  3525. <div class="commentList" style="margin-right: 15px">
  3526. <div
  3527. class="commentImg"
  3528. @click="commentOther(w, toolIndex, wIndex)"
  3529. >
  3530. <img
  3531. src="../../assets/icon/comment/comment.png"
  3532. alt=""
  3533. />
  3534. </div>
  3535. <div>{{ w.commentCount }}</div>
  3536. </div>
  3537. </div>
  3538. </div>
  3539. </div>
  3540. </div>
  3541. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3542. 未提交
  3543. </div>
  3544. <div
  3545. class="noWorksS"
  3546. v-if="noWorksS && noWorksS[toolIndex].length"
  3547. >
  3548. <div
  3549. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3550. :key="sIndex"
  3551. class="noWorksName"
  3552. @click="teacherWorkSubmit(57, toolIndex, taskCount, s)"
  3553. >
  3554. <el-tooltip effect="dark" :content="s.student" placement="top">
  3555. <span>{{ s.student }}</span>
  3556. </el-tooltip>
  3557. </div>
  3558. </div>
  3559. </div>
  3560. <div v-if="tool.tool.indexOf(50) != -1" class="worksBox">
  3561. <div
  3562. class="zuoyeYulan"
  3563. v-if="
  3564. worksStudent.length &&
  3565. worksStudent[toolIndex].length > 0
  3566. "
  3567. >
  3568. <span class="worksTitle">作业预览</span>
  3569. <div
  3570. class="corOpen"
  3571. @click="contract(toolIndex)"
  3572. v-if="
  3573. (isCloseList[toolIndex].isCloseBoolean) &&
  3574. isCloseList[toolIndex].isClose == 0
  3575. "
  3576. >
  3577. 折叠
  3578. </div>
  3579. <div
  3580. class="corOpen"
  3581. @click="contract(toolIndex)"
  3582. v-if="isCloseList[toolIndex].isClose == 1"
  3583. >
  3584. 展开
  3585. </div>
  3586. </div>
  3587. <div
  3588. :id="'tool-' + toolIndex"
  3589. :style="{
  3590. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  3591. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  3592. }"
  3593. class="worksDetailBox"
  3594. v-if="
  3595. worksStudent.length &&
  3596. worksStudent[toolIndex].length > 0
  3597. "
  3598. >
  3599. <div
  3600. class="works"
  3601. style="
  3602. width: 200px;
  3603. height: 140px;
  3604. margin: 10px 10px 10px 0;
  3605. border-radius: 15px;
  3606. box-shadow: 0 0 6px 1px #dfdada;
  3607. "
  3608. v-for="(w, wIndex) in worksStudent[toolIndex]"
  3609. :key="wIndex"
  3610. :class="w.type == 1 ? 'isTypeOne' : ''"
  3611. >
  3612. <div class="workImg" v-if="w.type == 0">
  3613. <!-- @click="commentOther(w, toolIndex, wIndex)" -->
  3614. <img
  3615. :src="w.works"
  3616. @click="previewImg(w.works,w)"
  3617. alt
  3618. />
  3619. <div
  3620. class="answerScore"
  3621. v-if="w.score"
  3622. @click.stop="openScore(w)"
  3623. :class="{
  3624. rightW:
  3625. w.userid == userid ||
  3626. tType == 1 ||
  3627. tType == 4 ||
  3628. w.ateacher == userid,
  3629. }"
  3630. >
  3631. {{ JSON.parse(w.score).wScore }}分
  3632. </div>
  3633. <div
  3634. class="answerScore"
  3635. @click.stop="openScore(w)"
  3636. v-else-if="courseDetail.userid == userid"
  3637. :class="{
  3638. rightW:
  3639. w.userid == userid ||
  3640. tType == 1 ||
  3641. tType == 4 ||
  3642. w.ateacher == userid,
  3643. }"
  3644. >
  3645. 评分
  3646. </div>
  3647. <img
  3648. class="deleteImg"
  3649. src="../../assets/deleteworks.png"
  3650. v-if="
  3651. w.userid == userid || tType == 1 || tType == 4
  3652. "
  3653. @click.stop="deleteWorks(w.wid)"
  3654. alt
  3655. />
  3656. </div>
  3657. <div
  3658. class="workImg"
  3659. style="cursor: pointer"
  3660. v-if="w.type == 1"
  3661. >
  3662. <img :src="word" @click="openFile(w.works)" alt />
  3663. <!-- @click="openFile(w.works)" -->
  3664. <div
  3665. class="answerScore"
  3666. v-if="w.score"
  3667. @click.stop="openScore(w)"
  3668. :class="{
  3669. rightW:
  3670. w.userid == userid ||
  3671. tType == 1 ||
  3672. tType == 4 ||
  3673. w.ateacher == userid,
  3674. }"
  3675. >
  3676. {{ JSON.parse(w.score).wScore }}分
  3677. </div>
  3678. <div
  3679. class="answerScore"
  3680. @click.stop="openScore(w)"
  3681. v-else-if="courseDetail.userid == userid"
  3682. :class="{
  3683. rightW:
  3684. w.userid == userid ||
  3685. tType == 1 ||
  3686. tType == 4 ||
  3687. w.ateacher == userid,
  3688. }"
  3689. >
  3690. 评分
  3691. </div>
  3692. <img
  3693. class="deleteImg"
  3694. src="../../assets/deleteworks.png"
  3695. v-if="
  3696. w.userid == userid || tType == 1 || tType == 4
  3697. "
  3698. @click.stop="deleteWorks(w.wid)"
  3699. alt
  3700. />
  3701. </div>
  3702. <div class="workImg" v-if="w.type == 3">
  3703. <img
  3704. style="cursor: pointer"
  3705. :src="video"
  3706. @click="openVideo(w)"
  3707. alt
  3708. />
  3709. <!-- @click="openVideo(w.works)" -->
  3710. <div
  3711. class="answerScore"
  3712. v-if="w.score"
  3713. @click.stop="openScore(w)"
  3714. :class="{
  3715. rightW:
  3716. w.userid == userid ||
  3717. tType == 1 ||
  3718. tType == 4 ||
  3719. w.ateacher == userid,
  3720. }"
  3721. >
  3722. {{ JSON.parse(w.score).wScore }}分
  3723. </div>
  3724. <div
  3725. class="answerScore"
  3726. @click.stop="openScore(w)"
  3727. v-else-if="courseDetail.userid == userid"
  3728. :class="{
  3729. rightW:
  3730. w.userid == userid ||
  3731. tType == 1 ||
  3732. tType == 4 ||
  3733. w.ateacher == userid,
  3734. }"
  3735. >
  3736. 评分
  3737. </div>
  3738. <img
  3739. class="deleteImg"
  3740. src="../../assets/deleteworks.png"
  3741. v-if="
  3742. w.userid == userid || tType == 1 || tType == 4
  3743. "
  3744. @click.stop="deleteWorks(w.wid)"
  3745. alt
  3746. />
  3747. </div>
  3748. <div class="comment" style="min-width: 200px">
  3749. <div class="worksName">
  3750. <div
  3751. style="cursor: pointer"
  3752. @click="
  3753. openSname(w.sName, w.wid, toolIndex, w.userid)
  3754. "
  3755. >
  3756. {{ w.sName }}
  3757. </div>
  3758. </div>
  3759. <div class="commentList">
  3760. <div class="commentList">
  3761. <div
  3762. class="commentImg"
  3763. @click="
  3764. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  3765. "
  3766. >
  3767. <img
  3768. :src="w.isLikes == true ? likes : noLikes"
  3769. alt=""
  3770. />
  3771. </div>
  3772. <div>{{ w.likesCount }}</div>
  3773. </div>
  3774. <div class="commentList" style="margin-right: 15px">
  3775. <div
  3776. class="commentImg"
  3777. @click="commentOther(w, toolIndex, wIndex)"
  3778. >
  3779. <img
  3780. src="../../assets/icon/comment/comment.png"
  3781. alt=""
  3782. />
  3783. </div>
  3784. <div>{{ w.commentCount }}</div>
  3785. </div>
  3786. </div>
  3787. </div>
  3788. </div>
  3789. </div>
  3790. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3791. 未提交
  3792. </div>
  3793. <div
  3794. class="noWorksS"
  3795. v-if="noWorksS && noWorksS[toolIndex].length"
  3796. >
  3797. <div
  3798. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3799. :key="sIndex"
  3800. class="noWorksName"
  3801. @click="teacherWorkSubmit(50, toolIndex, taskCount, s)"
  3802. >
  3803. <el-tooltip effect="dark" :content="s.student" placement="top">
  3804. <span>{{ s.student }}</span>
  3805. </el-tooltip>
  3806. </div>
  3807. </div>
  3808. </div>
  3809. <div
  3810. v-if="
  3811. tType &&
  3812. ((tType == 2 && sIsOpen == true) ||
  3813. tType == 1 ||
  3814. tType == 4) &&
  3815. tool.tool.indexOf(4) != -1 &&
  3816. (tool.askJson[0].answer ||
  3817. tool.askJson[0].answer === 0) &&
  3818. checkJson[toolIndex].length
  3819. "
  3820. class="xuan_right_box"
  3821. >
  3822. <div
  3823. class="tool_right_box"
  3824. v-for="(item, index) in tool.askJson"
  3825. :key="index"
  3826. >
  3827. <div style="width: calc(100% - 30px);">
  3828. <el-tooltip
  3829. effect="light"
  3830. :content="index + 1 + '、' + item.askstitle"
  3831. placement="top"
  3832. popper-class="text_tooltip"
  3833. >
  3834. <div
  3835. style="
  3836. width: calc(100% - 130px);
  3837. display: block;
  3838. white-space: nowrap;
  3839. overflow: hidden;
  3840. text-overflow: ellipsis;
  3841. word-break: break-word;
  3842. cursor: pointer;
  3843. "
  3844. >
  3845. {{ index + 1 + "、" + item.askstitle }}
  3846. </div>
  3847. </el-tooltip>
  3848. </div>
  3849. <div class="right_box_xuan">
  3850. <span>正确率</span>
  3851. <span>{{
  3852. (checkJson[toolIndex][index].right
  3853. ? checkJson[toolIndex][index].right
  3854. : 0) + "%"
  3855. }}</span>
  3856. </div>
  3857. </div>
  3858. </div>
  3859. <div
  3860. class="xuan_right_box"
  3861. style="background: unset; padding: 0 10px"
  3862. v-if="
  3863. tType &&
  3864. ((tType == 2 && sIsOpen == true) ||
  3865. tType == 1 ||
  3866. tType == 4) &&
  3867. tool.tool.indexOf(4) != -1
  3868. "
  3869. >
  3870. <AskStatic
  3871. v-if="
  3872. worksStudent.length &&
  3873. worksStudent[toolIndex].length > 0
  3874. "
  3875. :askJSON="tool"
  3876. :checkJson="checkJson[toolIndex]"
  3877. ></AskStatic>
  3878. </div>
  3879. <div
  3880. v-if="
  3881. tType &&
  3882. ((tType == 2 && sIsOpen == true) ||
  3883. tType == 1 ||
  3884. tType == 4) &&
  3885. tool.tool.indexOf(4) != -1
  3886. "
  3887. class="worksBox"
  3888. >
  3889. <div
  3890. class="zuoyeYulan"
  3891. v-if="
  3892. worksStudent.length &&
  3893. worksStudent[toolIndex].length > 0
  3894. "
  3895. >
  3896. <div class="worksTop">
  3897. <div>作业预览</div>
  3898. <div
  3899. class="corOpen"
  3900. @click="contract(toolIndex)"
  3901. v-if="
  3902. (isCloseList[toolIndex].isCloseBoolean) &&
  3903. isCloseList[toolIndex].isClose == 0
  3904. "
  3905. >
  3906. 折叠
  3907. </div>
  3908. <div
  3909. class="corOpen"
  3910. @click="contract(toolIndex)"
  3911. v-if="isCloseList[toolIndex].isClose == 1"
  3912. >
  3913. 展开
  3914. </div>
  3915. </div>
  3916. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  3917. </div>
  3918. <div>
  3919. <div
  3920. :id="'tool-' + toolIndex"
  3921. :style="{
  3922. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  3923. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  3924. }"
  3925. class="worksDetailBox"
  3926. v-if="
  3927. worksStudent.length &&
  3928. worksStudent[toolIndex].length > 0
  3929. "
  3930. >
  3931. <div
  3932. v-for="(w, wIndex) in worksStudent[toolIndex]"
  3933. :key="wIndex"
  3934. class="isWorksName2"
  3935. @click="
  3936. openTools(4, toolIndex, taskCount, w.works, w.sName)
  3937. "
  3938. >
  3939. {{ w.sName }}
  3940. <img
  3941. class="deleteImg deleteImg2"
  3942. src="../../assets/deleteworks.png"
  3943. v-if="
  3944. w.userid == userid || tType == 1 || tType == 4
  3945. "
  3946. @click.stop="deleteWorks(w.wid)"
  3947. alt
  3948. />
  3949. </div>
  3950. <!-- <div class="works" style="
  3951. width: 200px;
  3952. height: 140px;
  3953. border-radius: 10px;
  3954. box-shadow: 0 0 6px 1px #dfdada;
  3955. overflow: hidden;
  3956. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex">
  3957. <div class="workImg">
  3958. <img src="../../assets/icon/works/noImg.png" @click="
  3959. openTools(
  3960. 4,
  3961. toolIndex,
  3962. taskCount,
  3963. w.works,
  3964. w.sName
  3965. )
  3966. " alt />
  3967. </div>
  3968. <div class="worksName">
  3969. <div>{{ w.sName }}</div>
  3970. <div>{{ w.time }}</div>
  3971. </div>
  3972. </div> -->
  3973. </div>
  3974. </div>
  3975. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  3976. 未提交
  3977. </div>
  3978. <div
  3979. class="noWorksS"
  3980. v-if="noWorksS && noWorksS[toolIndex].length"
  3981. >
  3982. <div
  3983. v-for="(s, sIndex) in noWorksS[toolIndex]"
  3984. :key="sIndex"
  3985. class="noWorksName"
  3986. @click="teacherWorkSubmit(4, toolIndex, taskCount, s)"
  3987. >
  3988. <el-tooltip effect="dark" :content="s.student" placement="top">
  3989. <span>{{ s.student }}</span>
  3990. </el-tooltip>
  3991. </div>
  3992. </div>
  3993. </div>
  3994. <div
  3995. v-if="
  3996. tType &&
  3997. ((tType == 2 && sIsOpen == true) ||
  3998. tType == 1 ||
  3999. tType == 4) &&
  4000. tool.tool.indexOf(45) != -1 &&
  4001. (tool.testJson.testJson[0].answer ||
  4002. tool.testJson.testJson[0].answer === 0) &&
  4003. checkJson[toolIndex].length
  4004. "
  4005. class="xuan_right_box"
  4006. >
  4007. <div
  4008. class="tool_right_box"
  4009. v-for="(item, index) in tool.testJson.testJson"
  4010. :key="index"
  4011. >
  4012. <div class="right_box_xuan" style="margin-right: 10px">
  4013. <span>正确率</span>
  4014. <span>{{
  4015. (checkJson[toolIndex][index].right
  4016. ? checkJson[toolIndex][index].right
  4017. : 0) + "%"
  4018. }}</span>
  4019. </div>
  4020. <div style="width: calc(100% - 30px);">
  4021. <el-tooltip
  4022. effect="light"
  4023. :content="index + 1 + '、' + item.teststitle"
  4024. placement="top"
  4025. popper-class="text_tooltip"
  4026. >
  4027. <div
  4028. style="
  4029. width: calc(100% - 130px);
  4030. display: block;
  4031. white-space: nowrap;
  4032. overflow: hidden;
  4033. text-overflow: ellipsis;
  4034. word-break: break-word;
  4035. cursor: pointer;
  4036. "
  4037. >
  4038. {{ index + 1 + "、" + item.teststitle }}
  4039. </div>
  4040. </el-tooltip>
  4041. </div>
  4042. </div>
  4043. </div>
  4044. <div
  4045. class="xuan_right_box"
  4046. style="background: unset; padding: 0 10px; width: 91.5%"
  4047. v-if="
  4048. tType &&
  4049. ((tType == 2 && sIsOpen == true) ||
  4050. tType == 1 ||
  4051. tType == 4) &&
  4052. tool.tool.indexOf(45) != -1
  4053. "
  4054. >
  4055. <AskStatic2
  4056. v-if="
  4057. worksStudent.length &&
  4058. worksStudent[toolIndex].length > 0
  4059. "
  4060. :askJSON="tool"
  4061. :checkJson="checkJson[toolIndex]"
  4062. ></AskStatic2>
  4063. </div>
  4064. <div
  4065. v-if="
  4066. tType &&
  4067. ((tType == 2 && sIsOpen == true) ||
  4068. tType == 1 ||
  4069. tType == 4) &&
  4070. tool.tool.indexOf(45) != -1
  4071. "
  4072. class="worksBox"
  4073. >
  4074. <div
  4075. class="zuoyeYulan"
  4076. v-if="
  4077. worksStudent.length &&
  4078. worksStudent[toolIndex].length > 0
  4079. "
  4080. >
  4081. <div class="worksTop">
  4082. <div>作业预览</div>
  4083. <div
  4084. class="corOpen"
  4085. @click="contract(toolIndex)"
  4086. v-if="
  4087. (isCloseList[toolIndex].isCloseBoolean) &&
  4088. isCloseList[toolIndex].isClose == 0
  4089. "
  4090. >
  4091. 折叠
  4092. </div>
  4093. <div
  4094. class="corOpen"
  4095. @click="contract(toolIndex)"
  4096. v-if="isCloseList[toolIndex].isClose == 1"
  4097. >
  4098. 展开
  4099. </div>
  4100. </div>
  4101. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  4102. </div>
  4103. <div>
  4104. <div
  4105. :id="'tool-' + toolIndex"
  4106. :style="{
  4107. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  4108. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  4109. }"
  4110. class="worksDetailBox"
  4111. v-if="
  4112. worksStudent.length &&
  4113. worksStudent[toolIndex].length > 0
  4114. "
  4115. >
  4116. <div
  4117. v-for="(w, wIndex) in worksStudent[toolIndex]"
  4118. :key="wIndex"
  4119. class="isWorksName2"
  4120. @click="
  4121. openTools(
  4122. 45,
  4123. toolIndex,
  4124. taskCount,
  4125. w.works,
  4126. w.sName
  4127. )
  4128. "
  4129. >
  4130. {{ w.sName }}
  4131. <img
  4132. class="deleteImg deleteImg2"
  4133. src="../../assets/deleteworks.png"
  4134. v-if="
  4135. w.userid == userid || tType == 1 || tType == 4
  4136. "
  4137. @click.stop="deleteWorks(w.wid)"
  4138. alt
  4139. />
  4140. </div>
  4141. </div>
  4142. </div>
  4143. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  4144. 未提交
  4145. </div>
  4146. <div
  4147. class="noWorksS"
  4148. v-if="noWorksS && noWorksS[toolIndex].length"
  4149. >
  4150. <div
  4151. v-for="(s, sIndex) in noWorksS[toolIndex]"
  4152. :key="sIndex"
  4153. class="noWorksName"
  4154. @click="teacherWorkSubmit(45, toolIndex, taskCount, s)"
  4155. >
  4156. <el-tooltip effect="dark" :content="s.student" placement="top">
  4157. <span>{{ s.student }}</span>
  4158. </el-tooltip>
  4159. </div>
  4160. </div>
  4161. </div>
  4162. <div
  4163. v-if="
  4164. tType &&
  4165. ((tType == 2 && sIsOpen == true) ||
  4166. tType == 1 ||
  4167. tType == 4) &&
  4168. tool.tool.indexOf(69) != -1
  4169. "
  4170. class="worksBox"
  4171. >
  4172. <div
  4173. class="zuoyeYulan"
  4174. v-if="
  4175. worksStudent.length &&
  4176. worksStudent[toolIndex].length > 0
  4177. "
  4178. >
  4179. <div class="worksTop">
  4180. <div>作业预览</div>
  4181. <div
  4182. class="corOpen"
  4183. @click="contract(toolIndex)"
  4184. v-if="
  4185. (isCloseList[toolIndex].isCloseBoolean) &&
  4186. isCloseList[toolIndex].isClose == 0
  4187. "
  4188. >
  4189. 折叠
  4190. </div>
  4191. <div
  4192. class="corOpen"
  4193. @click="contract(toolIndex)"
  4194. v-if="isCloseList[toolIndex].isClose == 1"
  4195. >
  4196. 展开
  4197. </div>
  4198. </div>
  4199. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  4200. </div>
  4201. <div>
  4202. <div
  4203. :id="'tool-' + toolIndex"
  4204. :style="{
  4205. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  4206. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  4207. }"
  4208. class="worksDetailBox"
  4209. v-if="
  4210. worksStudent.length &&
  4211. worksStudent[toolIndex].length > 0
  4212. "
  4213. >
  4214. <div
  4215. v-for="(w, wIndex) in worksStudent[toolIndex]"
  4216. :key="wIndex"
  4217. class="isWorksName2"
  4218. style="width: 160px;height: 65px;line-height: 65px;"
  4219. @click="
  4220. openTools(
  4221. 69,
  4222. toolIndex,
  4223. taskCount,
  4224. w.works,
  4225. w.sName,
  4226. w.wid
  4227. )
  4228. "
  4229. >
  4230. {{ w.sName }}
  4231. <img
  4232. class="deleteImg1"
  4233. src="../../assets/evaEnglish.png"
  4234. @click.stop="openEnglishEva(w.wid,toolIndex)"
  4235. alt
  4236. v-if="(courseDetail && (courseDetail.userid == userid || (courseDetail.course_teacher && courseDetail.course_teacher.indexOf(userid) != -1))) || (w.aiCode || w.teacherCode)"
  4237. />
  4238. <img
  4239. class="deleteImg deleteImg2"
  4240. src="../../assets/deleteworks.png"
  4241. v-if="
  4242. w.userid == userid || tType == 1 || tType == 4
  4243. "
  4244. @click.stop="deleteWorks(w.wid)"
  4245. alt
  4246. />
  4247. </div>
  4248. </div>
  4249. </div>
  4250. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  4251. 未提交
  4252. </div>
  4253. <div
  4254. class="noWorksS"
  4255. v-if="noWorksS && noWorksS[toolIndex].length"
  4256. >
  4257. <div
  4258. v-for="(s, sIndex) in noWorksS[toolIndex]"
  4259. :key="sIndex"
  4260. class="noWorksName"
  4261. @click="teacherWorkSubmit(69, toolIndex, taskCount, s)"
  4262. >
  4263. <el-tooltip effect="dark" :content="s.student" placement="top">
  4264. <span>{{ s.student }}</span>
  4265. </el-tooltip>
  4266. </div>
  4267. </div>
  4268. </div>
  4269. <div
  4270. v-if="
  4271. tType &&
  4272. ((tType == 2 && sIsOpen == true) ||
  4273. tType == 1 ||
  4274. tType == 4) &&
  4275. tool.tool.indexOf(15) != -1
  4276. "
  4277. class="worksBox"
  4278. >
  4279. <div
  4280. class="zuoyeYulan"
  4281. v-if="
  4282. (worksStudent.length &&
  4283. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  4284. "
  4285. >
  4286. <div class="worksTop">
  4287. <div>作业预览</div>
  4288. <div
  4289. class="corOpen"
  4290. @click="contract(toolIndex)"
  4291. v-if="
  4292. (isCloseList[toolIndex].isCloseBoolean) &&
  4293. isCloseList[toolIndex].isClose == 0
  4294. "
  4295. >
  4296. 折叠
  4297. </div>
  4298. <div
  4299. class="corOpen"
  4300. @click="contract(toolIndex)"
  4301. v-if="isCloseList[toolIndex].isClose == 1"
  4302. >
  4303. 展开
  4304. </div>
  4305. </div>
  4306. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  4307. </div>
  4308. <div
  4309. class="group_workBox"
  4310. v-for="(g, gindex) in courseGroup.group"
  4311. :key="gindex"
  4312. >
  4313. <div class="group_box">
  4314. <div class="group_title">
  4315. <el-tooltip
  4316. class="item"
  4317. effect="light"
  4318. :content="g.name"
  4319. placement="top"
  4320. >
  4321. <div class="group_name">{{ g.name }}</div>
  4322. </el-tooltip>
  4323. </div>
  4324. <div
  4325. class="group_work"
  4326. v-if="
  4327. g.works &&
  4328. g.works.length &&
  4329. g.works[toolIndex].length
  4330. "
  4331. >
  4332. <div
  4333. class="works"
  4334. v-for="(w, wIndex) in g.works[toolIndex]"
  4335. :key="wIndex"
  4336. >
  4337. <div
  4338. class="workImg"
  4339. style="
  4340. border-radius: 15px;
  4341. box-shadow: 0px 0px 5px 5px #eee;
  4342. "
  4343. >
  4344. <div
  4345. class="answerBg"
  4346. style="border-radius: 15px 15px 0 0"
  4347. @click="
  4348. commentOther(w, toolIndex, wIndex, null, g.id)
  4349. "
  4350. >
  4351. <div class="answerContent">
  4352. {{ JSON.parse(w.works)[0].answer }}
  4353. </div>
  4354. <div
  4355. class="answerScore"
  4356. v-if="w.score"
  4357. @click.stop="openScore(w)"
  4358. :class="{
  4359. rightW:
  4360. w.userid == userid ||
  4361. tType == 1 ||
  4362. tType == 4,
  4363. }"
  4364. >
  4365. {{ JSON.parse(w.score).wScore }}分
  4366. </div>
  4367. <div
  4368. class="answerScore"
  4369. @click.stop="openScore(w)"
  4370. v-else-if="courseDetail.userid == userid"
  4371. :class="{
  4372. rightW:
  4373. w.userid == userid ||
  4374. tType == 1 ||
  4375. tType == 4,
  4376. }"
  4377. >
  4378. 评分
  4379. </div>
  4380. <img
  4381. class="deleteImg"
  4382. src="../../assets/deleteworks.png"
  4383. v-if="
  4384. w.userid == userid ||
  4385. tType == 1 ||
  4386. tType == 4
  4387. "
  4388. @click.stop="deleteWorks(w.wid)"
  4389. alt
  4390. />
  4391. </div>
  4392. <div class="comment">
  4393. <div class="worksName">
  4394. <div>{{ w.sName }}</div>
  4395. </div>
  4396. <div class="commentList">
  4397. <div
  4398. class="commentImg"
  4399. @click="
  4400. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  4401. "
  4402. >
  4403. <img
  4404. :src="w.isLikes == true ? likes : noLikes"
  4405. alt=""
  4406. />
  4407. </div>
  4408. <div>{{ w.likesCount }}</div>
  4409. </div>
  4410. <div
  4411. class="commentList"
  4412. style="margin-right: 15px"
  4413. >
  4414. <div
  4415. class="commentImg"
  4416. @click="
  4417. commentOther(
  4418. w,
  4419. toolIndex,
  4420. wIndex,
  4421. null,
  4422. g.id
  4423. )
  4424. "
  4425. >
  4426. <img
  4427. src="../../assets/icon/comment/comment.png"
  4428. alt=""
  4429. />
  4430. </div>
  4431. <div>{{ w.commentCount }}</div>
  4432. </div>
  4433. </div>
  4434. </div>
  4435. </div>
  4436. </div>
  4437. <div class="group_work" v-else>暂无提交作业</div>
  4438. </div>
  4439. </div>
  4440. <div
  4441. :id="'tool-' + toolIndex"
  4442. :style="{
  4443. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  4444. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  4445. }"
  4446. class="worksDetailBox"
  4447. v-if="
  4448. worksStudent.length &&
  4449. worksStudent[toolIndex].length > 0
  4450. "
  4451. >
  4452. <div
  4453. class="works"
  4454. v-for="(w, wIndex) in worksStudent[toolIndex]"
  4455. :key="wIndex"
  4456. >
  4457. <div
  4458. class="workImg"
  4459. style="
  4460. border-radius: 15px;
  4461. box-shadow: 0px 0px 5px 5px #eee;
  4462. "
  4463. >
  4464. <!-- <img
  4465. src="../../assets/icon/works/noImg.png"
  4466. @click="openTools(15, toolIndex, taskCount, w.works)"
  4467. alt=""
  4468. />-->
  4469. <div
  4470. class="answerBg"
  4471. style="border-radius: 15px 15px 0 0"
  4472. @click="commentOther(w, toolIndex, wIndex)"
  4473. >
  4474. <!-- <div>{{ w.sName }}</div> -->
  4475. <div class="answerContent">
  4476. {{ JSON.parse(w.works)[0].answer }}
  4477. </div>
  4478. <div
  4479. class="answerScore"
  4480. v-if="w.score"
  4481. @click.stop="openScore(w)"
  4482. :class="{
  4483. rightW:
  4484. w.userid == userid ||
  4485. tType == 1 ||
  4486. tType == 4,
  4487. }"
  4488. >
  4489. {{ JSON.parse(w.score).wScore }}分
  4490. </div>
  4491. <div
  4492. class="answerScore"
  4493. @click.stop="openScore(w)"
  4494. v-else-if="courseDetail.userid == userid"
  4495. :class="{
  4496. rightW:
  4497. w.userid == userid ||
  4498. tType == 1 ||
  4499. tType == 4,
  4500. }"
  4501. >
  4502. 评分
  4503. </div>
  4504. <img
  4505. class="deleteImg"
  4506. src="../../assets/deleteworks.png"
  4507. v-if="
  4508. w.userid == userid || tType == 1 || tType == 4
  4509. "
  4510. @click.stop="deleteWorks(w.wid)"
  4511. alt
  4512. />
  4513. </div>
  4514. <div class="comment">
  4515. <div class="worksName">
  4516. <div>{{ w.sName }}</div>
  4517. </div>
  4518. <div class="commentList">
  4519. <div
  4520. class="commentImg"
  4521. @click="
  4522. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  4523. "
  4524. >
  4525. <img
  4526. :src="w.isLikes == true ? likes : noLikes"
  4527. alt=""
  4528. />
  4529. </div>
  4530. <div>{{ w.likesCount }}</div>
  4531. </div>
  4532. <div class="commentList" style="margin-right: 15px">
  4533. <div
  4534. class="commentImg"
  4535. @click="commentOther(w, toolIndex, wIndex)"
  4536. >
  4537. <img
  4538. src="../../assets/icon/comment/comment.png"
  4539. alt=""
  4540. />
  4541. </div>
  4542. <div>{{ w.commentCount }}</div>
  4543. </div>
  4544. </div>
  4545. </div>
  4546. </div>
  4547. </div>
  4548. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  4549. 未提交
  4550. </div>
  4551. <div
  4552. class="noWorksS"
  4553. v-if="noWorksS && noWorksS[toolIndex].length"
  4554. >
  4555. <div
  4556. v-for="(s, sIndex) in noWorksS[toolIndex]"
  4557. :key="sIndex"
  4558. class="noWorksName"
  4559. @click="teacherWorkSubmit(15, toolIndex, taskCount, s)"
  4560. >
  4561. <el-tooltip effect="dark" :content="s.student" placement="top">
  4562. <span>{{ s.student }}</span>
  4563. </el-tooltip>
  4564. </div>
  4565. </div>
  4566. </div>
  4567. <div
  4568. v-if="
  4569. tType &&
  4570. ((tType == 2 && sIsOpen == true) ||
  4571. tType == 1 ||
  4572. tType == 4) &&
  4573. tool.tool.indexOf(1) != -1
  4574. "
  4575. class="worksBox"
  4576. >
  4577. <div
  4578. class="zuoyeYulan"
  4579. v-if="
  4580. (worksStudent.length &&
  4581. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  4582. "
  4583. >
  4584. <div class="worksTop">
  4585. <div>作业预览</div>
  4586. <div
  4587. class="corOpen"
  4588. @click="contract(toolIndex)"
  4589. v-if="
  4590. (isCloseList[toolIndex].isCloseBoolean) &&
  4591. isCloseList[toolIndex].isClose == 0
  4592. "
  4593. >
  4594. 折叠
  4595. </div>
  4596. <div
  4597. class="corOpen"
  4598. @click="contract(toolIndex)"
  4599. v-if="isCloseList[toolIndex].isClose == 1"
  4600. >
  4601. 展开
  4602. </div>
  4603. </div>
  4604. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  4605. </div>
  4606. <div
  4607. class="group_workBox"
  4608. v-for="(g, gindex) in courseGroup.group"
  4609. :key="gindex"
  4610. >
  4611. <div class="group_box">
  4612. <div class="group_title">
  4613. <el-tooltip
  4614. class="item"
  4615. effect="light"
  4616. :content="g.name"
  4617. placement="top"
  4618. >
  4619. <div class="group_name">{{ g.name }}</div>
  4620. </el-tooltip>
  4621. </div>
  4622. <div
  4623. class="group_work"
  4624. v-if="
  4625. g.works &&
  4626. g.works.length &&
  4627. g.works[toolIndex].length
  4628. "
  4629. >
  4630. <div
  4631. class="works"
  4632. style="
  4633. width: 200px;
  4634. height: 140px;
  4635. margin: 10px 10px 10px 0;
  4636. border-radius: 15px;
  4637. box-shadow: 0 0 6px 1px #dfdada;
  4638. "
  4639. v-for="(w, wIndex) in g.works[toolIndex]"
  4640. :key="wIndex"
  4641. :class="w.type == 1 ? 'isTypeOne' : ''"
  4642. >
  4643. <div class="workImg">
  4644. <img
  4645. :src="w.works"
  4646. @click="previewImg(w.works,w)"
  4647. alt
  4648. />
  4649. <div
  4650. class="answerScore"
  4651. v-if="w.score"
  4652. @click.stop="openScore(w)"
  4653. :class="{
  4654. rightW:
  4655. w.userid == userid ||
  4656. tType == 1 ||
  4657. tType == 4,
  4658. }"
  4659. >
  4660. {{ JSON.parse(w.score).wScore }}分
  4661. </div>
  4662. <div
  4663. class="answerScore"
  4664. @click.stop="openScore(w)"
  4665. v-else-if="courseDetail.userid == userid"
  4666. :class="{
  4667. rightW:
  4668. w.userid == userid ||
  4669. tType == 1 ||
  4670. tType == 4,
  4671. }"
  4672. >
  4673. 评分
  4674. </div>
  4675. <img
  4676. class="deleteImg"
  4677. src="../../assets/deleteworks.png"
  4678. v-if="
  4679. w.userid == userid || tType == 1 || tType == 4
  4680. "
  4681. @click.stop="deleteWorks(w.wid)"
  4682. alt
  4683. />
  4684. </div>
  4685. <div class="comment" style="min-width: 200px">
  4686. <div class="worksName">
  4687. <div>{{ w.sName }}</div>
  4688. </div>
  4689. <div class="commentList">
  4690. <div class="commentList">
  4691. <div
  4692. class="commentImg"
  4693. @click="
  4694. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  4695. "
  4696. >
  4697. <img
  4698. :src="w.isLikes == true ? likes : noLikes"
  4699. alt=""
  4700. />
  4701. </div>
  4702. <div>{{ w.likesCount }}</div>
  4703. </div>
  4704. <div
  4705. class="commentList"
  4706. style="margin-right: 15px"
  4707. >
  4708. <div
  4709. class="commentImg"
  4710. @click="
  4711. commentOther(
  4712. w,
  4713. toolIndex,
  4714. wIndex,
  4715. null,
  4716. g.id
  4717. )
  4718. "
  4719. >
  4720. <img
  4721. src="../../assets/icon/comment/comment.png"
  4722. alt=""
  4723. />
  4724. </div>
  4725. <div>{{ w.commentCount }}</div>
  4726. </div>
  4727. </div>
  4728. </div>
  4729. </div>
  4730. </div>
  4731. <div class="group_work" v-else>暂无提交作业</div>
  4732. </div>
  4733. </div>
  4734. <div
  4735. :id="'tool-' + toolIndex"
  4736. :style="{
  4737. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  4738. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  4739. }"
  4740. class="worksDetailBox"
  4741. v-if="
  4742. worksStudent.length &&
  4743. worksStudent[toolIndex].length > 0
  4744. "
  4745. >
  4746. <div
  4747. class="works"
  4748. style="
  4749. width: 200px;
  4750. height: 140px;
  4751. margin: 10px 10px 10px 0;
  4752. border-radius: 15px;
  4753. box-shadow: 0 0 6px 1px #dfdada;
  4754. "
  4755. v-for="(w, wIndex) in worksStudent[toolIndex]"
  4756. :key="wIndex"
  4757. >
  4758. <!-- @click="previewImg(w.works)" @click="commentOther(w, toolIndex, wIndex)"-->
  4759. <div class="workImg">
  4760. <img
  4761. :src="w.works"
  4762. @click="previewImg(w.works,w)"
  4763. alt
  4764. />
  4765. <div
  4766. class="answerScore"
  4767. v-if="w.score"
  4768. @click.stop="openScore(w)"
  4769. :class="{
  4770. rightW:
  4771. w.userid == userid || tType == 1 || tType == 4,
  4772. }"
  4773. >
  4774. {{ JSON.parse(w.score).wScore }}分
  4775. </div>
  4776. <div
  4777. class="answerScore"
  4778. @click.stop="openScore(w)"
  4779. v-else-if="courseDetail.userid == userid"
  4780. :class="{
  4781. rightW:
  4782. w.userid == userid || tType == 1 || tType == 4,
  4783. }"
  4784. >
  4785. 评分
  4786. </div>
  4787. <img
  4788. class="deleteImg"
  4789. src="../../assets/deleteworks.png"
  4790. v-if="
  4791. w.userid == userid || tType == 1 || tType == 4
  4792. "
  4793. @click.stop="deleteWorks(w.wid)"
  4794. alt
  4795. />
  4796. </div>
  4797. <div class="comment" style="min-width: 200px">
  4798. <div class="worksName">
  4799. <div>{{ w.sName }}</div>
  4800. </div>
  4801. <div class="commentList">
  4802. <div class="commentList">
  4803. <div
  4804. class="commentImg"
  4805. @click="
  4806. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  4807. "
  4808. >
  4809. <img
  4810. :src="w.isLikes == true ? likes : noLikes"
  4811. alt=""
  4812. />
  4813. </div>
  4814. <div>{{ w.likesCount }}</div>
  4815. </div>
  4816. <div class="commentList" style="margin-right: 15px">
  4817. <div
  4818. class="commentImg"
  4819. @click="commentOther(w, toolIndex, wIndex)"
  4820. >
  4821. <img
  4822. src="../../assets/icon/comment/comment.png"
  4823. alt=""
  4824. />
  4825. </div>
  4826. <div>{{ w.commentCount }}</div>
  4827. </div>
  4828. </div>
  4829. </div>
  4830. </div>
  4831. </div>
  4832. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  4833. 未提交
  4834. </div>
  4835. <div
  4836. class="noWorksS"
  4837. v-if="noWorksS && noWorksS[toolIndex].length"
  4838. >
  4839. <div
  4840. v-for="(s, sIndex) in noWorksS[toolIndex]"
  4841. :key="sIndex"
  4842. class="noWorksName"
  4843. @click="teacherWorkSubmit(1, toolIndex, taskCount, s)"
  4844. >
  4845. <el-tooltip effect="dark" :content="s.student" placement="top">
  4846. <span>{{ s.student }}</span>
  4847. </el-tooltip>
  4848. </div>
  4849. </div>
  4850. </div>
  4851. <div
  4852. v-if="
  4853. tType &&
  4854. ((tType == 2 && sIsOpen == true) ||
  4855. tType == 1 ||
  4856. tType == 4) &&
  4857. tool.tool.indexOf(3) != -1
  4858. "
  4859. class="worksBox"
  4860. >
  4861. <div
  4862. class="zuoyeYulan"
  4863. v-if="
  4864. (worksStudent.length &&
  4865. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  4866. "
  4867. >
  4868. <div class="worksTop">
  4869. <div>作业预览</div>
  4870. <div
  4871. class="corOpen"
  4872. @click="contract(toolIndex)"
  4873. v-if="
  4874. (isCloseList[toolIndex].isCloseBoolean) &&
  4875. isCloseList[toolIndex].isClose == 0
  4876. "
  4877. >
  4878. 折叠
  4879. </div>
  4880. <div
  4881. class="corOpen"
  4882. @click="contract(toolIndex)"
  4883. v-if="isCloseList[toolIndex].isClose == 1"
  4884. >
  4885. 展开
  4886. </div>
  4887. </div>
  4888. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  4889. </div>
  4890. <div
  4891. class="group_workBox"
  4892. v-for="(g, gindex) in courseGroup.group"
  4893. :key="gindex"
  4894. >
  4895. <div class="group_box">
  4896. <div class="group_title">
  4897. <el-tooltip
  4898. class="item"
  4899. effect="light"
  4900. :content="g.name"
  4901. placement="top"
  4902. >
  4903. <div class="group_name">{{ g.name }}</div>
  4904. </el-tooltip>
  4905. </div>
  4906. <div
  4907. class="group_work"
  4908. v-if="
  4909. g.works &&
  4910. g.works.length &&
  4911. g.works[toolIndex].length
  4912. "
  4913. >
  4914. <div
  4915. class="works"
  4916. style="
  4917. width: 200px;
  4918. height: 140px;
  4919. margin: 10px 10px 10px 0;
  4920. border-radius: 15px;
  4921. box-shadow: 0 0 6px 1px #dfdada;
  4922. "
  4923. v-for="(w, wIndex) in g.works[toolIndex]"
  4924. :key="wIndex"
  4925. :class="w.type == 1 ? 'isTypeOne' : ''"
  4926. >
  4927. <div class="workImg">
  4928. <img
  4929. :src="w.works"
  4930. @click="previewImg(w.works,w)"
  4931. alt
  4932. />
  4933. <div
  4934. class="answerScore"
  4935. v-if="w.score"
  4936. @click.stop="openScore(w)"
  4937. :class="{
  4938. rightW:
  4939. w.userid == userid ||
  4940. tType == 1 ||
  4941. tType == 4,
  4942. }"
  4943. >
  4944. {{ JSON.parse(w.score).wScore }}分
  4945. </div>
  4946. <div
  4947. class="answerScore"
  4948. @click.stop="openScore(w)"
  4949. v-else-if="courseDetail.userid == userid"
  4950. :class="{
  4951. rightW:
  4952. w.userid == userid ||
  4953. tType == 1 ||
  4954. tType == 4,
  4955. }"
  4956. >
  4957. 评分
  4958. </div>
  4959. <img
  4960. class="deleteImg"
  4961. src="../../assets/deleteworks.png"
  4962. v-if="
  4963. w.userid == userid || tType == 1 || tType == 4
  4964. "
  4965. @click.stop="deleteWorks(w.wid)"
  4966. alt
  4967. />
  4968. </div>
  4969. <div class="comment" style="min-width: 200px">
  4970. <div class="worksName">
  4971. <div>{{ w.sName }}</div>
  4972. </div>
  4973. <div class="commentList">
  4974. <div class="commentList">
  4975. <div
  4976. class="commentImg"
  4977. @click="
  4978. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  4979. "
  4980. >
  4981. <img
  4982. :src="w.isLikes == true ? likes : noLikes"
  4983. alt=""
  4984. />
  4985. </div>
  4986. <div>{{ w.likesCount }}</div>
  4987. </div>
  4988. <div
  4989. class="commentList"
  4990. style="margin-right: 15px"
  4991. >
  4992. <div
  4993. class="commentImg"
  4994. @click="
  4995. commentOther(
  4996. w,
  4997. toolIndex,
  4998. wIndex,
  4999. null,
  5000. g.id
  5001. )
  5002. "
  5003. >
  5004. <img
  5005. src="../../assets/icon/comment/comment.png"
  5006. alt=""
  5007. />
  5008. </div>
  5009. <div>{{ w.commentCount }}</div>
  5010. </div>
  5011. </div>
  5012. </div>
  5013. </div>
  5014. </div>
  5015. <div class="group_work" v-else>暂无提交作业</div>
  5016. </div>
  5017. </div>
  5018. <div
  5019. :id="'tool-' + toolIndex"
  5020. :style="{
  5021. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  5022. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  5023. }"
  5024. class="worksDetailBox"
  5025. v-if="
  5026. worksStudent.length &&
  5027. worksStudent[toolIndex].length > 0
  5028. "
  5029. >
  5030. <div
  5031. class="works"
  5032. style="
  5033. width: 200px;
  5034. height: 140px;
  5035. margin: 10px 10px 10px 0;
  5036. border-radius: 15px;
  5037. box-shadow: 0 0 6px 1px #dfdada;
  5038. "
  5039. v-for="(w, wIndex) in worksStudent[toolIndex]"
  5040. :key="wIndex"
  5041. >
  5042. <!-- @click="previewImg(w.works)" -->
  5043. <div class="workImg">
  5044. <img
  5045. :src="w.works"
  5046. @click="previewImg(w.works,w)"
  5047. alt
  5048. />
  5049. <div
  5050. class="answerScore"
  5051. v-if="w.score"
  5052. @click.stop="openScore(w)"
  5053. :class="{
  5054. rightW:
  5055. w.userid == userid || tType == 1 || tType == 4,
  5056. }"
  5057. >
  5058. {{ JSON.parse(w.score).wScore }}分
  5059. </div>
  5060. <div
  5061. class="answerScore"
  5062. @click.stop="openScore(w)"
  5063. v-else-if="courseDetail.userid == userid"
  5064. :class="{
  5065. rightW:
  5066. w.userid == userid || tType == 1 || tType == 4,
  5067. }"
  5068. >
  5069. 评分
  5070. </div>
  5071. <img
  5072. class="deleteImg"
  5073. src="../../assets/deleteworks.png"
  5074. v-if="
  5075. w.userid == userid || tType == 1 || tType == 4
  5076. "
  5077. @click.stop="deleteWorks(w.wid)"
  5078. alt
  5079. />
  5080. </div>
  5081. <div class="comment" style="min-width: 200px">
  5082. <div class="worksName">
  5083. <div>{{ w.sName }}</div>
  5084. </div>
  5085. <div class="commentList">
  5086. <div class="commentList">
  5087. <div
  5088. class="commentImg"
  5089. @click="
  5090. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5091. "
  5092. >
  5093. <img
  5094. :src="w.isLikes == true ? likes : noLikes"
  5095. alt=""
  5096. />
  5097. </div>
  5098. <div>{{ w.likesCount }}</div>
  5099. </div>
  5100. <div class="commentList" style="margin-right: 15px">
  5101. <div
  5102. class="commentImg"
  5103. @click="commentOther(w, toolIndex, wIndex)"
  5104. >
  5105. <img
  5106. src="../../assets/icon/comment/comment.png"
  5107. alt=""
  5108. />
  5109. </div>
  5110. <div>{{ w.commentCount }}</div>
  5111. </div>
  5112. </div>
  5113. </div>
  5114. </div>
  5115. </div>
  5116. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  5117. 未提交
  5118. </div>
  5119. <div
  5120. class="noWorksS"
  5121. v-if="noWorksS && noWorksS[toolIndex].length"
  5122. >
  5123. <div
  5124. v-for="(s, sIndex) in noWorksS[toolIndex]"
  5125. :key="sIndex"
  5126. class="noWorksName"
  5127. @click="teacherWorkSubmit(3, toolIndex, taskCount, s)"
  5128. >
  5129. <el-tooltip effect="dark" :content="s.student" placement="top">
  5130. <span>{{ s.student }}</span>
  5131. </el-tooltip>
  5132. </div>
  5133. </div>
  5134. </div>
  5135. <div
  5136. v-if="
  5137. tType &&
  5138. ((tType == 2 && sIsOpen == true) ||
  5139. tType == 1 ||
  5140. tType == 4) &&
  5141. tool.tool.indexOf(6) != -1
  5142. "
  5143. class="worksBox"
  5144. >
  5145. <div
  5146. class="zuoyeYulan"
  5147. v-if="
  5148. (worksStudent.length &&
  5149. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  5150. "
  5151. >
  5152. <div class="worksTop">
  5153. <div>作业预览</div>
  5154. <div
  5155. class="corOpen"
  5156. @click="contract(toolIndex)"
  5157. v-if="
  5158. (isCloseList[toolIndex].isCloseBoolean) &&
  5159. isCloseList[toolIndex].isClose == 0
  5160. "
  5161. >
  5162. 折叠
  5163. </div>
  5164. <div
  5165. class="corOpen"
  5166. @click="contract(toolIndex)"
  5167. v-if="isCloseList[toolIndex].isClose == 1"
  5168. >
  5169. 展开
  5170. </div>
  5171. </div>
  5172. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  5173. </div>
  5174. <div
  5175. class="group_workBox"
  5176. v-for="(g, gindex) in courseGroup.group"
  5177. :key="gindex"
  5178. >
  5179. <div class="group_box">
  5180. <div class="group_title">
  5181. <el-tooltip
  5182. class="item"
  5183. effect="light"
  5184. :content="g.name"
  5185. placement="top"
  5186. >
  5187. <div class="group_name">{{ g.name }}</div>
  5188. </el-tooltip>
  5189. </div>
  5190. <div
  5191. class="group_work"
  5192. v-if="
  5193. g.works &&
  5194. g.works.length &&
  5195. g.works[toolIndex].length
  5196. "
  5197. >
  5198. <div
  5199. class="works"
  5200. style="
  5201. width: 200px;
  5202. height: 140px;
  5203. margin: 10px 10px 10px 0;
  5204. border-radius: 15px;
  5205. box-shadow: 0 0 6px 1px #dfdada;
  5206. "
  5207. v-for="(w, wIndex) in g.works[toolIndex]"
  5208. :key="wIndex"
  5209. :class="w.type == 1 ? 'isTypeOne' : ''"
  5210. >
  5211. <div class="workImg">
  5212. <img
  5213. :src="w.works"
  5214. @click="previewImg(w.works,w)"
  5215. alt
  5216. />
  5217. <div
  5218. class="answerScore"
  5219. v-if="w.score"
  5220. @click.stop="openScore(w)"
  5221. :class="{
  5222. rightW:
  5223. w.userid == userid ||
  5224. tType == 1 ||
  5225. tType == 4,
  5226. }"
  5227. >
  5228. {{ JSON.parse(w.score).wScore }}分
  5229. </div>
  5230. <div
  5231. class="answerScore"
  5232. @click.stop="openScore(w)"
  5233. v-else-if="courseDetail.userid == userid"
  5234. :class="{
  5235. rightW:
  5236. w.userid == userid ||
  5237. tType == 1 ||
  5238. tType == 4,
  5239. }"
  5240. >
  5241. 评分
  5242. </div>
  5243. <img
  5244. class="deleteImg"
  5245. src="../../assets/deleteworks.png"
  5246. v-if="
  5247. w.userid == userid || tType == 1 || tType == 4
  5248. "
  5249. @click.stop="deleteWorks(w.wid)"
  5250. alt
  5251. />
  5252. </div>
  5253. <div class="comment" style="min-width: 200px">
  5254. <div class="worksName">
  5255. <div>{{ w.sName }}</div>
  5256. </div>
  5257. <div class="commentList">
  5258. <div class="commentList">
  5259. <div
  5260. class="commentImg"
  5261. @click="
  5262. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5263. "
  5264. >
  5265. <img
  5266. :src="w.isLikes == true ? likes : noLikes"
  5267. alt=""
  5268. />
  5269. </div>
  5270. <div>{{ w.likesCount }}</div>
  5271. </div>
  5272. <div
  5273. class="commentList"
  5274. style="margin-right: 15px"
  5275. >
  5276. <div
  5277. class="commentImg"
  5278. @click="
  5279. commentOther(
  5280. w,
  5281. toolIndex,
  5282. wIndex,
  5283. null,
  5284. g.id
  5285. )
  5286. "
  5287. >
  5288. <img
  5289. src="../../assets/icon/comment/comment.png"
  5290. alt=""
  5291. />
  5292. </div>
  5293. <div>{{ w.commentCount }}</div>
  5294. </div>
  5295. </div>
  5296. </div>
  5297. </div>
  5298. </div>
  5299. <div class="group_work" v-else>暂无提交作业</div>
  5300. </div>
  5301. </div>
  5302. <div
  5303. :id="'tool-' + toolIndex"
  5304. :style="{
  5305. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  5306. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  5307. }"
  5308. class="worksDetailBox"
  5309. v-if="
  5310. worksStudent.length &&
  5311. worksStudent[toolIndex].length > 0
  5312. "
  5313. >
  5314. <div
  5315. class="works"
  5316. style="
  5317. width: 200px;
  5318. height: 140px;
  5319. margin: 10px 10px 10px 0;
  5320. border-radius: 15px;
  5321. box-shadow: 0 0 6px 1px #dfdada;
  5322. "
  5323. v-for="(w, wIndex) in worksStudent[toolIndex]"
  5324. :key="wIndex"
  5325. >
  5326. <!-- @click="previewImg(w.works)" -->
  5327. <div class="workImg">
  5328. <img
  5329. :src="w.works"
  5330. @click="previewImg(w.works,w)"
  5331. alt
  5332. />
  5333. <div
  5334. class="answerScore"
  5335. v-if="w.score"
  5336. @click.stop="openScore(w)"
  5337. :class="{
  5338. rightW:
  5339. w.userid == userid || tType == 1 || tType == 4,
  5340. }"
  5341. >
  5342. {{ JSON.parse(w.score).wScore }}分
  5343. </div>
  5344. <div
  5345. class="answerScore"
  5346. @click.stop="openScore(w)"
  5347. v-else-if="courseDetail.userid == userid"
  5348. :class="{
  5349. rightW:
  5350. w.userid == userid || tType == 1 || tType == 4,
  5351. }"
  5352. >
  5353. 评分
  5354. </div>
  5355. <img
  5356. class="deleteImg"
  5357. src="../../assets/deleteworks.png"
  5358. v-if="
  5359. w.userid == userid || tType == 1 || tType == 4
  5360. "
  5361. @click.stop="deleteWorks(w.wid)"
  5362. alt
  5363. />
  5364. </div>
  5365. <div class="comment" style="min-width: 200px">
  5366. <div class="worksName">
  5367. <div>{{ w.sName }}</div>
  5368. </div>
  5369. <div class="commentList">
  5370. <div class="commentList">
  5371. <div
  5372. class="commentImg"
  5373. @click="
  5374. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5375. "
  5376. >
  5377. <img
  5378. :src="w.isLikes == true ? likes : noLikes"
  5379. alt=""
  5380. />
  5381. </div>
  5382. <div>{{ w.likesCount }}</div>
  5383. </div>
  5384. <div class="commentList" style="margin-right: 15px">
  5385. <div
  5386. class="commentImg"
  5387. @click="commentOther(w, toolIndex, wIndex)"
  5388. >
  5389. <img
  5390. src="../../assets/icon/comment/comment.png"
  5391. alt=""
  5392. />
  5393. </div>
  5394. <div>{{ w.commentCount }}</div>
  5395. </div>
  5396. </div>
  5397. </div>
  5398. </div>
  5399. </div>
  5400. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  5401. 未提交
  5402. </div>
  5403. <div
  5404. class="noWorksS"
  5405. v-if="noWorksS && noWorksS[toolIndex].length"
  5406. >
  5407. <div
  5408. v-for="(s, sIndex) in noWorksS[toolIndex]"
  5409. :key="sIndex"
  5410. class="noWorksName"
  5411. >
  5412. <el-tooltip effect="dark" :content="s.student" placement="top">
  5413. <span>{{ s.student }}</span>
  5414. </el-tooltip>
  5415. </div>
  5416. </div>
  5417. </div>
  5418. <div
  5419. v-if="
  5420. tType &&
  5421. ((tType == 2 && sIsOpen == true) ||
  5422. tType == 1 ||
  5423. tType == 4) &&
  5424. tool.tool.indexOf(7) != -1
  5425. "
  5426. class="worksBox"
  5427. >
  5428. <div
  5429. class="zuoyeYulan"
  5430. v-if="
  5431. (worksStudent.length &&
  5432. worksStudent[toolIndex].length > 0) || (courseGroup.group && courseGroup.group.length)
  5433. "
  5434. >
  5435. <div class="worksTop">
  5436. <div>作业预览</div>
  5437. <div
  5438. class="corOpen"
  5439. @click="contract(toolIndex)"
  5440. v-if="
  5441. (isCloseList[toolIndex].isCloseBoolean) &&
  5442. isCloseList[toolIndex].isClose == 0
  5443. "
  5444. >
  5445. 折叠
  5446. </div>
  5447. <div
  5448. class="corOpen"
  5449. @click="contract(toolIndex)"
  5450. v-if="isCloseList[toolIndex].isClose == 1"
  5451. >
  5452. 展开
  5453. </div>
  5454. </div>
  5455. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  5456. </div>
  5457. <div
  5458. class="group_workBox"
  5459. v-for="(g, gindex) in courseGroup.group"
  5460. :key="gindex"
  5461. >
  5462. <div class="group_box">
  5463. <div class="group_title">
  5464. <el-tooltip
  5465. class="item"
  5466. effect="light"
  5467. :content="g.name"
  5468. placement="top"
  5469. >
  5470. <div class="group_name">{{ g.name }}</div>
  5471. </el-tooltip>
  5472. </div>
  5473. <div
  5474. class="group_work"
  5475. v-if="
  5476. g.works &&
  5477. g.works.length &&
  5478. g.works[toolIndex].length
  5479. "
  5480. >
  5481. <div
  5482. class="works"
  5483. style="
  5484. width: 200px;
  5485. height: 140px;
  5486. margin: 10px 10px 10px 0;
  5487. border-radius: 15px;
  5488. box-shadow: 0 0 6px 1px #dfdada;
  5489. "
  5490. v-for="(w, wIndex) in g.works[toolIndex]"
  5491. :key="wIndex"
  5492. :class="w.type == 1 ? 'isTypeOne' : ''"
  5493. >
  5494. <div class="workImg">
  5495. <img
  5496. :src="w.works"
  5497. @click="previewImg(w.works,w)"
  5498. alt
  5499. />
  5500. <div
  5501. class="answerScore"
  5502. v-if="w.score"
  5503. @click.stop="openScore(w)"
  5504. :class="{
  5505. rightW:
  5506. w.userid == userid ||
  5507. tType == 1 ||
  5508. tType == 4,
  5509. }"
  5510. >
  5511. {{ JSON.parse(w.score).wScore }}分
  5512. </div>
  5513. <div
  5514. class="answerScore"
  5515. @click.stop="openScore(w)"
  5516. v-else-if="courseDetail.userid == userid"
  5517. :class="{
  5518. rightW:
  5519. w.userid == userid ||
  5520. tType == 1 ||
  5521. tType == 4,
  5522. }"
  5523. >
  5524. 评分
  5525. </div>
  5526. <img
  5527. class="deleteImg"
  5528. src="../../assets/deleteworks.png"
  5529. v-if="
  5530. w.userid == userid || tType == 1 || tType == 4
  5531. "
  5532. @click.stop="deleteWorks(w.wid)"
  5533. alt
  5534. />
  5535. </div>
  5536. <div class="comment" style="min-width: 200px">
  5537. <div class="worksName">
  5538. <div>{{ w.sName }}</div>
  5539. </div>
  5540. <div class="commentList">
  5541. <div class="commentList">
  5542. <div
  5543. class="commentImg"
  5544. @click="
  5545. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5546. "
  5547. >
  5548. <img
  5549. :src="w.isLikes == true ? likes : noLikes"
  5550. alt=""
  5551. />
  5552. </div>
  5553. <div>{{ w.likesCount }}</div>
  5554. </div>
  5555. <div
  5556. class="commentList"
  5557. style="margin-right: 15px"
  5558. >
  5559. <div
  5560. class="commentImg"
  5561. @click="
  5562. commentOther(
  5563. w,
  5564. toolIndex,
  5565. wIndex,
  5566. null,
  5567. g.id
  5568. )
  5569. "
  5570. >
  5571. <img
  5572. src="../../assets/icon/comment/comment.png"
  5573. alt=""
  5574. />
  5575. </div>
  5576. <div>{{ w.commentCount }}</div>
  5577. </div>
  5578. </div>
  5579. </div>
  5580. </div>
  5581. </div>
  5582. <div class="group_work" v-else>暂无提交作业</div>
  5583. </div>
  5584. </div>
  5585. <div
  5586. :id="'tool-' + toolIndex"
  5587. :style="{
  5588. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  5589. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  5590. }"
  5591. class="worksDetailBox"
  5592. v-if="
  5593. worksStudent.length &&
  5594. worksStudent[toolIndex].length > 0
  5595. "
  5596. >
  5597. <div
  5598. class="works"
  5599. style="
  5600. width: 200px;
  5601. height: 140px;
  5602. margin: 10px 10px 10px 0;
  5603. border-radius: 15px;
  5604. box-shadow: 0 0 6px 1px #dfdada;
  5605. "
  5606. v-for="(w, wIndex) in worksStudent[toolIndex]"
  5607. :key="wIndex"
  5608. >
  5609. <!-- @click="previewImg(w.works)" -->
  5610. <div class="workImg">
  5611. <img
  5612. :src="w.works"
  5613. @click="previewImg(w.works,w)"
  5614. alt
  5615. />
  5616. <div
  5617. class="answerScore"
  5618. v-if="w.score"
  5619. @click.stop="openScore(w)"
  5620. :class="{
  5621. rightW:
  5622. w.userid == userid || tType == 1 || tType == 4,
  5623. }"
  5624. >
  5625. {{ JSON.parse(w.score).wScore }}分
  5626. </div>
  5627. <div
  5628. class="answerScore"
  5629. @click.stop="openScore(w)"
  5630. v-else-if="courseDetail.userid == userid"
  5631. :class="{
  5632. rightW:
  5633. w.userid == userid || tType == 1 || tType == 4,
  5634. }"
  5635. >
  5636. 评分
  5637. </div>
  5638. <img
  5639. class="deleteImg"
  5640. src="../../assets/deleteworks.png"
  5641. v-if="
  5642. w.userid == userid || tType == 1 || tType == 4
  5643. "
  5644. @click.stop="deleteWorks(w.wid)"
  5645. alt
  5646. />
  5647. </div>
  5648. <div class="comment" style="min-width: 200px">
  5649. <div class="worksName">
  5650. <div>{{ w.sName }}</div>
  5651. </div>
  5652. <div class="commentList">
  5653. <div class="commentList">
  5654. <div
  5655. class="commentImg"
  5656. @click="
  5657. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5658. "
  5659. >
  5660. <img
  5661. :src="w.isLikes == true ? likes : noLikes"
  5662. alt=""
  5663. />
  5664. </div>
  5665. <div>{{ w.likesCount }}</div>
  5666. </div>
  5667. <div class="commentList" style="margin-right: 15px">
  5668. <div
  5669. class="commentImg"
  5670. @click="commentOther(w, toolIndex, wIndex)"
  5671. >
  5672. <img
  5673. src="../../assets/icon/comment/comment.png"
  5674. alt=""
  5675. />
  5676. </div>
  5677. <div>{{ w.commentCount }}</div>
  5678. </div>
  5679. </div>
  5680. </div>
  5681. </div>
  5682. </div>
  5683. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  5684. 未提交
  5685. </div>
  5686. <div
  5687. class="noWorksS"
  5688. v-if="noWorksS && noWorksS[toolIndex].length"
  5689. >
  5690. <div
  5691. v-for="(s, sIndex) in noWorksS[toolIndex]"
  5692. :key="sIndex"
  5693. class="noWorksName"
  5694. @click="teacherWorkSubmit(7, toolIndex, taskCount, s)"
  5695. >
  5696. <el-tooltip effect="dark" :content="s.student" placement="top">
  5697. <span>{{ s.student }}</span>
  5698. </el-tooltip>
  5699. </div>
  5700. </div>
  5701. </div>
  5702. <div
  5703. v-if="
  5704. tType &&
  5705. ((tType == 2 && sIsOpen == true) ||
  5706. tType == 1 ||
  5707. tType == 4) &&
  5708. tool.tool.indexOf(26) != -1
  5709. "
  5710. class="worksBox"
  5711. >
  5712. <div
  5713. class="zuoyeYulan"
  5714. v-if="
  5715. worksStudent.length &&
  5716. worksStudent[toolIndex].length > 0
  5717. "
  5718. >
  5719. <div class="worksTop">
  5720. <div>作业预览</div>
  5721. <div
  5722. class="corOpen"
  5723. @click="contract(toolIndex)"
  5724. v-if="
  5725. (isCloseList[toolIndex].isCloseBoolean) &&
  5726. isCloseList[toolIndex].isClose == 0
  5727. "
  5728. >
  5729. 折叠
  5730. </div>
  5731. <div
  5732. class="corOpen"
  5733. @click="contract(toolIndex)"
  5734. v-if="isCloseList[toolIndex].isClose == 1"
  5735. >
  5736. 展开
  5737. </div>
  5738. </div>
  5739. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  5740. </div>
  5741. <div
  5742. :id="'tool-' + toolIndex"
  5743. :style="{
  5744. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  5745. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  5746. }"
  5747. class="worksDetailBox"
  5748. v-if="
  5749. worksStudent.length &&
  5750. worksStudent[toolIndex].length > 0
  5751. "
  5752. >
  5753. <div
  5754. class="works"
  5755. style="width: 240px; height: 140px; overflow: hidden"
  5756. v-for="(w, wIndex) in worksStudent[toolIndex]"
  5757. :key="wIndex"
  5758. :class="w.type == 1 ? 'isTypeOne' : ''"
  5759. >
  5760. <div class="workImg" v-if="w.type == 0">
  5761. <img
  5762. :src="w.works"
  5763. @click="previewImg(w.works,w)"
  5764. alt
  5765. />
  5766. <img
  5767. class="deleteImg"
  5768. src="../../assets/deleteworks.png"
  5769. v-if="
  5770. w.userid == userid || tType == 1 || tType == 4
  5771. "
  5772. @click.stop="deleteWorks(w.wid)"
  5773. alt
  5774. />
  5775. </div>
  5776. <div class="workImg" v-if="w.type == 1">
  5777. <img :src="word" @click="openFile(w.works)" alt />
  5778. <img
  5779. class="deleteImg"
  5780. src="../../assets/deleteworks.png"
  5781. v-if="
  5782. w.userid == userid || tType == 1 || tType == 4
  5783. "
  5784. @click.stop="deleteWorks(w.wid)"
  5785. alt
  5786. />
  5787. </div>
  5788. <div class="worksName">
  5789. <div>{{ w.sName }}</div>
  5790. </div>
  5791. </div>
  5792. </div>
  5793. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  5794. 未提交
  5795. </div>
  5796. <div
  5797. class="noWorksS"
  5798. v-if="noWorksS && noWorksS[toolIndex].length"
  5799. >
  5800. <div
  5801. v-for="(s, sIndex) in noWorksS[toolIndex]"
  5802. :key="sIndex"
  5803. class="noWorksName"
  5804. >
  5805. <el-tooltip effect="dark" :content="s.student" placement="top">
  5806. <span>{{ s.student }}</span>
  5807. </el-tooltip>
  5808. </div>
  5809. </div>
  5810. </div>
  5811. <div
  5812. v-if="
  5813. tType &&
  5814. ((tType == 2 && sIsOpen == true) ||
  5815. tType == 1 ||
  5816. tType == 4) &&
  5817. tool.tool.indexOf(40) != -1
  5818. "
  5819. class="worksBox"
  5820. >
  5821. <div
  5822. class="zuoyeYulan"
  5823. v-if="
  5824. worksStudent.length &&
  5825. worksStudent[toolIndex].length > 0
  5826. "
  5827. >
  5828. <div class="worksTop">
  5829. <div>作业预览</div>
  5830. <div
  5831. class="corOpen"
  5832. @click="contract(toolIndex)"
  5833. v-if="
  5834. (isCloseList[toolIndex].isCloseBoolean) &&
  5835. isCloseList[toolIndex].isClose == 0
  5836. "
  5837. >
  5838. 折叠
  5839. </div>
  5840. <div
  5841. class="corOpen"
  5842. @click="contract(toolIndex)"
  5843. v-if="isCloseList[toolIndex].isClose == 1"
  5844. >
  5845. 展开
  5846. </div>
  5847. </div>
  5848. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  5849. </div>
  5850. <div
  5851. :id="'tool-' + toolIndex"
  5852. :style="{
  5853. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  5854. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  5855. }"
  5856. class="worksDetailBox"
  5857. v-if="
  5858. worksStudent.length &&
  5859. worksStudent[toolIndex].length > 0
  5860. "
  5861. >
  5862. <div
  5863. class="works"
  5864. style="
  5865. width: 200px;
  5866. height: 140px;
  5867. margin: 10px 10px 10px 0;
  5868. border-radius: 15px;
  5869. box-shadow: 0 0 6px 1px #dfdada;
  5870. "
  5871. v-for="(w, wIndex) in worksStudent[toolIndex]"
  5872. :key="wIndex"
  5873. :class="w.type == 1 ? 'isTypeOne' : ''"
  5874. >
  5875. <div class="workImg">
  5876. <img
  5877. src="../../assets/icon/works/noImg.png"
  5878. @click="openPj(w.works, toolIndex)"
  5879. alt
  5880. />
  5881. <img
  5882. class="deleteImg"
  5883. src="../../assets/deleteworks.png"
  5884. v-if="
  5885. w.userid == userid || tType == 1 || tType == 4
  5886. "
  5887. @click.stop="deleteWorks(w.wid)"
  5888. alt
  5889. />
  5890. </div>
  5891. <div class="comment" style="min-width: 200px">
  5892. <div class="worksName">
  5893. <div>{{ w.sName }}</div>
  5894. </div>
  5895. <div class="commentList">
  5896. <div class="commentList">
  5897. <div
  5898. class="commentImg"
  5899. @click="
  5900. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  5901. "
  5902. >
  5903. <img
  5904. :src="w.isLikes == true ? likes : noLikes"
  5905. alt=""
  5906. />
  5907. </div>
  5908. <div>{{ w.likesCount }}</div>
  5909. </div>
  5910. <div class="commentList" style="margin-right: 15px">
  5911. <div
  5912. class="commentImg"
  5913. @click="commentOther(w, toolIndex, wIndex)"
  5914. >
  5915. <img
  5916. src="../../assets/icon/comment/comment.png"
  5917. alt=""
  5918. />
  5919. </div>
  5920. <div>{{ w.commentCount }}</div>
  5921. </div>
  5922. </div>
  5923. </div>
  5924. </div>
  5925. </div>
  5926. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  5927. 未提交
  5928. </div>
  5929. <div
  5930. class="noWorksS"
  5931. v-if="noWorksS && noWorksS[toolIndex].length"
  5932. >
  5933. <div
  5934. v-for="(s, sIndex) in noWorksS[toolIndex]"
  5935. :key="sIndex"
  5936. class="noWorksName"
  5937. @click="teacherWorkSubmit(40, toolIndex, taskCount, s)"
  5938. >
  5939. <el-tooltip effect="dark" :content="s.student" placement="top">
  5940. <span>{{ s.student }}</span>
  5941. </el-tooltip>
  5942. </div>
  5943. </div>
  5944. </div>
  5945. <div
  5946. v-if="
  5947. tType &&
  5948. tType == 2 &&
  5949. !sIsOpen &&
  5950. tool.tool.indexOf(40) != -1
  5951. "
  5952. class="worksBox"
  5953. >
  5954. <div
  5955. class="zuoyeYulan"
  5956. v-if="workStudent[toolIndex].length > 0"
  5957. >
  5958. <span class="worksTitle">作业预览</span>
  5959. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  5960. </div>
  5961. <div
  5962. class="worksDetailBox"
  5963. v-if="workStudent[toolIndex].length > 0"
  5964. >
  5965. <div
  5966. class="works"
  5967. style="
  5968. width: 200px;
  5969. height: 140px;
  5970. margin: 10px 10px 10px 0;
  5971. "
  5972. v-for="(w, wIndex) in workStudent[toolIndex]"
  5973. :key="wIndex"
  5974. >
  5975. <div class="workImg">
  5976. <img
  5977. src="../../assets/icon/works/noImg.png"
  5978. @click="openPj(w.works, toolIndex)"
  5979. alt
  5980. />
  5981. <img
  5982. class="deleteImg"
  5983. src="../../assets/deleteworks.png"
  5984. v-if="
  5985. w.userid == userid || tType == 1 || tType == 4
  5986. "
  5987. @click.stop="deleteWorks(w.wid)"
  5988. alt
  5989. />
  5990. </div>
  5991. <div class="worksName">
  5992. <div>{{ w.sName }}</div>
  5993. </div>
  5994. </div>
  5995. </div>
  5996. </div>
  5997. <div
  5998. v-if="
  5999. tType &&
  6000. ((tType == 2 && sIsOpen == true) ||
  6001. tType == 1 ||
  6002. tType == 4) &&
  6003. tool.tool.indexOf(41) != -1
  6004. "
  6005. >
  6006. <AnswerData2
  6007. v-if="
  6008. worksStudent.length &&
  6009. worksStudent[toolIndex].length > 0
  6010. "
  6011. :problemJson="tool.selectJson.answer"
  6012. :people="worksStudent[toolIndex]"
  6013. ></AnswerData2>
  6014. </div>
  6015. <div
  6016. v-if="
  6017. tType &&
  6018. ((tType == 2 && sIsOpen == true) ||
  6019. tType == 1 ||
  6020. tType == 4) &&
  6021. tool.tool.indexOf(41) != -1
  6022. "
  6023. class="worksBox"
  6024. >
  6025. <div
  6026. class="zuoyeYulan"
  6027. v-if="
  6028. worksStudent.length &&
  6029. worksStudent[toolIndex].length > 0
  6030. "
  6031. >
  6032. <div class="worksTop">
  6033. <div>作业预览</div>
  6034. <div
  6035. class="corOpen"
  6036. @click="contract(toolIndex)"
  6037. v-if="
  6038. (isCloseList[toolIndex].isCloseBoolean) &&
  6039. isCloseList[toolIndex].isClose == 0
  6040. "
  6041. >
  6042. 折叠
  6043. </div>
  6044. <div
  6045. class="corOpen"
  6046. @click="contract(toolIndex)"
  6047. v-if="isCloseList[toolIndex].isClose == 1"
  6048. >
  6049. 展开
  6050. </div>
  6051. </div>
  6052. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6053. </div>
  6054. <div
  6055. :id="'tool-' + toolIndex"
  6056. :style="{
  6057. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  6058. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  6059. }"
  6060. class="worksDetailBox"
  6061. v-if="
  6062. worksStudent.length &&
  6063. worksStudent[toolIndex].length > 0
  6064. "
  6065. >
  6066. <div
  6067. v-for="(w, wIndex) in worksStudent[toolIndex]"
  6068. :key="wIndex"
  6069. class="isWorksName2"
  6070. @click="openXz(w, toolIndex)"
  6071. >
  6072. {{ w.sName }}
  6073. <img
  6074. class="deleteImg deleteImg2"
  6075. src="../../assets/deleteworks.png"
  6076. v-if="w.userid == userid || tType == 1 || tType == 4"
  6077. @click.stop="deleteWorks(w.wid)"
  6078. alt
  6079. />
  6080. </div>
  6081. <!-- <div
  6082. class="works"
  6083. style="
  6084. width: 200px;
  6085. height: 140px;
  6086. margin: 10px 10px 10px 0;
  6087. border-radius: 15px;
  6088. box-shadow: 0 0 6px 1px #dfdada;
  6089. " v-for="(w, wIndex) in worksStudent[toolIndex]" :key="wIndex"
  6090. :class="w.type == 5 ? 'isTypeOne' : ''">
  6091. <div class="workImg">
  6092. <img src="../../assets/icon/works/noImg.png" @click="openXz(w, toolIndex)" alt />
  6093. </div>
  6094. <div class="worksName">
  6095. <div>{{ w.sName }}</div>
  6096. </div>
  6097. </div> -->
  6098. </div>
  6099. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  6100. 未提交
  6101. </div>
  6102. <div
  6103. class="noWorksS"
  6104. v-if="noWorksS && noWorksS[toolIndex].length"
  6105. >
  6106. <div
  6107. v-for="(s, sIndex) in noWorksS[toolIndex]"
  6108. :key="sIndex"
  6109. class="noWorksName"
  6110. @click="teacherWorkSubmit(41, toolIndex, taskCount, s)"
  6111. >
  6112. <el-tooltip effect="dark" :content="s.student" placement="top">
  6113. <span>{{ s.student }}</span>
  6114. </el-tooltip>
  6115. </div>
  6116. </div>
  6117. </div>
  6118. <div
  6119. v-if="
  6120. tType &&
  6121. tType == 2 &&
  6122. !sIsOpen &&
  6123. tool.tool.indexOf(41) != -1
  6124. "
  6125. class="worksBox"
  6126. >
  6127. <div
  6128. class="zuoyeYulan"
  6129. v-if="workStudent[toolIndex].length > 0"
  6130. >
  6131. <span class="worksTitle">作业预览</span>
  6132. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6133. </div>
  6134. <div
  6135. class="worksDetailBox"
  6136. v-if="workStudent[toolIndex].length > 0"
  6137. >
  6138. <div
  6139. class="works"
  6140. style="
  6141. width: 200px;
  6142. height: 140px;
  6143. margin: 10px 10px 10px 0;
  6144. "
  6145. v-for="(w, wIndex) in workStudent[toolIndex]"
  6146. :key="wIndex"
  6147. >
  6148. <div class="workImg">
  6149. <img
  6150. src="../../assets/icon/works/noImg.png"
  6151. @click="openXz(w, toolIndex)"
  6152. alt
  6153. />
  6154. <img
  6155. class="deleteImg"
  6156. src="../../assets/deleteworks.png"
  6157. v-if="
  6158. w.userid == userid || tType == 1 || tType == 4
  6159. "
  6160. @click.stop="deleteWorks(w.wid)"
  6161. alt
  6162. />
  6163. </div>
  6164. <div class="worksName">
  6165. <div>{{ w.sName }}</div>
  6166. </div>
  6167. </div>
  6168. </div>
  6169. </div>
  6170. <div v-if="false" class="xuan_right_box">
  6171. <div
  6172. class="tool_right_box"
  6173. v-for="(item, index) in tool.sentenceList"
  6174. :key="index"
  6175. >
  6176. <div>
  6177. <span
  6178. style="word-break: break-all; white-space: normal"
  6179. >{{ index + 1 + "、" + item.sentenceTitle }}</span
  6180. >
  6181. </div>
  6182. <div class="right_box_xuan">
  6183. <span>正确率</span>
  6184. <span>{{
  6185. (checkJson[toolIndex][index].right
  6186. ? checkJson[toolIndex][index].right
  6187. : 0) + "%"
  6188. }}</span>
  6189. </div>
  6190. <div class="right_box_xuan">
  6191. <span>答对人数</span>
  6192. <span>{{
  6193. checkJson[toolIndex][index].rightPerson.length
  6194. }}</span>
  6195. </div>
  6196. </div>
  6197. </div>
  6198. <div
  6199. v-if="
  6200. tType &&
  6201. ((tType == 2 && sIsOpen == true) ||
  6202. tType == 1 ||
  6203. tType == 4) &&
  6204. tool.tool.indexOf(47) != -1
  6205. "
  6206. >
  6207. <AnswerData
  6208. v-if="
  6209. checkJson[toolIndex].length &&
  6210. (tool.sentenceList || tool.sentenceList.length > 0)
  6211. "
  6212. :people="checkJson[toolIndex]"
  6213. ></AnswerData>
  6214. </div>
  6215. <div
  6216. v-if="
  6217. tType &&
  6218. tType == 2 &&
  6219. !sIsOpen &&
  6220. tool.tool.indexOf(47) != -1
  6221. "
  6222. class="worksBox"
  6223. >
  6224. <div
  6225. class="zuoyeYulan"
  6226. v-if="workStudent[toolIndex].length > 0"
  6227. >
  6228. <span class="worksTitle">作业预览</span>
  6229. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6230. </div>
  6231. <div
  6232. class="worksDetailBox"
  6233. v-if="workStudent[toolIndex].length > 0"
  6234. >
  6235. <div
  6236. class="works"
  6237. style="
  6238. width: 200px;
  6239. height: 140px;
  6240. margin: 10px 10px 10px 0;
  6241. "
  6242. v-for="(w, wIndex) in workStudent[toolIndex]"
  6243. :key="wIndex"
  6244. >
  6245. <!-- @click="openXz(w, toolIndex)" -->
  6246. <div class="workImg" @click="openSen(w, toolIndex)">
  6247. <img src="../../assets/icon/works/noImg.png" alt />
  6248. <img
  6249. class="deleteImg"
  6250. src="../../assets/deleteworks.png"
  6251. v-if="
  6252. w.userid == userid || tType == 1 || tType == 4
  6253. "
  6254. @click.stop="deleteWorks(w.wid)"
  6255. alt
  6256. />
  6257. </div>
  6258. <div class="worksName">
  6259. <div>
  6260. {{ w.sName }}
  6261. </div>
  6262. </div>
  6263. </div>
  6264. </div>
  6265. </div>
  6266. <div
  6267. v-if="
  6268. tType &&
  6269. ((tType == 2 && sIsOpen == true) ||
  6270. tType == 1 ||
  6271. tType == 4) &&
  6272. tool.tool.indexOf(47) != -1
  6273. "
  6274. class="worksBox"
  6275. >
  6276. <div
  6277. class="zuoyeYulan"
  6278. v-if="
  6279. worksStudent.length &&
  6280. worksStudent[toolIndex].length > 0
  6281. "
  6282. >
  6283. <div class="worksTop">
  6284. <div>作业预览</div>
  6285. <div
  6286. class="corOpen"
  6287. @click="contract(toolIndex)"
  6288. v-if="
  6289. (isCloseList[toolIndex].isCloseBoolean) &&
  6290. isCloseList[toolIndex].isClose == 0
  6291. "
  6292. >
  6293. 折叠
  6294. </div>
  6295. <div
  6296. class="corOpen"
  6297. @click="contract(toolIndex)"
  6298. v-if="isCloseList[toolIndex].isClose == 1"
  6299. >
  6300. 展开
  6301. </div>
  6302. </div>
  6303. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6304. </div>
  6305. <div
  6306. :id="'tool-' + toolIndex"
  6307. :style="{
  6308. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  6309. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  6310. }"
  6311. class="worksDetailBox"
  6312. v-if="
  6313. worksStudent.length &&
  6314. worksStudent[toolIndex].length > 0
  6315. "
  6316. >
  6317. <!-- @click="openXz(w, toolIndex)" -->
  6318. <div
  6319. v-for="(w, wIndex) in worksStudent[toolIndex]"
  6320. :key="wIndex"
  6321. class="isWorksName2"
  6322. @click="openSen(w, toolIndex)"
  6323. >
  6324. {{ w.sName }}
  6325. <img
  6326. class="deleteImg deleteImg2"
  6327. src="../../assets/deleteworks.png"
  6328. v-if="w.userid == userid || tType == 1 || tType == 4"
  6329. @click.stop="deleteWorks(w.wid)"
  6330. alt
  6331. />
  6332. </div>
  6333. </div>
  6334. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  6335. 未提交
  6336. </div>
  6337. <div
  6338. class="noWorksS"
  6339. v-if="noWorksS && noWorksS[toolIndex].length"
  6340. >
  6341. <div
  6342. v-for="(s, sIndex) in noWorksS[toolIndex]"
  6343. :key="sIndex"
  6344. class="noWorksName"
  6345. @click="teacherWorkSubmit(47, toolIndex, taskCount, s)"
  6346. >
  6347. <el-tooltip effect="dark" :content="s.student" placement="top">
  6348. <span>{{ s.student }}</span>
  6349. </el-tooltip>
  6350. </div>
  6351. </div>
  6352. </div>
  6353. <div
  6354. v-if="
  6355. tType &&
  6356. ((tType == 2 && sIsOpen == true) ||
  6357. tType == 1 ||
  6358. tType == 4) &&
  6359. tool.tool.indexOf(48) != -1
  6360. "
  6361. class="worksBox"
  6362. >
  6363. <div
  6364. class="zuoyeYulan"
  6365. v-if="
  6366. worksStudent.length &&
  6367. worksStudent[toolIndex].length > 0
  6368. "
  6369. >
  6370. <div class="worksTop">
  6371. <div>作业预览</div>
  6372. <div
  6373. class="corOpen"
  6374. @click="contract(toolIndex)"
  6375. v-if="
  6376. (isCloseList[toolIndex].isCloseBoolean) &&
  6377. isCloseList[toolIndex].isClose == 0
  6378. "
  6379. >
  6380. 折叠
  6381. </div>
  6382. <div
  6383. class="corOpen"
  6384. @click="contract(toolIndex)"
  6385. v-if="isCloseList[toolIndex].isClose == 1"
  6386. >
  6387. 展开
  6388. </div>
  6389. </div>
  6390. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6391. </div>
  6392. <div
  6393. :id="'tool-' + toolIndex"
  6394. :style="{
  6395. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  6396. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  6397. }"
  6398. class="worksDetailBox"
  6399. v-if="
  6400. worksStudent.length &&
  6401. worksStudent[toolIndex].length > 0
  6402. "
  6403. >
  6404. <div
  6405. class="works"
  6406. style="
  6407. width: 200px;
  6408. height: 140px;
  6409. margin: 10px 10px 10px 0;
  6410. border-radius: 15px;
  6411. box-shadow: 0 0 6px 1px #dfdada;
  6412. "
  6413. v-for="(w, wIndex) in worksStudent[toolIndex]"
  6414. :key="wIndex"
  6415. :class="w.type == 1 ? 'isTypeOne' : ''"
  6416. >
  6417. <div class="workImg">
  6418. <img :src="word" @click="openTable(w)" alt />
  6419. <!-- @click="openFile(w.works)" -->
  6420. <div
  6421. class="answerScore"
  6422. v-if="w.score"
  6423. @click.stop="openScore(w)"
  6424. :class="{
  6425. rightW:
  6426. w.userid == userid ||
  6427. tType == 1 ||
  6428. tType == 4 ||
  6429. w.ateacher == userid,
  6430. }"
  6431. >
  6432. {{ JSON.parse(w.score).wScore }}分
  6433. </div>
  6434. <div
  6435. class="answerScore"
  6436. @click.stop="openScore(w)"
  6437. v-else-if="courseDetail.userid == userid"
  6438. :class="{
  6439. rightW:
  6440. w.userid == userid ||
  6441. tType == 1 ||
  6442. tType == 4 ||
  6443. w.ateacher == userid,
  6444. }"
  6445. >
  6446. 评分
  6447. </div>
  6448. <img
  6449. class="deleteImg"
  6450. src="../../assets/deleteworks.png"
  6451. v-if="
  6452. w.userid == userid || tType == 1 || tType == 4
  6453. "
  6454. @click.stop="deleteWorks(w.wid)"
  6455. alt
  6456. />
  6457. </div>
  6458. <div class="comment" style="min-width: 200px">
  6459. <div class="worksName">
  6460. <div>{{ w.sName }}</div>
  6461. </div>
  6462. <div class="commentList">
  6463. <div class="commentList">
  6464. <div
  6465. class="commentImg"
  6466. @click="
  6467. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  6468. "
  6469. >
  6470. <img
  6471. :src="w.isLikes == true ? likes : noLikes"
  6472. alt=""
  6473. />
  6474. </div>
  6475. <div>{{ w.likesCount }}</div>
  6476. </div>
  6477. <div class="commentList" style="margin-right: 15px">
  6478. <div
  6479. class="commentImg"
  6480. @click="commentOther(w, toolIndex, wIndex)"
  6481. >
  6482. <img
  6483. src="../../assets/icon/comment/comment.png"
  6484. alt=""
  6485. />
  6486. </div>
  6487. <div>{{ w.commentCount }}</div>
  6488. </div>
  6489. </div>
  6490. </div>
  6491. </div>
  6492. </div>
  6493. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  6494. 未提交
  6495. </div>
  6496. <div
  6497. class="noWorksS"
  6498. v-if="noWorksS && noWorksS[toolIndex].length"
  6499. >
  6500. <div
  6501. v-for="(s, sIndex) in noWorksS[toolIndex]"
  6502. :key="sIndex"
  6503. class="noWorksName"
  6504. @click="teacherWorkSubmit(48, toolIndex, taskCount, s)"
  6505. >
  6506. <el-tooltip effect="dark" :content="s.student" placement="top">
  6507. <span>{{ s.student }}</span>
  6508. </el-tooltip>
  6509. </div>
  6510. </div>
  6511. </div>
  6512. <div
  6513. v-if="
  6514. tType &&
  6515. tType == 2 &&
  6516. !sIsOpen &&
  6517. tool.tool.indexOf(48) != -1
  6518. "
  6519. class="worksBox"
  6520. >
  6521. <div
  6522. class="zuoyeYulan"
  6523. v-if="workStudent[toolIndex].length > 0"
  6524. >
  6525. <span class="worksTitle">作业预览</span>
  6526. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6527. </div>
  6528. <div
  6529. class="worksDetailBox"
  6530. v-if="workStudent[toolIndex].length > 0"
  6531. >
  6532. <div
  6533. class="works"
  6534. style="
  6535. width: 200px;
  6536. height: 140px;
  6537. margin: 10px 10px 10px 0;
  6538. box-shadow: 0 0 6px 1px #dfdada;
  6539. "
  6540. v-for="(w, wIndex) in workStudent[toolIndex]"
  6541. :key="wIndex"
  6542. >
  6543. <div class="workImg">
  6544. <img :src="word" @click="openTable(w)" alt />
  6545. <div
  6546. class="answerScore"
  6547. v-if="w.score"
  6548. @click.stop="openScore(w)"
  6549. :class="{
  6550. rightW:
  6551. w.userid == userid || tType == 1 || tType == 4,
  6552. }"
  6553. >
  6554. {{ JSON.parse(w.score).wScore }}分
  6555. </div>
  6556. <div
  6557. class="answerScore"
  6558. @click.stop="openScore(w)"
  6559. v-else-if="courseDetail.userid == userid"
  6560. :class="{
  6561. rightW:
  6562. w.userid == userid || tType == 1 || tType == 4,
  6563. }"
  6564. >
  6565. 评分
  6566. </div>
  6567. <img
  6568. class="deleteImg"
  6569. src="../../assets/deleteworks.png"
  6570. v-if="
  6571. w.userid == userid || tType == 1 || tType == 4
  6572. "
  6573. @click.stop="deleteWorks(w.wid)"
  6574. alt
  6575. />
  6576. </div>
  6577. <div class="worksName">
  6578. <div>{{ w.sName }}</div>
  6579. </div>
  6580. </div>
  6581. </div>
  6582. </div>
  6583. <div
  6584. v-if="
  6585. tType &&
  6586. ((tType == 2 && sIsOpen == true) ||
  6587. tType == 1 ||
  6588. tType == 4) &&
  6589. tool.tool.indexOf(52) != -1
  6590. "
  6591. class="worksBox"
  6592. >
  6593. <div
  6594. class="zuoyeYulan"
  6595. v-if="
  6596. worksStudent.length &&
  6597. worksStudent[toolIndex].length > 0
  6598. "
  6599. >
  6600. <div class="worksTop">
  6601. <div>作业预览</div>
  6602. <div
  6603. class="corOpen"
  6604. @click="contract(toolIndex)"
  6605. v-if="
  6606. (isCloseList[toolIndex].isCloseBoolean) &&
  6607. isCloseList[toolIndex].isClose == 0
  6608. "
  6609. >
  6610. 折叠
  6611. </div>
  6612. <div
  6613. class="corOpen"
  6614. @click="contract(toolIndex)"
  6615. v-if="isCloseList[toolIndex].isClose == 1"
  6616. >
  6617. 展开
  6618. </div>
  6619. </div>
  6620. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6621. </div>
  6622. <div
  6623. :id="'tool-' + toolIndex"
  6624. :style="{
  6625. height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
  6626. overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
  6627. }"
  6628. class="worksDetailBox"
  6629. v-if="
  6630. worksStudent.length &&
  6631. worksStudent[toolIndex].length > 0
  6632. "
  6633. >
  6634. <div
  6635. class="works"
  6636. style="
  6637. width: 200px;
  6638. height: 140px;
  6639. margin: 10px 10px 10px 0;
  6640. border-radius: 15px;
  6641. box-shadow: 0 0 6px 1px #dfdada;
  6642. "
  6643. v-for="(w, wIndex) in worksStudent[toolIndex]"
  6644. :key="wIndex"
  6645. :class="w.type == 1 ? 'isTypeOne' : ''"
  6646. >
  6647. <div class="workImg">
  6648. <img :src="word" @click="openWord(w)" alt />
  6649. <!-- @click="openFile(w.works)" -->
  6650. <div
  6651. class="answerScore"
  6652. v-if="w.score"
  6653. @click.stop="openScore(w)"
  6654. :class="{
  6655. rightW:
  6656. w.userid == userid ||
  6657. tType == 1 ||
  6658. tType == 4 ||
  6659. w.ateacher == userid,
  6660. }"
  6661. >
  6662. {{ JSON.parse(w.score).wScore }}分
  6663. </div>
  6664. <div
  6665. class="answerScore"
  6666. @click.stop="openScore(w)"
  6667. v-else-if="courseDetail.userid == userid"
  6668. :class="{
  6669. rightW:
  6670. w.userid == userid ||
  6671. tType == 1 ||
  6672. tType == 4 ||
  6673. w.ateacher == userid,
  6674. }"
  6675. >
  6676. 评分
  6677. </div>
  6678. <img
  6679. class="deleteImg"
  6680. src="../../assets/deleteworks.png"
  6681. v-if="
  6682. w.userid == userid || tType == 1 || tType == 4
  6683. "
  6684. @click.stop="deleteWorks(w.wid)"
  6685. alt
  6686. />
  6687. </div>
  6688. <div class="comment" style="min-width: 200px">
  6689. <div class="worksName">
  6690. <div>{{ w.sName }}</div>
  6691. </div>
  6692. <div class="commentList">
  6693. <div class="commentList">
  6694. <div
  6695. class="commentImg"
  6696. @click="
  6697. isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
  6698. "
  6699. >
  6700. <img
  6701. :src="w.isLikes == true ? likes : noLikes"
  6702. alt=""
  6703. />
  6704. </div>
  6705. <div>{{ w.likesCount }}</div>
  6706. </div>
  6707. <div class="commentList" style="margin-right: 15px">
  6708. <div
  6709. class="commentImg"
  6710. @click="commentOther(w, toolIndex, wIndex)"
  6711. >
  6712. <img
  6713. src="../../assets/icon/comment/comment.png"
  6714. alt=""
  6715. />
  6716. </div>
  6717. <div>{{ w.commentCount }}</div>
  6718. </div>
  6719. </div>
  6720. </div>
  6721. </div>
  6722. </div>
  6723. <div style="font-size: 18px" v-if="courseDetail.juri != ''">
  6724. 未提交
  6725. </div>
  6726. <div
  6727. class="noWorksS"
  6728. v-if="noWorksS && noWorksS[toolIndex].length"
  6729. >
  6730. <div
  6731. v-for="(s, sIndex) in noWorksS[toolIndex]"
  6732. :key="sIndex"
  6733. class="noWorksName"
  6734. @click="teacherWorkSubmit(52, toolIndex, taskCount, s)"
  6735. >
  6736. <el-tooltip effect="dark" :content="s.student" placement="top">
  6737. <span>{{ s.student }}</span>
  6738. </el-tooltip>
  6739. </div>
  6740. </div>
  6741. </div>
  6742. <div
  6743. v-if="
  6744. tType &&
  6745. tType == 2 &&
  6746. !sIsOpen &&
  6747. tool.tool.indexOf(52) != -1
  6748. "
  6749. class="worksBox"
  6750. >
  6751. <div
  6752. class="zuoyeYulan"
  6753. v-if="workStudent[toolIndex].length > 0"
  6754. >
  6755. <span class="worksTitle">作业预览</span>
  6756. <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
  6757. </div>
  6758. <div
  6759. class="worksDetailBox"
  6760. v-if="workStudent[toolIndex].length > 0"
  6761. >
  6762. <div
  6763. class="works"
  6764. style="
  6765. width: 200px;
  6766. height: 140px;
  6767. margin: 10px 10px 10px 0;
  6768. box-shadow: 0 0 6px 1px #dfdada;
  6769. "
  6770. v-for="(w, wIndex) in workStudent[toolIndex]"
  6771. :key="wIndex"
  6772. >
  6773. <div class="workImg">
  6774. <img :src="word" @click="openWord(w)" alt />
  6775. <div
  6776. class="answerScore"
  6777. v-if="w.score"
  6778. @click.stop="openScore(w)"
  6779. :class="{
  6780. rightW:
  6781. w.userid == userid || tType == 1 || tType == 4,
  6782. }"
  6783. >
  6784. {{ JSON.parse(w.score).wScore }}分
  6785. </div>
  6786. <div
  6787. class="answerScore"
  6788. @click.stop="openScore(w)"
  6789. v-else-if="courseDetail.userid == userid"
  6790. :class="{
  6791. rightW:
  6792. w.userid == userid || tType == 1 || tType == 4,
  6793. }"
  6794. >
  6795. 评分
  6796. </div>
  6797. <img
  6798. class="deleteImg"
  6799. src="../../assets/deleteworks.png"
  6800. v-if="
  6801. w.userid == userid || tType == 1 || tType == 4
  6802. "
  6803. @click.stop="deleteWorks(w.wid)"
  6804. alt
  6805. />
  6806. </div>
  6807. <div class="worksName">
  6808. <div>{{ w.sName }}</div>
  6809. </div>
  6810. </div>
  6811. </div>
  6812. </div>
  6813. <div
  6814. v-if="tool.tool.indexOf(49) != -1"
  6815. class="xuan_right_box"
  6816. style="margin: 0 15px 0 25px; width: 93%"
  6817. >
  6818. <div
  6819. v-if="courseDetail.userid == userid"
  6820. style="
  6821. display: flex;
  6822. justify-content: flex-end;
  6823. margin-right: 10px;
  6824. "
  6825. >
  6826. <el-button
  6827. type="primary"
  6828. size="small"
  6829. @click="addTools(49, toolIndex, taskCount)"
  6830. >分组设置</el-button
  6831. >
  6832. </div>
  6833. <div
  6834. v-if="groupStudentUid[toolIndex]"
  6835. class="group_staic_box"
  6836. >
  6837. <div
  6838. v-for="(gp, gd) in tool.groupJson.group"
  6839. :key="gd"
  6840. class="group_staic"
  6841. >
  6842. <span> {{ gp.name }}</span>
  6843. <span>
  6844. 目前人数{{
  6845. groupStudentUid[toolIndex][gd].length
  6846. }}人</span
  6847. >
  6848. </div>
  6849. </div>
  6850. </div>
  6851. <div v-if="tool.tool.indexOf(49) != -1" class="worksBox">
  6852. <div
  6853. class="zuoyeYulan"
  6854. v-if="
  6855. worksStudent.length &&
  6856. worksStudent[toolIndex].length > 0
  6857. "
  6858. >
  6859. <span class="worksTitle">作业预览</span>
  6860. </div>
  6861. <div>
  6862. <div
  6863. class="group_workBox"
  6864. v-for="(g, gindex) in tool.groupJson.group"
  6865. :key="gindex"
  6866. >
  6867. <div
  6868. class="group_box"
  6869. v-if="
  6870. groupStudentUid[toolIndex] &&
  6871. worksStudent[toolIndex] &&
  6872. (worksStudent[toolIndex][gindex].length ||
  6873. groupStudentUid[toolIndex][gindex].indexOf(
  6874. userid
  6875. ) != -1)
  6876. "
  6877. >
  6878. <div class="group_title">
  6879. <el-tooltip
  6880. class="item"
  6881. effect="light"
  6882. :content="g.name"
  6883. placement="top"
  6884. >
  6885. <div class="group_name">{{ g.name }}</div>
  6886. </el-tooltip>
  6887. <el-button
  6888. type="primary"
  6889. v-if="
  6890. groupStudentUid[toolIndex][gindex].indexOf(
  6891. userid
  6892. ) != -1
  6893. "
  6894. @click="groupUpload(toolIndex, taskCount, gindex)"
  6895. >上传作业</el-button
  6896. >
  6897. </div>
  6898. <div class="group_work">
  6899. <div
  6900. class="works"
  6901. style="
  6902. width: 200px;
  6903. height: 140px;
  6904. margin: 10px 10px 10px 0;
  6905. border-radius: 15px;
  6906. box-shadow: 0 0 6px 1px #dfdada;
  6907. "
  6908. v-for="(w, wIndex) in worksStudent[toolIndex][
  6909. gindex
  6910. ]"
  6911. :key="wIndex"
  6912. :class="w.type == 1 ? 'isTypeOne' : ''"
  6913. >
  6914. <div class="workImg" v-if="w.type == 0">
  6915. <img
  6916. :src="w.works"
  6917. @click="previewImg(w.works,w)"
  6918. alt
  6919. />
  6920. <div
  6921. class="answerScore"
  6922. v-if="w.score"
  6923. @click.stop="openScore(w)"
  6924. :class="{
  6925. rightW:
  6926. w.userid == userid ||
  6927. tType == 1 ||
  6928. tType == 4 ||
  6929. w.ateacher == userid,
  6930. }"
  6931. >
  6932. {{ JSON.parse(w.score).wScore }}分
  6933. </div>
  6934. <div
  6935. class="answerScore"
  6936. @click.stop="openScore(w)"
  6937. v-else-if="courseDetail.userid == userid"
  6938. :class="{
  6939. rightW:
  6940. w.userid == userid ||
  6941. tType == 1 ||
  6942. tType == 4 ||
  6943. w.ateacher == userid,
  6944. }"
  6945. >
  6946. 评分
  6947. </div>
  6948. <img
  6949. class="deleteImg"
  6950. src="../../assets/deleteworks.png"
  6951. v-if="
  6952. w.userid == userid ||
  6953. tType == 1 ||
  6954. tType == 4
  6955. "
  6956. @click.stop="deleteWorks(w.wid)"
  6957. alt
  6958. />
  6959. </div>
  6960. <div class="workImg" v-if="w.type == 1">
  6961. <img
  6962. :src="word"
  6963. @click="openFile(w.works)"
  6964. alt
  6965. />
  6966. <!-- @click="openFile(w.works)" -->
  6967. <div
  6968. class="answerScore"
  6969. v-if="w.score"
  6970. @click.stop="openScore(w)"
  6971. :class="{
  6972. rightW:
  6973. w.userid == userid ||
  6974. tType == 1 ||
  6975. tType == 4 ||
  6976. w.ateacher == userid,
  6977. }"
  6978. >
  6979. {{ JSON.parse(w.score).wScore }}分
  6980. </div>
  6981. <div
  6982. class="answerScore"
  6983. @click.stop="openScore(w)"
  6984. v-else-if="courseDetail.userid == userid"
  6985. :class="{
  6986. rightW:
  6987. w.userid == userid ||
  6988. tType == 1 ||
  6989. tType == 4 ||
  6990. w.ateacher == userid,
  6991. }"
  6992. >
  6993. 评分
  6994. </div>
  6995. <img
  6996. class="deleteImg"
  6997. src="../../assets/deleteworks.png"
  6998. v-if="
  6999. w.userid == userid ||
  7000. tType == 1 ||
  7001. tType == 4
  7002. "
  7003. @click.stop="deleteWorks(w.wid)"
  7004. alt
  7005. />
  7006. </div>
  7007. <div class="workImg" v-if="w.type == 3">
  7008. <img
  7009. style="cursor: pointer"
  7010. :src="video"
  7011. @click="openVideo(w)"
  7012. alt
  7013. />
  7014. <!-- @click="openVideo(w.works)" -->
  7015. <div
  7016. class="answerScore"
  7017. v-if="w.score"
  7018. @click.stop="openScore(w)"
  7019. :class="{
  7020. rightW:
  7021. w.userid == userid ||
  7022. tType == 1 ||
  7023. tType == 4 ||
  7024. w.ateacher == userid,
  7025. }"
  7026. >
  7027. {{ JSON.parse(w.score).wScore }}分
  7028. </div>
  7029. <div
  7030. class="answerScore"
  7031. @click.stop="openScore(w)"
  7032. v-else-if="courseDetail.userid == userid"
  7033. :class="{
  7034. rightW:
  7035. w.userid == userid ||
  7036. tType == 1 ||
  7037. tType == 4 ||
  7038. w.ateacher == userid,
  7039. }"
  7040. >
  7041. 评分
  7042. </div>
  7043. <img
  7044. class="deleteImg"
  7045. src="../../assets/deleteworks.png"
  7046. v-if="
  7047. w.userid == userid ||
  7048. tType == 1 ||
  7049. tType == 4
  7050. "
  7051. @click.stop="deleteWorks(w.wid)"
  7052. alt
  7053. />
  7054. </div>
  7055. <div class="workImg" v-if="w.type == 12">
  7056. <img
  7057. style="cursor: pointer"
  7058. :src="word2"
  7059. @click="downloadFile(w.works)"
  7060. alt
  7061. />
  7062. <!-- @click="openVideo(w.works)" -->
  7063. <div
  7064. class="answerScore"
  7065. v-if="w.score"
  7066. @click.stop="openScore(w)"
  7067. :class="{
  7068. rightW:
  7069. w.userid == userid ||
  7070. tType == 1 ||
  7071. tType == 4 ||
  7072. w.ateacher == userid,
  7073. }"
  7074. >
  7075. {{ JSON.parse(w.score).wScore }}分
  7076. </div>
  7077. <div
  7078. class="answerScore"
  7079. @click.stop="openScore(w)"
  7080. v-else-if="courseDetail.userid == userid"
  7081. :class="{
  7082. rightW:
  7083. w.userid == userid ||
  7084. tType == 1 ||
  7085. tType == 4 ||
  7086. w.ateacher == userid,
  7087. }"
  7088. >
  7089. 评分
  7090. </div>
  7091. <img
  7092. class="deleteImg"
  7093. src="../../assets/deleteworks.png"
  7094. v-if="
  7095. w.userid == userid ||
  7096. tType == 1 ||
  7097. tType == 4
  7098. "
  7099. @click.stop="deleteWorks(w.wid)"
  7100. alt
  7101. />
  7102. </div>
  7103. <div class="comment" style="min-width: 200px">
  7104. <div class="worksName">
  7105. <div>{{ w.sName }}</div>
  7106. </div>
  7107. <div class="commentList">
  7108. <div class="commentList">
  7109. <div
  7110. class="commentImg"
  7111. @click="
  7112. isLikes(
  7113. w.wid,
  7114. userid,
  7115. 1,
  7116. null,
  7117. w.isLikes,
  7118. w.sName
  7119. )
  7120. "
  7121. >
  7122. <img
  7123. :src="
  7124. w.isLikes == true ? likes : noLikes
  7125. "
  7126. alt=""
  7127. />
  7128. </div>
  7129. <div>{{ w.likesCount }}</div>
  7130. </div>
  7131. <div
  7132. class="commentList"
  7133. style="margin-right: 15px"
  7134. >
  7135. <div
  7136. class="commentImg"
  7137. @click="
  7138. commentOther(
  7139. w,
  7140. toolIndex,
  7141. wIndex,
  7142. gindex
  7143. )
  7144. "
  7145. >
  7146. <img
  7147. src="../../assets/icon/comment/comment.png"
  7148. alt=""
  7149. />
  7150. </div>
  7151. <div>{{ w.commentCount }}</div>
  7152. </div>
  7153. </div>
  7154. </div>
  7155. </div>
  7156. </div>
  7157. </div>
  7158. </div>
  7159. </div>
  7160. </div>
  7161. </div>
  7162. <!-- <div class="upload_toolBtn" @click="addImg($event)">
  7163. 上传文件
  7164. <input
  7165. type="file"
  7166. accept="image/png, image/gif, image/jpeg"
  7167. style="display: none"
  7168. @change="beforeUpload1($event, 2, index)"
  7169. />
  7170. </div>-->
  7171. </div>
  7172. </div>
  7173. <!-- <div
  7174. class="vedioBox"
  7175. style="margin-top: 10px"
  7176. v-if="
  7177. courseDetail.userid == userid ||
  7178. (courseDetail.course_teacher &&
  7179. courseDetail.course_teacher.indexOf(userid) != -1)
  7180. "
  7181. :style="{
  7182. borderRadius:
  7183. !(
  7184. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7185. .toolChoose[0].tool &&
  7186. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7187. .toolChoose[0].tool.length > 0
  7188. ) &&
  7189. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7190. .taskDetail == '' &&
  7191. vChapterData[taskCount].length == 0 &&
  7192. fileC[taskCount].length == 0
  7193. ? '0 0 20px 20px'
  7194. : '20px',
  7195. }"
  7196. >
  7197. <div
  7198. class="queTop"
  7199. @click="isClose = !isClose"
  7200. style="
  7201. padding: 15px 0 15px 37px;
  7202. justify-content: space-between;
  7203. "
  7204. >
  7205. <div class="queTopTitle">新增工具</div>
  7206. <div class="queTopRight">
  7207. <div class="queTopClose" v-if="isClose == 0">
  7208. 展开
  7209. <div class="closeImg">
  7210. <img src="../../assets/icon/newIcon/close.png" alt="" />
  7211. </div>
  7212. </div>
  7213. <div class="queTopClose" v-if="isClose == 1">
  7214. 折叠
  7215. <div class="openImg">
  7216. <img src="../../assets/icon/newIcon/open.png" alt="" />
  7217. </div>
  7218. </div>
  7219. <el-button
  7220. style="margin: 0 30px 0 auto"
  7221. type="primary"
  7222. size="small"
  7223. v-if="isClose == 1 && checktoolArray.length > 0"
  7224. @click.stop="addToolChoose"
  7225. >确定</el-button
  7226. >
  7227. </div>
  7228. </div>
  7229. <div
  7230. class="tool_work_box"
  7231. :style="isClose == 0 ? 'display:none' : 'display:block'"
  7232. >
  7233. <div class="tool_box">
  7234. <div class="tool_type_box">
  7235. <div class="chooseWho">
  7236. <div
  7237. :class="toolType == 0 ? 'isChooseActive' : ''"
  7238. @click="(toolType = 0), $forceUpdate()"
  7239. >
  7240. 互动类
  7241. </div>
  7242. <div
  7243. :class="toolType == 1 ? 'isChooseActive' : ''"
  7244. @click="(toolType = 1), $forceUpdate()"
  7245. >
  7246. 思维类
  7247. </div>
  7248. <div
  7249. :class="toolType == 2 ? 'isChooseActive' : ''"
  7250. @click="(toolType = 2), $forceUpdate()"
  7251. >
  7252. 测评类
  7253. </div>
  7254. <div
  7255. :class="toolType == 3 ? 'isChooseActive' : ''"
  7256. @click="(toolType = 3), $forceUpdate()"
  7257. >
  7258. 编程类
  7259. </div>
  7260. <div
  7261. :class="toolType == 5 ? 'isChooseActive' : ''"
  7262. @click="(toolType = 5), $forceUpdate()"
  7263. >
  7264. 学科类
  7265. </div>
  7266. </div>
  7267. </div>
  7268. <div>
  7269. <div class="toolSort" v-if="toolType == 0">
  7270. <div class="tool">
  7271. <div class="whiteBIcon" @click="addTools2(10)">
  7272. <img
  7273. src="../../assets/icon/thirdToolList/time.png"
  7274. alt
  7275. />
  7276. <div style="margin: 5px 0">倒计时</div>
  7277. </div>
  7278. <div class="check" @click="addTools2(10)">
  7279. <img
  7280. src="../../assets/icon/checkNo.png"
  7281. alt
  7282. v-if="checktoolArray.indexOf(10) == -1"
  7283. />
  7284. <div class="checkDiv" v-else>
  7285. <img src="../../assets/icon/checkedIs.png" alt /><span
  7286. >已选择</span
  7287. >
  7288. </div>
  7289. </div>
  7290. </div>
  7291. <div class="tool">
  7292. <div class="whiteBIcon" @click="addTools2(65)">
  7293. <img
  7294. src="../../assets/icon/firstToolList/pickPeople.png"
  7295. alt
  7296. />
  7297. <div style="margin: 5px 0">挑人</div>
  7298. </div>
  7299. <div class="check" @click="addTools2(65)">
  7300. <img
  7301. src="../../assets/icon/checkNo.png"
  7302. alt
  7303. v-if="checktoolArray.indexOf(65) == -1"
  7304. />
  7305. <div class="checkDiv" v-else>
  7306. <img src="../../assets/icon/checkedIs.png" alt /><span
  7307. >已选择</span
  7308. >
  7309. </div>
  7310. </div>
  7311. </div>
  7312. </div>
  7313. <div class="toolSort" v-if="toolType == 1">
  7314. <div class="tool">
  7315. <div class="whiteBIcon" @click="addTools2(7)">
  7316. <img
  7317. src="../../assets/icon/secondToolList/mindNetwork.png"
  7318. alt
  7319. />
  7320. <div style="margin: 5px 0">思维网格</div>
  7321. </div>
  7322. <div class="check" @click="addTools2(7)">
  7323. <img
  7324. src="../../assets/icon/checkNo.png"
  7325. alt
  7326. v-if="checktoolArray.indexOf(7) == -1"
  7327. />
  7328. <div class="checkDiv" v-else>
  7329. <img src="../../assets/icon/checkedIs.png" alt /><span
  7330. >已选择</span
  7331. >
  7332. </div>
  7333. </div>
  7334. </div>
  7335. <div class="tool">
  7336. <div class="whiteBIcon" @click="addTools2(1)">
  7337. <img
  7338. src="../../assets/icon/secondToolList/whiteBoard.png"
  7339. alt
  7340. />
  7341. <div style="margin: 5px 0">电子白板</div>
  7342. </div>
  7343. <div class="check" @click="addTools2(1)">
  7344. <img
  7345. src="../../assets/icon/checkNo.png"
  7346. alt
  7347. v-if="checktoolArray.indexOf(1) == -1"
  7348. />
  7349. <div class="checkDiv" v-else>
  7350. <img src="../../assets/icon/checkedIs.png" alt /><span
  7351. >已选择</span
  7352. >
  7353. </div>
  7354. </div>
  7355. </div>
  7356. <div class="tool">
  7357. <div class="whiteBIcon" @click="addTools2(52)">
  7358. <img
  7359. src="../../assets/icon/fourthToolList/text.png"
  7360. alt
  7361. />
  7362. <div style="margin: 5px 0">文档</div>
  7363. </div>
  7364. <div class="check" @click="addTools2(52)">
  7365. <img
  7366. src="../../assets/icon/checkNo.png"
  7367. alt
  7368. v-if="checktoolArray.indexOf(52) == -1"
  7369. />
  7370. <div class="checkDiv" v-else>
  7371. <img src="../../assets/icon/checkedIs.png" alt /><span
  7372. >已选择</span
  7373. >
  7374. </div>
  7375. </div>
  7376. </div>
  7377. <div class="tool">
  7378. <div class="whiteBIcon" @click="addTools2(3)">
  7379. <img
  7380. src="../../assets/icon/secondToolList/mindMapping.png"
  7381. alt
  7382. />
  7383. <div style="margin: 5px 0">思维导图</div>
  7384. </div>
  7385. <div class="check" @click="addTools2(3)">
  7386. <img
  7387. src="../../assets/icon/checkNo.png"
  7388. alt
  7389. v-if="checktoolArray.indexOf(3) == -1"
  7390. />
  7391. <div class="checkDiv" v-else>
  7392. <img src="../../assets/icon/checkedIs.png" alt /><span
  7393. >已选择</span
  7394. >
  7395. </div>
  7396. </div>
  7397. </div>
  7398. <div class="tool">
  7399. <div class="whiteBIcon" @click="addTools2(48)">
  7400. <img
  7401. src="../../assets/icon/fourthToolList/table.png"
  7402. alt
  7403. />
  7404. <div style="margin: 5px 0">表格</div>
  7405. </div>
  7406. <div class="check" @click="addTools2(48)">
  7407. <img
  7408. src="../../assets/icon/checkNo.png"
  7409. alt
  7410. v-if="checktoolArray.indexOf(48) == -1"
  7411. />
  7412. <div class="checkDiv" v-else>
  7413. <img src="../../assets/icon/checkedIs.png" alt /><span
  7414. >已选择</span
  7415. >
  7416. </div>
  7417. </div>
  7418. </div>
  7419. </div>
  7420. <div class="toolSort" v-if="toolType == 6">
  7421. <div v-show="tooC == 49">
  7422. <img
  7423. @click="addTools(tooC, toolIndex, taskCount)"
  7424. src="../../assets/icon/fourthToolList/group.png"
  7425. alt
  7426. />
  7427. <div style="margin: 5px 0">学生分组</div>
  7428. </div>
  7429. </div>
  7430. <div class="toolSort" v-if="toolType == 2">
  7431. <div class="tool">
  7432. <div class="whiteBIcon" @click="addTools2(16)">
  7433. <img
  7434. src="../../assets/icon/thirdToolList/work.png"
  7435. alt
  7436. />
  7437. <div style="margin: 5px 0">作业提交</div>
  7438. </div>
  7439. <div class="check" @click="addTools2(16)">
  7440. <img
  7441. src="../../assets/icon/checkNo.png"
  7442. alt
  7443. v-if="checktoolArray.indexOf(16) == -1"
  7444. />
  7445. <div class="checkDiv" v-else>
  7446. <img src="../../assets/icon/checkedIs.png" alt /><span
  7447. >已选择</span
  7448. >
  7449. </div>
  7450. </div>
  7451. </div>
  7452. <div class="tool">
  7453. <div class="whiteBIcon" @click="addTools2(50)">
  7454. <img
  7455. src="../../assets/icon/thirdToolList/plwork.png"
  7456. alt
  7457. />
  7458. <div style="margin: 5px 0">批量上传</div>
  7459. </div>
  7460. <div class="check" @click="addTools2(50)">
  7461. <img
  7462. src="../../assets/icon/checkNo.png"
  7463. alt
  7464. v-if="checktoolArray.indexOf(50) == -1"
  7465. />
  7466. <div class="checkDiv" v-else>
  7467. <img src="../../assets/icon/checkedIs.png" alt /><span
  7468. >已选择</span
  7469. >
  7470. </div>
  7471. </div>
  7472. </div>
  7473. </div>
  7474. <div class="toolSort" v-if="toolType == 3">
  7475. <div class="tool">
  7476. <div class="whiteBIcon" @click="addTools2(18)">
  7477. <img
  7478. src="../../assets/icon/thirdToolList/trainPlatform.png"
  7479. alt
  7480. />
  7481. <div style="margin: 5px 0">训练平台</div>
  7482. </div>
  7483. <div class="check" @click="addTools2(18)">
  7484. <img
  7485. src="../../assets/icon/checkNo.png"
  7486. alt
  7487. v-if="checktoolArray.indexOf(18) == -1"
  7488. />
  7489. <div class="checkDiv" v-else>
  7490. <img src="../../assets/icon/checkedIs.png" alt /><span
  7491. >已选择</span
  7492. >
  7493. </div>
  7494. </div>
  7495. </div>
  7496. <div class="tool">
  7497. <div class="whiteBIcon" @click="addTools2(21)">
  7498. <img
  7499. src="../../assets/icon/fourthToolList/program.png"
  7500. alt
  7501. />
  7502. <div style="margin: 5px 0">AIoT Blockly</div>
  7503. </div>
  7504. <div class="check" @click="addTools2(21)">
  7505. <img
  7506. src="../../assets/icon/checkNo.png"
  7507. alt
  7508. v-if="checktoolArray.indexOf(21) == -1"
  7509. />
  7510. <div class="checkDiv" v-else>
  7511. <img src="../../assets/icon/checkedIs.png" alt /><span
  7512. >已选择</span
  7513. >
  7514. </div>
  7515. </div>
  7516. </div>
  7517. <div class="tool">
  7518. <div class="whiteBIcon" @click="addTools2(23)">
  7519. <img
  7520. src="../../assets/icon/fourthToolList/Pythonprogram.png"
  7521. alt
  7522. />
  7523. <div style="margin: 5px 0">AI Python</div>
  7524. </div>
  7525. <div class="check" @click="addTools2(23)">
  7526. <img
  7527. src="../../assets/icon/checkNo.png"
  7528. alt
  7529. v-if="checktoolArray.indexOf(23) == -1"
  7530. />
  7531. <div class="checkDiv" v-else>
  7532. <img src="../../assets/icon/checkedIs.png" alt /><span
  7533. >已选择</span
  7534. >
  7535. </div>
  7536. </div>
  7537. </div>
  7538. <div class="tool">
  7539. <div class="whiteBIcon" @click="addTools2(24)">
  7540. <img
  7541. src="../../assets/icon/fourthToolList/AIprogram.png"
  7542. alt
  7543. />
  7544. <div style="margin: 5px 0">AI Blockly</div>
  7545. </div>
  7546. <div class="check" @click="addTools2(24)">
  7547. <img
  7548. src="../../assets/icon/checkNo.png"
  7549. alt
  7550. v-if="checktoolArray.indexOf(24) == -1"
  7551. />
  7552. <div class="checkDiv" v-else>
  7553. <img src="../../assets/icon/checkedIs.png" alt /><span
  7554. >已选择</span
  7555. >
  7556. </div>
  7557. </div>
  7558. </div>
  7559. <div class="tool">
  7560. <div class="whiteBIcon" @click="addTools2(32)">
  7561. <img
  7562. src="../../assets/icon/thirdToolList/code.png"
  7563. alt
  7564. />
  7565. <div style="margin: 5px 0">源码编辑</div>
  7566. </div>
  7567. <div class="check" @click="addTools2(32)">
  7568. <img
  7569. src="../../assets/icon/checkNo.png"
  7570. alt
  7571. v-if="checktoolArray.indexOf(32) == -1"
  7572. />
  7573. <div class="checkDiv" v-else>
  7574. <img src="../../assets/icon/checkedIs.png" alt /><span
  7575. >已选择</span
  7576. >
  7577. </div>
  7578. </div>
  7579. </div>
  7580. <div class="tool">
  7581. <div class="whiteBIcon" @click="addTools2(57)">
  7582. <img
  7583. src="../../assets/icon/fourthToolList/cocopi.png"
  7584. alt
  7585. />
  7586. <div style="margin: 5px 0">CocoPi</div>
  7587. </div>
  7588. <div class="check" @click="addTools2(57)">
  7589. <img
  7590. src="../../assets/icon/checkNo.png"
  7591. alt
  7592. v-if="checktoolArray.indexOf(57) == -1"
  7593. />
  7594. <div class="checkDiv" v-else>
  7595. <img src="../../assets/icon/checkedIs.png" alt /><span
  7596. >已选择</span
  7597. >
  7598. </div>
  7599. </div>
  7600. </div>
  7601. <div class="tool">
  7602. <div class="whiteBIcon" @click="addTools2(63)">
  7603. <img
  7604. src="../../assets/icon/fourthToolList/Wood.png"
  7605. alt
  7606. />
  7607. <div style="margin: 5px 0">海龟编程</div>
  7608. </div>
  7609. <div class="check" @click="addTools2(63)">
  7610. <img
  7611. src="../../assets/icon/checkNo.png"
  7612. alt
  7613. v-if="checktoolArray.indexOf(63) == -1"
  7614. />
  7615. <div class="checkDiv" v-else>
  7616. <img src="../../assets/icon/checkedIs.png" alt /><span
  7617. >已选择</span
  7618. >
  7619. </div>
  7620. </div>
  7621. </div>
  7622. </div>
  7623. <div class="toolSort" v-if="toolType == 5">
  7624. <div class="tool">
  7625. <div class="whiteBIcon" @click="addTools2(28)">
  7626. <img
  7627. src="../../assets/icon/secondToolList/translation.png"
  7628. alt
  7629. />
  7630. <div style="margin: 5px 0">翻译</div>
  7631. </div>
  7632. <div class="check" @click="addTools2(28)">
  7633. <img
  7634. src="../../assets/icon/checkNo.png"
  7635. alt
  7636. v-if="checktoolArray.indexOf(28) == -1"
  7637. />
  7638. <div class="checkDiv" v-else>
  7639. <img src="../../assets/icon/checkedIs.png" alt /><span
  7640. >已选择</span
  7641. >
  7642. </div>
  7643. </div>
  7644. </div>
  7645. <div class="tool">
  7646. <div class="whiteBIcon" @click="addTools2(31)">
  7647. <img
  7648. src="../../assets/icon/secondToolList/networkPanel.png"
  7649. alt
  7650. />
  7651. <div style="margin: 5px 0">数字画板</div>
  7652. </div>
  7653. <div class="check" @click="addTools2(31)">
  7654. <img
  7655. src="../../assets/icon/checkNo.png"
  7656. alt
  7657. v-if="checktoolArray.indexOf(31) == -1"
  7658. />
  7659. <div class="checkDiv" v-else>
  7660. <img src="../../assets/icon/checkedIs.png" alt /><span
  7661. >已选择</span
  7662. >
  7663. </div>
  7664. </div>
  7665. </div>
  7666. <div class="tool">
  7667. <div class="whiteBIcon" @click="addTools2(39)">
  7668. <img
  7669. src="../../assets/icon/secondToolList/GeoGebra.png"
  7670. alt
  7671. />
  7672. <div style="margin: 5px 0">GeoGebra</div>
  7673. </div>
  7674. <div class="check" @click="addTools2(39)">
  7675. <img
  7676. src="../../assets/icon/checkNo.png"
  7677. alt
  7678. v-if="checktoolArray.indexOf(39) == -1"
  7679. />
  7680. <div class="checkDiv" v-else>
  7681. <img src="../../assets/icon/checkedIs.png" alt /><span
  7682. >已选择</span
  7683. >
  7684. </div>
  7685. </div>
  7686. </div>
  7687. <div class="tool">
  7688. <div class="whiteBIcon" @click="addTools2(66)">
  7689. <img
  7690. src="../../assets/icon/secondToolList/formulaEdi.png"
  7691. alt
  7692. />
  7693. <div style="margin: 5px 0">公式编辑</div>
  7694. </div>
  7695. <div class="check" @click="addTools2(66)">
  7696. <img
  7697. src="../../assets/icon/checkNo.png"
  7698. alt
  7699. v-if="checktoolArray.indexOf(66) == -1"
  7700. />
  7701. <div class="checkDiv" v-else>
  7702. <img src="../../assets/icon/checkedIs.png" alt /><span
  7703. >已选择</span
  7704. >
  7705. </div>
  7706. </div>
  7707. </div>
  7708. <div class="tool">
  7709. <div class="whiteBIcon" @click="addTools2(67)">
  7710. <img
  7711. src="../../assets/icon/secondToolList/molStr.png"
  7712. alt
  7713. />
  7714. <div style="margin: 5px 0">分子结构</div>
  7715. </div>
  7716. <div class="check" @click="addTools2(67)">
  7717. <img
  7718. src="../../assets/icon/checkNo.png"
  7719. alt
  7720. v-if="checktoolArray.indexOf(67) == -1"
  7721. />
  7722. <div class="checkDiv" v-else>
  7723. <img src="../../assets/icon/checkedIs.png" alt /><span
  7724. >已选择</span
  7725. >
  7726. </div>
  7727. </div>
  7728. </div>
  7729. <div class="tool">
  7730. <div class="whiteBIcon" @click="addTools2(68)">
  7731. <img
  7732. src="../../assets/icon/secondToolList/timeAxis.png"
  7733. alt
  7734. />
  7735. <div style="margin: 5px 0">时间轴</div>
  7736. </div>
  7737. <div class="check" @click="addTools2(68)">
  7738. <img
  7739. src="../../assets/icon/checkNo.png"
  7740. alt
  7741. v-if="checktoolArray.indexOf(68) == -1"
  7742. />
  7743. <div class="checkDiv" v-else>
  7744. <img src="../../assets/icon/checkedIs.png" alt /><span
  7745. >已选择</span
  7746. >
  7747. </div>
  7748. </div>
  7749. </div>
  7750. </div>
  7751. <div class="toolSort" v-if="toolType == 7">
  7752. <div class="tool">
  7753. <div class="whiteBIcon" @click="addTools2(40)">
  7754. <img
  7755. src="../../assets/icon/secondToolList/eval.png"
  7756. alt
  7757. />
  7758. <div style="margin: 5px 0">个人评价</div>
  7759. </div>
  7760. <div class="check" @click="addTools2(40)">
  7761. <img
  7762. src="../../assets/icon/checkNo.png"
  7763. alt
  7764. v-if="checktoolArray.indexOf(40) == -1"
  7765. />
  7766. <div class="checkDiv" v-else>
  7767. <img src="../../assets/icon/checkedIs.png" alt /><span
  7768. >已选择</span
  7769. >
  7770. </div>
  7771. </div>
  7772. </div>
  7773. </div>
  7774. <div class="toolSort" v-if="toolType == 4">
  7775. <div class="tool">
  7776. <div class="whiteBIcon" @click="addTools2(26)">
  7777. <img
  7778. src="../../assets/icon/thirdToolList/courseDesign.png"
  7779. alt
  7780. />
  7781. <div style="margin: 5px 0">课程设计</div>
  7782. </div>
  7783. <div class="check" @click="addTools2(26)">
  7784. <img
  7785. src="../../assets/icon/checkNo.png"
  7786. alt
  7787. v-if="checktoolArray.indexOf(26) == -1"
  7788. />
  7789. <div class="checkDiv" v-else>
  7790. <img src="../../assets/icon/checkedIs.png" alt /><span
  7791. >已选择</span
  7792. >
  7793. </div>
  7794. </div>
  7795. </div>
  7796. <div class="tool">
  7797. <div class="whiteBIcon" @click="addTools2(25)">
  7798. <img
  7799. src="../../assets/icon/thirdToolList/evalua.png"
  7800. alt
  7801. />
  7802. <div style="margin: 5px 0">目标管理</div>
  7803. </div>
  7804. <div class="check" @click="addTools2(25)">
  7805. <img
  7806. src="../../assets/icon/checkNo.png"
  7807. alt
  7808. v-if="checktoolArray.indexOf(25) == -1"
  7809. />
  7810. <div class="checkDiv" v-else>
  7811. <img src="../../assets/icon/checkedIs.png" alt /><span
  7812. >已选择</span
  7813. >
  7814. </div>
  7815. </div>
  7816. </div>
  7817. </div>
  7818. </div>
  7819. </div>
  7820. </div>
  7821. </div> -->
  7822. <div
  7823. class="vedioBox"
  7824. style="margin-top: 10px; border-radius: 20px"
  7825. v-if="
  7826. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7827. .eList &&
  7828. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7829. .eList.length &&
  7830. chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
  7831. .eList.length > 0 &&
  7832. tType != 2
  7833. "
  7834. >
  7835. <div
  7836. class="queTop"
  7837. style="
  7838. font-size: 20px;
  7839. padding: 15px 0 15px 37px;
  7840. font-weight: bold;
  7841. "
  7842. >
  7843. <!-- <div class="question" style="width: 30px">
  7844. <img src="../assets/icon/toolIcon.png" alt />
  7845. </div>
  7846. <div class="queTitle">
  7847. <div>工具</div>
  7848. </div>-->
  7849. 评一评
  7850. </div>
  7851. <div class="evaCss" :class="{ evaCssMax: Stbodywidth < 974 }">
  7852. <div class="elist_input" :style="{width:evalua ? chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'45%':'calc(100% - 180px)' : '100%'}">
  7853. <el-table
  7854. :data="
  7855. chapInfoList[courseType].chapterInfo[0].taskJson[
  7856. taskCount
  7857. ].eList
  7858. "
  7859. :header-cell-style="{ background: '#F0F4FA' }"
  7860. :row-class-name="tableRowClassName"
  7861. border
  7862. stripe
  7863. style="width: 100%"
  7864. >
  7865. <el-table-column
  7866. label="评价名称"
  7867. align="center"
  7868. >
  7869. <template slot-scope="scope"
  7870. ><div>{{ scope.row.value }}</div></template
  7871. >
  7872. </el-table-column>
  7873. <el-table-column
  7874. label="评价描述"
  7875. align="center"
  7876. >
  7877. <template slot-scope="scope"
  7878. ><div>
  7879. {{ scope.row.detail != "" ? scope.row.detail : "-" }}
  7880. </div></template
  7881. >
  7882. </el-table-column>
  7883. <el-table-column label="目标" align="center">
  7884. <template slot-scope="scope"
  7885. ><div>
  7886. {{
  7887. scope.row.target
  7888. ? scope.row.target[scope.row.target.length - 1]
  7889. : "-"
  7890. }}
  7891. </div></template
  7892. ></el-table-column
  7893. >
  7894. </el-table>
  7895. <!-- <div
  7896. v-for="(eItem, eIndex) in chapInfoList[courseType]
  7897. .chapterInfo[0].taskJson[taskCount].eList"
  7898. :key="eIndex"
  7899. class="elist_input_box"
  7900. >
  7901. <div style="width: 95%">
  7902. <div
  7903. style="
  7904. display: flex;
  7905. flex-direction: row;
  7906. flex-wrap: nowrap;
  7907. align-items: center;
  7908. "
  7909. >
  7910. <div style="max-width: calc(100% - 285px)">
  7911. <span>{{ eItem.value }}</span>
  7912. </div>
  7913. <div
  7914. style="
  7915. padding-left: 25px;
  7916. display: flex;
  7917. flex-direction: row;
  7918. align-items: center;
  7919. "
  7920. >
  7921. <el-rate
  7922. v-model="eItem.score"
  7923. :colors="colors"
  7924. disabled
  7925. ></el-rate>
  7926. </div>
  7927. </div>
  7928. <div class="elist_inptu_text" style="padding-left: 10px">
  7929. <span v-if="eItem.detail != ''">{{
  7930. eItem.detail
  7931. }}</span>
  7932. <span v-else style="color: #b2b1b3; font-size: 14px"
  7933. >暂无描述...</span
  7934. >
  7935. </div>
  7936. </div>
  7937. </div> -->
  7938. </div>
  7939. <div
  7940. v-if="evalua"
  7941. style="
  7942. border: 1px solid #e5e5e5;
  7943. max-width: 650px;
  7944. width: 100%;
  7945. margin-top: 20px;
  7946. box-shadow: 3px 1px 15px 3px #e0e0e0;
  7947. "
  7948. :style="{width:chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'100%':'116px'}"
  7949. >
  7950. <div class="e_add_top">
  7951. <div class="e_add_title" style="width: 100%">
  7952. <!-- <span>目标管理名称</span> -->
  7953. <span v-if="chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2">{{ eTitle }}</span>
  7954. <img
  7955. v-if="chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2"
  7956. src="../../assets/line.png"
  7957. class="cru_line"
  7958. style="
  7959. width: 125px;
  7960. height: 20px;
  7961. bottom: -10px;
  7962. left: 5px;
  7963. "
  7964. />
  7965. <!-- <el-input
  7966. v-model="eTitle"
  7967. placeholder="请输入名称"
  7968. @change="setMindData"
  7969. ></el-input>-->
  7970. <div v-show="chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2" class="show_taskD show" style="margin:0 0 0 auto" @click="foldEva()"><img src="../../assets/icon/newIcon/icon-slide.png" />收起目标</div>
  7971. <div v-show="!chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2" style="margin:0 0 0 auto" class="show_taskD" @click="foldEva()"><img src="../../assets/icon/newIcon/icon-slide.png" />展开目标</div>
  7972. </div>
  7973. </div>
  7974. <div class="e_add_content" v-if="chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2" >
  7975. <div class="e_add_list_pbox">
  7976. <div class="e_add_list_pbox_title">
  7977. <!-- <span class="type_title">切换模式</span> -->
  7978. <div class="type_content">
  7979. <span
  7980. :class="{ active: typeMode == 1 }"
  7981. @click="typeMode = 1"
  7982. >目标树</span
  7983. >
  7984. <span
  7985. :class="{ active: typeMode == 2 }"
  7986. @click="typeMode = 2"
  7987. >目标罗盘</span
  7988. >
  7989. <!-- <span
  7990. :class="{ active: typeMode == 3 }"
  7991. @click="typeMode = 3"
  7992. >目标看板</span
  7993. > -->
  7994. </div>
  7995. </div>
  7996. <div class="e_add_list_pbox_content" style="min-height: 200px;">
  7997. <Mind
  7998. :showBar="false"
  7999. :mindData="data"
  8000. style="width: 100%"
  8001. v-show="typeMode == 1"
  8002. ></Mind>
  8003. <Sunburst
  8004. :Josn="eJson"
  8005. :num="eJSONNum"
  8006. style="width: 100%"
  8007. v-if="typeMode == 2"
  8008. ></Sunburst>
  8009. <SeeBoard
  8010. :Josn="eJson"
  8011. :num="eJSONNum"
  8012. :ename="eTitle"
  8013. style="width: 100%"
  8014. v-if="typeMode == 3"
  8015. >
  8016. </SeeBoard>
  8017. </div>
  8018. </div>
  8019. </div>
  8020. </div>
  8021. </div>
  8022. </div>
  8023. <!-- <div
  8024. class="project_box"
  8025. style="margin-top: 15px; padding-bottom: 30px"
  8026. >
  8027. <div
  8028. style="
  8029. display: flex;
  8030. flex-wrap: nowrap;
  8031. flex-direction: column;
  8032. position: relative;
  8033. "
  8034. >
  8035. <div class="queTop">
  8036. <div class="question">
  8037. <img src="../../assets/icon/homeWork.png" alt="" />
  8038. </div>
  8039. <div class="queTitle">
  8040. <div>作业提交<span>(提交图文视频等)</span></div>
  8041. <div>:任务:{{ task.task }}</div>
  8042. </div>
  8043. </div>
  8044. <div class="ediBottom">
  8045. <div
  8046. class="addEditor"
  8047. style="margin-top: 23px"
  8048. @click="openAddWork"
  8049. v-if="!isNoHomeWork"
  8050. >
  8051. 选择文件
  8052. </div>
  8053. <div
  8054. class="addEditor"
  8055. style="margin-top: 23px"
  8056. @click="openAddWork"
  8057. v-else
  8058. >
  8059. 已提交
  8060. </div>
  8061. </div>
  8062. </div>
  8063. </div>-->
  8064. </div>
  8065. </div>
  8066. <el-dialog
  8067. title="作业提交"
  8068. :visible.sync="dialogVisible"
  8069. :append-to-body="true"
  8070. width="500px"
  8071. :before-close="handleClose"
  8072. class="dialog_change"
  8073. >
  8074. <div class="marginT">
  8075. <div>上传文件</div>
  8076. <div
  8077. class="chapter_add"
  8078. @click="addImg($event)"
  8079. v-if="studyJuri[0].cover.length == 0"
  8080. >
  8081. <div class="up_photo">
  8082. <img src="../../assets/icon/uploadImg.png" alt />
  8083. </div>
  8084. <!-- <input
  8085. type="file"
  8086. accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
  8087. style="display: none"
  8088. @change="beforeUpload1($event, 1)"
  8089. /> -->
  8090. <input
  8091. type="file"
  8092. accept="*"
  8093. style="display: none"
  8094. @change="beforeUpload1($event, 1)"
  8095. />
  8096. <!-- <input
  8097. type="file"
  8098. accept="image/*"
  8099. capture="camera"
  8100. style="display: none"
  8101. @change="beforeUpload1($event, 1)"
  8102. /> -->
  8103. </div>
  8104. <div
  8105. class="chapter_add"
  8106. style="
  8107. display: flex;
  8108. width: 100%;
  8109. flex-direction: row;
  8110. flex-wrap: wrap;
  8111. justify-content: flex-start;
  8112. padding: 15px 0;
  8113. "
  8114. v-if="studyJuri[0].cover.length > 0"
  8115. >
  8116. <div class="upCover">
  8117. <img
  8118. :src="studyJuri[0].cover[0].url"
  8119. alt
  8120. v-if="fileType == 0"
  8121. />
  8122. <img :src="word" alt v-else-if="fileType == 1" />
  8123. <img :src="video" alt v-else-if="fileType == 2" />
  8124. <img :src="word2" alt v-else-if="fileType == 3" />
  8125. <span class="picName">{{ studyJuri[0].cover[0].name }}</span>
  8126. <div class="deleteWord" @click="clean(1)">
  8127. <img src="../../assets/icon/deleteWorks.png" alt />
  8128. </div>
  8129. </div>
  8130. </div>
  8131. </div>
  8132. <div
  8133. class="upload_send"
  8134. @click="addCourseWorks(taskCount)"
  8135. v-if="!proVisible"
  8136. >
  8137. 提交
  8138. </div>
  8139. </el-dialog>
  8140. </div>
  8141. </div>
  8142. <!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
  8143. <classRoomHelper v-if="!['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
  8144. '/courseDetail?userid=' +
  8145. userid +
  8146. '&oid=' +
  8147. oid +
  8148. '&org=' +
  8149. org +
  8150. '&cid=' +
  8151. classId +
  8152. '&courseId=' +
  8153. id +
  8154. '&tType=' +
  8155. tType +
  8156. '&screenType=' +
  8157. screenType
  8158. )"></classRoomHelper>
  8159. <div
  8160. class="pButton"
  8161. @click="(pzDialog = true), selectPz()"
  8162. v-if="pzDialog == false && (tType == 4 || ispzType == 4)"
  8163. style="background-image: linear-gradient(90deg, #477cd7, #65b9fc)"
  8164. >
  8165. <!-- 批 -->
  8166. <img src="../../assets/mlBtn.png" style="width: 25px" alt="" />
  8167. </div>
  8168. <div v-if="pzDialog == true" class="newDialogCss" :style="`right:${commentRight}`">
  8169. <div class="pzTop2">
  8170. <!-- <div>评论</div>
  8171. <div @click="pzDialog = false">
  8172. <img src="../../assets/close1.png" alt="" />
  8173. </div> -->
  8174. <div class="checkbox">
  8175. <!-- <div class="check" style="font-size: 25px; position: unset">
  8176. 评论
  8177. </div> -->
  8178. <div class="cb-tabList">
  8179. <div :class="[commentTagShow==0?'cb-tabItem':'']" @click="commentTagShow=0">评论</div>
  8180. <!-- <div :class="[commentTagShow==1?'cb-tabItem':'']" @click="commentTagShow=1">评分</div> -->
  8181. <!-- v-show="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'" -->
  8182. <div :class="[commentTagShow==2?'cb-tabItem':'']" @click="commentTagShow=2">总评</div>
  8183. </div>
  8184. <el-select v-model="pzStype" @change="selectPz" class="selectBox" v-show="commentTagShow == 0">
  8185. <el-option label="时间降序" :value="1"></el-option>
  8186. <el-option label="时间升序" :value="2"></el-option>
  8187. <el-option label="我的评课" :value="3"></el-option>
  8188. </el-select>
  8189. <img src="../../assets/pzBtn.png" @click="pzDialog = false" alt="" />
  8190. </div>
  8191. </div>
  8192. <div :class="pzList && pzList.length ? 'pzBox' : 'noPzBox'" v-if="commentTagShow==0">
  8193. <div class="pzListBox" v-if="pzList && pzList.length">
  8194. <div class="pzList" v-for="(pz, pzIndex) in pzList" :key="pzIndex">
  8195. <div class="pzNavTop">
  8196. <div>评</div>
  8197. <div>
  8198. {{
  8199. pz.username && pz.username.length > 5
  8200. ? pz.username.substring(0, 5) + "..."
  8201. : pz.username
  8202. }}的评论
  8203. </div>
  8204. <div
  8205. class="pzDelete"
  8206. v-if="pz.userid == userid"
  8207. @click="deletePz(pz.id)"
  8208. >
  8209. 删除
  8210. </div>
  8211. </div>
  8212. <div
  8213. @click="checkImg(getImgList(pz.content))"
  8214. class="pzContent cont"
  8215. v-html="pz.content"
  8216. v-if="pz.type == '1'"
  8217. ></div>
  8218. <div class="pzContent" v-if="pz.type == '2'">
  8219. <audio :src="pz.content" controls="controls" ref="audio">
  8220. Your browser does not support the audio element.
  8221. </audio>
  8222. </div>
  8223. <div class="pzContent" v-if="pz.type == '3'">
  8224. <img
  8225. :src="pz.content"
  8226. style="width: 90%; margin: 0 auto; display: block"
  8227. @click="previewImg(pz.content)"
  8228. />
  8229. </div>
  8230. <div class="timeAndReply">
  8231. <div class="time">
  8232. {{ pz.time }}
  8233. </div>
  8234. <div @click="setReplyIndex(pz.id, pzIndex)">回复</div>
  8235. </div>
  8236. <div v-if="pz.hfList && pz.hfList.length > 0" class="hfBox">
  8237. <div
  8238. v-for="(h, hIndex) in pz.hfList"
  8239. :key="hIndex"
  8240. class="hfItem"
  8241. >
  8242. <div class="whoReplyWho">
  8243. <div class="hfName">{{ h.username }}</div>
  8244. <div class="hfImg">
  8245. <img src="../../assets/icon/newIcons/right.png" alt="" />
  8246. </div>
  8247. <div class="hfName">{{ pz.username }}</div>
  8248. </div>
  8249. <div class="hfContent" v-html="h.content"></div>
  8250. <div class="hfBottom">
  8251. <div class="hfTime">{{ h.time }}</div>
  8252. <div
  8253. class="deleteHfItem"
  8254. @click="deleteReply(h.id)"
  8255. v-if="userid == h.userid"
  8256. >
  8257. <img src="../../assets/icon/newIcons/delete.png" alt="" />
  8258. </div>
  8259. </div>
  8260. </div>
  8261. </div>
  8262. <!-- <div class="replyBox" v-if="replyIndex[pzIndex] && replyIndex[pzIndex] == true">
  8263. <div class="replyInput">
  8264. <el-input v-model="reply[pzIndex]"></el-input>
  8265. </div>
  8266. <el-button @click="addHf(pz.id, pzIndex)">回复</el-button>
  8267. </div> -->
  8268. </div>
  8269. </div>
  8270. <div class="noPz" v-else>
  8271. <img src="../../assets/icon/noPz.png" alt="" />
  8272. </div>
  8273. <div class="addPzButton">
  8274. <div class="addPz" @click="(addPzDialog = true), (pzType = 1)">
  8275. 添加评论
  8276. </div>
  8277. <!-- <div class="img1">
  8278. <div @click="(addPzDialog = true), (pzType = 2)">
  8279. <img src="../../assets/audio.png" /><span>音频</span>
  8280. </div>
  8281. </div> -->
  8282. </div>
  8283. </div>
  8284. <div class="scoreList" v-if="commentTagShow==1">
  8285. <scoreItem v-for="item in scoreList.datalist" @refresh="getScoreList" :data="item" :isScore="scoreList.isScoreList.filter(i=>(i.userid==item.userid && i.courseid == item.courseId))" :key="item.courseId"/>
  8286. </div>
  8287. <div class="scoreList" v-if="commentTagShow==2" style="position: relative">
  8288. <scoreZong :courseid="id" :userid="userid" @insertMemorandum="insertMemorandum"></scoreZong>
  8289. </div>
  8290. </div>
  8291. <div
  8292. v-if="toolDialogVisible == true"
  8293. class="toolMask"
  8294. @click="toolDialogVisible = false"
  8295. ></div>
  8296. <div v-if="toolDialogVisible == true" class="addToolCss">
  8297. <div class="toolTop">
  8298. <div style="font-weight: bold">新增工具</div>
  8299. <div @click="toolDialogVisible = false">
  8300. <img src="../../assets/icon/close.png" class="toolClose" alt="" />
  8301. </div>
  8302. </div>
  8303. <div class="tool_box">
  8304. <div class="tool_type_box">
  8305. <div class="chooseWho">
  8306. <div
  8307. :class="toolType == 0 ? 'isChooseActive' : ''"
  8308. @click="(toolType = 0), $forceUpdate()"
  8309. >
  8310. 互动类
  8311. </div>
  8312. <div
  8313. :class="toolType == 1 ? 'isChooseActive' : ''"
  8314. @click="(toolType = 1), $forceUpdate()"
  8315. >
  8316. 思维类
  8317. </div>
  8318. <div
  8319. :class="toolType == 2 ? 'isChooseActive' : ''"
  8320. @click="(toolType = 2), $forceUpdate()"
  8321. >
  8322. 测评类
  8323. </div>
  8324. <div
  8325. :class="toolType == 3 ? 'isChooseActive' : ''"
  8326. @click="(toolType = 3), $forceUpdate()"
  8327. >
  8328. 编程类
  8329. </div>
  8330. <div
  8331. :class="toolType == 5 ? 'isChooseActive' : ''"
  8332. @click="(toolType = 5), $forceUpdate()"
  8333. >
  8334. 学科类
  8335. </div>
  8336. </div>
  8337. </div>
  8338. <div>
  8339. <div class="toolSort" v-if="toolType == 0">
  8340. <div
  8341. class="tool"
  8342. :class="{ isToolChoose: checktoolArray.indexOf(10) != -1 }"
  8343. @click="addTools2(10)"
  8344. >
  8345. <div class="whiteBIcon">
  8346. <img src="../../assets/icon/thirdToolList/time.png" alt />
  8347. <div style="margin: 5px 0">倒计时</div>
  8348. </div>
  8349. <div class="check">
  8350. <div
  8351. v-if="checktoolArray.indexOf(10) == -1"
  8352. class="noChoose"
  8353. ></div>
  8354. <div v-else class="isChoose"></div>
  8355. </div>
  8356. </div>
  8357. <div
  8358. class="tool"
  8359. :class="{ isToolChoose: checktoolArray.indexOf(65) != -1 }"
  8360. @click="addTools2(65)"
  8361. >
  8362. <div class="whiteBIcon">
  8363. <img src="../../assets/icon/firstToolList/pickPeople.png" alt />
  8364. <div style="margin: 5px 0">挑人</div>
  8365. </div>
  8366. <div class="check">
  8367. <div
  8368. v-if="checktoolArray.indexOf(65) == -1"
  8369. class="noChoose"
  8370. ></div>
  8371. <div v-else class="isChoose"></div>
  8372. </div>
  8373. </div>
  8374. </div>
  8375. <div class="toolSort" v-if="toolType == 1">
  8376. <div
  8377. class="tool"
  8378. :class="{ isToolChoose: checktoolArray.indexOf(7) != -1 }"
  8379. @click="addTools2(7)"
  8380. >
  8381. <div class="whiteBIcon">
  8382. <img
  8383. src="../../assets/icon/secondToolList/mindNetwork.png"
  8384. alt
  8385. />
  8386. <div style="margin: 5px 0">思维网格</div>
  8387. </div>
  8388. <div class="check">
  8389. <div
  8390. v-if="checktoolArray.indexOf(7) == -1"
  8391. class="noChoose"
  8392. ></div>
  8393. <div v-else class="isChoose"></div>
  8394. </div>
  8395. </div>
  8396. <div
  8397. class="tool"
  8398. :class="{ isToolChoose: checktoolArray.indexOf(1) != -1 }"
  8399. @click="addTools2(1)"
  8400. >
  8401. <div class="whiteBIcon">
  8402. <img
  8403. src="../../assets/icon/secondToolList/whiteBoard.png"
  8404. alt
  8405. />
  8406. <div style="margin: 5px 0">电子白板</div>
  8407. </div>
  8408. <div class="check">
  8409. <div
  8410. v-if="checktoolArray.indexOf(1) == -1"
  8411. class="noChoose"
  8412. ></div>
  8413. <div v-else class="isChoose"></div>
  8414. </div>
  8415. </div>
  8416. <div
  8417. class="tool"
  8418. :class="{ isToolChoose: checktoolArray.indexOf(52) != -1 }"
  8419. @click="addTools2(52)"
  8420. >
  8421. <div class="whiteBIcon">
  8422. <img src="../../assets/icon/fourthToolList/text.png" alt />
  8423. <div style="margin: 5px 0">文档</div>
  8424. </div>
  8425. <div class="check">
  8426. <div
  8427. v-if="checktoolArray.indexOf(52) == -1"
  8428. class="noChoose"
  8429. ></div>
  8430. <div v-else class="isChoose"></div>
  8431. </div>
  8432. </div>
  8433. <div
  8434. class="tool"
  8435. :class="{ isToolChoose: checktoolArray.indexOf(3) != -1 }"
  8436. @click="addTools2(3)"
  8437. >
  8438. <div class="whiteBIcon">
  8439. <img
  8440. src="../../assets/icon/secondToolList/mindMapping.png"
  8441. alt
  8442. />
  8443. <div style="margin: 5px 0">思维导图</div>
  8444. </div>
  8445. <div class="check">
  8446. <div
  8447. v-if="checktoolArray.indexOf(3) == -1"
  8448. class="noChoose"
  8449. ></div>
  8450. <div v-else class="isChoose"></div>
  8451. </div>
  8452. </div>
  8453. <div
  8454. class="tool"
  8455. :class="{ isToolChoose: checktoolArray.indexOf(48) != -1 }"
  8456. @click="addTools2(48)"
  8457. >
  8458. <div class="whiteBIcon">
  8459. <img src="../../assets/icon/fourthToolList/table.png" alt />
  8460. <div style="margin: 5px 0">表格</div>
  8461. </div>
  8462. <div class="check">
  8463. <div
  8464. v-if="checktoolArray.indexOf(48) == -1"
  8465. class="noChoose"
  8466. ></div>
  8467. <div v-else class="isChoose"></div>
  8468. </div>
  8469. </div>
  8470. </div>
  8471. <div class="toolSort" v-if="toolType == 6">
  8472. <div v-show="tooC == 49">
  8473. <img
  8474. @click="addTools(tooC, toolIndex, taskCount)"
  8475. src="../../assets/icon/fourthToolList/group.png"
  8476. alt
  8477. />
  8478. <div style="margin: 5px 0">学生分组</div>
  8479. </div>
  8480. </div>
  8481. <div class="toolSort" v-if="toolType == 2">
  8482. <div
  8483. class="tool"
  8484. :class="{ isToolChoose: checktoolArray.indexOf(16) != -1 }"
  8485. @click="addTools2(16)"
  8486. >
  8487. <div class="whiteBIcon">
  8488. <img src="../../assets/icon/thirdToolList/work.png" alt />
  8489. <div style="margin: 5px 0">作业提交</div>
  8490. </div>
  8491. <div class="check">
  8492. <div
  8493. v-if="checktoolArray.indexOf(16) == -1"
  8494. class="noChoose"
  8495. ></div>
  8496. <div v-else class="isChoose"></div>
  8497. </div>
  8498. </div>
  8499. <div
  8500. class="tool"
  8501. :class="{ isToolChoose: checktoolArray.indexOf(50) != -1 }"
  8502. @click="addTools2(50)"
  8503. >
  8504. <div class="whiteBIcon">
  8505. <img src="../../assets/icon/thirdToolList/plwork.png" alt />
  8506. <div style="margin: 5px 0">批量上传</div>
  8507. </div>
  8508. <div class="check">
  8509. <div
  8510. v-if="checktoolArray.indexOf(50) == -1"
  8511. class="noChoose"
  8512. ></div>
  8513. <div v-else class="isChoose"></div>
  8514. </div>
  8515. </div>
  8516. </div>
  8517. <div class="toolSort" v-if="toolType == 3">
  8518. <div
  8519. class="tool"
  8520. :class="{ isToolChoose: checktoolArray.indexOf(18) != -1 }"
  8521. @click="addTools2(18)"
  8522. >
  8523. <div class="whiteBIcon">
  8524. <img
  8525. src="../../assets/icon/thirdToolList/trainPlatform.png"
  8526. alt
  8527. />
  8528. <div style="margin: 5px 0">训练平台</div>
  8529. </div>
  8530. <div class="check">
  8531. <div
  8532. v-if="checktoolArray.indexOf(18) == -1"
  8533. class="noChoose"
  8534. ></div>
  8535. <div v-else class="isChoose"></div>
  8536. </div>
  8537. </div>
  8538. <div
  8539. class="tool"
  8540. :class="{ isToolChoose: checktoolArray.indexOf(21) != -1 }"
  8541. @click="addTools2(21)"
  8542. >
  8543. <div class="whiteBIcon">
  8544. <img src="../../assets/icon/fourthToolList/program.png" alt />
  8545. <div style="margin: 5px 0">AIoT Blockly</div>
  8546. </div>
  8547. <div class="check">
  8548. <div
  8549. v-if="checktoolArray.indexOf(21) == -1"
  8550. class="noChoose"
  8551. ></div>
  8552. <div v-else class="isChoose"></div>
  8553. </div>
  8554. </div>
  8555. <div
  8556. class="tool"
  8557. :class="{ isToolChoose: checktoolArray.indexOf(23) != -1 }"
  8558. @click="addTools2(23)"
  8559. >
  8560. <div class="whiteBIcon">
  8561. <img
  8562. src="../../assets/icon/fourthToolList/Pythonprogram.png"
  8563. alt
  8564. />
  8565. <div style="margin: 5px 0">AI Python</div>
  8566. </div>
  8567. <div class="check">
  8568. <div
  8569. v-if="checktoolArray.indexOf(23) == -1"
  8570. class="noChoose"
  8571. ></div>
  8572. <div v-else class="isChoose"></div>
  8573. </div>
  8574. </div>
  8575. <div
  8576. class="tool"
  8577. :class="{ isToolChoose: checktoolArray.indexOf(24) != -1 }"
  8578. @click="addTools2(24)"
  8579. >
  8580. <div class="whiteBIcon">
  8581. <img src="../../assets/icon/fourthToolList/AIprogram.png" alt />
  8582. <div style="margin: 5px 0">AI Blockly</div>
  8583. </div>
  8584. <div class="check">
  8585. <div
  8586. v-if="checktoolArray.indexOf(24) == -1"
  8587. class="noChoose"
  8588. ></div>
  8589. <div v-else class="isChoose"></div>
  8590. </div>
  8591. </div>
  8592. <div
  8593. class="tool"
  8594. :class="{ isToolChoose: checktoolArray.indexOf(32) != -1 }"
  8595. @click="addTools2(32)"
  8596. >
  8597. <div class="whiteBIcon">
  8598. <img src="../../assets/icon/thirdToolList/code.png" alt />
  8599. <div style="margin: 5px 0">源码编辑</div>
  8600. </div>
  8601. <div class="check">
  8602. <div
  8603. v-if="checktoolArray.indexOf(32) == -1"
  8604. class="noChoose"
  8605. ></div>
  8606. <div v-else class="isChoose"></div>
  8607. </div>
  8608. </div>
  8609. <div
  8610. class="tool"
  8611. :class="{ isToolChoose: checktoolArray.indexOf(57) != -1 }"
  8612. @click="addTools2(57)"
  8613. >
  8614. <div class="whiteBIcon">
  8615. <img src="../../assets/icon/fourthToolList/cocopi.png" alt />
  8616. <div style="margin: 5px 0">CocoPi</div>
  8617. </div>
  8618. <div class="check">
  8619. <div
  8620. v-if="checktoolArray.indexOf(57) == -1"
  8621. class="noChoose"
  8622. ></div>
  8623. <div v-else class="isChoose"></div>
  8624. </div>
  8625. </div>
  8626. <div
  8627. class="tool"
  8628. :class="{ isToolChoose: checktoolArray.indexOf(63) != -1 }"
  8629. @click="addTools2(63)"
  8630. >
  8631. <div class="whiteBIcon">
  8632. <img src="../../assets/icon/fourthToolList/Wood.png" alt />
  8633. <div style="margin: 5px 0">海龟编程</div>
  8634. </div>
  8635. <div class="check">
  8636. <div
  8637. v-if="checktoolArray.indexOf(63) == -1"
  8638. class="noChoose"
  8639. ></div>
  8640. <div v-else class="isChoose"></div>
  8641. </div>
  8642. </div>
  8643. <div
  8644. class="tool"
  8645. :class="{ isToolChoose: checktoolArray.indexOf(71) != -1 }"
  8646. @click="addTools2(71)"
  8647. >
  8648. <div class="whiteBIcon">
  8649. <img src="../../assets/icon/fourthToolList/chatgpt.png" alt />
  8650. <div style="margin: 5px 0">AI智能体</div>
  8651. </div>
  8652. <div class="check">
  8653. <div
  8654. v-if="checktoolArray.indexOf(71) == -1"
  8655. class="noChoose"
  8656. ></div>
  8657. <div v-else class="isChoose"></div>
  8658. </div>
  8659. </div>
  8660. </div>
  8661. <div class="toolSort" v-if="toolType == 7">
  8662. <div
  8663. class="tool"
  8664. :class="{ isToolChoose: checktoolArray.indexOf(40) != -1 }"
  8665. @click="addTools2(40)"
  8666. >
  8667. <div class="whiteBIcon">
  8668. <img src="../../assets/icon/secondToolList/eval.png" alt />
  8669. <div style="margin: 5px 0">个人评价</div>
  8670. </div>
  8671. <div class="check">
  8672. <div
  8673. v-if="checktoolArray.indexOf(40) == -1"
  8674. class="noChoose"
  8675. ></div>
  8676. <div v-else class="isChoose"></div>
  8677. </div>
  8678. </div>
  8679. </div>
  8680. <div class="toolSort" v-if="toolType == 5">
  8681. <div
  8682. class="tool"
  8683. :class="{ isToolChoose: checktoolArray.indexOf(28) != -1 }"
  8684. @click="addTools2(28)"
  8685. >
  8686. <div class="whiteBIcon">
  8687. <img
  8688. src="../../assets/icon/secondToolList/translation.png"
  8689. alt
  8690. />
  8691. <div style="margin: 5px 0">翻译</div>
  8692. </div>
  8693. <div class="check">
  8694. <div
  8695. v-if="checktoolArray.indexOf(28) == -1"
  8696. class="noChoose"
  8697. ></div>
  8698. <div v-else class="isChoose"></div>
  8699. </div>
  8700. </div>
  8701. <div
  8702. class="tool"
  8703. :class="{ isToolChoose: checktoolArray.indexOf(31) != -1 }"
  8704. @click="addTools2(31)"
  8705. >
  8706. <div class="whiteBIcon">
  8707. <img
  8708. src="../../assets/icon/secondToolList/networkPanel.png"
  8709. alt
  8710. />
  8711. <div style="margin: 5px 0">数字画板</div>
  8712. </div>
  8713. <div class="check">
  8714. <div
  8715. v-if="checktoolArray.indexOf(31) == -1"
  8716. class="noChoose"
  8717. ></div>
  8718. <div v-else class="isChoose"></div>
  8719. </div>
  8720. </div>
  8721. <div
  8722. class="tool"
  8723. :class="{ isToolChoose: checktoolArray.indexOf(39) != -1 }"
  8724. @click="addTools2(39)"
  8725. >
  8726. <div class="whiteBIcon">
  8727. <img src="../../assets/icon/secondToolList/GeoGebra.png" alt />
  8728. <div style="margin: 5px 0">GeoGebra</div>
  8729. </div>
  8730. <div class="check">
  8731. <div
  8732. v-if="checktoolArray.indexOf(39) == -1"
  8733. class="noChoose"
  8734. ></div>
  8735. <div v-else class="isChoose"></div>
  8736. </div>
  8737. </div>
  8738. <div
  8739. class="tool"
  8740. :class="{ isToolChoose: checktoolArray.indexOf(66) != -1 }"
  8741. @click="addTools2(66)"
  8742. >
  8743. <div class="whiteBIcon">
  8744. <img
  8745. src="../../assets/icon/secondToolList/formulaEdi.png"
  8746. alt
  8747. />
  8748. <div style="margin: 5px 0">公式编辑</div>
  8749. </div>
  8750. <div class="check">
  8751. <div
  8752. v-if="checktoolArray.indexOf(66) == -1"
  8753. class="noChoose"
  8754. ></div>
  8755. <div v-else class="isChoose"></div>
  8756. </div>
  8757. </div>
  8758. <!-- <div class="tool" :class="{ isToolChoose : checktoolArray.indexOf(67) != -1 }">
  8759. <div class="whiteBIcon" @click="addTools2(67)">
  8760. <img src="../../../assets/icon/secondToolList/molStr.png" alt />
  8761. <div style="margin: 5px 0">分子结构</div>
  8762. </div>
  8763. <div class="check" @click="addTools2(67)">
  8764. <div v-if="checktoolArray.indexOf(67) == -1" class="noChoose"></div>
  8765. <div v-else class="isChoose"></div>
  8766. </div>
  8767. </div> -->
  8768. <div
  8769. class="tool"
  8770. :class="{ isToolChoose: checktoolArray.indexOf(68) != -1 }"
  8771. @click="addTools2(68)"
  8772. >
  8773. <div class="whiteBIcon">
  8774. <img src="../../assets/icon/secondToolList/timeAxis.png" alt />
  8775. <div style="margin: 5px 0">时间轴</div>
  8776. </div>
  8777. <div class="check">
  8778. <div
  8779. v-if="checktoolArray.indexOf(68) == -1"
  8780. class="noChoose"
  8781. ></div>
  8782. <div v-else class="isChoose"></div>
  8783. </div>
  8784. </div>
  8785. <!-- <div
  8786. class="tool"
  8787. :class="{ isToolChoose: checktoolArray.indexOf(69) != -1 }"
  8788. @click="addTools2(69)"
  8789. >
  8790. <div class="whiteBIcon">
  8791. <img src="../../assets/icon/secondToolList/english.png" alt />
  8792. <div style="margin: 5px 0">英语写作</div>
  8793. </div>
  8794. <div class="check">
  8795. <div
  8796. v-if="checktoolArray.indexOf(69) == -1"
  8797. class="noChoose"
  8798. ></div>
  8799. <div v-else class="isChoose"></div>
  8800. </div>
  8801. </div> -->
  8802. </div>
  8803. <div class="toolSort" v-if="toolType == 4">
  8804. <div
  8805. class="tool"
  8806. :class="{ isToolChoose: checktoolArray.indexOf(26) != -1 }"
  8807. @click="addTools2(26)"
  8808. >
  8809. <div class="whiteBIcon">
  8810. <img
  8811. src="../../assets/icon/thirdToolList/courseDesign.png"
  8812. alt
  8813. />
  8814. <div style="margin: 5px 0">课程设计</div>
  8815. </div>
  8816. <div class="check">
  8817. <div
  8818. v-if="checktoolArray.indexOf(26) == -1"
  8819. class="noChoose"
  8820. ></div>
  8821. <div v-else class="isChoose"></div>
  8822. </div>
  8823. </div>
  8824. <div
  8825. class="tool"
  8826. :class="{ isToolChoose: checktoolArray.indexOf(25) != -1 }"
  8827. @click="addTools2(25)"
  8828. >
  8829. <div class="whiteBIcon">
  8830. <img src="../../assets/icon/thirdToolList/evalua.png" alt />
  8831. <div style="margin: 5px 0">目标管理</div>
  8832. </div>
  8833. <div class="check">
  8834. <div
  8835. v-if="checktoolArray.indexOf(25) == -1"
  8836. class="noChoose"
  8837. ></div>
  8838. <div v-else class="isChoose"></div>
  8839. </div>
  8840. </div>
  8841. </div>
  8842. </div>
  8843. </div>
  8844. <span
  8845. slot="footer"
  8846. class="dialog-footer"
  8847. style="display: block; text-align: center; padding: 0 0 10px 0"
  8848. >
  8849. <el-button @click="toolDialogVisible = false">取 消</el-button>
  8850. <el-button type="primary" @click.stop="addToolChoose">确 定</el-button>
  8851. </span>
  8852. </div>
  8853. <div
  8854. v-if="replyDialogVisible == true"
  8855. class="addDialogCss"
  8856. v-el-drag-dialog
  8857. >
  8858. <div class="pzTop">
  8859. <div class="teacherPz">
  8860. <div class="teacherPzImg">
  8861. <img src="../../assets/icon/teacherPz.png" alt="" />
  8862. </div>
  8863. <div style="margin-left: 10px; height: 25px">添加回复</div>
  8864. </div>
  8865. <div @click="replyDialogVisible = false">
  8866. <img src="../../assets/close1.png" class="pzClose" alt="" />
  8867. </div>
  8868. </div>
  8869. <div class="addPzBox">
  8870. <!-- <div class="addPzCheck">
  8871. <span :class="{ isChooseActive: pzType == 1 }" @click="pzType = 1"
  8872. >文本</span
  8873. >
  8874. <span :class="{ isChooseActive: pzType == 2 }" @click="pzType = 2"
  8875. >音频</span
  8876. >
  8877. </div> -->
  8878. <div style="height: calc(100% - 50px)">
  8879. <editor-bar
  8880. class="binfo_input pzConText"
  8881. style="width: 100% !important; margin: 0 auto"
  8882. placeholder="请输入回复描述"
  8883. v-model="reply"
  8884. @change="change"
  8885. ></editor-bar>
  8886. </div>
  8887. <div class="addTextCss" @click="addHf">确定</div>
  8888. </div>
  8889. </div>
  8890. <div v-if="addPzDialog == true" class="addDialogCss" v-el-drag-dialog>
  8891. <div class="pzTop">
  8892. <div class="teacherPz">
  8893. <div class="teacherPzImg">
  8894. <img src="../../assets/icon/teacherPz.png" alt="" />
  8895. </div>
  8896. <div style="margin-left: 10px; height: 25px">教师评论</div>
  8897. </div>
  8898. <div @click="addPzDialog = false">
  8899. <img src="../../assets/close1.png" class="pzClose" alt="" />
  8900. </div>
  8901. </div>
  8902. <div class="addPzBox">
  8903. <div class="addPzCheck">
  8904. <span :class="{ isChooseActive: pzType == 1 }" @click="pzType = 1"
  8905. >文本</span
  8906. >
  8907. <!-- <span :class="{isChooseActive:pzType==3}" @click="pzType = 3">图片</span> -->
  8908. <span :class="{ isChooseActive: pzType == 2 }" @click="pzType = 2"
  8909. >音频</span
  8910. >
  8911. </div>
  8912. <div style="height: calc(100% - 95px)">
  8913. <!-- <textarea class="binfo_input pzConText" cols placeholder="请填写项目课程关键问题...." v-model="pzConText"
  8914. v-if="pzType == 1"></textarea> -->
  8915. <editor-bar
  8916. class="binfo_input pzConText"
  8917. style="width: 100% !important"
  8918. placeholder="请输入任务描述"
  8919. v-model="pzConText"
  8920. @change="change"
  8921. v-if="pzType == 1"
  8922. ></editor-bar>
  8923. <Audio @addPz="addPz" class="pzAudioClass" v-if="pzType == 2"></Audio>
  8924. <!-- <div class="pzAudioClass" v-if="pzType == 3">
  8925. <div @click="addImg($event)">
  8926. <el-button type="primary">上传图片</el-button>
  8927. <input type="file" accept="image/png, image/gif, image/jpeg" style="display: none"
  8928. @change="beforeUpload1($event, 4)" />
  8929. </div>
  8930. </div> -->
  8931. </div>
  8932. <div class="addTextCss" @click="addPz('1')" v-if="pzType == 1">
  8933. 确定
  8934. </div>
  8935. </div>
  8936. </div>
  8937. <div v-if="proVisible" class="mask">
  8938. <div class="progressBox">
  8939. <!-- <div id="closePro" class="closeCss">
  8940. <img src="../../assets/icon/close.png" alt />
  8941. </div> -->
  8942. <div class="lbox">
  8943. <img src="../../assets/loading.gif" />上传中,请稍后
  8944. </div>
  8945. <div style="margin-bottom: 10px">
  8946. <span>{{ isFinishSize }}M</span> / <span>{{ isAllSize }}M</span>
  8947. </div>
  8948. <el-progress
  8949. :text-inside="true"
  8950. :stroke-width="20"
  8951. :percentage="progress"
  8952. style="width: 80%"
  8953. ></el-progress>
  8954. </div>
  8955. </div>
  8956. <div v-if="proVisible2" class="mask">
  8957. <div class="progressBox">
  8958. <div class="lbox">
  8959. <img src="../../assets/loading.gif" />上传中,请稍后
  8960. </div>
  8961. <!-- <el-progress :text-inside="true" :stroke-width="20" :percentage="progress" style="width: 80%"></el-progress> -->
  8962. </div>
  8963. </div>
  8964. <el-dialog :visible.sync="pictureDialog" size="tiny">
  8965. <img width="100%" :src="dialogImageUrl" alt />
  8966. </el-dialog>
  8967. <el-dialog
  8968. :title="noteName != '' ? noteName : '查看问卷'"
  8969. :visible.sync="dialogVisible5"
  8970. :append-to-body="true"
  8971. width="1000px"
  8972. :before-close="handleClose"
  8973. class="dialog_diy dialog_diy3"
  8974. >
  8975. <div>
  8976. <div
  8977. class="a_add_title"
  8978. style="
  8979. display: flex;
  8980. flex-direction: row;
  8981. align-items: center;
  8982. justify-content: center;
  8983. "
  8984. >
  8985. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  8986. <div style="font-size: 20px">{{ askJson.askTitle }}</div>
  8987. </div>
  8988. <div class="a_addBox">
  8989. <div style="font-size: 16px; color: #c7c7c7; margin-bottom: 10px">
  8990. 题目内容
  8991. </div>
  8992. <div
  8993. class="a_add_box"
  8994. v-for="(item1, index1) in askJson.askCount"
  8995. :key="index1"
  8996. >
  8997. <div class="a_add_head">
  8998. <div style="display: flex">
  8999. <span class="askIndex"> {{ index1 + 1 }}</span>
  9000. <div>题目:{{ askJson.askJson[index1].askstitle }}</div>
  9001. </div>
  9002. <img
  9003. v-if="askJson.askJson[index1].img"
  9004. :src="askJson.askJson[index1].img"
  9005. style="height: 300px; margin-top: 10px; max-width: 100%"
  9006. />
  9007. </div>
  9008. <div class="a_add_body">
  9009. <div class="a_add_input">
  9010. <el-radio-group
  9011. v-model="radio[index1]"
  9012. v-if="
  9013. askJson.askJson[index1].type == '1' ||
  9014. !askJson.askJson[index1].type
  9015. "
  9016. >
  9017. <el-radio
  9018. v-for="(item2, checkIndex) in askJson.askJson[index1]
  9019. .checkList"
  9020. :key="checkIndex"
  9021. :label="checkIndex"
  9022. :disabled="isAnswer"
  9023. class="redioStyle"
  9024. ><span v-html="item2"></span
  9025. ></el-radio>
  9026. </el-radio-group>
  9027. <el-checkbox-group
  9028. v-model="radio[index1]"
  9029. v-if="askJson.askJson[index1].type == '2'"
  9030. >
  9031. <el-checkbox
  9032. v-for="(item2, checkIndex1) in askJson.askJson[index1]
  9033. .checkList"
  9034. :key="checkIndex1"
  9035. :label="checkIndex1"
  9036. :disabled="isAnswer"
  9037. class="redioStyle"
  9038. ><span v-html="item2"></span>
  9039. </el-checkbox>
  9040. </el-checkbox-group>
  9041. </div>
  9042. </div>
  9043. </div>
  9044. </div>
  9045. </div>
  9046. <span slot="footer" class="dialog-footer">
  9047. <el-button @click="dialogVisible5 = false" v-show="noteName == ''"
  9048. >取 消</el-button
  9049. >
  9050. <el-button type="primary" @click="addStudentAsk" v-show="noteName == ''"
  9051. >确 定</el-button
  9052. >
  9053. </span>
  9054. </el-dialog>
  9055. <el-dialog
  9056. :title="noteName != '' ? noteName : '查看问卷'"
  9057. :visible.sync="dialogVisible5Teacher"
  9058. :append-to-body="true"
  9059. width="1000px"
  9060. :before-close="handleClose"
  9061. class="dialog_diy dialog_diy3"
  9062. >
  9063. <div>
  9064. <div class="w_name">
  9065. 学生姓名:<span>{{ sStudent.student }}</span>
  9066. </div>
  9067. <div
  9068. class="a_add_title"
  9069. style="
  9070. display: flex;
  9071. flex-direction: row;
  9072. align-items: center;
  9073. justify-content: center;
  9074. "
  9075. >
  9076. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  9077. <div style="font-size: 20px">{{ askJson.askTitle }}</div>
  9078. </div>
  9079. <div class="a_addBox">
  9080. <div style="font-size: 16px; color: #c7c7c7; margin-bottom: 10px">
  9081. 题目内容
  9082. </div>
  9083. <div
  9084. class="a_add_box"
  9085. v-for="(item1, index1) in askJson.askCount"
  9086. :key="index1"
  9087. >
  9088. <div class="a_add_head">
  9089. <div style="display: flex">
  9090. <span class="askIndex">{{ index1 + 1 }}</span>
  9091. <div>题目:{{ askJson.askJson[index1].askstitle }}</div>
  9092. </div>
  9093. <img
  9094. v-if="askJson.askJson[index1].img"
  9095. :src="askJson.askJson[index1].img"
  9096. style="height: 300px; margin-top: 10px; max-width: 100%"
  9097. />
  9098. </div>
  9099. <div class="a_add_body">
  9100. <div class="a_add_input">
  9101. <el-radio-group
  9102. v-model="radio[index1]"
  9103. v-if="
  9104. askJson.askJson[index1].type == '1' ||
  9105. !askJson.askJson[index1].type
  9106. "
  9107. >
  9108. <el-radio
  9109. v-for="(item2, checkIndex) in askJson.askJson[index1]
  9110. .checkList"
  9111. :key="checkIndex"
  9112. :label="checkIndex"
  9113. :disabled="isAnswer"
  9114. class="redioStyle"
  9115. ><span v-html="item2"></span
  9116. ></el-radio>
  9117. </el-radio-group>
  9118. <el-checkbox-group
  9119. v-model="radio[index1]"
  9120. v-if="askJson.askJson[index1].type == '2'"
  9121. >
  9122. <el-checkbox
  9123. v-for="(item2, checkIndex1) in askJson.askJson[index1]
  9124. .checkList"
  9125. :key="checkIndex1"
  9126. :label="checkIndex1"
  9127. :disabled="isAnswer"
  9128. class="redioStyle"
  9129. ><span v-html="item2"></span>
  9130. </el-checkbox>
  9131. </el-checkbox-group>
  9132. </div>
  9133. </div>
  9134. </div>
  9135. </div>
  9136. </div>
  9137. <span slot="footer" class="dialog-footer">
  9138. <el-button
  9139. @click="dialogVisible5Teacher = false"
  9140. v-show="noteName == ''"
  9141. >取 消</el-button
  9142. >
  9143. <el-button
  9144. type="primary"
  9145. @click="addStudentAskTeacher"
  9146. v-show="noteName == ''"
  9147. >确 定</el-button
  9148. >
  9149. </span>
  9150. </el-dialog>
  9151. <el-dialog
  9152. :title="noteName != '' ? noteName : '查看选择题'"
  9153. :visible.sync="dialogVisibleChoice"
  9154. :append-to-body="true"
  9155. width="1000px"
  9156. :before-close="handleClose"
  9157. class="dialog_diy dialog_diy3"
  9158. >
  9159. <div>
  9160. <!-- <div class="a_add_title" style="
  9161. display: flex;
  9162. flex-direction: row;
  9163. align-items: center;
  9164. justify-content: center;
  9165. ">
  9166. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  9167. <div style="font-size: 20px">{{ testJson.testTitle }}</div>
  9168. </div> -->
  9169. <div class="a_addBox">
  9170. <div style="font-size: 16px; color: #c7c7c7; margin-bottom: 10px">
  9171. 题目内容
  9172. </div>
  9173. <div
  9174. class="a_add_box"
  9175. v-for="(item1, index1) in testJson.testCount"
  9176. :key="index1"
  9177. >
  9178. <div class="a_add_head">
  9179. <div style="display: flex">
  9180. <span class="askIndex">{{ index1 + 1 }}</span>
  9181. <div
  9182. v-if="testJson.testJson[index1].type == '1'"
  9183. style="margin-right: 5px; min-width: 70px"
  9184. >
  9185. (单选题)
  9186. </div>
  9187. <div
  9188. v-if="testJson.testJson[index1].type == '2'"
  9189. style="margin-right: 5px; min-width: 70px"
  9190. >
  9191. (多选题)
  9192. </div>
  9193. <div>题目:{{ testJson.testJson[index1].teststitle }}</div>
  9194. </div>
  9195. <img
  9196. v-if="testJson.testJson[index1].img"
  9197. :src="testJson.testJson[index1].img"
  9198. style="height: 300px; margin-top: 10px; max-width: 100%"
  9199. />
  9200. </div>
  9201. <div
  9202. class="timuImgBox"
  9203. v-if="
  9204. testJson.testJson[index1].timuList &&
  9205. testJson.testJson[index1].timuList.length
  9206. "
  9207. >
  9208. <div
  9209. v-for="(timg, tIndex) in testJson.testJson[index1].timuList"
  9210. :key="tIndex"
  9211. class="timuImg"
  9212. @click.stop="previewImg(timg.src)"
  9213. >
  9214. <img :src="timg.src" alt="" />
  9215. </div>
  9216. </div>
  9217. <div class="a_add_body">
  9218. <div class="a_add_input">
  9219. <el-radio-group
  9220. v-model="radio[index1]"
  9221. v-if="testJson.testJson[index1].type == '1'"
  9222. >
  9223. <div class="radioBox">
  9224. <el-radio
  9225. v-for="(item2, checkIndex) in testJson.testJson[index1]
  9226. .checkList"
  9227. :key="checkIndex"
  9228. :label="checkIndex"
  9229. :disabled="isAnswer"
  9230. class="redioStyle"
  9231. >
  9232. <div
  9233. style="margin-right: 10px"
  9234. v-if="item2 && item2.imgType && item2.imgType == 1"
  9235. >
  9236. <div class="inImg" @click.stop="previewImg(item2.src)">
  9237. <img :src="item2.src" alt="" />
  9238. </div>
  9239. </div>
  9240. <span v-else v-html="item2"></span>
  9241. </el-radio>
  9242. </div>
  9243. </el-radio-group>
  9244. <el-checkbox-group
  9245. v-model="radio[index1]"
  9246. v-if="testJson.testJson[index1].type == '2'"
  9247. >
  9248. <div class="radioBox">
  9249. <el-checkbox
  9250. v-for="(item2, checkIndex) in testJson.testJson[index1]
  9251. .checkList"
  9252. :key="checkIndex"
  9253. :label="checkIndex"
  9254. :disabled="isAnswer"
  9255. class="redioStyle"
  9256. >
  9257. <div
  9258. style="margin-right: 10px"
  9259. v-if="item2 && item2.imgType && item2.imgType == 1"
  9260. >
  9261. <div class="inImg" @click.stop="previewImg(item2.src)">
  9262. <img :src="item2.src" alt="" />
  9263. </div>
  9264. </div>
  9265. <span v-else v-html="item2"></span>
  9266. </el-checkbox>
  9267. </div>
  9268. </el-checkbox-group>
  9269. </div>
  9270. </div>
  9271. </div>
  9272. </div>
  9273. </div>
  9274. <span slot="footer" class="dialog-footer">
  9275. <el-button @click="dialogVisibleChoice = false" v-show="noteName == ''"
  9276. >取 消</el-button
  9277. >
  9278. <el-button
  9279. type="primary"
  9280. @click="addStudentTest"
  9281. v-show="noteName == ''"
  9282. >确 定</el-button
  9283. >
  9284. </span>
  9285. </el-dialog>
  9286. <el-dialog
  9287. :title="noteName != '' ? noteName : '查看选择题'"
  9288. :visible.sync="dialogVisibleChoiceTeacher"
  9289. :append-to-body="true"
  9290. width="1000px"
  9291. :before-close="handleClose"
  9292. class="dialog_diy dialog_diy3"
  9293. >
  9294. <div>
  9295. <div class="w_name">
  9296. 学生姓名:<span>{{ sStudent.student }}</span>
  9297. </div>
  9298. <div class="a_addBox">
  9299. <div style="font-size: 16px; color: #c7c7c7; margin-bottom: 10px">
  9300. 题目内容
  9301. </div>
  9302. <div
  9303. class="a_add_box"
  9304. v-for="(item1, index1) in testJson.testCount"
  9305. :key="index1"
  9306. >
  9307. <div class="a_add_head">
  9308. <div style="display: flex">
  9309. <span class="askIndex">{{ index1 + 1 }}</span>
  9310. <div
  9311. v-if="testJson.testJson[index1].type == '1'"
  9312. style="margin-right: 5px; min-width: 70px"
  9313. >
  9314. (单选题)
  9315. </div>
  9316. <div
  9317. v-if="testJson.testJson[index1].type == '2'"
  9318. style="margin-right: 5px; min-width: 70px"
  9319. >
  9320. (多选题)
  9321. </div>
  9322. <div>题目:{{ testJson.testJson[index1].teststitle }}</div>
  9323. </div>
  9324. <img
  9325. v-if="testJson.testJson[index1].img"
  9326. :src="testJson.testJson[index1].img"
  9327. style="height: 300px; margin-top: 10px; max-width: 100%"
  9328. />
  9329. </div>
  9330. <div
  9331. class="timuImgBox"
  9332. v-if="
  9333. testJson.testJson[index1].timuList &&
  9334. testJson.testJson[index1].timuList.length
  9335. "
  9336. >
  9337. <div
  9338. v-for="(timg, tIndex) in testJson.testJson[index1].timuList"
  9339. :key="tIndex"
  9340. class="timuImg"
  9341. @click.stop="previewImg(timg.src)"
  9342. >
  9343. <img :src="timg.src" alt="" />
  9344. </div>
  9345. </div>
  9346. <div class="a_add_body">
  9347. <div class="a_add_input">
  9348. <el-radio-group
  9349. v-model="radio[index1]"
  9350. v-if="testJson.testJson[index1].type == '1'"
  9351. >
  9352. <div class="radioBox">
  9353. <el-radio
  9354. v-for="(item2, checkIndex) in testJson.testJson[index1]
  9355. .checkList"
  9356. :key="checkIndex"
  9357. :label="checkIndex"
  9358. :disabled="isAnswer"
  9359. class="redioStyle"
  9360. >
  9361. <div
  9362. style="margin-right: 10px"
  9363. v-if="item2 && item2.imgType && item2.imgType == 1"
  9364. >
  9365. <div class="inImg" @click.stop="previewImg(item2.src)">
  9366. <img :src="item2.src" alt="" />
  9367. </div>
  9368. </div>
  9369. <span v-else v-html="item2"></span>
  9370. </el-radio>
  9371. </div>
  9372. </el-radio-group>
  9373. <el-checkbox-group
  9374. v-model="radio[index1]"
  9375. v-if="testJson.testJson[index1].type == '2'"
  9376. >
  9377. <div class="radioBox">
  9378. <el-checkbox
  9379. v-for="(item2, checkIndex) in testJson.testJson[index1]
  9380. .checkList"
  9381. :key="checkIndex"
  9382. :label="checkIndex"
  9383. :disabled="isAnswer"
  9384. class="redioStyle"
  9385. >
  9386. <div
  9387. style="margin-right: 10px"
  9388. v-if="item2 && item2.imgType && item2.imgType == 1"
  9389. >
  9390. <div class="inImg" @click.stop="previewImg(item2.src)">
  9391. <img :src="item2.src" alt="" />
  9392. </div>
  9393. </div>
  9394. <span v-else v-html="item2"></span>
  9395. </el-checkbox>
  9396. </div>
  9397. </el-checkbox-group>
  9398. </div>
  9399. </div>
  9400. </div>
  9401. </div>
  9402. </div>
  9403. <span slot="footer" class="dialog-footer">
  9404. <el-button
  9405. @click="dialogVisibleChoiceTeacher = false"
  9406. v-show="noteName == ''"
  9407. >取 消</el-button
  9408. >
  9409. <el-button
  9410. type="primary"
  9411. @click="addStudentTestTeacher"
  9412. v-show="noteName == ''"
  9413. >确 定</el-button
  9414. >
  9415. </span>
  9416. </el-dialog>
  9417. <el-dialog
  9418. title="查看富文本"
  9419. :visible.sync="dialogVisible1"
  9420. :append-to-body="true"
  9421. width="500px"
  9422. :before-close="handleClose"
  9423. class="dialog_diy textCss"
  9424. >
  9425. <el-form style="font-size: 20px">
  9426. <el-form-item label="文本标题" class="textTitle">
  9427. <div style="font-size: 20px">{{ text.name }}</div>
  9428. </el-form-item>
  9429. <div>富文本内容</div>
  9430. <div
  9431. v-html="text.url"
  9432. style="font-size: 18px; padding: 40px 0 0 0"
  9433. ></div>
  9434. </el-form>
  9435. <span slot="footer" class="dialog-footer">
  9436. <el-button type="primary" @click="dialogVisible1 = false"
  9437. >确定</el-button
  9438. >
  9439. </span>
  9440. </el-dialog>
  9441. <el-dialog
  9442. title="文件预览"
  9443. :visible.sync="dialogVisible3"
  9444. width="50%"
  9445. :before-close="handleClose"
  9446. class="dialog_diy"
  9447. :class="{ fullStyle: full }"
  9448. >
  9449. <div slot="title" class="header-title">
  9450. <div style="color: #fff">文件预览</div>
  9451. <div style="position: absolute; top: 19px; right: 50px">
  9452. <img
  9453. src="../../assets/full.png"
  9454. style="height: 16px; cursor: pointer"
  9455. alt=""
  9456. @click="fullTools"
  9457. />
  9458. </div>
  9459. </div>
  9460. <pdf
  9461. v-if="showPDF"
  9462. :pdfUrl="pptImgUrl"
  9463. style="width: 100%; height: 520px; overflow: auto"
  9464. :class="{ fullStyle: full }"
  9465. ></pdf>
  9466. <iframe
  9467. v-else
  9468. :src="pptImgUrl"
  9469. frameborder="0"
  9470. width="100%"
  9471. height="600"
  9472. :class="{ fullStyle: full }"
  9473. ></iframe>
  9474. </el-dialog>
  9475. <el-dialog
  9476. title="文件预览"
  9477. :visible.sync="dialogVisible6"
  9478. width="50%"
  9479. :before-close="handleClose"
  9480. class="dialog_diy"
  9481. >
  9482. <iframe
  9483. :src="pptImgUrl1"
  9484. frameborder="0"
  9485. width="100%"
  9486. height="600"
  9487. ></iframe>
  9488. </el-dialog>
  9489. <el-dialog
  9490. title="提示"
  9491. :visible.sync="dialogVisible4"
  9492. :append-to-body="true"
  9493. width="800px"
  9494. :before-close="handleClose"
  9495. class="dialog_diy notice"
  9496. >
  9497. <div>此功能暂未开放!</div>
  9498. <el-button type="primary" @click="dialogVisible4 = false">确定</el-button>
  9499. </el-dialog>
  9500. <el-dialog
  9501. title="问答"
  9502. :visible.sync="answerDialogVisible"
  9503. :append-to-body="true"
  9504. width="800px"
  9505. :before-close="handleClose"
  9506. class="dialog_diy"
  9507. >
  9508. <div>
  9509. <div
  9510. style="
  9511. display: flex;
  9512. flex-wrap: nowrap;
  9513. flex-direction: column;
  9514. position: relative;
  9515. "
  9516. >
  9517. <div class="queTop" style="padding: 20px 0 20px 0">
  9518. <div class="question">
  9519. <img src="../../assets/icon/question.png" alt />
  9520. </div>
  9521. <div class="queTitle">
  9522. <div style="width: 90px; min-width: 90px">提问:</div>
  9523. <div>{{ answerQ }}</div>
  9524. </div>
  9525. </div>
  9526. <div class="ediBottom">
  9527. <textarea
  9528. rows="6"
  9529. class="binfo_input"
  9530. cols
  9531. style="width: 95%; height: 120px"
  9532. v-model="questionAnswer"
  9533. ></textarea>
  9534. </div>
  9535. </div>
  9536. </div>
  9537. <div slot="footer">
  9538. <el-button @click="answerDialogVisible = false">取 消</el-button>
  9539. <el-button type="primary" @click="addQuestion">提 交</el-button>
  9540. </div>
  9541. </el-dialog>
  9542. <el-dialog
  9543. title="问答"
  9544. :visible.sync="answerDialogVisibleTeacher"
  9545. :append-to-body="true"
  9546. width="800px"
  9547. :before-close="handleClose"
  9548. class="dialog_diy"
  9549. >
  9550. <div>
  9551. <div class="w_name">
  9552. 学生姓名:<span>{{ sStudent.student }}</span>
  9553. </div>
  9554. <div
  9555. style="
  9556. display: flex;
  9557. flex-wrap: nowrap;
  9558. flex-direction: column;
  9559. position: relative;
  9560. "
  9561. >
  9562. <div class="queTop" style="padding: 20px 0 20px 0">
  9563. <div class="question">
  9564. <img src="../../assets/icon/question.png" alt />
  9565. </div>
  9566. <div class="queTitle">
  9567. <div style="width: 90px; min-width: 90px">提问:</div>
  9568. <div>{{ answerQ }}</div>
  9569. </div>
  9570. </div>
  9571. <div class="ediBottom">
  9572. <textarea
  9573. rows="6"
  9574. class="binfo_input"
  9575. cols
  9576. style="width: 95%; height: 120px"
  9577. v-model="questionAnswer"
  9578. ></textarea>
  9579. </div>
  9580. </div>
  9581. </div>
  9582. <div slot="footer">
  9583. <el-button @click="answerDialogVisibleTeacher = false">取 消</el-button>
  9584. <el-button type="primary" @click="addQuestionTeacher">提 交</el-button>
  9585. </div>
  9586. </el-dialog>
  9587. <el-dialog
  9588. title="倒计时"
  9589. :visible.sync="timeDialogVisible"
  9590. :append-to-body="true"
  9591. width="800px"
  9592. :before-close="handleClose"
  9593. class="dialog_diy"
  9594. >
  9595. <div>
  9596. <div style="margin-bottom: 20px; color: #999">
  9597. 提示:点击“+”或“-”修改倒计时时长。
  9598. </div>
  9599. <Time :preTime="preTime" v-if="timeDialogVisible"></Time>
  9600. </div>
  9601. <div slot="footer">
  9602. <el-button @click="timeDialogVisible = false">关 闭</el-button>
  9603. </div>
  9604. </el-dialog>
  9605. <el-dialog
  9606. title="权限设置"
  9607. :visible.sync="juriVisible"
  9608. :append-to-body="true"
  9609. width="400px"
  9610. :before-close="handleClose"
  9611. class="dialog_diy"
  9612. >
  9613. <div>
  9614. <div class="open_box">
  9615. <div class="switch_box">
  9616. <span>允许学生查看所有作业</span>
  9617. <el-switch
  9618. v-model="sIsOpen"
  9619. active-text=""
  9620. class="switchCss"
  9621. @change="updateSLook"
  9622. ></el-switch>
  9623. </div>
  9624. <div
  9625. class="switch_box"
  9626. v-if="
  9627. courseDetail.userid == userid ||
  9628. (courseDetail.course_teacher &&
  9629. courseDetail.course_teacher.indexOf(userid) != -1)
  9630. "
  9631. >
  9632. <!-- v-if="courseDetail.userid == userid || courseDetail.course_teacher.indexOf(userid) != -1" -->
  9633. <span>禁止学生查看所有阶段</span>
  9634. <el-switch
  9635. v-model="IsLookOpen"
  9636. active-text=""
  9637. class="switchCss"
  9638. @change="updateLookOpen"
  9639. ></el-switch>
  9640. </div>
  9641. <div class="switch_box" v-if="courseDetail.userid == userid">
  9642. <span>开启跟随模式</span>
  9643. <el-switch
  9644. v-model="IsFollow"
  9645. active-text=""
  9646. class="switchCss"
  9647. @change="updateFollow"
  9648. ></el-switch>
  9649. </div>
  9650. </div>
  9651. </div>
  9652. <div slot="footer">
  9653. <el-button
  9654. style="background: #409efe; color: #fff"
  9655. @click="juriVisible = false"
  9656. >关 闭</el-button
  9657. >
  9658. </div>
  9659. </el-dialog>
  9660. <el-dialog
  9661. title="查看视频"
  9662. :visible.sync="videoVisible"
  9663. :append-to-body="true"
  9664. width="1000px"
  9665. :before-close="handleClose"
  9666. class="dialog_diy1"
  9667. >
  9668. <div class="workd_media" style="height: 100%" v-if="videoDetail.sources">
  9669. <video-player
  9670. class="video-player vjs-custom-skin"
  9671. :playsinline="true"
  9672. :options="videoDetail"
  9673. @play="onPlayerPlay($event)"
  9674. style="width: 100%; height: 100%"
  9675. ></video-player>
  9676. </div>
  9677. <div slot="footer">
  9678. <el-button
  9679. style="background: #409efe; color: #fff"
  9680. @click="(videoVisible = false), (videoDetail.sources[0].src = '')"
  9681. >
  9682. 关 闭</el-button
  9683. >
  9684. </div>
  9685. </el-dialog>
  9686. <el-dialog
  9687. title="查看详情"
  9688. :visible.sync="commentDialogVisible"
  9689. :append-to-body="true"
  9690. width="800px"
  9691. :before-close="handleClose"
  9692. class="dialog_diy"
  9693. >
  9694. <div class="commentTop">
  9695. <div class="studentDetail">
  9696. <div class="tx"><img src="../../assets/avatar.png" alt="" /></div>
  9697. <div class="nameAndTime">
  9698. <div style="margin-bottom: 5px">{{ commentDetail.sName }}</div>
  9699. <div>{{ commentDetail.time }}</div>
  9700. </div>
  9701. <div
  9702. class="returnBtn"
  9703. style="margin-left: auto; width: 80px"
  9704. v-if="
  9705. commentDetail.works &&
  9706. commentDetail.type == 0 &&
  9707. (tType == 1 || tType == 4)
  9708. "
  9709. @click="
  9710. showPicturePaint(
  9711. commentDetail.img ? commentDetail.img : commentDetail.works
  9712. )
  9713. "
  9714. >
  9715. 教师批注
  9716. </div>
  9717. </div>
  9718. <div
  9719. class="worksAnswer"
  9720. v-if="commentDetail.works && commentDetail.type == 2"
  9721. >
  9722. {{ JSON.parse(commentDetail.works)[0].answer }}
  9723. </div>
  9724. <div
  9725. class="worksAnswer"
  9726. v-if="commentDetail.works && commentDetail.type == 1"
  9727. >
  9728. <img
  9729. src="../../assets/teacherWork.png"
  9730. v-if="commentDetail.ateacher"
  9731. class="w_teachert"
  9732. />
  9733. <pdf
  9734. v-if="showPDF"
  9735. :pdfUrl="pptImgUrl"
  9736. style="width: 100%; height: 520px; overflow: auto"
  9737. :class="{ fullStyle: full }"
  9738. ></pdf>
  9739. <iframe
  9740. v-else
  9741. :src="pptImgUrl"
  9742. frameborder="0"
  9743. width="100%"
  9744. height="600"
  9745. :class="{ fullStyle: full }"
  9746. ></iframe>
  9747. </div>
  9748. <div
  9749. class="worksAnswer"
  9750. v-if="commentDetail.works && commentDetail.type == 0"
  9751. >
  9752. <img
  9753. src="../../assets/teacherWork.png"
  9754. v-if="commentDetail.ateacher"
  9755. class="w_teachert"
  9756. style="right: 105px"
  9757. />
  9758. <img
  9759. :src="commentDetail.works"
  9760. alt=""
  9761. @click="previewImg(commentDetail.works)"
  9762. />
  9763. </div>
  9764. <div
  9765. class="worksAnswer"
  9766. v-if="commentDetail.works && commentDetail.type == 3"
  9767. >
  9768. <img
  9769. src="../../assets/teacherWork.png"
  9770. v-if="commentDetail.ateacher"
  9771. class="w_teachert"
  9772. />
  9773. <video-player
  9774. class="video-player vjs-custom-skin"
  9775. :playsinline="true"
  9776. :options="videoDetail"
  9777. @play="onPlayerPlay($event)"
  9778. style="width: 90%; height: 100%; margin: 0 0 0 30px"
  9779. ></video-player>
  9780. </div>
  9781. <div
  9782. class="worksAnswer"
  9783. v-if="commentDetail.works && commentDetail.type == 10"
  9784. >
  9785. <div class="cont" v-html="commentDetail.works.text"></div>
  9786. </div>
  9787. <div
  9788. class="worksAnswer codeFileBox"
  9789. v-if="commentDetail.works && commentDetail.type == 12"
  9790. @click="downloadFile(commentDetail.works)"
  9791. >
  9792. <img src="../../assets/icon/codeFile.png" />
  9793. <div>点击下载文件</div>
  9794. </div>
  9795. <div
  9796. class="worksAnswer codeFileBox"
  9797. v-if="commentDetail.works && commentDetail.type == 15"
  9798. @click="
  9799. openCocoPi(
  9800. 57,
  9801. commentIndexJson.toolIndex,
  9802. commentDetail.userid,
  9803. commentDetail.sName
  9804. )
  9805. "
  9806. >
  9807. <img src="../../assets/icon/codeFile.png" />
  9808. <div>点击打开CocoPi</div>
  9809. </div>
  9810. <div
  9811. class="worksAnswer"
  9812. v-if="commentDetail.works && commentDetail.type == 13"
  9813. >
  9814. <div v-html="JSON.parse(commentDetail.works).text"></div>
  9815. </div>
  9816. <div
  9817. class="worksAnswer"
  9818. v-if="commentDetail.works && commentDetail.type == 4"
  9819. >
  9820. <div class="evalCss">
  9821. <div class="nav">请选择星星进行评分</div>
  9822. <div class="middleBox" v-if="eScore.eStar">
  9823. <div class="pfBox" v-for="(e, eIndex) in rateJson" :key="eIndex">
  9824. <div class="nameAndrate">
  9825. <div>{{ e.value }}</div>
  9826. <el-rate v-model="eScore.eStar[eIndex]" disabled></el-rate>
  9827. </div>
  9828. <div v-if="e.detail">{{ e.detail }}</div>
  9829. </div>
  9830. <div class="bz">
  9831. <textarea
  9832. disabled
  9833. rows="4"
  9834. class="pj"
  9835. style="
  9836. padding: 10px 5px;
  9837. width: 70%;
  9838. background: #f7f6f9;
  9839. font-size: 14px;
  9840. text-indent: 10px;
  9841. color: #000;
  9842. "
  9843. cols
  9844. v-model="eScore.eBzText"
  9845. placeholder="请输入评价内容..."
  9846. ></textarea>
  9847. </div>
  9848. </div>
  9849. </div>
  9850. </div>
  9851. <div class="comment">
  9852. <div class="commentList">
  9853. <div class="commentImg">
  9854. <img
  9855. @click="
  9856. isLikes(
  9857. commentDetail.wid,
  9858. userid,
  9859. 1,
  9860. null,
  9861. commentDetail.isLikes,
  9862. commentDetail.sName
  9863. )
  9864. "
  9865. :src="commentDetail.isLikes == true ? likes : noLikes"
  9866. alt=""
  9867. />
  9868. </div>
  9869. <div>{{ commentDetail.likesCount }}</div>
  9870. </div>
  9871. <div class="commentList">
  9872. <div class="commentImg">
  9873. <img src="../../assets/icon/comment/comment.png" alt="" />
  9874. </div>
  9875. <div>{{ commentDetail.commentCount }}</div>
  9876. </div>
  9877. </div>
  9878. <div class="drawPBox" v-if="commentDetail.img">
  9879. <span>教师批注</span>
  9880. <img
  9881. :src="commentDetail.img"
  9882. alt=""
  9883. @click="previewImg(commentDetail.img)"
  9884. />
  9885. <span
  9886. class="deleteImg"
  9887. v-if="tType == 1 || tType == 4"
  9888. @click.stop="deletePicturePaint(commentDetail.wid)"
  9889. style="
  9890. font-size: 14px;
  9891. width: auto !important;
  9892. color: #b4b4b4;
  9893. top: unset;
  9894. bottom: 0;
  9895. border: none;
  9896. padding: 0;
  9897. height: auto !important;
  9898. margin: 0;
  9899. "
  9900. >删除</span
  9901. >
  9902. </div>
  9903. </div>
  9904. <div class="commentBox">
  9905. <div class="pl">评论:</div>
  9906. <div style="max-height: 200px; overflow: auto">
  9907. <div
  9908. v-if="commentDetail.commentJson && commentDetail.commentJson.length"
  9909. style="padding: 10px 0 0 0"
  9910. >
  9911. <div
  9912. class="studentDetail"
  9913. style="padding-top: 10px"
  9914. v-for="(co, coIndex) in commentDetail.commentJson"
  9915. :key="coIndex"
  9916. >
  9917. <div class="tx" style="min-width: 50px">
  9918. <img src="../../assets/avatar.png" alt="" />
  9919. </div>
  9920. <div class="plPerson">
  9921. <div class="plName">
  9922. <div>{{ co.commentPeople }}</div>
  9923. <div style="margin-left: 5px">
  9924. {{ co.commentTime }}
  9925. </div>
  9926. <div
  9927. class="deleteComment"
  9928. v-if="userid == co.userid"
  9929. @click="deleteComment(co.wid)"
  9930. >
  9931. 删除
  9932. </div>
  9933. </div>
  9934. <div class="plContent">{{ co.commentText }}</div>
  9935. </div>
  9936. </div>
  9937. </div>
  9938. <div v-else style="padding: 10px 0 0 0">暂无评论</div>
  9939. </div>
  9940. </div>
  9941. <div style="margin-top: 10px">
  9942. <div class="displayBox">
  9943. <div
  9944. style="
  9945. color: #556db4;
  9946. font-size: 14px;
  9947. font-weight: bold;
  9948. padding-bottom: 10px;
  9949. "
  9950. >
  9951. 评价
  9952. </div>
  9953. <div class="easy_comment" v-if="false">
  9954. <div
  9955. v-for="(p, pIndex) in PlTextList"
  9956. :key="pIndex"
  9957. @click="fastText(p, 1)"
  9958. >
  9959. {{ p }}
  9960. </div>
  9961. </div>
  9962. </div>
  9963. <div>
  9964. <textarea
  9965. rows="3"
  9966. class="pj"
  9967. style="padding: 10px 5px"
  9968. cols
  9969. v-model="commentText"
  9970. placeholder="请输入评论"
  9971. ></textarea>
  9972. </div>
  9973. </div>
  9974. <div slot="footer">
  9975. <el-button
  9976. @click="
  9977. (commentDialogVisible = false),
  9978. (commentIndexJson = {}),
  9979. videoDetail.sources && videoDetail.sources[0]
  9980. ? (videoDetail.sources[0].src = '')
  9981. : ''
  9982. "
  9983. >取 消</el-button
  9984. >
  9985. <el-button
  9986. type="primary"
  9987. @click="addComment(commentDetail.wid, userid, 2,commentDetail)"
  9988. >确 定</el-button
  9989. >
  9990. </div>
  9991. </el-dialog>
  9992. <el-dialog
  9993. title="查看文档"
  9994. :visible.sync="fullDialogVisible"
  9995. :append-to-body="true"
  9996. width="100%"
  9997. :before-close="handleClose"
  9998. :show-close="false"
  9999. :class="['dialog_diy','full_diy', fulltype == 3 ? 'full_diy2' : '', (splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid)) ? 'dialog_diyCopy' : ''] "
  10000. >
  10001. <div slot="title" class="header-title">
  10002. <div style="color: #fff">查看文档</div>
  10003. <div
  10004. @click="()=>{fullDialogVisible = false,changeSplitScreenBehavior({code:99})}"
  10005. style="
  10006. cursor: pointer;
  10007. position: absolute;
  10008. top: 20px;
  10009. right: 20px;
  10010. color: #fff;
  10011. "
  10012. >
  10013. 退出全屏
  10014. </div>
  10015. </div>
  10016. <div style="height: 100%;position: relative;">
  10017. <el-button
  10018. v-if="(splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid))"
  10019. size="medium"
  10020. type="primary"
  10021. @click="
  10022. () => {
  10023. (fullDialogVisible = false),
  10024. changeSplitScreenBehavior({ code: 99 });
  10025. }
  10026. "
  10027. style="
  10028. cursor: pointer;
  10029. position: absolute;
  10030. top: 10px;
  10031. right: 20px;
  10032. color: #fff;
  10033. "
  10034. >
  10035. 退出全屏
  10036. </el-button>
  10037. <div
  10038. class="wheel"
  10039. v-if="
  10040. fulltype == 2 &&
  10041. fullUrl.indexOf(
  10042. 'https://view.officeapps.live.com/op/view.aspx?src='
  10043. ) != -1
  10044. "
  10045. style="width: 100%;height:100%; margin: 0 auto"
  10046. >
  10047. <iframe
  10048. style="width: 100%; height: 100%; border: none"
  10049. :src="fullUrl"
  10050. ></iframe>
  10051. </div>
  10052. <iframe
  10053. v-else-if="fulltype == 2"
  10054. style="width: 100%; height: 100%; border: none"
  10055. :src="fullUrl"
  10056. security="restricted"
  10057. sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts allow-popups"
  10058. ></iframe>
  10059. <pdf
  10060. v-else-if="fulltype == 3"
  10061. :pdfUrl="fullUrl"
  10062. style="width: 100%; height: 100%; overflow: auto"
  10063. ></pdf>
  10064. <div
  10065. class="wheel"
  10066. v-if="fulltype == 1"
  10067. style="
  10068. box-shadow: 0 0 6px 1px #f2f2f2;
  10069. height:100%;
  10070. width: 100%;
  10071. background: #f1f1f1;
  10072. "
  10073. >
  10074. <div class="title" style="width: 100%; box-sizing: border-box">
  10075. 查看文档
  10076. </div>
  10077. <el-form class="textBox" style="height: 90%">
  10078. <el-form-item class="textTitle">
  10079. <div style="font-size: 22px">
  10080. {{ fullUrl.name }}
  10081. </div>
  10082. </el-form-item>
  10083. <!-- <div style="color: #918f8f; width: 85%">文档内容</div> -->
  10084. <div
  10085. v-html="fullUrl.url"
  10086. class="textContent"
  10087. style="height: auto"
  10088. ></div>
  10089. </el-form>
  10090. </div>
  10091. </div>
  10092. <!-- <div slot="footer">
  10093. <el-button @click="fullDialogVisible = false">关 闭</el-button>
  10094. </div> -->
  10095. </el-dialog>
  10096. <el-dialog
  10097. title="个人评价"
  10098. :visible.sync="studentEvalDialogVisible"
  10099. :append-to-body="true"
  10100. width="800px"
  10101. :before-close="handleClose"
  10102. class="dialog_diy"
  10103. >
  10104. <div class="evalCss">
  10105. <div class="nav">请选择星星进行评分</div>
  10106. <div class="middleBox" v-if="eScore.eStar">
  10107. <div class="pfBox" v-for="(e, eIndex) in rateJson" :key="eIndex">
  10108. <div class="nameAndrate">
  10109. <div>{{ e.value }}</div>
  10110. <el-rate
  10111. v-model="eScore.eStar[eIndex]"
  10112. :disabled="isStar"
  10113. ></el-rate>
  10114. </div>
  10115. <div v-if="e.detail">{{ e.detail }}</div>
  10116. </div>
  10117. <div class="easy_comment" v-if="false">
  10118. <div
  10119. v-for="(p, pIndex) in PlTextList"
  10120. :key="pIndex"
  10121. @click="fastText(p, 2)"
  10122. >
  10123. {{ p }}
  10124. </div>
  10125. </div>
  10126. <div class="bz">
  10127. <textarea
  10128. :disabled="isStar"
  10129. rows="4"
  10130. class="pj"
  10131. style="
  10132. padding: 10px 5px;
  10133. width: 70%;
  10134. background: #f7f6f9;
  10135. font-size: 14px;
  10136. text-indent: 10px;
  10137. "
  10138. cols
  10139. v-model="eScore.eBzText"
  10140. placeholder="请输入评价内容..."
  10141. ></textarea>
  10142. </div>
  10143. </div>
  10144. </div>
  10145. <div slot="footer">
  10146. <el-button @click="studentEvalDialogVisible = false">取 消</el-button>
  10147. <el-button type="primary" @click="addBzWorks" v-if="!isStar"
  10148. >确 定</el-button
  10149. >
  10150. </div>
  10151. </el-dialog>
  10152. <el-dialog
  10153. title="个人评价"
  10154. :visible.sync="studentEvalDialogVisibleTeacher"
  10155. :append-to-body="true"
  10156. width="800px"
  10157. :before-close="handleClose"
  10158. class="dialog_diy"
  10159. >
  10160. <div class="w_name">
  10161. 学生姓名:<span>{{ sStudent.student }}</span>
  10162. </div>
  10163. <div class="evalCss">
  10164. <div class="nav">请选择星星进行评分</div>
  10165. <div class="middleBox" v-if="eScore.eStar">
  10166. <div class="pfBox" v-for="(e, eIndex) in rateJson" :key="eIndex">
  10167. <div class="nameAndrate">
  10168. <div>{{ e.value }}</div>
  10169. <el-rate
  10170. v-model="eScore.eStar[eIndex]"
  10171. :disabled="isStar"
  10172. ></el-rate>
  10173. </div>
  10174. <div v-if="e.detail">{{ e.detail }}</div>
  10175. </div>
  10176. <div class="easy_comment" v-if="false">
  10177. <div
  10178. v-for="(p, pIndex) in PlTextList"
  10179. :key="pIndex"
  10180. @click="fastText(p, 2)"
  10181. >
  10182. {{ p }}
  10183. </div>
  10184. </div>
  10185. <div class="bz">
  10186. <textarea
  10187. :disabled="isStar"
  10188. rows="4"
  10189. class="pj"
  10190. style="
  10191. padding: 10px 5px;
  10192. width: 70%;
  10193. background: #f7f6f9;
  10194. font-size: 14px;
  10195. text-indent: 10px;
  10196. "
  10197. cols
  10198. v-model="eScore.eBzText"
  10199. placeholder="请输入评价内容..."
  10200. ></textarea>
  10201. </div>
  10202. </div>
  10203. </div>
  10204. <div slot="footer">
  10205. <el-button @click="studentEvalDialogVisibleTeacher = false"
  10206. >取 消</el-button
  10207. >
  10208. <el-button type="primary" @click="addBzWorksTeacher" v-if="!isStar"
  10209. >确 定</el-button
  10210. >
  10211. </div>
  10212. </el-dialog>
  10213. <el-dialog
  10214. title="选择匹配"
  10215. :visible.sync="dialogVisibleSelect"
  10216. :append-to-body="true"
  10217. width="90%"
  10218. :before-close="handleClose"
  10219. class="dialog_diy dialog_diy3"
  10220. >
  10221. <div v-if="selectJson">
  10222. <div class="select_box2">
  10223. <div class="select_box2_title">
  10224. <div>选择匹配</div>
  10225. <div>请选择对应的答案进行答题!</div>
  10226. </div>
  10227. <div class="select_box2_box">
  10228. <div class="select_box2_img">
  10229. <img
  10230. :src="selectJson.url"
  10231. @click="previewImg(selectJson.url)"
  10232. alt=""
  10233. />
  10234. </div>
  10235. <div :class="isSelect ? 'rightWidthCss' : 'select_box2_answer'">
  10236. <div style="padding-top: 15px">
  10237. <div class="select_answer_title" v-if="isSelect">
  10238. {{ selectAnswer.stu }}
  10239. </div>
  10240. <div class="select_answer_title" v-else>
  10241. 根据题目选择对应答案
  10242. </div>
  10243. <div
  10244. class="select_box2_answer_box"
  10245. v-for="(item2, checkIndex) in selectJson.select"
  10246. :key="checkIndex"
  10247. >
  10248. <span style="min-width: 30px">{{ checkIndex + 1 }}、</span>
  10249. <el-select
  10250. :disabled="isSelect"
  10251. v-model="selectAnswer.answer[checkIndex]"
  10252. placeholder="请选择正确答案"
  10253. >
  10254. <el-option
  10255. v-for="(e, eIndex) in selectJson.select"
  10256. :key="eIndex"
  10257. :label="e"
  10258. :value="eIndex"
  10259. >
  10260. </el-option>
  10261. </el-select>
  10262. </div>
  10263. </div>
  10264. <div
  10265. class="rightAnswerCss"
  10266. v-if="isSelect && (tType == 1 || tType == 4)"
  10267. >
  10268. <div
  10269. v-for="(a, aIndex) in selectJson.answer"
  10270. :key="aIndex"
  10271. class="rightAnswer"
  10272. >
  10273. <div
  10274. v-if="selectAnswer.answer[aIndex] === a"
  10275. style="color: #767de1"
  10276. >
  10277. 回答正确
  10278. </div>
  10279. <div v-else>回答错误</div>
  10280. <div
  10281. style="margin-left: 10px"
  10282. v-if="selectAnswer.answer[aIndex] !== a"
  10283. >
  10284. 正确答案:
  10285. </div>
  10286. <div
  10287. :class="
  10288. selectAnswer.answer[aIndex] === a ? 'blueCss' : 'redCss'
  10289. "
  10290. >
  10291. {{ selectJson.select[a] }}
  10292. </div>
  10293. </div>
  10294. </div>
  10295. </div>
  10296. <div class="upAnswerCss">
  10297. <el-button
  10298. type="primary"
  10299. @click="addSelectAnswer"
  10300. v-if="!isSelect"
  10301. >提交答案</el-button
  10302. >
  10303. </div>
  10304. </div>
  10305. </div>
  10306. </div>
  10307. </el-dialog>
  10308. <el-dialog
  10309. title="选择匹配"
  10310. :visible.sync="dialogVisibleSelectTeacher"
  10311. :append-to-body="true"
  10312. width="90%"
  10313. :before-close="handleClose"
  10314. class="dialog_diy dialog_diy3"
  10315. >
  10316. <div v-if="selectJson">
  10317. <div class="w_name">
  10318. 学生姓名:<span>{{ sStudent.student }}</span>
  10319. </div>
  10320. <div class="select_box2">
  10321. <div class="select_box2_title">
  10322. <div>选择匹配</div>
  10323. <div>请选择对应的答案进行答题!</div>
  10324. </div>
  10325. <div class="select_box2_box">
  10326. <div class="select_box2_img">
  10327. <img
  10328. :src="selectJson.url"
  10329. @click="previewImg(selectJson.url)"
  10330. alt=""
  10331. />
  10332. </div>
  10333. <div :class="isSelect ? 'rightWidthCss' : 'select_box2_answer'">
  10334. <div style="padding-top: 15px">
  10335. <div class="select_answer_title" v-if="isSelect">
  10336. {{ selectAnswer.stu }}
  10337. </div>
  10338. <div class="select_answer_title" v-else>
  10339. 根据题目选择对应答案
  10340. </div>
  10341. <div
  10342. class="select_box2_answer_box"
  10343. v-for="(item2, checkIndex) in selectJson.select"
  10344. :key="checkIndex"
  10345. >
  10346. <span style="min-width: 30px">{{ checkIndex + 1 }}、</span>
  10347. <el-select
  10348. :disabled="isSelect"
  10349. v-model="selectAnswer.answer[checkIndex]"
  10350. placeholder="请选择正确答案"
  10351. >
  10352. <el-option
  10353. v-for="(e, eIndex) in selectJson.select"
  10354. :key="eIndex"
  10355. :label="e"
  10356. :value="eIndex"
  10357. >
  10358. </el-option>
  10359. </el-select>
  10360. </div>
  10361. </div>
  10362. <div
  10363. class="rightAnswerCss"
  10364. v-if="isSelect && (tType == 1 || tType == 4)"
  10365. >
  10366. <div
  10367. v-for="(a, aIndex) in selectJson.answer"
  10368. :key="aIndex"
  10369. class="rightAnswer"
  10370. >
  10371. <div
  10372. v-if="selectAnswer.answer[aIndex] === a"
  10373. style="color: #767de1"
  10374. >
  10375. 回答正确
  10376. </div>
  10377. <div v-else>回答错误</div>
  10378. <div
  10379. style="margin-left: 10px"
  10380. v-if="selectAnswer.answer[aIndex] !== a"
  10381. >
  10382. 正确答案:
  10383. </div>
  10384. <div
  10385. :class="
  10386. selectAnswer.answer[aIndex] === a ? 'blueCss' : 'redCss'
  10387. "
  10388. >
  10389. {{ selectJson.select[a] }}
  10390. </div>
  10391. </div>
  10392. </div>
  10393. </div>
  10394. <div class="upAnswerCss">
  10395. <el-button
  10396. type="primary"
  10397. @click="addSelectAnswerTeacher"
  10398. v-if="!isSelect"
  10399. >提交答案</el-button
  10400. >
  10401. </div>
  10402. </div>
  10403. </div>
  10404. </div>
  10405. </el-dialog>
  10406. <el-dialog
  10407. title="教师评分"
  10408. :visible.sync="dialogVisibleScore"
  10409. :append-to-body="true"
  10410. width="800px"
  10411. :before-close="handleClose"
  10412. class="dialog_diy"
  10413. >
  10414. <div>
  10415. <div class="studentDetail">
  10416. <div class="tx"><img src="../../assets/avatar.png" alt="" /></div>
  10417. <div class="nameAndTime">
  10418. <div style="margin-bottom: 5px">{{ commentDetail.sName }}</div>
  10419. <div>{{ commentDetail.time }}</div>
  10420. </div>
  10421. </div>
  10422. <div
  10423. class="worksAnswer"
  10424. v-if="commentDetail.works && commentDetail.type == 2"
  10425. >
  10426. {{ JSON.parse(commentDetail.works)[0].answer }}
  10427. </div>
  10428. <div
  10429. class="worksAnswer"
  10430. v-if="commentDetail.works && commentDetail.type == 1"
  10431. >
  10432. <pdf
  10433. v-if="showPDF"
  10434. :pdfUrl="pptImgUrl"
  10435. style="width: 100%; height: 520px; overflow: auto"
  10436. :class="{ fullStyle: full }"
  10437. ></pdf>
  10438. <iframe
  10439. v-else
  10440. :src="pptImgUrl"
  10441. frameborder="0"
  10442. width="100%"
  10443. height="600"
  10444. :class="{ fullStyle: full }"
  10445. ></iframe>
  10446. </div>
  10447. <div
  10448. class="worksAnswer"
  10449. v-if="commentDetail.works && commentDetail.type == 0"
  10450. >
  10451. <img
  10452. :src="commentDetail.works"
  10453. alt=""
  10454. @click="previewImg(commentDetail.works)"
  10455. />
  10456. </div>
  10457. <div
  10458. class="worksAnswer"
  10459. v-if="commentDetail.works && commentDetail.type == 3"
  10460. >
  10461. <video-player
  10462. class="video-player vjs-custom-skin"
  10463. :playsinline="true"
  10464. :options="videoDetail"
  10465. @play="onPlayerPlay($event)"
  10466. style="width: 90%; height: 100%; margin: 0 0 0 30px"
  10467. ></video-player>
  10468. </div>
  10469. <div
  10470. class="worksAnswer codeFileBox"
  10471. v-if="commentDetail.works && commentDetail.type == 12"
  10472. @click="downloadFile(commentDetail.works)"
  10473. >
  10474. <img src="../../assets/icon/codeFile.png" />
  10475. <div>点击下载文件</div>
  10476. </div>
  10477. <div
  10478. class="worksAnswer codeFileBox"
  10479. v-if="commentDetail.works && commentDetail.type == 15"
  10480. @click="
  10481. openCocoPi(
  10482. 57,
  10483. commentIndexJson.toolIndex,
  10484. commentDetail.userid,
  10485. commentDetail.sName
  10486. )
  10487. "
  10488. >
  10489. <img src="../../assets/icon/codeFile.png" />
  10490. <div>点击打开CocoPi</div>
  10491. </div>
  10492. <div
  10493. class="worksAnswer"
  10494. v-if="commentDetail.works && commentDetail.type == 13"
  10495. >
  10496. <div v-html="JSON.parse(commentDetail.works).text"></div>
  10497. </div>
  10498. <div class="scoreBox">
  10499. <span class="t">请输入分数</span>
  10500. <el-input-number
  10501. :disabled="courseDetail.userid != userid"
  10502. v-model="wScore"
  10503. :controls="false"
  10504. :min="0"
  10505. :max="100"
  10506. ></el-input-number>
  10507. </div>
  10508. <div class="scoreDetailBox">
  10509. <span class="t">评分评论</span>
  10510. <el-input
  10511. type="textarea"
  10512. :rows="5"
  10513. :disabled="courseDetail.userid != userid"
  10514. resize="none"
  10515. v-model="scoreDetail"
  10516. placeholder="请输入对学生的评价"
  10517. >
  10518. </el-input>
  10519. </div>
  10520. </div>
  10521. <span slot="footer" class="dialog-footer">
  10522. <el-button
  10523. @click="
  10524. (dialogVisibleScore = false),
  10525. (commentIndexJson = {}),
  10526. videoDetail.sources && videoDetail.sources[0]
  10527. ? (videoDetail.sources[0].src = '')
  10528. : ''
  10529. "
  10530. >取 消</el-button
  10531. >
  10532. <el-button
  10533. type="primary"
  10534. v-if="courseDetail.userid == userid"
  10535. @click="scoreWork(commentDetail.wid,commentDetail.sName)"
  10536. >确 定
  10537. </el-button>
  10538. </span>
  10539. </el-dialog>
  10540. <el-dialog
  10541. title="排序"
  10542. :visible.sync="dialogVisibleSentence"
  10543. :append-to-body="true"
  10544. width="1000px"
  10545. :before-close="handleClose"
  10546. class="dialog_diy dialog_diy3"
  10547. >
  10548. <div>
  10549. <div class="sentenBox">
  10550. <div
  10551. v-for="(st, stIndex) in sentenceList"
  10552. :key="stIndex"
  10553. style="padding-bottom: 20px"
  10554. >
  10555. <div
  10556. style="padding: 15px 0 10px 20px"
  10557. class="sentenceTitle"
  10558. :index="stIndex + 1"
  10559. >
  10560. 题目{{ stIndex + 1 }}:请选择正确顺序
  10561. </div>
  10562. <div class="cardList" v-if="st.chooseSenList">
  10563. <div class="cardBox">
  10564. <div
  10565. v-for="(r, rIndex) in st.chooseSenList"
  10566. :key="rIndex"
  10567. @click="returnCard(r, stIndex, rIndex)"
  10568. >
  10569. <el-tooltip
  10570. class="item"
  10571. effect="light"
  10572. :content="r"
  10573. placement="top"
  10574. v-if="r != '' && r != undefined"
  10575. >
  10576. <div
  10577. :class="{
  10578. isCard: r,
  10579. isChooseCard: r == '' || r == undefined,
  10580. }"
  10581. >
  10582. <div>{{ r }}</div>
  10583. </div>
  10584. </el-tooltip>
  10585. <div
  10586. :class="{
  10587. isCard: r,
  10588. isChooseCard: r == '' || r == undefined,
  10589. }"
  10590. v-else
  10591. >
  10592. <div>{{ r }}</div>
  10593. </div>
  10594. </div>
  10595. </div>
  10596. </div>
  10597. <div class="cardList" v-if="st.addChangeSen">
  10598. <div class="cardBox">
  10599. <div
  10600. v-for="(s, sIndex) in st.addChangeSen"
  10601. :key="sIndex"
  10602. @click="setRightAnswer(s, stIndex, sIndex)"
  10603. >
  10604. <el-tooltip
  10605. class="item"
  10606. effect="light"
  10607. :content="s"
  10608. placement="top"
  10609. v-if="s != '' && s != undefined"
  10610. >
  10611. <div
  10612. :class="{ noCard: s == '' || s == undefined, isCard: s }"
  10613. >
  10614. <div>{{ s }}</div>
  10615. </div>
  10616. </el-tooltip>
  10617. <div
  10618. :class="{ noCard: s == '' || s == undefined, isCard: s }"
  10619. v-else
  10620. >
  10621. <div>{{ s }}</div>
  10622. </div>
  10623. </div>
  10624. </div>
  10625. </div>
  10626. </div>
  10627. </div>
  10628. </div>
  10629. <span slot="footer" class="dialog-footer">
  10630. <el-button @click="dialogVisibleSentence = false">取 消</el-button>
  10631. <el-button type="primary" @click="addSenWorks">确 定</el-button>
  10632. </span>
  10633. </el-dialog>
  10634. <el-dialog
  10635. title="排序"
  10636. :visible.sync="dialogVisibleSentenceTeacher"
  10637. :append-to-body="true"
  10638. width="1000px"
  10639. :before-close="handleClose"
  10640. class="dialog_diy dialog_diy3"
  10641. >
  10642. <div>
  10643. <div class="w_name">
  10644. 学生姓名:<span>{{ sStudent.student }}</span>
  10645. </div>
  10646. <div class="sentenBox">
  10647. <div
  10648. v-for="(st, stIndex) in sentenceList"
  10649. :key="stIndex"
  10650. style="padding-bottom: 20px"
  10651. >
  10652. <div
  10653. style="padding: 15px 0 10px 20px"
  10654. class="sentenceTitle"
  10655. :index="stIndex + 1"
  10656. >
  10657. 题目{{ stIndex + 1 }}:请选择正确顺序
  10658. </div>
  10659. <div class="cardList" v-if="st.chooseSenList">
  10660. <div class="cardBox">
  10661. <div
  10662. v-for="(r, rIndex) in st.chooseSenList"
  10663. :key="rIndex"
  10664. @click="returnCard(r, stIndex, rIndex)"
  10665. >
  10666. <el-tooltip
  10667. class="item"
  10668. effect="light"
  10669. :content="r"
  10670. placement="top"
  10671. v-if="r != '' && r != undefined"
  10672. >
  10673. <div
  10674. :class="{
  10675. isCard: r,
  10676. isChooseCard: r == '' || r == undefined,
  10677. }"
  10678. >
  10679. <div>{{ r }}</div>
  10680. </div>
  10681. </el-tooltip>
  10682. <div
  10683. :class="{
  10684. isCard: r,
  10685. isChooseCard: r == '' || r == undefined,
  10686. }"
  10687. v-else
  10688. >
  10689. <div>{{ r }}</div>
  10690. </div>
  10691. </div>
  10692. </div>
  10693. </div>
  10694. <div class="cardList" v-if="st.addChangeSen">
  10695. <div class="cardBox">
  10696. <div
  10697. v-for="(s, sIndex) in st.addChangeSen"
  10698. :key="sIndex"
  10699. @click="setRightAnswer(s, stIndex, sIndex)"
  10700. >
  10701. <el-tooltip
  10702. class="item"
  10703. effect="light"
  10704. :content="s"
  10705. placement="top"
  10706. v-if="s != '' && s != undefined"
  10707. >
  10708. <div
  10709. :class="{ noCard: s == '' || s == undefined, isCard: s }"
  10710. >
  10711. <div>{{ s }}</div>
  10712. </div>
  10713. </el-tooltip>
  10714. <div
  10715. :class="{ noCard: s == '' || s == undefined, isCard: s }"
  10716. v-else
  10717. >
  10718. <div>{{ s }}</div>
  10719. </div>
  10720. </div>
  10721. </div>
  10722. </div>
  10723. </div>
  10724. </div>
  10725. </div>
  10726. <span slot="footer" class="dialog-footer">
  10727. <el-button @click="dialogVisibleSentenceTeacher = false"
  10728. >取 消</el-button
  10729. >
  10730. <el-button type="primary" @click="addSenWorksTeacher">确 定</el-button>
  10731. </span>
  10732. </el-dialog>
  10733. <el-dialog
  10734. title="排序"
  10735. :visible.sync="dialogVisibleSentence1"
  10736. :append-to-body="true"
  10737. width="1000px"
  10738. :before-close="handleClose"
  10739. class="dialog_diy dialog_diy3"
  10740. >
  10741. <div>
  10742. <div class="sentenBox">
  10743. <div style="padding: 15px 0 10px 20px; font-size: 20px">
  10744. {{ sentenceList1.stuName }}的作业
  10745. </div>
  10746. <div
  10747. v-for="(st, stIndex) in sentenceList1"
  10748. :key="stIndex"
  10749. style="padding-bottom: 20px"
  10750. >
  10751. <div style="padding: 15px 0 10px 20px; font-size: 20px">
  10752. 第{{ stIndex + 1 }}题
  10753. </div>
  10754. <div class="isWrong">
  10755. <div class="cardList1" v-if="st.chooseSenList">
  10756. <div class="cardBox">
  10757. <div v-for="(s, sIndex) in st.chooseSenList" :key="sIndex">
  10758. <el-tooltip
  10759. class="item"
  10760. effect="light"
  10761. :content="s"
  10762. placement="top"
  10763. >
  10764. <div class="isCard">
  10765. <div>{{ s }}</div>
  10766. </div>
  10767. </el-tooltip>
  10768. </div>
  10769. </div>
  10770. <div class="cardAnswerBox">
  10771. 组成句子:{{ st.chooseSenList.join(" ") }}
  10772. </div>
  10773. </div>
  10774. <div v-if="tType == 2" class="isTj">
  10775. <div class="isTjImg">
  10776. <img src="../../assets/icon/conSentences/right.png" alt="" />
  10777. </div>
  10778. <div>已提交</div>
  10779. </div>
  10780. <div
  10781. class="answerRight isTj"
  10782. v-if="
  10783. st.chooseSenList.toString() == st.rightAnswer.toString() &&
  10784. (tType == 1 || tType == 4)
  10785. "
  10786. >
  10787. <div class="isTjImg">
  10788. <img src="../../assets/icon/conSentences/right.png" alt="" />
  10789. </div>
  10790. <div>回答正确</div>
  10791. </div>
  10792. <div
  10793. class="answerRight isTj"
  10794. v-if="
  10795. st.chooseSenList.toString() != st.rightAnswer.toString() &&
  10796. (tType == 1 || tType == 4)
  10797. "
  10798. >
  10799. <div class="isTjImg">
  10800. <img src="../../assets/icon/conSentences/wrong.png" alt="" />
  10801. </div>
  10802. <div>回答错误</div>
  10803. </div>
  10804. </div>
  10805. <div
  10806. v-if="
  10807. st.chooseSenList.toString() != st.rightAnswer.toString() &&
  10808. (tType == 1 || tType == 4)
  10809. "
  10810. >
  10811. <div style="padding: 15px 0 10px 20px">正确答案如下:</div>
  10812. <div
  10813. class="cardList"
  10814. v-if="st.rightAnswer"
  10815. style="border: none; padding: 10px 0 10px 10px; margin: 0"
  10816. >
  10817. <div class="cardBox">
  10818. <div v-for="(r, rIndex) in st.rightAnswer" :key="rIndex">
  10819. <el-tooltip
  10820. class="item"
  10821. effect="light"
  10822. :content="r"
  10823. placement="top"
  10824. >
  10825. <div class="isCard1">
  10826. <div>{{ r }}</div>
  10827. </div>
  10828. </el-tooltip>
  10829. </div>
  10830. </div>
  10831. <div class="cardAnswerBox">
  10832. 组成句子:{{ st.rightAnswer.join(" ") }}
  10833. </div>
  10834. </div>
  10835. </div>
  10836. </div>
  10837. </div>
  10838. </div>
  10839. <span slot="footer" class="dialog-footer">
  10840. <el-button @click="dialogVisibleSentence1 = false">取 消</el-button>
  10841. <el-button type="primary" @click="dialogVisibleSentence1 = false"
  10842. >确 定</el-button
  10843. >
  10844. </span>
  10845. </el-dialog>
  10846. <el-dialog
  10847. title="教师提交作业"
  10848. :visible.sync="dialogVisibleWorks"
  10849. :append-to-body="true"
  10850. width="500px"
  10851. :before-close="handleClose"
  10852. class="dialog_change"
  10853. >
  10854. <div class="marginT">
  10855. <div class="w_name">
  10856. 学生姓名:<span>{{ sStudent.student }}</span>
  10857. </div>
  10858. <div>上传文件</div>
  10859. <div
  10860. class="chapter_add"
  10861. @click="addImg($event)"
  10862. v-if="studyJuri[0].cover.length == 0"
  10863. >
  10864. <div class="up_photo">
  10865. <img src="../../assets/uploadImg2.png" alt />
  10866. </div>
  10867. <!-- <input
  10868. type="file"
  10869. accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
  10870. style="display: none"
  10871. @change="beforeUpload1($event, 1)"
  10872. /> -->
  10873. <input
  10874. type="file"
  10875. accept="*"
  10876. style="display: none"
  10877. @change="beforeUpload1($event, 1)"
  10878. />
  10879. </div>
  10880. <!-- capture="camera" -->
  10881. <div
  10882. class="chapter_add"
  10883. style="
  10884. display: flex;
  10885. width: 100%;
  10886. flex-direction: row;
  10887. flex-wrap: wrap;
  10888. justify-content: flex-start;
  10889. padding: 15px 0;
  10890. "
  10891. v-if="studyJuri[0].cover.length > 0"
  10892. >
  10893. <div class="upCover">
  10894. <img :src="studyJuri[0].cover[0].url" alt v-if="fileType == 0" />
  10895. <img :src="word" alt v-else-if="fileType == 1" />
  10896. <img :src="video" alt v-else-if="fileType == 2" />
  10897. <img :src="word2" alt v-else-if="fileType == 3" />
  10898. <span class="picName">{{ studyJuri[0].cover[0].name }}</span>
  10899. <div class="deleteWord" @click="clean(1)">
  10900. <img src="../../assets/icon/deleteWorks.png" alt />
  10901. </div>
  10902. </div>
  10903. </div>
  10904. </div>
  10905. <div
  10906. class="upload_send"
  10907. @click="addCourseWorksTeacher(taskCount)"
  10908. v-if="!proVisible"
  10909. >
  10910. 提交
  10911. </div>
  10912. </el-dialog>
  10913. <ImgDraw
  10914. :drawShow="drawShow"
  10915. @closeDraw="closeDraw"
  10916. @addImgDraw="addImgDraw"
  10917. :bg="bg"
  10918. ></ImgDraw>
  10919. <el-dialog
  10920. title="表格"
  10921. :visible.sync="dialogVisibleTable"
  10922. :append-to-body="true"
  10923. width="95%"
  10924. :before-close="handleClose"
  10925. class="dialog_diy"
  10926. >
  10927. <el-form>
  10928. <div
  10929. style="
  10930. display: flex;
  10931. align-items: center;
  10932. justify-content: space-between;
  10933. "
  10934. >
  10935. <span>表格内容</span>
  10936. <el-button type="primary" size="small" @click="returnTableText"
  10937. >还原模板</el-button
  10938. >
  10939. </div>
  10940. <Table
  10941. v-model="tableJson.text"
  10942. @change="change"
  10943. v-if="dialogVisibleTable"
  10944. ></Table>
  10945. </el-form>
  10946. <span slot="footer" class="dialog-footer">
  10947. <el-button @click="dialogVisibleTable = false">取 消</el-button>
  10948. <el-button type="primary" @click="addTableWorks">确定</el-button>
  10949. </span>
  10950. </el-dialog>
  10951. <el-dialog
  10952. title="表格"
  10953. :visible.sync="dialogVisibleTableTeacher"
  10954. :append-to-body="true"
  10955. width="95%"
  10956. :before-close="handleClose"
  10957. class="dialog_diy"
  10958. >
  10959. <el-form>
  10960. <div class="w_name">
  10961. 学生姓名:<span>{{ sStudent.student }}</span>
  10962. </div>
  10963. <div>表格内容</div>
  10964. <Table
  10965. v-model="tableJson.text"
  10966. @change="change"
  10967. v-if="dialogVisibleTableTeacher"
  10968. ></Table>
  10969. </el-form>
  10970. <span slot="footer" class="dialog-footer">
  10971. <el-button @click="dialogVisibleTableTeacher = false">取 消</el-button>
  10972. <el-button type="primary" @click="addTableWorksTeacher">确定</el-button>
  10973. </span>
  10974. </el-dialog>
  10975. <el-dialog
  10976. title="文档"
  10977. :visible.sync="dialogVisibleWord"
  10978. :append-to-body="true"
  10979. width="95%"
  10980. :before-close="handleClose"
  10981. class="dialog_diy"
  10982. >
  10983. <el-form>
  10984. <div
  10985. style="
  10986. display: flex;
  10987. align-items: center;
  10988. justify-content: space-between;
  10989. "
  10990. >
  10991. <span>文档内容</span>
  10992. <el-button type="primary" size="small" @click="returnWordText"
  10993. >还原模板</el-button
  10994. >
  10995. </div>
  10996. <editor-bar
  10997. v-model="wordJson.text"
  10998. v-if="dialogVisibleWord"
  10999. ></editor-bar>
  11000. </el-form>
  11001. <span slot="footer" class="dialog-footer">
  11002. <el-button @click="dialogVisibleWord = false">取 消</el-button>
  11003. <el-button type="primary" @click="addWordWorks">确定</el-button>
  11004. </span>
  11005. </el-dialog>
  11006. <el-dialog
  11007. title="文档"
  11008. :visible.sync="dialogVisibleWordTeacher"
  11009. :append-to-body="true"
  11010. width="95%"
  11011. :before-close="handleClose"
  11012. class="dialog_diy"
  11013. >
  11014. <el-form>
  11015. <div class="w_name">
  11016. 学生姓名:<span>{{ sStudent.student }}</span>
  11017. </div>
  11018. <div>文档内容</div>
  11019. <editor-bar
  11020. v-model="wordJson.text"
  11021. v-if="dialogVisibleWordTeacher"
  11022. ></editor-bar>
  11023. </el-form>
  11024. <span slot="footer" class="dialog-footer">
  11025. <el-button @click="dialogVisibleWordTeacher = false">取 消</el-button>
  11026. <el-button type="primary" @click="addWordWorksTeacher">确定</el-button>
  11027. </span>
  11028. </el-dialog>
  11029. <el-dialog
  11030. title="表格"
  11031. :visible.sync="dialogVisibleTable2"
  11032. :append-to-body="true"
  11033. width="95%"
  11034. :before-close="handleClose"
  11035. class="dialog_diy"
  11036. >
  11037. <el-form>
  11038. <div class="cont" v-html="tableJson.text"></div>
  11039. </el-form>
  11040. <span slot="footer" class="dialog-footer">
  11041. <el-button @click="dialogVisibleTable2 = false">关 闭</el-button>
  11042. </span>
  11043. </el-dialog>
  11044. <el-dialog
  11045. title="文档"
  11046. :visible.sync="dialogVisibleTable3"
  11047. :append-to-body="true"
  11048. width="95%"
  11049. :before-close="handleClose"
  11050. class="dialog_diy"
  11051. >
  11052. <el-form>
  11053. <div class="cont" v-html="tableJson.text"></div>
  11054. </el-form>
  11055. <span slot="footer" class="dialog-footer">
  11056. <el-button @click="dialogVisibleTable3 = false">关 闭</el-button>
  11057. </span>
  11058. </el-dialog>
  11059. <el-dialog
  11060. title="分组设置"
  11061. :visible.sync="dialogVisibleGroup"
  11062. :append-to-body="true"
  11063. width="95%"
  11064. :before-close="handleClose"
  11065. class="dialog_diy"
  11066. >
  11067. <div v-if="dialogVisibleGroup">
  11068. <div v-if="courseDetail.userid == userid" class="g_d_btnBox">
  11069. <div style="color: rgb(171 171 171); margin: 0 10px 0 0">
  11070. 提示:开启【开放选座】,学生能够自由加入和退出小组。
  11071. </div>
  11072. <!-- <div type="primary" v-if="groupJson.islock == 1" class="returnBtn" style="background-color: #225bc7"
  11073. @click="lockChair">
  11074. 锁定位置
  11075. </div>
  11076. <div type="primary" v-else class="returnBtn" style="background-color: #225bc7" @click="lockChair">
  11077. 解锁位置
  11078. </div> -->
  11079. <div class="group_switch">
  11080. <span>开放选座</span>
  11081. <el-switch
  11082. v-model="islock"
  11083. active-text=""
  11084. class="switchCss"
  11085. @change="lockChair"
  11086. ></el-switch>
  11087. </div>
  11088. <div
  11089. type="primary"
  11090. @click="updateGroup"
  11091. class="returnBtn"
  11092. style="background-color: #225bc7"
  11093. >
  11094. 分组设置
  11095. </div>
  11096. </div>
  11097. <div>
  11098. <div
  11099. class="g_d_box"
  11100. v-if="groupJson.group && groupStudent[toolindex]"
  11101. >
  11102. <div
  11103. class="g_d_group"
  11104. v-for="(g, gindex) in groupJson.group"
  11105. :key="gindex"
  11106. >
  11107. <div class="g_d_group_chair">
  11108. <div v-if="groupJson.number > 1">
  11109. <span
  11110. :class="{
  11111. isChair:
  11112. groupStudent[toolindex][gindex] &&
  11113. groupStudent[toolindex][gindex][0],
  11114. updateChair:
  11115. courseDetail.userid == userid &&
  11116. groupStudent[toolindex][gindex] &&
  11117. groupStudent[toolindex][gindex][0] &&
  11118. groupJson.islock == 2,
  11119. }"
  11120. ><span
  11121. class="updateChairBtn"
  11122. @click="
  11123. updateGroupChair(
  11124. groupStudent[toolindex][gindex] &&
  11125. groupStudent[toolindex][gindex][0]
  11126. )
  11127. "
  11128. >修改</span
  11129. ></span
  11130. ><span>{{
  11131. groupStudent[toolindex][gindex] &&
  11132. groupStudent[toolindex][gindex][0]
  11133. ? groupStudent[toolindex][gindex] &&
  11134. groupStudent[toolindex][gindex][0].name
  11135. : "空位置"
  11136. }}</span>
  11137. </div>
  11138. <div v-if="groupJson.number > 4">
  11139. <span
  11140. :class="{
  11141. isChair:
  11142. groupStudent[toolindex][gindex] &&
  11143. groupStudent[toolindex][gindex][4],
  11144. updateChair:
  11145. courseDetail.userid == userid &&
  11146. groupStudent[toolindex][gindex] &&
  11147. groupStudent[toolindex][gindex][4] &&
  11148. groupJson.islock == 2,
  11149. }"
  11150. ><span
  11151. class="updateChairBtn"
  11152. @click="
  11153. updateGroupChair(
  11154. groupStudent[toolindex][gindex] &&
  11155. groupStudent[toolindex][gindex][4]
  11156. )
  11157. "
  11158. >修改</span
  11159. ></span
  11160. ><span>{{
  11161. groupStudent[toolindex][gindex] &&
  11162. groupStudent[toolindex][gindex][4]
  11163. ? groupStudent[toolindex][gindex] &&
  11164. groupStudent[toolindex][gindex][4].name
  11165. : "空位置"
  11166. }}</span>
  11167. </div>
  11168. <div v-if="groupJson.number > 8">
  11169. <span
  11170. :class="{
  11171. isChair:
  11172. groupStudent[toolindex][gindex] &&
  11173. groupStudent[toolindex][gindex][8],
  11174. updateChair:
  11175. courseDetail.userid == userid &&
  11176. groupStudent[toolindex][gindex] &&
  11177. groupStudent[toolindex][gindex][8] &&
  11178. groupJson.islock == 2,
  11179. }"
  11180. ><span
  11181. class="updateChairBtn"
  11182. @click="
  11183. updateGroupChair(
  11184. groupStudent[toolindex][gindex] &&
  11185. groupStudent[toolindex][gindex][8]
  11186. )
  11187. "
  11188. >修改</span
  11189. ></span
  11190. ><span>{{
  11191. groupStudent[toolindex][gindex] &&
  11192. groupStudent[toolindex][gindex][8]
  11193. ? groupStudent[toolindex][gindex] &&
  11194. groupStudent[toolindex][gindex][8].name
  11195. : "空位置"
  11196. }}</span>
  11197. </div>
  11198. </div>
  11199. <div class="g_d_group_tableBox">
  11200. <div class="g_d_group_chair2">
  11201. <div v-if="groupJson.number > 2">
  11202. <span
  11203. :class="{
  11204. isChair:
  11205. groupStudent[toolindex][gindex] &&
  11206. groupStudent[toolindex][gindex][2],
  11207. updateChair:
  11208. courseDetail.userid == userid &&
  11209. groupStudent[toolindex][gindex] &&
  11210. groupStudent[toolindex][gindex][2] &&
  11211. groupJson.islock == 2,
  11212. }"
  11213. ><span
  11214. class="updateChairBtn"
  11215. @click="
  11216. updateGroupChair(
  11217. groupStudent[toolindex][gindex] &&
  11218. groupStudent[toolindex][gindex][2]
  11219. )
  11220. "
  11221. >修改</span
  11222. ></span
  11223. ><span>{{
  11224. groupStudent[toolindex][gindex] &&
  11225. groupStudent[toolindex][gindex][2]
  11226. ? groupStudent[toolindex][gindex] &&
  11227. groupStudent[toolindex][gindex][2].name
  11228. : "空位置"
  11229. }}</span>
  11230. </div>
  11231. <div v-if="groupJson.number > 6">
  11232. <span
  11233. :class="{
  11234. isChair:
  11235. groupStudent[toolindex][gindex] &&
  11236. groupStudent[toolindex][gindex][6],
  11237. updateChair:
  11238. courseDetail.userid == userid &&
  11239. groupStudent[toolindex][gindex] &&
  11240. groupStudent[toolindex][gindex][6] &&
  11241. groupJson.islock == 2,
  11242. }"
  11243. ><span
  11244. class="updateChairBtn"
  11245. @click="
  11246. updateGroupChair(
  11247. groupStudent[toolindex][gindex] &&
  11248. groupStudent[toolindex][gindex][6]
  11249. )
  11250. "
  11251. >修改</span
  11252. ></span
  11253. ><span>{{
  11254. groupStudent[toolindex][gindex] &&
  11255. groupStudent[toolindex][gindex][6]
  11256. ? groupStudent[toolindex][gindex] &&
  11257. groupStudent[toolindex][gindex][6].name
  11258. : "空位置"
  11259. }}</span>
  11260. </div>
  11261. </div>
  11262. <div class="g_d_group_table">
  11263. <div>
  11264. {{ g.name }}
  11265. </div>
  11266. <div>
  11267. <div
  11268. v-if="
  11269. courseDetail.userid == userid && groupJson.islock == 2
  11270. "
  11271. @click="deleteGroupChair(gindex)"
  11272. >
  11273. 移除组员
  11274. </div>
  11275. <div
  11276. @click="selectGroup(gindex)"
  11277. v-else-if="
  11278. groupStudentUid[toolindex] &&
  11279. groupStudentUid[toolindex][gindex].indexOf(userid) == -1
  11280. "
  11281. >
  11282. 加入分组
  11283. </div>
  11284. <div
  11285. @click="
  11286. exitGroup(
  11287. groupStudent[toolindex][gindex] &&
  11288. groupStudent[toolindex][gindex][
  11289. groupStudentUid[toolindex][gindex].indexOf(userid)
  11290. ].id
  11291. )
  11292. "
  11293. v-else-if="
  11294. groupStudentUid[toolindex] &&
  11295. groupStudentUid[toolindex][gindex].indexOf(userid) != -1
  11296. "
  11297. >
  11298. 退出分组
  11299. </div>
  11300. </div>
  11301. </div>
  11302. <div class="g_d_group_chair2">
  11303. <div v-if="groupJson.number > 3">
  11304. <span
  11305. :class="{
  11306. isChair:
  11307. groupStudent[toolindex][gindex] &&
  11308. groupStudent[toolindex][gindex][3],
  11309. updateChair:
  11310. courseDetail.userid == userid &&
  11311. groupStudent[toolindex][gindex] &&
  11312. groupStudent[toolindex][gindex][3] &&
  11313. groupJson.islock == 2,
  11314. }"
  11315. ><span
  11316. class="updateChairBtn"
  11317. @click="
  11318. updateGroupChair(
  11319. groupStudent[toolindex][gindex] &&
  11320. groupStudent[toolindex][gindex][3]
  11321. )
  11322. "
  11323. >修改</span
  11324. ></span
  11325. ><span>{{
  11326. groupStudent[toolindex][gindex] &&
  11327. groupStudent[toolindex][gindex][3]
  11328. ? groupStudent[toolindex][gindex] &&
  11329. groupStudent[toolindex][gindex][3].name
  11330. : "空位置"
  11331. }}</span>
  11332. </div>
  11333. <div v-if="groupJson.number > 7">
  11334. <span
  11335. :class="{
  11336. isChair:
  11337. groupStudent[toolindex][gindex] &&
  11338. groupStudent[toolindex][gindex][7],
  11339. updateChair:
  11340. courseDetail.userid == userid &&
  11341. groupStudent[toolindex][gindex] &&
  11342. groupStudent[toolindex][gindex][7] &&
  11343. groupJson.islock == 2,
  11344. }"
  11345. ><span
  11346. class="updateChairBtn"
  11347. @click="
  11348. updateGroupChair(
  11349. groupStudent[toolindex][gindex] &&
  11350. groupStudent[toolindex][gindex][7]
  11351. )
  11352. "
  11353. >修改</span
  11354. ></span
  11355. ><span>{{
  11356. groupStudent[toolindex][gindex] &&
  11357. groupStudent[toolindex][gindex][7]
  11358. ? groupStudent[toolindex][gindex] &&
  11359. groupStudent[toolindex][gindex][7].name
  11360. : "空位置"
  11361. }}</span>
  11362. </div>
  11363. </div>
  11364. </div>
  11365. <div class="g_d_group_chair">
  11366. <div v-if="groupJson.number > 1">
  11367. <span
  11368. :class="{
  11369. isChair:
  11370. groupStudent[toolindex][gindex] &&
  11371. groupStudent[toolindex][gindex][1],
  11372. updateChair:
  11373. courseDetail.userid == userid &&
  11374. groupStudent[toolindex][gindex] &&
  11375. groupStudent[toolindex][gindex][1] &&
  11376. groupJson.islock == 2,
  11377. }"
  11378. ><span
  11379. class="updateChairBtn"
  11380. @click="
  11381. updateGroupChair(
  11382. groupStudent[toolindex][gindex] &&
  11383. groupStudent[toolindex][gindex][1]
  11384. )
  11385. "
  11386. >修改</span
  11387. ></span
  11388. ><span>{{
  11389. groupStudent[toolindex][gindex] &&
  11390. groupStudent[toolindex][gindex][1]
  11391. ? groupStudent[toolindex][gindex] &&
  11392. groupStudent[toolindex][gindex][1].name
  11393. : "空位置"
  11394. }}</span>
  11395. </div>
  11396. <div v-if="groupJson.number > 5">
  11397. <span
  11398. :class="{
  11399. isChair:
  11400. groupStudent[toolindex][gindex] &&
  11401. groupStudent[toolindex][gindex][5],
  11402. updateChair:
  11403. courseDetail.userid == userid &&
  11404. groupStudent[toolindex][gindex] &&
  11405. groupStudent[toolindex][gindex][5] &&
  11406. groupJson.islock == 2,
  11407. }"
  11408. ><span
  11409. class="updateChairBtn"
  11410. @click="
  11411. updateGroupChair(
  11412. groupStudent[toolindex][gindex] &&
  11413. groupStudent[toolindex][gindex][5]
  11414. )
  11415. "
  11416. >修改</span
  11417. ></span
  11418. ><span>{{
  11419. groupStudent[toolindex][gindex] &&
  11420. groupStudent[toolindex][gindex][5]
  11421. ? groupStudent[toolindex][gindex] &&
  11422. groupStudent[toolindex][gindex][5].name
  11423. : "空位置"
  11424. }}</span>
  11425. </div>
  11426. <div v-if="groupJson.number > 9">
  11427. <span
  11428. :class="{
  11429. isChair:
  11430. groupStudent[toolindex][gindex] &&
  11431. groupStudent[toolindex][gindex][9],
  11432. updateChair:
  11433. courseDetail.userid == userid &&
  11434. groupStudent[toolindex][gindex] &&
  11435. groupStudent[toolindex][gindex][9] &&
  11436. groupJson.islock == 2,
  11437. }"
  11438. ><span
  11439. class="updateChairBtn"
  11440. @click="
  11441. updateGroupChair(
  11442. groupStudent[toolindex][gindex] &&
  11443. groupStudent[toolindex][gindex][9]
  11444. )
  11445. "
  11446. >修改</span
  11447. ></span
  11448. ><span>{{
  11449. groupStudent[toolindex][gindex] &&
  11450. groupStudent[toolindex][gindex][9]
  11451. ? groupStudent[toolindex][gindex] &&
  11452. groupStudent[toolindex][gindex][9].name
  11453. : "空位置"
  11454. }}</span>
  11455. </div>
  11456. </div>
  11457. </div>
  11458. </div>
  11459. </div>
  11460. </div>
  11461. <span slot="footer" class="dialog-footer">
  11462. <!-- <el-button @click="(dialogVisibleGroup = false)">关 闭</el-button> -->
  11463. </span>
  11464. </el-dialog>
  11465. <el-dialog
  11466. title="分组设置"
  11467. :visible.sync="dialogVisibleGroup2"
  11468. :append-to-body="true"
  11469. width="650px"
  11470. :before-close="handleClose"
  11471. class="dialog_diy"
  11472. >
  11473. <div class="groupBox">
  11474. <div v-if="groupJson2.group" class="groupContent">
  11475. <div class="groupTitle">请设置小组数量及名称</div>
  11476. <div
  11477. v-for="(item, index) in groupJson2.group"
  11478. :key="index"
  11479. class="groupName"
  11480. >
  11481. <span class="groupn">第{{ index + 1 }}组名称:</span>
  11482. <el-input
  11483. v-model="item.name"
  11484. placeholder="请输入名称..."
  11485. style="width: 250px"
  11486. ></el-input>
  11487. <!-- <div class="groupBtn">
  11488. <el-button type="primary" size="small" @click="addGroup(index)">
  11489. 添加</el-button>
  11490. <el-button type="primary" size="small" @click="deleteGroup(index)"
  11491. v-if="groupJson2.group && groupJson2.group.length > 1">删除</el-button>
  11492. </div> -->
  11493. </div>
  11494. </div>
  11495. <div class="groupContent">
  11496. <div class="groupTitle">请设置每组人数</div>
  11497. <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
  11498. style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
  11499. <el-input
  11500. v-model="groupJson2.number"
  11501. style="width: 150px"
  11502. placeholder="请输入2-10的数字"
  11503. @change="numberPan"
  11504. ></el-input>
  11505. </div>
  11506. </div>
  11507. <span slot="footer" class="dialog-footer">
  11508. <el-button @click="dialogVisibleGroup2 = false">取 消</el-button>
  11509. <el-button type="primary" @click="updateGroupJson">确定</el-button>
  11510. </span>
  11511. </el-dialog>
  11512. <el-dialog
  11513. title="作业提交"
  11514. :visible.sync="dialogVisibleGroupWork"
  11515. :append-to-body="true"
  11516. width="500px"
  11517. :before-close="handleClose"
  11518. class="dialog_change"
  11519. >
  11520. <div class="marginT">
  11521. <div>上传文件</div>
  11522. <div
  11523. class="chapter_add"
  11524. @click="addImg($event)"
  11525. v-if="studyJuri[0].cover.length == 0"
  11526. >
  11527. <div class="up_photo">
  11528. <img src="../../assets/icon/uploadImg.png" alt />
  11529. </div>
  11530. <!-- <input
  11531. type="file"
  11532. accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
  11533. style="display: none"
  11534. @change="beforeUpload1($event, 1)"
  11535. /> -->
  11536. <input
  11537. type="file"
  11538. accept="*"
  11539. style="display: none"
  11540. @change="beforeUpload1($event, 1)"
  11541. />
  11542. </div>
  11543. <!-- capture="camera" -->
  11544. <div
  11545. class="chapter_add"
  11546. style="
  11547. display: flex;
  11548. width: 100%;
  11549. flex-direction: row;
  11550. flex-wrap: wrap;
  11551. justify-content: flex-start;
  11552. padding: 15px 0;
  11553. "
  11554. v-if="studyJuri[0].cover.length > 0"
  11555. >
  11556. <div class="upCover">
  11557. <img :src="studyJuri[0].cover[0].url" alt v-if="fileType == 0" />
  11558. <img :src="word" alt v-else-if="fileType == 1" />
  11559. <img :src="video" alt v-else-if="fileType == 2" />
  11560. <img :src="word2" alt v-else-if="fileType == 3" />
  11561. <span class="picName">{{ studyJuri[0].cover[0].name }}</span>
  11562. <div class="deleteWord" @click="clean(1)">
  11563. <img src="../../assets/icon/deleteWorks.png" alt />
  11564. </div>
  11565. </div>
  11566. </div>
  11567. </div>
  11568. <div
  11569. class="upload_send"
  11570. @click="addCourseWorks2(taskCount)"
  11571. v-if="!proVisible"
  11572. >
  11573. 提交
  11574. </div>
  11575. </el-dialog>
  11576. <el-dialog
  11577. title="修改分组"
  11578. :visible.sync="dialogVisibleUpdateGroup"
  11579. :append-to-body="true"
  11580. width="350px"
  11581. :before-close="handleClose"
  11582. class="dialog_diy"
  11583. >
  11584. <div>
  11585. <h2>
  11586. {{ this.updateGroupUser.name }}
  11587. </h2>
  11588. <div style="color: rgb(171 171 171); margin-top: 10px">
  11589. 请选择要进入的分组
  11590. </div>
  11591. <el-radio-group v-model="checkChair">
  11592. <el-radio
  11593. style="display: block; margin-top: 20px"
  11594. v-for="(item, index) in updateGroupArray"
  11595. :label="item.label"
  11596. :key="index"
  11597. >{{ item.name }}</el-radio
  11598. >
  11599. </el-radio-group>
  11600. </div>
  11601. <span slot="footer" class="dialog-footer">
  11602. <el-button @click="dialogVisibleUpdateGroup = false">取 消</el-button>
  11603. <el-button type="primary" @click="updateChair">确定</el-button>
  11604. </span>
  11605. </el-dialog>
  11606. <el-dialog
  11607. title="移除组员"
  11608. :visible.sync="dialogVisibleDeleteGroup"
  11609. :append-to-body="true"
  11610. width="350px"
  11611. :before-close="handleClose"
  11612. class="dialog_diy"
  11613. >
  11614. <div>
  11615. <h2>
  11616. {{ this.deleteGroupArray.name }}
  11617. </h2>
  11618. <div style="color: rgb(171 171 171); margin-top: 10px">
  11619. 请选择要删除的组员
  11620. </div>
  11621. <el-checkbox-group v-model="checkDeleteGroup">
  11622. <el-checkbox
  11623. style="display: flex; margin-top: 20px"
  11624. v-for="(item, index) in deleteGroupUser"
  11625. :label="item.userid"
  11626. :key="index"
  11627. >{{ item.name }}</el-checkbox
  11628. >
  11629. </el-checkbox-group>
  11630. </div>
  11631. <span slot="footer" class="dialog-footer">
  11632. <el-button @click="dialogVisibleDeleteGroup = false">取 消</el-button>
  11633. <el-button type="primary" @click="deleteChair">确定</el-button>
  11634. </span>
  11635. </el-dialog>
  11636. <el-dialog
  11637. title="批量上传"
  11638. :visible.sync="dialogVisiblePl"
  11639. :append-to-body="true"
  11640. width="700px"
  11641. :before-close="handleClose"
  11642. class="dialog_change"
  11643. >
  11644. <div class="marginT">
  11645. <div class="plworkBox">
  11646. <div
  11647. class="chapter_add"
  11648. style="
  11649. display: flex;
  11650. width: 150px;
  11651. flex-direction: row;
  11652. flex-wrap: wrap;
  11653. justify-content: flex-start;
  11654. margin: 0 10px 10px 0;
  11655. "
  11656. v-for="(item, index) in plworkFile"
  11657. :key="index"
  11658. >
  11659. <div class="upCover2">
  11660. <img
  11661. :src="item.url"
  11662. alt
  11663. v-if="item.fileType == 1"
  11664. @click="previewImg(item.url)"
  11665. />
  11666. <img :src="word" alt v-else-if="item.fileType == 4" />
  11667. <img :src="video" alt v-else />
  11668. <!-- <span class="picName">{{ item.name }}</span> -->
  11669. <!-- <el-input
  11670. v-model="item.username"
  11671. placeholder="请输入学生名字"
  11672. style="margin-top: 10px"
  11673. ></el-input> -->
  11674. <div
  11675. class="pl_select_box"
  11676. @click="
  11677. getUpdateMore(true, checkUpload(), item.username, index)
  11678. "
  11679. >
  11680. {{ getSName(item.username) }}
  11681. </div>
  11682. <!-- <el-select
  11683. style="margin-top: 10px"
  11684. v-model="item.username"
  11685. filterable
  11686. allow-create
  11687. placeholder="请选择学生"
  11688. >
  11689. <el-option
  11690. v-for="item1 in checkUpload()"
  11691. :key="item1.userid"
  11692. :label="item1.name ? item1.name : item1.username"
  11693. :value="item1.userid"
  11694. >
  11695. </el-option>
  11696. </el-select> -->
  11697. <div class="deleteWord" @click="clean2(index)">
  11698. <img src="../../assets/icon/deleteWorks.png" alt />
  11699. </div>
  11700. </div>
  11701. </div>
  11702. <div class="chapter_add" style="width: auto" @click="addImg($event)">
  11703. <div class="up_photo2">
  11704. <img src="../../assets/icon/plwork.png" alt />
  11705. <span>点击上传文件</span>
  11706. </div>
  11707. <input
  11708. type="file"
  11709. accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
  11710. multiple="multiple"
  11711. style="display: none"
  11712. @change="beforeUpload3($event, 6)"
  11713. />
  11714. </div>
  11715. </div>
  11716. </div>
  11717. <!-- capture="camera" -->
  11718. <div
  11719. class="upload_send"
  11720. @click="addCourseWorksPl(taskCount)"
  11721. v-if="!proVisible2"
  11722. >
  11723. 提交
  11724. </div>
  11725. </el-dialog>
  11726. <el-dialog
  11727. title="修改名称"
  11728. :visible.sync="dialogVisibleSname"
  11729. width="500px"
  11730. :before-close="handleClose"
  11731. class="dialog_diy"
  11732. center
  11733. >
  11734. <div
  11735. style="
  11736. text-align: center;
  11737. display: flex;
  11738. align-items: center;
  11739. justify-content: center;
  11740. "
  11741. >
  11742. <span class="tian1">名称</span>
  11743. <div
  11744. class="pl_select_box"
  11745. style="margin-left: 10px; width: 200px"
  11746. @click="getUpdateMore(true, uploadStudentJuri, worksSid)"
  11747. >
  11748. {{ getSName(worksSName) }}
  11749. </div>
  11750. <!-- <el-select v-model="worksSName" filterable allow-create style="width: 250px; margin: 15px 0px"
  11751. placeholder="请选择学生">
  11752. <el-option v-for="item in uploadStudentJuri" :key="item.userid" :label="item.name ? item.name : item.username"
  11753. :value="item.userid">
  11754. </el-option>
  11755. </el-select> -->
  11756. <!-- <el-input
  11757. v-model="worksSName"
  11758. style="width: 250px; margin: 15px 0px"
  11759. ></el-input> -->
  11760. </div>
  11761. <span slot="footer" class="dialog-footer">
  11762. <el-button @click="dialogVisibleSname = false">取 消</el-button>
  11763. <el-button type="primary" @click="updateName">确 定</el-button>
  11764. </span>
  11765. </el-dialog>
  11766. <el-dialog
  11767. title="英语写作"
  11768. :visible.sync="engDialogVisible"
  11769. :append-to-body="true"
  11770. width="800px"
  11771. :before-close="handleClose"
  11772. class="dialog_diy"
  11773. >
  11774. <onlineWrite
  11775. v-if="engDialogVisible"
  11776. :englishList="englishList"
  11777. :myAnswerList1="myAnswerList1"
  11778. ref="engJson"
  11779. ></onlineWrite>
  11780. <span slot="footer" class="dialog-footer" style="text-align: center;">
  11781. <el-button @click="engDialogVisible = false">取 消</el-button>
  11782. <el-button type="primary" @click="addEnglishWork">确 定</el-button>
  11783. </span>
  11784. </el-dialog>
  11785. <el-dialog
  11786. title="英语写作"
  11787. :visible.sync="engUpdateDialogVisible"
  11788. :append-to-body="true"
  11789. width="800px"
  11790. :before-close="handleClose"
  11791. class="dialog_diy fullStyle"
  11792. >
  11793. <div class="engUpBox">
  11794. <div class="engUpTop">
  11795. <div class="engTitle">
  11796. <div>作文题目:</div>
  11797. <div>{{ englishList1.engTitle }}</div>
  11798. </div>
  11799. <div class="engText">
  11800. <div>作文内容:</div>
  11801. <div class="cont" v-html="englishList1.englishText" style="white-space: pre-line;" @click="checkImg(getImgList(englishList1.englishText))"></div>
  11802. </div>
  11803. </div>
  11804. <div class="correctBox" :style="{height: `calc(100% - ${topHeight}px)` }">
  11805. <div class="oldBox">
  11806. <div class="oldMes">原文( 作者:{{ noteName }} )</div>
  11807. <div class="oldText">
  11808. <div class="detailBox">
  11809. <div class="oldDetail">
  11810. <div>标题:</div>
  11811. <div>{{ oldEnglishJson.engTitle }} </div>
  11812. </div>
  11813. <div class="oldDetail1">
  11814. <div>正文:</div>
  11815. <div v-html="oldEnglishJson.engText" style="white-space: pre-line;"></div>
  11816. </div>
  11817. <div class="oldDetail" v-if="oldEnglishJson.imgList && oldEnglishJson.imgList.length > 0">
  11818. <div>图片:</div>
  11819. <div class="oldImg"><img :src="oldEnglishJson.imgList[0].url" alt="" /></div>
  11820. </div>
  11821. </div>
  11822. </div>
  11823. </div>
  11824. <div class="oldBox loadingText" v-if="userMes[0].type == 2">
  11825. <div class="oldMes" style="background: #aacaff;">{{ userMes[0].username }}</div>
  11826. <div class="oldText">
  11827. <div class="detailBox" style="position: relative;">
  11828. <div class="oldDetail">
  11829. <div>标题:</div>
  11830. <el-input v-if="greyType" v-model="newEnglishList.engTitle" />
  11831. <div v-else v-html="newEnglishList.engTitle"></div>
  11832. </div>
  11833. <div class="oldDetail">
  11834. <div>正文:</div>
  11835. <el-input v-if="greyType" type="textarea" :rows="10" resize="none" v-model="newEnglishList.engText" @input="gx"/>
  11836. <correctText :newText="newEnglishList.engText" :oldData="oldEnglishJson.engText"/>
  11837. <!-- <div v-else style="white-space: pre-line;" v-html="Correct(newEnglishList.engText,correctWord)"></div> -->
  11838. </div>
  11839. <div style="position: absolute;bottom: -25px;">注:红色划线字为删除,绿色背景白色字为新添加.</div>
  11840. <el-button @click="isUpdateCorrect(newEnglishList.engText,1)" class="correctCss" :style="{right: greyType == false ? '0' : '80px' }">{{ greyType == false ? '添加批注' : '取消添加' }}</el-button>
  11841. <el-button @click="aiCorrect(newEnglishList.engText,1)" style="position: absolute;bottom: -70px;right: 110px;background: #409eff;color: #fff;" v-if="!greyType">AI批注</el-button>
  11842. <el-button @click="addCorrect" style="position: absolute;bottom: -70px;right: 0;background: #409eff;color: #fff;" v-if="greyType">确定</el-button>
  11843. </div>
  11844. </div>
  11845. </div>
  11846. <div class="oldBox loadingText" v-else-if="userMes[0].type == 1">
  11847. <div class="oldMes" style="background: rgb(224 236 255);display: flex;flex-direction: row;flex-wrap: nowrap;align-items: center;overflow-x: auto;overflow-y: hidden;" v-if="newEnglishList1.length > 0">
  11848. <div v-if="isNoUserid" class="allName" :style="{minWidth: `calc(100% / ${engListLength})`,background: newEngIndex == -1 ? '#aacaff' : ''}" @click="setEngText(-1)" style="background: #aacaff;">{{ userMes[0].username }}</div>
  11849. <div v-for="(item,index) in newEnglishList1" :key="index" class="allName" :style="{minWidth: `calc(100% / ${engListLength})`,background: index == newEngIndex ? '#aacaff' : ''}" @click="setEngText(index)">{{ item.username }}</div>
  11850. </div>
  11851. <div class="oldMes" style="background: #aacaff;" v-else>{{ userMes[0].username }}</div>
  11852. <div class="oldText" v-if="newEngIndex == -1 && isNoUserid == true && newEnglishList1.length">
  11853. <div class="detailBox" style="position: relative;">
  11854. <div class="oldDetail">
  11855. <div>标题:</div>
  11856. <el-input v-if="greyType" v-model="oldEnglishJson1.engTitle" />
  11857. <div v-else v-html="oldEnglishJson1.engTitle"></div>
  11858. </div>
  11859. <div class="oldDetail">
  11860. <div>正文:</div>
  11861. <el-input v-if="greyType" type="textarea" :rows="10" resize="none" v-model="oldEnglishJson1.engText" @input="gx"/>
  11862. <correctText v-else :newText="oldEnglishJson1.engText" :oldData="oldEnglishJson.engText"/>
  11863. <!-- <div v-else style="white-space: pre-line;" v-html="Correct(oldEnglishJson1.engText,correctWord)"></div> -->
  11864. </div>
  11865. <div style="position: absolute;bottom: -25px;">注:红色划线字为删除,绿色背景白色字为新添加.</div>
  11866. <el-button @click="isUpdateCorrect(oldEnglishJson1.engText,2)" class="correctCss" :style="{right: greyType == false ? '0' : '80px' }">{{ greyType == false ? '添加批注' : '取消添加' }}</el-button>
  11867. <el-button @click="aiCorrect(oldEnglishJson1.engText,2)" style="position: absolute;bottom: -70px;right: 110px;background: #409eff;color: #fff;" v-if="!greyType">AI批注</el-button>
  11868. <el-button @click="addCorrect" style="position: absolute;bottom: -70px;right: 0;background: #409eff;color: #fff;" v-if="greyType">确定</el-button>
  11869. </div>
  11870. </div>
  11871. <div class="oldText" v-else-if="newEngIndex == -1">
  11872. <div class="detailBox" style="position: relative;">
  11873. <div class="oldDetail">
  11874. <div>标题:</div>
  11875. <el-input v-if="greyType" v-model="newEnglishList.engTitle" />
  11876. <div v-else v-html="newEnglishList.engTitle"></div>
  11877. </div>
  11878. <div class="oldDetail">
  11879. <div>正文:</div>
  11880. <el-input v-if="greyType" type="textarea" :rows="10" resize="none" v-model="newEnglishList.engText" @input="gx"/>
  11881. <correctText v-else :newText="newEnglishList.engText" :oldData="oldEnglishJson.engText"/>
  11882. <!-- <div v-else style="white-space: pre-line;" v-html="Correct(newEnglishList.engText,correctWord)"></div> -->
  11883. </div>
  11884. <div style="position: absolute;bottom: -25px;">注:红色划线字为删除,绿色背景白色字为新添加.</div>
  11885. <el-button @click="isUpdateCorrect(newEnglishList.engText,3)" class="correctCss" :style="{right: greyType == false ? '0' : '80px' }">{{ greyType == false ? '添加批注' : '取消添加' }}</el-button>
  11886. <el-button @click="aiCorrect(newEnglishList.engText,3)" style="position: absolute;bottom: -70px;right: 110px;background: #409eff;color: #fff;" v-if="!greyType">AI批注</el-button>
  11887. <el-button @click="addCorrect" style="position: absolute;bottom: -70px;right: 0;background: #409eff;color: #fff;" v-if="greyType">确定</el-button>
  11888. </div>
  11889. </div>
  11890. <div class="oldText" v-else-if="newEngIndex > -1 && newEnglishList1.length > 0">
  11891. <div class="detailBox" style="position: relative;">
  11892. <div class="oldDetail">
  11893. <div>标题:</div>
  11894. <div v-if="userMes[0].userid != newEnglishList1[newEngIndex].correct" v-html="newEnglishList1[newEngIndex].cWork.engTitle"></div>
  11895. <div v-else>
  11896. <el-input v-if="greyType" v-model="newEnglishList1[newEngIndex].cWork.engTitle" />
  11897. <div v-else v-html="newEnglishList1[newEngIndex].cWork.engTitle"></div>
  11898. </div>
  11899. </div>
  11900. <div class="oldDetail">
  11901. <div>正文:</div>
  11902. <!-- <div v-if="userMes[0].userid != newEnglishList1[newEngIndex].correct" v-html="newEnglishList1[newEngIndex].cWork.engText"></div> -->
  11903. <correctText v-if="userMes[0].userid != newEnglishList1[newEngIndex].correct" :newText="newEnglishList1[newEngIndex].cWork.engText" :oldData="oldEnglishJson.engText"/>
  11904. <div v-else>
  11905. <el-input v-if="greyType" type="textarea" :rows="10" resize="none" v-model="newEnglishList1[newEngIndex].cWork.engText" @input="gx"/>
  11906. <correctText v-else :newText="newEnglishList1[newEngIndex].cWork.engText" :oldData="oldEnglishJson.engText"/>
  11907. <!-- <div v-else style="white-space: pre-line;" v-html="Correct(newEnglishList1[newEngIndex].cWork.engText,correctWord)"></div> -->
  11908. </div>
  11909. </div>
  11910. <div style="position: absolute;bottom: -25px;">注:红色划线字为删除,绿色背景白色字为新添加.</div>
  11911. <el-button @click="isUpdateCorrect(newEnglishList1[newEngIndex].cWork.engText,4)" class="correctCss" :style="{right: greyType == false ? '0' : '80px' }" v-if="!greyType && userMes[0].userid == newEnglishList1[newEngIndex].correct">{{ greyType == false ? '添加批注' : '取消添加' }}</el-button>
  11912. <el-button @click="aiCorrect(newEnglishList1[newEngIndex].cWork.engText,4)" style="position: absolute;bottom: -70px;right: 110px;background: #409eff;color: #fff;" v-if="!greyType && userMes[0].userid == newEnglishList1[newEngIndex].correct">AI批注</el-button>
  11913. <el-button @click="addCorrect" style="position: absolute;bottom: -70px;right: 0;background: #409eff;color: #fff;" v-if="greyType">确定</el-button>
  11914. </div>
  11915. </div>
  11916. </div>
  11917. </div>
  11918. </div>
  11919. <span slot="footer" class="dialog-footer">
  11920. <el-button @click="engUpdateDialogVisible = false">取 消</el-button>
  11921. <el-button type="primary" @click="addCorrect">确 定</el-button>
  11922. </span>
  11923. </el-dialog>
  11924. <englishEva :evaEngJson="evaEngJson" :engEvaDialogVisible.sync="engEvaDialogVisible" :uid="userid" :tType="tType" :courseDetail="courseDetail"></englishEva>
  11925. <interVideo
  11926. :dialogVisibleVideo.sync="dialogVisibleVideo"
  11927. :videoJson="videoJson"
  11928. :userid="userid"
  11929. :id="id"
  11930. :courseType="courseType"
  11931. :taskCount="taskCount"
  11932. :toolindex="toolindex"
  11933. :videoType="videoType"
  11934. ></interVideo>
  11935. <UpdateMore
  11936. :dialogVisibleMember.sync="dialogVisibleMember"
  11937. :cList="uploadStudentJuri"
  11938. :userid="userid"
  11939. :searchTN="worksSName2"
  11940. @setPlname="setPlname"
  11941. ></UpdateMore>
  11942. <wordCloud
  11943. :dialogVisibleWordCloud.sync="dialogVisibleWordCloud"
  11944. :data="wordCloudData"
  11945. ></wordCloud>
  11946. <el-dialog
  11947. title="挑人"
  11948. :visible.sync="dialogVisiblePickPeople"
  11949. width="650px"
  11950. :before-close="handleClose"
  11951. class="dialog_diy"
  11952. center
  11953. >
  11954. <div class="pick_box">
  11955. <div
  11956. class="noWorksName"
  11957. :class="{ isSelectName: isPickStudent.indexOf(item.userid) !== -1 }"
  11958. v-for="(item, index) in uploadStudentJuri"
  11959. :key="index"
  11960. @click="pickStudent(item)"
  11961. >
  11962. {{ item.name }}
  11963. </div>
  11964. </div>
  11965. </el-dialog>
  11966. <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog'
  11967. :englishVoiceJson='englishVoiceJson'
  11968. :userid="userid"
  11969. :id="id"
  11970. :courseType="courseType"
  11971. :taskCount="taskCount"
  11972. :toolindex="toolindex"
  11973. @selectSWorks="selectSWorks"
  11974. @selectStudent="selectStudent"
  11975. :englishVoiceJsonWork="englishVoiceJsonWork"></EnglishVoice>
  11976. <checkEnglishVoice :englishVoiceJson='englishVoiceJson'
  11977. :userid="userid"
  11978. :dialogVisibleENScore.sync='dialogVisibleENScore'
  11979. :commentDetail="commentDetail"
  11980. :courseDetail="courseDetail"
  11981. :wScore="wScore"
  11982. :scoreDetail="scoreDetail"
  11983. @selectSWorks="selectSWorks"
  11984. @selectStudent="selectStudent"></checkEnglishVoice>
  11985. <statisticalAnalysis ref="statisticalAnalysisRef" @refresh="statisticalAnalysisRefresh" @changeSplitScreenBehavior="changeSplitScreenBehavior" :courseType="courseType" :taskCount="taskCount"/>
  11986. <choseWorksDetailDialog
  11987. ref="choseWorksDetailDialogRef"
  11988. :worksStudentData="this.worksStudent"
  11989. :noWorksSData="noWorksS"
  11990. :chapInfoListData="chapInfoList"
  11991. :courseType="courseType"
  11992. :taskCount="taskCount"
  11993. @deleteWorks="deleteWorks"
  11994. @openTools="openTools"
  11995. @openWord="openWord"
  11996. @openScore="openScore"
  11997. @changeSplitScreenBehavior="changeSplitScreenBehavior"
  11998. />
  11999. </div>
  12000. </template>
  12001. <script>
  12002. import "../../common/aws-sdk-2.235.1.min.js";
  12003. // import pdf from "../components/pdf3";
  12004. import pdf from "../components/vpdf";
  12005. import AskStatic from "../components/askStatic";
  12006. import AskStatic2 from "../components/askStatic2";
  12007. import AnswerData2 from "../components/answerData2";
  12008. import AnswerData from "../components/answerData";
  12009. import EditorBar from "../tools/wangEnduit.vue";
  12010. import Table from "../tools/table.vue";
  12011. import Time from "../tools/time.vue";
  12012. import Mind from "../tools/jsmind.vue";
  12013. import Sunburst from "../tools/sunburst";
  12014. import SeeBoard from "../tools/seeBoard";
  12015. import * as imageConversion from "image-conversion";
  12016. import Audio from "../components/audio.vue";
  12017. import ImgDraw from "../tools/imgDraw/imgDraw";
  12018. import { Empty } from "element-ui";
  12019. import RecordRTC from "recordrtc";
  12020. import interVideo from "../interVideo/index.vue";
  12021. import UpdateMore from "../updateMore/updateMore.vue";
  12022. import wordCloud from "../wordCloud/index.vue";
  12023. import axios from "axios";
  12024. import JSZip from "jszip";
  12025. import FileSaver from "file-saver";
  12026. import onlineWrite from "./commpont/onlineWrite";
  12027. import englishEva from "../components/englishEva";
  12028. import * as Diff from 'diff'
  12029. import EnglishVoice from '../EnglishVoice2/index.vue'
  12030. import checkEnglishVoice from '../checkEnglishVoice/index.vue'
  12031. import correctText from '../components/correctText.vue'
  12032. import scoreItem from '../scoreList/scoreItem.vue'
  12033. import scoreZong from '../scoreZong/index.vue'
  12034. import classRoomHelper from '../classRoomHelper/index.vue'
  12035. import MarkdownIt from "markdown-it";
  12036. import statisticalAnalysis from '../components/statisticalAnalysis.vue'
  12037. import choseWorksDetailDialog from '../components/choseWorksDetailDialog.vue'
  12038. import { v4 as uuidv4 } from "uuid";
  12039. const getFile = (url) => {
  12040. return new Promise((resolve, reject) => {
  12041. var credentials = {
  12042. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  12043. secretAccessKey: "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",
  12044. }; //秘钥形式的登录上传
  12045. window.AWS.config.update(credentials);
  12046. window.AWS.config.region = "cn-northwest-1"; //设置区域
  12047. let url2 = url;
  12048. let _url2 = "";
  12049. if (
  12050. url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  12051. ) {
  12052. _url2 = url2.split(
  12053. "https://view.officeapps.live.com/op/view.aspx?src="
  12054. )[1];
  12055. } else {
  12056. _url2 = url2;
  12057. }
  12058. var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
  12059. let name = decodeURIComponent(_url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1])
  12060. var params = {
  12061. Bucket: "ccrb",
  12062. Key: name
  12063. };
  12064. s3.getObject(params, function (err, data) {
  12065. if (err) {
  12066. console.log(err, err.stack)
  12067. resolve({ data: 1 });
  12068. }else {
  12069. resolve({ data: data.Body });
  12070. console.log(data);
  12071. } // sxuccessful response
  12072. });
  12073. // axios({
  12074. // method: "get",
  12075. // url,
  12076. // responseType: "blob",
  12077. // })
  12078. // .then((data) => {
  12079. // resolve({ data: data.data });
  12080. // })
  12081. // .catch((error) => {
  12082. // resolve({ data: 1 });
  12083. // // reject(error.toString());
  12084. // });
  12085. });
  12086. };
  12087. export default {
  12088. components: {
  12089. EditorBar,
  12090. Time,
  12091. pdf,
  12092. AskStatic,
  12093. AskStatic2,
  12094. Mind,
  12095. Sunburst,
  12096. SeeBoard,
  12097. AnswerData2,
  12098. AnswerData,
  12099. Audio,
  12100. ImgDraw,
  12101. Table,
  12102. interVideo,
  12103. UpdateMore,
  12104. wordCloud,
  12105. onlineWrite,
  12106. englishEva,
  12107. EnglishVoice,
  12108. checkEnglishVoice,
  12109. correctText,
  12110. scoreItem,
  12111. classRoomHelper,
  12112. scoreZong,
  12113. statisticalAnalysis,
  12114. choseWorksDetailDialog
  12115. },
  12116. data() {
  12117. return {
  12118. bg: null,
  12119. drawShow: false,
  12120. dialogVisible: false,
  12121. dialogVisiblePl: false,
  12122. commentDialogVisible: false,
  12123. dialogVisibleMember: false,
  12124. dialogVisibleWordCloud: false,
  12125. videoVisible: false,
  12126. isStar: false,
  12127. studentEvalDialogVisible: false,
  12128. studentEvalDialogVisibleTeacher: false,
  12129. dialogVisibleSelect: false,
  12130. dialogVisibleSelectTeacher: false,
  12131. dialogVisibleScore: false,
  12132. dialogVisibleENScore: false,
  12133. dialogVisibleSentence: false,
  12134. dialogVisibleSentenceTeacher: false,
  12135. dialogVisibleSentence1: false,
  12136. dialogVisibleWorks: false,
  12137. dialogVisibleTable: false,
  12138. dialogVisibleTableTeacher: false,
  12139. dialogVisibleWord: false,
  12140. dialogVisibleWordTeacher: false,
  12141. dialogVisibleTable2: false,
  12142. dialogVisibleTable3: false,
  12143. dialogVisibleGroupWork: false,
  12144. dialogVisibleUpdateGroup: false,
  12145. dialogVisibleDeleteGroup: false,
  12146. dialogVisibleSname: false,
  12147. dialogVisibleVideo: false,
  12148. dialogVisiblePickPeople: false,
  12149. worksSName: "",
  12150. classJuri: [],
  12151. uploadStudentJuri: [],
  12152. uploadCid: "",
  12153. snameWid: "",
  12154. sStudent: {},
  12155. sTool: "",
  12156. bzText: "",
  12157. commentDetail: [],
  12158. selectAnswer: [],
  12159. videoDetail: {},
  12160. selectJson: {},
  12161. eScore: { eBzText: "", eStar: [] },
  12162. id: this.$route.query.courseId,
  12163. userid: this.$route.query.userid,
  12164. classId: this.$route.query.cid,
  12165. // courseTypeLine: this.$route.query.type,
  12166. oid: this.$route.query.oid,
  12167. org: this.$route.query.org,
  12168. tType: this.$route.query.tType,
  12169. courseType: this.$route.query.type,
  12170. screenType: this.$route.query.screenType,
  12171. tcid2: this.$route.query.tcid,
  12172. tcid: "",
  12173. pptImgUrl: "",
  12174. pptImgUrl1: "",
  12175. commentText: "",
  12176. full: false,
  12177. sIsOpen: false,
  12178. IsLookOpen: false,
  12179. IsFollow: false,
  12180. pzDialog: false,
  12181. contentDialog: false,
  12182. mlDialog: false,
  12183. type: 1,
  12184. sentenceList: [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }],
  12185. sentenceList1: [],
  12186. tableJson: [],
  12187. tableJsonO: [],
  12188. wordJson: [],
  12189. wordJsonO: [],
  12190. vedio: [],
  12191. text: [],
  12192. textList: [],
  12193. line: [],
  12194. lineList: [],
  12195. chapTools: [],
  12196. chapToolList: [],
  12197. file: [],
  12198. fileC: [],
  12199. vedioTime: [],
  12200. upToolImg: "",
  12201. preTime: 0,
  12202. rateList: {
  12203. ca: 0,
  12204. },
  12205. rateParams: [],
  12206. colors: ["#DFDFDF", "#DFDFDF", "#DFDFDF"],
  12207. studyJuri: [
  12208. {
  12209. content: "",
  12210. cover: [],
  12211. upVedio: [],
  12212. upFile: [],
  12213. },
  12214. ],
  12215. isClose: 0,
  12216. plworkFile: [],
  12217. mr: require("../../assets/vedioPic.png"),
  12218. word: require("../../assets/icon/isWord.png"),
  12219. word2: require("../../assets/icon/word2.png"),
  12220. video: require("../../assets/icon/isVideo.png"),
  12221. noLikes: require("../../assets/icon/comment/noLikes.png"),
  12222. likes: require("../../assets/icon/comment/likes.png"),
  12223. scoreImg: require("../../assets/score.png"),
  12224. courseDetail: {},
  12225. reply: "",
  12226. isSelect: false,
  12227. chapInfo: [],
  12228. chapInfoList: [],
  12229. taskCount: 0,
  12230. imgList: [],
  12231. noImgList: [],
  12232. pzList: [],
  12233. timeWorkList: [],
  12234. PlTextList: [
  12235. "Excellent!",
  12236. "nice!",
  12237. "很有创意!",
  12238. "还不错哦~",
  12239. "继续努力哦~",
  12240. ],
  12241. isClickNav: "",
  12242. navId: "",
  12243. playerOptions: {
  12244. playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
  12245. autoplay: false, //如果true,浏览器准备好时开始回放。
  12246. muted: false, // 默认情况下将会消除任何音频。
  12247. loop: false, // 导致视频一结束就重新开始。
  12248. preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  12249. language: "zh-CN",
  12250. aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  12251. fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
  12252. sources: [
  12253. {
  12254. type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
  12255. src: "", //url地址require("../../../assets/media/aaa.mp4")
  12256. },
  12257. ],
  12258. // poster: require("../../../assets/tu31.png"), //你的封面地址
  12259. // poster: dataRes.imgUrl, //你的封面地址
  12260. notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
  12261. controlBar: {
  12262. timeDivider: true, //当前时间和持续时间的分隔符
  12263. durationDisplay: true, //显示持续时间
  12264. remainingTimeDisplay: false, //是否显示剩余时间功能
  12265. fullscreenToggle: true, //全屏按钮
  12266. },
  12267. },
  12268. playerOptions1: {
  12269. playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
  12270. autoplay: false, //如果true,浏览器准备好时开始回放。
  12271. muted: false, // 默认情况下将会消除任何音频。
  12272. loop: false, // 导致视频一结束就重新开始。
  12273. preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  12274. language: "zh-CN",
  12275. aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  12276. fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
  12277. sources: [
  12278. {
  12279. type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
  12280. src: "", //url地址require("../../../assets/media/aaa.mp4")
  12281. },
  12282. ],
  12283. // poster: require("../../../assets/tu31.png"), //你的封面地址
  12284. // poster: dataRes.imgUrl, //你的封面地址
  12285. notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
  12286. controlBar: {
  12287. timeDivider: true, //当前时间和持续时间的分隔符
  12288. durationDisplay: true, //显示持续时间
  12289. remainingTimeDisplay: false, //是否显示剩余时间功能
  12290. fullscreenToggle: true, //全屏按钮
  12291. },
  12292. },
  12293. playerO: {},
  12294. noneBtnImg: false,
  12295. proVisible: false,
  12296. proVisible2: false,
  12297. progress: 0,
  12298. isFinishSize: 0,
  12299. isAllSize: 0,
  12300. questionAnswer: "",
  12301. answerQ: "", //问答标题
  12302. rateJson: [],
  12303. wbCount: 0,
  12304. wordCount: 0,
  12305. mindCount: 0,
  12306. askCount: 0,
  12307. noteCount: 0,
  12308. mindNetWorkCount: 0,
  12309. libraryCount: 0,
  12310. workCount: 0,
  12311. timeCount: 0,
  12312. answerCount: 0,
  12313. trainCount: 0,
  12314. evalCount: 0,
  12315. dialogImageUrl: "",
  12316. pictureDialog: false,
  12317. toolTypeList: [],
  12318. dialogVisible1: false,
  12319. dialogVisible2: false,
  12320. dialogVisible3: false,
  12321. dialogVisible6: false,
  12322. dialogVisible4: false,
  12323. isNoHomeWork: false,
  12324. dialogVisible5: false,
  12325. dialogVisible5Teacher: false,
  12326. dialogVisibleChoice: false,
  12327. dialogVisibleChoiceTeacher: false,
  12328. answerDialogVisible: false,
  12329. answerDialogVisibleTeacher: false,
  12330. juriVisible: false,
  12331. timeDialogVisible: false,
  12332. replyDialogVisible: false,
  12333. toolDialogVisible: false,
  12334. engDialogVisible: false,
  12335. engUpdateDialogVisible:false,
  12336. engEvaDialogVisible: false,
  12337. evaEngJson: {
  12338. teacherJson: {},
  12339. studentJson: {},
  12340. message: {},
  12341. },
  12342. isNoUserid:false,
  12343. engListLength:0,
  12344. engWid:"",
  12345. newEnglishList:{
  12346. engTitle:"",
  12347. engText:"",
  12348. },
  12349. newEnglishList1:[],
  12350. oldEnglishJson:{},
  12351. oldEnglishJson1:{},
  12352. englishList1:{},
  12353. englishList:{},
  12354. myAnswerList1:{},
  12355. topHeight:0,
  12356. newEngIndex:-1,
  12357. englishToolIndex:0,
  12358. userMes:{},
  12359. englishToolIndex:0,
  12360. replyIndex: 0,
  12361. replyPid: "",
  12362. radio: [],
  12363. isAsk: false,
  12364. askJson: {
  12365. askCount: 1,
  12366. askTitle: "",
  12367. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  12368. },
  12369. testJson: {},
  12370. englishList: {},
  12371. topHeight:0,
  12372. checkJson: [],
  12373. askList: [],
  12374. answerList: [],
  12375. navList: [],
  12376. addPzDialog: false,
  12377. pzConText: "",
  12378. worksStudent: [],
  12379. isCloseList: [],
  12380. workStudent: [],
  12381. groupStudent: [],
  12382. groupStudentUid: [],
  12383. noWorksS: [],
  12384. isWorksS: [],
  12385. noWorksStudent: [],
  12386. toolindex: 0,
  12387. toolDetailIndex: null,
  12388. groupIndex: 0,
  12389. workTypeB: false,
  12390. workTypeC: false,
  12391. isAnswer: false,
  12392. isHovered: false,
  12393. isHovered1: false,
  12394. isHovered2: false,
  12395. commentTagShow:0,
  12396. timer: null,
  12397. opertimer: null,
  12398. showType: '',
  12399. fileType: 0,
  12400. showPDF: false,
  12401. noteName: "",
  12402. evaJuri: [],
  12403. evalua: "",
  12404. eTitle: "",
  12405. eName: "",
  12406. eJson: {},
  12407. fid: "", //一级
  12408. sid: "", //二级
  12409. tid: "", //二级
  12410. typeMode: 1,
  12411. eJSONNum: 0,
  12412. Etype: 1,
  12413. data: {
  12414. meta: {
  12415. name: "example",
  12416. author: "dd@163.com",
  12417. version: "0.2",
  12418. },
  12419. format: "node_array",
  12420. data: [{ id: "root", isroot: true, topic: "" }],
  12421. },
  12422. fullDialogVisible: false,
  12423. fulltype: "",
  12424. fullUrl: "",
  12425. commentIndexJson: {},
  12426. Stbodywidth: 0,
  12427. ispzType: 0,
  12428. pzType: 1,
  12429. wScore: 0,
  12430. scoreDetail: "",
  12431. videoStart: false,
  12432. recorder: null,
  12433. groupJson: {},
  12434. islock: false,
  12435. groupJson2: {},
  12436. dialogVisibleGroup: false,
  12437. dialogVisibleGroup2: false,
  12438. updateGroupArray: [],
  12439. updateGroupUser: {},
  12440. deleteGroupUser: [],
  12441. deleteGroupArray: {},
  12442. checkChair: "",
  12443. checkDeleteGroup: [],
  12444. inviteCode: "",
  12445. courseGroupStudent: [],
  12446. courseGroupStudentUid: [],
  12447. courseGroup: {},
  12448. isGroup: false,
  12449. toolIndex: null,
  12450. tool: {},
  12451. isWorkTool: [
  12452. 16, 32, 57, 4, 45, 15, 1, 3, 6, 7, 26, 41, 47, 48, 52, 50, 40,
  12453. ], //, 40
  12454. videoJson: {},
  12455. videoType:0,
  12456. toolType: 0,
  12457. checktoolArray: [],
  12458. vChapterData: [],
  12459. isUpdateToolDetail: false,
  12460. isUpdateToolDetail1: false,
  12461. updateToolDetailInner: "",
  12462. checkboxList: [],
  12463. plIndex: "",
  12464. worksSName2: "",
  12465. worksSid: "",
  12466. wordCloudData: [],
  12467. isPickStudent: [],
  12468. pzStype: 1,
  12469. myAnList: {},
  12470. downLoading: false,
  12471. greyType: false,
  12472. correctWord: [],
  12473. EnglishVoiceDialog: false,
  12474. englishVoiceJson: {},
  12475. englishVoiceJsonWork:[],
  12476. scoreList:{
  12477. listdata:[],
  12478. isScoreList:[],
  12479. },
  12480. classRoomHelperWidth: '85px',
  12481. orgArray:[],
  12482. oidArray:[],
  12483. splitScreenData:{
  12484. isOpen:false,
  12485. userId:"",
  12486. uid:"",
  12487. myUid:"",
  12488. loading:false,
  12489. behavior:null,
  12490. }
  12491. };
  12492. },
  12493. methods: {
  12494. getAIJ(){
  12495. this.ajax.get(this.$store.state.api+"getAIJ","").then(res=>{
  12496. let oid = res.data[0];
  12497. let org = res.data[1];
  12498. let oidArray = [];
  12499. let orgArray = [];
  12500. oid.forEach(i=>oidArray.push(i.oid))
  12501. org.forEach(i=>orgArray.push(i.oid))
  12502. this.orgArray = orgArray;
  12503. this.oidArray = oidArray;
  12504. })
  12505. },
  12506. insertMemorandum(_html){//保存行为操作
  12507. //variable
  12508. //btn
  12509. let params = [{
  12510. uid:this.userid,
  12511. courseId:this.id+(this.tcid2?this.tcid2:''),
  12512. content:_html
  12513. }]
  12514. console.log(params)
  12515. this.ajax.post(this.$store.state.api+'insert_systemOperation_countdownBehavior',params).then(res=>{
  12516. if(res.data==1){
  12517. console.log('保存操作成功')
  12518. }else{
  12519. console.log('保存操作失败')
  12520. }
  12521. }).catch(e=>{
  12522. console.log('保存操作失败')
  12523. console.log(e)
  12524. })
  12525. },
  12526. gx(){
  12527. this.$forceUpdate();
  12528. },
  12529. isUpdateCorrect(t,p){
  12530. if(this.greyType == false){
  12531. this.isUpdateText = t;
  12532. this.greyType = true;
  12533. }else{
  12534. if(p == 1){
  12535. this.newEnglishList.engText = this.isUpdateText;
  12536. }else if(p == 2){
  12537. this.oldEnglishJson1.engText = this.isUpdateText;
  12538. }else if(p == 3){
  12539. this.newEnglishList.engText = this.isUpdateText;
  12540. }else{
  12541. this.newEnglishList1[this.newEngIndex].cWork.engText = this.isUpdateText;
  12542. }
  12543. this.greyType = false
  12544. }
  12545. },
  12546. aiCorrect(t,p){
  12547. let aiText = "";
  12548. const loading = this.$loading.service({
  12549. background: "rgba(255, 255, 255)",
  12550. target: document.querySelectorAll(".loadingText")[0],
  12551. });
  12552. let param = {
  12553. model: "gpt-3.5-turbo",
  12554. temperature: 0,
  12555. max_tokens: 2048,
  12556. top_p: 1,
  12557. frequency_penalty: 0,
  12558. presence_penalty: 0,
  12559. messages: [
  12560. {
  12561. role: "user",
  12562. content:
  12563.  `Role: 你是一名小学英语作文的老师,根据这篇文章的内容你去批改这篇文章,然后仅输出一篇纠错好的文章。文章:${t}`,
  12564. },
  12565. ],
  12566. uid: this.userid,
  12567. stream: false,
  12568. };
  12569. this.ajax.post("https://gpt.cocorobo.cn/chat", param).then(
  12570. (res) => {
  12571. if (
  12572. res.data.FunctionResponse &&
  12573. res.data.FunctionResponse.result &&
  12574. res.data.FunctionResponse.result == "无效请求,请重新发起对话"
  12575. ) {
  12576. this.$message.error("你的作文内容太长,无法使用Ai批注!");
  12577. return;
  12578. }
  12579. aiText =
  12580. res.data.FunctionResponse.choices[0].message.content;
  12581. aiText = aiText.replace(/%/g,"%25");
  12582. // let w = "";
  12583. // let a = Diff.diffWordsWithSpace(this.oldEnglishJson.engText,aiText);
  12584. // for(var k = 0;k<a.length;k++){
  12585. // //diffWordsWithSpace
  12586. // if(a.length > 1){
  12587. // if(a[k].added == true){
  12588. // w += '<span style="background-color: green;color:#fff">' + a[k].value + '</span>';
  12589. // }else if(a[k].removed == true){
  12590. // w += '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
  12591. // }else{
  12592. // w += '<span>' + a[k].value + '</span>';
  12593. // }
  12594. // }else{
  12595. // if(p == 1){
  12596. // w = this.newEnglishList.engText;
  12597. // }else if(p == 2){
  12598. // w = this.oldEnglishJson1.engText;
  12599. // }else if(p == 3){
  12600. // w = this.newEnglishList.engText;
  12601. // }else{
  12602. // w = this.newEnglishList1[this.newEngIndex].cWork.engText;
  12603. // }
  12604. // }
  12605. // }
  12606. if(p == 1){
  12607. this.newEnglishList.engText = aiText;
  12608. }else if(p == 2){
  12609. this.oldEnglishJson1.engText = aiText;
  12610. }else if(p == 3){
  12611. this.newEnglishList.engText = aiText;
  12612. }else{
  12613. this.newEnglishList1[this.newEngIndex].cWork.engText = aiText;
  12614. }
  12615. loading.close();
  12616. },
  12617. (err) => {
  12618. console.log(err);
  12619. loading.close();
  12620. }
  12621. );
  12622. },
  12623. addToolChoose() {
  12624. if (!this.checktoolArray.length) {
  12625. this.$message.error("请选择要添加的任务");
  12626. return;
  12627. }
  12628. if (
  12629. !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12630. this.taskCount
  12631. ].toolChoose[0].tool.length
  12632. ) {
  12633. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12634. this.taskCount
  12635. ].toolChoose[0].tool = this.checktoolArray;
  12636. } else {
  12637. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12638. this.taskCount
  12639. ].toolChoose.push({
  12640. tool: this.checktoolArray,
  12641. toolDetail: "",
  12642. toolType: 0,
  12643. askCount: 1,
  12644. askTitle: "",
  12645. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  12646. });
  12647. }
  12648. let params = [
  12649. {
  12650. cid: this.id,
  12651. chapters: JSON.stringify(this.chapInfoList),
  12652. uid: this.userid,
  12653. unitIndex: this.courseType,
  12654. },
  12655. ];
  12656. this.ajax
  12657. .post(this.$store.state.api + "updateWorkNew4", params)
  12658. .then((res) => {
  12659. this.$message({
  12660. message: "添加成功",
  12661. type: "success",
  12662. });
  12663. this.checktoolArray = [];
  12664. this.getCourseDetail(2);
  12665. this.checkBz(
  12666. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12667. this.taskCount
  12668. ].toolChoose.length - 1
  12669. );
  12670. this.toolDialogVisible = false;
  12671. this.refreshCourse();
  12672. this.$forceUpdate();
  12673. })
  12674. .catch((err) => {
  12675. console.error(err);
  12676. });
  12677. },
  12678. checkBz(index) {
  12679. this.isUpdateToolDetail = false;
  12680. this.$forceUpdate();
  12681. setTimeout(() => {
  12682. document.scrollingElement.scrollTop =
  12683. document.querySelectorAll(".filebox")[index].offsetTop +
  12684. document.querySelector(".student_body").offsetTop;
  12685. }, 500);
  12686. },
  12687. updateToolDetail(i, type) {
  12688. if (!this.isUpdateToolDetail1 && type == 2 && (this.courseDetail.userid == this.userid || (this.courseDetail.course_teacher && this.courseDetail.course_teacher.indexOf(this.userid) != -1))) {
  12689. this.toolDetailIndex = i
  12690. this.isUpdateToolDetail1 = true;
  12691. setTimeout(() => {
  12692. this.updateToolDetailInner = JSON.parse(
  12693. JSON.stringify(
  12694. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12695. this.taskCount
  12696. ].toolChoose[i].toolDetail
  12697. )
  12698. );
  12699. document.querySelector(".checkTextArea").focus();
  12700. }, 0);
  12701. } else if((this.isUpdateToolDetail1 && type != 2)){
  12702. // this.toolDetailIndex = i;
  12703. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12704. this.taskCount
  12705. ].toolChoose[i].toolDetail = JSON.parse(
  12706. JSON.stringify(this.updateToolDetailInner)
  12707. );
  12708. let params = [
  12709. {
  12710. cid: this.id,
  12711. chapters: JSON.stringify(this.chapInfoList),
  12712. uid: this.userid,
  12713. unitIndex: this.courseType,
  12714. },
  12715. ];
  12716. this.ajax
  12717. .post(this.$store.state.api + "updateWorkNew4", params)
  12718. .then((res) => {
  12719. this.isUpdateToolDetail1 = false;
  12720. this.$message({
  12721. message: "修改成功",
  12722. type: "success",
  12723. });
  12724. this.toolDetailIndex = null;
  12725. this.updateToolDetailInner = "";
  12726. this.getCourseDetail(2);
  12727. this.$forceUpdate();
  12728. })
  12729. .catch((err) => {
  12730. console.error(err);
  12731. });
  12732. } else if((this.isUpdateToolDetail1 && type == 2)){
  12733. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12734. this.taskCount
  12735. ].toolChoose[this.toolDetailIndex].toolDetail = JSON.parse(
  12736. JSON.stringify(this.updateToolDetailInner)
  12737. );
  12738. let params = [
  12739. {
  12740. cid: this.id,
  12741. chapters: JSON.stringify(this.chapInfoList),
  12742. uid: this.userid,
  12743. unitIndex: this.courseType,
  12744. },
  12745. ];
  12746. this.ajax
  12747. .post(this.$store.state.api + "updateWorkNew4", params)
  12748. .then((res) => {
  12749. this.$message({
  12750. message: "修改成功",
  12751. type: "success",
  12752. });
  12753. this.toolDetailIndex = i;
  12754. this.isUpdateToolDetail1 = true;
  12755. setTimeout(() => {
  12756. this.updateToolDetailInner = JSON.parse(
  12757. JSON.stringify(
  12758. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  12759. this.taskCount
  12760. ].toolChoose[i].toolDetail
  12761. )
  12762. );
  12763. document.querySelector(".checkTextArea").focus();
  12764. }, 0);
  12765. this.getCourseDetail(2);
  12766. this.$forceUpdate();
  12767. })
  12768. .catch((err) => {
  12769. console.error(err);
  12770. });
  12771. }
  12772. },
  12773. jumpGj(i, j, k, l) {
  12774. for (var z = 0; z < this.navList.length; z++) {
  12775. for (var q = 0; q < this.navList[z].task.length; q++) {
  12776. for (var w = 0; w < this.navList[z].task[q].tool.length; w++) {
  12777. this.navList[z].task[q].tool[w].isTool = false;
  12778. }
  12779. }
  12780. }
  12781. console.log(this.navList);
  12782. this.navList[i].task[j].tool[k].isTool =
  12783. !this.navList[i].task[j].tool[k].isTool;
  12784. var a = document.scrollingElement;
  12785. let target = document.querySelector(`#gj${k}`);
  12786. if (target) {
  12787. target.scrollIntoView(true);
  12788. setTimeout(() => {
  12789. a.scrollTop = a.scrollTop - 150;
  12790. }, 0);
  12791. }
  12792. this.navId = ""
  12793. let flag = this.courseType == i;
  12794. let flag2 = this.taskCount == j
  12795. if (l) {
  12796. this.courseType = i;
  12797. // this.navId = l;
  12798. this.taskCount = j;
  12799. this.selectPz();
  12800. this.getHomeWork();
  12801. this.getCourseDetail(2);
  12802. this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,toolType:k}})
  12803. if(flag){
  12804. if(flag2){
  12805. this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
  12806. }else{
  12807. this.insertMemorandum(`选择<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
  12808. }
  12809. }else{
  12810. this.insertMemorandum(`选择<span class="variable">阶段${i+1}${this.navList[i].dyName?':'+this.navList[i].dyName:''}</span>→<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
  12811. }
  12812. }
  12813. // var b = this.$refs["bz" + k][0];
  12814. // a.scrollTop = b.offsetTop;
  12815. },
  12816. addTools2(i) {
  12817. if (i == 4) {
  12818. // this.openTools2(4);
  12819. this.$message.error("暂未开放");
  12820. return;
  12821. }
  12822. if (i == 45) {
  12823. // this.openTools2(45);
  12824. this.$message.error("暂未开放");
  12825. return;
  12826. }
  12827. if (i == 47) {
  12828. // this.openTools2(47);
  12829. this.$message.error("暂未开放");
  12830. return;
  12831. }
  12832. if (i == 49) {
  12833. // this.openTools2(49);
  12834. this.$message.error("暂未开放");
  12835. return;
  12836. }
  12837. if (i == 62) {
  12838. // this.openTools(itemTaskIndex, 62, toolIndex);
  12839. this.$message.error("暂未开放");
  12840. return;
  12841. }
  12842. if (i == 15) {
  12843. // this.openTools(itemTaskIndex, 15, toolIndex);
  12844. this.$message.error("暂未开放");
  12845. return;
  12846. }
  12847. if (i == 40) {
  12848. // this.openTools(itemTaskIndex, 40, toolIndex);
  12849. this.$message.error("暂未开放");
  12850. return;
  12851. }
  12852. if (i == 41) {
  12853. // this.openTools(itemTaskIndex, 41, toolIndex);
  12854. this.$message.error("暂未开放");
  12855. return;
  12856. }
  12857. if (i == 42) {
  12858. // this.openTools(itemTaskIndex, 42, toolIndex);
  12859. this.$message.error("暂未开放");
  12860. return;
  12861. }
  12862. if (this.checktoolArray.length > 0) {
  12863. if (this.checktoolArray.indexOf(i) != -1) {
  12864. this.checktoolArray.splice(this.checktoolArray.indexOf(i), 1);
  12865. } else {
  12866. this.checktoolArray = [];
  12867. this.checktoolArray.push(i);
  12868. }
  12869. } else {
  12870. this.checktoolArray.push(i);
  12871. }
  12872. this.$forceUpdate();
  12873. },
  12874. jump() {
  12875. window.parent.postMessage({ tools: "43" }, "*");
  12876. },
  12877. getUpdateMore(f, checkboxList, searchTN, index) {
  12878. this.dialogVisibleMember = f;
  12879. this.checkboxList = checkboxList;
  12880. this.worksSName2 = JSON.parse(JSON.stringify(searchTN));
  12881. this.plIndex = index;
  12882. },
  12883. setPlname(a) {
  12884. if (this.plworkFile.length) {
  12885. this.plworkFile[this.plIndex].username = a;
  12886. } else {
  12887. this.worksSName = a;
  12888. }
  12889. this.dialogVisibleMember = false;
  12890. },
  12891. previewImg(url,w) {
  12892. this.$hevueImgPreview(url);
  12893. if(w){
  12894. this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
  12895. }
  12896. },
  12897. checkImg(list) {
  12898. if (!list.length) {
  12899. return;
  12900. }
  12901. this.$hevueImgPreview({
  12902. multiple: true, // 开启多图预览模式
  12903. imgList: list, // 需要预览的多图数组
  12904. });
  12905. },
  12906. change(val) {
  12907. console.log(val);
  12908. },
  12909. goTo(path) {
  12910. this.$router.push(path);
  12911. },
  12912. handlePictureCardPreview(url) {
  12913. this.dialogImageUrl = url;
  12914. this.pictureDialog = true;
  12915. },
  12916. clean(type) {
  12917. if (type == 1) {
  12918. this.studyJuri[0].cover.splice(0, 1);
  12919. } else if (type == 2) {
  12920. this.studyJuri[0].upVedio.splice(0, 1);
  12921. } else {
  12922. this.studyJuri[0].upFile.splice(0, 1);
  12923. }
  12924. },
  12925. clean2(index) {
  12926. this.plworkFile.splice(index, 1);
  12927. },
  12928. handleClose(done) {
  12929. if (this.videoDetail.sources && this.videoDetail.sources[0]) {
  12930. this.videoDetail.sources[0].src = "";
  12931. }
  12932. this.commentIndexJson = {};
  12933. this.changeSplitScreenBehavior({code:99})
  12934. done();
  12935. },
  12936. fullTools() {
  12937. this.full = !this.full;
  12938. },
  12939. imgChange(file, fileList, type) {
  12940. if (type == 1) {
  12941. var _tmp = this.studyJuri[0].cover;
  12942. } else if (type == 2) {
  12943. var _tmp = this.studyJuri[0].upVedio;
  12944. } else {
  12945. var _tmp = this.studyJuri[0].upFile;
  12946. }
  12947. this.noneBtnImg = _tmp.length >= 1;
  12948. },
  12949. setContent(bool) {
  12950. this.contentDialog = bool;
  12951. if (bool && this.mlDialog && document.querySelector(".workd_media")) {
  12952. document.querySelector(".workd_media").style.height = "650px";
  12953. } else if (document.querySelector(".workd_media")) {
  12954. document.querySelector(".workd_media").style.height = "auto";
  12955. }
  12956. },
  12957. setContent2(bool) {
  12958. this.mlDialog = bool;
  12959. if (
  12960. bool &&
  12961. this.contentDialog &&
  12962. document.querySelector(".workd_media")
  12963. ) {
  12964. document.querySelector(".workd_media").style.height = "650px";
  12965. } else if (document.querySelector(".workd_media")) {
  12966. document.querySelector(".workd_media").style.height = "auto";
  12967. }
  12968. },
  12969. openToolAll() {
  12970. this.toolDialogVisible = true;
  12971. },
  12972. addImg(e) {
  12973. var el = e.currentTarget;
  12974. // this.$message.success('触发上传')
  12975. el.getElementsByTagName("input")[0].click();
  12976. e.target.value = "";
  12977. },
  12978. addSelectAnswer() {
  12979. let params = [
  12980. {
  12981. uid: this.userid,
  12982. cid: this.id,
  12983. stage: this.courseType,
  12984. task: this.taskCount,
  12985. tool: this.toolindex,
  12986. content: this.selectAnswer.answer,
  12987. type: 7,
  12988. },
  12989. ];
  12990. this.ajax
  12991. .post(this.$store.state.api + "addCourseWorks", params)
  12992. .then((res) => {
  12993. this.$message({
  12994. message: "提交成功",
  12995. type: "success",
  12996. });
  12997. this.dialogVisibleSelect = false;
  12998. // this.selectAnswer = {};
  12999. this.selectSWorks();
  13000. this.selectStudent();
  13001. })
  13002. .catch((err) => {
  13003. this.$message.error("提交失败");
  13004. console.error(err);
  13005. });
  13006. },
  13007. addSelectAnswerTeacher() {
  13008. let params = [
  13009. {
  13010. uid: this.sStudent.userid,
  13011. cid: this.id,
  13012. stage: this.courseType,
  13013. task: this.taskCount,
  13014. tool: this.toolindex,
  13015. content: this.selectAnswer.answer,
  13016. type: 7,
  13017. },
  13018. ];
  13019. this.ajax
  13020. .post(this.$store.state.api + "addCourseWorks", params)
  13021. .then((res) => {
  13022. this.$message({
  13023. message: "提交成功",
  13024. type: "success",
  13025. });
  13026. this.dialogVisibleSelectTeacher = false;
  13027. // this.selectAnswer = {};
  13028. this.selectSWorks();
  13029. this.selectStudent();
  13030. })
  13031. .catch((err) => {
  13032. this.$message.error("提交失败");
  13033. console.error(err);
  13034. });
  13035. },
  13036. addSenWorks() {
  13037. for (var i = 0; i < this.sentenceList.length; i++) {
  13038. for (var j = 0; j < this.sentenceList[i].chooseSenList.length; j++) {
  13039. if (
  13040. this.sentenceList[i].chooseSenList[j] == undefined ||
  13041. this.sentenceList[i].chooseSenList[j] == ""
  13042. ) {
  13043. this.$message.error("请将答案填写完整!");
  13044. return;
  13045. }
  13046. }
  13047. }
  13048. let params = [
  13049. {
  13050. uid: this.userid,
  13051. cid: this.id,
  13052. stage: this.courseType,
  13053. task: this.taskCount,
  13054. tool: this.toolindex,
  13055. content: JSON.stringify(this.sentenceList),
  13056. type: 9,
  13057. },
  13058. ];
  13059. this.ajax
  13060. .post(this.$store.state.api + "addCourseWorks", params)
  13061. .then((res) => {
  13062. this.$message({
  13063. message: "提交成功",
  13064. type: "success",
  13065. });
  13066. this.dialogVisibleSentence = false;
  13067. // this.selectAnswer = {};
  13068. this.selectSWorks();
  13069. this.selectStudent();
  13070. })
  13071. .catch((err) => {
  13072. this.$message.error("提交失败");
  13073. console.error(err);
  13074. });
  13075. },
  13076. addSenWorksTeacher() {
  13077. for (var i = 0; i < this.sentenceList.length; i++) {
  13078. for (var j = 0; j < this.sentenceList[i].chooseSenList.length; j++) {
  13079. if (
  13080. this.sentenceList[i].chooseSenList[j] == undefined ||
  13081. this.sentenceList[i].chooseSenList[j] == ""
  13082. ) {
  13083. this.$message.error("请将答案填写完整!");
  13084. return;
  13085. }
  13086. }
  13087. }
  13088. let params = [
  13089. {
  13090. uid: this.sStudent.userid,
  13091. cid: this.id,
  13092. stage: this.courseType,
  13093. task: this.taskCount,
  13094. tool: this.toolindex,
  13095. content: JSON.stringify(this.sentenceList),
  13096. type: 9,
  13097. },
  13098. ];
  13099. this.ajax
  13100. .post(this.$store.state.api + "addCourseWorks", params)
  13101. .then((res) => {
  13102. this.$message({
  13103. message: "提交成功",
  13104. type: "success",
  13105. });
  13106. this.dialogVisibleSentenceTeacher = false;
  13107. // this.selectAnswer = {};
  13108. this.selectSWorks();
  13109. this.selectStudent();
  13110. })
  13111. .catch((err) => {
  13112. this.$message.error("提交失败");
  13113. console.error(err);
  13114. });
  13115. },
  13116. returnTableText() {
  13117. this.$confirm("确定还原此模板吗?", "提示", {
  13118. confirmButtonText: "确定",
  13119. cancelButtonText: "取消",
  13120. type: "warning",
  13121. })
  13122. .then(() => {
  13123. this.tableJson = JSON.parse(JSON.stringify(this.tableJsonO));
  13124. })
  13125. .catch(() => {});
  13126. },
  13127. addTableWorks() {
  13128. let params = [
  13129. {
  13130. uid: this.userid,
  13131. cid: this.id,
  13132. stage: this.courseType,
  13133. task: this.taskCount,
  13134. tool: this.toolindex,
  13135. content: JSON.stringify(this.tableJson),
  13136. type: 10,
  13137. },
  13138. ];
  13139. this.ajax
  13140. .post(this.$store.state.api + "addCourseWorks", params)
  13141. .then((res) => {
  13142. this.$message({
  13143. message: "提交成功",
  13144. type: "success",
  13145. });
  13146. this.dialogVisibleTable = false;
  13147. // this.selectAnswer = {};
  13148. this.selectSWorks();
  13149. this.selectStudent();
  13150. })
  13151. .catch((err) => {
  13152. this.$message.error("提交失败");
  13153. console.error(err);
  13154. });
  13155. },
  13156. tableRowClassName({ row, rowIndex }) {
  13157. if ((rowIndex + 1) % 2 === 0) {
  13158. return "even_row";
  13159. } else {
  13160. return "";
  13161. }
  13162. },
  13163. addTableWorksTeacher() {
  13164. let params = [
  13165. {
  13166. uid: this.sStudent.userid,
  13167. cid: this.id,
  13168. stage: this.courseType,
  13169. task: this.taskCount,
  13170. tool: this.toolindex,
  13171. content: JSON.stringify(this.tableJson),
  13172. type: 10,
  13173. },
  13174. ];
  13175. this.ajax
  13176. .post(this.$store.state.api + "addCourseWorks", params)
  13177. .then((res) => {
  13178. this.$message({
  13179. message: "提交成功",
  13180. type: "success",
  13181. });
  13182. this.dialogVisibleTableTeacher = false;
  13183. // this.selectAnswer = {};
  13184. this.selectSWorks();
  13185. this.selectStudent();
  13186. })
  13187. .catch((err) => {
  13188. this.$message.error("提交失败");
  13189. console.error(err);
  13190. });
  13191. },
  13192. returnWordText() {
  13193. this.$confirm("确定还原此模板吗?", "提示", {
  13194. confirmButtonText: "确定",
  13195. cancelButtonText: "取消",
  13196. type: "warning",
  13197. })
  13198. .then(() => {
  13199. this.wordJson = JSON.parse(JSON.stringify(this.wordJsonO));
  13200. })
  13201. .catch(() => {});
  13202. },
  13203. addWordWorks() {
  13204. let params = [
  13205. {
  13206. uid: this.userid,
  13207. cid: this.id,
  13208. stage: this.courseType,
  13209. task: this.taskCount,
  13210. tool: this.toolindex,
  13211. content: JSON.stringify(this.wordJson),
  13212. type: 13,
  13213. atool: 52,
  13214. },
  13215. ];
  13216. this.ajax
  13217. .post(this.$store.state.api + "addCourseWorks3-2", params)
  13218. .then((res) => {
  13219. this.$message({
  13220. message: "提交成功",
  13221. type: "success",
  13222. });
  13223. this.dialogVisibleWord = false;
  13224. // this.selectAnswer = {};
  13225. this.selectSWorks();
  13226. this.selectStudent();
  13227. })
  13228. .catch((err) => {
  13229. this.$message.error("提交失败");
  13230. console.error(err);
  13231. });
  13232. },
  13233. addWordWorksTeacher() {
  13234. let params = [
  13235. {
  13236. uid: this.sStudent.userid,
  13237. cid: this.id,
  13238. stage: this.courseType,
  13239. task: this.taskCount,
  13240. tool: this.toolindex,
  13241. content: JSON.stringify(this.wordJson),
  13242. type: 13,
  13243. atool: 52,
  13244. },
  13245. ];
  13246. this.ajax
  13247. .post(this.$store.state.api + "addCourseWorks3-2", params)
  13248. .then((res) => {
  13249. this.$message({
  13250. message: "提交成功",
  13251. type: "success",
  13252. });
  13253. this.dialogVisibleWordTeacher = false;
  13254. // this.selectAnswer = {};
  13255. this.selectSWorks();
  13256. this.selectStudent();
  13257. })
  13258. .catch((err) => {
  13259. this.$message.error("提交失败");
  13260. console.error(err);
  13261. });
  13262. },
  13263. addCourseWorks(i) {
  13264. var typesql;
  13265. if (this.fileType === 0) {
  13266. typesql = 1;
  13267. } else if (this.fileType === 1) {
  13268. typesql = 4;
  13269. } else if (this.fileType === 2) {
  13270. typesql = 5;
  13271. } else if (this.fileType === 3) {
  13272. typesql = 12;
  13273. }
  13274. if (!this.studyJuri[0].cover[0].url) {
  13275. this.$message.error("请上传文件");
  13276. return;
  13277. }
  13278. let params = [
  13279. {
  13280. uid: this.userid,
  13281. cid: this.id,
  13282. stage: this.courseType,
  13283. task: i,
  13284. tool: this.toolindex,
  13285. content: this.studyJuri[0].cover[0].url,
  13286. type: typesql,
  13287. },
  13288. ];
  13289. this.ajax
  13290. .post(this.$store.state.api + "addCourseWorksR", params)
  13291. .then((res) => {
  13292. this.$message({
  13293. message: "提交成功",
  13294. type: "success",
  13295. });
  13296. this.studyJuri[0].cover = [];
  13297. this.dialogVisible = false;
  13298. this.getCourseDetail(2);
  13299. })
  13300. .catch((err) => {
  13301. this.$message.error("提交失败");
  13302. console.error(err);
  13303. });
  13304. },
  13305. addCourseWorksPl(i) {
  13306. let _files = this.plworkFile;
  13307. var c = 1;
  13308. for (var k = 0; k < _files.length; k++) {
  13309. if (!_files[k].username) {
  13310. c = 2;
  13311. }
  13312. }
  13313. if (c == 2) {
  13314. this.$message.error("请填写学生姓名");
  13315. return;
  13316. }
  13317. let params = [
  13318. {
  13319. ateacher: this.userid,
  13320. cid: this.id,
  13321. stage: this.courseType,
  13322. task: i,
  13323. tool: this.toolindex,
  13324. content: JSON.stringify(_files),
  13325. },
  13326. ];
  13327. this.ajax
  13328. .post(this.$store.state.api + "addCourseWorksPl", params)
  13329. .then((res) => {
  13330. this.$message({
  13331. message: "提交成功",
  13332. type: "success",
  13333. });
  13334. this.plworkFile = [];
  13335. this.dialogVisiblePl = false;
  13336. this.getCourseDetail(2);
  13337. })
  13338. .catch((err) => {
  13339. this.$message.error("提交失败");
  13340. console.error(err);
  13341. });
  13342. },
  13343. addCourseWorks2(i) {
  13344. var typesql;
  13345. if (this.fileType === 0) {
  13346. typesql = 0;
  13347. } else if (this.fileType === 1) {
  13348. typesql = 1;
  13349. } else if (this.fileType === 2) {
  13350. typesql = 3;
  13351. } else if (this.fileType === 3) {
  13352. typesql = 12;
  13353. }
  13354. if (!this.studyJuri[0].cover[0].url) {
  13355. this.$message.error("请上传文件");
  13356. return;
  13357. }
  13358. let params = [
  13359. {
  13360. uid: this.userid,
  13361. cid: this.id,
  13362. stage: this.courseType,
  13363. task: i,
  13364. tool: this.toolindex,
  13365. content: JSON.stringify({
  13366. type: typesql,
  13367. groupIndex: this.groupIndex,
  13368. url: this.studyJuri[0].cover[0].url,
  13369. }),
  13370. type: 11,
  13371. atool: 49,
  13372. text: "",
  13373. },
  13374. ];
  13375. this.ajax
  13376. .post(this.$store.state.api + "addCourseWorks5", params)
  13377. .then((res) => {
  13378. this.$message({
  13379. message: "提交成功",
  13380. type: "success",
  13381. });
  13382. this.studyJuri[0].cover = [];
  13383. this.dialogVisibleGroupWork = false;
  13384. this.getCourseDetail(2);
  13385. })
  13386. .catch((err) => {
  13387. this.$message.error("提交失败");
  13388. console.error(err);
  13389. });
  13390. },
  13391. addEnglishWork() {
  13392. this.myAnList = this.$refs['engJson'].myAnswerList;
  13393. if (!this.myAnList.engTitle || !this.myAnList.engText || this.myAnList.engTitle == "" || this.myAnList.engText == "") {
  13394. this.$message.error("请输入作文标题和正文!");
  13395. return;
  13396. }
  13397. let params = [
  13398. {
  13399. uid: this.userid,
  13400. cid: this.id,
  13401. stage: this.courseType,
  13402. task: this.taskCount,
  13403. tool: this.englishToolIndex,
  13404. content: JSON.stringify(this.myAnList),
  13405. type: 16,
  13406. atool: 69,
  13407. text: "",
  13408. },
  13409. ];
  13410. this.ajax
  13411. .post(this.$store.state.api + "addCourseWorks5", params)
  13412. .then((res) => {
  13413. this.$message({
  13414. message: "提交成功",
  13415. type: "success",
  13416. });
  13417. this.myAnList = {};
  13418. this.englishList = {};
  13419. this.englishToolIndex = 0;
  13420. this.engDialogVisible = false;
  13421. this.selectSWorks();
  13422. this.selectStudent();
  13423. })
  13424. .catch((err) => {
  13425. this.$message.error("提交失败");
  13426. console.error(err);
  13427. });
  13428. },
  13429. addCourseWorksGong(i, data, tool) {
  13430. let params = [
  13431. {
  13432. uid: this.userid,
  13433. cid: this.id,
  13434. stage: this.courseType,
  13435. task: this.taskCount,
  13436. tool: i,
  13437. content: data,
  13438. type: 12,
  13439. atool: tool,
  13440. text: "",
  13441. },
  13442. ];
  13443. this.ajax
  13444. .post(this.$store.state.api + "addCourseWorks5", params)
  13445. .then((res) => {
  13446. this.$message({
  13447. message: "提交成功",
  13448. type: "success",
  13449. });
  13450. this.studyJuri[0].cover = [];
  13451. this.selectSWorks();
  13452. this.selectStudent();
  13453. })
  13454. .catch((err) => {
  13455. this.$message.error("提交失败");
  13456. console.error(err);
  13457. });
  13458. },
  13459. addCourseWorksGongTeacher(i, data, tool) {
  13460. let params = [
  13461. {
  13462. uid: this.sStudent.userid,
  13463. cid: this.id,
  13464. stage: this.courseType,
  13465. task: this.taskCount,
  13466. tool: i,
  13467. content: data,
  13468. type: 12,
  13469. atool: tool,
  13470. text: "",
  13471. },
  13472. ];
  13473. this.ajax
  13474. .post(this.$store.state.api + "addCourseWorks5", params)
  13475. .then((res) => {
  13476. this.$message({
  13477. message: "提交成功",
  13478. type: "success",
  13479. });
  13480. this.studyJuri[0].cover = [];
  13481. this.dialogVisibleWorks = false;
  13482. this.selectSWorks();
  13483. this.selectStudent();
  13484. })
  13485. .catch((err) => {
  13486. this.$message.error("提交失败");
  13487. console.error(err);
  13488. });
  13489. },
  13490. addCourseWorksGongPl(i, data, tool, type) {
  13491. let params = [
  13492. {
  13493. uid: this.sStudent.userid,
  13494. cid: this.id,
  13495. stage: this.courseType,
  13496. task: this.taskCount,
  13497. tool: i,
  13498. content: data,
  13499. type: type,
  13500. atool: tool,
  13501. text: "",
  13502. },
  13503. ];
  13504. this.ajax
  13505. .post(this.$store.state.api + "addCourseWorks5", params)
  13506. .then((res) => {
  13507. this.$message({
  13508. message: "提交成功",
  13509. type: "success",
  13510. });
  13511. this.studyJuri[0].cover = [];
  13512. this.dialogVisibleWorks = false;
  13513. this.selectSWorks();
  13514. this.selectStudent();
  13515. })
  13516. .catch((err) => {
  13517. this.$message.error("提交失败");
  13518. console.error(err);
  13519. });
  13520. },
  13521. addCourseWorksTeacher(i) {
  13522. var typesql;
  13523. if (this.sTool == 32) {
  13524. this.addCourseWorksGongTeacher(
  13525. this.toolindex,
  13526. this.studyJuri[0].cover[0].url,
  13527. this.sTool
  13528. );
  13529. return;
  13530. }
  13531. if (this.fileType === 0) {
  13532. typesql = 1;
  13533. } else if (this.fileType === 1) {
  13534. typesql = 4;
  13535. } else if (this.fileType === 2) {
  13536. typesql = 5;
  13537. } else if (this.fileType === 3) {
  13538. typesql = 12;
  13539. }
  13540. if (this.sTool == 50) {
  13541. this.addCourseWorksGongPl(
  13542. this.toolindex,
  13543. this.studyJuri[0].cover[0].url,
  13544. this.sTool,
  13545. typesql
  13546. );
  13547. return;
  13548. }
  13549. if (!this.studyJuri[0].cover[0].url) {
  13550. this.$message.error("请上传文件");
  13551. return;
  13552. }
  13553. let params = [
  13554. {
  13555. uid: this.sStudent.userid,
  13556. cid: this.id,
  13557. stage: this.courseType,
  13558. task: i,
  13559. tool: this.toolindex,
  13560. content: this.studyJuri[0].cover[0].url,
  13561. type: typesql,
  13562. ateacher: this.userid,
  13563. },
  13564. ];
  13565. this.ajax
  13566. .post(this.$store.state.api + "addCourseWorksTeacher", params)
  13567. .then((res) => {
  13568. this.$message({
  13569. message: "提交成功",
  13570. type: "success",
  13571. });
  13572. this.studyJuri[0].cover = [];
  13573. this.dialogVisibleWorks = false;
  13574. this.getCourseDetail(2);
  13575. })
  13576. .catch((err) => {
  13577. this.$message.error("提交失败");
  13578. console.error(err);
  13579. });
  13580. },
  13581. selectUploadStudent(type) {
  13582. const loading = this.$loading.service({
  13583. background: "rgba(255, 255, 255, 0.7)",
  13584. target: document.body,
  13585. });
  13586. let params = {
  13587. cid: this.uploadCid,
  13588. oid: this.oid,
  13589. cn: "",
  13590. };
  13591. this.ajax
  13592. .get(this.$store.state.api + "selectSnameByCidGroup", params)
  13593. .then((res) => {
  13594. loading.close();
  13595. var studentK = [];
  13596. if (this.isWorksS[this.toolindex].length > 0) {
  13597. for (var z = 0; z < this.isWorksS[this.toolindex].length; z++) {
  13598. studentK.push(this.isWorksS[this.toolindex][z].uid);
  13599. }
  13600. studentK = studentK.join(",");
  13601. }
  13602. this.uploadStudentJuri = res.data[0].filter((el) => {
  13603. return studentK.indexOf(el.userid) == -1;
  13604. });
  13605. if (this.worksSName && this.worksSid) {
  13606. this.uploadStudentJuri.push({
  13607. userid: this.worksSid,
  13608. name: this.worksSName,
  13609. });
  13610. }
  13611. if (type == 1) {
  13612. this.plworkFile = [];
  13613. this.dialogVisibleSname = true;
  13614. } else if (type == 2) {
  13615. this.dialogVisiblePl = true;
  13616. }
  13617. })
  13618. .catch((err) => {
  13619. loading.close();
  13620. console.error(err);
  13621. });
  13622. },
  13623. selectPickStudent() {
  13624. const loading = this.$loading.service({
  13625. background: "rgba(255, 255, 255, 0.7)",
  13626. target: document.body,
  13627. });
  13628. let params = {
  13629. cid: this.uploadCid,
  13630. oid: this.oid,
  13631. cn: "",
  13632. };
  13633. this.ajax
  13634. .get(this.$store.state.api + "selectSnameByCidGroup", params)
  13635. .then((res) => {
  13636. loading.close();
  13637. this.uploadStudentJuri = res.data[0];
  13638. this.dialogVisiblePickPeople = true;
  13639. })
  13640. .catch((err) => {
  13641. loading.close();
  13642. console.error(err);
  13643. });
  13644. },
  13645. arrayToArray(arrayo, arrayt) {
  13646. let array1 = arrayo;
  13647. let array2 = arrayt;
  13648. let commonElements = [];
  13649. for (let i = 0; i < array1.length; i++) {
  13650. for (let j = 0; j < array2.length; j++) {
  13651. if (array1[i] === array2[j]) {
  13652. commonElements.push(array1[i]);
  13653. }
  13654. }
  13655. }
  13656. return commonElements;
  13657. },
  13658. selectWorksStudent() {
  13659. let params = {
  13660. oid: this.oid,
  13661. cid: this.courseDetail.juri,
  13662. };
  13663. this.ajax
  13664. .get(this.$store.state.api + "selectWorksStudent", params)
  13665. .then((res) => {
  13666. var a = res.data[0];
  13667. for (var i = 0; i < this.isWorksS.length; i++) {
  13668. this.noWorksS[i] = [];
  13669. var studentK = [];
  13670. if (this.isWorksS[i].length > 0) {
  13671. for (var z = 0; z < this.isWorksS[i].length; z++) {
  13672. studentK.push(this.isWorksS[i][z].uid);
  13673. }
  13674. studentK = studentK.join(",");
  13675. for (var j = 0; j < a.length; j++) {
  13676. if (studentK.indexOf(a[j].userid) == -1) {
  13677. if (this.tcid) {
  13678. // a[j].classid.indexOf(this.tcid) != -1
  13679. if (
  13680. this.arrayToArray(
  13681. a[j].classid.split(","),
  13682. this.tcid.split(",")
  13683. ).length
  13684. ) {
  13685. this.noWorksS[i].push({
  13686. student: a[j].name,
  13687. userid: a[j].userid,
  13688. });
  13689. }
  13690. } else {
  13691. this.noWorksS[i].push({
  13692. student: a[j].name,
  13693. userid: a[j].userid,
  13694. });
  13695. }
  13696. }
  13697. }
  13698. } else {
  13699. for (var k = 0; k < a.length; k++) {
  13700. if (this.tcid) {
  13701. if (
  13702. this.arrayToArray(
  13703. a[k].classid.split(","),
  13704. this.tcid.split(",")
  13705. ).length
  13706. ) {
  13707. this.noWorksS[i].push({
  13708. student: a[k].name,
  13709. userid: a[k].userid,
  13710. });
  13711. }
  13712. } else {
  13713. this.noWorksS[i].push({
  13714. student: a[k].name,
  13715. userid: a[k].userid,
  13716. });
  13717. }
  13718. }
  13719. }
  13720. }
  13721. this.$forceUpdate();
  13722. if (
  13723. Object.keys(this.commentDetail).length &&
  13724. Object.keys(this.commentIndexJson).length &&
  13725. !this.dialogVisibleScore && !this.dialogVisibleENScore
  13726. ) {
  13727. let a = 1;
  13728. let c = this.commentIndexJson;
  13729. if (
  13730. this.commentIndexJson.gindex ||
  13731. this.commentIndexJson.gindex === 0
  13732. ) {
  13733. for (
  13734. var i = 0;
  13735. i < this.worksStudent[this.commentIndexJson.toolIndex].length;
  13736. i++
  13737. ) {
  13738. let _el = this.worksStudent[this.commentIndexJson.toolIndex][i];
  13739. groupA: for (var k = 0; k < _el.length; k++) {
  13740. let el = _el[k];
  13741. if (el.wid == this.commentDetail.wid) {
  13742. a = 2;
  13743. this.commentOther(
  13744. this.worksStudent[this.commentIndexJson.toolIndex][i][k],
  13745. this.commentIndexJson.toolIndex,
  13746. k,
  13747. this.commentIndexJson.gindex
  13748. );
  13749. break groupA;
  13750. }
  13751. }
  13752. }
  13753. if (a === 1) {
  13754. this.commentDetail = [];
  13755. this.commentIndexJson = {};
  13756. this.commentDialogVisible = false;
  13757. this.$message("此作业已被删除");
  13758. }
  13759. } else {
  13760. if (this.isGroup && this.commentIndexJson.gid) {
  13761. groupA: for (
  13762. var i = 0;
  13763. i < this.courseGroup.group.length;
  13764. i++
  13765. ) {
  13766. let _group = this.courseGroup.group[i];
  13767. if (_group.id == this.commentIndexJson.gid) {
  13768. let _el2 = _group.works[this.commentIndexJson.toolIndex];
  13769. for (var k = 0; k < _el2.length; k++) {
  13770. let el2 = _el2[k];
  13771. if (el2.wid == this.commentDetail.wid) {
  13772. a = 2;
  13773. this.commentOther(
  13774. _el2[k],
  13775. this.commentIndexJson.toolIndex,
  13776. k,
  13777. null,
  13778. this.commentIndexJson.gid
  13779. );
  13780. break groupA;
  13781. }
  13782. }
  13783. }
  13784. }
  13785. }
  13786. if (a == 1) {
  13787. for (
  13788. var i = 0;
  13789. i < this.worksStudent[this.commentIndexJson.toolIndex].length;
  13790. i++
  13791. ) {
  13792. let el =
  13793. this.worksStudent[this.commentIndexJson.toolIndex][i];
  13794. if (el.wid == this.commentDetail.wid) {
  13795. a = 2;
  13796. this.commentOther(
  13797. this.worksStudent[this.commentIndexJson.toolIndex][i],
  13798. this.commentIndexJson.toolIndex,
  13799. i
  13800. );
  13801. break;
  13802. }
  13803. }
  13804. }
  13805. if (a === 1) {
  13806. this.commentDetail = [];
  13807. this.commentIndexJson = {};
  13808. this.commentDialogVisible = false;
  13809. this.$message("此作业已被删除");
  13810. }
  13811. }
  13812. }
  13813. })
  13814. .catch((err) => {
  13815. console.error(err);
  13816. });
  13817. },
  13818. selectStudent() {
  13819. //学生查看自己作业
  13820. let params = {
  13821. uid: this.userid,
  13822. cid: this.id,
  13823. s: this.courseType,
  13824. t: this.taskCount,
  13825. };
  13826. this.ajax
  13827. .get(this.$store.state.api + "selectStudentWorks", params)
  13828. .then((res) => {
  13829. var a =
  13830. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  13831. this.taskCount
  13832. ].toolChoose;
  13833. var b = res.data[0];
  13834. var c = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  13835. var y = [
  13836. "AVI",
  13837. "NAVI",
  13838. "MPEG",
  13839. "ASF",
  13840. "MOV",
  13841. "WMV",
  13842. "3GP",
  13843. "RM",
  13844. "RMVB",
  13845. "FLV",
  13846. "F4V",
  13847. "H.264",
  13848. "H.265",
  13849. "REAL VIDEO",
  13850. "MKV",
  13851. "WebM",
  13852. "HDDVD",
  13853. "MP4",
  13854. "MPG",
  13855. "M4V",
  13856. "MGV",
  13857. "OGV",
  13858. "QTM",
  13859. "STR",
  13860. "AMC",
  13861. "DVX",
  13862. "EVO",
  13863. "DAT",
  13864. "OGG",
  13865. "OGM",
  13866. ];
  13867. for (var i = 0; i < a.length; i++) {
  13868. this.workStudent[i] = [];
  13869. for (var j = 0; j < b.length; j++) {
  13870. if (i == b[j].tool) {
  13871. if (
  13872. (b[j].type == 1 ||
  13873. b[j].type == 4 ||
  13874. b[j].type == 5 ||
  13875. b[j].type == 6 ||
  13876. b[j].type == 12 ||
  13877. b[j].type == 7) &&
  13878. a[i].tool[0] != 15 &&
  13879. a[i].tool[0] != 4 &&
  13880. a[i].tool[0] != 45 &&
  13881. a[i].tool[0] != 50 &&
  13882. a[i].tool[0] != 32 &&
  13883. a[i].tool[0] != 57 &&
  13884. a[i].tool[0] != 52 &&
  13885. a[i].tool[0] != 69
  13886. ) {
  13887. if (
  13888. c.indexOf(
  13889. b[j].content
  13890. .split(".")
  13891. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  13892. ) != -1 &&
  13893. a[i].tool[0] == 16 &&
  13894. b[j].atool != 50
  13895. ) {
  13896. this.workStudent[i].push({
  13897. works: b[j].content,
  13898. sName: b[j].name,
  13899. score: b[j].score,
  13900. img: b[j].img,
  13901. type: 1,
  13902. time: b[j].time,
  13903. userid: b[j].userid,
  13904. wid: b[j].id,
  13905. });
  13906. } else if (
  13907. y.indexOf(
  13908. b[j].content
  13909. .split(".")
  13910. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  13911. ) != -1 &&
  13912. a[i].tool[0] == 16 &&
  13913. b[j].atool != 50
  13914. ) {
  13915. this.workStudent[i].push({
  13916. userid: b[j].userid,
  13917. wid: b[j].id,
  13918. works: b[j].content,
  13919. sName: b[j].name,
  13920. score: b[j].score,
  13921. img: b[j].img,
  13922. type: 3,
  13923. time: b[j].time,
  13924. });
  13925. } else if (b[j].type == 6 && b[j].atool != 50) {
  13926. this.workStudent[i].push({
  13927. userid: b[j].userid,
  13928. wid: b[j].id,
  13929. works: b[j].content,
  13930. sName: b[j].name,
  13931. score: b[j].score,
  13932. img: b[j].img,
  13933. type: 4,
  13934. time: b[j].time,
  13935. });
  13936. } else if (b[j].type == 7 && b[j].atool != 50) {
  13937. this.workStudent[i].push({
  13938. userid: b[j].userid,
  13939. wid: b[j].id,
  13940. works: b[j].content,
  13941. sName: b[j].name,
  13942. score: b[j].score,
  13943. img: b[j].img,
  13944. type: 5,
  13945. time: b[j].time,
  13946. });
  13947. } else if (b[j].type == 12 && a[i].tool[0] == b[j].atool) {
  13948. this.workStudent[i].push({
  13949. works: b[j].content,
  13950. sName: b[j].name,
  13951. score: b[j].score,
  13952. img: b[j].img,
  13953. type: 12,
  13954. time: b[j].time,
  13955. userid: b[j].userid,
  13956. wid: b[j].id,
  13957. });
  13958. } else if (b[j].type == 1 && a[i].tool[0] == b[j].atool) {
  13959. this.workStudent[i].push({
  13960. works: b[j].content,
  13961. sName: b[j].name,
  13962. score: b[j].score,
  13963. img: b[j].img,
  13964. type: 0,
  13965. time: b[j].time,
  13966. userid: b[j].userid,
  13967. wid: b[j].id,
  13968. });
  13969. } else if (b[j].type == 1 && !parseInt(b[j].atool)) {
  13970. this.workStudent[i].push({
  13971. works: b[j].content,
  13972. sName: b[j].name,
  13973. score: b[j].score,
  13974. img: b[j].img,
  13975. type: 0,
  13976. time: b[j].time,
  13977. userid: b[j].userid,
  13978. wid: b[j].id,
  13979. });
  13980. }
  13981. } else if (b[j].type == 3 && a[i].tool[0] == 15) {
  13982. this.workStudent[i].push({
  13983. works: b[j].content,
  13984. sName: b[j].name,
  13985. score: b[j].score,
  13986. img: b[j].img,
  13987. type: 2,
  13988. time: b[j].time,
  13989. userid: b[j].userid,
  13990. wid: b[j].id,
  13991. });
  13992. } else if (b[j].type == 2 && a[i].tool[0] == 4) {
  13993. //问卷
  13994. this.workStudent[i].push({
  13995. works: b[j].content,
  13996. sName: b[j].name,
  13997. score: b[j].score,
  13998. img: b[j].img,
  13999. type: 2,
  14000. time: b[j].time,
  14001. userid: b[j].userid,
  14002. wid: b[j].id,
  14003. });
  14004. } else if (b[j].type == 8 && a[i].tool[0] == 45) {
  14005. //选择题
  14006. this.workStudent[i].push({
  14007. works: b[j].content,
  14008. sName: b[j].name,
  14009. score: b[j].score,
  14010. img: b[j].img,
  14011. type: 8,
  14012. time: b[j].time,
  14013. userid: b[j].userid,
  14014. wid: b[j].id,
  14015. });
  14016. } else if (b[j].type == 9 && a[i].tool[0] == 47) {
  14017. //选择题
  14018. this.workStudent[i].push({
  14019. works: b[j].content,
  14020. sName: b[j].name,
  14021. score: b[j].score,
  14022. img: b[j].img,
  14023. type: 9,
  14024. time: b[j].time,
  14025. userid: b[j].userid,
  14026. wid: b[j].id,
  14027. });
  14028. } else if (b[j].type == 10 && a[i].tool[0] == 48) {
  14029. //选择题
  14030. this.workStudent[i].push({
  14031. works: b[j].content,
  14032. sName: b[j].name,
  14033. score: b[j].score,
  14034. img: b[j].img,
  14035. type: 10,
  14036. time: b[j].time,
  14037. userid: b[j].userid,
  14038. wid: b[j].id,
  14039. });
  14040. } else if (b[j].type == 13 && a[i].tool[0] == 52) {
  14041. //选择题
  14042. this.workStudent[i].push({
  14043. works: b[j].content,
  14044. sName: b[j].name,
  14045. score: b[j].score,
  14046. img: b[j].img,
  14047. type: 13,
  14048. time: b[j].time,
  14049. userid: b[j].userid,
  14050. wid: b[j].id,
  14051. });
  14052. } else if (b[j].type == 12 && a[i].tool[0] == 32) {
  14053. //选择题
  14054. this.workStudent[i].push({
  14055. works: b[j].content,
  14056. sName: b[j].name,
  14057. score: b[j].score,
  14058. img: b[j].img,
  14059. type: 12,
  14060. time: b[j].time,
  14061. userid: b[j].userid,
  14062. wid: b[j].id,
  14063. });
  14064. } else if (b[j].type == 12 && a[i].tool[0] == 57) {
  14065. //选择题
  14066. this.workStudent[i].push({
  14067. works: b[j].content,
  14068. sName: b[j].name,
  14069. score: b[j].score,
  14070. img: b[j].img,
  14071. type: 12,
  14072. time: b[j].time,
  14073. userid: b[j].userid,
  14074. wid: b[j].id,
  14075. });
  14076. } else if (b[j].type == 15 && a[i].tool[0] == 57) {
  14077. //选择题
  14078. this.workStudent[i].push({
  14079. works: b[j].content,
  14080. sName: b[j].name,
  14081. score: b[j].score,
  14082. img: b[j].img,
  14083. type: 15,
  14084. time: b[j].time,
  14085. userid: b[j].userid,
  14086. wid: b[j].id,
  14087. });
  14088. } else if (b[j].type == 16 && a[i].tool[0] == 69) {
  14089. //英语写作
  14090. this.workStudent[i].push({
  14091. works: b[j].content,
  14092. sName: b[j].name,
  14093. score: b[j].score,
  14094. img: b[j].img,
  14095. type: 16,
  14096. time: b[j].time,
  14097. userid: b[j].userid,
  14098. wid: b[j].id,
  14099. aiCode: b[j].aiCode,
  14100. teacherCode: b[j].teacherCode
  14101. });
  14102. } else if (b[j].type == 17 && a[i].tool[0] == 70) {
  14103. //英语口语
  14104. this.workStudent[i].push({
  14105. works: b[j].content,
  14106. sName: b[j].name,
  14107. score: b[j].score,
  14108. img: b[j].img,
  14109. type: 17,
  14110. time: b[j].time,
  14111. userid: b[j].userid,
  14112. wid: b[j].id,
  14113. });
  14114. } else if (b[j].type == 14 && a[i].tool[0] == 62) {
  14115. //交互视频
  14116. this.workStudent[i].push({
  14117. works: b[j].content,
  14118. sName: b[j].name,
  14119. score: b[j].score,
  14120. img: b[j].img,
  14121. type: 14,
  14122. time: b[j].time,
  14123. userid: b[j].userid,
  14124. wid: b[j].id,
  14125. });
  14126. }
  14127. }
  14128. }
  14129. }
  14130. })
  14131. .catch((err) => {
  14132. console.error(err);
  14133. });
  14134. },
  14135. openVideo(w) {
  14136. this.videoDetail = {};
  14137. this.playerOptions1.sources[0].src = w.works;
  14138. this.videoDetail = this.playerOptions1;
  14139. this.videoVisible = true;
  14140. },
  14141. isLikes(wid, uid, t, c, isLikes,sName) {
  14142. if (isLikes == false) {
  14143. let params = [
  14144. {
  14145. wid: wid,
  14146. lid: uid,
  14147. t: t,
  14148. c: c,
  14149. },
  14150. ];
  14151. this.ajax
  14152. .post(this.$store.state.api + "insertComment", params)
  14153. .then((res) => {
  14154. this.$message({
  14155. message: "点赞成功",
  14156. type: "success",
  14157. });
  14158. this.selectSWorks();
  14159. this.selectStudent();
  14160. this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">点赞</span>`)
  14161. })
  14162. .catch((err) => {
  14163. this.$message.error("点赞失败");
  14164. console.error(err);
  14165. });
  14166. } else {
  14167. let params = {
  14168. wid: wid,
  14169. lid: uid,
  14170. type: t,
  14171. };
  14172. this.ajax
  14173. .get(this.$store.state.api + "deleteComment", params)
  14174. .then((res) => {
  14175. this.$message({
  14176. message: "取消点赞成功",
  14177. type: "success",
  14178. });
  14179. this.selectSWorks();
  14180. this.selectStudent();
  14181. })
  14182. .catch((err) => {
  14183. console.error(err);
  14184. });
  14185. }
  14186. },
  14187. deleteComment(wid) {
  14188. this.$confirm("确定删除此评论吗?", "提示", {
  14189. confirmButtonText: "确定",
  14190. cancelButtonText: "取消",
  14191. type: "warning",
  14192. })
  14193. .then(() => {
  14194. let params = {
  14195. id: wid,
  14196. };
  14197. this.ajax
  14198. .get(this.$store.state.api + "deleteComment2", params)
  14199. .then((res) => {
  14200. this.$message({
  14201. message: "删除评论成功",
  14202. type: "success",
  14203. });
  14204. this.selectSWorks();
  14205. this.selectStudent();
  14206. })
  14207. .catch((err) => {
  14208. console.error(err);
  14209. });
  14210. })
  14211. .catch(() => {});
  14212. },
  14213. async commentOther(w, toolIndex, wIndex, gindex, gid) {
  14214. this.commentIndexJson = {
  14215. toolIndex: toolIndex,
  14216. wIndex: wIndex,
  14217. gindex: gindex,
  14218. gid: gid,
  14219. };
  14220. this.commentDetail = [];
  14221. this.commentDialogVisible = true;
  14222. this.commentDetail = w;
  14223. if (w.works && w.type == 1) {
  14224. // this.pptImgUrl = "";
  14225. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
  14226. if (
  14227. a.indexOf(
  14228. w.works
  14229. .split(".")
  14230. [w.works.split(".").length - 1].toLocaleUpperCase()
  14231. ) != -1
  14232. ) {
  14233. let _uuurl = await this.checkLink(w.works);
  14234. console.log(_uuurl)
  14235. this.pptImgUrl =
  14236. "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
  14237. this.showPDF = false;
  14238. } else if (
  14239. w.works
  14240. .split(".")
  14241. [w.works.split(".").length - 1].toLocaleUpperCase() == "PDF"
  14242. ) {
  14243. this.pptImgUrl = w.works;
  14244. this.showPDF = true;
  14245. }
  14246. } else if (w.works && w.type == 3) {
  14247. this.videoDetail = {};
  14248. this.playerOptions1.sources[0].src = w.works;
  14249. this.videoDetail = this.playerOptions1;
  14250. // this.videoVisible = true;
  14251. } else if (w.works && w.type == 4) {
  14252. this.eScore = JSON.parse(w.works);
  14253. this.rateJson =
  14254. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  14255. this.taskCount
  14256. ].toolChoose[toolIndex].rateJson;
  14257. } else if (w.works && w.type == 10) {
  14258. this.commentDetail.works = JSON.parse(this.commentDetail.works);
  14259. } else if (w.works && w.type == 13) {
  14260. this.wordJson =
  14261. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  14262. this.taskCount
  14263. ].toolChoose[toolIndex].wordJson;
  14264. }
  14265. },
  14266. async openScore(w, index) {
  14267. this.wScore = 0;
  14268. this.wScore = w.score ? JSON.parse(w.score).wScore : 0;
  14269. this.scoreDetail = w.score ? JSON.parse(w.score).detail : "";
  14270. this.commentDetail = [];
  14271. if(w.type == 17){
  14272. this.dialogVisibleENScore = true;
  14273. }else{
  14274. this.dialogVisibleScore = true;
  14275. }
  14276. this.commentDetail = w;
  14277. if (w.works && w.type == 1) {
  14278. this.pptImgUrl = "";
  14279. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
  14280. if (
  14281. a.indexOf(
  14282. w.works
  14283. .split(".")
  14284. [w.works.split(".").length - 1].toLocaleUpperCase()
  14285. ) != -1
  14286. ) {
  14287. let _uuurl = await this.checkLink(w.works);
  14288. console.log(_uuurl)
  14289. this.pptImgUrl =
  14290. "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
  14291. this.showPDF = false;
  14292. } else if (
  14293. w.works
  14294. .split(".")
  14295. [w.works.split(".").length - 1].toLocaleUpperCase() == "PDF"
  14296. ) {
  14297. this.pptImgUrl = w.works;
  14298. this.showPDF = true;
  14299. }
  14300. } else if (w.works && w.type == 3) {
  14301. this.videoDetail = {};
  14302. this.playerOptions1.sources[0].src = w.works;
  14303. this.videoDetail = this.playerOptions1;
  14304. }else if(w.type == 17){
  14305. let englishVoiceJson = {}
  14306. englishVoiceJson = this.chapInfoList[this.courseType].chapterInfo[0]
  14307. .taskJson[this.taskCount].toolChoose[index].englishVoiceJson
  14308. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount]
  14309. .toolChoose[index].englishVoiceJson
  14310. : {};
  14311. this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
  14312. }
  14313. this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
  14314. },
  14315. addComment(wid, uid, t,detail) {
  14316. if (this.commentText == "") {
  14317. this.$message.error("请输入评论");
  14318. return;
  14319. }
  14320. let params2 = [
  14321. {
  14322. wid: wid,
  14323. lid: uid,
  14324. t: t,
  14325. },
  14326. ];
  14327. this.ajax
  14328. .post(this.$store.state.api + "getComment", params2)
  14329. .then((res) => {
  14330. if (res.data[0].length > 0) {
  14331. this.$message.error("一个作业只能评论一条");
  14332. } else {
  14333. let params = [
  14334. {
  14335. wid: wid,
  14336. lid: uid,
  14337. t: t,
  14338. c: this.commentText,
  14339. },
  14340. ];
  14341. this.ajax
  14342. .post(this.$store.state.api + "insertComment", params)
  14343. .then((res) => {
  14344. this.$message({
  14345. message: "评论成功",
  14346. type: "success",
  14347. });
  14348. this.commentText = "";
  14349. this.selectSWorks();
  14350. this.selectStudent();
  14351. this.insertMemorandum(`对<span class="variable">${detail.sName}</span>的作业进行<span class="btn">评论</span>`)
  14352. })
  14353. .catch((err) => {
  14354. this.$message.error("评论失败");
  14355. console.error(err);
  14356. });
  14357. }
  14358. })
  14359. .catch((err) => {
  14360. // this.$message.error("评论失败");
  14361. console.error(err);
  14362. });
  14363. },
  14364. scoreWork(wid,sName) {
  14365. if (this.wScore == 0) {
  14366. this.$message.error("请评分");
  14367. return;
  14368. }
  14369. let params = [
  14370. {
  14371. wid: wid,
  14372. score: JSON.stringify({
  14373. wScore: this.wScore,
  14374. detail: this.scoreDetail,
  14375. }),
  14376. },
  14377. ];
  14378. this.ajax
  14379. .post(this.$store.state.api + "scoreWork", params)
  14380. .then((res) => {
  14381. this.$message({
  14382. message: "评分成功",
  14383. type: "success",
  14384. });
  14385. this.wScore = 0;
  14386. this.scoreDetail = "";
  14387. this.dialogVisibleScore = false;
  14388. this.selectSWorks();
  14389. this.selectStudent();
  14390. this.insertMemorandum(`对<span class="variable">${sName}</span>的作业进行<span class="btn">评分</span>`)
  14391. })
  14392. .catch((err) => {
  14393. this.$message.error("评分失败");
  14394. console.error(err);
  14395. });
  14396. },
  14397. openXz(w, i) {
  14398. this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
  14399. .taskJson[this.taskCount].toolChoose[i].selectJson
  14400. ? JSON.parse(
  14401. JSON.stringify(
  14402. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  14403. this.taskCount
  14404. ].toolChoose[i].selectJson
  14405. )
  14406. )
  14407. : { url: "", select: [], answer: [] };
  14408. var a = w.works.split(",");
  14409. for (var k = 0; k < a.length; k++) {
  14410. a[k] = parseInt(a[k]);
  14411. }
  14412. this.selectAnswer = { answer: a, stu: w.sName };
  14413. this.isSelect = true;
  14414. this.dialogVisibleSelect = true;
  14415. this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
  14416. },
  14417. openSen(w, i) {
  14418. this.sentenceList1 = JSON.parse(w.works);
  14419. this.sentenceList1.stuName = w.sName;
  14420. this.dialogVisibleSentence1 = true;
  14421. },
  14422. openPj(w, toolindex) {
  14423. this.isStar = true;
  14424. this.eScore = JSON.parse(w);
  14425. this.rateJson =
  14426. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  14427. this.taskCount
  14428. ].toolChoose[toolindex].rateJson;
  14429. this.studentEvalDialogVisible = true;
  14430. },
  14431. openEnglishEva(id,i){
  14432. let params = {
  14433. wid: id
  14434. };
  14435. this.ajax
  14436. .get(this.$store.state.api + "selectEngWork", params)
  14437. .then((res) => {
  14438. this.evaEngJson.message = res.data[0][0];
  14439. this.evaEngJson.studentJson = JSON.parse(res.data[0][0].content);
  14440. this.evaEngJson.teacherJson = this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount]
  14441. .toolChoose[i].englishList;
  14442. this.engEvaDialogVisible = true;
  14443. })
  14444. .catch((err) => {
  14445. console.error(err);
  14446. });
  14447. },
  14448. deleteWorks(id) {
  14449. this.$confirm("确定删除此作业吗?", "提示", {
  14450. confirmButtonText: "确定",
  14451. cancelButtonText: "取消",
  14452. type: "warning",
  14453. })
  14454. .then(() => {
  14455. let params = [
  14456. {
  14457. id: id,
  14458. },
  14459. ];
  14460. this.ajax
  14461. .post(this.$store.state.api + "deleteCourseWork", params)
  14462. .then((res) => {
  14463. this.$message({
  14464. message: "删除成功",
  14465. type: "success",
  14466. });
  14467. this.selectStudent();
  14468. this.selectSWorks();
  14469. this.selectSLook();
  14470. })
  14471. .catch((err) => {
  14472. this.$message.error("网络异常");
  14473. console.error(err);
  14474. });
  14475. })
  14476. .catch(() => {});
  14477. },
  14478. selectSWorks(gindex) {
  14479. //教师查看全部作业
  14480. let params = {
  14481. cid: this.id,
  14482. s: this.courseType,
  14483. t: this.taskCount,
  14484. };
  14485. this.ajax
  14486. .get(this.$store.state.api + "selectSWorks", params)
  14487. .then((res) => {
  14488. var a =
  14489. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  14490. this.taskCount
  14491. ].toolChoose;
  14492. var b = res.data[0];
  14493. var c = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  14494. var y = [
  14495. "AVI",
  14496. "NAVI",
  14497. "MPEG",
  14498. "ASF",
  14499. "MOV",
  14500. "WMV",
  14501. "3GP",
  14502. "RM",
  14503. "RMVB",
  14504. "FLV",
  14505. "F4V",
  14506. "H.264",
  14507. "H.265",
  14508. "REAL VIDEO",
  14509. "MKV",
  14510. "WebM",
  14511. "HDDVD",
  14512. "MP4",
  14513. "MPG",
  14514. "M4V",
  14515. "MGV",
  14516. "OGV",
  14517. "QTM",
  14518. "STR",
  14519. "AMC",
  14520. "DVX",
  14521. "EVO",
  14522. "DAT",
  14523. "OGG",
  14524. "OGM",
  14525. ];
  14526. var d = res.data[1];
  14527. var e = res.data[2];
  14528. var f = res.data[3];
  14529. let _worksStudent = [];
  14530. var _worksStudent2 = [];
  14531. for (var i = 0; i < a.length; i++) {
  14532. _worksStudent[i] = [];
  14533. _worksStudent2[i] = [];
  14534. if (
  14535. !this.isCloseList[i] ||
  14536. this.isCloseList[i].isClose == undefined
  14537. ) {
  14538. this.isCloseList[i] = { isClose: 0 };
  14539. }
  14540. this.groupStudent[i] = [];
  14541. this.groupStudentUid[i] = [];
  14542. if (this.isGroup) {
  14543. for (
  14544. var groupI = 0;
  14545. groupI < this.courseGroup.group.length;
  14546. groupI++
  14547. ) {
  14548. this.courseGroup.group[groupI].works[i] = [];
  14549. }
  14550. }
  14551. this.isWorksS[i] = [];
  14552. this.checkJson[i] = [];
  14553. if (a[i].tool[0] == 49) {
  14554. for (var gA = 0; gA < a[i].groupJson.group.length; gA++) {
  14555. this.groupStudent[i][gA] = [];
  14556. this.groupStudentUid[i][gA] = [];
  14557. _worksStudent[i][gA] = [];
  14558. _worksStudent2[i][gA] = [];
  14559. this.isCloseList[i][gA] = [];
  14560. for (var g = 0; g < f.length; g++) {
  14561. if (
  14562. f[g].ttype == 2 &&
  14563. this.tcid &&
  14564. this.arrayToArray(
  14565. (f[g].classid ? f[g].classid.split(",") : []),
  14566. this.tcid.split(",")
  14567. ).length == 0
  14568. ) {
  14569. continue;
  14570. }
  14571. let _classId = this.arrayToArray(
  14572. this.courseDetail.juri ? this.courseDetail.juri.split(",") : [],
  14573. this.classId ? this.classId.split(",") : []
  14574. )
  14575. if (gA == f[g].group && f[g].tool == i && (this.arrayToArray(
  14576. (f[g].classid ? f[g].classid.split(",") : []),
  14577. this.tcid.split(",")
  14578. ).length !== 0 || this.arrayToArray(
  14579. (f[g].classid ? f[g].classid.split(",") : []),
  14580. _classId
  14581. ).length !== 0 || (!this.tcid && this.tType == '1') || (this.courseDetail.juri === '') || f[g].ttype == 1)) {
  14582. this.groupStudent[i][gA].push(f[g]);
  14583. this.groupStudentUid[i][gA].push(f[g].userid);
  14584. }
  14585. }
  14586. }
  14587. this.$forceUpdate();
  14588. }
  14589. for (var j = 0; j < b.length; j++) {
  14590. if (
  14591. b[j].ttype == 2 &&
  14592. this.tcid &&
  14593. this.arrayToArray(b[j].classid.split(","), this.tcid.split(","))
  14594. .length == 0
  14595. ) {
  14596. continue;
  14597. }
  14598. var likesCount = 0;
  14599. var commentCount = 0;
  14600. var isLikes = false;
  14601. var commentJson = [];
  14602. var likeJson = [];
  14603. var data = b[j];
  14604. if (i == b[j].tool) {
  14605. if (data.type == 2 && a[i].tool[0] == 4) {
  14606. // if(JSON.parse(data.content)[0].anwer){
  14607. var checkL =
  14608. JSON.parse(data.content)[0].anwer instanceof Array
  14609. ? JSON.parse(data.content)[0].anwer
  14610. : JSON.parse(data.content)[0].anwer.split(",");
  14611. for (var z = 0; z < checkL.length; z++) {
  14612. if (!this.checkJson[i][z]) {
  14613. this.checkJson[i].push({
  14614. checkCount: [],
  14615. checkPerson: [],
  14616. rightPerson: [],
  14617. });
  14618. }
  14619. if (!this.checkJson[i][z].checkCount.length) {
  14620. this.checkJson[i][z].checkCount = [];
  14621. let _askItemCount = JSON.parse(data.content)[0].askJson
  14622. .askJson[z].askItem;
  14623. for (var aic = 0; aic < _askItemCount; aic++) {
  14624. this.checkJson[i][z].checkCount.push(0);
  14625. }
  14626. }
  14627. if (checkL[z] instanceof Array) {
  14628. if (
  14629. JSON.parse(data.content)[0].anwer.sort().join(",") ==
  14630. checkL[z].sort().join(",")
  14631. ) {
  14632. this.checkJson[i][z].rightPerson.push(data.name);
  14633. }
  14634. for (var q = 0; q < checkL[z].length; q++) {
  14635. this.checkJson[i][z].checkPerson[parseInt(checkL[z][q])]
  14636. ? this.checkJson[i][z].checkPerson[
  14637. parseInt(checkL[z][q])
  14638. ].push(data.name)
  14639. : (this.checkJson[i][z].checkPerson[
  14640. parseInt(checkL[z][q])
  14641. ] = [data.name]);
  14642. this.checkJson[i][z].checkCount[parseInt(checkL[z][q])]
  14643. ? this.checkJson[i][z].checkCount[
  14644. parseInt(checkL[z][q])
  14645. ]++
  14646. : (this.checkJson[i][z].checkCount[
  14647. parseInt(checkL[z][q])
  14648. ] = 1);
  14649. }
  14650. } else {
  14651. if (JSON.parse(data.content)[0].anwer[z] == checkL[z]) {
  14652. this.checkJson[i][z].rightPerson.push(data.name);
  14653. }
  14654. if (parseInt(checkL[z]) || parseInt(checkL[z]) == 0) {
  14655. this.checkJson[i][z].checkPerson[parseInt(checkL[z])]
  14656. ? this.checkJson[i][z].checkPerson[
  14657. parseInt(checkL[z])
  14658. ].push(data.name)
  14659. : (this.checkJson[i][z].checkPerson[
  14660. parseInt(checkL[z])
  14661. ] = [data.name]);
  14662. this.checkJson[i][z].checkCount[parseInt(checkL[z])]
  14663. ? this.checkJson[i][z].checkCount[
  14664. parseInt(checkL[z])
  14665. ]++
  14666. : (this.checkJson[i][z].checkCount[
  14667. parseInt(checkL[z])
  14668. ] = 1);
  14669. }
  14670. }
  14671. }
  14672. } else if (data.type == 8 && a[i].tool[0] == 45) {
  14673. var checkL = JSON.parse(data.content)[0].anwer;
  14674. for (var z = 0; z < checkL.length; z++) {
  14675. if (!this.checkJson[i][z]) {
  14676. this.checkJson[i].push({
  14677. checkCount: [],
  14678. checkPerson: [],
  14679. rightPerson: [],
  14680. });
  14681. }
  14682. if (!this.checkJson[i][z].checkCount.length) {
  14683. this.checkJson[i][z].checkCount = [];
  14684. let _askItemCount = JSON.parse(data.content)[0].testJson
  14685. .testJson[z].testItem;
  14686. for (var aic = 0; aic < _askItemCount; aic++) {
  14687. this.checkJson[i][z].checkCount.push(0);
  14688. }
  14689. }
  14690. if (checkL[z] instanceof Array) {
  14691. if (
  14692. JSON.parse(data.content)[0]
  14693. .testJson.testJson[z].answer.sort()
  14694. .join(",") == checkL[z].sort().join(",")
  14695. ) {
  14696. this.checkJson[i][z].rightPerson.push(data.name);
  14697. }
  14698. for (var q = 0; q < checkL[z].length; q++) {
  14699. this.checkJson[i][z].checkPerson[parseInt(checkL[z][q])]
  14700. ? this.checkJson[i][z].checkPerson[
  14701. parseInt(checkL[z][q])
  14702. ].push(data.name)
  14703. : (this.checkJson[i][z].checkPerson[
  14704. parseInt(checkL[z][q])
  14705. ] = [data.name]);
  14706. this.checkJson[i][z].checkCount[parseInt(checkL[z][q])]
  14707. ? this.checkJson[i][z].checkCount[
  14708. parseInt(checkL[z][q])
  14709. ]++
  14710. : (this.checkJson[i][z].checkCount[
  14711. parseInt(checkL[z][q])
  14712. ] = 1);
  14713. }
  14714. } else {
  14715. if (
  14716. JSON.parse(data.content)[0].testJson.testJson[z]
  14717. .answer == checkL[z]
  14718. ) {
  14719. this.checkJson[i][z].rightPerson.push(data.name);
  14720. }
  14721. if (parseInt(checkL[z]) || parseInt(checkL[z]) == 0) {
  14722. this.checkJson[i][z].checkPerson[parseInt(checkL[z])]
  14723. ? this.checkJson[i][z].checkPerson[
  14724. parseInt(checkL[z])
  14725. ].push(data.name)
  14726. : (this.checkJson[i][z].checkPerson[
  14727. parseInt(checkL[z])
  14728. ] = [data.name]);
  14729. this.checkJson[i][z].checkCount[parseInt(checkL[z])]
  14730. ? this.checkJson[i][z].checkCount[
  14731. parseInt(checkL[z])
  14732. ]++
  14733. : (this.checkJson[i][z].checkCount[
  14734. parseInt(checkL[z])
  14735. ] = 1);
  14736. }
  14737. }
  14738. }
  14739. } else if (data.type == 9 && a[i].tool[0] == 47) {
  14740. var checkL = JSON.parse(data.content);
  14741. for (var z = 0; z < checkL.length; z++) {
  14742. if (!this.checkJson[i][z]) {
  14743. this.checkJson[i].push({
  14744. checkCount: [],
  14745. checkPerson: [],
  14746. rightPerson: [],
  14747. });
  14748. }
  14749. this.checkJson[i][z].checkPerson.push(data.name);
  14750. if (
  14751. checkL[z].chooseSenList.toString() ==
  14752. checkL[z].rightAnswer.toString()
  14753. ) {
  14754. this.checkJson[i][z].rightPerson.push(data.name);
  14755. }
  14756. }
  14757. }
  14758. for (var k = 0; k < d.length; k++) {
  14759. //点赞
  14760. if (d[k].workId == b[j].id) {
  14761. likesCount++;
  14762. likeJson.push(d[k])
  14763. if (d[k].likesId == this.userid) {
  14764. isLikes = true;
  14765. }
  14766. }
  14767. }
  14768. for (var l = 0; l < e.length; l++) {
  14769. //评论
  14770. if (e[l].workId == b[j].id) {
  14771. if (e[l].comment != "") {
  14772. commentCount++;
  14773. commentJson.push({
  14774. commentText: e[l].comment,
  14775. commentTime: e[l].commentTime,
  14776. commentPeople: e[l].commentPeople,
  14777. userid: e[l].userid,
  14778. wid: e[l].id,
  14779. });
  14780. }
  14781. }
  14782. }
  14783. if (
  14784. (b[j].type == 1 ||
  14785. b[j].type == 4 ||
  14786. b[j].type == 5 ||
  14787. b[j].type == 6 ||
  14788. b[j].type == 12 ||
  14789. b[j].type == 7) &&
  14790. a[i].tool[0] != 15 &&
  14791. a[i].tool[0] != 4 &&
  14792. a[i].tool[0] != 45 &&
  14793. a[i].tool[0] != 50 &&
  14794. a[i].tool[0] != 32 &&
  14795. a[i].tool[0] != 57 &&
  14796. a[i].tool[0] != 52
  14797. ) {
  14798. if (
  14799. c.indexOf(
  14800. b[j].content
  14801. .split(".")
  14802. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  14803. ) != -1 &&
  14804. a[i].tool[0] == 16 &&
  14805. b[j].atool != 50
  14806. ) {
  14807. let _works = {
  14808. userid: b[j].userid,
  14809. ateacher: b[j].ateacher,
  14810. wid: b[j].id,
  14811. works: b[j].content,
  14812. sName: b[j].name,
  14813. type: 1,
  14814. ttype:b[j].ttype,
  14815. time: b[j].time,
  14816. score: b[j].score,
  14817. img: b[j].img,
  14818. likesCount: likesCount,
  14819. commentCount: commentCount,
  14820. isLikes: isLikes,
  14821. commentJson: commentJson,
  14822. likeJson:likeJson
  14823. };
  14824. if (this.isGroup) {
  14825. let isGw = 1;
  14826. for (
  14827. var groupI = 0;
  14828. groupI < this.courseGroup.group.length;
  14829. groupI++
  14830. ) {
  14831. let gid = this.courseGroup.group[groupI].id;
  14832. if (
  14833. this.courseGroupStudentUid[gid].indexOf(
  14834. b[j].userid
  14835. ) != -1
  14836. ) {
  14837. isGw = 2;
  14838. this.courseGroup.group[groupI].works[i].push(_works);
  14839. break;
  14840. }
  14841. }
  14842. if (isGw == 1) {
  14843. _worksStudent[i].push(_works);
  14844. }
  14845. } else {
  14846. _worksStudent[i].push(_works);
  14847. }
  14848. _worksStudent2[i].push(_works);
  14849. this.isWorksS[i].push({
  14850. uid: b[j].userid,
  14851. sName: b[j].name,
  14852. });
  14853. } else if (
  14854. y.indexOf(
  14855. b[j].content
  14856. .split(".")
  14857. [b[j].content.split(".").length - 1].toLocaleUpperCase()
  14858. ) != -1 &&
  14859. a[i].tool[0] == 16 &&
  14860. b[j].atool != 50
  14861. ) {
  14862. let _works = {
  14863. userid: b[j].userid,
  14864. ateacher: b[j].ateacher,
  14865. wid: b[j].id,
  14866. works: b[j].content,
  14867. sName: b[j].name,
  14868. type: 3,
  14869. ttype:b[j].ttype,
  14870. time: b[j].time,
  14871. score: b[j].score,
  14872. img: b[j].img,
  14873. likesCount: likesCount,
  14874. commentCount: commentCount,
  14875. isLikes: isLikes,
  14876. commentJson: commentJson,
  14877. likeJson:likeJson
  14878. };
  14879. if (this.isGroup) {
  14880. let isGw = 1;
  14881. for (
  14882. var groupI = 0;
  14883. groupI < this.courseGroup.group.length;
  14884. groupI++
  14885. ) {
  14886. let gid = this.courseGroup.group[groupI].id;
  14887. if (
  14888. this.courseGroupStudentUid[gid].indexOf(
  14889. b[j].userid
  14890. ) != -1
  14891. ) {
  14892. isGw = 2;
  14893. this.courseGroup.group[groupI].works[i].push(_works);
  14894. break;
  14895. }
  14896. }
  14897. if (isGw == 1) {
  14898. _worksStudent[i].push(_works);
  14899. }
  14900. } else {
  14901. _worksStudent[i].push(_works);
  14902. }
  14903. _worksStudent2[i].push(_works);
  14904. this.isWorksS[i].push({
  14905. uid: b[j].userid,
  14906. sName: b[j].name,
  14907. });
  14908. } else if (b[j].type == 6 && b[j].atool != 50) {
  14909. let _works = {
  14910. userid: b[j].userid,
  14911. ateacher: b[j].ateacher,
  14912. wid: b[j].id,
  14913. works: b[j].content,
  14914. sName: b[j].name,
  14915. type: 4,
  14916. ttype:b[j].ttype,
  14917. time: b[j].time,
  14918. score: b[j].score,
  14919. img: b[j].img,
  14920. likesCount: likesCount,
  14921. commentCount: commentCount,
  14922. isLikes: isLikes,
  14923. commentJson: commentJson,
  14924. likeJson:likeJson
  14925. };
  14926. _worksStudent[i].push(_works);
  14927. _worksStudent2[i].push(_works);
  14928. this.isWorksS[i].push({
  14929. uid: b[j].userid,
  14930. sName: b[j].name,
  14931. });
  14932. } else if (b[j].type == 7 && b[j].atool != 50) {
  14933. let _work = {
  14934. userid: b[j].userid,
  14935. ateacher: b[j].ateacher,
  14936. wid: b[j].id,
  14937. works: b[j].content,
  14938. sName: b[j].name,
  14939. type: 5,
  14940. ttype:b[j].ttype,
  14941. time: b[j].time,
  14942. score: b[j].score,
  14943. img: b[j].img,
  14944. likesCount: likesCount,
  14945. commentCount: commentCount,
  14946. isLikes: isLikes,
  14947. commentJson: commentJson,
  14948. likeJson:likeJson
  14949. };
  14950. _worksStudent[i].push(_work);
  14951. _worksStudent2[i].push(_work);
  14952. this.isWorksS[i].push({
  14953. uid: b[j].userid,
  14954. sName: b[j].name,
  14955. });
  14956. } else if (b[j].type == 12 && a[i].tool[0] == b[j].atool) {
  14957. let _works = {
  14958. userid: b[j].userid,
  14959. ateacher: b[j].ateacher,
  14960. wid: b[j].id,
  14961. works: b[j].content,
  14962. sName: b[j].name,
  14963. type: 12,
  14964. ttype:b[j].ttype,
  14965. time: b[j].time,
  14966. score: b[j].score,
  14967. img: b[j].img,
  14968. likesCount: likesCount,
  14969. commentCount: commentCount,
  14970. isLikes: isLikes,
  14971. commentJson: commentJson,
  14972. likeJson:likeJson
  14973. };
  14974. if (this.isGroup) {
  14975. let isGw = 1;
  14976. for (
  14977. var groupI = 0;
  14978. groupI < this.courseGroup.group.length;
  14979. groupI++
  14980. ) {
  14981. let gid = this.courseGroup.group[groupI].id;
  14982. if (
  14983. this.courseGroupStudentUid[gid].indexOf(
  14984. b[j].userid
  14985. ) != -1
  14986. ) {
  14987. isGw = 2;
  14988. this.courseGroup.group[groupI].works[i].push(_works);
  14989. break;
  14990. }
  14991. }
  14992. if (isGw == 1) {
  14993. _worksStudent[i].push(_works);
  14994. }
  14995. } else {
  14996. _worksStudent[i].push(_works);
  14997. }
  14998. _worksStudent2[i].push(_works);
  14999. this.isWorksS[i].push({
  15000. uid: b[j].userid,
  15001. sName: b[j].name,
  15002. });
  15003. } else if (b[j].type == 1 && a[i].tool[0] == b[j].atool) {
  15004. let _works = {
  15005. userid: b[j].userid,
  15006. ateacher: b[j].ateacher,
  15007. wid: b[j].id,
  15008. works: b[j].content,
  15009. sName: b[j].name,
  15010. type: 0,
  15011. ttype:b[j].ttype,
  15012. time: b[j].time,
  15013. score: b[j].score,
  15014. img: b[j].img,
  15015. likesCount: likesCount,
  15016. commentCount: commentCount,
  15017. isLikes: isLikes,
  15018. commentJson: commentJson,
  15019. likeJson:likeJson
  15020. };
  15021. if (this.isGroup) {
  15022. let isGw = 1;
  15023. for (
  15024. var groupI = 0;
  15025. groupI < this.courseGroup.group.length;
  15026. groupI++
  15027. ) {
  15028. let gid = this.courseGroup.group[groupI].id;
  15029. if (
  15030. this.courseGroupStudentUid[gid].indexOf(
  15031. b[j].userid
  15032. ) != -1
  15033. ) {
  15034. isGw = 2;
  15035. this.courseGroup.group[groupI].works[i].push(_works);
  15036. break;
  15037. }
  15038. }
  15039. if (isGw == 1) {
  15040. _worksStudent[i].push(_works);
  15041. }
  15042. } else {
  15043. _worksStudent[i].push(_works);
  15044. }
  15045. _worksStudent2[i].push(_works);
  15046. this.isWorksS[i].push({
  15047. uid: b[j].userid,
  15048. sName: b[j].name,
  15049. });
  15050. } else if (b[j].type == 1 && !parseInt(b[j].atool)) {
  15051. let _works = {
  15052. userid: b[j].userid,
  15053. ateacher: b[j].ateacher,
  15054. wid: b[j].id,
  15055. works: b[j].content,
  15056. sName: b[j].name,
  15057. type: 0,
  15058. ttype:b[j].ttype,
  15059. time: b[j].time,
  15060. score: b[j].score,
  15061. img: b[j].img,
  15062. likesCount: likesCount,
  15063. commentCount: commentCount,
  15064. isLikes: isLikes,
  15065. commentJson: commentJson,
  15066. likeJson:likeJson
  15067. };
  15068. if (this.isGroup) {
  15069. let isGw = 1;
  15070. for (
  15071. var groupI = 0;
  15072. groupI < this.courseGroup.group.length;
  15073. groupI++
  15074. ) {
  15075. let gid = this.courseGroup.group[groupI].id;
  15076. if (
  15077. this.courseGroupStudentUid[gid].indexOf(
  15078. b[j].userid
  15079. ) != -1
  15080. ) {
  15081. isGw = 2;
  15082. this.courseGroup.group[groupI].works[i].push(_works);
  15083. break;
  15084. }
  15085. }
  15086. if (isGw == 1) {
  15087. _worksStudent[i].push(_works);
  15088. }
  15089. } else {
  15090. _worksStudent[i].push(_works);
  15091. }
  15092. _worksStudent2[i].push(_works);
  15093. this.isWorksS[i].push({
  15094. uid: b[j].userid,
  15095. sName: b[j].name,
  15096. });
  15097. }
  15098. } else if (b[j].type == 3 && a[i].tool[0] == 15) {
  15099. let _works = {
  15100. userid: b[j].userid,
  15101. ateacher: b[j].ateacher,
  15102. wid: b[j].id,
  15103. works: b[j].content,
  15104. sName: b[j].name,
  15105. type: 2,
  15106. ttype:b[j].ttype,
  15107. time: b[j].time,
  15108. score: b[j].score,
  15109. img: b[j].img,
  15110. likesCount: likesCount,
  15111. commentCount: commentCount,
  15112. isLikes: isLikes,
  15113. commentJson: commentJson,
  15114. likeJson:likeJson
  15115. };
  15116. if (this.isGroup) {
  15117. let isGw = 1;
  15118. for (
  15119. var groupI = 0;
  15120. groupI < this.courseGroup.group.length;
  15121. groupI++
  15122. ) {
  15123. let gid = this.courseGroup.group[groupI].id;
  15124. if (
  15125. this.courseGroupStudentUid[gid].indexOf(b[j].userid) !=
  15126. -1
  15127. ) {
  15128. isGw = 2;
  15129. this.courseGroup.group[groupI].works[i].push(_works);
  15130. break;
  15131. }
  15132. }
  15133. if (isGw == 1) {
  15134. _worksStudent[i].push(_works);
  15135. }
  15136. } else {
  15137. _worksStudent[i].push(_works);
  15138. }
  15139. _worksStudent2[i].push(_works);
  15140. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15141. } else if (b[j].type == 2 && a[i].tool[0] == 4) {
  15142. //问卷
  15143. let _work = {
  15144. userid: b[j].userid,
  15145. ateacher: b[j].ateacher,
  15146. wid: b[j].id,
  15147. works: b[j].content,
  15148. sName: b[j].name,
  15149. type: 2,
  15150. ttype:b[j].ttype,
  15151. time: b[j].time,
  15152. score: b[j].score,
  15153. img: b[j].img,
  15154. likesCount: likesCount,
  15155. commentCount: commentCount,
  15156. isLikes: isLikes,
  15157. commentJson: commentJson,
  15158. likeJson:likeJson
  15159. };
  15160. _worksStudent[i].push(_work);
  15161. _worksStudent2[i].push(_work);
  15162. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15163. } else if (b[j].type == 8 && a[i].tool[0] == 45) {
  15164. //选择题
  15165. let _work = {
  15166. userid: b[j].userid,
  15167. ateacher: b[j].ateacher,
  15168. wid: b[j].id,
  15169. works: b[j].content,
  15170. sName: b[j].name,
  15171. type: 8,
  15172. ttype:b[j].ttype,
  15173. time: b[j].time,
  15174. score: b[j].score,
  15175. img: b[j].img,
  15176. likesCount: likesCount,
  15177. commentCount: commentCount,
  15178. isLikes: isLikes,
  15179. commentJson: commentJson,
  15180. likeJson:likeJson
  15181. };
  15182. _worksStudent[i].push(_work);
  15183. _worksStudent2[i].push(_work);
  15184. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15185. } else if (b[j].type == 9 && a[i].tool[0] == 47) {
  15186. //选择题
  15187. let _work = {
  15188. userid: b[j].userid,
  15189. ateacher: b[j].ateacher,
  15190. wid: b[j].id,
  15191. works: b[j].content,
  15192. sName: b[j].name,
  15193. type: 9,
  15194. ttype:b[j].ttype,
  15195. time: b[j].time,
  15196. score: b[j].score,
  15197. img: b[j].img,
  15198. likesCount: likesCount,
  15199. commentCount: commentCount,
  15200. isLikes: isLikes,
  15201. commentJson: commentJson,
  15202. likeJson:likeJson
  15203. };
  15204. _worksStudent[i].push(_work);
  15205. _worksStudent2[i].push(_work);
  15206. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15207. } else if (b[j].type == 10 && a[i].tool[0] == 48) {
  15208. //选择题
  15209. let _work = {
  15210. userid: b[j].userid,
  15211. ateacher: b[j].ateacher,
  15212. wid: b[j].id,
  15213. works: b[j].content,
  15214. sName: b[j].name,
  15215. type: 10,
  15216. ttype:b[j].ttype,
  15217. time: b[j].time,
  15218. score: b[j].score,
  15219. img: b[j].img,
  15220. likesCount: likesCount,
  15221. commentCount: commentCount,
  15222. isLikes: isLikes,
  15223. commentJson: commentJson,
  15224. likeJson:likeJson
  15225. };
  15226. _worksStudent[i].push(_work);
  15227. _worksStudent2[i].push(_work);
  15228. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15229. } else if (b[j].type == 13 && a[i].tool[0] == 52) {
  15230. //选择题
  15231. let _work = {
  15232. userid: b[j].userid,
  15233. ateacher: b[j].ateacher,
  15234. wid: b[j].id,
  15235. works: b[j].content,
  15236. sName: b[j].name,
  15237. type: 13,
  15238. ttype:b[j].ttype,
  15239. time: b[j].time,
  15240. score: b[j].score,
  15241. img: b[j].img,
  15242. likesCount: likesCount,
  15243. commentCount: commentCount,
  15244. isLikes: isLikes,
  15245. commentJson: commentJson,
  15246. likeJson:likeJson
  15247. };
  15248. _worksStudent[i].push(_work);
  15249. _worksStudent2[i].push(_work);
  15250. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15251. } else if (b[j].type == 16 && a[i].tool[0] == 69) {
  15252. //选择题
  15253. let _work = {
  15254. userid: b[j].userid,
  15255. ateacher: b[j].ateacher,
  15256. wid: b[j].id,
  15257. works: b[j].content,
  15258. sName: b[j].name,
  15259. type: 16,
  15260. ttype:b[j].ttype,
  15261. time: b[j].time,
  15262. score: b[j].score,
  15263. img: b[j].img,
  15264. likesCount: likesCount,
  15265. commentCount: commentCount,
  15266. isLikes: isLikes,
  15267. commentJson: commentJson,
  15268. aiCode: b[j].aiCode,
  15269. teacherCode: b[j].teacherCode,
  15270. likeJson:likeJson
  15271. };
  15272. _worksStudent[i].push(_work);
  15273. _worksStudent2[i].push(_work);
  15274. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15275. } else if (b[j].type == 17 && a[i].tool[0] == 70) {
  15276. //英语口语
  15277. let _work = {
  15278. userid: b[j].userid,
  15279. ateacher: b[j].ateacher,
  15280. wid: b[j].id,
  15281. works: b[j].content,
  15282. sName: b[j].name,
  15283. type: 17,
  15284. ttype:b[j].ttype,
  15285. time: b[j].time,
  15286. score: b[j].score,
  15287. img: b[j].img,
  15288. likesCount: likesCount,
  15289. commentCount: commentCount,
  15290. isLikes: isLikes,
  15291. commentJson: commentJson,
  15292. likeJson:likeJson
  15293. };
  15294. _worksStudent[i].push(_work);
  15295. _worksStudent2[i].push(_work);
  15296. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15297. } else if (b[j].type == 14 && a[i].tool[0] == 62) {
  15298. //交互视频
  15299. let _work = {
  15300. userid: b[j].userid,
  15301. ateacher: b[j].ateacher,
  15302. wid: b[j].id,
  15303. works: b[j].content,
  15304. sName: b[j].name,
  15305. type: 14,
  15306. ttype:b[j].ttype,
  15307. time: b[j].time,
  15308. score: b[j].score,
  15309. img: b[j].img,
  15310. likesCount: likesCount,
  15311. commentCount: commentCount,
  15312. isLikes: isLikes,
  15313. commentJson: commentJson,
  15314. likeJson:likeJson
  15315. };
  15316. _worksStudent[i].push(_work);
  15317. _worksStudent2[i].push(_work);
  15318. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15319. } else if (b[j].type == 11 && a[i].tool[0] == 49) {
  15320. let _gindex = JSON.parse(b[j].content);
  15321. if (
  15322. this.groupStudentUid[i][_gindex.groupIndex].indexOf(
  15323. b[j].userid
  15324. ) != -1
  15325. ) {
  15326. let _work = {
  15327. userid: b[j].userid,
  15328. ateacher: b[j].ateacher,
  15329. wid: b[j].id,
  15330. works: _gindex.url,
  15331. sName: b[j].name,
  15332. type: _gindex.type,
  15333. ttype:b[j].ttype,
  15334. time: b[j].time,
  15335. score: b[j].score,
  15336. img: b[j].img,
  15337. likesCount: likesCount,
  15338. commentCount: commentCount,
  15339. isLikes: isLikes,
  15340. commentJson: commentJson,
  15341. likeJson:likeJson
  15342. };
  15343. _worksStudent[i][_gindex.groupIndex].push(_work);
  15344. _worksStudent2[i][_gindex.groupIndex].push(_work);
  15345. }
  15346. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15347. } else if (a[i].tool[0] == 50 && b[j].atool == 50) {
  15348. let _work = {
  15349. userid: b[j].userid,
  15350. ateacher: b[j].ateacher,
  15351. wid: b[j].id,
  15352. works: b[j].content,
  15353. sName: b[j].name ? b[j].name : b[j].userid,
  15354. type: b[j].type == 1 ? 0 : b[j].type == 4 ? 1 : 3,
  15355. ttype:b[j].ttype,
  15356. time: b[j].time,
  15357. score: b[j].score,
  15358. img: b[j].img,
  15359. likesCount: likesCount,
  15360. commentCount: commentCount,
  15361. isLikes: isLikes,
  15362. commentJson: commentJson,
  15363. likeJson:likeJson
  15364. };
  15365. _worksStudent[i].push(_work);
  15366. _worksStudent2[i].push(_work);
  15367. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15368. } else if (a[i].tool[0] == 32 && b[j].atool == 32) {
  15369. let _work = {
  15370. userid: b[j].userid,
  15371. ateacher: b[j].ateacher,
  15372. wid: b[j].id,
  15373. works: b[j].content,
  15374. sName: b[j].name ? b[j].name : b[j].userid,
  15375. type: 12,
  15376. ttype:b[j].ttype,
  15377. time: b[j].time,
  15378. score: b[j].score,
  15379. img: b[j].img,
  15380. likesCount: likesCount,
  15381. commentCount: commentCount,
  15382. isLikes: isLikes,
  15383. commentJson: commentJson,
  15384. likeJson:likeJson
  15385. };
  15386. _worksStudent[i].push(_work);
  15387. _worksStudent2[i].push(_work);
  15388. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15389. } else if (
  15390. a[i].tool[0] == 57 &&
  15391. b[j].atool == 57 &&
  15392. b[j].type == 12
  15393. ) {
  15394. let _work = {
  15395. userid: b[j].userid,
  15396. ateacher: b[j].ateacher,
  15397. wid: b[j].id,
  15398. works: b[j].content,
  15399. sName: b[j].name ? b[j].name : b[j].userid,
  15400. type: 12,
  15401. ttype:b[j].ttype,
  15402. time: b[j].time,
  15403. score: b[j].score,
  15404. img: b[j].img,
  15405. likesCount: likesCount,
  15406. commentCount: commentCount,
  15407. isLikes: isLikes,
  15408. commentJson: commentJson,
  15409. likeJson:likeJson
  15410. };
  15411. _worksStudent[i].push(_work);
  15412. _worksStudent2[i].push(_work);
  15413. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15414. } else if (
  15415. a[i].tool[0] == 57 &&
  15416. b[j].atool == 57 &&
  15417. b[j].type == 15
  15418. ) {
  15419. let _work = {
  15420. userid: b[j].userid,
  15421. ateacher: b[j].ateacher,
  15422. wid: b[j].id,
  15423. works: b[j].content,
  15424. sName: b[j].name ? b[j].name : b[j].userid,
  15425. type: 15,
  15426. ttype:b[j].ttype,
  15427. time: b[j].time,
  15428. score: b[j].score,
  15429. img: b[j].img,
  15430. likesCount: likesCount,
  15431. commentCount: commentCount,
  15432. isLikes: isLikes,
  15433. commentJson: commentJson,
  15434. likeJson:likeJson
  15435. };
  15436. _worksStudent[i].push(_work);
  15437. _worksStudent2[i].push(_work);
  15438. this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
  15439. }
  15440. }
  15441. }
  15442. if (_worksStudent[i] && _worksStudent[i].length) {
  15443. _worksStudent[i] = _worksStudent[i].sort(function (a, b) {
  15444. let jscoreA = a.score ? JSON.parse(a.score).wScore : 0;
  15445. let jscoreB = b.score ? JSON.parse(b.score).wScore : 0;
  15446. var scoreA = parseFloat(jscoreA);
  15447. var scoreB = parseFloat(jscoreB);
  15448. if (scoreA == scoreB) {
  15449. return b.likesCount - a.likesCount;
  15450. }
  15451. return scoreB - scoreA;
  15452. });
  15453. if (this.isGroup) {
  15454. for (
  15455. var groupI = 0;
  15456. groupI < this.courseGroup.group.length;
  15457. groupI++
  15458. ) {
  15459. this.courseGroup.group[groupI].works[i] =
  15460. this.courseGroup.group[groupI].works[i].sort(function (
  15461. a,
  15462. b
  15463. ) {
  15464. let jscoreA = a.score ? JSON.parse(a.score).wScore : 0;
  15465. let jscoreB = b.score ? JSON.parse(b.score).wScore : 0;
  15466. var scoreA = parseFloat(jscoreA);
  15467. var scoreB = parseFloat(jscoreB);
  15468. if (scoreA == scoreB) {
  15469. return b.likesCount - a.likesCount;
  15470. }
  15471. return scoreB - scoreA;
  15472. });
  15473. }
  15474. }
  15475. }
  15476. }
  15477. this.timeWorkList = _worksStudent2;
  15478. for (var i = 0; i < a.length; i++) {
  15479. for (var j = 0; j < b.length; j++) {
  15480. var data = b[j];
  15481. if (i == b[j].tool) {
  15482. if (data.type == 2 || data.type == 8) {
  15483. for (var z = 0; z < this.checkJson[i].length; z++) {
  15484. this.checkJson[i][z].checkPerent = [];
  15485. this.checkJson[i][z].right = Math.round(
  15486. (this.checkJson[i][z].rightPerson.length /
  15487. parseInt(_worksStudent[i].length)) *
  15488. 100
  15489. );
  15490. let aaaa = this.checkJson[i][z];
  15491. for (
  15492. var k = 0;
  15493. k < this.checkJson[i][z].checkCount.length;
  15494. k++
  15495. ) {
  15496. this.checkJson[i][z].checkPerent.push(
  15497. Math.round(
  15498. (this.checkJson[i][z].checkCount[k] /
  15499. parseInt(_worksStudent[i].length)) *
  15500. 100
  15501. )
  15502. );
  15503. }
  15504. }
  15505. } else if (data.type == 9) {
  15506. for (var z = 0; z < this.checkJson[i].length; z++) {
  15507. this.checkJson[i][z].checkPerent = [];
  15508. this.checkJson[i][z].right = Math.round(
  15509. (this.checkJson[i][z].rightPerson.length /
  15510. this.checkJson[i][z].checkPerson.length) *
  15511. 100
  15512. );
  15513. }
  15514. }
  15515. }
  15516. }
  15517. }
  15518. if (this.dialogVisibleGroup && (gindex || gindex === 0)) {
  15519. this.joinGroup(gindex);
  15520. }
  15521. this.worksStudent = _worksStudent;
  15522. this.selectWorksStudent();
  15523. for (let ci = 0; ci < this.isCloseList.length; ci++) {
  15524. this.$nextTick(()=>{
  15525. setTimeout(()=>{
  15526. setTimeout(()=>{
  15527. this.panToolHeight('tool-'+ci);
  15528. }, 500)
  15529. }, 0)
  15530. })
  15531. }
  15532. })
  15533. .catch((err) => {
  15534. console.error(err);
  15535. });
  15536. },
  15537. pngToWhiteBg(file) {
  15538. const _file = file;
  15539. let read = new FileReader();
  15540. read.readAsDataURL(file); // 文件转base64
  15541. return new Promise((resolve, reject) => {
  15542. read.onload = (e) => {
  15543. let img = new Image();
  15544. img.src = e.target.result;
  15545. img.onload = async () => {
  15546. // 生成canvas
  15547. let canvas = document.createElement("canvas");
  15548. let context = canvas.getContext("2d");
  15549. // 绘制图片到canvas上
  15550. canvas.width = img.width;
  15551. canvas.height = img.height;
  15552. // 在canvas绘制前填充白色背景
  15553. context.fillStyle = "#fff";
  15554. context.fillRect(0, 0, canvas.width, canvas.height);
  15555. context.drawImage(img, 0, 0);
  15556. let base64 = canvas.toDataURL(file["type"], 1);
  15557. let newFile = this.dataUrlToFile(base64, _file);
  15558. resolve(newFile);
  15559. };
  15560. };
  15561. });
  15562. },
  15563. dataUrlToFile(dataurl, file) {
  15564. let arr = dataurl.split(","),
  15565. mime = arr[0].match(/:(.*?);/)[1],
  15566. bstr = atob(arr[1]),
  15567. n = bstr.length,
  15568. u8arr = new Uint8Array(n);
  15569. while (n--) {
  15570. u8arr[n] = bstr.charCodeAt(n);
  15571. }
  15572. // return new Blob([u8arr], { type: mime });
  15573. return new File([new Blob([u8arr], { type: mime })], file.name, {
  15574. type: mime,
  15575. });
  15576. },
  15577. async beforeUpload1(event, type, i) {
  15578. // this.$message.success('进入上传')
  15579. var file = "";
  15580. if (type == 5) {
  15581. file = event;
  15582. } else {
  15583. file = event.target.files[0];
  15584. }
  15585. var credentials = {
  15586. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  15587. secretAccessKey: "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",
  15588. }; //秘钥形式的登录上传
  15589. window.AWS.config.update(credentials);
  15590. window.AWS.config.region = "cn-northwest-1"; //设置区域
  15591. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  15592. var _this = this;
  15593. _this.progress = 0;
  15594. _this.proVisible = true;
  15595. _this.isFinishSize = 0;
  15596. _this.isAllSize = (file.size / 1024 / 1024).toFixed(2);
  15597. var b = [
  15598. "DOC",
  15599. "DOCX",
  15600. "DOCM",
  15601. "DOTM",
  15602. "DOTX",
  15603. "PPTX",
  15604. "PPSX",
  15605. "PPT",
  15606. "PPS",
  15607. "PPTM",
  15608. "POTM",
  15609. "PPAM",
  15610. "POTX",
  15611. "PPSM",
  15612. ];
  15613. var excelA = ["XLSX", "XLXB", "XLS", "XLSM"];
  15614. var photoA = [
  15615. "BMP",
  15616. "GIF",
  15617. "PNG",
  15618. "JPEG",
  15619. "JPEG",
  15620. "JPG",
  15621. "TIF",
  15622. "PCX",
  15623. "TGA",
  15624. "EXIF",
  15625. "FPX",
  15626. "SVG",
  15627. "APNG",
  15628. ];
  15629. // if (
  15630. // b.indexOf(
  15631. // file.name
  15632. // .split(".")
  15633. // [file.name.split(".").length - 1].toLocaleUpperCase()
  15634. // ) != -1
  15635. // ) {
  15636. // if (file.size / 1024 / 1024 > 10) {
  15637. // this.$message.error("上传文件大于10兆,请重新选择文件!");
  15638. // return;
  15639. // }
  15640. // } else if (
  15641. // excelA.indexOf(
  15642. // file.name
  15643. // .split(".")
  15644. // [file.name.split(".").length - 1].toLocaleUpperCase()
  15645. // ) != "-1"
  15646. // ) {
  15647. // if (file.size / 1024 / 1024 > 5) {
  15648. // this.$message.error("添加成上传文件大于5兆,请重新选择文件!");
  15649. // return;
  15650. // }
  15651. // }
  15652. if (
  15653. photoA.indexOf(
  15654. file.name
  15655. .split(".")
  15656. [file.name.split(".").length - 1].toLocaleUpperCase()
  15657. ) != -1 &&
  15658. type != 4
  15659. ) {
  15660. // const blob = await imageConversion.compress(file, 0.8)
  15661. file = await this.pngToWhiteBg(file);
  15662. const blob = await imageConversion.compressAccurately(file, 256);
  15663. // const blob = await imageConversion.compressAccurately(file, {type:file.type});
  15664. file = new File([blob], file.name, { type: file.type });
  15665. }
  15666. if (file) {
  15667. var params = {
  15668. Key:
  15669. file.name.split(".")[0] +
  15670. new Date().getTime() +
  15671. "." +
  15672. file.name.split(".")[file.name.split(".").length - 1],
  15673. ContentType: file.type,
  15674. Body: file,
  15675. "Access-Control-Allow-Credentials": "*",
  15676. ACL: "public-read",
  15677. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  15678. var options = {
  15679. // partSize: 2048 * 1024 * 1024,
  15680. partSize: 1024 * 1024 * 1024,
  15681. queueSize: 2,
  15682. leavePartsOnError: true,
  15683. };
  15684. bucket
  15685. .upload(params, options)
  15686. .on("httpUploadProgress", function (evt) {
  15687. //这里可以写进度条
  15688. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  15689. _this.progress = parseInt((evt.loaded / evt.total) * 100);
  15690. _this.isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
  15691. })
  15692. .send(function (err, data) {
  15693. _this.progress = 100;
  15694. _this.isFinishSize = _this.isAllSize;
  15695. setTimeout(() => {
  15696. _this.proVisible = false;
  15697. }, 1000);
  15698. if (err) {
  15699. var a = _this.$refs.upload1.uploadFiles;
  15700. a.splice(a.length - 1, a.length);
  15701. _this.$message.error("上传失败");
  15702. } else {
  15703. // _this.$message.success('上传成功')
  15704. var b = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  15705. var c = [
  15706. "AVI",
  15707. "NAVI",
  15708. "MPEG",
  15709. "ASF",
  15710. "MOV",
  15711. "WMV",
  15712. "3GP",
  15713. "RM",
  15714. "RMVB",
  15715. "FLV",
  15716. "F4V",
  15717. "H.264",
  15718. "H.265",
  15719. "REAL VIDEO",
  15720. "MKV",
  15721. "WebM",
  15722. "HDDVD",
  15723. "MP4",
  15724. "MPG",
  15725. "M4V",
  15726. "MGV",
  15727. "OGV",
  15728. "QTM",
  15729. "STR",
  15730. "AMC",
  15731. "DVX",
  15732. "EVO",
  15733. "DAT",
  15734. "OGG",
  15735. "OGM",
  15736. ];
  15737. if (type == 1) {
  15738. _this.studyJuri[0].cover.push({
  15739. name: file.name,
  15740. url: data.Location,
  15741. uid: file.uid,
  15742. });
  15743. if (
  15744. c.indexOf(
  15745. _this.studyJuri[0].cover[0].url
  15746. .split(".")
  15747. [
  15748. _this.studyJuri[0].cover[0].url.split(".").length - 1
  15749. ].toLocaleUpperCase()
  15750. ) != -1
  15751. ) {
  15752. _this.fileType = 2;
  15753. } else if (
  15754. b.indexOf(
  15755. _this.studyJuri[0].cover[0].url
  15756. .split(".")
  15757. [
  15758. _this.studyJuri[0].cover[0].url.split(".").length - 1
  15759. ].toLocaleUpperCase()
  15760. ) != -1
  15761. ) {
  15762. _this.fileType = 1;
  15763. } else if (
  15764. photoA.indexOf(
  15765. _this.studyJuri[0].cover[0].url
  15766. .split(".")
  15767. [
  15768. _this.studyJuri[0].cover[0].url.split(".").length - 1
  15769. ].toLocaleUpperCase()
  15770. ) != -1
  15771. ) {
  15772. _this.fileType = 0;
  15773. } else {
  15774. _this.fileType = 3;
  15775. }
  15776. _this.imgChange(null, null, type);
  15777. } else if (type == 2) {
  15778. _this.upToolImg = data.Location;
  15779. _this.imgChange(null, null, type);
  15780. _this.addCourseWorks(i);
  15781. } else if (type == 4) {
  15782. _this.addPz("3", data.Location);
  15783. } else if (type == 5) {
  15784. _this.addImgDrawImG(data.Location);
  15785. } else if (type == 6) {
  15786. var _ftype = 1;
  15787. if (
  15788. c.indexOf(
  15789. data.Location.split(".")[
  15790. data.Location.split(".").length - 1
  15791. ].toLocaleUpperCase()
  15792. ) != -1
  15793. ) {
  15794. _ftype = 5;
  15795. } else if (
  15796. b.indexOf(
  15797. data.Location.split(".")[
  15798. data.Location.split(".").length - 1
  15799. ].toLocaleUpperCase()
  15800. ) != -1
  15801. ) {
  15802. _ftype = 4;
  15803. } else {
  15804. _ftype = 1;
  15805. }
  15806. _this.plworkFile.push({
  15807. name: file.name,
  15808. url: data.Location,
  15809. uid: file.uid,
  15810. fileType: _ftype,
  15811. username:
  15812. _this.plworkFile.length > 10
  15813. ? _this.plworkFile.length + 1
  15814. : "0" + (_this.plworkFile.length + 1),
  15815. });
  15816. } else if (type == 7) {
  15817. _this.addCourseWorksGong(i, data.Location, 32);
  15818. } else if (type == 8) {
  15819. _this.addCourseWorksGong(i, data.Location, 57);
  15820. }
  15821. _this.imgChange(null, null, type);
  15822. console.log(data.Location);
  15823. // _this.$message.success('上传成功'+data.Location)
  15824. }
  15825. });
  15826. }
  15827. },
  15828. async beforeUpload3(event, type, i) {
  15829. // this.$message.success('进入上传')
  15830. let file = "";
  15831. let cfindex2 = 0;
  15832. for (var cfindex = 0; cfindex < event.target.files.length; cfindex++) {
  15833. file = event.target.files[cfindex];
  15834. var credentials = {
  15835. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  15836. secretAccessKey: "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",
  15837. }; //秘钥形式的登录上传
  15838. window.AWS.config.update(credentials);
  15839. window.AWS.config.region = "cn-northwest-1"; //设置区域
  15840. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  15841. var _this = this;
  15842. // _this.progress = 0;
  15843. _this.proVisible2 = true;
  15844. var b = [
  15845. "DOC",
  15846. "DOCX",
  15847. "DOCM",
  15848. "DOTM",
  15849. "DOTX",
  15850. "PPTX",
  15851. "PPSX",
  15852. "PPT",
  15853. "PPS",
  15854. "PPTM",
  15855. "POTM",
  15856. "PPAM",
  15857. "POTX",
  15858. "PPSM",
  15859. ];
  15860. var excelA = ["XLSX", "XLXB", "XLS", "XLSM"];
  15861. var photoA = [
  15862. "BMP",
  15863. "GIF",
  15864. "PNG",
  15865. "JPEG",
  15866. "JPG",
  15867. "TIF",
  15868. "PCX",
  15869. "TGA",
  15870. "EXIF",
  15871. "FPX",
  15872. "SVG",
  15873. "APNG",
  15874. ];
  15875. if (
  15876. photoA.indexOf(
  15877. file.name
  15878. .split(".")
  15879. [file.name.split(".").length - 1].toLocaleUpperCase()
  15880. ) != -1 &&
  15881. type != 4
  15882. ) {
  15883. // const blob = await imageConversion.compress(file, 0.8)
  15884. file = await this.pngToWhiteBg(file);
  15885. const blob = await imageConversion.compressAccurately(file, 256);
  15886. // const blob = await imageConversion.compressAccurately(file, {type:file.type});
  15887. file = new File([blob], file.name, { type: file.type });
  15888. }
  15889. if (file) {
  15890. var params = {
  15891. Key:
  15892. file.name.split(".")[0] +
  15893. new Date().getTime() +
  15894. "." +
  15895. file.name.split(".")[file.name.split(".").length - 1],
  15896. ContentType: file.type,
  15897. Body: file,
  15898. "Access-Control-Allow-Credentials": "*",
  15899. ACL: "public-read",
  15900. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  15901. var options = {
  15902. // partSize: 2048 * 1024 * 1024,
  15903. partSize: 1024 * 1024 * 1024,
  15904. queueSize: 2,
  15905. leavePartsOnError: true,
  15906. };
  15907. bucket
  15908. .upload(params, options)
  15909. .on("httpUploadProgress", function (evt) {
  15910. //这里可以写进度条
  15911. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  15912. // _this.progress = parseInt((evt.loaded * 80) / evt.total);
  15913. })
  15914. .send(function (err, data) {
  15915. // _this.progress = 100;
  15916. cfindex2++;
  15917. setTimeout(() => {
  15918. if (
  15919. cfindex2 == event.target.files.length - 1 ||
  15920. cfindex2 > event.target.files.length - 1
  15921. ) {
  15922. _this.proVisible2 = false;
  15923. }
  15924. }, 1000);
  15925. if (err) {
  15926. var a = _this.$refs.upload1.uploadFiles;
  15927. a.splice(a.length - 1, a.length);
  15928. _this.$message.error("上传失败");
  15929. } else {
  15930. // _this.$message.success('上传成功')
  15931. var b = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
  15932. var c = [
  15933. "AVI",
  15934. "NAVI",
  15935. "MPEG",
  15936. "ASF",
  15937. "MOV",
  15938. "WMV",
  15939. "3GP",
  15940. "RM",
  15941. "RMVB",
  15942. "FLV",
  15943. "F4V",
  15944. "H.264",
  15945. "H.265",
  15946. "REAL VIDEO",
  15947. "MKV",
  15948. "WebM",
  15949. "HDDVD",
  15950. "MP4",
  15951. "MPG",
  15952. "M4V",
  15953. "MGV",
  15954. "OGV",
  15955. "QTM",
  15956. "STR",
  15957. "AMC",
  15958. "DVX",
  15959. "EVO",
  15960. "DAT",
  15961. "OGG",
  15962. "OGM",
  15963. ];
  15964. if (type == 1) {
  15965. _this.studyJuri[0].cover.push({
  15966. name: file.name,
  15967. url: data.Location,
  15968. uid: file.uid,
  15969. });
  15970. if (
  15971. c.indexOf(
  15972. _this.studyJuri[0].cover[0].url
  15973. .split(".")
  15974. [
  15975. _this.studyJuri[0].cover[0].url.split(".").length - 1
  15976. ].toLocaleUpperCase()
  15977. ) != -1
  15978. ) {
  15979. _this.fileType = 2;
  15980. } else if (
  15981. b.indexOf(
  15982. _this.studyJuri[0].cover[0].url
  15983. .split(".")
  15984. [
  15985. _this.studyJuri[0].cover[0].url.split(".").length - 1
  15986. ].toLocaleUpperCase()
  15987. ) != -1
  15988. ) {
  15989. _this.fileType = 1;
  15990. } else {
  15991. _this.fileType = 0;
  15992. }
  15993. _this.imgChange(null, null, type);
  15994. } else if (type == 2) {
  15995. _this.upToolImg = data.Location;
  15996. _this.imgChange(null, null, type);
  15997. _this.addCourseWorks(i);
  15998. } else if (type == 4) {
  15999. _this.addPz("3", data.Location);
  16000. } else if (type == 5) {
  16001. _this.addImgDrawImG(data.Location);
  16002. } else if (type == 6) {
  16003. var _ftype = 1;
  16004. if (
  16005. c.indexOf(
  16006. data.Location.split(".")[
  16007. data.Location.split(".").length - 1
  16008. ].toLocaleUpperCase()
  16009. ) != -1
  16010. ) {
  16011. _ftype = 5;
  16012. } else if (
  16013. b.indexOf(
  16014. data.Location.split(".")[
  16015. data.Location.split(".").length - 1
  16016. ].toLocaleUpperCase()
  16017. ) != -1
  16018. ) {
  16019. _ftype = 4;
  16020. } else {
  16021. _ftype = 1;
  16022. }
  16023. _this.plworkFile.push({
  16024. name: file.name,
  16025. url: data.Location,
  16026. uid: file.uid,
  16027. fileType: _ftype,
  16028. username:
  16029. _this.plworkFile.length + 1 > 9
  16030. ? _this.plworkFile.length + 1
  16031. : "0" + (_this.plworkFile.length + 1),
  16032. });
  16033. }
  16034. _this.imgChange(null, null, type);
  16035. console.log(data.Location);
  16036. // _this.$message.success('上传成功'+data.Location)
  16037. }
  16038. });
  16039. }
  16040. }
  16041. },
  16042. beforeUpload2(event, type) {
  16043. var file = event.target.files[0];
  16044. var credentials = {
  16045. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  16046. secretAccessKey: "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",
  16047. }; //秘钥形式的登录上传
  16048. window.AWS.config.update(credentials);
  16049. window.AWS.config.region = "cn-northwest-1"; //设置区域
  16050. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  16051. var _this = this;
  16052. _this.progress = 0;
  16053. _this.proVisible = true;
  16054. if (file) {
  16055. var params = {
  16056. Key:
  16057. file.name.split(".")[0] +
  16058. new Date().getTime() +
  16059. "." +
  16060. file.name.split(".")[file.name.split(".").length - 1],
  16061. ContentType: file.type,
  16062. Body: file,
  16063. "Access-Control-Allow-Credentials": "*",
  16064. ACL: "public-read",
  16065. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  16066. var options = {
  16067. partSize: 2048 * 1024 * 1024,
  16068. queueSize: 2,
  16069. leavePartsOnError: true,
  16070. };
  16071. bucket
  16072. .upload(params, options)
  16073. .on("httpUploadProgress", function (evt) {
  16074. //这里可以写进度条
  16075. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  16076. _this.progress = parseInt((evt.loaded * 80) / evt.total);
  16077. })
  16078. .send(function (err, data) {
  16079. _this.progress = 100;
  16080. setTimeout(() => {
  16081. _this.proVisible = false;
  16082. }, 1000);
  16083. if (err) {
  16084. var a = _this.$refs.upload1.uploadFiles;
  16085. a.splice(a.length - 1, a.length);
  16086. _this.$message.error("上传失败");
  16087. } else {
  16088. if (type == 2) {
  16089. _this.studyJuri[0].upVedio.push({
  16090. name: file.name,
  16091. url: data.Location,
  16092. uid: file.uid,
  16093. });
  16094. _this.imgChange(null, null, type);
  16095. } else if (type == 3) {
  16096. _this.studyJuri[0].upFile.push({
  16097. name: file.name,
  16098. url: data.Location,
  16099. uid: file.uid,
  16100. });
  16101. _this.imgChange(null, null, type);
  16102. }
  16103. console.log(data.Location);
  16104. }
  16105. });
  16106. }
  16107. },
  16108. allScrell() {
  16109. window.parent.postMessage({ allScreen: this.screenType }, "*");
  16110. },
  16111. nextOrpreSteps(t) {
  16112. if (this.IsFollow && this.tType == 2) {
  16113. this.$message.error("已经开启跟随模式,请认真跟堂听讲");
  16114. return;
  16115. }
  16116. var b = this.chapInfoList.length - 1;
  16117. if (t == 0) {
  16118. if (this.courseType == 0) {
  16119. if (this.taskCount == 0) {
  16120. // console.log(this.navList[b].task[this.navList[b].task.length - 1].isLook);
  16121. if (this.IsLookOpen) {
  16122. if (
  16123. !this.navList[b].task[this.navList[b].task.length - 1].isLook
  16124. ) {
  16125. if (
  16126. this.courseDetail.userid != this.userid &&
  16127. (!this.courseDetail.course_teacher ||
  16128. (this.courseDetail.course_teacher &&
  16129. this.courseDetail.course_teacher.indexOf(this.userid) == -1))
  16130. ) {
  16131. this.$message.error("任务未解锁");
  16132. } else {
  16133. this.$message.error("上一任务未解锁");
  16134. }
  16135. return;
  16136. }
  16137. }
  16138. this.navList[this.courseType].isOpen = false;
  16139. this.courseType = b;
  16140. this.taskCount =
  16141. this.chapInfoList[this.courseType].chapterInfo[0].taskJson
  16142. .length - 1;
  16143. this.navList[this.courseType].isOpen = true;
  16144. } else {
  16145. this.taskCount--;
  16146. }
  16147. } else {
  16148. if (this.taskCount == 0) {
  16149. this.navList[this.courseType].isOpen = false;
  16150. this.courseType--;
  16151. this.taskCount =
  16152. this.chapInfoList[this.courseType].chapterInfo[0].taskJson
  16153. .length - 1;
  16154. this.navList[this.courseType].isOpen = true;
  16155. } else {
  16156. this.taskCount--;
  16157. }
  16158. }
  16159. } else {
  16160. if (this.courseType == b) {
  16161. if (
  16162. this.taskCount ==
  16163. this.chapInfoList[this.courseType].chapterInfo[0].taskJson.length -
  16164. 1
  16165. ) {
  16166. this.navList[this.courseType].isOpen = false;
  16167. this.courseType = 0;
  16168. this.taskCount = 0;
  16169. this.navList[this.courseType].isOpen = true;
  16170. } else {
  16171. var bbb = parseInt(this.taskCount) + 1;
  16172. if (
  16173. !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[bbb]
  16174. .isLook &&
  16175. this.courseDetail.userid != this.userid &&
  16176. (!this.courseDetail.course_teacher ||
  16177. (this.courseDetail.course_teacher &&
  16178. this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
  16179. this.IsLookOpen
  16180. ) {
  16181. this.$message.error("任务未解锁");
  16182. return;
  16183. }
  16184. this.taskCount++;
  16185. if (this.IsLookOpen) {
  16186. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  16187. this.taskCount
  16188. ].isLook = true;
  16189. this.addCourseState(3);
  16190. }
  16191. }
  16192. } else {
  16193. if (
  16194. this.taskCount ==
  16195. this.chapInfoList[this.courseType].chapterInfo[0].taskJson.length -
  16196. 1
  16197. ) {
  16198. var bbb = parseInt(this.courseType) + 1;
  16199. if (
  16200. !this.chapInfoList[bbb].chapterInfo[0].taskJson[0].isLook &&
  16201. this.courseDetail.userid != this.userid &&
  16202. (!this.courseDetail.course_teacher ||
  16203. (this.courseDetail.course_teacher &&
  16204. this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
  16205. this.IsLookOpen
  16206. ) {
  16207. this.$message.error("任务未解锁");
  16208. return;
  16209. }
  16210. this.navList[this.courseType].isOpen = false;
  16211. this.courseType++;
  16212. this.taskCount = 0;
  16213. this.navList[this.courseType].isOpen = true;
  16214. } else {
  16215. var bbb = parseInt(this.taskCount) + 1;
  16216. if (
  16217. !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[bbb]
  16218. .isLook &&
  16219. this.courseDetail.userid != this.userid &&
  16220. (!this.courseDetail.course_teacher ||
  16221. (this.courseDetail.course_teacher &&
  16222. this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
  16223. this.IsLookOpen
  16224. ) {
  16225. this.$message.error("任务未解锁");
  16226. return;
  16227. }
  16228. this.taskCount++;
  16229. }
  16230. if (this.IsLookOpen) {
  16231. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  16232. this.taskCount
  16233. ].isLook = true;
  16234. this.addCourseState(3);
  16235. }
  16236. }
  16237. // if (
  16238. // this.taskCount ==
  16239. // this.chapInfo.chapterInfo[0].taskJson.length - 1
  16240. // ) {
  16241. // this.taskCount = this.chapInfo.chapterInfo[0].taskJson.length - 1;
  16242. // } else {
  16243. // this.taskCount++;
  16244. // }
  16245. }
  16246. document.scrollingElement.scrollTop = 0;
  16247. this.showType = 7;
  16248. this.navId = this.navList[this.courseType].task[this.taskCount].id;
  16249. // if (this.vedio[this.taskCount].length > 0) {
  16250. // var a =
  16251. // document.getElementsByClassName("box_course")[this.taskCount]
  16252. // .offsetHeight;
  16253. // document.getElementsByClassName("vedioList")[
  16254. // this.taskCount
  16255. // ].style.height = a + "px";
  16256. // document.getElementsByClassName("navBox")[this.taskCount].style.height =
  16257. // a - 40 + "px";
  16258. // }
  16259. this.isNoHomeWork = false;
  16260. (this.studyJuri = [
  16261. {
  16262. content: "",
  16263. cover: [],
  16264. upVedio: [],
  16265. upFile: [],
  16266. },
  16267. ]),
  16268. (this.radio = []);
  16269. this.isClickNav = "";
  16270. this.selectPz();
  16271. this.getHomeWork();
  16272. this.getCourseDetail(2);
  16273. this.$forceUpdate();
  16274. },
  16275. openTask(s, n, i) {
  16276. if (this.IsFollow && this.tType == 2) {
  16277. this.$message.error("已经开启跟随模式,请认真跟堂听讲");
  16278. return;
  16279. }
  16280. if (this.IsLookOpen) {
  16281. if (
  16282. !this.chapInfoList[s].chapterInfo[0].taskJson[n].isLook &&
  16283. this.courseDetail.userid != this.userid &&
  16284. (!this.courseDetail.course_teacher ||
  16285. (this.courseDetail.course_teacher &&
  16286. this.courseDetail.course_teacher.indexOf(this.userid) == -1))
  16287. ) {
  16288. this.$message.error("任务未解锁");
  16289. return;
  16290. }
  16291. if (this.courseType == s && this.taskCount != n && n > this.taskCount) {
  16292. if (
  16293. !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[n - 1]
  16294. .isLook
  16295. ) {
  16296. this.$message.error("上一任务未解锁");
  16297. return;
  16298. }
  16299. } else if (s > this.courseType) {
  16300. if (n > 0) {
  16301. if (!this.chapInfoList[s].chapterInfo[0].taskJson[n - 1].isLook) {
  16302. this.$message.error("上一任务未解锁");
  16303. return;
  16304. }
  16305. } else {
  16306. if (
  16307. !this.chapInfoList[s - 1].chapterInfo[0].taskJson[
  16308. this.chapInfoList[s - 1].chapterInfo[0].taskJson.length - 1
  16309. ].isLook
  16310. ) {
  16311. this.$message.error("上一任务未解锁");
  16312. return;
  16313. }
  16314. }
  16315. }
  16316. }
  16317. if (this.navList[s].task[n].isOpen == true) {
  16318. this.navList[s].task[n].isOpen = !this.navList[s].task[n].isOpen;
  16319. return;
  16320. }
  16321. let flag = this.courseType==s;
  16322. this.courseType = s;
  16323. this.navId = i;
  16324. this.taskCount = n;
  16325. this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,navId:this.navId}})
  16326. this.navList[this.courseType].task[this.taskCount].isOpen =
  16327. !this.navList[this.courseType].task[this.taskCount].isOpen;
  16328. if (this.IsLookOpen) {
  16329. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  16330. this.taskCount
  16331. ].isLook = true;
  16332. this.addCourseState(3);
  16333. }
  16334. for (var ci = 0; ci < this.isCloseList.length; ci++) {
  16335. this.isCloseList[ci].isClose = 0;
  16336. this.isCloseList[ci].isCloseBoolean = false;
  16337. this.$nextTick(()=>{
  16338. setTimeout(()=>{
  16339. setTimeout(()=>{
  16340. this.panToolHeight('tool-'+ci);
  16341. }, 0)
  16342. }, 0)
  16343. })
  16344. }
  16345. this.showType = 7;
  16346. this.isNoHomeWork = false;
  16347. (this.studyJuri = [
  16348. {
  16349. content: "",
  16350. cover: [],
  16351. upVedio: [],
  16352. upFile: [],
  16353. },
  16354. ]),
  16355. (this.radio = []);
  16356. document.scrollingElement.scrollTop = 0;
  16357. // setTimeout(() => {
  16358. // let a = document.getElementById(i);
  16359. // if (a.offsetTop - 110 == 0) {
  16360. // window.scrollTo(0, 0);
  16361. // } else {
  16362. // window.scrollTo(0, a.offsetTop);
  16363. // }
  16364. // }, 0);
  16365. for (var z = 0; z < this.navList.length; z++) {
  16366. for (var q = 0; q < this.navList[z].task.length; q++) {
  16367. for (var w = 0; w < this.navList[z].task[q].tool.length; w++) {
  16368. this.navList[z].task[q].tool[w].isTool = false;
  16369. }
  16370. }
  16371. }
  16372. this.selectPz();
  16373. this.getHomeWork();
  16374. this.getCourseDetail(2);
  16375. if(flag){
  16376. this.insertMemorandum(`进入<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
  16377. }else{
  16378. this.insertMemorandum(`进入<span class="variable">阶段${s+1}${this.navList[s].dyName?':'+this.navList[s].dyName:''}</span>→<span class="variable">任务${n+1}${this.navList[s].task[n].taskName?':'+this.navList[s].task[n].taskName:''}</span>`)
  16379. }
  16380. },
  16381. get(i) {
  16382. if (this.IsFollow && this.tType == 2) {
  16383. this.$message.error("已经开启跟随模式,请认真跟堂听讲");
  16384. return;
  16385. }
  16386. // for(var k=0;k<this.navList.length;k++){
  16387. // this.navList[k].isOpen = false;
  16388. // }
  16389. // this.navList[i].isOpen = true;
  16390. this.navList[i].isOpen = !this.navList[i].isOpen;
  16391. if (this.navList[i].isOpen) {
  16392. this.openTask(i, 0, i + "-0");
  16393. }
  16394. },
  16395. addQuestion() {
  16396. this.answerList.push({
  16397. answerTitle: this.answerQ,
  16398. answer: this.questionAnswer,
  16399. });
  16400. let params = [
  16401. {
  16402. uid: this.userid,
  16403. cid: this.id,
  16404. stage: this.courseType,
  16405. task: this.taskCount,
  16406. tool: this.toolindex,
  16407. content: JSON.stringify(this.answerList),
  16408. type: 3,
  16409. },
  16410. ];
  16411. this.ajax
  16412. .post(this.$store.state.api + "addCourseWorks", params)
  16413. .then((res) => {
  16414. this.$message({
  16415. message: "提交成功",
  16416. type: "success",
  16417. });
  16418. this.answerList = [];
  16419. this.answerDialogVisible = false;
  16420. this.selectStudent();
  16421. this.selectSWorks();
  16422. this.selectSLook();
  16423. })
  16424. .catch((err) => {
  16425. this.$message.error("提交失败");
  16426. console.error(err);
  16427. });
  16428. },
  16429. addQuestionTeacher() {
  16430. this.answerList.push({
  16431. answerTitle: this.answerQ,
  16432. answer: this.questionAnswer,
  16433. });
  16434. let params = [
  16435. {
  16436. uid: this.sStudent.userid,
  16437. cid: this.id,
  16438. stage: this.courseType,
  16439. task: this.taskCount,
  16440. tool: this.toolindex,
  16441. content: JSON.stringify(this.answerList),
  16442. type: 3,
  16443. ateacher: this.userid,
  16444. },
  16445. ];
  16446. this.ajax
  16447. .post(this.$store.state.api + "addCourseWorksTeacher", params)
  16448. .then((res) => {
  16449. this.$message({
  16450. message: "提交成功",
  16451. type: "success",
  16452. });
  16453. this.answerList = [];
  16454. this.questionAnswer = "";
  16455. this.answerDialogVisibleTeacher = false;
  16456. this.selectStudent();
  16457. this.selectSWorks();
  16458. this.selectSLook();
  16459. })
  16460. .catch((err) => {
  16461. this.$message.error("提交失败");
  16462. console.error(err);
  16463. });
  16464. },
  16465. refreshCourse() {
  16466. // window.location.reload();
  16467. this.navList = [];
  16468. this.getCourseDetail(1);
  16469. },
  16470. getCourseDetail(type, gindex) {
  16471. let loading;
  16472. if (type != 2) {
  16473. loading = this.$loading.service({
  16474. background: "rgba(255, 255, 255, 0.7)",
  16475. target: document.querySelector(".student_table"),
  16476. });
  16477. }
  16478. this.downLoading = false
  16479. // this.navList[0].isOpen = false;
  16480. // this.navList[this.courseType].isOpen = true;
  16481. // this.courseType = this.courseTypeLine;
  16482. // this.navId = this.navList[this.courseType].task[this.taskCount].id;
  16483. let params = {
  16484. courseId: this.id,
  16485. };
  16486. this.ajax
  16487. .get(this.$store.state.api + "selectCourseDetail3", params)
  16488. .then((res) => {
  16489. if (type != 2) {
  16490. loading.close();
  16491. if (
  16492. this.courseType >
  16493. JSON.parse(res.data[0][0].chapters).length - 1
  16494. ) {
  16495. this.courseType = JSON.parse(res.data[0][0].chapters).length - 1;
  16496. }
  16497. var a = JSON.parse(res.data[0][0].chapters)[this.courseType]
  16498. .chapterInfo[0].taskJson;
  16499. var b = [
  16500. "AVI",
  16501. "NAVI",
  16502. "MPEG",
  16503. "ASF",
  16504. "MOV",
  16505. "WMV",
  16506. "3GP",
  16507. "RM",
  16508. "RMVB",
  16509. "FLV",
  16510. "F4V",
  16511. "H.264",
  16512. "H.265",
  16513. "REAL VIDEO",
  16514. "MKV",
  16515. "WebM",
  16516. "HDDVD",
  16517. "MP4",
  16518. "MPG",
  16519. "M4V",
  16520. "MGV",
  16521. "OGV",
  16522. "QTM",
  16523. "STR",
  16524. "AMC",
  16525. "DVX",
  16526. "EVO",
  16527. "DAT",
  16528. "OGG",
  16529. "OGM",
  16530. "MP3",
  16531. ];
  16532. let _chapterData = [];
  16533. for (var i = 0; i < a.length; i++) {
  16534. var c = a[i].chapterData;
  16535. this.vedio[i] = [];
  16536. this.textList[i] = [];
  16537. this.lineList[i] = [];
  16538. this.chapToolList[i] = [];
  16539. this.file[i] = [];
  16540. this.fileC[i] = [];
  16541. _chapterData[i] = c.filter((el) => {
  16542. return el.type != 12;
  16543. });
  16544. this.fileC[i] = c.filter((el) => {
  16545. return el.type == 12;
  16546. });
  16547. // else if (c[j].type == 12) {
  16548. // this.fileC[i].push(c[j]);
  16549. // }
  16550. for (var j = 0; j < c.length; j++) {
  16551. if (c[j].type == 7) {
  16552. this.chapToolList[i].push(c[j]);
  16553. } else if (c[j].type == 8 || c[j].type == 14) {
  16554. this.lineList[i].push(c[j]);
  16555. } else if (c[j].type == 6) {
  16556. this.textList[i].push(c[j]);
  16557. } else {
  16558. if (
  16559. b.indexOf(
  16560. c[j].url
  16561. .split(".")
  16562. [c[j].url.split(".").length - 1].toLocaleUpperCase()
  16563. ) != -1
  16564. ) {
  16565. this.vedio[i].push(c[j]);
  16566. } else {
  16567. this.file[i].push(c[j]);
  16568. }
  16569. }
  16570. }
  16571. var d = JSON.parse(JSON.stringify(this.playerOptions));
  16572. d.sources[0].src =
  16573. this.vedio[i].length > 0 ? this.vedio[i][0].url : this.mr;
  16574. this.playerO[i] = d;
  16575. }
  16576. this.courseDetail = res.data[0][0];
  16577. this.tcid = this.arrayToArray(
  16578. this.courseDetail.juri ? this.courseDetail.juri.split(",") : [],
  16579. this.tcid2 ? this.tcid2.split(",") : []
  16580. ).join(",");
  16581. this.evalua = res.data[0][0].evaId;
  16582. this.chapInfo = JSON.parse(this.courseDetail.chapters)[
  16583. this.courseType
  16584. ];
  16585. this.chapInfoList = JSON.parse(this.courseDetail.chapters);
  16586. if (this.tcid && res.data[1].length) {
  16587. let _inviteA = [];
  16588. for (var ik = 0; ik < res.data[1].length; ik++) {
  16589. _inviteA.push({
  16590. cid: res.data[1][ik].classid,
  16591. ic: res.data[1][ik].code,
  16592. });
  16593. }
  16594. for (var ik = 0; ik < _inviteA.length; ik++) {
  16595. if (
  16596. this.arrayToArray(
  16597. _inviteA[ik].cid.split(","),
  16598. this.tcid.split(",")
  16599. ).length
  16600. ) {
  16601. this.inviteCode = _inviteA[ik].ic;
  16602. break;
  16603. }
  16604. }
  16605. }
  16606. for (var l = 0; l < this.chapInfoList.length; l++) {
  16607. var w = this.chapInfoList[l].chapterInfo[0].taskJson;
  16608. for (var m = 0; m < w.length; m++) {
  16609. w[m].id = l + "-" + m;
  16610. }
  16611. }
  16612. let taskCount = 0;
  16613. if (
  16614. _chapterData[taskCount].length &&
  16615. _chapterData[taskCount][0].type == 2
  16616. ) {
  16617. this.showType = 0;
  16618. this.pptImgUrl1 = _chapterData[taskCount][0].url;
  16619. } else {
  16620. if (_chapterData[taskCount].length > 0) {
  16621. let _url = _chapterData[taskCount][0].url;
  16622. if (
  16623. _chapterData[taskCount][0].type == 8 ||
  16624. _chapterData[taskCount][0].type == 14
  16625. ) {
  16626. this.showType = 2;
  16627. if (
  16628. _url.indexOf("https://") == -1 &&
  16629. _url.indexOf("http://") == -1
  16630. ) {
  16631. _url = "https://" + _url;
  16632. }
  16633. this.pptImgUrl1 = _url;
  16634. } else if (_chapterData[taskCount][0].type == 3) {
  16635. if (
  16636. _url
  16637. .split(".")
  16638. [_url.split(".").length - 1].toLocaleUpperCase() == "PDF"
  16639. ) {
  16640. this.showType = 3;
  16641. this.pptImgUrl1 = _url;
  16642. } else if (
  16643. this.isAssetTypeAnImage(
  16644. _url
  16645. .split(".")
  16646. [_url.split(".").length - 1].toLocaleLowerCase()
  16647. )
  16648. ) {
  16649. this.showType = 4;
  16650. this.pptImgUrl1 = _url;
  16651. } else {
  16652. this.showType = 2;
  16653. this.pptImgUrl1 =
  16654. "https://view.officeapps.live.com/op/view.aspx?src=" +
  16655. encodeURIComponent(_url);
  16656. }
  16657. } else if (_chapterData[taskCount][0].type == 13) {
  16658. this.showType = 4;
  16659. this.pptImgUrl1 = _url;
  16660. } else if (_chapterData[taskCount][0].type == 6) {
  16661. this.showType = 1;
  16662. this.text = this.textList[taskCount][0];
  16663. }
  16664. }
  16665. }
  16666. this.isClickNav = 0;
  16667. if (
  16668. !_chapterData[taskCount].length ||
  16669. _chapterData[taskCount][0].type == 12
  16670. ) {
  16671. this.isClickNav = "";
  16672. this.showType = "";
  16673. }
  16674. this.vChapterData = _chapterData;
  16675. } else {
  16676. this.showType = 0;
  16677. var a = JSON.parse(res.data[0][0].chapters)[this.courseType]
  16678. .chapterInfo[0].taskJson;
  16679. var b = [
  16680. "AVI",
  16681. "NAVI",
  16682. "MPEG",
  16683. "ASF",
  16684. "MOV",
  16685. "WMV",
  16686. "3GP",
  16687. "RM",
  16688. "RMVB",
  16689. "FLV",
  16690. "F4V",
  16691. "H.264",
  16692. "H.265",
  16693. "REAL VIDEO",
  16694. "MKV",
  16695. "WebM",
  16696. "HDDVD",
  16697. "MP4",
  16698. "MPG",
  16699. "M4V",
  16700. "MGV",
  16701. "OGV",
  16702. "QTM",
  16703. "STR",
  16704. "AMC",
  16705. "DVX",
  16706. "EVO",
  16707. "DAT",
  16708. "OGG",
  16709. "OGM",
  16710. "MP3",
  16711. ];
  16712. let _chapterData = [];
  16713. for (var i = 0; i < a.length; i++) {
  16714. var c = a[i].chapterData;
  16715. this.vedio[i] = [];
  16716. this.textList[i] = [];
  16717. this.lineList[i] = [];
  16718. this.chapToolList[i] = [];
  16719. this.file[i] = [];
  16720. this.fileC[i] = [];
  16721. _chapterData[i] = c.filter((el) => {
  16722. return el.type != 12;
  16723. });
  16724. this.fileC[i] = c.filter((el) => {
  16725. return el.type == 12;
  16726. });
  16727. for (var j = 0; j < c.length; j++) {
  16728. if (c[j].type == 7) {
  16729. this.chapToolList[i].push(c[j]);
  16730. } else if (c[j].type == 8 || c[j].type == 14) {
  16731. this.lineList[i].push(c[j]);
  16732. } else if (c[j].type == 6) {
  16733. this.textList[i].push(c[j]);
  16734. } else {
  16735. if (
  16736. b.indexOf(
  16737. c[j].url
  16738. .split(".")
  16739. [c[j].url.split(".").length - 1].toLocaleUpperCase()
  16740. ) != -1
  16741. ) {
  16742. this.vedio[i].push(c[j]);
  16743. } else {
  16744. this.file[i].push(c[j]);
  16745. }
  16746. }
  16747. }
  16748. var d = JSON.parse(JSON.stringify(this.playerOptions));
  16749. d.sources[0].src =
  16750. this.vedio[i].length > 0 ? this.vedio[i][0].url : this.mr;
  16751. this.playerO[i] = d;
  16752. }
  16753. let taskCount = 0;
  16754. if (
  16755. _chapterData[taskCount].length &&
  16756. _chapterData[taskCount][0].type == 2
  16757. ) {
  16758. this.showType = 0;
  16759. this.pptImgUrl1 = _chapterData[taskCount][0].url;
  16760. } else {
  16761. if (_chapterData[taskCount].length > 0) {
  16762. let _url = _chapterData[taskCount][0].url;
  16763. if (
  16764. _chapterData[taskCount][0].type == 8 ||
  16765. _chapterData[taskCount][0].type == 14
  16766. ) {
  16767. this.showType = 2;
  16768. if (
  16769. _url.indexOf("https://") == -1 &&
  16770. _url.indexOf("http://") == -1
  16771. ) {
  16772. _url = "https://" + _url;
  16773. }
  16774. this.pptImgUrl1 = _url;
  16775. } else if (_chapterData[taskCount][0].type == 3) {
  16776. if (
  16777. _url
  16778. .split(".")
  16779. [_url.split(".").length - 1].toLocaleUpperCase() == "PDF"
  16780. ) {
  16781. this.showType = 3;
  16782. this.pptImgUrl1 = _url;
  16783. } else if (
  16784. this.isAssetTypeAnImage(
  16785. _url
  16786. .split(".")
  16787. [_url.split(".").length - 1].toLocaleLowerCase()
  16788. )
  16789. ) {
  16790. this.showType = 4;
  16791. this.pptImgUrl1 = _url;
  16792. } else {
  16793. this.showType = 2;
  16794. this.pptImgUrl1 =
  16795. "https://view.officeapps.live.com/op/view.aspx?src=" +
  16796. encodeURIComponent(_url);
  16797. }
  16798. } else if (_chapterData[taskCount][0].type == 13) {
  16799. this.showType = 4;
  16800. this.pptImgUrl1 = _url;
  16801. } else if (_chapterData[taskCount][0].type == 6) {
  16802. this.showType = 1;
  16803. this.text = this.textList[taskCount][0];
  16804. }
  16805. }
  16806. }
  16807. this.isClickNav = 0;
  16808. if (
  16809. !_chapterData[taskCount].length ||
  16810. _chapterData[taskCount][0].type == 12
  16811. ) {
  16812. this.isClickNav = "";
  16813. this.showType = "";
  16814. }
  16815. this.vChapterData = _chapterData;
  16816. this.$forceUpdate();
  16817. }
  16818. // else {
  16819. // this.courseDetail = res.data[0][0];
  16820. // this.chapInfoList = JSON.parse(this.courseDetail.chapters);
  16821. // }
  16822. let _this = this;
  16823. if (_this.timer) {
  16824. clearInterval(_this.timer);
  16825. _this.timer = null;
  16826. }
  16827. if (_this.tcid) {
  16828. _this.getCourseGroup(gindex);
  16829. } else {
  16830. _this.selectSWorks(gindex);
  16831. }
  16832. _this.selectStudent();
  16833. _this.selectSLook();
  16834. _this.getPick();
  16835. if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
  16836. _this.setCTask();
  16837. }
  16838. if (_this.dialogVisibleGroup) {
  16839. _this.groupJson =
  16840. _this.chapInfoList[_this.courseType].chapterInfo[0].taskJson[
  16841. _this.taskCount
  16842. ].toolChoose[_this.toolindex].groupJson;
  16843. }
  16844. _this.$nextTick(() => {
  16845. setTimeout(() => {
  16846. _this.checkEva();
  16847. }, 1000);
  16848. });
  16849. _this.timer = setInterval(function () {
  16850. // _this.getCourseDetail(2);
  16851. if (_this.tcid) {
  16852. _this.getCourseGroup(gindex);
  16853. } else {
  16854. _this.selectSWorks(gindex);
  16855. }
  16856. _this.selectStudent();
  16857. _this.selectSLook();
  16858. _this.getPick();
  16859. _this.getSplitScreenData();//获取分屏数据
  16860. if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
  16861. _this.setCTask();
  16862. }
  16863. if (_this.dialogVisibleGroup) {
  16864. _this.groupJson =
  16865. _this.chapInfoList[_this.courseType].chapterInfo[0].taskJson[
  16866. _this.taskCount
  16867. ].toolChoose[_this.toolindex].groupJson;
  16868. }
  16869. if (_this.tType == 4 || _this.ispzType == 4) {
  16870. _this.selectPz();
  16871. }
  16872. }, 5000);
  16873. _this.$nextTick(function () {
  16874. setTimeout(() => {
  16875. // var a =
  16876. // document.getElementsByClassName("box_course")[0].offsetHeight;
  16877. // document.getElementsByClassName("vedioList")[0].style.height =
  16878. // a + "px";
  16879. // document.getElementsByClassName("navBox")[0].style.height =
  16880. // a - 40 + "px";
  16881. // if (_this.vedio[_this.taskCount].length > 0) {
  16882. // _this.vedioTime = [];
  16883. // for (var i = 0; i < _this.vedio[_this.taskCount].length; i++) {
  16884. // _this.vedioTime[i] = document.getElementsByClassName(
  16885. // "vjs-duration-display"
  16886. // )[i].textContent;
  16887. // }
  16888. // }
  16889. }, 1000);
  16890. });
  16891. })
  16892. .catch((err) => {
  16893. loading.close();
  16894. console.error(err);
  16895. });
  16896. },
  16897. getCourseGroup(gindex) {
  16898. let params = {
  16899. cid: this.id,
  16900. classid: this.tcid ? this.tcid : "1",
  16901. };
  16902. this.ajax
  16903. .get(this.$store.state.api + "getCourseGroup", params)
  16904. .then((res) => {
  16905. if (res.data && res.data[0].length) {
  16906. if (!this.isGroup) {
  16907. let courseGroup = JSON.parse(res.data[0][0].group);
  16908. courseGroup.group = courseGroup.group.filter((el) => {
  16909. el.works = [];
  16910. return el;
  16911. });
  16912. if (courseGroup.isopen == 2) {
  16913. this.isGroup = false;
  16914. this.selectSWorks(gindex);
  16915. return;
  16916. }
  16917. this.courseGroup = courseGroup;
  16918. let groupPerson = res.data[1];
  16919. let group = JSON.parse(res.data[0][0].group).group;
  16920. let courseGroupStudent = {};
  16921. let courseGroupStudentUid = {};
  16922. for (var i = 0; i < group.length; i++) {
  16923. courseGroupStudent[group[i].id] = [];
  16924. courseGroupStudentUid[group[i].id] = [];
  16925. for (var j = 0; j < groupPerson.length; j++) {
  16926. if (groupPerson[j].groupCid == group[i].id) {
  16927. courseGroupStudent[group[i].id].push(groupPerson[j]);
  16928. courseGroupStudentUid[group[i].id].push(
  16929. groupPerson[j].userid
  16930. );
  16931. }
  16932. }
  16933. }
  16934. this.courseGroupStudent = courseGroupStudent;
  16935. this.courseGroupStudentUid = courseGroupStudentUid;
  16936. }
  16937. if (this.courseGroup.isopen == 2) {
  16938. this.isGroup = false;
  16939. } else {
  16940. this.isGroup = true;
  16941. }
  16942. this.selectSWorks(gindex);
  16943. } else {
  16944. this.selectSWorks(gindex);
  16945. this.isGroup = false;
  16946. }
  16947. })
  16948. .catch((err) => {
  16949. // this.$message.error("网络不佳");
  16950. console.error(err);
  16951. });
  16952. },
  16953. setOperationTime() {
  16954. let _this = this;
  16955. if (_this.opertimer) {
  16956. clearInterval(_this.opertimer);
  16957. _this.opertimer = null;
  16958. }
  16959. _this.opertimer = setInterval(() => {
  16960. _this.setoTime("600");
  16961. }, 600000);
  16962. },
  16963. setoTime(time) {
  16964. let params = [
  16965. {
  16966. uid: this.userid,
  16967. cid: this.id,
  16968. type: "2",
  16969. time: time,
  16970. },
  16971. ];
  16972. this.ajax
  16973. .post(this.$store.state.api + "addOperationTimeT2", params)
  16974. .then((res) => {})
  16975. .catch((err) => {
  16976. console.error(err);
  16977. });
  16978. },
  16979. addPz(type, content) {
  16980. if (type == "1" && this.pzConText == "") {
  16981. this.$message.error("评论不能为空!");
  16982. return;
  16983. }
  16984. let params = [
  16985. {
  16986. cid: this.id,
  16987. uid: this.userid,
  16988. s: this.courseType,
  16989. t: this.taskCount,
  16990. c: type == "1" ? this.pzConText : content,
  16991. type: type,
  16992. },
  16993. ];
  16994. this.ajax
  16995. .post(this.$store.state.api + "addPz2", params)
  16996. .then((res) => {
  16997. this.$message({
  16998. message: "添加成功",
  16999. type: "success",
  17000. });
  17001. this.pzConText = "";
  17002. this.addPzDialog = false;
  17003. this.selectPz();
  17004. this.insertMemorandum(`使用<span class="btn">评论</span>功能,添加评论`)
  17005. })
  17006. .catch((err) => {
  17007. this.$message.error("添加失败");
  17008. console.error(err);
  17009. });
  17010. },
  17011. setReplyIndex(id, i) {
  17012. this.replyIndex = i;
  17013. this.replyPid = id;
  17014. this.replyDialogVisible = true;
  17015. },
  17016. addHf() {
  17017. if (this.reply == "") {
  17018. this.$message.error("回复不能为空!");
  17019. return;
  17020. }
  17021. let params = [
  17022. {
  17023. cid: this.id,
  17024. uid: this.userid,
  17025. s: this.courseType,
  17026. t: this.taskCount,
  17027. type: "1",
  17028. ct: 2,
  17029. pid: this.replyPid,
  17030. c: this.reply,
  17031. },
  17032. ];
  17033. this.ajax
  17034. .post(this.$store.state.api + "addHf", params)
  17035. .then((res) => {
  17036. this.reply = "";
  17037. this.$message({
  17038. message: "回复成功",
  17039. type: "success",
  17040. });
  17041. this.replyDialogVisible = false;
  17042. this.selectPz();
  17043. })
  17044. .catch((err) => {
  17045. this.$message.error("回复失败");
  17046. console.error(err);
  17047. });
  17048. },
  17049. deletePz(id) {
  17050. this.$confirm("确定删除此评论吗?", "提示", {
  17051. confirmButtonText: "确定",
  17052. cancelButtonText: "取消",
  17053. type: "warning",
  17054. })
  17055. .then(() => {
  17056. let params = [
  17057. {
  17058. id: id,
  17059. },
  17060. ];
  17061. this.ajax
  17062. .post(this.$store.state.api + "deletePz", params)
  17063. .then((res) => {
  17064. this.$message({
  17065. message: "删除成功",
  17066. type: "success",
  17067. });
  17068. this.selectPz();
  17069. })
  17070. .catch((err) => {
  17071. this.$message.error("网络异常");
  17072. console.error(err);
  17073. });
  17074. })
  17075. .catch(() => {});
  17076. },
  17077. deleteReply(id) {
  17078. this.$confirm("确定删除此回复吗?", "提示", {
  17079. confirmButtonText: "确定",
  17080. cancelButtonText: "取消",
  17081. type: "warning",
  17082. })
  17083. .then(() => {
  17084. let params = [
  17085. {
  17086. id: id,
  17087. },
  17088. ];
  17089. this.ajax
  17090. .post(this.$store.state.api + "deleteReply", params)
  17091. .then((res) => {
  17092. this.$message({
  17093. message: "删除成功",
  17094. type: "success",
  17095. });
  17096. this.selectPz();
  17097. })
  17098. .catch((err) => {
  17099. this.$message.error("网络异常");
  17100. console.error(err);
  17101. });
  17102. })
  17103. .catch(() => {});
  17104. },
  17105. setPz() {
  17106. if (this.ispzType == 4) {
  17107. this.ispzType = 0;
  17108. this.pzDialog = false;
  17109. return;
  17110. }
  17111. this.ispzType = 4;
  17112. this.pzDialog = true;
  17113. this.selectPz();
  17114. },
  17115. selectPz() {
  17116. let params = {
  17117. cid: this.id,
  17118. s: this.courseType,
  17119. t: this.taskCount,
  17120. type: this.pzStype,
  17121. uid: this.userid,
  17122. };
  17123. this.ajax
  17124. .get(this.$store.state.api + "selectPzListType", params)
  17125. .then((res) => {
  17126. this.pzList = res.data[0];
  17127. var a = res.data[1];
  17128. for (var i = 0; i < a.length; i++) {
  17129. for (var j = 0; j < this.pzList.length; j++) {
  17130. if (!this.pzList[j].hfList) {
  17131. this.pzList[j].hfList = [];
  17132. }
  17133. if (a[i].pid == this.pzList[j].id) {
  17134. this.pzList[j].hfList.push(a[i]);
  17135. }
  17136. }
  17137. }
  17138. })
  17139. .catch((err) => {
  17140. console.error(err);
  17141. });
  17142. },
  17143. // selectHf() {
  17144. // let params = {
  17145. // cid: this.id,
  17146. // s: this.courseType,
  17147. // t: this.taskCount,
  17148. // };
  17149. // this.ajax
  17150. // .get(this.$store.state.api + "selectHfList", params)
  17151. // .then((res) => {
  17152. // var a = res.data[0];
  17153. // for (var i = 0; i < a.length; i++) {
  17154. // for (var j = 0; j < this.pzList.length; j++) {
  17155. // if (!this.pzList[i].hfList) {
  17156. // this.pzList[i].hfList = [];
  17157. // }
  17158. // if (a[i].pid == this.pzList[j].id) {
  17159. // this.pzList[i].hfList.push(a[i]);
  17160. // }
  17161. // }
  17162. // }
  17163. // })
  17164. // .catch((err) => {
  17165. // console.error(err);
  17166. // });
  17167. // },
  17168. updateSLook() {
  17169. let params = {
  17170. sopen: this.sIsOpen == false ? 1 : 2,
  17171. cid: this.id,
  17172. };
  17173. this.ajax
  17174. .get(this.$store.state.api + "updateCourseSLook", params)
  17175. .then((res) => {
  17176. if (this.sIsOpen == true) {
  17177. this.$message({
  17178. message: "权限设置成功",
  17179. type: "success",
  17180. });
  17181. } else {
  17182. this.$message({
  17183. message: "权限关闭成功",
  17184. type: "success",
  17185. });
  17186. }
  17187. })
  17188. .catch((err) => {
  17189. console.error(err);
  17190. });
  17191. },
  17192. updateFollow() {
  17193. let params = [
  17194. {
  17195. sopen: this.IsFollow == false ? 1 : 2,
  17196. cid: this.id,
  17197. },
  17198. ];
  17199. this.ajax
  17200. .post(this.$store.state.api + "updateCourseFollow", params)
  17201. .then((res) => {
  17202. if (this.IsFollow == true) {
  17203. this.$message({
  17204. message: "开启成功",
  17205. type: "success",
  17206. });
  17207. } else {
  17208. this.$message({
  17209. message: "关闭成功",
  17210. type: "success",
  17211. });
  17212. }
  17213. this.setCTask();
  17214. })
  17215. .catch((err) => {
  17216. console.error(err);
  17217. });
  17218. },
  17219. setCTask() {
  17220. let params = [
  17221. {
  17222. sopen: this.courseType + "-" + this.taskCount,
  17223. cid: this.id,
  17224. },
  17225. ];
  17226. this.ajax
  17227. .post(this.$store.state.api + "updateCourseFollowC", params)
  17228. .then((res) => {})
  17229. .catch((err) => {
  17230. console.error(err);
  17231. });
  17232. },
  17233. updateLookOpen() {
  17234. let params = [
  17235. {
  17236. sopen: this.IsLookOpen == false ? 1 : 2,
  17237. cid: this.id,
  17238. },
  17239. ];
  17240. this.ajax
  17241. .post(this.$store.state.api + "updateCourseLookOpen", params)
  17242. .then((res) => {
  17243. if (this.IsLookOpen == true) {
  17244. // if (this.courseType != 0 && this.taskCount != 0) {
  17245. // this.openTask(0, 0, "0-0");
  17246. // }
  17247. this.$message({
  17248. message: "权限设置成功",
  17249. type: "success",
  17250. });
  17251. } else {
  17252. this.$message({
  17253. message: "权限关闭成功",
  17254. type: "success",
  17255. });
  17256. }
  17257. this.getCourseState(2);
  17258. })
  17259. .catch((err) => {
  17260. console.error(err);
  17261. });
  17262. },
  17263. selectSLook() {
  17264. let params = {
  17265. cid: this.id,
  17266. };
  17267. this.ajax
  17268. .get(this.$store.state.api + "selectCourseSLook", params)
  17269. .then((res) => {
  17270. this.sIsOpen = res.data[0][0].sopen == 1 ? false : true;
  17271. this.IsLookOpen = res.data[0][0].look == 1 ? false : true;
  17272. this.IsFollow = res.data[0][0].follow == 1 ? false : true;
  17273. if (!this.IsLookOpen) {
  17274. this.setNavList();
  17275. } else {
  17276. this.getCourseState(1);
  17277. }
  17278. if ((this.IsFollow && this.tType == 2)) {
  17279. this.setContent2(false);
  17280. let _followC = res.data[0][0].followC.split("-");
  17281. if (
  17282. this.courseType != _followC[0] ||
  17283. this.taskCount != _followC[1]
  17284. ) {
  17285. this.navList[this.courseType].isOpen = false;
  17286. this.courseType = _followC[0];
  17287. this.navList[this.courseType].isOpen = true;
  17288. this.taskCount = parseInt(_followC[1]);
  17289. this.navId = res.data[0][0].followC;
  17290. document.scrollingElement.scrollTop = 0;
  17291. this.getCourseDetail(2);
  17292. }
  17293. }
  17294. })
  17295. .catch((err) => {
  17296. console.error(err);
  17297. });
  17298. },
  17299. setNavList() {
  17300. if (this.navList.length == 0) {
  17301. this.navList = [];
  17302. var copyList = [];
  17303. for (var l = 0; l < this.chapInfoList.length; l++) {
  17304. var q = this.chapInfoList[l].dyName;
  17305. var w = this.chapInfoList[l].chapterInfo[0].taskJson;
  17306. var e;
  17307. copyList.push({
  17308. dyName: q,
  17309. isOpen: l === 0 ? true : false,
  17310. task: [],
  17311. });
  17312. for (var r = 0; r < w.length; r++) {
  17313. e = w[r].task;
  17314. if (this.chapInfoList[l].easy == 1) {
  17315. copyList[l].task.push({
  17316. taskName: q,
  17317. id: l + "-" + r,
  17318. isLook: w[r].isLook,
  17319. isOpen: r === 0 ? true : false,
  17320. tool: [],
  17321. });
  17322. } else {
  17323. copyList[l].task.push({
  17324. taskName: e,
  17325. id: l + "-" + r,
  17326. isLook: w[r].isLook,
  17327. isOpen: r === 0 ? true : false,
  17328. tool: [],
  17329. });
  17330. }
  17331. var t = w[r].toolChoose;
  17332. for (var k = 0; k < t.length; k++) {
  17333. var tool = t[k].tool[0];
  17334. copyList[l].task[r].tool.push({
  17335. tool: tool,
  17336. isTool: false,
  17337. });
  17338. }
  17339. // this.navId = this.navId ? this.navId : l + "-" + r;
  17340. // this.navId = l + "-" + r;
  17341. }
  17342. }
  17343. this.navList = copyList;
  17344. this.navList[0].isOpen = false;
  17345. this.navList[this.courseType].isOpen = true;
  17346. this.navId = this.navList[this.courseType].task[this.taskCount].id;
  17347. } else {
  17348. this.setNavList2();
  17349. }
  17350. },
  17351. setNavList2() {
  17352. for (var l = 0; l < this.chapInfoList.length; l++) {
  17353. var w = this.chapInfoList[l].chapterInfo[0].taskJson;
  17354. for (var r = 0; r < w.length; r++) {
  17355. this.navList[l].task[r].isLook = w[r].isLook;
  17356. }
  17357. }
  17358. if (
  17359. this.IsLookOpen &&
  17360. !this.navList[this.courseType].task[this.taskCount].isLook
  17361. ) {
  17362. this.openTask(0, 0, "0-0");
  17363. }
  17364. this.$forceUpdate();
  17365. },
  17366. getCourseState(type) {
  17367. let params = {
  17368. cid: this.id,
  17369. };
  17370. this.ajax
  17371. .get(this.$store.state.api + "getCourseState", params)
  17372. .then((res) => {
  17373. if (res.data[0].length > 0 && this.IsLookOpen && type == 1) {
  17374. this.chapInfoList = JSON.parse(res.data[0][0].state);
  17375. this.setNavList();
  17376. this.$forceUpdate();
  17377. } else if (res.data[0].length > 0 && this.IsLookOpen && type == 2) {
  17378. this.addCourseState(2);
  17379. } else {
  17380. this.addCourseState(1);
  17381. }
  17382. })
  17383. .catch((err) => {
  17384. console.error(err);
  17385. });
  17386. },
  17387. addCourseState(type) {
  17388. let _state = this.chapInfoList;
  17389. // this.courseType this.taskCount
  17390. if (type == 1 || type == 2) {
  17391. for (var i = 0; i < _state.length; i++) {
  17392. let el = _state[i].chapterInfo[0].taskJson;
  17393. for (var j = 0; j < el.length; j++) {
  17394. // if (i == 0 && j == 0) {
  17395. // el[j].isLook = true;
  17396. // } else {
  17397. // el[j].isLook = false;
  17398. // }
  17399. if (
  17400. this.courseType > i ||
  17401. (this.courseType == i && this.taskCount + 1 > j)
  17402. ) {
  17403. el[j].isLook = true;
  17404. } else {
  17405. el[j].isLook = false;
  17406. }
  17407. }
  17408. }
  17409. }
  17410. let params = [
  17411. {
  17412. cid: this.id,
  17413. state: JSON.stringify(_state),
  17414. },
  17415. ];
  17416. this.ajax
  17417. .post(
  17418. this.$store.state.api +
  17419. (type == 1 ? "addCourseState" : "updateCourseSate"),
  17420. params
  17421. )
  17422. .then((res) => {
  17423. if (this.IsLookOpen) {
  17424. this.setNavList();
  17425. }
  17426. if (type == 3 && type == 2) {
  17427. this.getCourseState(1);
  17428. }
  17429. })
  17430. .catch((err) => {
  17431. console.error(err);
  17432. });
  17433. },
  17434. getHomeWork() {
  17435. let params = {
  17436. cid: this.id,
  17437. stage: this.courseType,
  17438. task: this.taskCount,
  17439. uid: this.userid,
  17440. };
  17441. this.ajax
  17442. .get(this.$store.state.api + "selectWork", params)
  17443. .then((res) => {
  17444. if (res.data[0].length > 0) {
  17445. this.studyJuri = JSON.parse(res.data[0][0].content);
  17446. this.isNoHomeWork = true;
  17447. }
  17448. })
  17449. .catch((err) => {
  17450. console.error(err);
  17451. });
  17452. },
  17453. isAssetTypeAnImage(ext) {
  17454. return (
  17455. [
  17456. "png",
  17457. "jpg",
  17458. "jpeg",
  17459. "bmp",
  17460. "gif",
  17461. "webp",
  17462. "psd",
  17463. "svg",
  17464. "tiff",
  17465. ].indexOf(ext) !== -1
  17466. );
  17467. },
  17468. switchVideo(media) {
  17469. this.playerO = {};
  17470. this.playerOptions.poster = "";
  17471. this.playerOptions.sources[0].src = media;
  17472. this.playerO = this.playerOptions;
  17473. },
  17474. onPlayerPlay() {},
  17475. onPlayerTimeupdate(player) {
  17476. let gklog = player.cache_.currentTime; //当前播放的秒数
  17477. let a = player.cache_.duration; //视频的总时长
  17478. let gklog2 = parseInt(gklog);
  17479. // if(gklog2 == '3'){
  17480. // player.pause()
  17481. // setTimeout(()=>{
  17482. // player.currentTime(gklog2+1)
  17483. // player.play()
  17484. // },1000)
  17485. // }
  17486. console.log(" onPlayerTimeupdate!", gklog);
  17487. console.log(" onPlayerTimeupdate!", gklog2);
  17488. },
  17489. lookVedio(u, i) {
  17490. this.isClickNav = "";
  17491. // this.playerOptions.sources[0].src = u;
  17492. var d = JSON.parse(JSON.stringify(this.playerOptions));
  17493. d.sources[0].src = u;
  17494. this.playerO[0] = d;
  17495. this.showType = 0;
  17496. // this.isClickNav = "video" + i;
  17497. this.isClickNav = i;
  17498. this.$forceUpdate();
  17499. this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount].find(i=>i.url==u).name}</span>`)
  17500. },
  17501. lookText(i, t) {
  17502. this.isClickNav = "";
  17503. // this.text = this.textList[i][t];
  17504. this.text = this.vChapterData[i][t];
  17505. // this.dialogVisible1 = true;
  17506. this.showType = 1;
  17507. // this.isClickNav = "text" + t;
  17508. this.isClickNav = t;
  17509. this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][t].name}.doc</span>`)
  17510. },
  17511. lookTools(i, t) {
  17512. this.chapTools = this.chapToolList[i][t];
  17513. this.dialogVisible2 = true;
  17514. },
  17515. async openFile(f) {
  17516. this.pptImgUrl = "";
  17517. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
  17518. if (
  17519. a.indexOf(f.split(".")[f.split(".").length - 1].toLocaleUpperCase()) !=
  17520. -1
  17521. ) {
  17522. let _uuurl = await this.checkLink(f);
  17523. console.log(_uuurl)
  17524. this.pptImgUrl =
  17525. "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
  17526. this.showPDF = false;
  17527. this.dialogVisible3 = true;
  17528. } else if (
  17529. f.split(".")[f.split(".").length - 1].toLocaleUpperCase() == "PDF"
  17530. ) {
  17531. this.pptImgUrl = f;
  17532. this.showPDF = true;
  17533. this.dialogVisible3 = true;
  17534. }
  17535. this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
  17536. },
  17537. openTable(f) {
  17538. this.tableJson = JSON.parse(f.works);
  17539. this.dialogVisibleTable2 = true;
  17540. this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
  17541. },
  17542. openWord(f) {
  17543. this.tableJson = JSON.parse(f.works);
  17544. this.dialogVisibleTable3 = true;
  17545. this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
  17546. },
  17547. doUrl(url, i) {
  17548. this.isClickNav = "";
  17549. this.pptImgUrl1 = "";
  17550. this.showType = 2;
  17551. if (url.indexOf("https://") == -1 && url.indexOf("http://") == -1) {
  17552. url = "https://" + url;
  17553. }
  17554. this.pptImgUrl1 = "";
  17555. setTimeout(() => {
  17556. this.pptImgUrl1 = url;
  17557. }, 500);
  17558. // this.isClickNav = "line" + i;
  17559. this.isClickNav = i;
  17560. this.$forceUpdate();
  17561. },
  17562. checkPhoto(f, i) {
  17563. this.showType = 4;
  17564. this.pptImgUrl1 = f.url;
  17565. this.isClickNav = i;
  17566. this.$forceUpdate();
  17567. this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][i].name}</span>`)
  17568. },
  17569. async downFile(f, i) {
  17570. this.isClickNav = "";
  17571. this.pptImgUrl1 = "";
  17572. var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"]; //"PDF",
  17573. if (
  17574. a.indexOf(
  17575. f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase()
  17576. ) != -1
  17577. ) {
  17578. let _uuurl = await this.checkLink(f.url);
  17579. console.log(_uuurl)
  17580. this.pptImgUrl1 =
  17581. "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
  17582. // this.dialogVisible3 = true;
  17583. this.showType = 2;
  17584. } else if (
  17585. this.isAssetTypeAnImage(
  17586. f.url.split(".")[f.url.split(".").length - 1].toLocaleLowerCase()
  17587. )
  17588. ) {
  17589. this.showType = 4;
  17590. this.pptImgUrl1 = f.url;
  17591. } else if (
  17592. f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase() ==
  17593. "PDF"
  17594. ) {
  17595. this.pptImgUrl1 = f.url;
  17596. // this.dialogVisible3 = true;
  17597. this.showType = 3;
  17598. } else {
  17599. window.open(this.file[i].url);
  17600. }
  17601. // this.isClickNav = "word" + i;
  17602. this.isClickNav = i;
  17603. this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount][i].name}</span>`)
  17604. },
  17605. downFileList(i) {
  17606. window.open(this.noImgList[i].url);
  17607. },
  17608. openAddWork() {
  17609. this.dialogVisible = true;
  17610. },
  17611. addBzWorks() {
  17612. let params = [
  17613. {
  17614. uid: this.userid,
  17615. cid: this.id,
  17616. stage: this.courseType,
  17617. task: this.taskCount,
  17618. tool: this.toolindex,
  17619. content: JSON.stringify(this.eScore),
  17620. type: 6,
  17621. },
  17622. ];
  17623. this.ajax
  17624. .post(this.$store.state.api + "addCourseWorks", params)
  17625. .then((res) => {
  17626. this.$message({
  17627. message: "提交成功",
  17628. type: "success",
  17629. });
  17630. this.eScore = { eBzText: "", eStar: [] };
  17631. this.studentEvalDialogVisible = false;
  17632. this.selectSWorks();
  17633. })
  17634. .catch((err) => {
  17635. this.$message.error("提交失败");
  17636. console.error(err);
  17637. });
  17638. },
  17639. addBzWorksTeacher() {
  17640. let params = [
  17641. {
  17642. uid: this.sStudent.userid,
  17643. cid: this.id,
  17644. stage: this.courseType,
  17645. task: this.taskCount,
  17646. tool: this.toolindex,
  17647. content: JSON.stringify(this.eScore),
  17648. type: 6,
  17649. },
  17650. ];
  17651. this.ajax
  17652. .post(this.$store.state.api + "addCourseWorks", params)
  17653. .then((res) => {
  17654. this.$message({
  17655. message: "提交成功",
  17656. type: "success",
  17657. });
  17658. this.eScore = { eBzText: "", eStar: [] };
  17659. this.studentEvalDialogVisibleTeacher = false;
  17660. this.selectSWorks();
  17661. })
  17662. .catch((err) => {
  17663. this.$message.error("提交失败");
  17664. console.error(err);
  17665. });
  17666. },
  17667. addStudentAsk() {
  17668. if (!this.radio.length) {
  17669. this.$message.error("请选择选项");
  17670. return;
  17671. }
  17672. for (var i = 0; i < this.askJson.askCount; i++) {
  17673. if (
  17674. (this.radio[i] instanceof Array && !this.radio[i].length) ||
  17675. (this.radio[i] !== 0 && !this.radio[i])
  17676. ) {
  17677. this.$message.error("请选择选项");
  17678. return;
  17679. }
  17680. }
  17681. this.askList.push({ askJson: this.askJson, anwer: this.radio });
  17682. let params = [
  17683. {
  17684. uid: this.userid,
  17685. cid: this.id,
  17686. stage: this.courseType,
  17687. task: this.taskCount,
  17688. tool: this.toolindex,
  17689. content: JSON.stringify(this.askList),
  17690. type: 2,
  17691. },
  17692. ];
  17693. this.ajax
  17694. .post(this.$store.state.api + "addCourseWorks", params)
  17695. .then((res) => {
  17696. this.$message({
  17697. message: "提交成功",
  17698. type: "success",
  17699. });
  17700. this.askList = [];
  17701. this.dialogVisible5 = false;
  17702. this.selectStudent();
  17703. this.selectSWorks();
  17704. this.selectSLook();
  17705. })
  17706. .catch((err) => {
  17707. this.$message.error("提交失败");
  17708. console.error(err);
  17709. });
  17710. },
  17711. addStudentAskTeacher() {
  17712. if (!this.radio.length) {
  17713. this.$message.error("请选择选项");
  17714. return;
  17715. }
  17716. for (var i = 0; i < this.askJson.askCount; i++) {
  17717. if (
  17718. (this.radio[i] instanceof Array && !this.radio[i].length) ||
  17719. (this.radio[i] !== 0 && !this.radio[i])
  17720. ) {
  17721. this.$message.error("请选择选项");
  17722. return;
  17723. }
  17724. }
  17725. this.askList.push({ askJson: this.askJson, anwer: this.radio });
  17726. let params = [
  17727. {
  17728. uid: this.sStudent.userid,
  17729. cid: this.id,
  17730. stage: this.courseType,
  17731. task: this.taskCount,
  17732. tool: this.toolindex,
  17733. content: JSON.stringify(this.askList),
  17734. type: 2,
  17735. },
  17736. ];
  17737. this.ajax
  17738. .post(this.$store.state.api + "addCourseWorks", params)
  17739. .then((res) => {
  17740. this.$message({
  17741. message: "提交成功",
  17742. type: "success",
  17743. });
  17744. this.askList = [];
  17745. this.dialogVisible5Teacher = false;
  17746. this.selectStudent();
  17747. this.selectSWorks();
  17748. this.selectSLook();
  17749. })
  17750. .catch((err) => {
  17751. this.$message.error("提交失败");
  17752. console.error(err);
  17753. });
  17754. },
  17755. addStudentTest() {
  17756. if (!this.radio.length) {
  17757. this.$message.error("请选择选项");
  17758. return;
  17759. }
  17760. for (var i = 0; i < this.testJson.testCount; i++) {
  17761. if (
  17762. (this.radio[i] instanceof Array && !this.radio[i].length) ||
  17763. (this.radio[i] !== 0 && !this.radio[i])
  17764. ) {
  17765. this.$message.error("请选择选项");
  17766. return;
  17767. }
  17768. }
  17769. this.askList.push({ testJson: this.testJson, anwer: this.radio });
  17770. let params = [
  17771. {
  17772. uid: this.userid,
  17773. cid: this.id,
  17774. stage: this.courseType,
  17775. task: this.taskCount,
  17776. tool: this.toolindex,
  17777. content: JSON.stringify(this.askList),
  17778. type: 8,
  17779. },
  17780. ];
  17781. this.ajax
  17782. .post(this.$store.state.api + "addCourseWorks", params)
  17783. .then((res) => {
  17784. this.$message({
  17785. message: "提交成功",
  17786. type: "success",
  17787. });
  17788. this.askList = [];
  17789. this.dialogVisibleChoice = false;
  17790. this.selectStudent();
  17791. this.selectSWorks();
  17792. this.selectSLook();
  17793. })
  17794. .catch((err) => {
  17795. this.$message.error("提交失败");
  17796. console.error(err);
  17797. });
  17798. },
  17799. addStudentTestTeacher() {
  17800. if (!this.radio.length) {
  17801. this.$message.error("请选择选项");
  17802. return;
  17803. }
  17804. for (var i = 0; i < this.testJson.testCount; i++) {
  17805. if (
  17806. (this.radio[i] instanceof Array && !this.radio[i].length) ||
  17807. (this.radio[i] !== 0 && !this.radio[i])
  17808. ) {
  17809. this.$message.error("请选择选项");
  17810. return;
  17811. }
  17812. }
  17813. this.askList.push({ testJson: this.testJson, anwer: this.radio });
  17814. let params = [
  17815. {
  17816. uid: this.sStudent.userid,
  17817. cid: this.id,
  17818. stage: this.courseType,
  17819. task: this.taskCount,
  17820. tool: this.toolindex,
  17821. content: JSON.stringify(this.askList),
  17822. type: 8,
  17823. },
  17824. ];
  17825. this.ajax
  17826. .post(this.$store.state.api + "addCourseWorks", params)
  17827. .then((res) => {
  17828. this.$message({
  17829. message: "提交成功",
  17830. type: "success",
  17831. });
  17832. this.askList = [];
  17833. this.dialogVisibleChoiceTeacher = false;
  17834. this.selectStudent();
  17835. this.selectSWorks();
  17836. this.selectSLook();
  17837. })
  17838. .catch((err) => {
  17839. this.$message.error("提交失败");
  17840. console.error(err);
  17841. });
  17842. },
  17843. addWork() {
  17844. if (this.studyJuri[0].content == "") {
  17845. this.$message.error("请将信息填写完整");
  17846. return;
  17847. } else if (this.studyJuri[0].cover.length == 0) {
  17848. this.$message.error("请将信息填写完整");
  17849. return;
  17850. } else if (this.studyJuri[0].upVedio.length == 0) {
  17851. this.$message.error("请将信息填写完整");
  17852. return;
  17853. }
  17854. if (this.isNoHomeWork) {
  17855. this.$confirm(
  17856. "您已经提交了该作业了,如果您再提交将覆盖上次提交的作业!",
  17857. "提示",
  17858. {
  17859. confirmButtonText: "确定",
  17860. cancelButtonText: "取消",
  17861. type: "warning",
  17862. }
  17863. )
  17864. .then(() => {
  17865. let params = [
  17866. {
  17867. uid: this.userid,
  17868. cid: this.id,
  17869. stage: this.courseType,
  17870. task: this.taskCount,
  17871. content: JSON.stringify(this.studyJuri),
  17872. },
  17873. ];
  17874. this.ajax
  17875. .post(this.$store.state.api + "addWorks", params)
  17876. .then((res) => {
  17877. this.$message({
  17878. message: "提交成功",
  17879. type: "success",
  17880. });
  17881. this.isNoHomeWork = true;
  17882. this.dialogVisible = false;
  17883. })
  17884. .catch((err) => {
  17885. this.$message.error("提交失败");
  17886. console.error(err);
  17887. });
  17888. })
  17889. .catch(() => {});
  17890. } else {
  17891. let params = [
  17892. {
  17893. uid: this.userid,
  17894. cid: this.id,
  17895. stage: this.courseType,
  17896. task: this.taskCount,
  17897. content: JSON.stringify(this.studyJuri),
  17898. },
  17899. ];
  17900. this.ajax
  17901. .post(this.$store.state.api + "addWorks", params)
  17902. .then((res) => {
  17903. this.$message({
  17904. message: "提交成功",
  17905. type: "success",
  17906. });
  17907. this.isNoHomeWork = true;
  17908. this.dialogVisible = false;
  17909. })
  17910. .catch((err) => {
  17911. this.$message.error("提交失败");
  17912. console.error(err);
  17913. });
  17914. }
  17915. },
  17916. selectCount() {
  17917. let params = {
  17918. cid: this.id,
  17919. chid: this.courseType,
  17920. uid: this.userid,
  17921. };
  17922. this.ajax
  17923. .get(this.$store.state.api + "selectToolsCount", params)
  17924. .then((res) => {
  17925. for (var i = 0; i < res.data[0].length; i++) {
  17926. if (res.data[0][i].tools == 1) {
  17927. this.wbCount = res.data[0][i].count;
  17928. } else if (res.data[0][i].tools == 2) {
  17929. this.wordCount = res.data[0][i].count;
  17930. } else if (res.data[0][i].tools == 3) {
  17931. this.mindCount = res.data[0][i].count;
  17932. } else if (res.data[0][i].tools == 4) {
  17933. this.askCount = res.data[0][i].count;
  17934. } else if (res.data[0][i].tools == 6) {
  17935. this.noteCount = res.data[0][i].count;
  17936. } else if (res.data[0][i].tools == 7) {
  17937. this.mindNetWorkCount = res.data[0][i].count;
  17938. } else if (res.data[0][i].tools == 8) {
  17939. this.libraryCount = res.data[0][i].count;
  17940. } else if (res.data[0][i].tools == 16) {
  17941. this.workCount = res.data[0][i].count;
  17942. } else if (res.data[0][i].tools == 10) {
  17943. this.timeCount = res.data[0][i].count;
  17944. } else if (res.data[0][i].tools == 15) {
  17945. this.answerCount = res.data[0][i].count;
  17946. } else if (res.data[0][i].tools == 18) {
  17947. this.trainCount = res.data[0][i].count;
  17948. }
  17949. }
  17950. })
  17951. .catch((err) => {
  17952. console.error(err);
  17953. });
  17954. },
  17955. openTools(t, i, index, c, sName,id) {
  17956. var z = JSON.parse(c);
  17957. this.noteName = sName;
  17958. if (t == 4) {
  17959. this.radio = [];
  17960. this.isAnswer = false;
  17961. let b = z[0].anwer;
  17962. this.radio = b;
  17963. this.askJson = z[0].askJson;
  17964. this.isAnswer = true;
  17965. this.dialogVisible5 = true;
  17966. } else if (t == 45) {
  17967. this.radio = [];
  17968. this.isAnswer = false;
  17969. let b = z[0].anwer;
  17970. this.radio = b;
  17971. this.testJson = z[0].testJson;
  17972. this.isAnswer = true;
  17973. this.dialogVisibleChoice = true;
  17974. }else if(t == 69){
  17975. this.oldEnglishJson1 = {}
  17976. this.oldEnglishJson = {}
  17977. this.englishList1 = {}
  17978. this.newEngIndex = -1;
  17979. this.isNoUserid = false;
  17980. this.englishList1 = this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  17981. .toolChoose[i].englishList;
  17982. this.oldEnglishJson = z;
  17983. this.engWid = id;
  17984. this.newEnglishList = { engTitle:"",engText:"" }
  17985. this.newEnglishList1 = []
  17986. this.selectEngC(id,z);
  17987. }else if(t == 62){
  17988. this.videoType = 1;
  17989. this.videoJson = {};
  17990. this.videoJson = JSON.parse(c);
  17991. // this.videoJson =
  17992. // this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  17993. // index
  17994. // ].toolChoose[i].videoJson;
  17995. this.dialogVisibleVideo = true;
  17996. }
  17997. // else if (t == 15) {
  17998. // this.answerQ = "";
  17999. // this.questionAnswer = "";
  18000. // this.answerQ = z[0].answerTitle;
  18001. // this.questionAnswer = z[0].answer;
  18002. // this.answerDialogVisible = true;
  18003. // }
  18004. this.insertMemorandum(`查看<span class="variable">${sName}</span>的作业`)
  18005. },
  18006. fastText(p, t) {
  18007. if (t == 1) {
  18008. this.commentText += p;
  18009. } else {
  18010. this.eScore.eBzText += p;
  18011. }
  18012. },
  18013. addTools(t, i, index) {
  18014. var a = 0;
  18015. // this.taskCount = index;
  18016. this.toolindex = i;
  18017. if (t == 1) {
  18018. if (this.wbCount > 0) {
  18019. this.updateCount(this.wbCount, t);
  18020. } else {
  18021. this.wbCount++;
  18022. a = this.wbCount;
  18023. this.toolsCount(a, t);
  18024. }
  18025. window.parent.postMessage(
  18026. {
  18027. tools: "1",
  18028. cid: this.id,
  18029. stage: this.courseType,
  18030. task: this.taskCount,
  18031. tool: i,
  18032. },
  18033. "*"
  18034. );
  18035. } else if (t == 2) {
  18036. if (this.wordCount > 0) {
  18037. this.updateCount(this.wordCount, t);
  18038. } else {
  18039. this.wordCount++;
  18040. a = this.wordCount;
  18041. this.toolsCount(a, t);
  18042. }
  18043. window.parent.postMessage({ tools: "2" }, "*");
  18044. } else if (t == 3) {
  18045. if (this.mindCount > 0) {
  18046. this.updateCount(this.mindCount, t);
  18047. } else {
  18048. this.mindCount++;
  18049. a = this.mindCount;
  18050. this.toolsCount(a, t);
  18051. }
  18052. window.parent.postMessage(
  18053. {
  18054. tools: "3",
  18055. cid: this.id,
  18056. stage: this.courseType,
  18057. task: this.taskCount,
  18058. tool: i,
  18059. },
  18060. "*"
  18061. );
  18062. } else if (t == 4) {
  18063. this.radio = [];
  18064. this.noteName = "";
  18065. this.isAnswer = false;
  18066. if (this.askCount > 0) {
  18067. this.updateCount(this.askCount, t);
  18068. } else {
  18069. this.askCount++;
  18070. a = this.askCount;
  18071. this.toolsCount(a, t);
  18072. }
  18073. if (!this.dialogVisible2) {
  18074. this.askJson.askJson =
  18075. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18076. index
  18077. ].toolChoose[i].askJson;
  18078. this.askJson.askTitle =
  18079. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18080. index
  18081. ].toolChoose[i].askTitle;
  18082. this.askJson.askCount =
  18083. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18084. index
  18085. ].toolChoose[i].askCount;
  18086. } else {
  18087. this.askJson.askJson = this.chapTools.askJson.askJson;
  18088. this.askJson.askTitle = this.chapTools.askJson.askTitle;
  18089. this.askJson.askCount = this.chapTools.askJson.askCount;
  18090. }
  18091. for (var k = 0; k < this.askJson.askJson.length; k++) {
  18092. if (this.askJson.askJson[k].type == "2") {
  18093. this.radio.push([]);
  18094. } else {
  18095. this.radio.push("");
  18096. }
  18097. }
  18098. this.dialogVisible5 = true;
  18099. // window.parent.postMessage({ tools: "4" }, "*");
  18100. } else if (t == 45) {
  18101. this.noteName = "";
  18102. this.radio = [];
  18103. this.isAnswer = false;
  18104. if (this.askCount > 0) {
  18105. this.updateCount(this.askCount, t);
  18106. } else {
  18107. this.askCount++;
  18108. a = this.askCount;
  18109. this.toolsCount(a, t);
  18110. }
  18111. this.testJson =
  18112. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18113. index
  18114. ].toolChoose[i].testJson;
  18115. for (var k = 0; k < this.testJson.testJson.length; k++) {
  18116. if (this.testJson.testJson[k].type == "2") {
  18117. this.radio.push([]);
  18118. } else {
  18119. this.radio.push("");
  18120. }
  18121. }
  18122. this.dialogVisibleChoice = true;
  18123. // window.parent.postMessage({ tools: "4" }, "*");
  18124. } else if (t == 5) {
  18125. if (this.scoreCount > 0) {
  18126. this.updateCount(this.scoreCount, t);
  18127. } else {
  18128. this.scoreCount++;
  18129. a = this.scoreCount;
  18130. this.toolsCount(a, t);
  18131. }
  18132. this.dialogVisible4 = true;
  18133. // window.parent.postMessage({ tools: "5" }, "*");
  18134. } else if (t == 6) {
  18135. if (this.noteCount > 0) {
  18136. this.updateCount(this.noteCount, t);
  18137. } else {
  18138. this.noteCount++;
  18139. a = this.noteCount;
  18140. this.toolsCount(a, t);
  18141. }
  18142. window.parent.postMessage(
  18143. {
  18144. tools: "6",
  18145. cid: this.id,
  18146. stage: this.courseType,
  18147. task: this.taskCount,
  18148. tool: i,
  18149. },
  18150. "*"
  18151. );
  18152. } else if (t == 7) {
  18153. if (this.mindNetWorkCount > 0) {
  18154. this.updateCount(this.mindNetWorkCount, t);
  18155. } else {
  18156. this.mindNetWorkCount++;
  18157. a = this.mindNetWorkCount;
  18158. this.toolsCount(a, t);
  18159. }
  18160. window.parent.postMessage(
  18161. {
  18162. tools: "7",
  18163. cid: this.id,
  18164. stage: this.courseType,
  18165. task: this.taskCount,
  18166. tool: i,
  18167. },
  18168. "*"
  18169. );
  18170. } else if (t == 16) {
  18171. if (this.workCount > 0) {
  18172. this.updateCount(this.workCount, t);
  18173. } else {
  18174. this.workCount++;
  18175. a = this.workCount;
  18176. this.toolsCount(a, t);
  18177. }
  18178. this.dialogVisible = true;
  18179. } else if (t == 50) {
  18180. if (this.tType == 2) {
  18181. this.$message.error("不支持学生使用");
  18182. return;
  18183. }
  18184. this.plworkFile = [];
  18185. this.uploadCid = this.tcid ? this.tcid : this.courseDetail.juri;
  18186. if (!this.uploadCid) {
  18187. this.$message.error(
  18188. "提示:批量上传未添加班级权限,请添加班级或从班级入口进入。"
  18189. );
  18190. return;
  18191. }
  18192. // this.uploadCid =
  18193. // this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18194. // index
  18195. // ].toolChoose[i].uploadJson[0];
  18196. this.selectUploadStudent(2);
  18197. } else if (t == 8) {
  18198. if (this.libraryCount > 0) {
  18199. this.updateCount(this.libraryCount, t);
  18200. } else {
  18201. this.libraryCount++;
  18202. a = this.libraryCount;
  18203. this.toolsCount(a, t);
  18204. }
  18205. window.parent.postMessage({ tools: "8" }, "*");
  18206. } else if (t == 17) {
  18207. if (this.libraryCount > 0) {
  18208. this.updateCount(this.libraryCount, t);
  18209. } else {
  18210. this.libraryCount++;
  18211. a = this.libraryCount;
  18212. this.toolsCount(a, t);
  18213. }
  18214. window.parent.postMessage({ tools: "17" }, "*");
  18215. } else if (t == 18) {
  18216. if (this.trainCount > 0) {
  18217. this.updateCount(this.trainCount, t);
  18218. } else {
  18219. this.trainCount++;
  18220. a = this.trainCount;
  18221. this.toolsCount(a, t);
  18222. }
  18223. window.parent.postMessage({ tools: "18" }, "*");
  18224. } else if (t == 10) {
  18225. if (this.timeCount > 0) {
  18226. this.updateCount(this.timeCount, t);
  18227. } else {
  18228. this.timeCount++;
  18229. a = this.timeCount;
  18230. this.toolsCount(a, t);
  18231. }
  18232. this.preTime = this.chapInfoList[this.courseType].chapterInfo[0]
  18233. .taskJson[index].toolChoose[i].preTime
  18234. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  18235. .toolChoose[i].preTime
  18236. : "";
  18237. this.timeDialogVisible = true;
  18238. } else if (t == 15) {
  18239. this.answerQ = "";
  18240. this.questionAnswer = "";
  18241. if (this.answerCount > 0) {
  18242. this.updateCount(this.answerCount, t);
  18243. } else {
  18244. this.answerCount++;
  18245. a = this.answerCount;
  18246. this.toolsCount(a, t);
  18247. }
  18248. this.answerQ = this.chapInfoList[this.courseType].chapterInfo[0]
  18249. .taskJson[index].toolChoose[i].answerQ
  18250. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  18251. .toolChoose[i].answerQ
  18252. : "";
  18253. this.answerDialogVisible = true;
  18254. } else if (t == 21) {
  18255. window.parent.postMessage({ tools: "21" }, "*");
  18256. } else if (t == 22) {
  18257. window.parent.postMessage({ tools: "22" }, "*");
  18258. } else if (t == 23) {
  18259. window.parent.postMessage({ tools: "23" }, "*");
  18260. } else if (t == 24) {
  18261. window.parent.postMessage({ tools: "24" }, "*");
  18262. } else if (t == 25) {
  18263. window.parent.postMessage({ tools: "25" }, "*");
  18264. } else if (t == 31) {
  18265. window.parent.postMessage({ tools: "31" }, "*");
  18266. } else if (t == 28) {
  18267. window.parent.postMessage({ tools: "28" }, "*");
  18268. } else if (t == 37) {
  18269. window.parent.postMessage({ tools: "37" }, "*");
  18270. } else if (t == 38) {
  18271. window.parent.postMessage({ tools: "38" }, "*");
  18272. } else if (t == 39) {
  18273. window.parent.postMessage({ tools: "39" }, "*");
  18274. } else if (t == 32) {
  18275. window.parent.postMessage({ tools: "32" }, "*");
  18276. } else if (t == 66) {
  18277. window.parent.postMessage({ tools: "66" }, "*");
  18278. } else if (t == 67) {
  18279. window.parent.postMessage({ tools: "67" }, "*");
  18280. } else if (t == 68) {
  18281. window.parent.postMessage({ tools: "68" }, "*");
  18282. } else if (t == 57) {
  18283. // window.parent.postMessage({ tools: "57" }, "*");
  18284. window.parent.postMessage(
  18285. {
  18286. tools: "57u",
  18287. cid: this.id,
  18288. stage: this.courseType,
  18289. task: this.taskCount,
  18290. tool: i,
  18291. },
  18292. "*"
  18293. );
  18294. } else if (t == 58) {
  18295. window.parent.postMessage({ tools: "58" }, "*");
  18296. } else if (t == 59) {
  18297. window.parent.postMessage({ tools: "59" }, "*");
  18298. } else if (t == 60) {
  18299. window.parent.postMessage({ tools: "60" }, "*");
  18300. } else if (t == 61) {
  18301. window.parent.postMessage({ tools: "61" }, "*");
  18302. } else if (t == 63) {
  18303. window.parent.postMessage({ tools: "63" }, "*");
  18304. } else if (t == 71) {
  18305. if(this.org == '16ace517-b5c7-4168-a9bb-a9e0035df840'){
  18306. this.$message.error("该工具不可使用");
  18307. return
  18308. }
  18309. window.parent.postMessage({ tools: "71" }, "*");
  18310. } else if (t == 69) {
  18311. if (this.worksStudent[i].length) {
  18312. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18313. if (this.userid == this.worksStudent[i][k].userid) {
  18314. this.myAnswerList1 = JSON.parse(this.worksStudent[i][k].works)
  18315. break;
  18316. } else {
  18317. this.myAnswerList1 = {engTitle: "",engText: "",imgList: [],};
  18318. }
  18319. }
  18320. } else {
  18321. this.myAnswerList1 = {engTitle: "",engText: "",imgList: [],};
  18322. }
  18323. this.englishList = this.chapInfoList[this.courseType].chapterInfo[0]
  18324. .taskJson[index].toolChoose[i].englishList
  18325. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  18326. .toolChoose[i].englishList
  18327. : {};
  18328. this.englishToolIndex = i;
  18329. this.myAnList = this.myAnswerList1;
  18330. this.engDialogVisible = true;
  18331. } else if (t == 70) {
  18332. if (this.worksStudent[i].length) {
  18333. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18334. if (this.userid == this.worksStudent[i][k].userid && this.worksStudent[i][k].type == 17) {
  18335. this.englishVoiceJsonWork = JSON.parse(this.worksStudent[i][k].works)
  18336. break;
  18337. } else {
  18338. this.englishVoiceJsonWork = [];
  18339. }
  18340. }
  18341. } else {
  18342. this.englishVoiceJsonWork = [];
  18343. }
  18344. let englishVoiceJson = {}
  18345. englishVoiceJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18346. .taskJson[index].toolChoose[i].englishVoiceJson
  18347. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  18348. .toolChoose[i].englishVoiceJson
  18349. : {};
  18350. this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
  18351. this.EnglishVoiceDialog = true;
  18352. } else if (t == 65) {
  18353. if (this.tType == 2) {
  18354. this.$message.error("不支持学生使用");
  18355. return;
  18356. }
  18357. this.uploadCid = this.tcid;
  18358. if (!this.uploadCid) {
  18359. this.$message.error(
  18360. "提示:未添加班级权限,请添加班级或从班级入口进入。"
  18361. );
  18362. return;
  18363. }
  18364. this.selectPickStudent();
  18365. } else if (t == 26) {
  18366. window.parent.postMessage(
  18367. {
  18368. tools: "26",
  18369. cid: this.id,
  18370. stage: this.courseType,
  18371. task: this.taskCount,
  18372. tool: i,
  18373. },
  18374. "*"
  18375. );
  18376. } else if (t == 40) {
  18377. if (this.evalCount > 0) {
  18378. this.updateCount(this.evalCount, t);
  18379. } else {
  18380. this.evalCount++;
  18381. a = this.evalCount;
  18382. this.toolsCount(a, t);
  18383. }
  18384. this.eScore = { eBzText: "", eStar: [] };
  18385. if (this.worksStudent[i].length) {
  18386. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18387. if (this.userid == this.worksStudent[i][k].userid) {
  18388. this.eScore = JSON.parse(this.worksStudent[i][k].works);
  18389. this.rateJson =
  18390. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18391. index
  18392. ].toolChoose[i].rateJson;
  18393. break;
  18394. } else {
  18395. this.rateJson =
  18396. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18397. index
  18398. ].toolChoose[i].rateJson;
  18399. }
  18400. }
  18401. } else {
  18402. this.rateJson =
  18403. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18404. index
  18405. ].toolChoose[i].rateJson;
  18406. }
  18407. this.isStar = false;
  18408. this.studentEvalDialogVisible = true;
  18409. } else if (t == 41) {
  18410. this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18411. .taskJson[index].toolChoose[i].selectJson
  18412. ? JSON.parse(
  18413. JSON.stringify(
  18414. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18415. index
  18416. ].toolChoose[i].selectJson
  18417. )
  18418. )
  18419. : { url: "", select: [], answer: [] };
  18420. if (this.worksStudent[i].length) {
  18421. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18422. if (this.userid == this.worksStudent[i][k].userid) {
  18423. var a = this.worksStudent[i][k].works.split(",");
  18424. for (var ki = 0; ki < a.length; ki++) {
  18425. a[ki] = parseInt(a[ki]);
  18426. }
  18427. this.selectAnswer = {
  18428. answer: a,
  18429. stu: this.worksStudent[i][k].sName,
  18430. };
  18431. break;
  18432. } else {
  18433. this.selectAnswer = { answer: [], stu: "" };
  18434. }
  18435. }
  18436. } else {
  18437. this.selectAnswer = { answer: [], stu: "" };
  18438. }
  18439. this.isSelect = false;
  18440. this.dialogVisibleSelect = true;
  18441. } else if (t == 44) {
  18442. window.parent.postMessage({ tools: "44" }, "*");
  18443. } else if (t == 47) {
  18444. this.sentenceList = this.chapInfoList[this.courseType].chapterInfo[0]
  18445. .taskJson[index].toolChoose[i].sentenceList
  18446. ? JSON.parse(
  18447. JSON.stringify(
  18448. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18449. index
  18450. ].toolChoose[i].sentenceList
  18451. )
  18452. )
  18453. : [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }];
  18454. for (var q = 0; q < this.sentenceList.length; q++) {
  18455. this.sentenceList[q].chooseSenList = [];
  18456. this.sentenceList[q].addChangeSen = [];
  18457. this.sentenceList[q].addChangeSen = JSON.parse(
  18458. JSON.stringify(this.sentenceList[q].addSentence)
  18459. );
  18460. this.sentenceList[q].chooseSenList.length =
  18461. this.sentenceList[q].rightAnswer.length;
  18462. }
  18463. this.dialogVisibleSentence = true;
  18464. } else if (t == 48) {
  18465. this.tableJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18466. .taskJson[index].toolChoose[i].tableJson
  18467. ? JSON.parse(
  18468. JSON.stringify(
  18469. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18470. index
  18471. ].toolChoose[i].tableJson
  18472. )
  18473. )
  18474. : { text: "" };
  18475. this.tableJsonO = JSON.parse(JSON.stringify(this.tableJson));
  18476. if (this.worksStudent[i].length) {
  18477. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18478. if (this.userid == this.worksStudent[i][k].userid) {
  18479. this.tableJson = JSON.parse(this.worksStudent[i][k].works);
  18480. break;
  18481. }
  18482. }
  18483. }
  18484. this.dialogVisibleTable = true;
  18485. } else if (t == 52) {
  18486. this.wordJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18487. .taskJson[index].toolChoose[i].wordJson
  18488. ? JSON.parse(
  18489. JSON.stringify(
  18490. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18491. index
  18492. ].toolChoose[i].wordJson
  18493. )
  18494. )
  18495. : { text: "" };
  18496. this.wordJsonO = JSON.parse(JSON.stringify(this.wordJson));
  18497. if (this.worksStudent[i].length) {
  18498. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18499. if (this.userid == this.worksStudent[i][k].userid) {
  18500. this.wordJson = JSON.parse(this.worksStudent[i][k].works);
  18501. break;
  18502. }
  18503. }
  18504. }
  18505. this.dialogVisibleWord = true;
  18506. } else if (t == 49) {
  18507. if(!this.tcid2 && this.courseDetail.juri != '' && this.tType == "1"){
  18508. return
  18509. }
  18510. this.groupJson =
  18511. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18512. index
  18513. ].toolChoose[i].groupJson;
  18514. this.islock = this.groupJson.islock == 1 ? true : false;
  18515. this.dialogVisibleGroup = true;
  18516. } else if (t == 62) {
  18517. this.videoType = 0;
  18518. this.videoJson = {};
  18519. this.videoJson =
  18520. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18521. index
  18522. ].toolChoose[i].videoJson;
  18523. this.dialogVisibleVideo = true;
  18524. }
  18525. this.insertMemorandum(`点击工作区<span class="variable">工具${index+1}:${this.toolsList[t]}</span>`)
  18526. },
  18527. teacherWorkSubmit(t, i, index, s) {
  18528. this.sStudent = s;
  18529. this.toolindex = i;
  18530. this.sTool = t;
  18531. if (this.tType !== "1" && this.tType !== "4") {
  18532. return;
  18533. }
  18534. if (t == 16 || t == 32 || t == 50) {
  18535. this.dialogVisibleWorks = true;
  18536. } else if (t == 15) {
  18537. this.answerQ = this.chapInfoList[this.courseType].chapterInfo[0]
  18538. .taskJson[index].toolChoose[i].answerQ
  18539. ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
  18540. .toolChoose[i].answerQ
  18541. : "";
  18542. this.questionAnswer = "";
  18543. this.answerDialogVisibleTeacher = true; //问答
  18544. } else if (t == 52) {
  18545. this.wordJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18546. .taskJson[index].toolChoose[i].wordJson
  18547. ? JSON.parse(
  18548. JSON.stringify(
  18549. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18550. index
  18551. ].toolChoose[i].wordJson
  18552. )
  18553. )
  18554. : { text: "" };
  18555. if (this.worksStudent[i].length) {
  18556. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18557. if (this.sStudent.userid == this.worksStudent[i][k].userid) {
  18558. this.wordJson = JSON.parse(this.worksStudent[i][k].works);
  18559. break;
  18560. }
  18561. }
  18562. }
  18563. this.dialogVisibleWordTeacher = true; //文档
  18564. } else if (t == 4) {
  18565. this.radio = [];
  18566. this.noteName = "";
  18567. this.isAnswer = false;
  18568. if (this.askCount > 0) {
  18569. this.updateCount(this.askCount, t);
  18570. } else {
  18571. this.askCount++;
  18572. a = this.askCount;
  18573. this.toolsCount(a, t);
  18574. }
  18575. if (!this.dialogVisible2) {
  18576. this.askJson.askJson =
  18577. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18578. index
  18579. ].toolChoose[i].askJson;
  18580. this.askJson.askTitle =
  18581. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18582. index
  18583. ].toolChoose[i].askTitle;
  18584. this.askJson.askCount =
  18585. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18586. index
  18587. ].toolChoose[i].askCount;
  18588. } else {
  18589. this.askJson.askJson = this.chapTools.askJson.askJson;
  18590. this.askJson.askTitle = this.chapTools.askJson.askTitle;
  18591. this.askJson.askCount = this.chapTools.askJson.askCount;
  18592. }
  18593. for (var k = 0; k < this.askJson.askJson.length; k++) {
  18594. if (this.askJson.askJson[k].type == "2") {
  18595. this.radio.push([]);
  18596. } else {
  18597. this.radio.push("");
  18598. }
  18599. }
  18600. this.dialogVisible5Teacher = true;
  18601. } else if (t == 45) {
  18602. this.noteName = "";
  18603. this.radio = [];
  18604. this.isAnswer = false;
  18605. if (this.askCount > 0) {
  18606. this.updateCount(this.askCount, t);
  18607. } else {
  18608. this.askCount++;
  18609. a = this.askCount;
  18610. this.toolsCount(a, t);
  18611. }
  18612. this.testJson =
  18613. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18614. index
  18615. ].toolChoose[i].testJson;
  18616. for (var k = 0; k < this.testJson.testJson.length; k++) {
  18617. if (this.testJson.testJson[k].type == "2") {
  18618. this.radio.push([]);
  18619. } else {
  18620. this.radio.push("");
  18621. }
  18622. }
  18623. this.dialogVisibleChoiceTeacher = true;
  18624. } else if (t == 41) {
  18625. this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18626. .taskJson[index].toolChoose[i].selectJson
  18627. ? JSON.parse(
  18628. JSON.stringify(
  18629. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18630. index
  18631. ].toolChoose[i].selectJson
  18632. )
  18633. )
  18634. : { url: "", select: [], answer: [] };
  18635. if (this.worksStudent[i].length) {
  18636. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18637. if (this.sStudent.userid == this.worksStudent[i][k].userid) {
  18638. var a = this.worksStudent[i][k].works.split(",");
  18639. for (var ki = 0; ki < a.length; ki++) {
  18640. a[ki] = parseInt(a[ki]);
  18641. }
  18642. this.selectAnswer = {
  18643. answer: a,
  18644. stu: this.worksStudent[i][k].sName,
  18645. };
  18646. break;
  18647. } else {
  18648. this.selectAnswer = { answer: [], stu: "" };
  18649. }
  18650. }
  18651. } else {
  18652. this.selectAnswer = { answer: [], stu: "" };
  18653. }
  18654. this.isSelect = false;
  18655. this.dialogVisibleSelectTeacher = true;
  18656. } else if (t == 47) {
  18657. this.sentenceList = this.chapInfoList[this.courseType].chapterInfo[0]
  18658. .taskJson[index].toolChoose[i].sentenceList
  18659. ? JSON.parse(
  18660. JSON.stringify(
  18661. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18662. index
  18663. ].toolChoose[i].sentenceList
  18664. )
  18665. )
  18666. : [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }];
  18667. for (var q = 0; q < this.sentenceList.length; q++) {
  18668. this.sentenceList[q].chooseSenList = [];
  18669. this.sentenceList[q].addChangeSen = [];
  18670. this.sentenceList[q].addChangeSen = JSON.parse(
  18671. JSON.stringify(this.sentenceList[q].addSentence)
  18672. );
  18673. this.sentenceList[q].chooseSenList.length =
  18674. this.sentenceList[q].rightAnswer.length;
  18675. }
  18676. this.dialogVisibleSentenceTeacher = true;
  18677. } else if (t == 48) {
  18678. this.tableJson = this.chapInfoList[this.courseType].chapterInfo[0]
  18679. .taskJson[index].toolChoose[i].tableJson
  18680. ? JSON.parse(
  18681. JSON.stringify(
  18682. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18683. index
  18684. ].toolChoose[i].tableJson
  18685. )
  18686. )
  18687. : { text: "" };
  18688. if (this.worksStudent[i].length) {
  18689. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18690. if (this.sStudent.userid == this.worksStudent[i][k].userid) {
  18691. this.tableJson = JSON.parse(this.worksStudent[i][k].works);
  18692. break;
  18693. }
  18694. }
  18695. }
  18696. this.dialogVisibleTableTeacher = true;
  18697. } else if (t == 40) {
  18698. if (this.evalCount > 0) {
  18699. this.updateCount(this.evalCount, t);
  18700. } else {
  18701. this.evalCount++;
  18702. a = this.evalCount;
  18703. this.toolsCount(a, t);
  18704. }
  18705. this.eScore = { eBzText: "", eStar: [] };
  18706. if (this.worksStudent[i].length) {
  18707. for (var k = 0; k < this.worksStudent[i].length; k++) {
  18708. if (this.sStudent.userid == this.worksStudent[i][k].userid) {
  18709. this.eScore = JSON.parse(this.worksStudent[i][k].works);
  18710. this.rateJson =
  18711. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18712. index
  18713. ].toolChoose[i].rateJson;
  18714. break;
  18715. } else {
  18716. this.rateJson =
  18717. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18718. index
  18719. ].toolChoose[i].rateJson;
  18720. }
  18721. }
  18722. } else {
  18723. this.rateJson =
  18724. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18725. index
  18726. ].toolChoose[i].rateJson;
  18727. }
  18728. this.isStar = false;
  18729. this.studentEvalDialogVisibleTeacher = true;
  18730. } else if (t == 3 || t == 1 || t == 7 || t == 57) {
  18731. window.parent.postMessage(
  18732. {
  18733. tools: t + "teacher",
  18734. cid: this.id,
  18735. stage: this.courseType,
  18736. task: this.taskCount,
  18737. tool: i,
  18738. student: this.sStudent,
  18739. },
  18740. "*"
  18741. );
  18742. }
  18743. },
  18744. openCocoPi(tool, i, uid, uname) {
  18745. let student = {
  18746. userid: uid,
  18747. student: uname,
  18748. };
  18749. if (tool == 57) {
  18750. window.parent.postMessage(
  18751. {
  18752. tools: tool + "teacher",
  18753. cid: this.id,
  18754. stage: this.courseType,
  18755. task: this.taskCount,
  18756. tool: i,
  18757. student: student,
  18758. },
  18759. "*"
  18760. );
  18761. }
  18762. },
  18763. setRightAnswer(s, i, j) {
  18764. for (var q = 0; q < this.sentenceList[i].chooseSenList.length; q++) {
  18765. if (
  18766. this.sentenceList[i].chooseSenList[q] == undefined ||
  18767. this.sentenceList[i].chooseSenList[q] == ""
  18768. ) {
  18769. this.sentenceList[i].chooseSenList[q] = s;
  18770. this.sentenceList[i].addChangeSen[j] = "";
  18771. break;
  18772. }
  18773. }
  18774. this.$forceUpdate();
  18775. },
  18776. returnCard(r, i, j) {
  18777. var a = this.sentenceList[i].addSentence.indexOf(r);
  18778. this.sentenceList[i].chooseSenList[j] = "";
  18779. this.sentenceList[i].addChangeSen[a] = r;
  18780. this.$forceUpdate();
  18781. },
  18782. // addSentenceTool() {
  18783. // this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  18784. // this.taskCount
  18785. // ].toolChoose[this.toolindex].sentenceList = this.sentenceList;
  18786. // this.sentenceList = [
  18787. // { sentenceTitle: "", addSentence: [], rightAnswer: [] },
  18788. // ];
  18789. // this.dialogVisibleSentence = false;
  18790. // },
  18791. toolsCount(a, t) {
  18792. let params = {
  18793. cid: this.id,
  18794. chid: this.courseType,
  18795. uid: this.userid,
  18796. tid: t,
  18797. count: a,
  18798. };
  18799. this.ajax
  18800. .get(this.$store.state.api + "insertToolsCount", params)
  18801. .then((res) => {
  18802. this.selectCount();
  18803. })
  18804. .catch((err) => {
  18805. console.error(err);
  18806. });
  18807. },
  18808. updateCount(c, t) {
  18809. c++;
  18810. let params = {
  18811. cid: this.id,
  18812. chid: this.courseType,
  18813. uid: this.userid,
  18814. tid: t,
  18815. count: c,
  18816. };
  18817. this.ajax
  18818. .get(this.$store.state.api + "updateToolsCount", params)
  18819. .then((res) => {
  18820. this.selectCount();
  18821. })
  18822. .catch((err) => {
  18823. console.error(err);
  18824. });
  18825. },
  18826. checkEva() {
  18827. if (this.evalua != "") {
  18828. for (var i = 0; i < this.evaJuri.length; i++) {
  18829. if (this.evalua == this.evaJuri[i].id) {
  18830. this.eTitle = this.evaJuri[i].title;
  18831. this.eJson = JSON.parse(this.evaJuri[i].content);
  18832. }
  18833. }
  18834. this.$forceUpdate();
  18835. setTimeout(() => {
  18836. this.setMindData();
  18837. }, 0);
  18838. }
  18839. },
  18840. selectEva() {
  18841. let params = {
  18842. oid: this.oid,
  18843. };
  18844. this.ajax
  18845. .get(this.$store.state.api + "selectAllEvaluation", params)
  18846. .then((res) => {
  18847. this.evaJuri = res.data[0];
  18848. })
  18849. .catch((err) => {
  18850. console.error(err);
  18851. });
  18852. },
  18853. setMindData() {
  18854. this.data.data = [];
  18855. this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
  18856. let _eJson = Object.keys(this.eJson);
  18857. let _e = this.eJson;
  18858. for (let i = 0; i < _eJson.length; i++) {
  18859. let element = _e[_eJson[i]];
  18860. this.data.data.push({
  18861. id: element.id,
  18862. parentid: "root",
  18863. topic: element.name,
  18864. });
  18865. let _eJsonc = Object.keys(element.child);
  18866. let _e2 = element.child;
  18867. for (let j = 0; j < _eJsonc.length; j++) {
  18868. let _ec = _e2[_eJsonc[j]];
  18869. this.data.data.push({
  18870. id: _ec.id,
  18871. parentid: element.id,
  18872. topic: _ec.name,
  18873. });
  18874. let _eJsonz = Object.keys(_ec.child);
  18875. let _e3 = _ec.child;
  18876. for (let z = 0; z < _eJsonz.length; z++) {
  18877. let _ez = _e3[_eJsonz[z]];
  18878. this.data.data.push({
  18879. id: _ez.id,
  18880. parentid: _ec.id,
  18881. topic: _ez.name,
  18882. });
  18883. }
  18884. }
  18885. }
  18886. this.$forceUpdate();
  18887. },
  18888. checkFileFull(type, url) {
  18889. this.fullDialogVisible = true;
  18890. this.fulltype = type;
  18891. this.fullUrl = url;
  18892. },
  18893. async checkFileFull1(t, f) {
  18894. this.fullDialogVisible = true;
  18895. if (t == 6) {
  18896. this.fulltype = 1;
  18897. this.fullUrl = JSON.parse(JSON.stringify(f));
  18898. } else if (t == 8) {
  18899. this.fulltype = 2;
  18900. this.fullUrl = f.url;
  18901. } else if (
  18902. t == 3 &&
  18903. f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase() ==
  18904. "PDF"
  18905. ) {
  18906. this.fulltype = 3;
  18907. this.fullUrl = f.url;
  18908. } else if (t == 3) {
  18909. this.fulltype = 2;
  18910. let _uuurl = await this.checkLink(f.url);
  18911. console.log(_uuurl)
  18912. this.fullUrl =
  18913. "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
  18914. }
  18915. this.changeSplitScreenBehavior({code:0,form:{t:t,f:f}})
  18916. },
  18917. openSname(n, id, i, uid) {
  18918. this.snameWid = id;
  18919. this.worksSName = n;
  18920. this.worksSid = uid == n ? "" : uid;
  18921. this.toolindex = i;
  18922. this.uploadCid = this.tcid ? this.tcid : this.courseDetail.juri;
  18923. if (!this.uploadCid) {
  18924. this.$message.error(
  18925. "提示:批量上传未添加班级权限,请添加班级或从班级入口进入。"
  18926. );
  18927. return;
  18928. }
  18929. this.selectUploadStudent(1);
  18930. },
  18931. updateName() {
  18932. let params = {
  18933. n: this.worksSName,
  18934. cid: this.snameWid,
  18935. };
  18936. this.ajax
  18937. .get(this.$store.state.api + "updateCourseWorksName", params)
  18938. .then((res) => {
  18939. this.$message({
  18940. message: "修改成功",
  18941. type: "success",
  18942. });
  18943. this.dialogVisibleSname = false;
  18944. this.getCourseDetail(2);
  18945. this.snameWid = "";
  18946. this.worksSName = "";
  18947. })
  18948. .catch((err) => {
  18949. console.error(err);
  18950. });
  18951. },
  18952. downloadFile2(f) {
  18953. // const loading = this.$loading.service({
  18954. // background: "rgba(255, 255, 255, 0.7)",
  18955. // target: document.body,
  18956. // text: "文件加载中...",
  18957. // });
  18958. // let url2 = f.url;
  18959. // let _url2 = "";
  18960. // if (
  18961. // url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  18962. // ) {
  18963. // _url2 = url2.split(
  18964. // "https://view.officeapps.live.com/op/view.aspx?src="
  18965. // )[1];
  18966. // } else {
  18967. // _url2 = url2;
  18968. // }
  18969. // let params = {
  18970. // url: _url2,
  18971. // name: f.name,
  18972. // };
  18973. // this.ajax
  18974. // .get(this.$store.state.api + "download", params)
  18975. // .then((res) => {
  18976. // loading.close();
  18977. // let content = res.data.data.data;
  18978. // let ab = new ArrayBuffer(content.length);
  18979. // let view = new Uint8Array(ab);
  18980. // for (var i = 0; i < content.length; ++i) {
  18981. // view[i] = content[i];
  18982. // }
  18983. // let elink = document.createElement("a");
  18984. // elink.download = f.name;
  18985. // elink.style.display = "none";
  18986. // let blob = new Blob([ab], {
  18987. // type: res.data.response.headers["content-type"] + ";charset=UTF-8",
  18988. // });
  18989. // elink.href = URL.createObjectURL(blob);
  18990. // document.body.appendChild(elink);
  18991. // elink.click();
  18992. // document.body.removeChild(elink);
  18993. // })
  18994. // .catch((err) => {
  18995. // loading.close();
  18996. // console.error(err);
  18997. // });
  18998. var credentials = {
  18999. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  19000. secretAccessKey: "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",
  19001. }; //秘钥形式的登录上传
  19002. window.AWS.config.update(credentials);
  19003. window.AWS.config.region = "cn-northwest-1"; //设置区域
  19004. let url2 = f.url;
  19005. let _url2 = "";
  19006. if (
  19007. url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  19008. ) {
  19009. _url2 = url2.split(
  19010. "https://view.officeapps.live.com/op/view.aspx?src="
  19011. )[1];
  19012. } else {
  19013. _url2 = url2;
  19014. }
  19015. let _this = this;
  19016. _this.downLoading = true
  19017. var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
  19018. let name = decodeURIComponent(_url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1])
  19019. var params = {
  19020. Bucket: "ccrb",
  19021. Key: name
  19022. };
  19023. s3.getObject(params, function (err, data) {
  19024. _this.downLoading = false
  19025. if (err) console.log(err, err.stack); // an error occurred
  19026. else {
  19027. let url = window.URL.createObjectURL(new Blob([data.Body]));
  19028. let a = document.createElement("a");
  19029. a.name = f.name;
  19030. a.href = url;
  19031. a.download = f.name;
  19032. a.click();
  19033. console.log(data);
  19034. } // sxuccessful response
  19035. });
  19036. return;
  19037. let url = f.url;
  19038. let _url = "";
  19039. if (
  19040. url.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  19041. ) {
  19042. _url = url.split(
  19043. "https://view.officeapps.live.com/op/view.aspx?src="
  19044. )[1];
  19045. } else {
  19046. _url = url;
  19047. }
  19048. _this.downLoading = true
  19049. // const loading = _this.$loading.service({
  19050. // background: "rgba(255, 255, 255, 0.7)",
  19051. // target: document.body,
  19052. // text: "文件加载中...",
  19053. // });
  19054. let x = new XMLHttpRequest();
  19055. x.open("GET", _url, true);
  19056. x.responseType = "blob";
  19057. x.onload = function () {
  19058. _this.downLoading = false
  19059. // loading.close();
  19060. let url = window.URL.createObjectURL(new Blob([x.response]));
  19061. let a = document.createElement("a");
  19062. a.name = f.name;
  19063. a.href = url;
  19064. a.download = f.name;
  19065. a.click();
  19066. };
  19067. x.send();
  19068. },
  19069. downloadFile(url) {
  19070. var credentials = {
  19071. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  19072. secretAccessKey: "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",
  19073. }; //秘钥形式的登录上传
  19074. window.AWS.config.update(credentials);
  19075. window.AWS.config.region = "cn-northwest-1"; //设置区域
  19076. let url2 = url;
  19077. let _url2 = "";
  19078. if (
  19079. url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  19080. ) {
  19081. _url2 = url2.split(
  19082. "https://view.officeapps.live.com/op/view.aspx?src="
  19083. )[1];
  19084. } else {
  19085. _url2 = url2;
  19086. }
  19087. const loading2 = this.$loading.service({
  19088. background: "rgba(255, 255, 255, 0.7)",
  19089. target: document.body,
  19090. text: "文件加载中...",
  19091. });
  19092. var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
  19093. let name = decodeURIComponent(_url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1])
  19094. var params = {
  19095. Bucket: "ccrb",
  19096. Key: name
  19097. };
  19098. s3.getObject(params, function (err, data) {
  19099. loading2.close();
  19100. if (err) console.log(err, err.stack); // an error occurred
  19101. else {
  19102. let url = window.URL.createObjectURL(new Blob([data.Body]));
  19103. let a = document.createElement("a");
  19104. a.name = name;
  19105. a.href = url;
  19106. a.download = name;
  19107. a.click();
  19108. console.log(data);
  19109. } // sxuccessful response
  19110. });
  19111. return;
  19112. let _this = this;
  19113. let _url = "";
  19114. if (
  19115. url.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  19116. ) {
  19117. _url = url.split(
  19118. "https://view.officeapps.live.com/op/view.aspx?src="
  19119. )[1];
  19120. } else {
  19121. _url = url;
  19122. }
  19123. const x = new XMLHttpRequest();
  19124. x.open("GET", _url, true);
  19125. x.responseType = "blob";
  19126. // this.downLoading = true
  19127. const loading = _this.$loading.service({
  19128. background: "rgba(255, 255, 255, 0.7)",
  19129. target: document.body,
  19130. text: "文件加载中...",
  19131. });
  19132. // _this.$message.success("文件下载中...");
  19133. x.onload = function (e) {
  19134. this.downLoading = false
  19135. loading.close();
  19136. let content = x.response;
  19137. let elink = document.createElement("a");
  19138. elink.download = decodeURI(
  19139. _url.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1]
  19140. );
  19141. elink.style.display = "none";
  19142. let blob = new Blob([content]);
  19143. elink.href = URL.createObjectURL(blob);
  19144. document.body.appendChild(elink);
  19145. elink.click();
  19146. document.body.removeChild(elink);
  19147. };
  19148. x.send();
  19149. },
  19150. openLine(url) {
  19151. window.open(url);
  19152. },
  19153. resize() {
  19154. if (document.getElementsByClassName("box_course").length) {
  19155. var a = document.getElementsByClassName("box_course")[0].offsetHeight;
  19156. // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
  19157. if (this.showType == 2 || this.showType == 3) {
  19158. document.getElementsByClassName("navBox")[0].style.height =
  19159. a - 40 + 0+ "px";
  19160. } else {
  19161. document.getElementsByClassName("navBox")[0].style.height =
  19162. a - 40 + "px";
  19163. }
  19164. }
  19165. this.Stbodywidth =
  19166. document.getElementsByClassName("student_body").length &&
  19167. document.getElementsByClassName("student_body")[0].offsetWidth;
  19168. },
  19169. closeDraw() {
  19170. this.bg = null;
  19171. this.drawShow = false;
  19172. },
  19173. showPicturePaint(url) {
  19174. let params = {
  19175. img: url,
  19176. };
  19177. this.ajax
  19178. .get(this.$store.state.api + "imgToBase64", params)
  19179. .then((res) => {
  19180. this.drawShow = true;
  19181. this.bg = res.data[0].img;
  19182. })
  19183. .catch((err) => {
  19184. console.error(err);
  19185. });
  19186. },
  19187. addImgDraw(base64) {
  19188. let file = { name: "批注图.png" };
  19189. let img = this.dataUrlToFile(base64, file);
  19190. this.beforeUpload1(img, 5);
  19191. },
  19192. addImgDrawImG(url) {
  19193. // console.log(url);
  19194. let params = [
  19195. {
  19196. wid: this.commentDetail.wid,
  19197. img: url,
  19198. },
  19199. ];
  19200. this.ajax
  19201. .post(this.$store.state.api + "updateCourseWorks", params)
  19202. .then((res) => {
  19203. this.$message({
  19204. message: "提交成功",
  19205. type: "success",
  19206. });
  19207. this.drawShow = false;
  19208. this.bg = "";
  19209. this.selectSWorks();
  19210. this.selectStudent();
  19211. })
  19212. .catch((err) => {
  19213. this.$message.error("提交失败");
  19214. console.error(err);
  19215. });
  19216. },
  19217. deletePicturePaint() {
  19218. this.$confirm("确定删除此批注吗?", "提示", {
  19219. confirmButtonText: "确定",
  19220. cancelButtonText: "取消",
  19221. type: "warning",
  19222. })
  19223. .then(() => {
  19224. let params = [
  19225. {
  19226. wid: this.commentDetail.wid,
  19227. img: "",
  19228. },
  19229. ];
  19230. this.ajax
  19231. .post(this.$store.state.api + "updateCourseWorks", params)
  19232. .then((res) => {
  19233. this.$message({
  19234. message: "删除成功",
  19235. type: "success",
  19236. });
  19237. this.selectSWorks();
  19238. this.selectStudent();
  19239. })
  19240. .catch((err) => {
  19241. this.$message.error("删除失败");
  19242. console.error(err);
  19243. });
  19244. })
  19245. .catch(() => {});
  19246. },
  19247. getAudioVideo(constraintsData) {
  19248. if (navigator.mediaDevices === undefined) {
  19249. navigator.mediaDevices = {};
  19250. }
  19251. if (navigator.mediaDevices.getUserMedia === undefined) {
  19252. navigator.mediaDevices.getUserMedia = function (constraints) {
  19253. // 首先,如果有getUserMedia的话,就获得它
  19254. var getUserMedia =
  19255. navigator.getUserMedia ||
  19256. navigator.webkitGetUserMedia ||
  19257. navigator.mozGetUserMedia ||
  19258. navigator.msGetUserMedia;
  19259. // 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口
  19260. if (!getUserMedia) {
  19261. return Promise.reject({ code: 404 });
  19262. }
  19263. // 否则,为老的navigator.getUserMedia方法包裹一个Promise
  19264. return new Promise(function (resolve, reject) {
  19265. getUserMedia.call(navigator, constraints, resolve, reject);
  19266. });
  19267. };
  19268. }
  19269. return navigator.mediaDevices.getUserMedia(constraintsData);
  19270. },
  19271. /**
  19272. * 开始录制
  19273. */
  19274. startRecording(callback) {
  19275. let _function = (screenStream) => {
  19276. this.addStreamStopListener(screenStream, () => {
  19277. console.log("流停止监听");
  19278. this.stopRecording();
  19279. this.$emit("streamStop", {});
  19280. // this.stopRecording();
  19281. });
  19282. var options = {
  19283. type: "video",
  19284. mimeType: "video/webm",
  19285. disableLogs: false,
  19286. getNativeBlob: false, // enable it for longer recordings
  19287. ignoreMutedMedia: false,
  19288. };
  19289. // this.video.srcObject = screenStream;
  19290. this.recorder = RecordRTC(screenStream, options);
  19291. this.recorder.startRecording();
  19292. this.recorder.screen = screenStream;
  19293. this.videoStart = true;
  19294. // callback(true);
  19295. };
  19296. this.getAudioVideo({ audio: true })
  19297. .then((res) => {
  19298. this.captureScreen(_function, true);
  19299. console.log("已点击允许,开启成功");
  19300. })
  19301. .catch((err) => {
  19302. // console.log('浏览器不支持,请更换浏览器')
  19303. // } else {
  19304. this.captureScreen(_function, false);
  19305. console.log("请检查是否存在麦克风");
  19306. });
  19307. },
  19308. /**
  19309. * 停止录制
  19310. */
  19311. stopRecording(callback) {
  19312. this.recorder.stopRecording(() => {
  19313. // this.video.src = this.video.srcObject = null;
  19314. // this.video.src = URL.createObjectURL(this.recorder.getBlob());
  19315. const url = URL.createObjectURL(this.recorder.getBlob());
  19316. const a = document.createElement("a"); //this.fileName+
  19317. let videoFile = new File(
  19318. [this.recorder.getBlob()],
  19319. this.courseDetail.title + "录屏.mp4",
  19320. {
  19321. type: "video/mp4",
  19322. }
  19323. );
  19324. let downloadUrl = URL.createObjectURL(videoFile);
  19325. if(this.$refs.classRoomHelperRef){
  19326. this.$refs.classRoomHelperRef.checkUploadFile(videoFile)
  19327. }
  19328. document.body.appendChild(a);
  19329. a.style.display = "none";
  19330. a.href = url;
  19331. a.download = this.courseDetail.title + "录屏.mp4"; //this.fileName +
  19332. a.click();
  19333. this.recorder.screen.stop();
  19334. this.recorder.destroy();
  19335. this.recorder = null;
  19336. this.videoStart = false;
  19337. // callback(false);
  19338. });
  19339. },
  19340. //初始化
  19341. captureScreen(callback, type) {
  19342. if (navigator.getDisplayMedia) {
  19343. //录制结束,文件下载
  19344. navigator
  19345. .getDisplayMedia({
  19346. video: true,
  19347. })
  19348. .then((screenStream) => {
  19349. if (type) {
  19350. navigator.mediaDevices
  19351. .getUserMedia({ audio: true })
  19352. .then((mic) => {
  19353. screenStream.addTrack(mic.getTracks()[0]);
  19354. callback(screenStream);
  19355. });
  19356. } else {
  19357. callback(screenStream);
  19358. }
  19359. })
  19360. .catch(function (error) {
  19361. console.log("error", error);
  19362. });
  19363. } else if (navigator.mediaDevices.getDisplayMedia) {
  19364. navigator.mediaDevices
  19365. .getDisplayMedia({
  19366. video: true,
  19367. })
  19368. .then((screenStream) => {
  19369. if (type) {
  19370. navigator.mediaDevices
  19371. .getUserMedia({ audio: true })
  19372. .then((mic) => {
  19373. screenStream.addTrack(mic.getTracks()[0]);
  19374. callback(screenStream);
  19375. });
  19376. } else {
  19377. callback(screenStream);
  19378. }
  19379. })
  19380. .catch(function (error) {
  19381. console.log("error", error);
  19382. });
  19383. } else {
  19384. var error = "getDisplayMedia API are not supported in this browser.";
  19385. console.log("error", error);
  19386. alert(error);
  19387. }
  19388. },
  19389. //流监听
  19390. addStreamStopListener(stream, callback) {
  19391. stream.addEventListener(
  19392. "ended",
  19393. function () {
  19394. callback();
  19395. callback = function () {};
  19396. },
  19397. false
  19398. );
  19399. stream.addEventListener(
  19400. "inactive",
  19401. function () {
  19402. callback();
  19403. callback = function () {};
  19404. },
  19405. false
  19406. );
  19407. stream.getTracks().forEach(function (track) {
  19408. track.addEventListener(
  19409. "ended",
  19410. function () {
  19411. callback();
  19412. callback = function () {};
  19413. },
  19414. false
  19415. );
  19416. track.addEventListener(
  19417. "inactive",
  19418. function () {
  19419. callback();
  19420. callback = function () {};
  19421. },
  19422. false
  19423. );
  19424. });
  19425. },
  19426. updateGroup() {
  19427. this.groupJson2 = JSON.parse(JSON.stringify(this.groupJson));
  19428. this.dialogVisibleGroup2 = true;
  19429. },
  19430. numberPan() {
  19431. if (
  19432. /[^\d]/.test(this.groupJson.number) ||
  19433. this.groupJson.number < 2 ||
  19434. this.groupJson.number > 10
  19435. ) {
  19436. this.$message.error("请输入2-10的数字");
  19437. this.groupJson.number = "";
  19438. }
  19439. },
  19440. updateGroupJson() {
  19441. for (var i = 0; i < this.groupStudentUid[this.toolindex].length; i++) {
  19442. if (
  19443. this.groupStudentUid[this.toolindex][i].length >
  19444. this.groupJson2.number
  19445. ) {
  19446. this.$message.error("已经有小组比你设置的人数多,请重新设置");
  19447. return;
  19448. }
  19449. }
  19450. this.groupJson = JSON.parse(JSON.stringify(this.groupJson2));
  19451. this.islock = this.groupJson.islock == 1 ? true : false;
  19452. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
  19453. this.taskCount
  19454. ].toolChoose[this.toolindex].groupJson = this.groupJson;
  19455. let params = [
  19456. {
  19457. cid: this.id,
  19458. chapters: JSON.stringify(this.chapInfoList),
  19459. uid: this.userid,
  19460. unitIndex: this.courseType,
  19461. },
  19462. ];
  19463. this.ajax
  19464. .post(this.$store.state.api + "updateWorkNew4", params)
  19465. .then((res) => {
  19466. this.$message.success("设置成功");
  19467. this.getCourseDetail(2);
  19468. this.dialogVisibleGroup2 = false;
  19469. this.groupJson2 = {};
  19470. this.$forceUpdate();
  19471. })
  19472. .catch((err) => {
  19473. this.$message.error("网络不佳");
  19474. console.error(err);
  19475. });
  19476. },
  19477. lockChair() {
  19478. this.groupJson2 = JSON.parse(JSON.stringify(this.groupJson));
  19479. this.groupJson2.islock = this.groupJson2.islock == 1 ? 2 : 1;
  19480. this.updateGroupJson();
  19481. },
  19482. selectGroup(index) {
  19483. this.getCourseDetail(2, index);
  19484. },
  19485. joinGroup(index) {
  19486. if (this.groupJson.islock == 2) {
  19487. this.$message.error("位置已被锁定,无法加入");
  19488. return;
  19489. }
  19490. if (
  19491. this.groupStudent[this.toolindex][index].length >
  19492. this.groupJson.number ||
  19493. this.groupStudent[this.toolindex][index].length == this.groupJson.number
  19494. ) {
  19495. this.$message.error("位置已满,无法加入");
  19496. return;
  19497. }
  19498. let params = [
  19499. {
  19500. cid: this.id,
  19501. stage: this.courseType,
  19502. task: this.taskCount,
  19503. tool: this.toolindex,
  19504. g: index,
  19505. uid: this.userid,
  19506. },
  19507. ];
  19508. this.ajax
  19509. .post(this.$store.state.api + "joinGroup", params)
  19510. .then((res) => {
  19511. this.$message.success("加入成功");
  19512. this.getCourseDetail(2);
  19513. })
  19514. .catch((err) => {
  19515. this.$message.error("网络不佳");
  19516. console.error(err);
  19517. });
  19518. },
  19519. exitGroup(id) {
  19520. if (this.groupJson.islock == 2) {
  19521. this.$message.error("位置已被锁定,无法退出");
  19522. return;
  19523. }
  19524. let params = [
  19525. {
  19526. gid: id,
  19527. },
  19528. ];
  19529. this.ajax
  19530. .post(this.$store.state.api + "exitGroup", params)
  19531. .then((res) => {
  19532. this.$message.success("退出成功");
  19533. this.getCourseDetail(2);
  19534. })
  19535. .catch((err) => {
  19536. this.$message.error("网络不佳");
  19537. console.error(err);
  19538. });
  19539. },
  19540. groupUpload(index, task, gindex) {
  19541. this.taskCount = task;
  19542. this.toolindex = index;
  19543. this.groupIndex = gindex;
  19544. this.dialogVisibleGroupWork = true;
  19545. },
  19546. updateGroupChair(user) {
  19547. this.updateGroupArray = this.groupJson.group.filter((el, index) => {
  19548. el.label = index;
  19549. return index != user.group;
  19550. });
  19551. this.updateGroupUser = user;
  19552. this.dialogVisibleUpdateGroup = true;
  19553. },
  19554. updateChair() {
  19555. if (
  19556. this.groupStudent[this.toolindex][this.checkChair].length >
  19557. this.groupJson.number ||
  19558. this.groupStudent[this.toolindex][this.checkChair].length ==
  19559. this.groupJson.number
  19560. ) {
  19561. this.$message.error("位置已满,无法加入");
  19562. return;
  19563. }
  19564. let params = [
  19565. {
  19566. cid: this.id,
  19567. stage: this.courseType,
  19568. task: this.taskCount,
  19569. tool: this.toolindex,
  19570. g: this.checkChair,
  19571. uid: this.updateGroupUser.userid,
  19572. },
  19573. ];
  19574. this.ajax
  19575. .post(this.$store.state.api + "joinGroup", params)
  19576. .then((res) => {
  19577. this.$message.success("修改成功");
  19578. this.updateGroupUser = {};
  19579. this.checkChair = "";
  19580. this.updateGroupArray = {};
  19581. this.dialogVisibleUpdateGroup = false;
  19582. this.getCourseDetail(2);
  19583. })
  19584. .catch((err) => {
  19585. this.$message.error("网络不佳");
  19586. console.error(err);
  19587. });
  19588. },
  19589. deleteGroupChair(gindex) {
  19590. this.checkDeleteGroup = [];
  19591. this.deleteGroupUser = JSON.parse(
  19592. JSON.stringify(this.groupStudent[this.toolindex][gindex])
  19593. );
  19594. this.deleteGroupArray = this.groupJson.group[gindex];
  19595. this.groupIndex = gindex;
  19596. this.dialogVisibleDeleteGroup = true;
  19597. },
  19598. async deleteChair() {
  19599. for (let i = 0; i < this.checkDeleteGroup.length; i++) {
  19600. const gid =
  19601. this.groupStudent[this.toolindex][this.groupIndex][
  19602. this.groupStudentUid[this.toolindex][this.groupIndex].indexOf(
  19603. this.checkDeleteGroup[i]
  19604. )
  19605. ];
  19606. let params = [
  19607. {
  19608. gid: gid.id,
  19609. },
  19610. ];
  19611. var a = await this.deleteChairA(params);
  19612. if (i == this.checkDeleteGroup.length - 1) {
  19613. this.$message.success("退出成功");
  19614. this.dialogVisibleDeleteGroup = false;
  19615. this.deleteGroupUser = [];
  19616. this.deleteGroupArray = {};
  19617. this.groupIndex = "";
  19618. this.checkDeleteGroup = [];
  19619. this.getCourseDetail(2);
  19620. }
  19621. }
  19622. },
  19623. deleteChairA(params) {
  19624. return new Promise((resolve, reject) => {
  19625. this.ajax
  19626. .post(this.$store.state.api + "exitGroup", params)
  19627. .then((res) => {
  19628. resolve(1);
  19629. })
  19630. .catch((err) => {
  19631. this.$message.error("网络不佳");
  19632. console.error(err);
  19633. });
  19634. });
  19635. },
  19636. contract(i) {
  19637. if (this.isCloseList[i].isClose == 0) {
  19638. this.isCloseList[i].isClose = 1;
  19639. } else {
  19640. this.isCloseList[i].isClose = 0;
  19641. }
  19642. this.$forceUpdate();
  19643. },
  19644. openWordCloud(toolindex) {
  19645. let array = [];
  19646. for (var i = 0; i < this.worksStudent[toolindex].length; i++) {
  19647. let works = JSON.parse(this.worksStudent[toolindex][i].works)[0].answer;
  19648. array.push({ name: works });
  19649. }
  19650. if (this.isGroup) {
  19651. for (var i = 0; i < this.courseGroup.group.length; i++) {
  19652. let works = this.courseGroup.group[i].works[toolindex];
  19653. for (var j = 0; j < works.length; j++) {
  19654. let answer = JSON.parse(works[j].works)[0].answer;
  19655. array.push({ name: answer });
  19656. }
  19657. }
  19658. }
  19659. this.wordCloudData = array;
  19660. this.dialogVisibleWordCloud = true;
  19661. },
  19662. uploadWorks(i) {
  19663. this.$confirm("确定导出作业吗?", "提示", {
  19664. confirmButtonText: "确定",
  19665. cancelButtonText: "取消",
  19666. type: "warning",
  19667. })
  19668. .then(() => {
  19669. const loading = this.$loading.service({
  19670. background: "rgba(255, 255, 255, 0.7)",
  19671. target: document.body,
  19672. text: "文件加载中...",
  19673. });
  19674. const _worksStudent = this.worksStudent;
  19675. let url = [];
  19676. var counts = {};
  19677. for (var l = 0; l < _worksStudent[i].length; l++) {
  19678. var item = _worksStudent[i][l];
  19679. var name = item.sName;
  19680. if (!counts.hasOwnProperty(name)) {
  19681. counts[name] = 0;
  19682. } else {
  19683. counts[name]++;
  19684. }
  19685. if (counts[name] > 0) {
  19686. item.sName += " (" + counts[name] + ")";
  19687. }
  19688. }
  19689. for (var l = 0; l < _worksStudent[i].length; l++) {
  19690. var item = _worksStudent[i][l];
  19691. if (
  19692. item.works.indexOf(
  19693. "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn"
  19694. ) !== -1 &&
  19695. item.works.indexOf("img") === -1
  19696. ) {
  19697. url.push({ name: item.sName, url: item.works });
  19698. }
  19699. }
  19700. // var toolList = [
  19701. // { name: "电子白板", tool: 1 },
  19702. // { name: "思维导图", tool: 3 },
  19703. // { name: "协同文档", tool: 6 },
  19704. // { name: "思维网格", tool: 7 },
  19705. // { name: "素材库", tool: 8 },
  19706. // { name: "学习资料", tool: 17 },
  19707. // { name: "便签", tool: 2 },
  19708. // { name: "问卷调查", tool: 4 },
  19709. // { name: "选择题", tool: 45 },
  19710. // { name: "倒计时", tool: 10 },
  19711. // { name: "问答", tool: 15 },
  19712. // { name: "课程设计", tool: 26 },
  19713. // { name: "训练服务器", tool: 18 },
  19714. // { name: "作业提交", tool: 16 },
  19715. // { name: "批量上传", tool: 50 },
  19716. // { name: "AIoT Blockly", tool: 21 },
  19717. // { name: "AI Python", tool: 23 },
  19718. // { name: "AI Blockly", tool: 24 },
  19719. // { name: "目标管理", tool: 25 },
  19720. // { name: "数学画板", tool: 31 },
  19721. // { name: "翻译", tool: 28 },
  19722. // { name: "魔盒识字", tool: 37 },
  19723. // { name: "数学画板", tool: 31 },
  19724. // { name: "24点", tool: 38 },
  19725. // { name: "GeoGebra", tool: 39 },
  19726. // { name: "源码编辑", tool: 32 },
  19727. // { name: "个人评价", tool: 40 },
  19728. // { name: "选择匹配", tool: 41 },
  19729. // { name: "汉字宫", tool: 44 },
  19730. // { name: "排序", tool: 47 },
  19731. // { name: "表格", tool: 48 },
  19732. // { name: "文档", tool: 52 },
  19733. // { name: "学生分组", tool: 49 },
  19734. // { name: "CocoPi", tool: 57 },
  19735. // { name: "模拟驾驶", tool: 58 },
  19736. // { name: "路径搜索", tool: 59 },
  19737. // { name: "深度学习", tool: 60 },
  19738. // { name: "全历史", tool: 61 },
  19739. // { name: "交互视频", tool: 62 },
  19740. // { name: "海龟编程", tool: 63 },
  19741. // { name: "挑人", tool: 65 },
  19742. // { name: "公式编辑", tool: 66 },
  19743. // { name: "分子结构", tool: 67 },
  19744. // { name: "时间轴", tool: 68 },
  19745. // ];
  19746. // var toolName = "";
  19747. // for(var w = 0;w<toolList.length;w++){
  19748. // if(this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount].toolChoose[i].tool[0] == toolList[w].tool){
  19749. // toolName = toolList[w].name;
  19750. // }
  19751. // }
  19752. console.log(url);
  19753. this.downLoadAll(url, loading);
  19754. })
  19755. .catch(() => {});
  19756. },
  19757. downLoadAll(url, loading) {
  19758. const data = url; // 需要下载打包的路径, 可以是本地相对路径, 也可以是跨域的全路径
  19759. const zip = new JSZip();
  19760. const cache = {};
  19761. const promises = [];
  19762. data.forEach((item) => {
  19763. const promise = getFile(item.url).then((data) => {
  19764. if (data.data != 1) {
  19765. // 下载文件, 并存成ArrayBuffer对象
  19766. const file_name =
  19767. item.name +
  19768. "." +
  19769. item.url.split(".")[item.url.split(".").length - 1]; // 获取文件名
  19770. zip.file(file_name, data.data, { binary: true }); // 逐个添加文件
  19771. cache[file_name] = data.data;
  19772. }
  19773. });
  19774. promises.push(promise);
  19775. });
  19776. Promise.all(promises).then(() => {
  19777. zip.generateAsync({ type: "blob" }).then((content) => {
  19778. // 生成二进制流
  19779. FileSaver.saveAs(
  19780. content,
  19781. this.courseDetail.title + "-" + "作业提交工具.zip"
  19782. ); // 利用file-saver保存文件 自定义文件名
  19783. setTimeout(() => {
  19784. loading.close();
  19785. }, 2000);
  19786. });
  19787. });
  19788. },
  19789. pickStudent(stu) {
  19790. if (this.isPickStudent.indexOf(stu.userid) !== -1) {
  19791. return;
  19792. }
  19793. this.$confirm(`是否让${stu.name}同学回答问题?`, "提示", {
  19794. confirmButtonText: "确定",
  19795. cancelButtonText: "取消",
  19796. type: "warning",
  19797. })
  19798. .then(() => {
  19799. let params = [
  19800. {
  19801. uid: stu.userid,
  19802. cid: this.id,
  19803. stage: this.courseType,
  19804. task: this.taskCount,
  19805. tool: this.toolindex,
  19806. },
  19807. ];
  19808. this.ajax
  19809. .post(this.$store.state.api + "updateCoursePick", params)
  19810. .then((res) => {
  19811. this.$message.success("操作成功");
  19812. this.getPick();
  19813. })
  19814. .catch((err) => {
  19815. this.$message.error("网络不佳");
  19816. console.error(err);
  19817. });
  19818. })
  19819. .catch(() => {});
  19820. },
  19821. selectUser(){
  19822. let params = {
  19823. userid: this.userid,
  19824. };
  19825. this.ajax
  19826. .get(this.$store.state.api + "selectUser", params)
  19827. .then((res) => {
  19828. this.userMes = res.data[0];
  19829. })
  19830. .catch((err) => {
  19831. console.error(err);
  19832. });
  19833. },
  19834. setEngText(i){
  19835. this.newEngIndex = i;
  19836. this.$forceUpdate();
  19837. },
  19838. addCorrect(){
  19839. this.$confirm("你确定提交批改嘛?", "提示", {
  19840. confirmButtonText: "确定",
  19841. showCancelButton: false,
  19842. closeOnClickModal: false,
  19843. type: "warning",
  19844. })
  19845. .then(() => {
  19846. let params = {
  19847. cid: this.id,
  19848. s: parseInt(this.courseType),
  19849. t: this.taskCount,
  19850. tool: this.toolindex,
  19851. wid: this.engWid,
  19852. c: this.userid,
  19853. w: this.userMes[0].type == 2 ? JSON.parse(this.newEnglishList) : (this.newEngIndex == -1 && this.isNoUserid == true && this.newEnglishList1.length) ? JSON.stringify(this.oldEnglishJson1) : this.newEngIndex == -1 ? JSON.stringify(this.newEnglishList) : (this.newEngIndex > -1 && this.newEnglishList1.length > 0) ? JSON.stringify(this.newEnglishList1[this.newEngIndex].cWork) : "",
  19854. };
  19855. this.ajax
  19856. .get(this.$store.state.api + "addEngC", params)
  19857. .then((res) => {
  19858. this.$message.success("提交成功");
  19859. this.engUpdateDialogVisible = false;
  19860. })
  19861. .catch((err) => {
  19862. console.error(err);
  19863. });
  19864. })
  19865. .catch(() => {});
  19866. },
  19867. selectEngC(id,z){
  19868. let params = {
  19869. workid: id,
  19870. };
  19871. this.ajax
  19872. .get(this.$store.state.api + "selectEngC", params)
  19873. .then((res) => {
  19874. if(res.data[0].length == 0){
  19875. this.newEnglishList.engTitle = z.engTitle;
  19876. this.newEnglishList.engText = z.engText;
  19877. }else{
  19878. var a = res.data[0];
  19879. var ppp = JSON.parse(JSON.stringify(res.data[0]));
  19880. if(this.userMes[0].type == 2){
  19881. var snum = 0;
  19882. for(var i = 0;i<a.length;i++){
  19883. if(this.userMes[0].userid == a[i].correct){
  19884. this.newEnglishList = JSON.parse(a[i].cWork);
  19885. snum = 1;
  19886. }
  19887. }
  19888. if(snum == 0){
  19889. this.newEnglishList = { engTitle:"",engText:"" };
  19890. this.newEnglishList.engTitle = z.engTitle;
  19891. this.newEnglishList.engText = z.engText;
  19892. }
  19893. }else if(this.userMes[0].type == 1){
  19894. var num = 0;
  19895. for(var w= 0;w<a.length;w++){
  19896. if(this.userMes[0].userid == a[w].correct){
  19897. num = 1;
  19898. }
  19899. }
  19900. if(num == 0){
  19901. this.isNoUserid = true;
  19902. var c = JSON.parse(JSON.stringify(z));
  19903. this.oldEnglishJson1 = c;
  19904. }else{
  19905. this.isNoUserid = false;
  19906. }
  19907. var b = a.sort((item, index) => {
  19908. console.log(item)
  19909. if (item.correct === this.userMes[0].userid) {
  19910. return -1; // 将a移到前面
  19911. } else if (index.correct === this.userMes[0].userid) {
  19912. return 1; // 将b移到前面
  19913. } else {
  19914. return 0; // 保持默认顺序
  19915. }
  19916. });
  19917. for(var p = 0;p<b.length;p++){
  19918. for(var y = 0;y<ppp.length;y++){
  19919. if(b[p].id == ppp[y].id){
  19920. b[p].cWork = JSON.parse(ppp[y].cWork);
  19921. break
  19922. }
  19923. }
  19924. }
  19925. this.newEnglishList1 = b;
  19926. }
  19927. }
  19928. this.greyType = false;
  19929. setTimeout(() => {
  19930. this.topHeight = document.querySelectorAll(".engUpTop")[0].offsetHeight;
  19931. if(this.newEnglishList1.length > 0){
  19932. if(this.isNoUserid == true){
  19933. this.engListLength = this.newEnglishList1.length + 1;
  19934. this.newEngIndex = -1;
  19935. }else{
  19936. this.engListLength = this.newEnglishList1.length;
  19937. this.newEngIndex = 0;
  19938. }
  19939. }
  19940. if(this.userMes[0].type == 2){
  19941. this.correctWord = Diff.diffWordsWithSpace(this.oldEnglishJson.engText,this.newEnglishList.engText);
  19942. }else if(this.newEngIndex == -1 && this.isNoUserid == true && this.newEnglishList1.length){
  19943. this.correctWord = Diff.diffWordsWithSpace(this.oldEnglishJson.engText,this.oldEnglishJson1.engText);
  19944. }else if(this.newEngIndex == -1){
  19945. this.correctWord = Diff.diffWordsWithSpace(this.oldEnglishJson.engText,this.newEnglishList.engText);
  19946. }else if(this.newEngIndex > -1 && this.newEnglishList1.length > 0){
  19947. this.correctWord = Diff.diffWordsWithSpace(this.oldEnglishJson.engText,this.newEnglishList1[this.newEngIndex].cWork.engText);
  19948. }
  19949. }, 500);
  19950. this.engUpdateDialogVisible = true;
  19951. this.$forceUpdate();
  19952. })
  19953. .catch((err) => {
  19954. console.error(err);
  19955. });
  19956. },
  19957. getPick() {
  19958. let params = {
  19959. cid: this.id,
  19960. };
  19961. this.ajax
  19962. .get(this.$store.state.api + "getPick", params)
  19963. .then((res) => {
  19964. let array = [];
  19965. for (var i = 0; i < res.data[0].length; i++) {
  19966. array.push(res.data[0][i].userid);
  19967. }
  19968. this.isPickStudent = array;
  19969. if (array.indexOf(this.userid) !== -1) {
  19970. this.$confirm("你被老师选到啦!", "提示", {
  19971. confirmButtonText: "确定",
  19972. showCancelButton: false,
  19973. closeOnClickModal: false,
  19974. type: "warning",
  19975. })
  19976. .then(() => {
  19977. let pa = [
  19978. {
  19979. uid: this.userid,
  19980. cid: this.id,
  19981. },
  19982. ];
  19983. this.ajax
  19984. .post(this.$store.state.api + "deletePick", pa)
  19985. .then((res) => {
  19986. this.getPick();
  19987. })
  19988. .catch((err) => {
  19989. this.$message.error("网络不佳");
  19990. console.error(err);
  19991. });
  19992. })
  19993. .catch(() => {});
  19994. }
  19995. })
  19996. .catch((err) => {
  19997. this.$message.error("网络不佳");
  19998. console.error(err);
  19999. });
  20000. },
  20001. foldEva() {
  20002. if (this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount].isEvaFold2) {
  20003. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount].isEvaFold2 = false;
  20004. } else {
  20005. this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount].isEvaFold2 = true;
  20006. setTimeout(() => {
  20007. this.checkEva();
  20008. setTimeout(() => {
  20009. this.checkEva();
  20010. }, 500);
  20011. }, 0);
  20012. }
  20013. this.$forceUpdate();
  20014. },
  20015. panToolHeight(tool) {
  20016. var _tool = document.querySelectorAll('#'+tool)[0]
  20017. var _toolA = _tool ? _tool.offsetHeight : 0
  20018. var _toolC = 0
  20019. var _toolC = _tool && _tool.children && _tool.children[0] ? _tool.children[0].offsetHeight + 50 : 0
  20020. let boolean2 = (_toolA > _toolC) ? true : false
  20021. this.isCloseList[tool.split('-')[1]].isCloseBoolean = boolean2
  20022. this.$forceUpdate();
  20023. },
  20024. async checkLink(url) {
  20025. // console.log(url)
  20026. let _url = url
  20027. try {
  20028. const response = await fetch(url);
  20029. if(!response.ok){
  20030. _url = await this.checkLink("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/" + encodeURIComponent(_url.split('https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/')[1]))
  20031. }
  20032. // console.log(response.ok)
  20033. } catch (error) {
  20034. console.error('Error checking link:', error);
  20035. // console.log(false)
  20036. _url = await this.checkLink("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/" + encodeURIComponent(_url.split('https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/')[1]))
  20037. }
  20038. // console.log(_url)
  20039. return _url
  20040. },
  20041. getScoreList(){
  20042. let params = {
  20043. cid: this.id,
  20044. };
  20045. this.ajax
  20046. .get(this.$store.state.api + "selectTestCourseByCid", params)
  20047. .then((res) => {
  20048. let result = res.data;
  20049. this.scoreList.datalist = result[0];
  20050. this.scoreList.isScoreList = result[1];
  20051. })
  20052. .catch((err) => {
  20053. console.error(err);
  20054. });
  20055. },
  20056. setClassRoomHelperWidth(width){
  20057. this.classRoomHelperWidth = width
  20058. },
  20059. openChoseWorksDetailDialog(tooC, toolIndex, taskCount,tooc) {
  20060. this.$refs.choseWorksDetailDialogRef.open({
  20061. toolType:tooc,
  20062. tType: this.tType,
  20063. toolIndex: toolIndex
  20064. });
  20065. this.changeSplitScreenBehavior({
  20066. code: 1,
  20067. form: {
  20068. toolType:tooc,
  20069. toolIndex: toolIndex,
  20070. courseType: this.courseType,
  20071. taskCount: this.taskCount,
  20072. type: 0
  20073. }
  20074. });
  20075. },
  20076. openStatisticalAnalysis(tooC, toolIndex, taskCount) {
  20077. this.$refs.statisticalAnalysisRef.open({
  20078. worksStudent: this.worksStudent[toolIndex],
  20079. tType: this.tType,
  20080. toolIndex: toolIndex
  20081. });
  20082. this.changeSplitScreenBehavior({
  20083. code: 2,
  20084. form: {
  20085. toolType:4,
  20086. courseType: this.courseType,
  20087. taskCount: this.taskCount,
  20088. toolIndex: toolIndex,
  20089. type: 0
  20090. }
  20091. });
  20092. },
  20093. statisticalAnalysisRefresh(toolIndex) {
  20094. this.$refs.statisticalAnalysisRef.refreshData({
  20095. worksStudent: this.worksStudent[toolIndex],
  20096. tType: this.tType,
  20097. toolIndex: toolIndex
  20098. });
  20099. },
  20100. async splitScreenBehavior(type = 0) {
  20101. // return;
  20102. if (this.splitScreenData.loading)
  20103. return this.$message.info("操作过快,请稍等");
  20104. if (type == 0) {
  20105. //关闭分屏
  20106. this.splitScreenData.isOpen = false;
  20107. // this.splitScreenData.userId = "";
  20108. // this.splitScreenData.uid = "";
  20109. this.splitScreenData.behavior = null;
  20110. await this.updateSplitScreenData(1);
  20111. this.$message.success("已关闭分屏模式");
  20112. this.studentFreePreview(false);
  20113. this.OpenJobPreview(false);
  20114. // this.followingMode(false);
  20115. } else if (type == 1) {
  20116. //开启分屏
  20117. this.splitScreenData.isOpen = true;
  20118. this.splitScreenData.userId = this.userid;
  20119. this.splitScreenData.uid = this.splitScreenData.myUid;
  20120. this.splitScreenData.behavior = null;
  20121. let status = await this.updateSplitScreenData(0);
  20122. this.changeSplitScreenBehavior({form:{}})
  20123. if (status == 1) {
  20124. this.$message.success("已开启分屏");
  20125. this.studentFreePreview(true);
  20126. this.OpenJobPreview(true);
  20127. // this.followingMode(true);
  20128. } else {
  20129. this.splitScreenData.isOpen = false;
  20130. this.splitScreenData.userId = "";
  20131. this.splitScreenData.uid = "";
  20132. this.splitScreenData.behavior = null;
  20133. this.$message.success("分屏开启失败");
  20134. }
  20135. }
  20136. },
  20137. getSplitScreenData() {
  20138. // return;
  20139. if (this.tType != 1) return;
  20140. let params = {
  20141. cid: this.id
  20142. };
  20143. this.ajax
  20144. .get(this.$store.state.api + "select_courseSplitScreenData", params)
  20145. .then(async res => {
  20146. let data = res.data[0][0]["splitScreenData"];
  20147. console.log("获取了分屏数:", data);
  20148. if (data) {
  20149. data = JSON.parse(data);
  20150. if (
  20151. !this.splitScreenData.isOpen &&
  20152. data.isOpen &&
  20153. this.splitScreenData.myUid == data.uid
  20154. ) {
  20155. this.splitScreenData.isOpen = false;
  20156. this.splitScreenData.userId = "";
  20157. this.splitScreenData.uid = "";
  20158. this.splitScreenData.behavior = null;
  20159. await this.updateSplitScreenData(1);
  20160. } else if (!this.splitScreenData.isOpen && data.isOpen) {
  20161. this.splitScreenData.isOpen = true;
  20162. this.splitScreenData.uid = data.uid;
  20163. this.splitScreenData.userId = data.userId;
  20164. this.splitScreenData.behavior = data.behavior;
  20165. this.$message.success("分屏模式已开启");
  20166. } else if (this.splitScreenData.isOpen && !data.isOpen) {
  20167. this.splitScreenData.isOpen = false;
  20168. this.splitScreenData.userId = "";
  20169. this.splitScreenData.uid = "";
  20170. this.splitScreenData.behavior = null;
  20171. this.$message.error("已结束分屏模式");
  20172. } else if (this.splitScreenData.isOpen && data.isOpen) {
  20173. this.splitScreenData.isOpen = true;
  20174. this.splitScreenData.uid = data.uid;
  20175. this.splitScreenData.userId = data.userId;
  20176. this.splitScreenData.behavior = data.behavior;
  20177. }
  20178. this.doSplitScreenBehavior();
  20179. } else {
  20180. if (this.splitScreenData.isOpen) {
  20181. this.splitScreenData.isOpen = false;
  20182. this.splitScreenData.userId = "";
  20183. this.splitScreenData.uid = "";
  20184. this.splitScreenData.behavior = null;
  20185. this.$message.error("已结束分屏模式");
  20186. }
  20187. }
  20188. })
  20189. .catch(e => {
  20190. console.log("获取分屏数出错:", e);
  20191. });
  20192. },
  20193. doSplitScreenBehavior() {
  20194. if (
  20195. this.splitScreenData.isOpen &&
  20196. this.splitScreenData.uid != this.splitScreenData.myUid
  20197. ) {
  20198. let behavior = this.splitScreenData.behavior;
  20199. if (behavior) {
  20200. if (behavior.code === 99) {
  20201. //初始化
  20202. this.fullDialogVisible = false;
  20203. if(this.$refs.choseWorksDetailDialogRef.show){
  20204. this.$refs.choseWorksDetailDialogRef.close();
  20205. }
  20206. if(this.$refs.statisticalAnalysisRef.show){
  20207. this.$refs.statisticalAnalysisRef.close();
  20208. }
  20209. } else if (behavior.code === 0) {
  20210. //开启内容列表弹窗
  20211. this.checkFileFull1(behavior.form.t, behavior.form.f);
  20212. } else if (behavior.code === 1) {
  20213. //关于选择题的作业详细的操作
  20214. // toolIndex:toolIndex,courseType:this.courseType,taskCount:this.taskCount,type:0
  20215. if(this.courseType!==behavior.form.courseType || this.taskCount!==behavior.form.taskCount){
  20216. this.courseType = behavior.form.courseType;
  20217. this.taskCount = behavior.form.taskCount;
  20218. }
  20219. this.$nextTick(() => {
  20220. if (this.$refs.choseWorksDetailDialogRef.show) {
  20221. //已经打开了
  20222. this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType,lookWorks:behavior.form.lookWorks})
  20223. } else {
  20224. this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,lookWorks:behavior.form.lookWorks})
  20225. }
  20226. });
  20227. }else if(behavior.code === 2){
  20228. if(this.$refs.statisticalAnalysisRef.show){
  20229. this.$refs.statisticalAnalysisRef.splitScreenFn({type:behavior.form.type})
  20230. }else{
  20231. this.$refs.statisticalAnalysisRef.open({
  20232. worksStudent: this.worksStudent[behavior.form.toolIndex],
  20233. tType: this.tType,
  20234. toolIndex: behavior.form.toolIndex
  20235. });
  20236. }
  20237. }
  20238. if(behavior.form.taskCount!=="" && behavior.form.courseType !==""){
  20239. if(this.courseType !=behavior.form.courseType){
  20240. this.courseType = behavior.form.courseType;
  20241. }
  20242. if(this.taskCount !=behavior.form.taskCount){
  20243. this.taskCount = behavior.form.taskCount;
  20244. }
  20245. var a = document.scrollingElement;
  20246. let target = document.querySelector(`#gj${behavior.form.toolType}`);
  20247. if (target) {
  20248. target.scrollIntoView(true);
  20249. setTimeout(() => {
  20250. a.scrollTop = 0
  20251. }, 0);
  20252. }
  20253. if(behavior.form.navId){
  20254. this.navId = behavior.form.navId
  20255. }
  20256. this.setContent2(false)
  20257. }
  20258. } else {
  20259. }
  20260. }
  20261. },
  20262. updateSplitScreenData(empty = 0) {
  20263. return new Promise(resolve => {
  20264. if(this.userid!==this.courseDetail.userid){
  20265. if(!this.courseDetail.userid){
  20266. return setTimeout(()=>{
  20267. this.updateSplitScreenData(empty)
  20268. },2000)
  20269. }
  20270. return;
  20271. };
  20272. if (
  20273. this.splitScreenData.uid == this.splitScreenData.myUid &&
  20274. this.splitScreenData.userId == this.userid
  20275. ) {
  20276. this.splitScreenData.loading = true;
  20277. let params = [
  20278. {
  20279. cid: this.id,
  20280. nData: empty === 1 ? "" : JSON.stringify(this.splitScreenData)
  20281. }
  20282. ];
  20283. this.ajax
  20284. .post(
  20285. this.$store.state.api + "update_courseSplitScreenData",
  20286. params
  20287. )
  20288. .then(res => {
  20289. this.splitScreenData.loading = false;
  20290. if (res.data == 1) {
  20291. resolve(1);
  20292. console.log("修改分屏数据成功");
  20293. }
  20294. })
  20295. .catch(e => {
  20296. this.splitScreenData.loading = false;
  20297. console.log("修改分屏数据失败", e);
  20298. resoleve(0);
  20299. });
  20300. } else if (empty == 2 && this.tType == 1) {
  20301. let params = [
  20302. {
  20303. cid: this.id,
  20304. nData: ""
  20305. }
  20306. ];
  20307. return this.ajax
  20308. .post(
  20309. this.$store.state.api + "update_courseSplitScreenData",
  20310. params
  20311. )
  20312. .then(_ => resolve(1))
  20313. .catch(_ => resolve(0));
  20314. } else {
  20315. return resolve(0);
  20316. }
  20317. });
  20318. },
  20319. changeSplitScreenBehavior(newValue) {
  20320. if (
  20321. this.splitScreenData.isOpen &&
  20322. this.splitScreenData.uid == this.splitScreenData.myUid
  20323. ) {
  20324. let _behavior = null;
  20325. if(!newValue){
  20326. _behavior = {}
  20327. }else{
  20328. _behavior = newValue
  20329. }
  20330. if(_behavior.form){
  20331. _behavior.form.taskCount = this.taskCount;
  20332. _behavior.form.courseType = this.courseType
  20333. }else{
  20334. _behavior.form = {
  20335. taskCount:this.taskCount,
  20336. courseType:this.courseType
  20337. }
  20338. }
  20339. this.splitScreenData.behavior = _behavior;
  20340. this.updateSplitScreenData(0);
  20341. }
  20342. },
  20343. studentFreePreview(flag) {
  20344. this.IsLookOpen = flag;
  20345. this.followingMode(flag)
  20346. this.updateLookOpen();
  20347. },
  20348. OpenJobPreview(flag) {
  20349. this.sIsOpen = flag;
  20350. this.updateSLook();
  20351. },
  20352. followingMode(flag) {
  20353. this.IsFollow = flag;
  20354. this.updateFollow();
  20355. }
  20356. },
  20357. directives: {
  20358. // 使用局部注册指令的方式
  20359. resize: {
  20360. // 指令的名称
  20361. bind(el, binding) {
  20362. // el为绑定的元素,binding为绑定给指令的对象
  20363. let width = "",
  20364. height = "";
  20365. function isReize() {
  20366. const style = document.defaultView.getComputedStyle(el);
  20367. if (width !== style.width || height !== style.height) {
  20368. binding.value(); // 关键
  20369. }
  20370. width = style.width;
  20371. height = style.height;
  20372. }
  20373. el.__vueSetInterval__ = setInterval(isReize, 300);
  20374. },
  20375. unbind(el) {
  20376. clearInterval(el.__vueSetInterval__);
  20377. },
  20378. },
  20379. autoHeight: {
  20380. update(el, binding) {
  20381. const { value } = binding
  20382. if (value && typeof value === 'number') {
  20383. el.style.height = `${value}px`
  20384. } else {
  20385. el.style.height = 'auto'
  20386. }
  20387. },
  20388. componentUpdated(el) {
  20389. el.style.height = `${el.scrollHeight + 5}px`
  20390. },
  20391. },
  20392. },
  20393. beforeDestroy() {
  20394. window.onresize = null;
  20395. clearInterval(this.timer);
  20396. this.timer = null;
  20397. clearInterval(this.opertimer);
  20398. this.opertimer = null;
  20399. this.updateSplitScreenData(1);
  20400. },
  20401. computed: {
  20402. getHeight(){
  20403. return document.querySelectorAll(".engUpTop")[0].offsetHeight;
  20404. },
  20405. contentConvent() {
  20406. return function (c) {
  20407. return c
  20408. ? c
  20409. .replaceAll(/\r\n/g, "<br/>")
  20410. .replaceAll(/\n/g, "<br/>")
  20411. .replaceAll(/\s/g, " &nbsp")
  20412. : "";
  20413. };
  20414. },
  20415. MarkdownT() {
  20416. return function (c) {
  20417. let md = new MarkdownIt();
  20418. return c
  20419. ? md.render(c) : "";
  20420. };
  20421. },
  20422. commentRight(){
  20423. if(!this.orgArray.includes(this.org) && !this.oidArray.includes(this.oid)){
  20424. return "35px";
  20425. }
  20426. return `calc(${this.classRoomHelperWidth} + 5px)`
  20427. // if(this.$refs["classRoomHelperRef"].type==0){
  20428. // return "100px";
  20429. // }else if(this.$refs["classRoomHelperRef"].type==1){
  20430. // return "502px"
  20431. // }else{
  20432. // return "0px"
  20433. // }
  20434. },
  20435. checkUpload() {
  20436. return function () {
  20437. var studentK = [];
  20438. if (this.plworkFile.length > 0) {
  20439. for (var z = 0; z < this.plworkFile.length; z++) {
  20440. studentK.push(this.plworkFile[z].username);
  20441. }
  20442. studentK = studentK.join(",");
  20443. }
  20444. var a = this.uploadStudentJuri.filter((el) => {
  20445. return studentK.indexOf(el.userid) == -1;
  20446. });
  20447. return a;
  20448. };
  20449. },
  20450. getSName() {
  20451. return function (name) {
  20452. var check = name;
  20453. this.uploadStudentJuri.forEach((el) => {
  20454. if (el.userid == check) {
  20455. check = el.name ? el.name : el.username;
  20456. }
  20457. });
  20458. return check;
  20459. };
  20460. },
  20461. getImgList() {
  20462. return function (val) {
  20463. let srcList = []; // 定义一个数组用来接收后面的img地址
  20464. val.replace(
  20465. /<img [^>]*src=['"]([^'"]+)[^>]*>/g,
  20466. function (match, capture) {
  20467. // 查找匹配的元素 match为整个img标签 capture为src中的内容
  20468. srcList.push(capture);
  20469. }
  20470. );
  20471. return srcList;
  20472. };
  20473. },
  20474. retrnToolHeight(){
  20475. return function (tool) {
  20476. var _tool = document.querySelectorAll('#'+tool)[0]
  20477. return _tool ? document.querySelectorAll('#'+tool)[0].children[0].offsetHeight + 30 + 'px' : 0;
  20478. };
  20479. },
  20480. Correct() {
  20481. return function (c,d) {
  20482. let w = "";
  20483. let a = this.correctWord;
  20484. for(var k = 0;k<a.length;k++){
  20485. //diffWordsWithSpace
  20486. if(a.length > 1){
  20487. if(a[k].added == true){
  20488. w += '<span style="background-color: green;color:#fff">' + a[k].value + '</span>';
  20489. }else if(a[k].removed == true){
  20490. w += '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
  20491. }else{
  20492. w += '<span>' + a[k].value + '</span>';
  20493. }
  20494. }else{
  20495. w = c
  20496. }
  20497. console.log("👇👇!+++==")
  20498. console.log(w)
  20499. //diffChars方法
  20500. // if(w == ""){
  20501. // if(a.length > 1){
  20502. // if(a[k].added == true){
  20503. // w = '<span>' + a[k - 1].value + '</span>' + '<span style="background-color: green;color:#fff">' + a[k].value + '</span>';
  20504. // }else if(a[k].removed == true){
  20505. // w = '<span>' + a[k - 1].value + '</span>' + '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
  20506. // }
  20507. // }else{
  20508. // w = c
  20509. // }
  20510. // }else{
  20511. // if(k == a.length - 1){
  20512. // if(a[k].added == true){
  20513. // w += '<span style="background-color: green;color:#fff">' + a[k].value + '</span>';
  20514. // }else if(a[k].removed == true){
  20515. // w += '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
  20516. // }
  20517. // }else{
  20518. // if(a[k].added == true){
  20519. // w += '<span>' + a[k - 1].value + '</span>' + '<span style="background-color: green;color:#fff">' + a[k].value + '</span>';
  20520. // }else if(a[k].removed == true){
  20521. // w += '<span>' + a[k - 1].value + '</span>' + '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
  20522. // }
  20523. // }
  20524. // }
  20525. }
  20526. c = w;
  20527. return c;
  20528. };
  20529. },
  20530. },
  20531. mounted() {
  20532. document.body.addEventListener("click", (e) => {
  20533. if (this.isUpdateToolDetail1) {
  20534. this.updateToolDetail(this.toolDetailIndex);
  20535. }
  20536. });
  20537. if (this.screenType == 2) {
  20538. window.parent.postMessage({ allScreen: 4 }, "*");
  20539. } else if (this.screenType == 3) {
  20540. window.parent.postMessage({ allScreen: 5 }, "*");
  20541. } else if (this.screenType == 1) {
  20542. window.parent.postMessage({ allScreen: 6 }, "*");
  20543. }
  20544. this.setOperationTime();
  20545. this.selectEva();
  20546. this.getCourseDetail();
  20547. this.selectCount();
  20548. this.getHomeWork();
  20549. this.selectUser();
  20550. this.getAIJ();
  20551. this.contentDialog = true;
  20552. this.setContent2(true);
  20553. if (this.tType == 4) {
  20554. this.pzDialog = true;
  20555. this.selectPz();
  20556. }
  20557. // 获取评分列表
  20558. this.getScoreList()
  20559. this.updateSplitScreenData(2);
  20560. this.splitScreenData.myUid = uuidv4();
  20561. document.scrollingElement.scrollTop = 0;
  20562. window.addEventListener("resize", () => {
  20563. var a = document.getElementsByClassName("box_course")[0].offsetHeight;
  20564. // document.getElementsByClassName("vedioList")[0].style.height = a + "px";
  20565. if (this.showType == 2 || this.showType == 3) {
  20566. document.getElementsByClassName("navBox")[0].style.height =
  20567. a - 40 + 0+ "px";
  20568. } else {
  20569. document.getElementsByClassName("navBox")[0].style.height =
  20570. a - 40 + "px";
  20571. }
  20572. });
  20573. let _this = this;
  20574. setTimeout(() => {
  20575. // _this.vedioTime = [];
  20576. // for (var i = 0; i < _this.vedio[_this.taskCount].length; i++) {
  20577. // _this.vedioTime[i] = document.getElementsByClassName(
  20578. // "vjs-duration-display"
  20579. // )[i].textContent;
  20580. // }
  20581. }, 1000);
  20582. },
  20583. };
  20584. </script>
  20585. <style scoped>
  20586. @media screen and (max-width: 1280px) {
  20587. /* .courseIndex > div:first-child(2) {
  20588. width: 15% !important;
  20589. } */
  20590. /* .navText {
  20591. width: 120px !important;
  20592. } */
  20593. .evaCss {
  20594. flex-direction: column !important;
  20595. align-items: center !important;
  20596. }
  20597. .elist_input {
  20598. width: 90% !important;
  20599. }
  20600. .dialog_diy1 >>> .el-dialog {
  20601. width: 100% !important;
  20602. }
  20603. .rightWidthCss {
  20604. width: 100% !important;
  20605. }
  20606. .dialog_diy3 >>> .el-dialog {
  20607. width: 100% !important;
  20608. }
  20609. .addToolCss {
  20610. right: 0 !important;
  20611. width: 100% !important;
  20612. min-width: unset !important;
  20613. }
  20614. }
  20615. .evaCssMax {
  20616. flex-direction: column !important;
  20617. align-items: center !important;
  20618. }
  20619. .dialog_diy >>> .el-dialog {
  20620. margin-top: 10vh !important;
  20621. }
  20622. .body_student {
  20623. width: 77%;
  20624. height: 100%;
  20625. position: absolute;
  20626. left: 22%;
  20627. top: 0;
  20628. }
  20629. .student_head {
  20630. width: 100%;
  20631. margin: 20px auto 0;
  20632. padding-bottom: 20px;
  20633. display: flex;
  20634. flex-direction: column;
  20635. flex-wrap: nowrap;
  20636. align-items: flex-start;
  20637. justify-content: flex-start;
  20638. }
  20639. .pb_left {
  20640. width: 20%;
  20641. margin-right: 10px;
  20642. background: rgb(255, 255, 255);
  20643. position: fixed;
  20644. height: calc(100% - 40px);
  20645. border-radius: 20px;
  20646. padding-bottom: 15px;
  20647. box-sizing: border-box;
  20648. }
  20649. .wheel > img,
  20650. .project > img,
  20651. .star > img,
  20652. .evaluate > img,
  20653. .up_photo > img,
  20654. .chapter_add > img,
  20655. .deleteWord > img,
  20656. .question > img,
  20657. .homework > img {
  20658. width: 100%;
  20659. height: 100%;
  20660. }
  20661. .upCover > img {
  20662. width: 131px;
  20663. height: 69px;
  20664. object-fit: cover;
  20665. }
  20666. .upCover {
  20667. width: calc(100% / 3.5);
  20668. position: relative;
  20669. margin: 0 15px 10px 0;
  20670. display: flex;
  20671. flex-direction: column;
  20672. flex-wrap: nowrap;
  20673. justify-content: center;
  20674. align-content: center;
  20675. align-items: center;
  20676. height: fit-content;
  20677. }
  20678. .upCover2 {
  20679. width: 100%;
  20680. position: relative;
  20681. margin: 0 15px 10px 0;
  20682. display: flex;
  20683. flex-direction: column;
  20684. flex-wrap: nowrap;
  20685. justify-content: center;
  20686. align-content: center;
  20687. align-items: center;
  20688. }
  20689. .upCover2 > img {
  20690. width: 100%;
  20691. height: 90px;
  20692. object-fit: contain;
  20693. }
  20694. .chapter_add {
  20695. width: 120px;
  20696. position: relative;
  20697. text-align: center;
  20698. }
  20699. .isAddThings {
  20700. margin-top: 20px;
  20701. position: relative;
  20702. text-align: center;
  20703. background: #f7f8fa;
  20704. height: 90px;
  20705. width: 90px;
  20706. display: flex;
  20707. flex-direction: column;
  20708. justify-content: center;
  20709. }
  20710. .deleteWord {
  20711. width: 22px;
  20712. height: 22px;
  20713. position: absolute;
  20714. right: -5px;
  20715. top: -5px;
  20716. cursor: pointer;
  20717. }
  20718. .box_course {
  20719. /* width: 60%; */
  20720. width: calc(100% - 300px);
  20721. }
  20722. .wheel {
  20723. width: 100%;
  20724. /* height: 100%; */
  20725. height: 650px;
  20726. }
  20727. .right_box {
  20728. display: flex;
  20729. flex-direction: column;
  20730. margin-left: 30px;
  20731. justify-content: space-around;
  20732. }
  20733. .right_box_title {
  20734. font-size: 23px;
  20735. }
  20736. .people {
  20737. display: flex;
  20738. }
  20739. .student_body {
  20740. width: 100%;
  20741. margin: 0 auto;
  20742. margin-top: 10px;
  20743. padding: 0 0 20px;
  20744. }
  20745. .study_top {
  20746. margin-top: 100px;
  20747. width: 100%;
  20748. height: auto;
  20749. padding-bottom: 20px;
  20750. margin-left: 2px;
  20751. }
  20752. .study_top .checkbox {
  20753. display: flex;
  20754. align-items: center;
  20755. padding: 15px 0 15px 30px;
  20756. flex: 0 0 auto;
  20757. font-weight: bold;
  20758. border-bottom: 1px solid #eee;
  20759. }
  20760. .study_top .check {
  20761. padding-bottom: 5px;
  20762. text-align: center;
  20763. cursor: pointer;
  20764. height: 30px;
  20765. box-sizing: border-box;
  20766. display: flex;
  20767. }
  20768. .study_top .checked {
  20769. border-bottom: 4px solid #3fc6a0;
  20770. padding-bottom: 5px;
  20771. color: #3fc6a0;
  20772. display: flex;
  20773. height: 35px;
  20774. }
  20775. .study_top .checked > div,
  20776. .study_top .check > div {
  20777. margin-right: 5px;
  20778. }
  20779. .videoTop {
  20780. display: flex;
  20781. flex-direction: row;
  20782. justify-content: space-between;
  20783. background: #fff;
  20784. align-items: center;
  20785. width: 95%;
  20786. padding: 20px;
  20787. }
  20788. .filebox {
  20789. display: flex;
  20790. flex-wrap: wrap;
  20791. flex-direction: column;
  20792. padding: 0 0 5px;
  20793. position: relative;
  20794. }
  20795. .filebox:before {
  20796. content: ""; /* 使用 :before 伪元素创建纵向虚线 */
  20797. position: absolute;
  20798. top: 20px;
  20799. left: 13px;
  20800. border-left: 2px dotted #cad1dc;
  20801. height: calc(100% - 15px);
  20802. }
  20803. .toolHeng2 > div:last-child::before {
  20804. height: calc(100% - 43px);
  20805. }
  20806. .filebox .tooldetail {
  20807. width: calc(100%);
  20808. margin: 0px 12px;
  20809. padding: 12px;
  20810. line-height: 30px;
  20811. word-break: break-word;
  20812. background: #ffffff;
  20813. border-radius: 8px 8px 8px 8px;
  20814. opacity: 1;
  20815. border: 1px solid #cad1dc;
  20816. overflow:hidden;
  20817. box-sizing:border-box;
  20818. }
  20819. .file {
  20820. display: flex;
  20821. flex-direction: column;
  20822. align-items: center;
  20823. justify-content: center;
  20824. cursor: pointer;
  20825. width: 200px;
  20826. }
  20827. .file div {
  20828. margin-top: 10px;
  20829. width: 150px;
  20830. text-align: center;
  20831. overflow: hidden;
  20832. white-space: nowrap;
  20833. text-overflow: ellipsis;
  20834. }
  20835. .media {
  20836. display: flex;
  20837. flex-direction: column;
  20838. align-items: center;
  20839. justify-content: center;
  20840. margin: 0 20px 20px 0;
  20841. cursor: pointer;
  20842. margin: 12px 0 5px 15px;
  20843. overflow: hidden;
  20844. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
  20845. 0px 2px 1px -1px rgb(0 0 0 / 12%);
  20846. box-sizing: border-box;
  20847. }
  20848. .media img {
  20849. height: 90px;
  20850. width: 160px;
  20851. object-fit: cover;
  20852. }
  20853. .media .title {
  20854. padding: 5px;
  20855. text-align: left;
  20856. width: 100%;
  20857. box-sizing: border-box;
  20858. }
  20859. .media .btn {
  20860. width: 100%;
  20861. height: 35px;
  20862. line-height: 35px;
  20863. color: #fff;
  20864. background: #606060;
  20865. text-align: center;
  20866. overflow: hidden;
  20867. white-space: nowrap;
  20868. text-overflow: ellipsis;
  20869. }
  20870. .detail_content_top {
  20871. width: 100%;
  20872. padding: 25px 0 25px 0;
  20873. }
  20874. .detail_title {
  20875. text-align: center;
  20876. font-size: 24px;
  20877. }
  20878. .detail_time {
  20879. font-size: 13px;
  20880. padding: 15px 0 0 40px;
  20881. }
  20882. .detail_content {
  20883. line-height: 2pc;
  20884. width: 90%;
  20885. margin: 0 auto;
  20886. padding-top: 30px;
  20887. text-indent: 30px;
  20888. overflow: auto;
  20889. height: 200px;
  20890. }
  20891. .score_box >>> .el-rate {
  20892. margin-left: 10px;
  20893. }
  20894. .dialog_change >>> .el-dialog {
  20895. border-radius: 5px;
  20896. }
  20897. .dialog_change >>> .el-dialog__header {
  20898. background: #f2f2f2;
  20899. text-align: center;
  20900. }
  20901. .dialog_change >>> .el-dialog__title {
  20902. line-height: 5px;
  20903. }
  20904. .dialog_change >>> .el-dialog__body {
  20905. background: #fff;
  20906. padding: 10px 20px;
  20907. }
  20908. .score_box {
  20909. display: flex;
  20910. align-items: center;
  20911. margin-bottom: 18px;
  20912. margin-top: 20px;
  20913. }
  20914. .up_photo {
  20915. width: 120px;
  20916. cursor: pointer;
  20917. margin-top: 10px;
  20918. }
  20919. .up_photo2 {
  20920. width: 180px;
  20921. box-sizing: border-box;
  20922. min-width: 180px;
  20923. height: 180px;
  20924. max-height: 180px;
  20925. min-height: 180px;
  20926. cursor: pointer;
  20927. display: flex;
  20928. flex-direction: column;
  20929. align-items: center;
  20930. justify-content: center;
  20931. background: rgb(242, 246, 255);
  20932. /* padding: 25px; */
  20933. margin-bottom: 10px;
  20934. }
  20935. .up_photo2 img {
  20936. width: 50%;
  20937. height: auto;
  20938. }
  20939. .up_photo2 span {
  20940. color: #898989;
  20941. }
  20942. .plworkBox {
  20943. display: flex;
  20944. align-items: center;
  20945. margin-top: 10px;
  20946. flex-wrap: wrap;
  20947. }
  20948. .upload_send {
  20949. margin: 30px auto 30px;
  20950. width: 60%;
  20951. background: #3681fc;
  20952. text-align: center;
  20953. height: 35px;
  20954. line-height: 35px;
  20955. color: #fff;
  20956. border-radius: 5px;
  20957. cursor: pointer;
  20958. }
  20959. .marginT {
  20960. margin-top: 20px;
  20961. }
  20962. .cd_content_steps {
  20963. display: flex;
  20964. width: 90%;
  20965. justify-content: space-around;
  20966. border-top: 1px solid #eeeeee;
  20967. }
  20968. .cd_steps_box {
  20969. display: flex;
  20970. justify-content: center;
  20971. align-items: center;
  20972. flex-direction: column;
  20973. cursor: pointer;
  20974. }
  20975. .first {
  20976. display: flex;
  20977. align-items: center;
  20978. margin: 15px 0 20px 0;
  20979. font-size: 20px;
  20980. }
  20981. .first > div:nth-child(2) {
  20982. font-size: 16px !important;
  20983. padding-left: 10px;
  20984. line-height: 26px;
  20985. box-sizing: border-box;
  20986. }
  20987. .blue_box_one {
  20988. text-align: center;
  20989. color: #fff;
  20990. background-image: linear-gradient(90deg, #477cd7, #65b9fc);
  20991. border-radius: 7px;
  20992. margin: 10px;
  20993. cursor: pointer;
  20994. width: 95%;
  20995. height: 45px;
  20996. display: flex;
  20997. flex-direction: row;
  20998. justify-content: flex-start;
  20999. align-items: center;
  21000. }
  21001. .blue_box_one > div:nth-child(1) {
  21002. line-height: 30px;
  21003. margin: 0 5px 0 10px;
  21004. width: 30%;
  21005. min-width: 70px;
  21006. border-radius: 4px;
  21007. }
  21008. .blue_box_one > div:nth-child(2) {
  21009. white-space: nowrap;
  21010. text-overflow: ellipsis;
  21011. overflow: hidden;
  21012. word-break: break-all;
  21013. width: 70%;
  21014. text-align: left;
  21015. margin-right: 10px;
  21016. max-width: calc(100% - 85px);
  21017. }
  21018. .blue_box_one > div:nth-child(2):hover {
  21019. overflow: hidden;
  21020. text-overflow: ellipsis;
  21021. white-space: nowrap;
  21022. cursor: pointer;
  21023. }
  21024. .upFile {
  21025. margin: 0 auto;
  21026. width: 120px;
  21027. background: #3681fc;
  21028. color: #fff;
  21029. height: 30px;
  21030. text-align: center;
  21031. line-height: 30px;
  21032. border-radius: 5px;
  21033. font-size: 14px;
  21034. cursor: pointer;
  21035. }
  21036. .courseTitle {
  21037. width: 85%;
  21038. margin: 10px auto 26px auto;
  21039. display: flex;
  21040. flex-direction: row;
  21041. align-items: center;
  21042. justify-content: space-between;
  21043. text-align: center;
  21044. }
  21045. .courseTitle .ctitle {
  21046. font-size: 20px;
  21047. font-weight: bold;
  21048. color: #0e1e33;
  21049. white-space: nowrap;
  21050. overflow: hidden;
  21051. text-overflow: ellipsis;
  21052. }
  21053. .inviteBox {
  21054. font-size: 14px;
  21055. /* margin-top: 5px; */
  21056. color: #00000099;
  21057. text-align: center;
  21058. }
  21059. .courseTitle >>> .el-tooltip {
  21060. width: 100%;
  21061. white-space: nowrap;
  21062. overflow: hidden;
  21063. text-overflow: ellipsis;
  21064. word-break: break-word;
  21065. }
  21066. .ml {
  21067. margin-left: 20px;
  21068. color: #5b7dba;
  21069. border-left: 3px solid #5b7dba;
  21070. padding-left: 5px;
  21071. font-weight: bold;
  21072. }
  21073. .return {
  21074. width: 2rem;
  21075. height: 2rem;
  21076. cursor: pointer;
  21077. }
  21078. .return > img {
  21079. width: 100%;
  21080. height: 100%;
  21081. }
  21082. .returnBtn {
  21083. width: 86px;
  21084. height: 36px;
  21085. background: #3681fc;
  21086. border-radius: 4px;
  21087. color: #fff;
  21088. text-align: center;
  21089. line-height: 36px;
  21090. margin-right: 20px;
  21091. cursor: pointer;
  21092. font-size: 14px;
  21093. font-weight: 400;
  21094. display: flex;
  21095. flex-direction: row;
  21096. flex-wrap: nowrap;
  21097. align-items: center;
  21098. justify-content: center;
  21099. }
  21100. .reBtnIcon,
  21101. .commentIcon,
  21102. .vedioIcon,
  21103. .vedioIcon1 {
  21104. /* width: 36px; */
  21105. height: 36px;
  21106. border-radius: 4px;
  21107. position: relative;
  21108. /* background: #e0eafb; */
  21109. background: #0061ff;
  21110. cursor: pointer;
  21111. margin-right: 12px;
  21112. display: flex;
  21113. align-items: center;
  21114. padding: 0 10px;
  21115. box-sizing: border-box;
  21116. font-size: 14px;
  21117. color: #fff;
  21118. }
  21119. .reBtnIcon::before,
  21120. .commentIcon::before,
  21121. .vedioIcon::before,
  21122. .vedioIcon1::before {
  21123. content: "";
  21124. display: block;
  21125. background-size: 100% 100%;
  21126. background-repeat: no-repeat;
  21127. width: 20px;
  21128. height: 20px;
  21129. margin-right: 5px;
  21130. /* position: absolute; */
  21131. /* top: 8px;
  21132. left: 8px; */
  21133. }
  21134. .vedioIcon1 {
  21135. background: #f63564;
  21136. }
  21137. .reBtnIcon::before {
  21138. background-image: url("../../assets/icon/newIcons/refresh.png");
  21139. }
  21140. .commentIcon::before {
  21141. background-image: url("../../assets/icon/newIcons/comment.png");
  21142. }
  21143. .vedioIcon::before {
  21144. background-image: url("../../assets/icon/newIcons/transcribe.png");
  21145. }
  21146. .vedioIcon1::before {
  21147. /* background-image: url("../../assets/icon/newIcons/istranscribe.png"); */
  21148. background-image: url("../../assets/icon/newIcons/transcribe.png");
  21149. }
  21150. .tool {
  21151. display: flex;
  21152. flex-direction: column;
  21153. flex-wrap: nowrap;
  21154. width: 13%;
  21155. margin: 0 30px;
  21156. align-items: center;
  21157. position: relative;
  21158. padding: 10px 25px;
  21159. cursor: pointer;
  21160. }
  21161. .whiteBIcon {
  21162. width: 150px;
  21163. }
  21164. .whiteBIcon > img {
  21165. width: 100%;
  21166. height: 100%;
  21167. }
  21168. .mask {
  21169. background-color: rgba(0, 0, 0, 0);
  21170. position: fixed;
  21171. top: 0;
  21172. left: 0;
  21173. width: 100%;
  21174. height: 100%;
  21175. z-index: 20000;
  21176. display: flex;
  21177. align-items: center;
  21178. justify-content: center;
  21179. }
  21180. .progressBox {
  21181. width: 500px;
  21182. height: 180px;
  21183. background: #fff;
  21184. border-radius: 10px;
  21185. box-shadow: 0 0 6px 1px #bfbfbf;
  21186. display: flex;
  21187. align-items: center;
  21188. justify-content: center;
  21189. flex-direction: column;
  21190. position: relative;
  21191. color: #6c6c6c;
  21192. }
  21193. .progressBox >>> .el-progress-bar__outer {
  21194. background-color: #d1dfff !important;
  21195. }
  21196. .progressBox .lbox {
  21197. height: 50px;
  21198. font-size: 19px;
  21199. display: flex;
  21200. align-items: center;
  21201. color: #747474;
  21202. }
  21203. .progressBox .lbox img {
  21204. width: 40px;
  21205. margin-right: 20px;
  21206. }
  21207. .closeCss {
  21208. position: absolute;
  21209. top: 8px;
  21210. right: 8px;
  21211. cursor: pointer;
  21212. width: 20px;
  21213. height: 20px;
  21214. }
  21215. .closeCss > img {
  21216. width: 100%;
  21217. height: 100%;
  21218. }
  21219. .uploadVedio {
  21220. display: flex;
  21221. flex-direction: column;
  21222. flex-wrap: nowrap;
  21223. justify-content: center;
  21224. align-items: center;
  21225. margin: 0 15px 10px 0;
  21226. }
  21227. .uploadVedio > img {
  21228. width: 30px;
  21229. height: 30px;
  21230. }
  21231. .uploadVedio > span {
  21232. white-space: nowrap;
  21233. overflow: hidden;
  21234. text-overflow: ellipsis;
  21235. width: 75px;
  21236. margin-top: 7px;
  21237. }
  21238. .picName {
  21239. white-space: nowrap;
  21240. overflow: hidden;
  21241. text-overflow: ellipsis;
  21242. width: 75px;
  21243. margin-top: 7px;
  21244. }
  21245. .new_top {
  21246. display: flex;
  21247. background: #fff;
  21248. flex-direction: row;
  21249. justify-content: flex-start;
  21250. align-items: center;
  21251. height: 60px;
  21252. position: fixed;
  21253. top: 20px;
  21254. left: 22%;
  21255. width: 77%;
  21256. z-index: 999;
  21257. border-radius: 12px 12px 0 0;
  21258. border-bottom: 1px solid #cad1dc;
  21259. padding: 10px 0;
  21260. }
  21261. .new_topFixed {
  21262. width: 100%;
  21263. height: 40px;
  21264. position: fixed;
  21265. top: 0px;
  21266. display: block;
  21267. background: #f2f2f2;
  21268. z-index: 998;
  21269. }
  21270. .before {
  21271. position: absolute;
  21272. background: #c3dad4;
  21273. width: 6px;
  21274. height: 100%;
  21275. }
  21276. .courseIndex {
  21277. display: flex;
  21278. flex-direction: row;
  21279. align-items: center;
  21280. width: calc(100% - 745px);
  21281. }
  21282. .courseIndex > div:nth-child(1) {
  21283. margin: 0 0 0 10px;
  21284. font-size: 20px;
  21285. min-width: 100px;
  21286. font-weight: bold;
  21287. border-left: 4px solid #3363b9;
  21288. height: 32px;
  21289. text-align: center;
  21290. line-height: 35px;
  21291. }
  21292. .courseIndex > div:nth-child(2) {
  21293. font-size: 20px;
  21294. /* width: 300px; */
  21295. max-width: calc(100% - 105px);
  21296. white-space: nowrap;
  21297. overflow: hidden;
  21298. text-overflow: ellipsis;
  21299. }
  21300. .courseIndex > div:nth-child(3) {
  21301. border-bottom: 1px solid #d7d7d7;
  21302. padding-bottom: 5px;
  21303. background: #3681fc;
  21304. width: 55px;
  21305. min-width: 55px;
  21306. border-radius: 5px;
  21307. color: #fff;
  21308. text-align: center;
  21309. height: 20px;
  21310. line-height: 26px;
  21311. font-size: 14px;
  21312. margin: 0 0 0 10px;
  21313. }
  21314. .course_text {
  21315. padding: 20px 0 0 15px;
  21316. text-indent: 30px;
  21317. width: 80%;
  21318. min-height: 20px;
  21319. }
  21320. .vedioList {
  21321. background: #f2f2f2;
  21322. border: 1px solid #ececec;
  21323. /* width: 38.8%; */
  21324. /* width: 300px; */
  21325. width: 100%;
  21326. height: 445px;
  21327. border-radius: 10px;
  21328. overflow: hidden;
  21329. box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
  21330. }
  21331. .vedioNav {
  21332. margin: 10px 0 0 15px;
  21333. border-bottom: 1px solid #d7d7d7;
  21334. padding-bottom: 5px;
  21335. background: #3681fc;
  21336. width: 55px;
  21337. min-width: 55px;
  21338. border-radius: 5px;
  21339. color: #fff;
  21340. text-align: center;
  21341. height: 20px;
  21342. line-height: 26px;
  21343. font-size: 14px;
  21344. }
  21345. .queTop {
  21346. display: flex;
  21347. padding: 20px 0 20px 30px;
  21348. width: 100%;
  21349. flex-direction: row;
  21350. justify-content: flex-start;
  21351. align-items: center;
  21352. box-sizing: border-box;
  21353. }
  21354. .queTopTitle {
  21355. display: flex;
  21356. flex-direction: row;
  21357. flex-wrap: nowrap;
  21358. align-items: center;
  21359. font-weight: bold;
  21360. font-size: 20px;
  21361. color: rgb(14, 30, 51);
  21362. }
  21363. .queTopTitle::before {
  21364. content: "";
  21365. width: 2px;
  21366. height: 22px;
  21367. background: #3681fc;
  21368. border-radius: 3px;
  21369. display: block;
  21370. margin: 2px 6px 0 0;
  21371. }
  21372. .queTopRight {
  21373. display: flex;
  21374. flex-direction: row;
  21375. flex-wrap: nowrap;
  21376. align-items: center;
  21377. }
  21378. .queTopClose {
  21379. margin-right: 20px;
  21380. cursor: pointer;
  21381. position: relative;
  21382. display: flex;
  21383. }
  21384. .closeImg,
  21385. .openImg {
  21386. width: 25px;
  21387. height: 25px;
  21388. position: absolute;
  21389. left: -20px;
  21390. top: -1px;
  21391. }
  21392. .closeImg > img,
  21393. .openImg > img {
  21394. width: 100%;
  21395. height: 100%;
  21396. }
  21397. .question {
  21398. width: 40px;
  21399. margin-right: 10px;
  21400. margin-top: 7px;
  21401. }
  21402. .queTitle {
  21403. margin-left: 5px;
  21404. font-size: 25px;
  21405. display: flex;
  21406. align-items: center;
  21407. }
  21408. .addEditor {
  21409. width: 100px;
  21410. height: 30px;
  21411. background: #42cda6;
  21412. color: #fff;
  21413. border-radius: 5px;
  21414. text-align: center;
  21415. line-height: 30px;
  21416. box-shadow: 1px 3px 6px 1px #bfbfbf;
  21417. cursor: pointer;
  21418. }
  21419. /* .vedioName {
  21420. cursor: pointer;
  21421. margin: 0px 0px 10px 5px;
  21422. white-space: nowrap;
  21423. overflow: hidden;
  21424. text-overflow: ellipsis;
  21425. width: 100%;
  21426. } */
  21427. .vedioTime {
  21428. width: 35px;
  21429. position: absolute;
  21430. color: #fff;
  21431. bottom: 0px;
  21432. right: 0px;
  21433. text-align: center;
  21434. background: #46411f;
  21435. height: 20px;
  21436. font-size: 14px;
  21437. line-height: 20px;
  21438. }
  21439. .homework {
  21440. width: 200px;
  21441. display: flex;
  21442. flex-direction: column;
  21443. flex-wrap: nowrap;
  21444. align-items: center;
  21445. cursor: pointer;
  21446. }
  21447. .homebox {
  21448. display: flex;
  21449. flex-wrap: wrap;
  21450. flex-direction: row;
  21451. justify-content: flex-start;
  21452. align-items: center;
  21453. padding: 15px 0;
  21454. }
  21455. .isChooseActive {
  21456. color: #3681fc !important;
  21457. font-weight: bold !important;
  21458. }
  21459. .chooseWho {
  21460. display: flex;
  21461. width: 100%;
  21462. flex-direction: row;
  21463. flex-wrap: nowrap;
  21464. justify-content: flex-start;
  21465. padding-bottom: 10px;
  21466. }
  21467. .chooseWho > div {
  21468. cursor: pointer;
  21469. padding-bottom: 10px;
  21470. margin: 0 30px 0 0;
  21471. font-weight: 400;
  21472. color: #0e1e33;
  21473. }
  21474. .addPoint > div > img {
  21475. cursor: pointer;
  21476. width: 85px;
  21477. border-radius: 15px;
  21478. box-shadow: 0px 1px 8px 0px rgb(20 20 20 / 14%);
  21479. }
  21480. .addPoint > div {
  21481. display: flex;
  21482. flex-direction: column;
  21483. flex-wrap: nowrap;
  21484. align-items: center;
  21485. }
  21486. .isBorder > div {
  21487. margin: 0 0 10px 0;
  21488. align-items: flex-start !important;
  21489. }
  21490. .noiframeBox {
  21491. display: flex;
  21492. flex-wrap: wrap;
  21493. }
  21494. .iframeBox iframe {
  21495. width: 100%;
  21496. height: 800px;
  21497. border: none;
  21498. margin-bottom: 20px;
  21499. border: 1px solid #ccc;
  21500. }
  21501. .upload_toolBtn {
  21502. background: #3681fc;
  21503. color: #fff;
  21504. width: 110px;
  21505. text-align: center;
  21506. height: 35px;
  21507. line-height: 35px;
  21508. font-size: 14px;
  21509. border-radius: 5px;
  21510. cursor: pointer;
  21511. position: absolute;
  21512. right: 10px;
  21513. bottom: 0;
  21514. }
  21515. .binfo_input,
  21516. .pj {
  21517. font: inherit;
  21518. color: currentColor;
  21519. width: 100%;
  21520. margin: 0;
  21521. padding: 15px 14px;
  21522. display: block;
  21523. min-width: 0;
  21524. outline: none;
  21525. box-sizing: content-box;
  21526. background: none;
  21527. -webkit-tap-highlight-color: transparent;
  21528. border: 1px solid rgba(0, 0, 0, 0.23);
  21529. border-radius: 4px;
  21530. box-sizing: border-box;
  21531. resize: none;
  21532. }
  21533. .binfo_input:focus-visible {
  21534. border: 1px solid rgba(61, 103, 188);
  21535. }
  21536. .dialog_diy >>> .el-dialog__header,
  21537. .dialog_diy1 >>> .el-dialog__header {
  21538. background: #454545 !important;
  21539. padding: 15px 20px;
  21540. }
  21541. .dialog_diy >>> .el-dialog__title,
  21542. .dialog_diy1 >>> .el-dialog__title {
  21543. color: #fff;
  21544. }
  21545. .dialog_diy >>> .el-dialog__headerbtn,
  21546. .dialog_diy1 >>> .el-dialog__headerbtn {
  21547. top: 19px;
  21548. }
  21549. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close,
  21550. .dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close {
  21551. color: #fff;
  21552. }
  21553. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover,
  21554. .dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close:hover {
  21555. color: #fff;
  21556. }
  21557. .dialog_diy1 >>> .el-dialog__body {
  21558. padding: 0;
  21559. }
  21560. .dialog_diy >>> .el-dialog__body,
  21561. .dialog_diy >>> .el-dialog__footer,
  21562. .dialog_diy1 >>> .el-dialog__footer {
  21563. background: #fafafa;
  21564. }
  21565. .a_addBox {
  21566. padding: 0 0 0 15px;
  21567. }
  21568. .a_add_box {
  21569. padding: 10px;
  21570. background: #fff;
  21571. margin-bottom: 10px;
  21572. border-radius: 5px;
  21573. box-shadow: 0 0 5px 0 #d5d5d5;
  21574. }
  21575. .a_add_head {
  21576. display: flex;
  21577. align-items: flex-start;
  21578. /* justify-content: space-between; */
  21579. flex-direction: column;
  21580. /* flex-direction: row; */
  21581. margin: 10px 0 20px 0;
  21582. font-size: 18px;
  21583. width: 100%;
  21584. }
  21585. .askIndex {
  21586. background: #3681fc;
  21587. border-radius: 50%;
  21588. color: #fff;
  21589. width: 25px;
  21590. height: 25px;
  21591. min-width: 25px;
  21592. min-height: 25px;
  21593. text-align: center;
  21594. line-height: 25px;
  21595. margin-right: 5px;
  21596. }
  21597. .a_add_head .a_add_head_input {
  21598. width: 300px;
  21599. }
  21600. .a_add_head .a_add_head_div {
  21601. display: flex;
  21602. align-items: center;
  21603. justify-content: space-between;
  21604. }
  21605. .a_add_body {
  21606. display: flex;
  21607. align-items: center;
  21608. }
  21609. .a_add_input {
  21610. display: flex;
  21611. align-items: center;
  21612. flex-wrap: wrap;
  21613. width: 100%;
  21614. }
  21615. .a_add_input >>> .el-radio-group,
  21616. .a_add_input >>> .el-checkbox-group {
  21617. width: 100%;
  21618. }
  21619. .a_add_input >>> .el-radio,
  21620. .a_add_input >>> .el-checkbox {
  21621. display: flex;
  21622. flex-direction: row;
  21623. flex-wrap: nowrap;
  21624. align-items: center;
  21625. padding: 15px 0;
  21626. }
  21627. .a_add_input >>> .el-radio:not(:last-child),
  21628. .a_add_input >>> .el-checkbox:not(:last-child) {
  21629. width: 100%;
  21630. border-bottom: 1px solid #efefef;
  21631. }
  21632. .redioStyle >>> .el-radio__label {
  21633. font-size: 18px;
  21634. }
  21635. .redioStyle >>> .el-radio__label > span,
  21636. .redioStyle >>> .el-checkbox__label > span {
  21637. word-break: break-all;
  21638. white-space: normal;
  21639. }
  21640. .redioStyle >>> .el-checkbox__label {
  21641. font-size: 18px;
  21642. }
  21643. .toolHeng2 {
  21644. width: 100%;
  21645. padding-left: 15px;
  21646. box-sizing: border-box;
  21647. }
  21648. .workNav {
  21649. font-size: 20px;
  21650. font-weight: bold;
  21651. color: #0e1e33;
  21652. display: flex;
  21653. flex-direction: row;
  21654. flex-wrap: nowrap;
  21655. align-items: center;
  21656. padding: 15px 0 15px 0;
  21657. }
  21658. .workNav::before {
  21659. content: "";
  21660. width: 2px;
  21661. height: 22px;
  21662. background: #3681fc;
  21663. border-radius: 3px;
  21664. display: block;
  21665. margin: 2px 6px 0 0;
  21666. }
  21667. .toolHeng {
  21668. display: flex;
  21669. flex-direction: row;
  21670. flex-wrap: wrap;
  21671. justify-content: flex-start;
  21672. align-items: center;
  21673. width: 100%;
  21674. }
  21675. .toolHeng > div {
  21676. padding-left: 20px;
  21677. }
  21678. .isWidth {
  21679. width: 20%;
  21680. }
  21681. .textTitle {
  21682. display: flex;
  21683. flex-direction: row;
  21684. flex-wrap: nowrap;
  21685. align-items: center;
  21686. width: 95%;
  21687. }
  21688. .textTitle >>> .el-form-item__label {
  21689. font-size: 22px;
  21690. color: #918f8f;
  21691. width: 100px;
  21692. }
  21693. .textTitle >>> .el-form-item__content {
  21694. width: calc(100% - 100px);
  21695. }
  21696. .textCss >>> .el-dialog {
  21697. width: 800px !important;
  21698. height: 400px;
  21699. background: #fafafa;
  21700. }
  21701. .textCss >>> .el-dialog__body {
  21702. margin: 55px 8% 0 8%;
  21703. padding: 0 !important;
  21704. }
  21705. .textCss >>> .el-dialog__footer {
  21706. padding-top: 38px;
  21707. }
  21708. .toolsCss >>> .el-dialog__body {
  21709. padding: 20px;
  21710. }
  21711. .lineCss >>> .el-dialog__body {
  21712. display: flex;
  21713. flex-direction: row;
  21714. align-items: center;
  21715. justify-content: center;
  21716. }
  21717. .newNav {
  21718. display: flex;
  21719. flex-direction: row;
  21720. align-items: baseline;
  21721. justify-content: flex-start;
  21722. }
  21723. .navListItem {
  21724. width: calc(100% - 20px);
  21725. height: 50px;
  21726. margin: 0px auto 10px;
  21727. display: flex;
  21728. flex-direction: row;
  21729. flex-wrap: nowrap;
  21730. align-items: center;
  21731. justify-content: space-between;
  21732. background: #f0f4fa;
  21733. border-radius: 6px 6px 6px 6px;
  21734. }
  21735. .navText {
  21736. cursor: pointer;
  21737. white-space: nowrap;
  21738. overflow: hidden;
  21739. text-overflow: ellipsis;
  21740. width: 220px;
  21741. padding: 0 10px;
  21742. font-weight: 400;
  21743. color: #0e1e33;
  21744. }
  21745. .downIcon {
  21746. width: 20px;
  21747. min-width: 20px;
  21748. height: 20px;
  21749. margin-right: 15px;
  21750. cursor: pointer;
  21751. }
  21752. .downIcon > img {
  21753. width: 100%;
  21754. height: 100%;
  21755. }
  21756. .noVedio {
  21757. display: flex;
  21758. flex-direction: row;
  21759. justify-content: center;
  21760. align-content: center;
  21761. }
  21762. .noNavText {
  21763. cursor: pointer;
  21764. margin: 0px 0px 10px 5px;
  21765. width: 112px;
  21766. }
  21767. .listNoVedio {
  21768. margin: 0 0 0 30px;
  21769. width: 97%;
  21770. }
  21771. .video-player >>> .video-js {
  21772. height: 100%;
  21773. }
  21774. .hangVedioList {
  21775. width: 90% !important;
  21776. height: 150px !important;
  21777. margin: 20px 0 0 30px;
  21778. }
  21779. .hangVedio {
  21780. width: 100%;
  21781. height: 170px !important;
  21782. align-items: flex-start !important;
  21783. }
  21784. .hangHand {
  21785. height: 150px !important;
  21786. }
  21787. .twoChild {
  21788. width: 95%;
  21789. margin: 10px;
  21790. border-radius: 5px;
  21791. background: #f2f2f2;
  21792. display: flex;
  21793. flex-direction: column;
  21794. flex-wrap: nowrap;
  21795. justify-content: flex-start;
  21796. align-items: flex-start;
  21797. transition: all 0.5s;
  21798. overflow: hidden;
  21799. height: 0;
  21800. background: #e7f3ff;
  21801. }
  21802. .twoChild > div:nth-child(1) {
  21803. margin-top: 5px;
  21804. }
  21805. .navChild {
  21806. width: 100%;
  21807. cursor: pointer;
  21808. margin-bottom: 10px;
  21809. position: relative;
  21810. }
  21811. .navChild img {
  21812. position: absolute;
  21813. right: 11px;
  21814. width: 15px;
  21815. top: 50%;
  21816. transform: translateY(-50%);
  21817. }
  21818. .navActive,
  21819. .toolActive {
  21820. height: auto !important;
  21821. overflow: auto !important;
  21822. /* padding-bottom: 16px; */
  21823. }
  21824. .toolActive {
  21825. padding: 0;
  21826. }
  21827. .navTask {
  21828. display: flex;
  21829. flex-direction: row;
  21830. flex-wrap: nowrap;
  21831. align-items: center;
  21832. align-content: flex-start;
  21833. height: 40px;
  21834. justify-content: flex-start;
  21835. padding: 0 10px;
  21836. width: 100%;
  21837. box-sizing: border-box;
  21838. }
  21839. .navTaskname {
  21840. white-space: nowrap;
  21841. text-overflow: ellipsis;
  21842. overflow: hidden;
  21843. word-break: break-all;
  21844. padding-left: 5px;
  21845. }
  21846. .openTaskActive {
  21847. /* background-color: #e0eafb !important;
  21848. color: #0061ff; */
  21849. color:#fff;
  21850. background: rgb(55, 129, 252) !important;
  21851. }
  21852. .iframeName {
  21853. margin: 5px 0;
  21854. border-left: 4px solid #41c4a4;
  21855. padding-left: 4px;
  21856. }
  21857. .toolTitle {
  21858. margin: 0px 0px 20px;
  21859. font-size: 20px;
  21860. font-weight: 500;
  21861. border-left: 4px solid #41c4a4;
  21862. padding-left: 4px;
  21863. }
  21864. .cru_selectBox {
  21865. overflow: auto;
  21866. width: 95%;
  21867. margin: 17px auto 0;
  21868. height: calc(100% - 40px - 21px - 20px - 17px);
  21869. background: #fff;
  21870. border-radius: 8px;
  21871. }
  21872. .cru_selectBox::-webkit-scrollbar,
  21873. .study_top::-webkit-scrollbar,
  21874. .textContent::-webkit-scrollbar {
  21875. /*滚动条整体样式*/
  21876. width: 6px;
  21877. /*高宽分别对应横竖滚动条的尺寸*/
  21878. height: 6px;
  21879. }
  21880. /*定义滚动条轨道 内阴影+圆角*/
  21881. .cru_selectBox::-webkit-scrollbar-track,
  21882. .study_top::-webkit-scrollbar-track,
  21883. .textContent::-webkit-scrollbar {
  21884. border-radius: 10px;
  21885. background-color: #b8bdc9;
  21886. }
  21887. /*定义滑块 内阴影+圆角*/
  21888. .cru_selectBox::-webkit-scrollbar-thumb,
  21889. .study_top::-webkit-scrollbar-thumb,
  21890. .textContent::-webkit-scrollbar-thumb {
  21891. border-radius: 10px;
  21892. -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
  21893. background-color: #2c5ab3;
  21894. }
  21895. .vedioBox {
  21896. border-radius: 0 0 20px 20px;
  21897. background: #fff;
  21898. overflow: auto;
  21899. }
  21900. .taskBox {
  21901. width: 98%;
  21902. background: #f0f4fa;
  21903. margin: 10px auto;
  21904. padding: 0 10px;
  21905. border-radius: 4px;
  21906. box-sizing: border-box;
  21907. }
  21908. .vedioTaskBox {
  21909. width: 100%;
  21910. display: flex;
  21911. flex-direction: row;
  21912. flex-wrap: nowrap;
  21913. align-items: flex-start;
  21914. position: relative;
  21915. }
  21916. .toolBox {
  21917. margin: 15px 0 0 25px;
  21918. display: flex;
  21919. position: relative;
  21920. padding: 18px 20px;
  21921. border-top-left-radius: 5px;
  21922. border-top-right-radius: 5px;
  21923. width: 90%;
  21924. }
  21925. .btnAll {
  21926. position: absolute;
  21927. right: 0;
  21928. display: flex;
  21929. flex-direction: row;
  21930. flex-wrap: nowrap;
  21931. align-items: center;
  21932. }
  21933. .btnLeft,
  21934. .btnRight {
  21935. display: flex;
  21936. flex-direction: row;
  21937. flex-wrap: nowrap;
  21938. align-items: center;
  21939. padding: 5px 0;
  21940. }
  21941. .btnLeft {
  21942. border-right: 1px solid #cad1dc;
  21943. }
  21944. .btnLeft > .custom-tooltip {
  21945. background: #3681fc;
  21946. color: #fff;
  21947. }
  21948. .last:hover {
  21949. background: #3383fa !important;
  21950. color: #fff;
  21951. border: 1px solid #3383fa !important;
  21952. }
  21953. .last,
  21954. .returnBtn1 {
  21955. width: 90px;
  21956. height: 36px;
  21957. background: #ffffff;
  21958. border-radius: 4px;
  21959. border: 1px solid #0061ff;
  21960. color: #0061ff;
  21961. cursor: pointer;
  21962. display: flex;
  21963. flex-direction: row;
  21964. flex-wrap: nowrap;
  21965. align-items: center;
  21966. justify-content: center;
  21967. margin-left: 12px;
  21968. }
  21969. .returnBtn1 {
  21970. background: #f0f4fa;
  21971. border-radius: 4px;
  21972. border: 1px solid #cad1dc;
  21973. margin: 0 12px;
  21974. }
  21975. .lastImg {
  21976. min-width: 15px;
  21977. width: 15px;
  21978. height: 15px;
  21979. display: flex;
  21980. }
  21981. .lastText {
  21982. padding: 0 5px 0 5px;
  21983. box-sizing: border-box;
  21984. font-size: 14px;
  21985. }
  21986. .lastImg > img {
  21987. width: 100%;
  21988. height: 100%;
  21989. }
  21990. /* .vedioTimeBox {
  21991. display: flex;
  21992. flex-direction: row;
  21993. align-items: center;
  21994. flex-wrap: nowrap;
  21995. position: relative;
  21996. } */
  21997. .navBox {
  21998. background: #fff;
  21999. height: calc(100% - 40px);
  22000. overflow-y: auto;
  22001. overflow-x: hidden;
  22002. }
  22003. .worksBox {
  22004. margin: 0 0 10px 25px;
  22005. border-bottom: 1px solid #eeeeee;
  22006. padding: 18px 20px;
  22007. border-radius: 4px;
  22008. width: 90%;
  22009. }
  22010. .worksBTitle {
  22011. font-size: 20px;
  22012. padding-bottom: 15px;
  22013. border-bottom: 1px solid #eeeeee;
  22014. display: flex;
  22015. align-items: center;
  22016. }
  22017. .greenBox {
  22018. width: 5px;
  22019. height: 30px;
  22020. background: #63b6fa;
  22021. margin-right: 5px;
  22022. }
  22023. .worksDetailBox {
  22024. display: flex;
  22025. width: 100%;
  22026. flex-direction: row;
  22027. flex-wrap: wrap;
  22028. align-items: flex-end;
  22029. justify-content: flex-start;
  22030. padding: 15px 5px;
  22031. box-sizing: border-box;
  22032. }
  22033. .works {
  22034. display: flex;
  22035. flex-direction: column;
  22036. flex-wrap: nowrap;
  22037. align-items: flex-start;
  22038. justify-content: flex-start;
  22039. align-content: center;
  22040. max-width: 240px;
  22041. width: calc(100% / 3 - 10px);
  22042. height: auto;
  22043. margin-right: 10px;
  22044. margin-bottom: 10px;
  22045. overflow: hidden;
  22046. height: 140px;
  22047. box-shadow: 0 0 6px 1px #dfdada;
  22048. border-radius: 15px;
  22049. }
  22050. .workImg {
  22051. width: 100%;
  22052. /* height: calc(100% - 40px); */
  22053. height: 105px;
  22054. position: relative;
  22055. }
  22056. .workImg > img {
  22057. width: 100%;
  22058. height: 100%;
  22059. object-fit: contain;
  22060. cursor: pointer;
  22061. }
  22062. .worksName {
  22063. height: 40px;
  22064. line-height: 40px;
  22065. display: flex;
  22066. width: 100%;
  22067. flex-direction: row;
  22068. flex-wrap: nowrap;
  22069. justify-content: space-between;
  22070. align-items: center;
  22071. margin: 0 0 0 10px;
  22072. }
  22073. .worksName > div:nth-child(1) {
  22074. width: 110px;
  22075. white-space: nowrap;
  22076. overflow: hidden;
  22077. text-overflow: ellipsis;
  22078. }
  22079. .worksName > div:nth-child(2) {
  22080. color: #b7b4b5;
  22081. }
  22082. .noWorksS {
  22083. padding: 15px 0;
  22084. display: flex;
  22085. flex-direction: row;
  22086. flex-wrap: wrap;
  22087. align-items: center;
  22088. justify-content: flex-start;
  22089. }
  22090. .noWorksName,
  22091. .isWorksName,
  22092. .isWorksName2 {
  22093. background: #ddebf8;
  22094. color: #000;
  22095. width: 90px;
  22096. height: 25px;
  22097. text-align: center;
  22098. line-height: 25px;
  22099. border-radius: 4px;
  22100. margin: 10px 15px 10px 0;
  22101. white-space: nowrap;
  22102. overflow: hidden;
  22103. padding: 5px;
  22104. text-overflow: ellipsis;
  22105. cursor: pointer;
  22106. border: 1px solid #ddebf8;
  22107. }
  22108. .noWorksName {
  22109. background: #fff;
  22110. color: #0061ff;
  22111. border: 1px solid #0061ff;
  22112. }
  22113. .noWorksName > span{
  22114. max-width: 100%;
  22115. display: block;
  22116. overflow: hidden;
  22117. text-overflow: ellipsis;
  22118. white-space: nowrap;
  22119. }
  22120. .isWorksName2 {
  22121. width: 100px;
  22122. height: 40px;
  22123. line-height: 40px;
  22124. position: relative;
  22125. background: #dae6f9;
  22126. }
  22127. .isWorksName {
  22128. background: #e7ebf1 !important;
  22129. width: 100px;
  22130. height: 40px;
  22131. line-height: 40px;
  22132. position: relative;
  22133. color: #acb4bf;
  22134. border: 1px solid #cad1dc !important;
  22135. }
  22136. .isSelectName,
  22137. .noWorksName:hover {
  22138. background: #3383fa !important;
  22139. color: #fff !important;
  22140. border: 1px solid #3383fa !important;
  22141. }
  22142. .title {
  22143. background: #1e5cc9;
  22144. /* width: 98%; */
  22145. height: 45px;
  22146. color: #fff;
  22147. line-height: 45px;
  22148. padding-left: 20px;
  22149. box-sizing: border-box;
  22150. }
  22151. .textBox {
  22152. font-size: 20px;
  22153. width: 90%;
  22154. display: flex;
  22155. flex-direction: column;
  22156. align-items: center;
  22157. margin: 20px auto 0;
  22158. max-height: calc(100% - 75px);
  22159. overflow: auto;
  22160. }
  22161. .textContent {
  22162. font-size: 18px;
  22163. width: 95%;
  22164. max-width: 95%;
  22165. }
  22166. .answerBg {
  22167. background: url("../../assets/icon/answerBgNew.png") no-repeat;
  22168. background-size: 100% 100%;
  22169. width: 100%;
  22170. height: 100%;
  22171. color: #fff;
  22172. text-align: center;
  22173. display: flex;
  22174. flex-direction: column;
  22175. flex-wrap: nowrap;
  22176. align-items: center;
  22177. position: relative;
  22178. justify-content: center;
  22179. }
  22180. .answerBg > div:nth-child(1) {
  22181. /* font-size: 22px;
  22182. padding: 25px 0 10px; */
  22183. }
  22184. .answerContent {
  22185. width: 215px;
  22186. max-height: 60px;
  22187. word-break: break-all;
  22188. text-align: center;
  22189. /* white-space: nowrap; */
  22190. overflow: hidden;
  22191. text-overflow: ellipsis;
  22192. /* padding: 23px 0 0; */
  22193. -webkit-line-clamp: 3;
  22194. -webkit-box-orient: vertical;
  22195. display: -webkit-box;
  22196. font-size: 15px;
  22197. cursor: pointer;
  22198. }
  22199. .elist_input_box {
  22200. display: flex;
  22201. align-items: flex-start;
  22202. flex-wrap: nowrap;
  22203. padding: 10px 0 15px 30px;
  22204. flex-direction: column;
  22205. }
  22206. .elist_input {
  22207. /* width: 40%; */
  22208. width: 45%;
  22209. margin: 20px;
  22210. }
  22211. .elist_input .elist_input_box input {
  22212. font: inherit;
  22213. color: currentColor;
  22214. width: 200px;
  22215. padding: 8px 14px;
  22216. display: block;
  22217. min-width: 0;
  22218. outline: none;
  22219. border: 1px solid rgba(0, 0, 0, 0.23);
  22220. border-radius: 4px;
  22221. box-sizing: border-box;
  22222. background: #fff;
  22223. margin: 0 20px 0 0;
  22224. }
  22225. .elist_input .elist_input_box span {
  22226. height: 36px;
  22227. line-height: 36px;
  22228. color: rgb(82, 82, 82);
  22229. }
  22230. .elist_input .elist_input_box .remove {
  22231. height: 20px;
  22232. width: 20px;
  22233. background-size: 100% 100%;
  22234. background-position: unset;
  22235. margin-left: 5px;
  22236. }
  22237. .elist_input_box >>> .el-rate {
  22238. display: flex;
  22239. height: 36px;
  22240. align-items: center;
  22241. }
  22242. .elist_input_box .elist_inptu_text {
  22243. min-height: 50px;
  22244. /* width: 500px;
  22245. max-height: 150px; */
  22246. width: 100%;
  22247. line-height: 50px;
  22248. color: rgb(82, 82, 82);
  22249. overflow: auto;
  22250. text-indent: 5px;
  22251. background: #f7f6f9;
  22252. border-radius: 10px;
  22253. }
  22254. .elist_input_box .elist_inptu_text input {
  22255. width: 500px;
  22256. }
  22257. .elist_input_box >>> .el-rate__icon {
  22258. font-size: 24px;
  22259. }
  22260. .isClick {
  22261. background: #4d9def;
  22262. }
  22263. .bzBox {
  22264. display: flex;
  22265. flex-direction: row;
  22266. align-items: center;
  22267. }
  22268. .bzBox .yCss {
  22269. width: 7px;
  22270. height: 7px;
  22271. background: #fff;
  22272. margin: 0 16px 0 6px;
  22273. border-radius: 50%;
  22274. border: 5px solid #3681fc;
  22275. z-index: 99;
  22276. }
  22277. .bzBox > div:nth-child(2) {
  22278. font-size: 18px;
  22279. font-weight: bold;
  22280. color: #0e1e33;
  22281. }
  22282. .navTitile {
  22283. padding: 0 0px 0 15px;
  22284. font-size: 16px;
  22285. font-weight: bold;
  22286. color: #0e1e33;
  22287. height: 40px;
  22288. line-height: 40px;
  22289. }
  22290. .isTypeOne {
  22291. width: 240px;
  22292. height: 170px;
  22293. /* border: 1px solid #f8f8f8; */
  22294. border-radius: 10px;
  22295. box-shadow: 0 0 6px 1px #dfdada;
  22296. }
  22297. .e_add_top {
  22298. display: flex;
  22299. justify-content: space-between;
  22300. padding: 10px 20px;
  22301. border-radius: 3px;
  22302. background: #fff;
  22303. }
  22304. .e_add_title2 {
  22305. display: flex;
  22306. align-items: center;
  22307. }
  22308. .e_add_title2 span {
  22309. width: 40px;
  22310. }
  22311. .e_add_title {
  22312. display: flex;
  22313. align-items: center;
  22314. color: #b8b8b8;
  22315. font-size: 18px;
  22316. position: relative;
  22317. height: 40px;
  22318. }
  22319. .e_add_title span {
  22320. margin-right: 10px;
  22321. }
  22322. .e_add_title .el_input {
  22323. width: 300px;
  22324. }
  22325. .e_add_title >>> .el-input__inner {
  22326. width: 400px;
  22327. }
  22328. .e_add_btn {
  22329. }
  22330. .e_add_content {
  22331. display: flex;
  22332. width: 100%;
  22333. max-width: 650px;
  22334. height: 550px;
  22335. }
  22336. .e_add_list {
  22337. background: #fff;
  22338. height: 500px;
  22339. width: 210px;
  22340. position: relative;
  22341. margin: 15px 5px 0 0;
  22342. flex-shrink: 0;
  22343. display: flex;
  22344. flex-direction: column;
  22345. }
  22346. .e_add_list_title {
  22347. font-size: 20px;
  22348. width: 100%;
  22349. box-sizing: border-box;
  22350. padding: 15px 40px;
  22351. text-align: center;
  22352. border-bottom: 1px solid #eaeaea;
  22353. position: relative;
  22354. display: flex;
  22355. align-items: center;
  22356. justify-content: center;
  22357. height: 57px;
  22358. background: #f6f6f6;
  22359. }
  22360. .e_add_list_title span {
  22361. overflow: hidden;
  22362. white-space: nowrap;
  22363. text-overflow: ellipsis;
  22364. }
  22365. .e_add_list_title img {
  22366. position: absolute;
  22367. right: 15px;
  22368. width: 25px;
  22369. cursor: pointer;
  22370. top: 50%;
  22371. transform: translateY(-50%);
  22372. }
  22373. .e_add_list_body {
  22374. height: calc(100% - 187px);
  22375. overflow: auto;
  22376. }
  22377. .e_add_list_child {
  22378. width: 100%;
  22379. display: flex;
  22380. align-items: center;
  22381. justify-content: center;
  22382. position: relative;
  22383. box-sizing: border-box;
  22384. padding: 15px 40px;
  22385. text-align: center;
  22386. }
  22387. .e_add_list_child span {
  22388. overflow: hidden;
  22389. white-space: nowrap;
  22390. text-overflow: ellipsis;
  22391. cursor: pointer;
  22392. }
  22393. .e_add_list_child img {
  22394. position: absolute;
  22395. right: 10px;
  22396. width: 21px;
  22397. cursor: pointer;
  22398. top: 50%;
  22399. transform: translateY(-50%);
  22400. }
  22401. .e_add_list_child + .e_add_list_child {
  22402. border-top: 1px solid #eaeaea;
  22403. }
  22404. .e_add_list_child .active {
  22405. color: #409eff;
  22406. }
  22407. .e_add_list_btn {
  22408. position: absolute;
  22409. bottom: 0;
  22410. height: 50px;
  22411. background: rgb(120, 120, 254);
  22412. width: 100%;
  22413. color: #fff;
  22414. font-size: 16px;
  22415. text-align: center;
  22416. line-height: 50px;
  22417. cursor: pointer;
  22418. }
  22419. .e_add_list_detail {
  22420. position: absolute;
  22421. bottom: 0;
  22422. height: 130px;
  22423. background: rgb(120, 120, 254);
  22424. width: 100%;
  22425. color: #fff;
  22426. font-size: 16px;
  22427. display: flex;
  22428. align-items: center;
  22429. justify-content: center;
  22430. }
  22431. .e_add_list_detail textarea {
  22432. height: 90%;
  22433. width: 95%;
  22434. border: none;
  22435. resize: none;
  22436. outline: none;
  22437. padding: 5px;
  22438. box-sizing: border-box;
  22439. }
  22440. .e_add_list_pbox {
  22441. width: 100%;
  22442. max-width: 650px;
  22443. /* height: 600px; */
  22444. }
  22445. .e_add_list_pbox_title {
  22446. height: 50px;
  22447. background: #fff;
  22448. display: flex;
  22449. align-items: center;
  22450. width: 100%;
  22451. box-sizing: border-box;
  22452. padding: 0 20px;
  22453. }
  22454. .type_title {
  22455. font-size: 18px;
  22456. font-weight: 700;
  22457. }
  22458. .type_content {
  22459. font-size: 16px;
  22460. /* margin-left: 30px; */
  22461. }
  22462. .type_content span + span {
  22463. margin-left: 20px;
  22464. }
  22465. .type_content span {
  22466. cursor: pointer;
  22467. padding-bottom: 5px;
  22468. box-sizing: border-box;
  22469. }
  22470. .type_content .active {
  22471. color: #409eff;
  22472. border-bottom: 2px solid #409eff;
  22473. }
  22474. .e_add_list_pbox_content {
  22475. height: calc(100% - 50px);
  22476. display: flex;
  22477. align-items: center;
  22478. width: 100%;
  22479. background: #fff;
  22480. }
  22481. .evaCss {
  22482. display: flex;
  22483. flex-direction: row;
  22484. flex-wrap: nowrap;
  22485. align-items: flex-start;
  22486. padding: 0 0 20px;
  22487. }
  22488. .cru_line {
  22489. position: absolute;
  22490. bottom: 0px;
  22491. transition: all 0.5s;
  22492. left: 0px;
  22493. width: 125px;
  22494. margin-left: -25px;
  22495. }
  22496. .isNoMessage {
  22497. width: 20%;
  22498. margin: 25% auto 0;
  22499. }
  22500. .isNoMessage > img {
  22501. width: 100%;
  22502. height: 100%;
  22503. }
  22504. .fullStyle >>> .el-dialog__body {
  22505. height: 100% !important;
  22506. }
  22507. .fullStyle >>> .el-dialog,
  22508. .fullStyle {
  22509. width: 100% !important;
  22510. max-width: 100% !important;
  22511. height: 100% !important;
  22512. margin: 0 !important;
  22513. }
  22514. .full_diy >>> .el-dialog {
  22515. margin: 0 !important;
  22516. height: 100%;
  22517. padding: 4px;
  22518. }
  22519. .full_diy >>> .el-dialog__body {
  22520. height: calc(100% - 100px);
  22521. }
  22522. .full_diy2 >>> .el-dialog__body {
  22523. height: calc(100% - 50px);
  22524. padding: 0;
  22525. }
  22526. .switchCss {
  22527. /* width: 100%; */
  22528. display: flex;
  22529. flex-direction: row;
  22530. flex-wrap: nowrap;
  22531. align-items: center;
  22532. /* justify-content: center; */
  22533. }
  22534. .isClickNav {
  22535. /* color: #499eef; */
  22536. color: #000;
  22537. }
  22538. .commentImg {
  22539. width: 25px;
  22540. height: 25px;
  22541. cursor: pointer;
  22542. }
  22543. .commentImg > img {
  22544. width: 100%;
  22545. height: 100%;
  22546. }
  22547. .comment {
  22548. background: #f9f9f9;
  22549. border-radius: 0 0 4px 4px;
  22550. display: flex;
  22551. flex-direction: row;
  22552. flex-wrap: nowrap;
  22553. align-items: center;
  22554. justify-content: flex-end;
  22555. height: 35px;
  22556. }
  22557. .commentList {
  22558. display: flex;
  22559. flex-direction: row;
  22560. flex-wrap: nowrap;
  22561. align-items: center;
  22562. justify-content: center;
  22563. align-content: center;
  22564. /* margin-left: 15px; */
  22565. /* margin-left: 8px; */
  22566. }
  22567. .scoreImg {
  22568. width: 17px;
  22569. height: 17px;
  22570. }
  22571. .studentDetail {
  22572. display: flex;
  22573. flex-direction: row;
  22574. flex-wrap: nowrap;
  22575. /* align-items: center; */
  22576. align-items: flex-start;
  22577. }
  22578. .tx {
  22579. width: 50px;
  22580. }
  22581. .tx > img {
  22582. width: 100%;
  22583. height: 100%;
  22584. }
  22585. .nameAndTime {
  22586. display: flex;
  22587. flex-direction: column;
  22588. flex-wrap: nowrap;
  22589. align-items: flex-start;
  22590. margin-left: 10px;
  22591. }
  22592. .worksAnswer {
  22593. color: #4078dd;
  22594. margin: 10px 0;
  22595. font-size: 16px;
  22596. position: relative;
  22597. }
  22598. .worksAnswer > img {
  22599. width: 500px;
  22600. height: 300px;
  22601. object-fit: contain;
  22602. margin: 0 auto;
  22603. display: block;
  22604. }
  22605. .commentTop {
  22606. border-bottom: 1px solid #eaeaea;
  22607. padding-bottom: 10px;
  22608. }
  22609. .commentBox {
  22610. padding-top: 15px;
  22611. }
  22612. .pl {
  22613. font-size: 18px;
  22614. }
  22615. .plPerson {
  22616. width: 100%;
  22617. }
  22618. .plName {
  22619. display: flex;
  22620. flex-direction: row;
  22621. flex-wrap: nowrap;
  22622. align-items: baseline;
  22623. color: #78787a;
  22624. width: 100%;
  22625. }
  22626. .deleteComment {
  22627. cursor: pointer;
  22628. margin-left: auto;
  22629. color: #237ade;
  22630. }
  22631. .plContent {
  22632. margin-top: 5px;
  22633. }
  22634. .evalCss {
  22635. background: #fff;
  22636. font-size: 18px;
  22637. }
  22638. .nav {
  22639. color: #9d9d9d;
  22640. padding: 5px 0 15px 20px;
  22641. }
  22642. .middleBox {
  22643. padding: 5px 0 15px 20px;
  22644. }
  22645. .pfBox {
  22646. padding-bottom: 30px;
  22647. }
  22648. .nameAndrate {
  22649. display: flex;
  22650. flex-direction: row;
  22651. flex-wrap: nowrap;
  22652. align-items: center;
  22653. padding-bottom: 10px;
  22654. height: 30px;
  22655. line-height: 30px;
  22656. }
  22657. .nameAndrate > div {
  22658. margin-left: 10px;
  22659. color: #000;
  22660. height: 30px;
  22661. }
  22662. .nameAndrate >>> .el-rate__icon {
  22663. font-size: 28px !important;
  22664. }
  22665. .pfBox > div:nth-child(2) {
  22666. background: #f7f6f9;
  22667. width: 400px;
  22668. min-height: 45px;
  22669. border-radius: 10px;
  22670. font-size: 16px;
  22671. display: flex;
  22672. flex-wrap: wrap;
  22673. align-items: center;
  22674. padding: 10px 20px;
  22675. box-sizing: border-box;
  22676. color: #000;
  22677. }
  22678. .bz {
  22679. display: flex;
  22680. flex-direction: row;
  22681. flex-wrap: nowrap;
  22682. align-items: flex-start;
  22683. }
  22684. .bz > div {
  22685. padding: 0 10px;
  22686. }
  22687. .select_box2_title {
  22688. background: #fff;
  22689. border-radius: 5px;
  22690. padding: 15px 10px;
  22691. box-sizing: border-box;
  22692. margin-bottom: 10px;
  22693. display: flex;
  22694. flex-direction: row;
  22695. flex-wrap: nowrap;
  22696. align-items: center;
  22697. }
  22698. .select_box2_title > div:nth-child(2) {
  22699. margin-left: 10px;
  22700. color: #c4c4c4;
  22701. }
  22702. .select_box2_box {
  22703. display: flex;
  22704. height: 500px;
  22705. }
  22706. .select_box2_img {
  22707. width: calc(100% - 310px);
  22708. height: 100%;
  22709. overflow: auto;
  22710. background: #fff;
  22711. border-radius: 5px;
  22712. }
  22713. .select_box2_img img {
  22714. width: 100%;
  22715. }
  22716. .select_box2_answer {
  22717. background: #fff;
  22718. margin-left: 10px;
  22719. border-radius: 5px;
  22720. width: 300px;
  22721. overflow: auto;
  22722. height: 90%;
  22723. display: flex;
  22724. flex-direction: column;
  22725. align-items: flex-start;
  22726. padding-top: 10px;
  22727. box-sizing: border-box;
  22728. position: relative;
  22729. }
  22730. .select_answer_title {
  22731. padding: 0 0 15px 20px;
  22732. color: #c4c4c4;
  22733. }
  22734. .select_box2_answer_box {
  22735. margin: 0 0 10px 20px;
  22736. width: 85%;
  22737. display: flex;
  22738. flex-direction: row;
  22739. flex-wrap: nowrap;
  22740. align-items: center;
  22741. }
  22742. .select_box2_answer_box >>> .el-input.is-disabled .el-input__inner {
  22743. color: #000;
  22744. }
  22745. .upAnswerCss {
  22746. position: absolute;
  22747. bottom: 15px;
  22748. right: 15px;
  22749. }
  22750. .upAnswerCss >>> .el-button {
  22751. width: 95px;
  22752. height: 35px;
  22753. line-height: 35px;
  22754. padding: 0;
  22755. }
  22756. .rightWidthCss {
  22757. width: 60%;
  22758. display: flex;
  22759. flex-direction: row;
  22760. align-items: flex-start;
  22761. }
  22762. .rightAnswer {
  22763. display: flex;
  22764. flex-direction: row;
  22765. flex-wrap: nowrap;
  22766. align-items: center;
  22767. color: red;
  22768. margin-bottom: 31px;
  22769. }
  22770. .rightAnswerCss {
  22771. display: flex;
  22772. flex-direction: column;
  22773. flex-wrap: nowrap;
  22774. padding-top: 60px;
  22775. }
  22776. .blueCss {
  22777. color: #767de1;
  22778. margin-left: 10px;
  22779. }
  22780. .redCss {
  22781. color: red;
  22782. }
  22783. .redioStyle >>> .el-radio__input.is-checked + .el-radio__label {
  22784. color: rgb(0 123 255) !important;
  22785. }
  22786. .redioStyle >>> .el-checkbox__input.is-checked + .el-checkbox__label {
  22787. color: rgb(0 123 255) !important;
  22788. }
  22789. .zuoyeYulan {
  22790. padding-top: 0;
  22791. font-size: 18px;
  22792. display: flex;
  22793. align-items: flex-end;
  22794. }
  22795. .buttonA {
  22796. margin-left: 10px;
  22797. padding: 0;
  22798. }
  22799. .displayBox {
  22800. margin-bottom: 10px;
  22801. display: block;
  22802. border-bottom: 3px solid #eee;
  22803. display: flex;
  22804. align-items: center;
  22805. }
  22806. .easy_comment {
  22807. width: calc(100% - 90px);
  22808. margin-left: 10px;
  22809. display: flex;
  22810. flex-wrap: wrap;
  22811. }
  22812. .easy_comment > div {
  22813. border: 1px solid #4a4a4a;
  22814. color: #666;
  22815. border-radius: 15px;
  22816. padding: 5px 10px;
  22817. font-size: 16px;
  22818. margin-bottom: 10px;
  22819. margin-right: 5px;
  22820. cursor: pointer;
  22821. }
  22822. .easy_comment div:hover {
  22823. border: 1px solid #f7ba2a;
  22824. color: #c69217;
  22825. }
  22826. .xuan_right_box {
  22827. padding: 10px 0;
  22828. background: #f0f4fa;
  22829. margin: 0 15px 0 25px;
  22830. border-bottom-left-radius: 5px;
  22831. border-bottom-right-radius: 5px;
  22832. width: 91.5%;
  22833. }
  22834. .tool_right_box {
  22835. display: flex;
  22836. align-items: center;
  22837. }
  22838. .tool_right_box + .tool_right_box {
  22839. margin-top: 10px;
  22840. }
  22841. .right_box_xuan {
  22842. border-radius: 5px;
  22843. padding: 5px;
  22844. margin-left: 10px;
  22845. min-width: 85px;
  22846. background: #fff;
  22847. color: #0061ff;
  22848. border: 1px solid #0061ff;
  22849. font-size: 14px;
  22850. }
  22851. .pButton:hover {
  22852. opacity: 1 !important;
  22853. }
  22854. .pButton {
  22855. position: fixed;
  22856. text-align: center;
  22857. cursor: pointer;
  22858. z-index: 999;
  22859. right: 20px;
  22860. top: 110px;
  22861. width: 50px;
  22862. height: 50px;
  22863. display: flex;
  22864. align-items: center;
  22865. justify-content: center;
  22866. border-radius: 5px;
  22867. }
  22868. .pzClass {
  22869. width: calc(100% - 340px);
  22870. }
  22871. .newDialogCss {
  22872. /* position: fixed;
  22873. right: 5%;
  22874. top: 50%;
  22875. width: 340px;
  22876. transform: translateY(-50%);
  22877. height: 60%;
  22878. box-shadow: 0px 0 8px 0px #555555;
  22879. border-radius: 15px;
  22880. z-index: 999; */
  22881. position: fixed;
  22882. right: 20px;
  22883. top: 101px;
  22884. width: 330px;
  22885. height: calc(100% - 80px);
  22886. z-index: 999;
  22887. background: #fff;
  22888. border-top-right-radius: 0px;
  22889. border-bottom-right-radius: 0px;
  22890. overflow: hidden;
  22891. }
  22892. .newDialogCss>.scoreList{
  22893. width:100%;
  22894. height:100%;
  22895. box-sizing:border-box;
  22896. padding:10px 15px;
  22897. overflow:auto;
  22898. padding-bottom:80px;
  22899. }
  22900. .pzTop {
  22901. color: #fff;
  22902. background: #000;
  22903. display: flex;
  22904. flex-direction: row;
  22905. flex-wrap: nowrap;
  22906. align-items: center;
  22907. justify-content: space-between;
  22908. height: 40px;
  22909. border-radius: 15px 15px 0 0;
  22910. user-select: none;
  22911. }
  22912. .pzTop2 .checkbox {
  22913. display: flex;
  22914. align-items: center;
  22915. padding: 5px 10px;
  22916. flex: 0 0 auto;
  22917. font-weight: bold;
  22918. border-bottom: 1px solid #eee;
  22919. justify-content: space-between;
  22920. }
  22921. .checkbox>.cb-tabList{
  22922. display:flex;
  22923. align-items:center;
  22924. }
  22925. .cb-tabList>div{
  22926. margin-right:20px;
  22927. font-weight:400;
  22928. cursor:pointer;
  22929. }
  22930. .cb-tabList>.cb-tabItem{
  22931. color:#1684FC;
  22932. position:relative;
  22933. }
  22934. .cb-tabItem::after{
  22935. content:"";
  22936. width:100%;
  22937. height:2px;
  22938. background:#1684FC;
  22939. position:absolute;
  22940. bottom:-5px;
  22941. left:0
  22942. }
  22943. .pzTop2 .check {
  22944. text-align: center;
  22945. cursor: pointer;
  22946. box-sizing: border-box;
  22947. display: flex;
  22948. }
  22949. .pzTop2 img {
  22950. width: 25px;
  22951. cursor: pointer;
  22952. }
  22953. .pzTop > div:nth-child(1) {
  22954. padding-left: 10px;
  22955. }
  22956. .pzTop > div:nth-child(2) {
  22957. width: 15px;
  22958. height: 15px;
  22959. padding-right: 10px;
  22960. cursor: pointer;
  22961. }
  22962. .pzTop > div:nth-child(2) > img {
  22963. width: 100%;
  22964. height: 100%;
  22965. }
  22966. .pzBox,
  22967. .noPzBox {
  22968. height: calc(100% - 60px);
  22969. /* background: #ededed; */
  22970. background: #fff;
  22971. /* border-radius: 0 0 15px 15px; */
  22972. }
  22973. .noPzBox {
  22974. display: flex;
  22975. flex-direction: column;
  22976. flex-wrap: nowrap;
  22977. justify-content: center;
  22978. align-items: center;
  22979. }
  22980. .pzList {
  22981. background: #f7f7f7;
  22982. width: 90%;
  22983. margin: 0 auto 15px;
  22984. border-radius: 5px;
  22985. }
  22986. .pzNavTop {
  22987. display: flex;
  22988. flex-direction: row;
  22989. flex-wrap: nowrap;
  22990. padding: 10px 10px 0 10px;
  22991. align-items: center;
  22992. }
  22993. .pzDelete {
  22994. cursor: pointer;
  22995. margin-left: auto;
  22996. font-size: 14px;
  22997. color: #afafaf;
  22998. }
  22999. .pzNavTop > div:nth-child(1) {
  23000. background: #3760af;
  23001. width: 35px;
  23002. height: 35px;
  23003. color: #fff;
  23004. text-align: center;
  23005. line-height: 35px;
  23006. border-radius: 50%;
  23007. font-size: 14px;
  23008. }
  23009. .pzNavTop > div:nth-child(2) {
  23010. font-size: 18px;
  23011. color: #959595;
  23012. margin-left: 5px;
  23013. }
  23014. .pzContent {
  23015. padding: 10px;
  23016. word-break: break-word;
  23017. }
  23018. .pzContent audio {
  23019. width: 100%;
  23020. }
  23021. .pzContent audio::-webkit-media-controls-panel {
  23022. background: #fff;
  23023. }
  23024. .pzContent >>> img {
  23025. max-width: 100%;
  23026. }
  23027. .pzListBox {
  23028. padding-top: 15px;
  23029. height: calc(100% - 110px);
  23030. overflow: auto;
  23031. }
  23032. .addPzButton {
  23033. position: relative;
  23034. margin-top: 3px;
  23035. width: 100%;
  23036. }
  23037. .addPzButton .img1 {
  23038. position: absolute;
  23039. top: 50%;
  23040. right: 25px;
  23041. transform: translateY(-50%);
  23042. height: 100%;
  23043. display: flex;
  23044. align-items: center;
  23045. }
  23046. .addPzButton .img1 div {
  23047. display: flex;
  23048. }
  23049. .addPzButton .img1 div img {
  23050. width: 28px;
  23051. margin-left: 10px;
  23052. cursor: pointer;
  23053. }
  23054. .addPzButton .img1 div span {
  23055. font-size: 14px;
  23056. margin: 4px 0 0 3px;
  23057. color: #afafaf;
  23058. }
  23059. .addPz {
  23060. background: #4b79ce;
  23061. width: 100px;
  23062. color: #fff;
  23063. font-size: 12px;
  23064. height: 30px;
  23065. margin: 0 auto;
  23066. text-align: center;
  23067. line-height: 30px;
  23068. border-radius: 10px;
  23069. cursor: pointer;
  23070. }
  23071. .addDialogCss {
  23072. position: fixed;
  23073. width: 600px;
  23074. height: 70%;
  23075. min-height: 450px;
  23076. box-shadow: 0px 0 8px 0px #555555;
  23077. border-radius: 15px;
  23078. z-index: 999;
  23079. left: 50%;
  23080. top: 50%;
  23081. margin: -18% 0 0 -300px;
  23082. }
  23083. .teacherPz {
  23084. display: flex;
  23085. flex-direction: row;
  23086. align-items: center;
  23087. flex-wrap: nowrap;
  23088. }
  23089. .teacherPzImg {
  23090. width: 30px;
  23091. height: 30px;
  23092. }
  23093. .teacherPzImg > img {
  23094. width: 100%;
  23095. height: 100%;
  23096. }
  23097. .addPzBox {
  23098. height: calc(100% - 40px);
  23099. background: #ededed;
  23100. border-bottom-left-radius: 15px;
  23101. border-bottom-right-radius: 15px;
  23102. }
  23103. .pzAudioClass {
  23104. margin: 15px 14px;
  23105. background: #fff;
  23106. height: 100%;
  23107. display: flex;
  23108. justify-content: center;
  23109. align-items: center;
  23110. }
  23111. .pzConText {
  23112. width: 95%;
  23113. height: 100%;
  23114. margin: 10px auto 0;
  23115. border: none;
  23116. background: #fff;
  23117. border-radius: 0px;
  23118. }
  23119. .pzConText >>> .text {
  23120. height: calc(100% - 82px);
  23121. }
  23122. .addTextCss {
  23123. background: #4b79ce;
  23124. width: 80px;
  23125. height: 30px;
  23126. text-align: center;
  23127. color: #fff;
  23128. line-height: 30px;
  23129. border-radius: 10px;
  23130. margin: 10px auto 0;
  23131. cursor: pointer;
  23132. }
  23133. .pzConText:focus-visible {
  23134. border: none !important;
  23135. }
  23136. .maxWidth {
  23137. width: 1000px;
  23138. }
  23139. .noPz {
  23140. width: 150px;
  23141. margin: 0 auto 20%;
  23142. }
  23143. .noPz > img {
  23144. width: 100%;
  23145. height: 100%;
  23146. }
  23147. .timeAndReply {
  23148. display: flex;
  23149. flex-direction: row;
  23150. flex-wrap: nowrap;
  23151. justify-content: space-between;
  23152. align-items: center;
  23153. font-size: 14px;
  23154. box-sizing: border-box;
  23155. padding: 0 10px 10px 0px;
  23156. }
  23157. .timeAndReply .time {
  23158. color: #bfbfbf;
  23159. padding: 0 0 0 10px;
  23160. box-sizing: border-box;
  23161. }
  23162. .timeAndReply > div:last-child {
  23163. cursor: pointer;
  23164. color: #777;
  23165. }
  23166. /* table 样式 */
  23167. .cont >>> table {
  23168. border-top: 1px solid #ccc;
  23169. border-left: 1px solid #ccc;
  23170. }
  23171. .cont >>> table td,
  23172. .cont >>> table th {
  23173. border-bottom: 1px solid #ccc;
  23174. border-right: 1px solid #ccc;
  23175. /* padding: 20px 5px; */
  23176. padding: 5px 10px;
  23177. max-width: 0px;
  23178. height: 30px;
  23179. vertical-align: baseline;
  23180. box-sizing: border-box;
  23181. }
  23182. .cont >>> table th {
  23183. border-bottom: 2px solid #ccc;
  23184. text-align: center;
  23185. }
  23186. /* blockquote 样式 */
  23187. .cont >>> blockquote {
  23188. display: block;
  23189. border-left: 8px solid #d0e5f2;
  23190. padding: 5px 10px;
  23191. margin: 10px 0;
  23192. line-height: 1.4;
  23193. font-size: 100%;
  23194. background-color: #f1f1f1;
  23195. }
  23196. /* code 样式 */
  23197. .cont >>> code {
  23198. display: inline-block;
  23199. /* *display: inline; */
  23200. zoom: 1;
  23201. background-color: #f1f1f1;
  23202. border-radius: 3px;
  23203. padding: 3px 5px;
  23204. margin: 0 3px;
  23205. }
  23206. .cont >>> pre code {
  23207. display: block;
  23208. }
  23209. /* ul ol 样式 */
  23210. .cont >>> ul,
  23211. ol {
  23212. margin: 10px 0 10px 20px;
  23213. }
  23214. .addPzCheck {
  23215. display: flex;
  23216. flex-direction: row;
  23217. flex-wrap: nowrap;
  23218. padding: 10px 15px 0;
  23219. }
  23220. .addPzCheck span {
  23221. cursor: pointer;
  23222. padding-bottom: 5px;
  23223. font-weight: bold;
  23224. }
  23225. .addPzCheck span + span {
  23226. margin-left: 10px;
  23227. }
  23228. .addPzCheck .isChooseActive {
  23229. color: #3e88f4;
  23230. border-bottom: 2px solid #2f80f3;
  23231. }
  23232. /* code 样式 */
  23233. .cont {
  23234. /* -webkit-user-modify: read-write; */
  23235. overflow-wrap: break-word;
  23236. -webkit-line-break: after-white-space;
  23237. word-break: break-word;
  23238. white-space: pre-line;
  23239. }
  23240. .scoreBox,
  23241. .scoreDetailBox {
  23242. display: flex;
  23243. align-items: center;
  23244. justify-content: flex-start;
  23245. margin-top: 20px;
  23246. font-size: 18px;
  23247. width: 100%;
  23248. }
  23249. .scoreBox .t,
  23250. .scoreDetailBox .t {
  23251. margin-right: 10px;
  23252. width: 100px;
  23253. text-align: right;
  23254. }
  23255. .scoreDetailBox {
  23256. align-items: flex-start;
  23257. }
  23258. .scoreDetailBox >>> .el-textarea {
  23259. width: calc(100% - 200px);
  23260. }
  23261. .scoreBox >>> .el-input {
  23262. width: 130px;
  23263. font-size: 38px;
  23264. }
  23265. .scoreBox >>> .el-input__inner {
  23266. height: 60px;
  23267. }
  23268. .answerScore {
  23269. position: absolute;
  23270. top: 10px;
  23271. right: 10px;
  23272. background: #0000008f;
  23273. border-radius: 5px;
  23274. padding: 3px 5px;
  23275. font-size: 14px;
  23276. color: #fff;
  23277. cursor: pointer;
  23278. }
  23279. .open_box .switch_box {
  23280. width: 100%;
  23281. margin: 0 auto;
  23282. display: flex;
  23283. justify-content: space-between;
  23284. }
  23285. .open_box .switch_box + .switch_box {
  23286. margin-top: 10px;
  23287. }
  23288. .deleteImg,.deleteImg1 {
  23289. width: 25px !important;
  23290. height: 25px !important;
  23291. cursor: pointer;
  23292. position: absolute;
  23293. top: 10px;
  23294. right: 10px;
  23295. }
  23296. .deleteImg2 {
  23297. width: 23px !important;
  23298. height: 23px !important;
  23299. top: 5px;
  23300. right: 5px;
  23301. }
  23302. .deleteImg1{
  23303. width: 23px !important;
  23304. height: 23px !important;
  23305. top: 5px !important;
  23306. right: 30px !important;
  23307. }
  23308. .rightW {
  23309. right: 40px;
  23310. }
  23311. .drawPBox {
  23312. display: flex;
  23313. flex-direction: column;
  23314. position: relative;
  23315. }
  23316. .drawPBox span {
  23317. font-size: 18px;
  23318. color: #606266;
  23319. padding-bottom: 10px;
  23320. margin: 10px 0;
  23321. border-bottom: 1px solid #eaeaea;
  23322. }
  23323. .drawPBox img {
  23324. width: 500px;
  23325. height: 300px;
  23326. object-fit: contain;
  23327. cursor: pointer;
  23328. margin: 0 auto;
  23329. }
  23330. .sentenBox {
  23331. background: #fff;
  23332. height: 450px;
  23333. overflow: auto;
  23334. background-image: url("../../assets/icon/conSentences/stuBg.png");
  23335. background-position: 102%;
  23336. background-repeat: no-repeat;
  23337. background-size: 60%;
  23338. }
  23339. .addSen {
  23340. background: #409efe;
  23341. width: 90px;
  23342. color: #fff;
  23343. height: 35px;
  23344. text-align: center;
  23345. line-height: 35px;
  23346. border-radius: 5px;
  23347. float: right;
  23348. margin: 10px 20px 0 0;
  23349. cursor: pointer;
  23350. }
  23351. .sentenTop {
  23352. display: flex;
  23353. flex-direction: row;
  23354. flex-wrap: nowrap;
  23355. align-items: center;
  23356. padding: 55px 0 0 20px;
  23357. box-sizing: border-box;
  23358. }
  23359. .sentenTop > div:nth-child(2) {
  23360. width: 300px;
  23361. margin: 0 15px;
  23362. }
  23363. .sentenTop > div:nth-child(3) {
  23364. background: #409efe;
  23365. color: #fff;
  23366. width: 65px;
  23367. height: 35px;
  23368. text-align: center;
  23369. line-height: 35px;
  23370. border-radius: 5px;
  23371. cursor: pointer;
  23372. }
  23373. .cardList,
  23374. .cardList1 {
  23375. padding: 10px 0 10px 0;
  23376. display: flex;
  23377. flex-direction: row;
  23378. flex-wrap: wrap;
  23379. align-items: center;
  23380. box-sizing: border-box;
  23381. border-bottom: 1px solid #f4f4f4;
  23382. width: 98%;
  23383. margin: 0 auto;
  23384. min-width: 60%;
  23385. max-width: 85%;
  23386. }
  23387. .cardList1 {
  23388. padding: 10px 0 10px 10px !important;
  23389. margin: 0 !important;
  23390. }
  23391. .cardBox {
  23392. display: flex;
  23393. flex-direction: row;
  23394. flex-wrap: wrap;
  23395. align-items: center;
  23396. align-content: center;
  23397. }
  23398. .cardBox > div {
  23399. margin-bottom: 10px;
  23400. }
  23401. .isCard,
  23402. .isChooseCard,
  23403. .noCard,
  23404. .isCard1 {
  23405. min-width: 130px;
  23406. width: auto;
  23407. height: 60px;
  23408. text-align: center;
  23409. line-height: 60px;
  23410. font-size: 20px;
  23411. cursor: pointer;
  23412. background-image: url("../../assets/icon/conSentences/titleBorder.png");
  23413. background-size: cover;
  23414. transition: all 2s;
  23415. margin-right: 20px;
  23416. background-size: 100% 100%;
  23417. padding: 0 20px;
  23418. box-sizing: border-box;
  23419. }
  23420. .isCard > div,
  23421. .noCard > div,
  23422. .isCard1 > div {
  23423. white-space: nowrap;
  23424. overflow: hidden;
  23425. text-overflow: ellipsis;
  23426. width: 100%;
  23427. margin: 0 auto;
  23428. }
  23429. .noCard {
  23430. background-image: none;
  23431. }
  23432. .isCard1 {
  23433. background-image: url("../../assets/icon/conSentences/answerBorder.png");
  23434. }
  23435. .isChooseCard {
  23436. background-image: none;
  23437. border: 1px dashed #b9b9b9;
  23438. border-radius: 10px;
  23439. }
  23440. .card {
  23441. width: 130px;
  23442. height: 60px;
  23443. }
  23444. .card > img {
  23445. width: 100%;
  23446. height: 100%;
  23447. }
  23448. .rightCardBox {
  23449. margin: 10px 0 0 10px;
  23450. }
  23451. .rightCardBox > div:nth-child(1) {
  23452. margin-bottom: 10px;
  23453. }
  23454. .cardCss {
  23455. display: flex;
  23456. flex-direction: column;
  23457. flex-wrap: nowrap;
  23458. align-items: center;
  23459. border-bottom: 3px solid #b4c3d3;
  23460. padding: 0 0 5px 0;
  23461. margin-right: 10px;
  23462. }
  23463. .cardCss > div:nth-child(2) {
  23464. background: #5b7b9d;
  23465. color: #fff;
  23466. width: 20px;
  23467. height: 20px;
  23468. border-radius: 50%;
  23469. text-align: center;
  23470. line-height: 20px;
  23471. }
  23472. .isWrong {
  23473. display: flex;
  23474. flex-direction: row;
  23475. flex-wrap: nowrap;
  23476. align-content: center;
  23477. align-items: center;
  23478. }
  23479. .answerRight {
  23480. width: 25%;
  23481. }
  23482. .isTj {
  23483. display: flex;
  23484. flex-direction: row;
  23485. flex-wrap: nowrap;
  23486. align-items: center;
  23487. }
  23488. .isTj > div:nth-child(2) {
  23489. color: #727070;
  23490. margin-left: 10px;
  23491. }
  23492. .isTjImg {
  23493. width: 30px;
  23494. height: 30px;
  23495. }
  23496. .isTjImg > img {
  23497. width: 100%;
  23498. height: 100%;
  23499. }
  23500. .cardAnswerBox {
  23501. font-size: 18px;
  23502. width: 97%;
  23503. border: 5px;
  23504. padding: 0;
  23505. border-radius: 5px;
  23506. margin: 10px auto;
  23507. word-break: break-word;
  23508. }
  23509. .w_name {
  23510. margin-bottom: 10px;
  23511. }
  23512. .w_name span {
  23513. font-size: 16px;
  23514. }
  23515. .w_teachert {
  23516. width: 50px !important;
  23517. position: absolute;
  23518. height: auto !important;
  23519. z-index: 10;
  23520. right: 25px;
  23521. top: -25px;
  23522. }
  23523. .group_workBox {
  23524. }
  23525. .group_workBox + .group_workBox {
  23526. margin-top: 20px;
  23527. }
  23528. .group_box {
  23529. padding-bottom: 20px;
  23530. border-bottom: 2px solid #f0f0f0;
  23531. margin-top: 10px;
  23532. }
  23533. .group_title {
  23534. display: flex;
  23535. align-items: center;
  23536. justify-content: space-between;
  23537. width: 95%;
  23538. }
  23539. .group_name {
  23540. background-image: url(../../assets/icon/groupN.png);
  23541. width: 220px;
  23542. background-size: 100% 100%;
  23543. height: 67px;
  23544. padding: 0 20px 0 43px;
  23545. box-sizing: border-box;
  23546. line-height: 63px;
  23547. color: #fff;
  23548. overflow: hidden;
  23549. white-space: nowrap;
  23550. text-overflow: ellipsis;
  23551. }
  23552. .group_work {
  23553. width: 100%;
  23554. padding: 0 10px;
  23555. box-sizing: border-box;
  23556. display: flex;
  23557. flex-wrap: wrap;
  23558. }
  23559. .g_d_box {
  23560. display: flex;
  23561. flex-flow: wrap;
  23562. justify-content: space-around;
  23563. }
  23564. .g_d_box .isChair {
  23565. background-image: url(../../assets/avatar.png) !important;
  23566. }
  23567. .g_d_group {
  23568. width: 500px;
  23569. margin-bottom: 80px;
  23570. }
  23571. .g_d_group_chair {
  23572. display: flex;
  23573. align-items: center;
  23574. justify-content: center;
  23575. }
  23576. .g_d_group_chair > div + div {
  23577. margin-left: 30px;
  23578. }
  23579. .g_d_group_chair > div,
  23580. .g_d_group_chair2 > div {
  23581. display: flex;
  23582. flex-direction: column;
  23583. align-items: center;
  23584. }
  23585. .g_d_group_chair > div > span:nth-child(1),
  23586. .g_d_group_chair2 > div > span:nth-child(1) {
  23587. background-image: url(../../assets/icon/chair.png);
  23588. width: 50px;
  23589. height: 50px;
  23590. display: block;
  23591. background-size: 100% 100%;
  23592. }
  23593. .g_d_group_tableBox {
  23594. display: flex;
  23595. align-items: center;
  23596. justify-content: center;
  23597. }
  23598. .g_d_group_chair2 {
  23599. display: flex;
  23600. flex-direction: column;
  23601. align-items: center;
  23602. justify-content: center;
  23603. }
  23604. .g_d_group_chair2 > div + div {
  23605. margin-top: 10px;
  23606. }
  23607. .g_d_group_table {
  23608. background-image: url(../../assets/icon/groupBg.png);
  23609. width: 354px;
  23610. height: 196px;
  23611. background-size: 100% 100%;
  23612. display: flex;
  23613. align-items: center;
  23614. justify-content: center;
  23615. flex-direction: column;
  23616. color: #fff;
  23617. }
  23618. .g_d_group_table > div:nth-child(1) {
  23619. font-size: 24px;
  23620. margin-bottom: 5px;
  23621. }
  23622. .g_d_group_table > div:nth-child(2) div {
  23623. cursor: pointer;
  23624. background: #2e77bf;
  23625. padding: 4px 10px;
  23626. border-radius: 5px;
  23627. }
  23628. .groupBox {
  23629. }
  23630. .groupContent + .groupContent {
  23631. margin-top: 30px;
  23632. }
  23633. .groupTitle {
  23634. font-size: 24px;
  23635. color: rgb(80, 80, 80);
  23636. margin-bottom: 20px;
  23637. }
  23638. .groupName {
  23639. display: flex;
  23640. align-items: center;
  23641. }
  23642. .groupn {
  23643. font-size: 15px;
  23644. margin-right: 10px;
  23645. }
  23646. .groupName + .groupName {
  23647. margin-top: 15px;
  23648. }
  23649. .groupBtn {
  23650. margin-left: 10px;
  23651. }
  23652. .groupContent >>> .el-input-number.is-without-controls .el-input__inner {
  23653. text-align: left;
  23654. }
  23655. .g_d_btnBox {
  23656. display: flex;
  23657. justify-content: flex-end;
  23658. align-items: center;
  23659. margin-bottom: 20px;
  23660. }
  23661. .updateChair {
  23662. position: relative;
  23663. }
  23664. .updateChairBtn {
  23665. position: absolute;
  23666. width: 50px;
  23667. height: 50px;
  23668. overflow: hidden;
  23669. /* display: flex; */
  23670. align-items: center;
  23671. justify-content: center;
  23672. background: #00000087;
  23673. color: #fff;
  23674. border-radius: 50px;
  23675. display: none;
  23676. cursor: pointer;
  23677. }
  23678. .updateChair:hover .updateChairBtn {
  23679. display: flex;
  23680. }
  23681. .group_staic_box {
  23682. display: flex;
  23683. padding: 30px 40px 10px;
  23684. flex-wrap: wrap;
  23685. }
  23686. .group_staic {
  23687. /* width: 50%; */
  23688. margin-bottom: 20px;
  23689. display: flex;
  23690. align-items: center;
  23691. }
  23692. .group_staic span:nth-child(1) {
  23693. width: 150px;
  23694. text-align: right;
  23695. margin-right: 15px;
  23696. }
  23697. .group_staic span:nth-child(2) {
  23698. background: rgb(0 123 255);
  23699. color: #fff;
  23700. border-radius: 5px;
  23701. padding: 5px;
  23702. }
  23703. .codeFileBox {
  23704. height: 300px;
  23705. background: #fff;
  23706. display: flex;
  23707. align-items: center;
  23708. justify-content: center;
  23709. }
  23710. .codeFileBox img {
  23711. width: 200px;
  23712. margin: 0;
  23713. height: auto;
  23714. }
  23715. .codeFileBox div {
  23716. background: rgb(80, 142, 226);
  23717. color: #fff;
  23718. padding: 10px 20px;
  23719. border-radius: 25px;
  23720. cursor: pointer;
  23721. margin-left: 15px;
  23722. }
  23723. .radioBox {
  23724. display: flex;
  23725. flex-direction: column;
  23726. flex-wrap: nowrap;
  23727. align-items: flex-start;
  23728. }
  23729. .radioBox > div {
  23730. margin: 10px 0 0 10px;
  23731. }
  23732. /* .radioBox >>> .el-radio__input,
  23733. .radioBox >>> .el-checkbox__inner {
  23734. margin-left: 10px;
  23735. } */
  23736. .radioBox >>> .el-radio__label,
  23737. .radioBox >>> .el-checkbox__label {
  23738. display: flex;
  23739. align-items: center;
  23740. width: 100%;
  23741. }
  23742. .radioBox >>> .el-radio__label > span {
  23743. width: 100%;
  23744. display: -webkit-box;
  23745. overflow: hidden;
  23746. white-space: normal !important;
  23747. text-overflow: ellipsis;
  23748. word-wrap: break-word;
  23749. }
  23750. .inImg {
  23751. width: 100px;
  23752. cursor: pointer;
  23753. }
  23754. .inImg > img {
  23755. width: 100%;
  23756. height: 100%;
  23757. object-fit: cover;
  23758. }
  23759. .timuImgBox {
  23760. margin: 10px 0;
  23761. display: flex;
  23762. flex-direction: column;
  23763. flex-wrap: wrap;
  23764. align-items: flex-start;
  23765. }
  23766. .timuImg {
  23767. width: 150px;
  23768. margin: 5px 0;
  23769. cursor: pointer;
  23770. }
  23771. .timuImg > img {
  23772. width: 100%;
  23773. height: 100%;
  23774. object-fit: cover;
  23775. }
  23776. .worksTop {
  23777. display: flex;
  23778. flex-direction: row;
  23779. align-items: flex-end;
  23780. }
  23781. .worksTitle {
  23782. display: flex;
  23783. flex-direction: row;
  23784. flex-wrap: nowrap;
  23785. align-items: center;
  23786. }
  23787. .worksTitle::before,
  23788. .worksTop::before {
  23789. content: "";
  23790. display: block;
  23791. width: 3px;
  23792. height: 20px;
  23793. background: #0061ff;
  23794. border-radius: 3px;
  23795. margin: 0 5px 0 0;
  23796. }
  23797. .corOpen {
  23798. margin: 0 0 0 10px;
  23799. font-size: 14px;
  23800. cursor: pointer;
  23801. color: #505050;
  23802. }
  23803. .corOpen:hover {
  23804. color: #499eef;
  23805. }
  23806. .navCorOpenBox {
  23807. display: flex;
  23808. flex-direction: row;
  23809. align-items: center;
  23810. justify-content: space-between;
  23811. height: 55px;
  23812. background: #ffffff;
  23813. box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.1);
  23814. border-radius: 8px 8px 0px 0px;
  23815. z-index: 9;
  23816. position: relative;
  23817. }
  23818. .navCorOpen {
  23819. padding-right: 15px;
  23820. cursor: pointer;
  23821. width: 45px;
  23822. display: flex;
  23823. }
  23824. .navCorOpen > img {
  23825. width: 100%;
  23826. height: 100%;
  23827. }
  23828. .mlImg {
  23829. width: 40px !important;
  23830. min-width: 40px;
  23831. cursor: pointer;
  23832. transform: rotate(180deg);
  23833. }
  23834. .mlImg > img {
  23835. width: 100%;
  23836. height: 100%;
  23837. }
  23838. .navLeftCss {
  23839. width: 100% !important;
  23840. left: 0 !important;
  23841. }
  23842. .isContentCss {
  23843. width: 100% !important;
  23844. }
  23845. .isAllWidth {
  23846. width: 100% !important;
  23847. }
  23848. .group_switch {
  23849. margin-right: 10px;
  23850. height: 30px;
  23851. display: flex;
  23852. align-items: center;
  23853. }
  23854. .group_switch > span {
  23855. margin-right: 5px;
  23856. }
  23857. .fileC_box {
  23858. padding-top: 15px;
  23859. }
  23860. .fileC_box > .fileC_title {
  23861. padding: 10px 5px 14px 10px;
  23862. border-top: 1px solid #cad1dc;
  23863. font-size: 14px;
  23864. font-weight: 400;
  23865. color: #cad1dc;
  23866. width: calc(100% - 20px);
  23867. margin: 0 auto;
  23868. box-sizing: border-box;
  23869. }
  23870. .pl_select_box {
  23871. height: 40px;
  23872. line-height: 40px;
  23873. width: 100%;
  23874. cursor: pointer;
  23875. padding: 0 20px;
  23876. box-sizing: border-box;
  23877. border-radius: 5px;
  23878. border: 1px solid #d6d6d6;
  23879. white-space: nowrap;
  23880. overflow: hidden;
  23881. text-overflow: ellipsis;
  23882. background: #fff;
  23883. text-align: left;
  23884. }
  23885. .newButton {
  23886. width: 102px;
  23887. height: 36px;
  23888. background: #e7ebf1;
  23889. border-radius: 4px;
  23890. color: #0e1e33;
  23891. font-weight: 400;
  23892. font-size: 14px;
  23893. border: none;
  23894. float: right;
  23895. margin-left: 10px;
  23896. }
  23897. .el-table >>> .even_row {
  23898. background-color: #f0f4fa;
  23899. }
  23900. .stageBoxCss,
  23901. .stageBoxIsCss {
  23902. display: flex;
  23903. flex-direction: row;
  23904. flex-wrap: nowrap;
  23905. align-items: center;
  23906. height: 50px;
  23907. border-bottom: 1px solid #e2f5fc;
  23908. cursor: pointer;
  23909. width: 100%;
  23910. }
  23911. .stageBoxIsCss {
  23912. background: #0061ff;
  23913. color: #fff;
  23914. border-radius: 8px;
  23915. }
  23916. .closeTri,
  23917. .closeTri1 {
  23918. min-width: 15px;
  23919. width: 15px;
  23920. height: 15px;
  23921. }
  23922. .closeTri1 {
  23923. padding-left: 10px;
  23924. cursor: pointer;
  23925. }
  23926. .closeTri > img,
  23927. .closeTri1 > img {
  23928. width: 100%;
  23929. height: 100%;
  23930. /* transition: all .5s; */
  23931. }
  23932. .noToolBlue {
  23933. min-width: 10px;
  23934. width: 10px;
  23935. height: 10px;
  23936. background: #0061ff;
  23937. border-radius: 50%;
  23938. margin-left: 13px;
  23939. }
  23940. .stageChild,
  23941. .toolChild {
  23942. height: 0;
  23943. overflow: hidden;
  23944. transition: all 0.5s;
  23945. }
  23946. .toolChild {
  23947. /* margin: 0 0 0 17px;
  23948. padding: 0 0 0 20px;
  23949. border-left: 1px solid #d7d7d7; */
  23950. }
  23951. .toolChild > div + div{
  23952. margin-top:5px;
  23953. }
  23954. .gjCss {
  23955. display: flex;
  23956. flex-direction: row;
  23957. flex-wrap: nowrap;
  23958. align-items: center;
  23959. padding: 10px 0 10px 40px;
  23960. box-sizing: border-box;
  23961. font-size: 14px;
  23962. cursor: pointer;
  23963. border-radius:5px;
  23964. }
  23965. .toolChild > div {
  23966. position: relative;
  23967. width: 100%;
  23968. }
  23969. .toolChild > div::before {
  23970. /* content: "";
  23971. width: 15px;
  23972. height: 1px;
  23973. background: #cad1dc;
  23974. position: absolute;
  23975. top: 24px;
  23976. left: -20px;
  23977. display: block; */
  23978. }
  23979. .isGjCss {
  23980. /* color: #0061ff; */
  23981. color:#fff;
  23982. background: rgb(55, 129, 252);
  23983. /* background-color: #e0eafb !important;
  23984. color: #0061ff !important; */
  23985. }
  23986. .navItem {
  23987. background: #ffffff;
  23988. border-radius: 4px;
  23989. width: 100%;
  23990. margin: 10px auto;
  23991. position: relative;
  23992. height: 40px;
  23993. display: flex;
  23994. flex-direction: row;
  23995. flex-wrap: nowrap;
  23996. align-items: center;
  23997. }
  23998. .navItemList {
  23999. display: flex;
  24000. flex-direction: row;
  24001. flex-wrap: nowrap;
  24002. align-items: center;
  24003. padding: 0 13px;
  24004. cursor: pointer;
  24005. width: calc(100% - 60px);
  24006. height: 100%;
  24007. }
  24008. .navItemList > div:first-child {
  24009. min-width: 60px;
  24010. }
  24011. .navItemList > div:last-child {
  24012. width: calc(100% - 80px);
  24013. white-space: nowrap;
  24014. overflow: hidden;
  24015. text-overflow: ellipsis;
  24016. word-break: break-word;
  24017. }
  24018. /* .isItemList > div {
  24019. color: #fff !important;
  24020. } */
  24021. .tool_work_box {
  24022. width: 100%;
  24023. padding: 0 37px 0;
  24024. box-sizing: border-box;
  24025. }
  24026. .tool_box {
  24027. width: 100%;
  24028. padding: 0 0 0 20px;
  24029. }
  24030. .tool_type_box {
  24031. display: flex;
  24032. flex-direction: row;
  24033. align-items: baseline;
  24034. flex-wrap: nowrap;
  24035. justify-content: flex-start;
  24036. position: relative;
  24037. }
  24038. .toolSort {
  24039. display: flex;
  24040. flex-direction: row;
  24041. flex-wrap: wrap;
  24042. justify-content: flex-start;
  24043. align-items: flex-start;
  24044. padding: 0 0 15px 0;
  24045. }
  24046. .toolSort > div {
  24047. margin: 0 10px 0 0;
  24048. width: 135px;
  24049. box-sizing: border-box;
  24050. border: 2px solid transparent;
  24051. }
  24052. .tools {
  24053. width: 100%;
  24054. display: flex;
  24055. flex-direction: column;
  24056. flex-wrap: nowrap;
  24057. align-items: flex-start;
  24058. }
  24059. .whiteBIcon {
  24060. width: fit-content;
  24061. cursor: pointer;
  24062. display: flex;
  24063. flex-direction: column;
  24064. flex-wrap: nowrap;
  24065. align-items: center;
  24066. font-size: 14px;
  24067. }
  24068. .tool:hover {
  24069. border: 2px solid #a5c7ff;
  24070. border-radius: 5px;
  24071. }
  24072. .whiteBIcon > img {
  24073. width: 65px;
  24074. height: 100%;
  24075. }
  24076. .whiteBIcon > img {
  24077. box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
  24078. border-radius: 15px;
  24079. }
  24080. .check {
  24081. /* width: 20px;
  24082. height: 20px; */
  24083. cursor: pointer;
  24084. margin: 10px 0;
  24085. position: absolute;
  24086. right: 2px;
  24087. top: -5px;
  24088. }
  24089. .noChoose,
  24090. .isChoose {
  24091. width: 15px;
  24092. height: 15px;
  24093. border-radius: 50%;
  24094. border: 1px solid #adadad;
  24095. }
  24096. .isChoose {
  24097. border: 4px solid #0363ff !important;
  24098. width: 10px;
  24099. height: 10px;
  24100. }
  24101. .isToolChoose {
  24102. border: 2px solid #5394ff !important;
  24103. border-radius: 5px;
  24104. box-shadow: 0 0 6px 0px #5394ff;
  24105. }
  24106. .checkDiv {
  24107. display: flex;
  24108. align-items: center;
  24109. }
  24110. .checkDiv span {
  24111. margin-left: 5px;
  24112. color: #858585;
  24113. }
  24114. .check img {
  24115. width: 20px;
  24116. height: 20px;
  24117. }
  24118. .lockTaskIcon {
  24119. width: 20px;
  24120. height: 20px;
  24121. position: absolute;
  24122. right: 10px;
  24123. top: 10px;
  24124. }
  24125. .lockTaskIcon > img {
  24126. width: 100%;
  24127. height: 100%;
  24128. }
  24129. .pick_box {
  24130. display: flex;
  24131. align-items: flex-start;
  24132. flex-wrap: wrap;
  24133. }
  24134. .selectBox {
  24135. width: 110px;
  24136. margin-left: 10px;
  24137. margin: 0 10px 0 auto;
  24138. }
  24139. .selectBox >>> .el-input__inner {
  24140. height: 30px;
  24141. line-height: 30px;
  24142. }
  24143. .selectBox >>> .el-input__icon {
  24144. line-height: 30px;
  24145. }
  24146. .sentenceTitle {
  24147. display: flex;
  24148. flex-direction: row;
  24149. flex-wrap: nowrap;
  24150. align-items: center;
  24151. }
  24152. .sentenceTitle::before {
  24153. content: attr(index);
  24154. background: #3681fc;
  24155. border-radius: 50%;
  24156. color: #fff;
  24157. width: 25px;
  24158. height: 25px;
  24159. min-width: 25px;
  24160. min-height: 25px;
  24161. text-align: center;
  24162. line-height: 25px;
  24163. margin-right: 5px;
  24164. }
  24165. .hfBox {
  24166. padding: 10px;
  24167. box-sizing: border-box;
  24168. }
  24169. .whoReplyWho {
  24170. display: flex;
  24171. flex-direction: row;
  24172. flex-wrap: nowrap;
  24173. align-items: baseline;
  24174. justify-content: flex-start;
  24175. }
  24176. .hfBottom {
  24177. display: flex;
  24178. flex-direction: row;
  24179. flex-wrap: nowrap;
  24180. align-items: center;
  24181. justify-content: space-between;
  24182. font-size: 14px;
  24183. }
  24184. .deleteHfItem {
  24185. cursor: pointer;
  24186. width: 20px;
  24187. height: 20px;
  24188. }
  24189. .deleteHfItem > img {
  24190. width: 100%;
  24191. height: 100%;
  24192. }
  24193. .whoReplyWho > .hfImg {
  24194. width: 12px;
  24195. height: 12px;
  24196. margin: 0 5px;
  24197. }
  24198. .whoReplyWho > .hfImg > img {
  24199. width: 100%;
  24200. height: 100%;
  24201. }
  24202. .hfContent {
  24203. padding-top: 10px;
  24204. box-sizing: border-box;
  24205. display: -webkit-box;
  24206. overflow: hidden;
  24207. white-space: normal !important;
  24208. text-overflow: ellipsis;
  24209. word-wrap: break-word;
  24210. -webkit-box-orient: vertical;
  24211. }
  24212. .hfTime {
  24213. text-align: left;
  24214. box-sizing: border-box;
  24215. padding: 10px 0 10px 0px;
  24216. color: #bfbfbf;
  24217. font-size: 14px;
  24218. }
  24219. .btnAllNT {
  24220. position: fixed;
  24221. bottom: 100px;
  24222. right: 40px;
  24223. z-index: 999;
  24224. display: flex;
  24225. flex-direction: row;
  24226. }
  24227. .btnAllNT > img {
  24228. cursor: pointer;
  24229. width: 80px;
  24230. }
  24231. .toolMask {
  24232. position: fixed;
  24233. width: 100%;
  24234. height: 100%;
  24235. background: #3f3c3c;
  24236. opacity: 0.5;
  24237. top: 0;
  24238. left: 0;
  24239. z-index: 999;
  24240. }
  24241. .addToolCss {
  24242. position: fixed;
  24243. z-index: 999;
  24244. background: #fff;
  24245. right: 5%;
  24246. bottom: 18%;
  24247. min-width: 1035px;
  24248. min-height: 300px;
  24249. border-radius: 10px;
  24250. box-shadow: 0 0 8px 1px #b2b2b2;
  24251. }
  24252. .toolTop {
  24253. display: flex;
  24254. flex-direction: row;
  24255. flex-wrap: nowrap;
  24256. justify-content: space-between;
  24257. align-items: center;
  24258. padding: 20px;
  24259. }
  24260. .toolTop > div:nth-child(2) {
  24261. width: 15px;
  24262. height: 15px;
  24263. padding-right: 10px;
  24264. cursor: pointer;
  24265. }
  24266. .toolTop > div:nth-child(2) > img {
  24267. width: 100%;
  24268. height: 100%;
  24269. }
  24270. .fullStyle>>>.el-dialog__body {
  24271. height: calc(100% - 125px) !important;
  24272. box-sizing: border-box;
  24273. padding: 30px 0 !important;
  24274. background: #fff !important;
  24275. }
  24276. .fullStyle>>>.el-dialog {
  24277. width: 100% !important;
  24278. max-width: 100% !important;
  24279. height: 100% !important;
  24280. margin: 0 !important;
  24281. }
  24282. .fullStyle {
  24283. width: 100% !important;
  24284. max-width: 100% !important;
  24285. height: 100% !important;
  24286. margin: 0 auto !important;
  24287. }
  24288. .fullStyle>>>.el-dialog__footer{
  24289. background: #fff !important;
  24290. }
  24291. .engUpBox {
  24292. width: 100%;
  24293. height: 100%;
  24294. }
  24295. .engTitle,
  24296. .engText {
  24297. display: flex;
  24298. flex-direction: row;
  24299. flex-wrap: nowrap;
  24300. align-items: flex-start;
  24301. padding: 0 20px 20px 20px;
  24302. box-sizing: border-box;
  24303. }
  24304. .engTitle > .div:first-child,
  24305. .engText > div:first-child {
  24306. min-width: 75px;
  24307. }
  24308. .correctBox{
  24309. width: 100%;
  24310. display: flex;
  24311. flex-direction: row;
  24312. flex-wrap: nowrap;
  24313. align-items: flex-start;
  24314. }
  24315. .oldBox{
  24316. width: 50%;
  24317. height: 100%;
  24318. display: flex;
  24319. flex-direction: column;
  24320. flex-wrap: nowrap;
  24321. align-items: center;
  24322. border-top: 1px solid #d9d9d9;
  24323. border-left: 1px solid #d9d9d9;
  24324. border-right: 1px solid #d9d9d9;
  24325. }
  24326. .oldBox>div:first-child{
  24327. width: 100%;
  24328. text-align: center;
  24329. background: #d9d9d9;
  24330. height: 35px;
  24331. line-height: 35px;
  24332. font-weight: bold;
  24333. }
  24334. .oldText{
  24335. width: 100%;
  24336. height: calc(100% - 35px);
  24337. overflow: auto;
  24338. margin: 10px 0;
  24339. display: flex;
  24340. flex-direction: column;
  24341. flex-wrap: nowrap;
  24342. align-content: center;
  24343. align-items: center;
  24344. }
  24345. .detailBox{
  24346. width: 50%;
  24347. padding: 10px;
  24348. background: #f6f6f6;
  24349. border-radius: 5px;
  24350. }
  24351. .oldDetail,.oldDetail1{
  24352. padding-bottom: 30px;
  24353. }
  24354. .oldImg{
  24355. width:30px;
  24356. height: 30px;
  24357. }
  24358. .oldImg>img{
  24359. width: 100%;
  24360. height: 100%;
  24361. }
  24362. .allName{
  24363. min-width: 200px;
  24364. white-space: nowrap;
  24365. overflow: hidden;
  24366. text-overflow: ellipsis;
  24367. word-break: break-word;
  24368. cursor: pointer;
  24369. text-align: center;
  24370. border: 1px solid #bcc2cc;
  24371. box-sizing: border-box;
  24372. }
  24373. .engUpTop{
  24374. max-height: 300px;
  24375. overflow: auto;
  24376. }
  24377. .isUpdateToolDetailClass{
  24378. padding: 0 !important;
  24379. }
  24380. .isUpdateToolDetailClass textarea{
  24381. padding:12px;
  24382. font-size: 16px;
  24383. min-height:100%;
  24384. width: 100%;
  24385. box-sizing:border-box;
  24386. outline: none;
  24387. border:none;
  24388. line-height: 30px;
  24389. resize: none;
  24390. font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "\5FAE\8F6F\96C5\9ED1", Arial, sans-serif;
  24391. color: #838383;
  24392. }
  24393. .show_taskD {
  24394. min-width: fit-content;
  24395. margin-left: 10px;
  24396. display: flex;
  24397. align-items: center;
  24398. font-size: 14px;
  24399. cursor: pointer;
  24400. color: #717c8d;
  24401. }
  24402. .show_taskD > img {
  24403. width: 15px;
  24404. margin-right: 5px;
  24405. transition: 0.2s all;
  24406. transform: rotate(-90deg);
  24407. }
  24408. .show_taskD.show > img {
  24409. transform: rotate(0deg);
  24410. }
  24411. .dialog_diyCopy >>> .el-dialog__header {
  24412. display: none !important;
  24413. }
  24414. .dialog_diyCopy >>> .el-dialog__body {
  24415. padding: 0 !important;
  24416. height: 100% !important;
  24417. }
  24418. .correctCss{
  24419. position: absolute;
  24420. bottom: -70px;
  24421. background: #409eff;
  24422. color: #fff;
  24423. }
  24424. div::-webkit-scrollbar {
  24425. width: 10px;
  24426. height: 6px;
  24427. }
  24428. </style>