study.vue 161 KB

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