studyStudent.vue 175 KB

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