addCourse.vue 336 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843
  1. <template>
  2. <div class="pb_content">
  3. <div class="pb_content_body" style="position: relative; margin: 0">
  4. <div class="right">
  5. <div class="stepBg">
  6. <div class="stepTop">
  7. <div v-if="steps == 1" class="first" @click="navSteps(1)">
  8. <div>
  9. <img src="../../assets/icon/first.png" alt />
  10. </div>
  11. <div>填写基本信息</div>
  12. </div>
  13. <div v-else class="firstNo" @click="navSteps(1)">
  14. <div>
  15. <img src="../../assets/icon/firstNo.png" alt />
  16. </div>
  17. <div>填写基本信息</div>
  18. </div>
  19. <div v-show="cidType === 0" class="secondNo">
  20. <div
  21. v-if="steps == 2"
  22. class="newSteps second"
  23. @click="navSteps(2)"
  24. >
  25. <div style="margin: 5px 10px 0 0; width: 2rem">
  26. <img src="../../assets/icon/second.png" alt />
  27. </div>
  28. <div>选择课程框架</div>
  29. </div>
  30. <div v-else class="newSteps secondNo" @click="navSteps(2)">
  31. <div>
  32. <img src="../../assets/icon/secondNo.png" alt />
  33. </div>
  34. <div>选择课程框架</div>
  35. </div>
  36. </div>
  37. <div v-if="steps == 3" class="third" @click="navSteps(3)">
  38. <div>
  39. <img src="../../assets/icon/third.png" alt />
  40. </div>
  41. <div>上传课程内容</div>
  42. </div>
  43. <div v-else class="thirdNo" @click="navSteps(3)">
  44. <div>
  45. <img src="../../assets/icon/thirdNo.png" alt />
  46. </div>
  47. <div>上传课程内容</div>
  48. </div>
  49. <div v-if="steps == 4" class="four">
  50. <div>
  51. <img src="../../assets/icon/four.png" alt />
  52. </div>
  53. <div>上传完成</div>
  54. </div>
  55. <div v-else class="fourNo">
  56. <div>
  57. <img src="../../assets/icon/fourNo.png" alt />
  58. </div>
  59. <div>上传完成</div>
  60. </div>
  61. </div>
  62. <div
  63. class="stepsBottom"
  64. v-if="steps == 3 && !unitJson[unitIndex].easy"
  65. >
  66. <div class="navTop">辅助导航</div>
  67. <div class="navBottom">
  68. <div
  69. class="navTask"
  70. :class="{
  71. isNavTask: isClickColor > 0 && isClickColor == tIndex + 1,
  72. }"
  73. v-for="(t, tIndex) in unitJson[unitIndex].chapterInfo[0]
  74. .taskJson"
  75. :key="tIndex"
  76. @click="goToTask(tIndex)"
  77. >
  78. <div>任务{{ tIndex + 1 }}</div>
  79. <div>
  80. <el-tooltip effect="light" :content="t.task" placement="top">
  81. <span>{{ t.task }}</span>
  82. </el-tooltip>
  83. </div>
  84. <div
  85. class="moveBtn"
  86. v-if="unitJson[unitIndex].chapterInfo[0].taskJson.length > 1"
  87. >
  88. <div
  89. class="chapter_upload_up"
  90. style="width: 15px; height: 15px"
  91. @click.stop="taskMove(1, tIndex)"
  92. ></div>
  93. <div
  94. class="chapter_upload_down"
  95. style="width: 15px; height: 15px; margin: 2px 0 0"
  96. @click.stop="taskMove(2, tIndex)"
  97. ></div>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <!-- <div style="display: flex; margin-top: 20px; position: relative"> -->
  104. <div style="width: 100%; height: 100%; overflow: auto" ref="stepBox">
  105. <div class="courseTop">
  106. <div class="stepsNav">
  107. <h3 class="info_title" v-if="steps == 1">课程内容填写</h3>
  108. <h3 class="info_title" v-if="steps == 2">请选择课程框架</h3>
  109. <h3 class="info_title" v-if="steps == 3">上传课程内容</h3>
  110. <h3 class="info_title" v-if="steps == 4">上传课程</h3>
  111. <el-breadcrumb
  112. separator-class="el-icon-arrow-right"
  113. style="margin-top: 15px"
  114. >
  115. <el-breadcrumb-item
  116. :to="{
  117. path:
  118. '/course?userid=' +
  119. userid +
  120. '&oid=' +
  121. oid +
  122. '&org=' +
  123. org,
  124. }"
  125. >课程管理</el-breadcrumb-item
  126. >
  127. <el-breadcrumb-item>
  128. <span style="color: rgb(15, 126, 255)">添加课程</span>
  129. </el-breadcrumb-item>
  130. </el-breadcrumb>
  131. </div>
  132. <div
  133. v-if="steps == 1 || steps == 2 || steps == 3"
  134. class="stepsWord"
  135. >
  136. {{
  137. steps == 1
  138. ? "第一步"
  139. : steps == 2
  140. ? "第二步"
  141. : steps == 3
  142. ? cidType === 0
  143. ? "第三步"
  144. : "第二步"
  145. : ""
  146. }}
  147. </div>
  148. </div>
  149. <div
  150. class="rightBox"
  151. v-if="this.steps == 1"
  152. @mousewheel="scrollChange"
  153. >
  154. <div
  155. class="updateMask"
  156. :style="{
  157. height: rightBoxHeight ? rightBoxHeight + 'px' : '100%',
  158. }"
  159. v-if="cid && userid != courseUserid"
  160. ></div>
  161. <div class="whiteBg">
  162. <div
  163. class="right_title"
  164. :class="{ updateTips: cid && userid != courseUserid }"
  165. >
  166. 课程基本信息
  167. </div>
  168. <div class="basic_box">
  169. <div class="big_box">
  170. <div class="left_first">
  171. <div>
  172. <div>
  173. <div class="bInfo_title" style="margin-bottom: 15px">
  174. <!-- <span style="color: red">*</span> -->
  175. 课程名称
  176. </div>
  177. <div style="display: flex; margin-right: 20px">
  178. <img
  179. src="../../assets/icon/projectName.png"
  180. alt
  181. style="margin-right: 8px"
  182. />
  183. <input
  184. type="text"
  185. placeholder="请输入课程名称"
  186. class="binfo_input"
  187. v-model="courseName"
  188. />
  189. </div>
  190. </div>
  191. <div class="both">
  192. <div class="choose">
  193. <div
  194. class="all_choose"
  195. v-for="(item, index) in CourseType[0]"
  196. :key="index"
  197. >
  198. <span v-if="CourseTypeJson[item.id].length">{{
  199. item.name
  200. }}</span>
  201. <el-checkbox-group
  202. v-model="courseTypeId"
  203. v-if="CourseTypeJson[item.id].length > 0"
  204. >
  205. <el-checkbox
  206. v-for="item1 in CourseTypeJson[item.id]"
  207. :key="item1.id"
  208. :label="item1.id"
  209. >{{ item1.name }}</el-checkbox
  210. >
  211. </el-checkbox-group>
  212. <!-- <div
  213. v-else
  214. style="font-size: 14px; margin-left: -8px"
  215. >
  216. 暂无
  217. </div> -->
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. <div class="whiteBg" style="border-radius: 0">
  227. <div class="right_first">
  228. <div class="right_title">上传封面与成员</div>
  229. <div
  230. style="
  231. padding: 0 0 50px 20px;
  232. display: flex;
  233. align-items: baseline;
  234. justify-content: flex-start;
  235. margin: 0 auto;
  236. "
  237. >
  238. <div>
  239. <div class="bInfo_title" style="margin-top: 0 !important">
  240. 课程封面
  241. </div>
  242. <div
  243. class="uploadFm"
  244. @click="choosePicVisible = true"
  245. v-if="cover.length == 0"
  246. >
  247. <img src="../../assets/icon/addPoster.png" alt="" />
  248. </div>
  249. <el-upload
  250. :class="{ disUoloadSty: noneBtnImg }"
  251. class="upCss"
  252. action="#"
  253. list-type="picture"
  254. v-loading="uploadLoading1"
  255. :http-request="beforeUpload1"
  256. ref="upload1"
  257. :on-preview="handlePictureCardPreview"
  258. :on-remove="handle_remove1"
  259. :show-file-list="true"
  260. :file-list="cover"
  261. accept="image/*"
  262. :limit="1"
  263. :on-exceed="onExceed"
  264. v-else
  265. >
  266. <i class="el-icon-plus"></i>
  267. </el-upload>
  268. </div>
  269. <div
  270. style="
  271. display: flex;
  272. flex-flow: row nowrap;
  273. flex-direction: row;
  274. flex-wrap: wrap;
  275. align-items: baseline;
  276. margin: 0 30px;
  277. "
  278. >
  279. <!-- <div style="margin: 0 80px">
  280. <div class="bInfo_title">
  281. 选择课程成员
  282. </div>
  283. <div
  284. class="addPeople"
  285. @click="addPP"
  286. v-if="this.checkboxList.length == 0"
  287. >添加成员</div>
  288. <div class="addPeople" @click="addPP" v-else>已添加,点击查看</div>
  289. </div>-->
  290. <div style="margin: 0 30px 0 0; width: 150px">
  291. <div class="bInfo_title">添加班级</div>
  292. <div
  293. class="addPeople"
  294. @click="
  295. (dialogVisibleClass = true),
  296. (classSearch = ''),
  297. getClass()
  298. "
  299. >
  300. 添加班级
  301. </div>
  302. <div
  303. v-if="checkboxList2.length"
  304. style="
  305. max-width: 100%;
  306. word-break: break-all;
  307. overflow: hidden;
  308. margin-top: 10px;
  309. font-size: 14px;
  310. color: #6e6e6e;
  311. "
  312. >
  313. <span
  314. :class="{ tcMember: getClassC(tc) }"
  315. v-for="(tc, tcIndex) in checkboxList2"
  316. :key="tcIndex"
  317. >{{ getClassC(tc) }}</span
  318. >
  319. </div>
  320. </div>
  321. <div
  322. style="flex: 0.5 1 0%; margin: 0; width: 180px"
  323. v-if="courseUserid != '' ? courseUserid == userid : true"
  324. >
  325. <div class="bInfo_title">协同编辑</div>
  326. <div
  327. class="addPeople"
  328. @click="openMember"
  329. style="background: #6b92c9"
  330. >
  331. 添加协同成员
  332. </div>
  333. <div
  334. v-if="checkboxList3.length"
  335. style="
  336. max-width: 100%;
  337. word-break: break-all;
  338. overflow: hidden;
  339. margin-top: 10px;
  340. font-size: 14px;
  341. color: #6e6e6e;
  342. "
  343. >
  344. <span
  345. :class="{ tcMember: getMan2(tc) }"
  346. v-for="(tc, tcIndex) in checkboxList3"
  347. :key="tcIndex"
  348. >{{ getMan2(tc) }}</span
  349. >
  350. </div>
  351. </div>
  352. </div>
  353. </div>
  354. </div>
  355. </div>
  356. <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
  357. <div class="right_title">课程简要描述</div>
  358. <div style="width: 95%; padding: 15px 0px 15px 20px">
  359. <div style="width: 55%">
  360. <textarea
  361. rows="8"
  362. class="binfo_input"
  363. cols
  364. v-model="courseText"
  365. :placeholder="
  366. '1、项目内容说明' +
  367. '\n' +
  368. '2、项目学习知识目标' +
  369. '\n' +
  370. '3、项目学习技能目标'
  371. "
  372. ></textarea>
  373. </div>
  374. </div>
  375. <!-- <div style="width: 95%; margin: 15px auto">
  376. <el-switch
  377. v-model="isTeacherSee"
  378. active-text="允许给其他老师查看"
  379. style="padding-bottom: 30px"
  380. ></el-switch>
  381. </div>-->
  382. <div style="width: 95%; padding: 15px 0px 15px 20px">
  383. <el-switch
  384. v-model="isTeacherSee"
  385. active-text="是否公开此课程"
  386. style="padding-bottom: 30px"
  387. ></el-switch>
  388. </div>
  389. </div>
  390. <div
  391. class="whiteBg"
  392. style="border-radius: 0; margin-top: 15px; padding-bottom: 20px"
  393. >
  394. <div class="right_title">目标管理</div>
  395. <div style="margin: 15px auto; padding: 0 0 0 20px">
  396. <div
  397. style="
  398. width: 100%%;
  399. display: flex;
  400. flex-direction: row;
  401. flex-wrap: nowrap;
  402. align-content: center;
  403. align-items: center;
  404. justify-content: space-between;
  405. "
  406. >
  407. <div
  408. style="
  409. display: flex;
  410. flex-flow: row nowrap;
  411. align-items: flex-start;
  412. width: 100%;
  413. flex-direction: column;
  414. flex-wrap: nowrap;
  415. position: relative;
  416. "
  417. >
  418. <!-- <div style="margin-right: 15px; min-width: 120px">
  419. 请选择评价指标
  420. </div>
  421. <div>
  422. <el-select
  423. v-model="evalua"
  424. placeholder="请选择体系"
  425. @change="checkEva"
  426. >
  427. <el-option
  428. v-for="(e, eIndex) in evaJuri"
  429. :key="eIndex"
  430. :label="e.title"
  431. :value="e.id"
  432. ></el-option>
  433. </el-select>
  434. </div> -->
  435. <!-- <div
  436. @click="openT"
  437. class="addPeople"
  438. style="
  439. background: #6b92c9;
  440. margin: 0 0 0 15px;
  441. position: absolute;
  442. right: 23%;
  443. "
  444. >
  445. 前往设置目标管理
  446. </div> -->
  447. <div class="e_box">
  448. <div
  449. class="e_card"
  450. v-for="(item, index) in evaJuri"
  451. :key="index"
  452. >
  453. <div class="e_card_picture">
  454. <img src="../../assets/e_picture.png" />
  455. </div>
  456. <div class="e_card_name">
  457. <span>{{ item.title }}</span>
  458. </div>
  459. <!-- <div class="e_card_time">
  460. <span>{{ item.time }}</span>
  461. </div> -->
  462. <div class="e_card_btn">
  463. <span @click="checkEva(item.id)">导入</span>
  464. <!-- <span @click="openT">前往设置</span> -->
  465. </div>
  466. </div>
  467. <div class="addEva" @click="openT">
  468. <img src="../../assets/icon/addEva.png" alt="" />
  469. </div>
  470. <div
  471. v-if="evaJuri.length === 0"
  472. style="margin: 0 auto; color: #6e6e6e"
  473. >
  474. 暂无数据
  475. </div>
  476. </div>
  477. </div>
  478. </div>
  479. <div
  480. v-if="evalua"
  481. style="
  482. border: 1px solid #e5e5e5;
  483. width: 95%;
  484. margin-top: 30px;
  485. box-shadow: 3px 1px 15px 3px #e0e0e0;
  486. "
  487. >
  488. <div class="e_add_top">
  489. <div class="e_add_title">
  490. <span>当前使用目标管理</span>
  491. <span>{{ eTitle }}</span>
  492. <img
  493. src="../../assets/line.png"
  494. class="cru_line"
  495. style="
  496. width: 125px;
  497. height: 20px;
  498. bottom: -10px;
  499. left: 155px;
  500. "
  501. />
  502. <!-- <el-input
  503. v-model="eTitle"
  504. placeholder="请输入名称"
  505. @change="setMindData"
  506. ></el-input>-->
  507. </div>
  508. </div>
  509. <div class="e_add_content">
  510. <div class="e_add_list_pbox">
  511. <div class="e_add_list_pbox_title">
  512. <span class="type_title">切换模式</span>
  513. <div class="type_content">
  514. <span
  515. :class="{ active: typeMode == 1 }"
  516. @click="OtherMb(1)"
  517. >目标树</span
  518. >
  519. <span
  520. :class="{ active: typeMode == 2 }"
  521. @click="OtherMb(2)"
  522. >目标罗盘</span
  523. >
  524. <span
  525. :class="{ active: typeMode == 3 }"
  526. @click="OtherMb(3)"
  527. >目标看板</span
  528. >
  529. </div>
  530. </div>
  531. <div class="e_add_list_pbox_content">
  532. <Mind
  533. :showBar="false"
  534. :mindData="data"
  535. v-show="typeMode == 1"
  536. ></Mind>
  537. <Sunburst
  538. :Josn="eJson"
  539. :num="eJSONNum"
  540. style="width: 100%"
  541. v-if="typeMode == 2"
  542. ></Sunburst>
  543. <SeeBoard
  544. :Josn="eJson"
  545. :num="eJSONNum"
  546. :ename="eTitle"
  547. style="width: 100%"
  548. v-if="typeMode == 3"
  549. >
  550. </SeeBoard>
  551. </div>
  552. </div>
  553. </div>
  554. </div>
  555. </div>
  556. </div>
  557. </div>
  558. <div class="rightBox" v-if="this.steps == 2">
  559. <div
  560. class="basic_box"
  561. style="padding: 20px 30px 0px !important; box-sizing: border-box"
  562. >
  563. <!-- <div
  564. style="
  565. color: #b8b8b8;
  566. background: #fff;
  567. width: 26%;
  568. height: 40px;
  569. border-radius: 15px;
  570. padding-left: 20px;
  571. line-height: 40px;
  572. font-size: 17px;
  573. box-shadow: 0px 1px 2px 2px #e0e0e0;
  574. "
  575. >-->
  576. <div
  577. class="right_title"
  578. style="border: none; margin: 0; padding: 0"
  579. >
  580. 请选择合适的课程模板
  581. </div>
  582. <div class="wordbox">
  583. <div
  584. class="wordTeacher"
  585. v-for="(aa, indexF) in templateArray"
  586. :key="indexF"
  587. @click="checkTemplate(aa)"
  588. >
  589. <div class="wordPic">
  590. <img src="../../assets/icon/wordMub.png" alt />
  591. </div>
  592. <div
  593. style="
  594. margin-top: 10px;
  595. line-height: 19px;
  596. overflow: hidden;
  597. text-overflow: ellipsis;
  598. white-space: nowrap;
  599. padding: 0 20px;
  600. "
  601. >
  602. {{ aa.title }}
  603. </div>
  604. </div>
  605. <div class="wordTeacher" @click="checkTemplate2()">
  606. <div class="wordPic">
  607. <img src="../../assets/icon/wordMub.png" alt />
  608. </div>
  609. <div
  610. style="
  611. margin-top: 10px;
  612. line-height: 19px;
  613. overflow: hidden;
  614. text-overflow: ellipsis;
  615. white-space: nowrap;
  616. padding: 0 20px;
  617. "
  618. >
  619. 任务模式
  620. </div>
  621. </div>
  622. <div class="wordTeacher" @click="checkTemplate3()">
  623. <div class="wordPic">
  624. <img src="../../assets/icon/wordMub.png" alt />
  625. </div>
  626. <div
  627. style="
  628. margin-top: 10px;
  629. line-height: 19px;
  630. overflow: hidden;
  631. text-overflow: ellipsis;
  632. white-space: nowrap;
  633. padding: 0 20px;
  634. "
  635. >
  636. 简易模式
  637. </div>
  638. </div>
  639. <!-- <div class="wordTeacher" @click="checkTemplate1()">
  640. <div class="wordPic">
  641. <img src="../../assets/icon/wordMub.png" alt />
  642. </div>
  643. <div style="
  644. margin-top: 10px;
  645. line-height: 19px;
  646. overflow: hidden;
  647. text-overflow: ellipsis;
  648. white-space: nowrap;
  649. padding: 0 20px;
  650. ">
  651. 我的课程
  652. </div>
  653. </div> -->
  654. </div>
  655. </div>
  656. </div>
  657. <div class="rightBox" v-if="this.steps == 3" ref="rightboxR">
  658. <div class="basic_box">
  659. <div
  660. style="
  661. display: flex;
  662. flex-direction: row;
  663. align-items: center;
  664. position: sticky;
  665. top: 0;
  666. background: #fff;
  667. z-index: 99;
  668. width: 100%;
  669. padding: 0 20px 0 20px;
  670. box-sizing: border-box;
  671. "
  672. >
  673. <div class="cru_selectBox">
  674. <div
  675. v-for="(item, index) in unitJson"
  676. :key="index"
  677. class="cru_select"
  678. :class="unitIndex == index ? 'cru_selected' : ''"
  679. @click="unitSet(index)"
  680. >
  681. 第{{ index + 1 }}阶段
  682. </div>
  683. <img
  684. src="../../assets/line.png"
  685. class="cru_line"
  686. :style="{
  687. left: offsetLetfPx + 'px',
  688. }"
  689. />
  690. </div>
  691. <div class="addStageImg" @click="addunit()">
  692. <img src="../../assets/icon/add.png" alt />
  693. </div>
  694. </div>
  695. <div
  696. style="margin: 0 0 40px 0; padding: 0 20px 0 20px"
  697. v-for="(item, index) in unitJson[unitIndex].chapterInfo"
  698. :key="index"
  699. >
  700. <div>
  701. <div class="chapter_contentbox">
  702. <div>第{{ unitIndex + 1 }}阶段</div>
  703. <div>
  704. <input
  705. type="text"
  706. placeholder="阶段标题"
  707. class="binfo_input"
  708. v-model="unitJson[unitIndex].dyName"
  709. />
  710. </div>
  711. <div
  712. v-if="unitJson.length > 1"
  713. @click="deleteUnit(unitIndex)"
  714. ></div>
  715. </div>
  716. </div>
  717. <div
  718. v-if="!unitJson[unitIndex].easy"
  719. style="
  720. margin: 50px 0px 10px;
  721. font-size: 1.5em;
  722. font-weight: 700;
  723. color: #0f7eff;
  724. "
  725. >
  726. 添加任务
  727. </div>
  728. <div
  729. class="taskBorder"
  730. :style="{ minHeight: unitJson[unitIndex].easy && 'unset' }"
  731. v-for="(itemTask, itemTaskIndex) in item.taskJson"
  732. :key="itemTaskIndex"
  733. >
  734. <div v-if="!unitJson[unitIndex].easy">
  735. <div>
  736. <div
  737. style="font-size: 22px; color: #8e8e8e"
  738. :id="'task' + itemTaskIndex"
  739. >
  740. 任务{{ itemTaskIndex + 1 }}
  741. </div>
  742. <div
  743. class="chapter_contentbox"
  744. style="
  745. flex-direction: row;
  746. justify-content: flex-start;
  747. align-items: center;
  748. "
  749. >
  750. <div
  751. style="
  752. border-left: 6px solid #5699e8;
  753. height: 20px;
  754. padding-left: 10px;
  755. line-height: 22px;
  756. "
  757. >
  758. 任务名称
  759. </div>
  760. <div>
  761. <input
  762. type="text"
  763. placeholder="输入任务名称"
  764. class="binfo_input"
  765. style="border-radius: 4px"
  766. v-model="
  767. unitJson[unitIndex].chapterInfo[0].taskJson[
  768. itemTaskIndex
  769. ].task
  770. "
  771. />
  772. </div>
  773. <div
  774. class="remove"
  775. v-if="item.taskJson.length > 1"
  776. @click="deleteTask(itemTaskIndex)"
  777. style="position: absolute; right: 55px"
  778. ></div>
  779. </div>
  780. <div
  781. style="
  782. display: flex;
  783. margin: 0 0 20px 0;
  784. flex-direction: row;
  785. justify-content: flex-start;
  786. align-items: center;
  787. width: 70.5% !important;
  788. padding-top: 30px;
  789. "
  790. >
  791. <div class="lineTitle">任务描述</div>
  792. <div class="line"></div>
  793. </div>
  794. <div>
  795. <editor-bar
  796. style="width: 90% !important; margin: 0"
  797. placeholder="请输入任务描述"
  798. v-model="
  799. unitJson[unitIndex].chapterInfo[0].taskJson[
  800. itemTaskIndex
  801. ].taskDetail
  802. "
  803. @change="change"
  804. ></editor-bar>
  805. <!-- <textarea
  806. rows="6"
  807. class="binfo_input"
  808. placeholder="请输入任务描述"
  809. cols
  810. style="width: 70.5% !important; height: 120px"
  811. v-model="
  812. unitJson[unitIndex].chapterInfo[0].taskJson[
  813. itemTaskIndex
  814. ].taskDetail
  815. "
  816. ></textarea>-->
  817. </div>
  818. </div>
  819. </div>
  820. <div
  821. v-if="!unitJson[unitIndex].easy"
  822. class="basic_box"
  823. style="
  824. margin: 0;
  825. min-height: 0;
  826. width: 90% !important;
  827. padding-top: 10px !important;
  828. "
  829. >
  830. <div
  831. style="
  832. display: flex;
  833. margin: 0 0 20px 0;
  834. flex-direction: row;
  835. justify-content: flex-start;
  836. align-items: center;
  837. "
  838. >
  839. <div class="lineTitle">学习内容</div>
  840. <div class="line"></div>
  841. </div>
  842. <div>
  843. <div
  844. class="add_chapters_box"
  845. v-if="
  846. itemTask.chapterData &&
  847. itemTask.chapterData.length == 0
  848. "
  849. style="height: 185px"
  850. ></div>
  851. <div
  852. v-else
  853. class="add_chapters_box"
  854. style="display: flex; flex-direction: column"
  855. >
  856. <div
  857. class="chapter_upload"
  858. v-for="(item1, index1) in itemTask.chapterData"
  859. :key="item1.id"
  860. @click="
  861. getChapterData(
  862. $event,
  863. unitIndex,
  864. index,
  865. index1,
  866. item1.type
  867. )
  868. "
  869. >
  870. <div
  871. class="chapter_upload_t"
  872. style="width: 100%"
  873. ></div>
  874. <div
  875. class="chapter_upload_o"
  876. style="
  877. position: relative;
  878. display: flex;
  879. align-items: center;
  880. "
  881. >
  882. <div
  883. class="chapter_upload_l"
  884. style="padding: 1px 0 0 10px"
  885. >
  886. <div
  887. v-if="item1.type == 2"
  888. class="chapter_upload_l_i1"
  889. ></div>
  890. <div
  891. v-if="
  892. item1.type == 3 ||
  893. item1.type == 6 ||
  894. item1.type == 7
  895. "
  896. class="chapter_upload_l_i5"
  897. style="margin-left: 1px"
  898. ></div>
  899. <div
  900. v-if="item1.type == 8"
  901. class="chapter_upload_l_i8"
  902. style="margin-left: 1px"
  903. ></div>
  904. </div>
  905. <div
  906. class="chapter_upload_ic"
  907. style="
  908. cursor: pointer;
  909. position: absolute;
  910. width: 45px;
  911. right: 0;
  912. top: 0;
  913. "
  914. >
  915. <div class="chapter_upload_ic_l"></div>
  916. <div
  917. class="chapter_upload_ic_r"
  918. style="position: absolute"
  919. @click.stop="
  920. deleteChapterData(
  921. $event,
  922. unitIndex,
  923. index,
  924. index1,
  925. itemTaskIndex
  926. )
  927. "
  928. >
  929. <div></div>
  930. </div>
  931. </div>
  932. <div class="chapter_upload_n">
  933. <input
  934. v-if="
  935. item1.type == 2 ||
  936. item1.type == 3 ||
  937. item1.type == 7
  938. "
  939. :placeholder="item1.name"
  940. @change="
  941. updataVideoT(
  942. $event,
  943. unitIndex,
  944. chapterIndex,
  945. index1
  946. )
  947. "
  948. style="
  949. border: none;
  950. outline: none;
  951. width: 80%;
  952. minwidth: 215px;
  953. z-index: 99;
  954. font-size: 14px;
  955. white-space: nowrap;
  956. overflow: hidden;
  957. text-overflow: ellipsis;
  958. "
  959. />
  960. <input
  961. :placeholder="item1.name"
  962. v-if="item1.type == 6"
  963. style="
  964. border: none;
  965. outline: none;
  966. width: 80%;
  967. white-space: nowrap;
  968. overflow: hidden;
  969. text-overflow: ellipsis;
  970. "
  971. readonly="true"
  972. @click="selectAttText(itemTaskIndex, index1)"
  973. />
  974. <input
  975. :placeholder="
  976. item1.title ? item1.title : '链接'
  977. "
  978. v-if="item1.type == 8"
  979. style="
  980. border: none;
  981. outline: none;
  982. width: 80%;
  983. white-space: nowrap;
  984. overflow: hidden;
  985. text-overflow: ellipsis;
  986. "
  987. readonly="true"
  988. @click="selectLine(itemTaskIndex, index1)"
  989. />
  990. <div
  991. class="chapter_upload_ud"
  992. style="z-index: 99"
  993. >
  994. <div
  995. class="chapter_upload_up"
  996. @click="
  997. upCd(
  998. $event,
  999. unitIndex,
  1000. index,
  1001. itemTaskIndex,
  1002. index1
  1003. )
  1004. "
  1005. ></div>
  1006. <div
  1007. class="chapter_upload_down"
  1008. @click="
  1009. downCd(
  1010. $event,
  1011. unitIndex,
  1012. index,
  1013. itemTaskIndex,
  1014. index1
  1015. )
  1016. "
  1017. ></div>
  1018. </div>
  1019. </div>
  1020. </div>
  1021. </div>
  1022. </div>
  1023. </div>
  1024. <div class="add_info_box">
  1025. <button class="info_btn" @click="addImg($event)">
  1026. 添加教学视频
  1027. <input
  1028. type="file"
  1029. accept="video/mp4, video/quicktime, video/x-msvideo"
  1030. style="display: none"
  1031. capture="camera"
  1032. v-if="inputShow"
  1033. @change="
  1034. beforeUpload2($event, unitIndex, 2, itemTaskIndex)
  1035. "
  1036. />
  1037. </button>
  1038. <button class="info_btn" @click="addImg($event)">
  1039. 添加教学附件
  1040. <input
  1041. type="file"
  1042. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  1043. style="display: none"
  1044. v-if="inputShow"
  1045. @change="
  1046. beforeUpload2($event, unitIndex, 3, itemTaskIndex)
  1047. "
  1048. />
  1049. </button>
  1050. <button
  1051. class="info_btn"
  1052. @click="addAttText(itemTaskIndex)"
  1053. v-if="!unitJson[unitIndex].easy"
  1054. >
  1055. 添加图文
  1056. </button>
  1057. <button
  1058. class="info_btn"
  1059. @click="openLine(itemTaskIndex)"
  1060. v-if="!unitJson[unitIndex].easy"
  1061. >
  1062. 添加链接
  1063. </button>
  1064. </div>
  1065. <div
  1066. v-if="
  1067. unitJson[unitIndex].chapterInfo[0].taskJson[
  1068. itemTaskIndex
  1069. ].proVisible
  1070. "
  1071. class="mask"
  1072. >
  1073. <div class="progressBox">
  1074. <!-- <div id="closePro" class="closeCss">
  1075. <img src="../../../assets/icon/close.png" alt />
  1076. </div> -->
  1077. <div class="lbox">
  1078. <img src="../../assets/loading.gif" />上传中,请稍后
  1079. </div>
  1080. <div style="margin-bottom: 10px">
  1081. <span
  1082. >{{
  1083. unitJson[unitIndex].chapterInfo[0].taskJson[
  1084. itemTaskIndex
  1085. ].isFinishSize
  1086. }}M</span
  1087. >
  1088. /
  1089. <span
  1090. >{{
  1091. unitJson[unitIndex].chapterInfo[0].taskJson[
  1092. itemTaskIndex
  1093. ].isAllSize
  1094. }}M</span
  1095. >
  1096. </div>
  1097. <el-progress
  1098. :text-inside="true"
  1099. :stroke-width="20"
  1100. :percentage="
  1101. unitJson[unitIndex].chapterInfo[0].taskJson[
  1102. itemTaskIndex
  1103. ].progress
  1104. ? unitJson[unitIndex].chapterInfo[0].taskJson[
  1105. itemTaskIndex
  1106. ].progress
  1107. : 0
  1108. "
  1109. style="width: 80%"
  1110. ></el-progress>
  1111. </div>
  1112. </div>
  1113. </div>
  1114. <div
  1115. v-if="unitJson[unitIndex].easy"
  1116. class="basic_box"
  1117. style="
  1118. margin: 0 auto;
  1119. min-height: 0;
  1120. width: 95% !important;
  1121. padding: 20px 10px 10px;
  1122. "
  1123. >
  1124. <div>
  1125. <div
  1126. class="add_chapters_box"
  1127. v-if="
  1128. itemTask.chapterData &&
  1129. itemTask.chapterData.length == 0
  1130. "
  1131. style="height: 185px"
  1132. ></div>
  1133. <div
  1134. v-else
  1135. class="add_chapters_box"
  1136. style="display: flex; flex-direction: column"
  1137. >
  1138. <div
  1139. v-for="(item1, index1) in itemTask.chapterData"
  1140. :key="item1.id"
  1141. >
  1142. <div
  1143. class="chapter_upload"
  1144. @click="
  1145. getChapterData(
  1146. $event,
  1147. unitIndex,
  1148. index,
  1149. index1,
  1150. item1.type
  1151. )
  1152. "
  1153. >
  1154. <div
  1155. class="chapter_upload_t"
  1156. style="width: 100%"
  1157. ></div>
  1158. <div
  1159. class="chapter_upload_o"
  1160. style="
  1161. position: relative;
  1162. display: flex;
  1163. align-items: center;
  1164. "
  1165. >
  1166. <div
  1167. class="chapter_upload_l"
  1168. style="padding: 1px 0 0 10px"
  1169. >
  1170. <div
  1171. v-if="item1.type == 2"
  1172. class="chapter_upload_l_i1"
  1173. ></div>
  1174. <div
  1175. v-if="
  1176. item1.type == 3 ||
  1177. item1.type == 6 ||
  1178. item1.type == 7
  1179. "
  1180. class="chapter_upload_l_i5"
  1181. style="margin-left: 1px"
  1182. ></div>
  1183. <div
  1184. v-if="item1.type == 8"
  1185. class="chapter_upload_l_i8"
  1186. style="margin-left: 1px"
  1187. ></div>
  1188. </div>
  1189. <div
  1190. class="chapter_upload_ic"
  1191. style="
  1192. cursor: pointer;
  1193. position: absolute;
  1194. width: 45px;
  1195. right: 0;
  1196. top: 0;
  1197. "
  1198. >
  1199. <div class="chapter_upload_ic_l"></div>
  1200. <div
  1201. class="chapter_upload_ic_r"
  1202. style="position: absolute"
  1203. @click.stop="
  1204. deleteChapterData(
  1205. $event,
  1206. unitIndex,
  1207. index,
  1208. index1,
  1209. itemTaskIndex
  1210. )
  1211. "
  1212. >
  1213. <div></div>
  1214. </div>
  1215. </div>
  1216. <div class="chapter_upload_n">
  1217. <span
  1218. style="
  1219. font-size: 14px;
  1220. color: rgb(109, 109, 109);
  1221. height: 14px;
  1222. line-height: 12px;
  1223. "
  1224. v-if="
  1225. item1.type == 2 ||
  1226. item1.type == 3 ||
  1227. item1.type == 7
  1228. "
  1229. >{{ item1.text }}-</span
  1230. >
  1231. <input
  1232. v-if="
  1233. item1.type == 2 ||
  1234. item1.type == 3 ||
  1235. item1.type == 7
  1236. "
  1237. :placeholder="item1.name"
  1238. @change="
  1239. updataVideoT(
  1240. $event,
  1241. unitIndex,
  1242. chapterIndex,
  1243. index1
  1244. )
  1245. "
  1246. style="
  1247. border: none;
  1248. outline: none;
  1249. width: 80%;
  1250. minwidth: 215px;
  1251. z-index: 99;
  1252. font-size: 14px;
  1253. white-space: nowrap;
  1254. overflow: hidden;
  1255. text-overflow: ellipsis;
  1256. "
  1257. />
  1258. <input
  1259. :placeholder="item1.name"
  1260. v-if="item1.type == 6"
  1261. style="
  1262. border: none;
  1263. outline: none;
  1264. width: 80%;
  1265. white-space: nowrap;
  1266. overflow: hidden;
  1267. text-overflow: ellipsis;
  1268. "
  1269. readonly="true"
  1270. @click="selectAttText(itemTaskIndex, index1)"
  1271. />
  1272. <input
  1273. :placeholder="
  1274. item1.title ? item1.title : '链接'
  1275. "
  1276. v-if="item1.type == 8"
  1277. style="
  1278. border: none;
  1279. outline: none;
  1280. width: 80%;
  1281. white-space: nowrap;
  1282. overflow: hidden;
  1283. text-overflow: ellipsis;
  1284. "
  1285. readonly="true"
  1286. @click="selectLine(itemTaskIndex, index1)"
  1287. />
  1288. <div
  1289. class="chapter_upload_ud"
  1290. style="z-index: 99"
  1291. >
  1292. <div
  1293. class="chapter_upload_up"
  1294. @click="
  1295. upCd(
  1296. $event,
  1297. unitIndex,
  1298. index,
  1299. itemTaskIndex,
  1300. index1
  1301. )
  1302. "
  1303. ></div>
  1304. <div
  1305. class="chapter_upload_down"
  1306. @click="
  1307. downCd(
  1308. $event,
  1309. unitIndex,
  1310. index,
  1311. itemTaskIndex,
  1312. index1
  1313. )
  1314. "
  1315. ></div>
  1316. </div>
  1317. </div>
  1318. </div>
  1319. </div>
  1320. </div>
  1321. </div>
  1322. </div>
  1323. <div class="add_info_box" style="margin: 10px 0 0">
  1324. <button class="info_btn" @click="addImg($event)">
  1325. <span style="color: red">*</span>
  1326. 教学设计
  1327. <input
  1328. type="file"
  1329. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  1330. style="display: none"
  1331. v-if="inputShow"
  1332. @change="
  1333. beforeUpload3(
  1334. $event,
  1335. unitIndex,
  1336. 3,
  1337. itemTaskIndex,
  1338. '教学设计'
  1339. )
  1340. "
  1341. />
  1342. </button>
  1343. <button class="info_btn" @click="addImg($event)">
  1344. <span style="color: red">*</span>
  1345. 教学课件
  1346. <input
  1347. type="file"
  1348. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  1349. style="display: none"
  1350. v-if="inputShow"
  1351. @change="
  1352. beforeUpload3(
  1353. $event,
  1354. unitIndex,
  1355. 3,
  1356. itemTaskIndex,
  1357. '教学课件'
  1358. )
  1359. "
  1360. />
  1361. </button>
  1362. <button class="info_btn" @click="addImg($event)">
  1363. 教学视频
  1364. <input
  1365. type="file"
  1366. accept="video/mp4, video/quicktime, video/x-msvideo"
  1367. style="display: none"
  1368. v-if="inputShow"
  1369. @change="
  1370. beforeUpload3(
  1371. $event,
  1372. unitIndex,
  1373. 2,
  1374. itemTaskIndex,
  1375. '教学视频'
  1376. )
  1377. "
  1378. />
  1379. </button>
  1380. <button class="info_btn" @click="addImg($event)">
  1381. 教学音频
  1382. <input
  1383. type="file"
  1384. accept="audio/*"
  1385. style="display: none"
  1386. v-if="inputShow"
  1387. @change="
  1388. beforeUpload3(
  1389. $event,
  1390. unitIndex,
  1391. 2,
  1392. itemTaskIndex,
  1393. '教学音频'
  1394. )
  1395. "
  1396. />
  1397. </button>
  1398. <button class="info_btn" @click="addImg($event)">
  1399. 学习单
  1400. <input
  1401. type="file"
  1402. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  1403. style="display: none"
  1404. v-if="inputShow"
  1405. @change="
  1406. beforeUpload3(
  1407. $event,
  1408. unitIndex,
  1409. 3,
  1410. itemTaskIndex,
  1411. '学习单'
  1412. )
  1413. "
  1414. />
  1415. </button>
  1416. </div>
  1417. <div
  1418. v-if="
  1419. unitJson[unitIndex].chapterInfo[0].taskJson[
  1420. itemTaskIndex
  1421. ].proVisible
  1422. "
  1423. class="mask"
  1424. >
  1425. <div class="progressBox">
  1426. <!-- <div id="closePro" class="closeCss">
  1427. <img src="../../../assets/icon/close.png" alt />
  1428. </div> -->
  1429. <div class="lbox">
  1430. <img src="../../assets/loading.gif" />上传中,请稍后
  1431. </div>
  1432. <div style="margin-bottom: 10px">
  1433. <span
  1434. >{{
  1435. unitJson[unitIndex].chapterInfo[0].taskJson[
  1436. itemTaskIndex
  1437. ].isFinishSize
  1438. }}M</span
  1439. >
  1440. /
  1441. <span
  1442. >{{
  1443. unitJson[unitIndex].chapterInfo[0].taskJson[
  1444. itemTaskIndex
  1445. ].isAllSize
  1446. }}M</span
  1447. >
  1448. </div>
  1449. <el-progress
  1450. :text-inside="true"
  1451. :stroke-width="20"
  1452. :percentage="
  1453. unitJson[unitIndex].chapterInfo[0].taskJson[
  1454. itemTaskIndex
  1455. ].progress
  1456. ? unitJson[unitIndex].chapterInfo[0].taskJson[
  1457. itemTaskIndex
  1458. ].progress
  1459. : 0
  1460. "
  1461. style="width: 80%"
  1462. ></el-progress>
  1463. </div>
  1464. </div>
  1465. </div>
  1466. <div
  1467. style="
  1468. flex-direction: row;
  1469. justify-content: flex-start;
  1470. align-items: center;
  1471. padding: 0 0 0 30px;
  1472. paddint-top: 10px !important;
  1473. "
  1474. >
  1475. <div
  1476. style="
  1477. display: flex;
  1478. flex-direction: row;
  1479. align-items: center;
  1480. margin-bottom: 20px;
  1481. "
  1482. >
  1483. <div class="lineTitle">
  1484. {{
  1485. !unitJson[unitIndex].easy ? "练习内容" : "评价内容"
  1486. }}
  1487. </div>
  1488. <div class="line" style="width: 90%"></div>
  1489. </div>
  1490. </div>
  1491. <div
  1492. v-if="!unitJson[unitIndex].easy"
  1493. class="toolChoose"
  1494. style="padding: 0 0 0 30px"
  1495. >
  1496. <div class="tools">
  1497. <div
  1498. class="leftTools"
  1499. style="
  1500. width: 95%;
  1501. padding: 0 0 15px 0;
  1502. border-bottom: 1px solid #efefef;
  1503. margin-bottom: 15px;
  1504. "
  1505. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  1506. :key="toolIndex"
  1507. >
  1508. <div>
  1509. <textarea
  1510. rows="3"
  1511. type="text"
  1512. placeholder="添加工具描述"
  1513. class="binfo_input"
  1514. style="margin: 0 0 20px 0; width: 71.5% !important"
  1515. v-model="itemTool.toolDetail"
  1516. ></textarea>
  1517. </div>
  1518. <div
  1519. style="
  1520. display: flex;
  1521. flex-direction: row;
  1522. align-items: baseline;
  1523. flex-wrap: nowrap;
  1524. justify-content: flex-start;
  1525. position: relative;
  1526. "
  1527. >
  1528. <div style="margin-right: 20px; font-weight: bold">
  1529. 步骤 {{ toolIndex + 1 }} :
  1530. </div>
  1531. <div class="chooseWho">
  1532. <div
  1533. :class="
  1534. itemTool.toolType == 0 ? 'isChooseActive' : ''
  1535. "
  1536. @click="(itemTool.toolType = 0), $forceUpdate()"
  1537. >
  1538. 互动类
  1539. </div>
  1540. <div
  1541. :class="
  1542. itemTool.toolType == 1 ? 'isChooseActive' : ''
  1543. "
  1544. @click="(itemTool.toolType = 1), $forceUpdate()"
  1545. >
  1546. 思维类
  1547. </div>
  1548. <div
  1549. :class="
  1550. itemTool.toolType == 2 ? 'isChooseActive' : ''
  1551. "
  1552. @click="(itemTool.toolType = 2), $forceUpdate()"
  1553. >
  1554. 评价类
  1555. </div>
  1556. <div
  1557. :class="
  1558. itemTool.toolType == 3 ? 'isChooseActive' : ''
  1559. "
  1560. @click="(itemTool.toolType = 3), $forceUpdate()"
  1561. >
  1562. 编程类
  1563. </div>
  1564. <div
  1565. :class="
  1566. itemTool.toolType == 5 ? 'isChooseActive' : ''
  1567. "
  1568. @click="(itemTool.toolType = 5), $forceUpdate()"
  1569. >
  1570. 学科类
  1571. </div>
  1572. <div
  1573. :class="
  1574. itemTool.toolType == 4 ? 'isChooseActive' : ''
  1575. "
  1576. @click="(itemTool.toolType = 4), $forceUpdate()"
  1577. >
  1578. 其他
  1579. </div>
  1580. </div>
  1581. <div
  1582. class="remove"
  1583. @click="deleteTool(itemTaskIndex, toolIndex)"
  1584. v-if="itemTask.toolChoose.length > 1"
  1585. style="position: absolute; right: 55px"
  1586. ></div>
  1587. </div>
  1588. <div style="min-height: 163px">
  1589. <div class="toolSort" v-if="itemTool.toolType == 0">
  1590. <!-- <div class="tool">
  1591. <div
  1592. class="whiteBIcon"
  1593. @click="addTools(8, itemTaskIndex, toolIndex)"
  1594. >
  1595. <img src="../../assets/icon/secondToolList/library.png" alt />
  1596. <div style="margin: 5px 0">素材库</div>
  1597. </div>
  1598. <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
  1599. <img
  1600. src="../../assets/icon/checkNo.png"
  1601. alt
  1602. v-if="itemTool.tool.indexOf(8) == -1"
  1603. />
  1604. <div class="checkDiv" v-else><img src="../../assets/icon/checkedIs.png"
  1605. alt /><span>已选择</span></div>
  1606. </div>
  1607. </div>-->
  1608. <!-- <div class="tool">
  1609. <div
  1610. class="whiteBIcon"
  1611. @click="addTools(17, itemTaskIndex, toolIndex)"
  1612. >
  1613. <img
  1614. src="../../assets/icon/secondToolList/library.png"
  1615. alt
  1616. />
  1617. <div style="margin: 5px 0">学习资料</div>
  1618. </div>
  1619. <div
  1620. class="check"
  1621. @click="addTools(17, itemTaskIndex, toolIndex)"
  1622. >
  1623. <img
  1624. src="../../assets/icon/checkNo.png"
  1625. alt
  1626. v-if="itemTool.tool.indexOf(17) == -1"
  1627. />
  1628. <img
  1629. src="../../assets/icon/checkedIs.png"
  1630. alt
  1631. v-else
  1632. />
  1633. </div>10
  1634. </div> -->
  1635. <div class="tool">
  1636. <div
  1637. class="whiteBIcon"
  1638. @click="openTools(itemTaskIndex, 10, toolIndex)"
  1639. >
  1640. <img
  1641. src="../../assets/icon/thirdToolList/time.png"
  1642. alt
  1643. />
  1644. <div style="margin: 5px 0">倒计时</div>
  1645. </div>
  1646. <div
  1647. class="check"
  1648. @click="addTools(10, itemTaskIndex, toolIndex)"
  1649. >
  1650. <img
  1651. src="../../assets/icon/checkNo.png"
  1652. alt
  1653. v-if="itemTool.tool.indexOf(10) == -1"
  1654. />
  1655. <div class="checkDiv" v-else>
  1656. <img
  1657. src="../../assets/icon/checkedIs.png"
  1658. alt
  1659. /><span>已选择</span>
  1660. </div>
  1661. </div>
  1662. </div>
  1663. <div class="tool">
  1664. <div
  1665. class="whiteBIcon"
  1666. @click="openTools(itemTaskIndex, 49, toolIndex)"
  1667. >
  1668. <img
  1669. src="../../assets/icon/fourthToolList/group.png"
  1670. alt
  1671. />
  1672. <div style="margin: 5px 0">学生分组</div>
  1673. </div>
  1674. <div
  1675. class="check"
  1676. @click="addTools(49, itemTaskIndex, toolIndex)"
  1677. >
  1678. <img
  1679. src="../../assets/icon/checkNo.png"
  1680. alt
  1681. v-if="itemTool.tool.indexOf(49) == -1"
  1682. />
  1683. <div class="checkDiv" v-else>
  1684. <img
  1685. src="../../assets/icon/checkedIs.png"
  1686. alt
  1687. /><span>已选择</span>
  1688. </div>
  1689. </div>
  1690. </div>
  1691. </div>
  1692. <div class="toolSort" v-if="itemTool.toolType == 1">
  1693. <div class="tool">
  1694. <div
  1695. class="whiteBIcon"
  1696. @click="addTools(7, itemTaskIndex, toolIndex)"
  1697. >
  1698. <img
  1699. src="../../assets/icon/secondToolList/mindNetwork.png"
  1700. alt
  1701. />
  1702. <div style="margin: 5px 0">思维网格</div>
  1703. </div>
  1704. <div
  1705. class="check"
  1706. @click="addTools(7, itemTaskIndex, toolIndex)"
  1707. >
  1708. <img
  1709. src="../../assets/icon/checkNo.png"
  1710. alt
  1711. v-if="itemTool.tool.indexOf(7) == -1"
  1712. />
  1713. <div class="checkDiv" v-else>
  1714. <img
  1715. src="../../assets/icon/checkedIs.png"
  1716. alt
  1717. /><span>已选择</span>
  1718. </div>
  1719. </div>
  1720. </div>
  1721. <div class="tool">
  1722. <div class="whiteBIcon" @click="openTools(itemTaskIndex, 1, toolIndex)">
  1723. <img src="../../assets/icon/secondToolList/whiteBoard.png" alt />
  1724. <div style="margin: 5px 0">电子白板</div>
  1725. </div>
  1726. <div
  1727. class="check"
  1728. @click="addTools(1, itemTaskIndex, toolIndex)"
  1729. >
  1730. <img
  1731. src="../../assets/icon/checkNo.png"
  1732. alt
  1733. v-if="itemTool.tool.indexOf(1) == -1"
  1734. />
  1735. <div class="checkDiv" v-else>
  1736. <img
  1737. src="../../assets/icon/checkedIs.png"
  1738. alt
  1739. /><span>已选择</span>
  1740. </div>
  1741. </div>
  1742. </div>
  1743. <!-- <div class="tool">
  1744. <div
  1745. class="whiteBIcon"
  1746. @click="addTools(2, itemTaskIndex, toolIndex)"
  1747. >
  1748. <img
  1749. src="../../assets/icon/secondToolList/note.png"
  1750. alt
  1751. />
  1752. <div style="margin: 5px 0">便签</div>
  1753. </div>
  1754. <div
  1755. class="check"
  1756. @click="addTools(2, itemTaskIndex, toolIndex)"
  1757. >
  1758. <img
  1759. src="../../assets/icon/checkNo.png"
  1760. alt
  1761. v-if="itemTool.tool.indexOf(2) == -1"
  1762. />
  1763. <div class="checkDiv" v-else>
  1764. <img
  1765. src="../../assets/icon/checkedIs.png"
  1766. alt
  1767. /><span>已选择</span>
  1768. </div>
  1769. </div>
  1770. </div> -->
  1771. <!-- <div class="tool">
  1772. <div class="whiteBIcon" @click="addTools(6, itemTaskIndex, toolIndex)">
  1773. <img src="../../assets/icon/secondToolList/doc.png" alt />
  1774. <div style="margin: 5px 0">协同文档</div>
  1775. </div>
  1776. <div
  1777. class="check"
  1778. @click="addTools(6, itemTaskIndex, toolIndex)"
  1779. >
  1780. <img
  1781. src="../../assets/icon/checkNo.png"
  1782. alt
  1783. v-if="itemTool.tool.indexOf(6) == -1"
  1784. />
  1785. <div class="checkDiv" v-else>
  1786. <img
  1787. src="../../assets/icon/checkedIs.png"
  1788. alt
  1789. /><span>已选择</span>
  1790. </div>
  1791. </div>
  1792. </div> -->
  1793. <div class="tool">
  1794. <div
  1795. class="whiteBIcon"
  1796. @click="openTools(itemTaskIndex, 52, toolIndex)"
  1797. >
  1798. <img
  1799. src="../../assets/icon/fourthToolList/text.png"
  1800. alt
  1801. />
  1802. <div style="margin: 5px 0">文档</div>
  1803. </div>
  1804. <div
  1805. class="check"
  1806. @click="addTools(52, itemTaskIndex, toolIndex)"
  1807. >
  1808. <img
  1809. src="../../assets/icon/checkNo.png"
  1810. alt
  1811. v-if="itemTool.tool.indexOf(52) == -1"
  1812. />
  1813. <div class="checkDiv" v-else>
  1814. <img
  1815. src="../../assets/icon/checkedIs.png"
  1816. alt
  1817. /><span>已选择</span>
  1818. </div>
  1819. </div>
  1820. </div>
  1821. <div class="tool">
  1822. <div
  1823. class="whiteBIcon"
  1824. @click="openTools(itemTaskIndex, 3, toolIndex)"
  1825. >
  1826. <img
  1827. src="../../assets/icon/secondToolList/mindMapping.png"
  1828. alt
  1829. />
  1830. <div style="margin: 5px 0">思维导图</div>
  1831. </div>
  1832. <div
  1833. class="check"
  1834. @click="addTools(3, itemTaskIndex, toolIndex)"
  1835. >
  1836. <img
  1837. src="../../assets/icon/checkNo.png"
  1838. alt
  1839. v-if="itemTool.tool.indexOf(3) == -1"
  1840. />
  1841. <div class="checkDiv" v-else>
  1842. <img
  1843. src="../../assets/icon/checkedIs.png"
  1844. alt
  1845. /><span>已选择</span>
  1846. </div>
  1847. </div>
  1848. </div>
  1849. </div>
  1850. <div class="toolSort" v-if="itemTool.toolType == 2">
  1851. <!-- <div class="tool">
  1852. <div
  1853. class="whiteBIcon"
  1854. @click="addTools(5, itemTaskIndex, toolIndex)"
  1855. >
  1856. <img
  1857. src="../../assets/icon/thirdToolList/score.png"
  1858. alt
  1859. />
  1860. <div style="margin: 5px 0">量规评分</div>
  1861. </div>
  1862. <div
  1863. class="check"
  1864. @click="addTools(5, itemTaskIndex, toolIndex)"
  1865. >
  1866. <img
  1867. src="../../assets/icon/checkNo.png"
  1868. alt
  1869. v-if="itemTool.tool.indexOf(5) == -1"
  1870. />
  1871. <img
  1872. src="../../assets/icon/checkedIs.png"
  1873. alt
  1874. v-else
  1875. />
  1876. </div>
  1877. </div>-->
  1878. <div class="tool">
  1879. <div
  1880. class="whiteBIcon"
  1881. @click="openTools(itemTaskIndex, 4, toolIndex)"
  1882. >
  1883. <img
  1884. src="../../assets/icon/thirdToolList/ask.png"
  1885. alt
  1886. />
  1887. <div style="margin: 5px 0">问卷调查</div>
  1888. </div>
  1889. <div
  1890. class="check"
  1891. @click="addTools(4, itemTaskIndex, toolIndex)"
  1892. >
  1893. <img
  1894. src="../../assets/icon/checkNo.png"
  1895. alt
  1896. v-if="itemTool.tool.indexOf(4) == -1"
  1897. />
  1898. <div class="checkDiv" v-else>
  1899. <img
  1900. src="../../assets/icon/checkedIs.png"
  1901. alt
  1902. /><span>已选择</span>
  1903. </div>
  1904. </div>
  1905. </div>
  1906. <div class="tool">
  1907. <div
  1908. class="whiteBIcon"
  1909. @click="openTools(itemTaskIndex, 45, toolIndex)"
  1910. >
  1911. <img
  1912. src="../../assets/icon/thirdToolList/choose.png"
  1913. alt
  1914. />
  1915. <div style="margin: 5px 0">选择题</div>
  1916. </div>
  1917. <div
  1918. class="check"
  1919. @click="addTools(45, itemTaskIndex, toolIndex)"
  1920. >
  1921. <img
  1922. src="../../assets/icon/checkNo.png"
  1923. alt
  1924. v-if="itemTool.tool.indexOf(45) == -1"
  1925. />
  1926. <div class="checkDiv" v-else>
  1927. <img
  1928. src="../../assets/icon/checkedIs.png"
  1929. alt
  1930. /><span>已选择</span>
  1931. </div>
  1932. </div>
  1933. </div>
  1934. <div class="tool">
  1935. <div
  1936. class="whiteBIcon"
  1937. @click="openTools(itemTaskIndex, 15, toolIndex)"
  1938. >
  1939. <img
  1940. src="../../assets/icon/thirdToolList/answer.png"
  1941. alt
  1942. />
  1943. <div style="margin: 5px 0">问答工具</div>
  1944. </div>
  1945. <div
  1946. class="check"
  1947. @click="addTools(15, itemTaskIndex, toolIndex)"
  1948. >
  1949. <img
  1950. src="../../assets/icon/checkNo.png"
  1951. alt
  1952. v-if="itemTool.tool.indexOf(15) == -1"
  1953. />
  1954. <div class="checkDiv" v-else>
  1955. <img
  1956. src="../../assets/icon/checkedIs.png"
  1957. alt
  1958. /><span>已选择</span>
  1959. </div>
  1960. </div>
  1961. </div>
  1962. <div class="tool">
  1963. <div
  1964. class="whiteBIcon"
  1965. @click="addTools(16, itemTaskIndex, toolIndex)"
  1966. >
  1967. <img
  1968. src="../../assets/icon/thirdToolList/work.png"
  1969. alt
  1970. />
  1971. <div style="margin: 5px 0">作业提交</div>
  1972. </div>
  1973. <div
  1974. class="check"
  1975. @click="addTools(16, itemTaskIndex, toolIndex)"
  1976. >
  1977. <img
  1978. src="../../assets/icon/checkNo.png"
  1979. alt
  1980. v-if="itemTool.tool.indexOf(16) == -1"
  1981. />
  1982. <div class="checkDiv" v-else>
  1983. <img
  1984. src="../../assets/icon/checkedIs.png"
  1985. alt
  1986. /><span>已选择</span>
  1987. </div>
  1988. </div>
  1989. </div>
  1990. <div class="tool">
  1991. <div
  1992. class="whiteBIcon"
  1993. @click="openTools(itemTaskIndex, 50, toolIndex)"
  1994. >
  1995. <img
  1996. src="../../assets/icon/thirdToolList/plwork.png"
  1997. alt
  1998. />
  1999. <div style="margin: 5px 0">批量上传</div>
  2000. </div>
  2001. <div
  2002. class="check"
  2003. @click="addTools(50, itemTaskIndex, toolIndex)"
  2004. >
  2005. <img
  2006. src="../../assets/icon/checkNo.png"
  2007. alt
  2008. v-if="itemTool.tool.indexOf(50) == -1"
  2009. />
  2010. <div class="checkDiv" v-else>
  2011. <img
  2012. src="../../assets/icon/checkedIs.png"
  2013. alt
  2014. /><span>已选择</span>
  2015. </div>
  2016. </div>
  2017. </div>
  2018. <div class="tool">
  2019. <div
  2020. class="whiteBIcon"
  2021. @click="openTools(itemTaskIndex, 40, toolIndex)"
  2022. >
  2023. <img
  2024. src="../../assets/icon/thirdToolList/eval.png"
  2025. alt
  2026. />
  2027. <div style="margin: 5px 0">个人评价</div>
  2028. </div>
  2029. <div
  2030. class="check"
  2031. @click="addTools(40, itemTaskIndex, toolIndex)"
  2032. >
  2033. <img
  2034. src="../../assets/icon/checkNo.png"
  2035. alt
  2036. v-if="itemTool.tool.indexOf(40) == -1"
  2037. />
  2038. <div class="checkDiv" v-else>
  2039. <img
  2040. src="../../assets/icon/checkedIs.png"
  2041. alt
  2042. /><span>已选择</span>
  2043. </div>
  2044. </div>
  2045. </div>
  2046. <div class="tool">
  2047. <div
  2048. class="whiteBIcon"
  2049. @click="openTools(itemTaskIndex, 41, toolIndex)"
  2050. >
  2051. <img
  2052. src="../../assets/icon/thirdToolList/select.png"
  2053. alt
  2054. />
  2055. <div style="margin: 5px 0">选择填空</div>
  2056. </div>
  2057. <div
  2058. class="check"
  2059. @click="addTools(41, itemTaskIndex, toolIndex)"
  2060. >
  2061. <img
  2062. src="../../assets/icon/checkNo.png"
  2063. alt
  2064. v-if="itemTool.tool.indexOf(41) == -1"
  2065. />
  2066. <div class="checkDiv" v-else>
  2067. <img
  2068. src="../../assets/icon/checkedIs.png"
  2069. alt
  2070. /><span>已选择</span>
  2071. </div>
  2072. </div>
  2073. </div>
  2074. <div class="tool">
  2075. <div
  2076. class="whiteBIcon"
  2077. @click="openTools(itemTaskIndex, 47, toolIndex)"
  2078. >
  2079. <img
  2080. src="../../assets/icon/fourthToolList/conSentences.png"
  2081. alt
  2082. />
  2083. <div style="margin: 5px 0">连词成句</div>
  2084. </div>
  2085. <div
  2086. class="check"
  2087. @click="addTools(47, itemTaskIndex, toolIndex)"
  2088. >
  2089. <img
  2090. src="../../assets/icon/checkNo.png"
  2091. alt
  2092. v-if="itemTool.tool.indexOf(47) == -1"
  2093. />
  2094. <div class="checkDiv" v-else>
  2095. <img
  2096. src="../../assets/icon/checkedIs.png"
  2097. alt
  2098. /><span>已选择</span>
  2099. </div>
  2100. </div>
  2101. </div>
  2102. <div class="tool">
  2103. <div
  2104. class="whiteBIcon"
  2105. @click="openTools(itemTaskIndex, 48, toolIndex)"
  2106. >
  2107. <img
  2108. src="../../assets/icon/fourthToolList/table.png"
  2109. alt
  2110. />
  2111. <div style="margin: 5px 0">表格</div>
  2112. </div>
  2113. <div
  2114. class="check"
  2115. @click="addTools(48, itemTaskIndex, toolIndex)"
  2116. >
  2117. <img
  2118. src="../../assets/icon/checkNo.png"
  2119. alt
  2120. v-if="itemTool.tool.indexOf(48) == -1"
  2121. />
  2122. <div class="checkDiv" v-else>
  2123. <img
  2124. src="../../assets/icon/checkedIs.png"
  2125. alt
  2126. /><span>已选择</span>
  2127. </div>
  2128. </div>
  2129. </div>
  2130. <!-- <div class="tool">
  2131. <div
  2132. class="whiteBIcon"
  2133. @click="openTools(itemTaskIndex, 42, toolIndex)"
  2134. >
  2135. <img
  2136. src="../../assets/icon/thirdToolList/mp3.png"
  2137. alt
  2138. />
  2139. <div style="margin: 5px 0">上传音频</div>
  2140. </div>
  2141. <div
  2142. class="check"
  2143. @click="addTools(42, itemTaskIndex, toolIndex)"
  2144. >
  2145. <img
  2146. src="../../assets/icon/checkNo.png"
  2147. alt
  2148. v-if="itemTool.tool.indexOf(42) == -1"
  2149. />
  2150. <img
  2151. src="../../assets/icon/checkedIs.png"
  2152. alt
  2153. v-else
  2154. />
  2155. </div>
  2156. </div> -->
  2157. </div>
  2158. <div class="toolSort" v-if="itemTool.toolType == 3">
  2159. <div class="tool">
  2160. <div
  2161. class="whiteBIcon"
  2162. @click="addTools(18, itemTaskIndex, toolIndex)"
  2163. >
  2164. <img
  2165. src="../../assets/icon/thirdToolList/trainPlatform.png"
  2166. alt
  2167. />
  2168. <div style="margin: 5px 0">训练平台</div>
  2169. </div>
  2170. <div
  2171. class="check"
  2172. @click="addTools(18, itemTaskIndex, toolIndex)"
  2173. >
  2174. <img
  2175. src="../../assets/icon/checkNo.png"
  2176. alt
  2177. v-if="itemTool.tool.indexOf(18) == -1"
  2178. />
  2179. <div class="checkDiv" v-else>
  2180. <img
  2181. src="../../assets/icon/checkedIs.png"
  2182. alt
  2183. /><span>已选择</span>
  2184. </div>
  2185. </div>
  2186. </div>
  2187. <div class="tool">
  2188. <div
  2189. class="whiteBIcon"
  2190. @click="addTools(21, itemTaskIndex, toolIndex)"
  2191. >
  2192. <img
  2193. src="../../assets/icon/fourthToolList/program.png"
  2194. alt
  2195. />
  2196. <div style="margin: 5px 0">编程平台</div>
  2197. </div>
  2198. <div
  2199. class="check"
  2200. @click="addTools(21, itemTaskIndex, toolIndex)"
  2201. >
  2202. <img
  2203. src="../../assets/icon/checkNo.png"
  2204. alt
  2205. v-if="itemTool.tool.indexOf(21) == -1"
  2206. />
  2207. <div class="checkDiv" v-else>
  2208. <img
  2209. src="../../assets/icon/checkedIs.png"
  2210. alt
  2211. /><span>已选择</span>
  2212. </div>
  2213. </div>
  2214. </div>
  2215. <div class="tool">
  2216. <div
  2217. class="whiteBIcon"
  2218. @click="addTools(22, itemTaskIndex, toolIndex)"
  2219. >
  2220. <img
  2221. src="../../assets/icon/fourthToolList/AIprogram2.png"
  2222. alt
  2223. />
  2224. <div style="margin: 5px 0">AI体验</div>
  2225. </div>
  2226. <div
  2227. class="check"
  2228. @click="addTools(22, itemTaskIndex, toolIndex)"
  2229. >
  2230. <img
  2231. src="../../assets/icon/checkNo.png"
  2232. alt
  2233. v-if="itemTool.tool.indexOf(22) == -1"
  2234. />
  2235. <div class="checkDiv" v-else>
  2236. <img
  2237. src="../../assets/icon/checkedIs.png"
  2238. alt
  2239. /><span>已选择</span>
  2240. </div>
  2241. </div>
  2242. </div>
  2243. <div class="tool">
  2244. <div
  2245. class="whiteBIcon"
  2246. @click="addTools(23, itemTaskIndex, toolIndex)"
  2247. >
  2248. <img
  2249. src="../../assets/icon/fourthToolList/Pythonprogram.png"
  2250. alt
  2251. />
  2252. <div style="margin: 5px 0">Python</div>
  2253. </div>
  2254. <div
  2255. class="check"
  2256. @click="addTools(23, itemTaskIndex, toolIndex)"
  2257. >
  2258. <img
  2259. src="../../assets/icon/checkNo.png"
  2260. alt
  2261. v-if="itemTool.tool.indexOf(23) == -1"
  2262. />
  2263. <div class="checkDiv" v-else>
  2264. <img
  2265. src="../../assets/icon/checkedIs.png"
  2266. alt
  2267. /><span>已选择</span>
  2268. </div>
  2269. </div>
  2270. </div>
  2271. <div class="tool">
  2272. <div
  2273. class="whiteBIcon"
  2274. @click="addTools(24, itemTaskIndex, toolIndex)"
  2275. >
  2276. <img
  2277. src="../../assets/icon/fourthToolList/AIprogram.png"
  2278. alt
  2279. />
  2280. <div style="margin: 5px 0">AI平台</div>
  2281. </div>
  2282. <div
  2283. class="check"
  2284. @click="addTools(24, itemTaskIndex, toolIndex)"
  2285. >
  2286. <img
  2287. src="../../assets/icon/checkNo.png"
  2288. alt
  2289. v-if="itemTool.tool.indexOf(24) == -1"
  2290. />
  2291. <div class="checkDiv" v-else>
  2292. <img
  2293. src="../../assets/icon/checkedIs.png"
  2294. alt
  2295. /><span>已选择</span>
  2296. </div>
  2297. </div>
  2298. </div>
  2299. <div class="tool">
  2300. <div
  2301. class="whiteBIcon"
  2302. @click="addTools(32, itemTaskIndex, toolIndex)"
  2303. >
  2304. <img
  2305. src="../../assets/icon/thirdToolList/code.png"
  2306. alt
  2307. />
  2308. <div style="margin: 5px 0">源码编辑</div>
  2309. </div>
  2310. <div
  2311. class="check"
  2312. @click="addTools(32, itemTaskIndex, toolIndex)"
  2313. >
  2314. <img
  2315. src="../../assets/icon/checkNo.png"
  2316. alt
  2317. v-if="itemTool.tool.indexOf(32) == -1"
  2318. />
  2319. <div class="checkDiv" v-else>
  2320. <img
  2321. src="../../assets/icon/checkedIs.png"
  2322. alt
  2323. /><span>已选择</span>
  2324. </div>
  2325. </div>
  2326. </div>
  2327. </div>
  2328. <div class="toolSort" v-if="itemTool.toolType == 5">
  2329. <div class="tool">
  2330. <div
  2331. class="whiteBIcon"
  2332. @click="addTools(28, itemTaskIndex, toolIndex)"
  2333. >
  2334. <img
  2335. src="../../assets/icon/secondToolList/translation.png"
  2336. alt
  2337. />
  2338. <div style="margin: 5px 0">翻译</div>
  2339. </div>
  2340. <div
  2341. class="check"
  2342. @click="addTools(28, itemTaskIndex, toolIndex)"
  2343. >
  2344. <img
  2345. src="../../assets/icon/checkNo.png"
  2346. alt
  2347. v-if="itemTool.tool.indexOf(28) == -1"
  2348. />
  2349. <div class="checkDiv" v-else>
  2350. <img
  2351. src="../../assets/icon/checkedIs.png"
  2352. alt
  2353. /><span>已选择</span>
  2354. </div>
  2355. </div>
  2356. </div>
  2357. <div class="tool">
  2358. <div
  2359. class="whiteBIcon"
  2360. @click="addTools(37, itemTaskIndex, toolIndex)"
  2361. >
  2362. <img
  2363. src="../../assets/icon/secondToolList/mohe.png"
  2364. alt
  2365. />
  2366. <div style="margin: 5px 0">魔盒识字</div>
  2367. </div>
  2368. <div
  2369. class="check"
  2370. @click="addTools(37, itemTaskIndex, toolIndex)"
  2371. >
  2372. <img
  2373. src="../../assets/icon/checkNo.png"
  2374. alt
  2375. v-if="itemTool.tool.indexOf(37) == -1"
  2376. />
  2377. <div class="checkDiv" v-else>
  2378. <img
  2379. src="../../assets/icon/checkedIs.png"
  2380. alt
  2381. /><span>已选择</span>
  2382. </div>
  2383. </div>
  2384. </div>
  2385. <div class="tool">
  2386. <div
  2387. class="whiteBIcon"
  2388. @click="addTools(38, itemTaskIndex, toolIndex)"
  2389. >
  2390. <img
  2391. src="../../assets/icon/secondToolList/24game.png"
  2392. alt
  2393. />
  2394. <div style="margin: 5px 0">24点</div>
  2395. </div>
  2396. <div
  2397. class="check"
  2398. @click="addTools(38, itemTaskIndex, toolIndex)"
  2399. >
  2400. <img
  2401. src="../../assets/icon/checkNo.png"
  2402. alt
  2403. v-if="itemTool.tool.indexOf(38) == -1"
  2404. />
  2405. <div class="checkDiv" v-else>
  2406. <img
  2407. src="../../assets/icon/checkedIs.png"
  2408. alt
  2409. /><span>已选择</span>
  2410. </div>
  2411. </div>
  2412. </div>
  2413. <div class="tool">
  2414. <div
  2415. class="whiteBIcon"
  2416. @click="addTools(31, itemTaskIndex, toolIndex)"
  2417. >
  2418. <img
  2419. src="../../assets/icon/secondToolList/networkPanel.png"
  2420. alt
  2421. />
  2422. <div style="margin: 5px 0">数学画板</div>
  2423. </div>
  2424. <div
  2425. class="check"
  2426. @click="addTools(31, itemTaskIndex, toolIndex)"
  2427. >
  2428. <img
  2429. src="../../assets/icon/checkNo.png"
  2430. alt
  2431. v-if="itemTool.tool.indexOf(31) == -1"
  2432. />
  2433. <div class="checkDiv" v-else>
  2434. <img
  2435. src="../../assets/icon/checkedIs.png"
  2436. alt
  2437. /><span>已选择</span>
  2438. </div>
  2439. </div>
  2440. </div>
  2441. <div class="tool">
  2442. <div
  2443. class="whiteBIcon"
  2444. @click="addTools(39, itemTaskIndex, toolIndex)"
  2445. >
  2446. <img
  2447. src="../../assets/icon/secondToolList/GeoGebra.png"
  2448. alt
  2449. />
  2450. <div style="margin: 5px 0">GeoGebra</div>
  2451. </div>
  2452. <div
  2453. class="check"
  2454. @click="addTools(39, itemTaskIndex, toolIndex)"
  2455. >
  2456. <img
  2457. src="../../assets/icon/checkNo.png"
  2458. alt
  2459. v-if="itemTool.tool.indexOf(39) == -1"
  2460. />
  2461. <div class="checkDiv" v-else>
  2462. <img
  2463. src="../../assets/icon/checkedIs.png"
  2464. alt
  2465. /><span>已选择</span>
  2466. </div>
  2467. </div>
  2468. </div>
  2469. </div>
  2470. <div class="toolSort" v-if="itemTool.toolType == 4">
  2471. <div class="tool">
  2472. <div
  2473. class="whiteBIcon"
  2474. @click="addTools(26, itemTaskIndex, toolIndex)"
  2475. >
  2476. <img
  2477. src="../../assets/icon/thirdToolList/courseDesign.png"
  2478. alt
  2479. />
  2480. <div style="margin: 5px 0">课程设计</div>
  2481. </div>
  2482. <div
  2483. class="check"
  2484. @click="addTools(26, itemTaskIndex, toolIndex)"
  2485. >
  2486. <img
  2487. src="../../assets/icon/checkNo.png"
  2488. alt
  2489. v-if="itemTool.tool.indexOf(26) == -1"
  2490. />
  2491. <div class="checkDiv" v-else>
  2492. <img
  2493. src="../../assets/icon/checkedIs.png"
  2494. alt
  2495. /><span>已选择</span>
  2496. </div>
  2497. </div>
  2498. </div>
  2499. <div class="tool">
  2500. <div
  2501. class="whiteBIcon"
  2502. @click="addTools(25, itemTaskIndex, toolIndex)"
  2503. >
  2504. <img
  2505. src="../../assets/icon/thirdToolList/evalua.png"
  2506. alt
  2507. />
  2508. <div style="margin: 5px 0">目标管理</div>
  2509. </div>
  2510. <div
  2511. class="check"
  2512. @click="addTools(25, itemTaskIndex, toolIndex)"
  2513. >
  2514. <img
  2515. src="../../assets/icon/checkNo.png"
  2516. alt
  2517. v-if="itemTool.tool.indexOf(25) == -1"
  2518. />
  2519. <div class="checkDiv" v-else>
  2520. <img
  2521. src="../../assets/icon/checkedIs.png"
  2522. alt
  2523. /><span>已选择</span>
  2524. </div>
  2525. </div>
  2526. </div>
  2527. <!-- <div class="tool">
  2528. <div class="whiteBIcon" @click="addTools(44, itemTaskIndex, toolIndex)">
  2529. <img src="../../assets/icon/thirdToolList/hanClass.png" alt />
  2530. <div style="margin: 5px 0">汉字宫</div>
  2531. </div>
  2532. <div class="check" @click="addTools(44, itemTaskIndex, toolIndex)">
  2533. <img src="../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(44) == -1" />
  2534. <div class="checkDiv" v-else>
  2535. <img src="../../assets/icon/checkedIs.png" alt /><span>已选择</span>
  2536. </div>
  2537. </div>
  2538. </div> -->
  2539. </div>
  2540. </div>
  2541. </div>
  2542. <div
  2543. class="addToolFun"
  2544. @click="addToolFun(itemTaskIndex)"
  2545. >
  2546. <div class="addToolImg">
  2547. <img src="../../assets/icon/add.png" alt />
  2548. </div>
  2549. <div>添加工具</div>
  2550. </div>
  2551. </div>
  2552. </div>
  2553. <div v-else class="toolChoose" style="padding: 0 0 0 30px">
  2554. <div class="tools">
  2555. <div
  2556. class="leftTools"
  2557. style="
  2558. width: 95%;
  2559. padding: 0 0 15px 0;
  2560. border-bottom: 1px solid #efefef;
  2561. margin-bottom: 15px;
  2562. "
  2563. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  2564. :key="toolIndex"
  2565. >
  2566. <div style="min-height: 163px">
  2567. <div class="toolSort">
  2568. <div class="tool">
  2569. <div
  2570. class="whiteBIcon"
  2571. @click="openTools(itemTaskIndex, 50, toolIndex)"
  2572. >
  2573. <img
  2574. src="../../assets/icon/thirdToolList/plwork.png"
  2575. alt
  2576. />
  2577. <div style="margin: 5px 0">批量上传</div>
  2578. </div>
  2579. <div
  2580. class="check"
  2581. @click="addTools(50, itemTaskIndex, toolIndex)"
  2582. >
  2583. <img
  2584. src="../../assets/icon/checkNo.png"
  2585. alt
  2586. v-if="itemTool.tool.indexOf(50) == -1"
  2587. />
  2588. <div class="checkDiv" v-else>
  2589. <img
  2590. src="../../assets/icon/checkedIs.png"
  2591. alt
  2592. /><span>已选择</span>
  2593. </div>
  2594. </div>
  2595. </div>
  2596. </div>
  2597. </div>
  2598. </div>
  2599. </div>
  2600. </div>
  2601. <div class="elist_css">
  2602. <div class="elist_title">
  2603. <div
  2604. style="
  2605. display: flex;
  2606. flex-direction: row;
  2607. align-items: center;
  2608. margin-bottom: 20px;
  2609. "
  2610. >
  2611. <div class="lineTitle">评价设置</div>
  2612. <div class="line" style="width: 90%"></div>
  2613. </div>
  2614. </div>
  2615. <div class="mbCss">
  2616. <div class="pjCss">
  2617. <div
  2618. v-if="itemTask.eList && itemTask.eList.length"
  2619. class="elist_input"
  2620. >
  2621. <div
  2622. v-for="(eItem, eIndex) in itemTask.eList"
  2623. :key="eIndex"
  2624. class="elist_input_box"
  2625. >
  2626. <span>评价名称:</span>
  2627. <input
  2628. type="input"
  2629. v-model="itemTask.eList[eIndex].value"
  2630. placeholder="填写评价名称"
  2631. />
  2632. <span>评星等级:</span>
  2633. <el-rate
  2634. v-model="itemTask.eList[eIndex].score"
  2635. @change="setEListStar()"
  2636. disabled
  2637. ></el-rate>
  2638. <div
  2639. class="remove"
  2640. @click="
  2641. deletEList(unitIndex, itemTaskIndex, eIndex)
  2642. "
  2643. ></div>
  2644. <div class="elist_inptu_text">
  2645. <span>评价描述:</span>
  2646. <input
  2647. type="input"
  2648. v-model="itemTask.eList[eIndex].detail"
  2649. placeholder="填写评价描述"
  2650. />
  2651. </div>
  2652. <div class="elist_inptu_text" v-if="evalua">
  2653. <span>目标:</span>
  2654. <!-- <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写评价描述" /> -->
  2655. <!-- <el-select v-model="itemTask.eList[eIndex].target" placeholder="请选择目标"
  2656. @change="forceUpdate()">
  2657. <el-option v-for="(e, eIndex) in targetArray" :key="eIndex" :label="e.name"
  2658. :value="e.name">
  2659. </el-option>
  2660. </el-select> -->
  2661. <el-cascader
  2662. :options="targetArray"
  2663. v-model="itemTask.eList[eIndex].target"
  2664. :props="{ checkStrictly: true }"
  2665. :show-all-levels="false"
  2666. clearable
  2667. ></el-cascader>
  2668. </div>
  2669. </div>
  2670. </div>
  2671. <div
  2672. class="addToolFun"
  2673. @click="addEList(unitIndex, itemTaskIndex)"
  2674. style="margin: 35px 35px 0 0"
  2675. >
  2676. <div class="addToolImg">
  2677. <img src="../../assets/icon/add.png" alt />
  2678. </div>
  2679. <div>添加</div>
  2680. </div>
  2681. </div>
  2682. <div
  2683. v-if="evalua"
  2684. style="
  2685. border: 1px solid #e5e5e5;
  2686. width: 55%;
  2687. margin-top: 20px;
  2688. box-shadow: 3px 1px 15px 3px #e0e0e0;
  2689. "
  2690. class="evaCss"
  2691. >
  2692. <div class="e_add_top">
  2693. <div class="e_add_title">
  2694. <span>当前使用目标管理</span>
  2695. <span>{{ eTitle }}</span>
  2696. <img
  2697. src="../../assets/line.png"
  2698. class="cru_line"
  2699. style="
  2700. width: 125px;
  2701. height: 20px;
  2702. bottom: -10px;
  2703. left: 155px;
  2704. "
  2705. />
  2706. <!-- <el-input
  2707. v-model="eTitle"
  2708. placeholder="请输入名称"
  2709. @change="setMindData"
  2710. ></el-input>-->
  2711. </div>
  2712. </div>
  2713. <div class="e_add_content" style="width: 100%">
  2714. <div class="e_add_list_pbox" style="width: 100%">
  2715. <div class="e_add_list_pbox_title">
  2716. <span class="type_title">切换模式</span>
  2717. <div class="type_content">
  2718. <span
  2719. :class="{ active: typeMode == 1 }"
  2720. @click="OtherMb(1)"
  2721. >目标树</span
  2722. >
  2723. <span
  2724. :class="{ active: typeMode == 2 }"
  2725. @click="OtherMb(2)"
  2726. >目标罗盘</span
  2727. >
  2728. <span
  2729. :class="{ active: typeMode == 3 }"
  2730. @click="OtherMb(3)"
  2731. >目标看板</span
  2732. >
  2733. </div>
  2734. </div>
  2735. <div class="e_add_list_pbox_content">
  2736. <Mind
  2737. :showBar="false"
  2738. :mindData="data"
  2739. style="width: 100%"
  2740. :jsmindId="
  2741. unitIndex + '-' + itemTaskIndex + 'mind'
  2742. "
  2743. v-if="typeMode == 1"
  2744. ></Mind>
  2745. <Sunburst
  2746. :Josn="eJson"
  2747. :num="eJSONNum"
  2748. style="width: 100%"
  2749. v-if="typeMode == 2"
  2750. >
  2751. </Sunburst>
  2752. <SeeBoard
  2753. :Josn="eJson"
  2754. :num="eJSONNum"
  2755. :ename="eTitle"
  2756. style="width: 100%"
  2757. v-if="typeMode == 3"
  2758. ></SeeBoard>
  2759. </div>
  2760. </div>
  2761. </div>
  2762. </div>
  2763. </div>
  2764. </div>
  2765. <div class="funBlock" style="padding: 0">
  2766. <div class="fold" @click="fold(itemTaskIndex, $event, 1)">
  2767. <div>折叠</div>
  2768. <div class="arrow">
  2769. <img src="../../assets/icon/fold.png" alt />
  2770. </div>
  2771. </div>
  2772. <div class="fold" @click="fold(itemTaskIndex, $event, 0)">
  2773. <div>展开</div>
  2774. <div class="arrow">
  2775. <img src="../../assets/icon/expand.png" alt />
  2776. </div>
  2777. </div>
  2778. </div>
  2779. </div>
  2780. <div
  2781. class="addTaskBorder"
  2782. @click="addTaskBorder"
  2783. v-if="!unitJson[unitIndex].easy"
  2784. >
  2785. <div>
  2786. <img src="../../assets/icon/addHw.png" alt />
  2787. <span>添加任务</span>
  2788. </div>
  2789. </div>
  2790. </div>
  2791. </div>
  2792. </div>
  2793. <div
  2794. style="
  2795. width: calc(100% - 20px);
  2796. background: rgb(255, 255, 255);
  2797. border-radius: 10px;
  2798. "
  2799. v-if="this.steps == 4"
  2800. >
  2801. <div class="basic_box_success">
  2802. <div class="right_img">
  2803. <img src="../../assets/icon/right.png" alt />
  2804. </div>
  2805. <div style="font-weight: bold">成功</div>
  2806. <!-- <div>您的课程编号</div>
  2807. <div class="number">{{ number }}</div>-->
  2808. <!-- <div class="success_button">
  2809. <div class="look_course" @click="isNoFinsh">
  2810. 邀请老师协同编辑
  2811. </div>
  2812. <div class="attend_others" @click="goCourse">预览课程</div>
  2813. </div> -->
  2814. </div>
  2815. </div>
  2816. <div class="info_btnBox">
  2817. <button
  2818. class="info_btn"
  2819. v-if="steps == 1"
  2820. @click="
  2821. goTo('/course?userid=' + userid + '&oid=' + oid + '&org=' + org)
  2822. "
  2823. >
  2824. 返回课程
  2825. </button>
  2826. <button
  2827. class="info_btn"
  2828. v-if="steps > 1 && steps != 5"
  2829. @click="lastSteps"
  2830. >
  2831. {{ steps == 4 ? "返回首页" : "上一步" }}
  2832. </button>
  2833. <button class="info_btn" v-if="steps < 4" @click="nextSteps">
  2834. {{ steps == 3 ? "确认上传" : "下一步" }}
  2835. </button>
  2836. </div>
  2837. </div>
  2838. </div>
  2839. </div>
  2840. <el-dialog
  2841. title="提示"
  2842. :visible.sync="dialogVisible"
  2843. :append-to-body="true"
  2844. width="25%"
  2845. :before-close="handleClose"
  2846. class="dialog_diy2 customWidth"
  2847. >
  2848. <div>请复制该链接邀请协同编辑</div>
  2849. <div>http://www.boomyon.com/index-zhang.com</div>
  2850. <span slot="footer" class="dialog-footer">
  2851. <el-button type="primary">复制链接分享</el-button>
  2852. <el-button @click="dialogVisible = false">取消</el-button>
  2853. </span>
  2854. </el-dialog>
  2855. <el-dialog
  2856. :title="updateBoolean2 ? '查看文档' : '添加文档'"
  2857. :visible.sync="dialogVisible1"
  2858. :append-to-body="true"
  2859. width="25%"
  2860. :before-close="handleClose"
  2861. class="dialog_diy2 customWidth"
  2862. >
  2863. <el-form>
  2864. <el-form-item label="文档标题">
  2865. <el-input
  2866. v-model="tTitle"
  2867. auto-complete="off"
  2868. placeholder="请输入文档标题名..."
  2869. ></el-input>
  2870. </el-form-item>
  2871. <div>文档简介</div>
  2872. <editor-bar v-model="tdetail" @change="change"></editor-bar>
  2873. </el-form>
  2874. <span slot="footer" class="dialog-footer">
  2875. <el-button @click="dialogVisible1 = false">取 消</el-button>
  2876. <el-button type="primary" @click="addWord" v-if="!updateBoolean2"
  2877. >添加</el-button
  2878. >
  2879. <el-button type="primary" @click="upWord" v-else>修 改</el-button>
  2880. </span>
  2881. </el-dialog>
  2882. <el-dialog
  2883. title="添加文档"
  2884. :visible.sync="dialogVisible2"
  2885. :append-to-body="true"
  2886. width="500px"
  2887. :before-close="handleClose"
  2888. class="dialog_diy"
  2889. >
  2890. <el-form>
  2891. <el-form-item label="文档标题">
  2892. <el-input
  2893. v-model="templateC.title"
  2894. auto-complete="off"
  2895. placeholder="请输入文档标题名..."
  2896. ></el-input>
  2897. </el-form-item>
  2898. <div>文档内容</div>
  2899. <editor-bar v-model="cTemplate" @change="change"></editor-bar>
  2900. </el-form>
  2901. <span slot="footer" class="dialog-footer">
  2902. <el-button @click="clearChoose">取 消</el-button>
  2903. <el-button type="primary" @click="wordNext()">确定</el-button>
  2904. </span>
  2905. </el-dialog>
  2906. <el-dialog
  2907. title="添加富文本"
  2908. :visible.sync="dialogVisible6"
  2909. :append-to-body="true"
  2910. width="500px"
  2911. :before-close="handleClose"
  2912. class="dialog_diy"
  2913. >
  2914. <el-form>
  2915. <el-form-item label="文本标题">
  2916. <el-input
  2917. v-model="AttText.title"
  2918. auto-complete="off"
  2919. @input="change2"
  2920. placeholder="请输入文本标题..."
  2921. ></el-input>
  2922. </el-form-item>
  2923. <div>富文本内容</div>
  2924. <editor-bar v-model="AttText.text" @change="change"></editor-bar>
  2925. </el-form>
  2926. <span slot="footer" class="dialog-footer">
  2927. <el-button @click="clearAttText">取 消</el-button>
  2928. <el-button type="primary" @click="isAddOrUpdateAttText">确定</el-button>
  2929. </span>
  2930. </el-dialog>
  2931. <el-dialog
  2932. title="添加链接"
  2933. :visible.sync="dialogVisible7"
  2934. :append-to-body="true"
  2935. width="500px"
  2936. :before-close="handleClose"
  2937. class="dialog_diy lineCss"
  2938. >
  2939. <el-form>
  2940. <el-form-item label="标题" :label-width="formLabelWidth">
  2941. <span>
  2942. <el-input
  2943. placeholder="请输入链接标题"
  2944. clearable
  2945. v-model="lineTitle"
  2946. class="add_input"
  2947. ></el-input>
  2948. </span>
  2949. </el-form-item>
  2950. <el-form-item label="链接" :label-width="formLabelWidth">
  2951. <span>
  2952. <el-input
  2953. placeholder="请输入链接"
  2954. clearable
  2955. v-model="line"
  2956. class="add_input"
  2957. ></el-input>
  2958. </span>
  2959. </el-form-item>
  2960. </el-form>
  2961. <span slot="footer" class="dialog-footer">
  2962. <el-button @click="clearLine">取 消</el-button>
  2963. <el-button type="primary" @click="isAddOrUpdateLine">确定</el-button>
  2964. </span>
  2965. </el-dialog>
  2966. <el-dialog
  2967. title="添加课程成员"
  2968. :visible.sync="dialogVisible3"
  2969. :append-to-body="true"
  2970. width="25%"
  2971. height="80%"
  2972. :before-close="handleClose"
  2973. class="addNewPP customWidth"
  2974. >
  2975. <div class="people">
  2976. <div class="people_top">
  2977. <div class="people_nav">选择成员</div>
  2978. <div class="people_top_right">
  2979. <div class="people_search">
  2980. <el-input
  2981. style="height: 100%"
  2982. placeholder="搜索成员名称"
  2983. v-model="searchPeople"
  2984. ></el-input>
  2985. <div class="search_img" @click="searchStudent">
  2986. <img src="../../assets/icon/search.png" alt />
  2987. </div>
  2988. </div>
  2989. </div>
  2990. </div>
  2991. <el-checkbox-group v-model="checkboxList" class="people_name">
  2992. <el-checkbox
  2993. v-for="item in studentJuri"
  2994. :key="item.userid"
  2995. :label="item.userid"
  2996. >{{ item.name ? item.name : "暂无学生可选" }}</el-checkbox
  2997. >
  2998. </el-checkbox-group>
  2999. </div>
  3000. <span slot="footer" class="dialog-footer">
  3001. <el-button @click="dialogVisible3 = false">取 消</el-button>
  3002. <el-button type="primary" @click="isAddPP">确定</el-button>
  3003. </span>
  3004. </el-dialog>
  3005. <el-dialog
  3006. title="添加班级"
  3007. :visible.sync="dialogVisibleClass"
  3008. :append-to-body="true"
  3009. width="400px"
  3010. height="80%"
  3011. :before-close="handleClose"
  3012. class="addNewPP"
  3013. >
  3014. <div class="people" style="height: 300px">
  3015. <div class="people_top">
  3016. <div class="people_top_right">
  3017. <div class="people_search">
  3018. <el-input
  3019. placeholder="搜索班级名称"
  3020. v-model="classSearch"
  3021. @keyup.enter.native="getClass()"
  3022. ></el-input>
  3023. <div class="search_img" @click="getClass()">
  3024. <img src="../../assets/icon/search.png" alt />
  3025. </div>
  3026. </div>
  3027. </div>
  3028. <div class="people_nav">选择班级</div>
  3029. </div>
  3030. <el-checkbox-group v-model="checkboxList2" class="people_name">
  3031. <div v-for="(item, index) in grade2" :key="item.id">
  3032. <el-checkbox :label="item.id">
  3033. {{ item.name ? item.name : "暂无班级可选" }}
  3034. </el-checkbox>
  3035. <div>
  3036. <span>{{ index }}</span>
  3037. </div>
  3038. </div>
  3039. </el-checkbox-group>
  3040. </div>
  3041. <span slot="footer" class="dialog-footer">
  3042. <el-button @click="dialogVisibleClass = false">取 消</el-button>
  3043. <el-button type="primary" @click="isAddClass">确定</el-button>
  3044. </span>
  3045. </el-dialog>
  3046. <el-dialog
  3047. title="添加协同成员"
  3048. :visible.sync="dialogVisibleMember"
  3049. :append-to-body="true"
  3050. width="25%"
  3051. height="80%"
  3052. :before-close="handleClose"
  3053. class="addNewPP customWidth"
  3054. >
  3055. <div class="people">
  3056. <div class="people_top">
  3057. <div class="people_top_right">
  3058. <div class="people_search">
  3059. <el-input
  3060. placeholder="搜索成员名称"
  3061. v-model="searchTN"
  3062. @keyup.enter.native="getTeacher"
  3063. ></el-input>
  3064. <div class="search_img" @click="getTeacher">
  3065. <img src="../../assets/icon/search.png" alt />
  3066. </div>
  3067. </div>
  3068. </div>
  3069. <div class="people_nav">选择成员</div>
  3070. </div>
  3071. <el-checkbox-group
  3072. v-model="checkboxList3"
  3073. class="people_name"
  3074. v-if="teacherJuri.length"
  3075. >
  3076. <el-checkbox
  3077. v-for="item in teacherJuri"
  3078. :key="item.userid"
  3079. :label="item.userid"
  3080. >
  3081. <div class="t_j_box">
  3082. <el-tooltip
  3083. placement="top"
  3084. :content="item.name ? item.name : '暂无姓名'"
  3085. >
  3086. <span>{{ item.name ? item.name : "暂无姓名" }}</span>
  3087. </el-tooltip>
  3088. <el-tooltip placement="top" :content="item.username">
  3089. <span>{{ item.username }}</span>
  3090. </el-tooltip>
  3091. <el-tooltip placement="top" :content="item.school">
  3092. <span>{{ item.school }}</span>
  3093. </el-tooltip>
  3094. </div>
  3095. </el-checkbox>
  3096. </el-checkbox-group>
  3097. <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
  3098. </div>
  3099. <span slot="footer" class="dialog-footer">
  3100. <el-button @click="dialogVisibleMember = false">取 消</el-button>
  3101. <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
  3102. </span>
  3103. </el-dialog>
  3104. <el-dialog
  3105. title="创建问卷"
  3106. :visible.sync="dialogVisible5"
  3107. :append-to-body="true"
  3108. width="800px"
  3109. :before-close="handleClose"
  3110. class="dialog_diy"
  3111. >
  3112. <div>
  3113. <div
  3114. class="a_add_title"
  3115. style="
  3116. display: flex;
  3117. flex-direction: row;
  3118. align-items: center;
  3119. justify-content: center;
  3120. "
  3121. >
  3122. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  3123. <el-input
  3124. v-model="askJson.askTitle"
  3125. placeholder="请输入标题"
  3126. style="width: 400px"
  3127. ></el-input>
  3128. </div>
  3129. <div class="a_addBox">
  3130. <div style="font-size: 16px; color: #c7c7c7">请输入题目内容</div>
  3131. <div
  3132. class="a_add_box"
  3133. v-for="(item1, index1) in askJson.askCount"
  3134. :key="index1"
  3135. >
  3136. <div class="a_add_head">
  3137. <div>
  3138. {{ index1 + 1 + "、" }}
  3139. <el-input
  3140. class="a_add_head_input"
  3141. v-model="askJson.askJson[index1].askstitle"
  3142. placeholder="请输入题目..."
  3143. >
  3144. </el-input>
  3145. </div>
  3146. <div class="a_add_head_div">
  3147. <el-button type="primary" size="small" @click="addAskList()"
  3148. >添加</el-button
  3149. >
  3150. <el-button
  3151. type="primary"
  3152. size="small"
  3153. @click="deleteAskList(index1)"
  3154. v-if="askJson.askCount != 1"
  3155. >删除
  3156. </el-button>
  3157. </div>
  3158. </div>
  3159. <div class="a_add_body">
  3160. <div class="a_add_input">
  3161. <el-input
  3162. v-for="(item2, checkIndex) in askJson.askJson[index1].askItem"
  3163. :key="checkIndex"
  3164. v-model="askJson.askJson[index1].checkList[checkIndex]"
  3165. placeholder="请输入选项..."
  3166. style="width: 150px; margin: 10px 10px 0 0"
  3167. ></el-input>
  3168. </div>
  3169. <div class="a_add_body_div">
  3170. <el-button
  3171. style="margin: 10px 0px 0 0"
  3172. type="primary"
  3173. size="small"
  3174. @click="addcheckList(askJson.askJson[index1])"
  3175. >添加</el-button
  3176. >
  3177. <el-button
  3178. type="primary"
  3179. size="small"
  3180. style="margin: 10px 0 0 10px"
  3181. @click="deletecheckList(askJson.askJson[index1])"
  3182. v-if="askJson.askJson[index1].askItem != 1"
  3183. >删除
  3184. </el-button>
  3185. </div>
  3186. </div>
  3187. </div>
  3188. </div>
  3189. </div>
  3190. <span slot="footer" class="dialog-footer">
  3191. <el-button @click="dialogVisible5 = false">取 消</el-button>
  3192. <el-button type="primary" @click="addAsk">确 定</el-button>
  3193. </span>
  3194. </el-dialog>
  3195. <el-dialog
  3196. title="创建选择题"
  3197. :visible.sync="dialogVisibleChoice"
  3198. :append-to-body="true"
  3199. width="800px"
  3200. :before-close="handleClose"
  3201. class="dialog_diy"
  3202. >
  3203. <div>
  3204. <!-- <div class="a_add_title" style="
  3205. display: flex;
  3206. flex-direction: row;
  3207. align-items: center;
  3208. justify-content: center;
  3209. ">
  3210. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  3211. <el-input v-model="testJson.testTitle" placeholder="请输入标题" style="width: 400px"></el-input>
  3212. </div> -->
  3213. <div class="a_addBox">
  3214. <div style="font-size: 16px; color: #c7c7c7">请输入题目内容</div>
  3215. <div
  3216. class="a_add_box"
  3217. v-for="(item1, index1) in testJson.testCount"
  3218. :key="index1"
  3219. >
  3220. <div class="a_add_checkType">
  3221. <span
  3222. :class="{ active: testJson.testJson[index1].type == '1' }"
  3223. @click="checkTestType('1', testJson.testJson[index1])"
  3224. >单选题</span
  3225. >
  3226. <span
  3227. :class="{ active: testJson.testJson[index1].type == '2' }"
  3228. @click="checkTestType('2', testJson.testJson[index1])"
  3229. >多选题</span
  3230. >
  3231. </div>
  3232. <div class="a_add_head">
  3233. <div class="timuUpImg">
  3234. <div>
  3235. {{ index1 + 1 + "、" }}
  3236. <el-input
  3237. class="a_add_head_input"
  3238. v-model="testJson.testJson[index1].teststitle"
  3239. placeholder="请输入题目..."
  3240. >
  3241. </el-input>
  3242. </div>
  3243. <div class="xzUpImg" @click.stop="addImg($event)">
  3244. <img src="../../assets/icon/xzUpImg.png" alt="" />
  3245. <input
  3246. type="file"
  3247. accept="image/*"
  3248. style="display: none"
  3249. @change="beforeUploadTiMu($event, index1)"
  3250. />
  3251. </div>
  3252. </div>
  3253. <div class="a_add_head_div">
  3254. <el-button type="primary" size="small" @click="addTestList()"
  3255. >添加</el-button
  3256. >
  3257. <el-button
  3258. type="primary"
  3259. size="small"
  3260. @click="deleteTestList(index1)"
  3261. v-if="testJson.testCount != 1"
  3262. >删除
  3263. </el-button>
  3264. </div>
  3265. </div>
  3266. <div
  3267. class="timuImgBox"
  3268. v-if="
  3269. testJson.testJson[index1].timuList &&
  3270. testJson.testJson[index1].timuList.length
  3271. "
  3272. >
  3273. <div
  3274. v-for="(timg, tIndex) in testJson.testJson[index1].timuList"
  3275. :key="tIndex"
  3276. class="timuImg"
  3277. @click.stop="previewImg(timg.src)"
  3278. >
  3279. <img :src="timg.src" alt="" />
  3280. </div>
  3281. </div>
  3282. <div class="a_add_body">
  3283. <div class="a_add_input a_add_input_choice">
  3284. <el-radio-group
  3285. v-model="testJson.testJson[index1].answer"
  3286. v-if="testJson.testJson[index1].type == 1"
  3287. >
  3288. <div class="radioBox">
  3289. <el-radio
  3290. v-for="(item2, checkIndex) in testJson.testJson[index1]
  3291. .testItem"
  3292. :key="checkIndex"
  3293. :label="checkIndex"
  3294. >
  3295. <div style="margin-right: 10px">
  3296. 选项{{ checkIndex + 1 }}
  3297. </div>
  3298. <div
  3299. style="margin-right: 10px; width: 300px"
  3300. v-if="
  3301. testJson.testJson[index1].checkList[checkIndex] &&
  3302. testJson.testJson[index1].checkList[checkIndex]
  3303. .imgType &&
  3304. testJson.testJson[index1].checkList[checkIndex]
  3305. .imgType == 1
  3306. "
  3307. >
  3308. <div
  3309. class="inImg"
  3310. @click.stop="
  3311. previewImg(
  3312. testJson.testJson[index1].checkList[checkIndex]
  3313. .src
  3314. )
  3315. "
  3316. >
  3317. <el-image
  3318. :src="
  3319. testJson.testJson[index1].checkList[checkIndex]
  3320. .src
  3321. "
  3322. lazy
  3323. />
  3324. <!-- <img :src="
  3325. testJson.testJson[index1].checkList[checkIndex]
  3326. .src
  3327. " alt="" /> -->
  3328. </div>
  3329. </div>
  3330. <el-input
  3331. v-else
  3332. v-model="
  3333. testJson.testJson[index1].checkList[checkIndex]
  3334. "
  3335. placeholder="请输入选项..."
  3336. style="width: 300px; margin-right: 10px"
  3337. ></el-input>
  3338. <div class="xzUpImg" @click.stop="addImg($event)">
  3339. <img src="../../assets/icon/xzUpImg.png" alt="" />
  3340. <input
  3341. type="file"
  3342. accept="image/*"
  3343. style="display: none"
  3344. @change="beforeUploadTi($event, index1, checkIndex)"
  3345. />
  3346. </div>
  3347. </el-radio>
  3348. </div>
  3349. </el-radio-group>
  3350. <el-checkbox-group
  3351. v-model="testJson.testJson[index1].answer"
  3352. v-if="testJson.testJson[index1].type == '2'"
  3353. >
  3354. <div class="radioBox">
  3355. <el-checkbox
  3356. v-for="(item2, checkIndex1) in testJson.testJson[index1]
  3357. .testItem"
  3358. :key="checkIndex1"
  3359. :label="checkIndex1"
  3360. >
  3361. <div style="margin-right: 10px">
  3362. 选项{{ checkIndex1 + 1 }}
  3363. </div>
  3364. <div
  3365. style="margin-right: 10px; width: 300px"
  3366. v-if="
  3367. testJson.testJson[index1].checkList[checkIndex1] &&
  3368. testJson.testJson[index1].checkList[checkIndex1]
  3369. .imgType &&
  3370. testJson.testJson[index1].checkList[checkIndex1]
  3371. .imgType == 1
  3372. "
  3373. >
  3374. <div
  3375. class="inImg"
  3376. @click.stop="
  3377. previewImg(
  3378. testJson.testJson[index1].checkList[checkIndex1]
  3379. .src
  3380. )
  3381. "
  3382. >
  3383. <el-image
  3384. :src="
  3385. testJson.testJson[index1].checkList[checkIndex1]
  3386. .src
  3387. "
  3388. lazy
  3389. />
  3390. <!-- <img :src="
  3391. testJson.testJson[index1].checkList[checkIndex1]
  3392. .src
  3393. " alt="" /> -->
  3394. </div>
  3395. </div>
  3396. <el-input
  3397. v-else
  3398. v-model="
  3399. testJson.testJson[index1].checkList[checkIndex1]
  3400. "
  3401. placeholder="请输入选项..."
  3402. style="width: 300px; margin-right: 10px"
  3403. ></el-input>
  3404. <div class="xzUpImg" @click.stop="addImg($event)">
  3405. <img src="../../assets/icon/xzUpImg.png" alt="" />
  3406. <input
  3407. type="file"
  3408. accept="image/*"
  3409. style="display: none"
  3410. @change="beforeUploadTi($event, index1, checkIndex1)"
  3411. />
  3412. </div>
  3413. </el-checkbox>
  3414. </div>
  3415. </el-checkbox-group>
  3416. </div>
  3417. <div class="a_add_body_div" style="margin-bottom: 3px">
  3418. <el-button
  3419. type="primary"
  3420. size="small"
  3421. @click="addTcheckList(testJson.testJson[index1])"
  3422. >添加</el-button
  3423. >
  3424. <el-button
  3425. type="primary"
  3426. size="small"
  3427. @click="deleteTcheckList(testJson.testJson[index1])"
  3428. v-if="testJson.testJson[index1].testItem != 1"
  3429. >删除
  3430. </el-button>
  3431. </div>
  3432. </div>
  3433. </div>
  3434. </div>
  3435. </div>
  3436. <span slot="footer" class="dialog-footer">
  3437. <el-button @click="dialogVisibleChoice = false">取 消</el-button>
  3438. <el-button type="primary" @click="addTest">确 定</el-button>
  3439. </span>
  3440. </el-dialog>
  3441. <el-dialog
  3442. title="添加工具"
  3443. :visible.sync="dialogVisible4"
  3444. :append-to-body="true"
  3445. width="600px"
  3446. :before-close="handleClose"
  3447. class="dialog_diy addToolsDia"
  3448. >
  3449. <div class="toolChoose" style="padding: 0 0 0 30px">
  3450. <div class="tools">
  3451. <div
  3452. class="leftTools"
  3453. style="
  3454. width: 95%;
  3455. padding: 0 0 15px 0;
  3456. border-bottom: 1px solid #efefef;
  3457. margin-bottom: 15px;
  3458. "
  3459. v-for="(itemTools, itemToolsIndex) in chapTools"
  3460. :key="itemToolsIndex"
  3461. >
  3462. <div
  3463. style="
  3464. display: flex;
  3465. flex-direction: row;
  3466. align-items: baseline;
  3467. flex-wrap: nowrap;
  3468. justify-content: flex-start;
  3469. position: relative;
  3470. "
  3471. >
  3472. <div class="chooseWho">
  3473. <div
  3474. :class="chapToolsType == 0 ? 'isChooseActive' : ''"
  3475. @click="chapToolsType = 0"
  3476. >
  3477. 互动类
  3478. </div>
  3479. <div
  3480. :class="chapToolsType == 1 ? 'isChooseActive' : ''"
  3481. @click="chapToolsType = 1"
  3482. >
  3483. 思维类
  3484. </div>
  3485. <div
  3486. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  3487. @click="chapToolsType = 2"
  3488. >
  3489. 评价类
  3490. </div>
  3491. <div
  3492. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  3493. @click="chapToolsType = 2"
  3494. >
  3495. 其他
  3496. </div>
  3497. </div>
  3498. </div>
  3499. <div style="min-height: 163px">
  3500. <div class="toolSort" v-if="chapToolsType == 0">
  3501. <div class="tool">
  3502. <div class="whiteBIcon" @click="chapAddTools(8)">
  3503. <img
  3504. src="../../assets/icon/secondToolList/library.png"
  3505. alt
  3506. />
  3507. <div style="margin: 5px 0">素材库</div>
  3508. </div>
  3509. <div class="check" @click="chapAddTools(8)">
  3510. <img
  3511. src="../../assets/icon/checkNo.png"
  3512. alt
  3513. v-if="itemTools.tools.indexOf(8) == -1"
  3514. />
  3515. <div class="checkDiv" v-else>
  3516. <img src="../../assets/icon/checkedIs.png" alt /><span
  3517. >已选择</span
  3518. >
  3519. </div>
  3520. </div>
  3521. </div>
  3522. </div>
  3523. <div class="toolSort" v-if="chapToolsType == 1">
  3524. <div class="tool">
  3525. <div class="whiteBIcon" @click="chapAddTools(7)">
  3526. <img
  3527. src="../../assets/icon/secondToolList/mindNetwork.png"
  3528. alt
  3529. />
  3530. <div style="margin: 5px 0">思维网格</div>
  3531. </div>
  3532. <div class="check" @click="chapAddTools(7)">
  3533. <img
  3534. src="../../assets/icon/checkNo.png"
  3535. alt
  3536. v-if="itemTools.tools.indexOf(7) == -1"
  3537. />
  3538. <div class="checkDiv" v-else>
  3539. <img src="../../assets/icon/checkedIs.png" alt /><span
  3540. >已选择</span
  3541. >
  3542. </div>
  3543. </div>
  3544. </div>
  3545. <div class="tool">
  3546. <div class="whiteBIcon" @click="chapAddTools(1)">
  3547. <img
  3548. src="../../assets/icon/secondToolList/whiteBoard.png"
  3549. alt
  3550. />
  3551. <div style="margin: 5px 0">电子白板</div>
  3552. </div>
  3553. <div class="check" @click="chapAddTools(1)">
  3554. <img
  3555. src="../../assets/icon/checkNo.png"
  3556. alt
  3557. v-if="itemTools.tools.indexOf(1) == -1"
  3558. />
  3559. <div class="checkDiv" v-else>
  3560. <img src="../../assets/icon/checkedIs.png" alt /><span
  3561. >已选择</span
  3562. >
  3563. </div>
  3564. </div>
  3565. </div>
  3566. <div class="tool">
  3567. <div class="whiteBIcon" @click="chapAddTools(2)">
  3568. <img src="../../assets/icon/secondToolList/note.png" alt />
  3569. <div style="margin: 5px 0">便签</div>
  3570. </div>
  3571. <div class="check" @click="chapAddTools(2)">
  3572. <img
  3573. src="../../assets/icon/checkNo.png"
  3574. alt
  3575. v-if="itemTools.tools.indexOf(2) == -1"
  3576. />
  3577. <div class="checkDiv" v-else>
  3578. <img src="../../assets/icon/checkedIs.png" alt /><span
  3579. >已选择</span
  3580. >
  3581. </div>
  3582. </div>
  3583. </div>
  3584. <div class="tool">
  3585. <div class="whiteBIcon" @click="chapAddTools(6)">
  3586. <img src="../../assets/icon/secondToolList/doc.png" alt />
  3587. <div style="margin: 5px 0">协同文档</div>
  3588. </div>
  3589. <div class="check" @click="chapAddTools(6)">
  3590. <img
  3591. src="../../assets/icon/checkNo.png"
  3592. alt
  3593. v-if="itemTools.tools.indexOf(6) == -1"
  3594. />
  3595. <div class="checkDiv" v-else>
  3596. <img src="../../assets/icon/checkedIs.png" alt /><span
  3597. >已选择</span
  3598. >
  3599. </div>
  3600. </div>
  3601. </div>
  3602. <div class="tool">
  3603. <div class="whiteBIcon" @click="chapAddTools(3)">
  3604. <img
  3605. src="../../assets/icon/secondToolList/mindMapping.png"
  3606. alt
  3607. />
  3608. <div style="margin: 5px 0">思维导图</div>
  3609. </div>
  3610. <div class="check" @click="chapAddTools(3)">
  3611. <img
  3612. src="../../assets/icon/checkNo.png"
  3613. alt
  3614. v-if="itemTools.tools.indexOf(3) == -1"
  3615. />
  3616. <div class="checkDiv" v-else>
  3617. <img src="../../assets/icon/checkedIs.png" alt /><span
  3618. >已选择</span
  3619. >
  3620. </div>
  3621. </div>
  3622. </div>
  3623. <div class="tool">
  3624. <div class="whiteBIcon" @click="chapAddTools(31)">
  3625. <img
  3626. src="../../assets/icon/secondToolList/networkPanel.png"
  3627. alt
  3628. />
  3629. <div style="margin: 5px 0">数学画板</div>
  3630. </div>
  3631. <div class="check" @click="chapAddTools(31)">
  3632. <img
  3633. src="../../assets/icon/checkNo.png"
  3634. alt
  3635. v-if="itemTools.tools.indexOf(31) == -1"
  3636. />
  3637. <div class="checkDiv" v-else>
  3638. <img src="../../assets/icon/checkedIs.png" alt /><span
  3639. >已选择</span
  3640. >
  3641. </div>
  3642. </div>
  3643. </div>
  3644. </div>
  3645. <div class="toolSort" v-if="chapToolsType == 2">
  3646. <div class="tool">
  3647. <div class="whiteBIcon" @click="chapAddTools(5)">
  3648. <img src="../../assets/icon/thirdToolList/score.png" alt />
  3649. <div style="margin: 5px 0">量规评分</div>
  3650. </div>
  3651. <div class="check" @click="chapAddTools(5)">
  3652. <img
  3653. src="../../assets/icon/checkNo.png"
  3654. alt
  3655. v-if="itemTools.tools.indexOf(5) == -1"
  3656. />
  3657. <div class="checkDiv" v-else>
  3658. <img src="../../assets/icon/checkedIs.png" alt /><span
  3659. >已选择</span
  3660. >
  3661. </div>
  3662. </div>
  3663. </div>
  3664. <div class="tool">
  3665. <div
  3666. class="whiteBIcon"
  3667. @click="openTools(chapCount, 4, null)"
  3668. >
  3669. <img src="../../assets/icon/thirdToolList/ask.png" alt />
  3670. <div style="margin: 5px 0">问卷调查</div>
  3671. </div>
  3672. <div class="check" @click="chapAddTools(4)">
  3673. <img
  3674. src="../../assets/icon/checkNo.png"
  3675. alt
  3676. v-if="itemTools.tools.indexOf(4) == -1"
  3677. />
  3678. <div class="checkDiv" v-else>
  3679. <img src="../../assets/icon/checkedIs.png" alt /><span
  3680. >已选择</span
  3681. >
  3682. </div>
  3683. </div>
  3684. </div>
  3685. </div>
  3686. </div>
  3687. <div>
  3688. <input
  3689. type="text"
  3690. placeholder="添加工具描述"
  3691. class="binfo_input"
  3692. style="margin: 20px 0; width: 71.5% !important"
  3693. v-model="itemTools.toolDetail"
  3694. />
  3695. </div>
  3696. </div>
  3697. </div>
  3698. </div>
  3699. <span slot="footer" class="dialog-footer">
  3700. <el-button @click="dialogVisible4 = false">取 消</el-button>
  3701. <el-button type="primary" @click="addChaptersDataTools">确定</el-button>
  3702. </span>
  3703. </el-dialog>
  3704. <el-dialog
  3705. title="添加问答"
  3706. :visible.sync="dialogVisible8"
  3707. :append-to-body="true"
  3708. width="500px"
  3709. :before-close="handleClose"
  3710. class="dialog_diy"
  3711. >
  3712. <div>
  3713. <div
  3714. class="a_add_title"
  3715. style="
  3716. display: flex;
  3717. flex-direction: column;
  3718. align-items: flex-start;
  3719. justify-content: center;
  3720. "
  3721. >
  3722. <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
  3723. <el-input
  3724. v-model="answerQ"
  3725. placeholder="请输入您要问的问题"
  3726. ></el-input>
  3727. </div>
  3728. </div>
  3729. <span slot="footer" class="dialog-footer">
  3730. <el-button @click="dialogVisible8 = false">取 消</el-button>
  3731. <el-button type="primary" @click="addAnswer">确 定</el-button>
  3732. </span>
  3733. </el-dialog>
  3734. <el-dialog
  3735. title="添加问题"
  3736. :visible.sync="dialogVisibleMp3"
  3737. :append-to-body="true"
  3738. width="500px"
  3739. :before-close="handleClose"
  3740. class="dialog_diy"
  3741. >
  3742. <div>
  3743. <div
  3744. class="a_add_title"
  3745. style="
  3746. display: flex;
  3747. flex-direction: column;
  3748. align-items: flex-start;
  3749. justify-content: center;
  3750. "
  3751. >
  3752. <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
  3753. <el-input
  3754. v-model="answerQ"
  3755. placeholder="请输入您想要回答的问题"
  3756. ></el-input>
  3757. </div>
  3758. </div>
  3759. <span slot="footer" class="dialog-footer">
  3760. <el-button @click="dialogVisibleMp3 = false">取 消</el-button>
  3761. <el-button type="primary" @click="addMp3Answer">确 定</el-button>
  3762. </span>
  3763. </el-dialog>
  3764. <el-dialog
  3765. title="上传图片"
  3766. :visible.sync="choosePicVisible"
  3767. :append-to-body="true"
  3768. width="500px"
  3769. :before-close="handleClose"
  3770. class="dialog_diy"
  3771. >
  3772. <div>
  3773. <div class="fileCss" style="padding-top: 20px">
  3774. <div>
  3775. <button class="info_btn" @click="addImg($event)">
  3776. 选择本地文件
  3777. <input
  3778. type="file"
  3779. accept="image/*"
  3780. style="display: none"
  3781. @change="beforeUpload1"
  3782. />
  3783. </button>
  3784. </div>
  3785. <div>
  3786. <el-button
  3787. @click="getAllBanner"
  3788. v-if="isSysPic == false && cover.length == 0"
  3789. >选择系统文件</el-button
  3790. >
  3791. <div class="isSysPic" v-if="isSysPic == true && cover.length > 0">
  3792. <img :src="cover[0].url" alt="" />
  3793. <div class="deletePic" @click="deleteSysPic">
  3794. <img src="../../assets/icon/delete.png" alt="" />
  3795. </div>
  3796. </div>
  3797. </div>
  3798. </div>
  3799. <div class="fileCss">
  3800. <div>选择本地文件</div>
  3801. <div>选择系统文件</div>
  3802. </div>
  3803. </div>
  3804. <span slot="footer" class="dialog-footer">
  3805. <el-button @click="choosePicVisible = false">取 消</el-button>
  3806. <el-button type="primary" @click="choosePicVisible = false"
  3807. >确 定</el-button
  3808. >
  3809. </span>
  3810. </el-dialog>
  3811. <el-dialog
  3812. title="选择系统文件"
  3813. :visible.sync="sysPicVisible"
  3814. :append-to-body="true"
  3815. width="710px"
  3816. :before-close="handleClose"
  3817. class="dialog_diy"
  3818. >
  3819. <div class="cru_selectBox" style="margin: 0">
  3820. <div
  3821. @click="getChoosePic(1)"
  3822. class="cru_select"
  3823. :class="chooseType == 1 ? 'cru_selected' : ''"
  3824. >
  3825. 绘画
  3826. </div>
  3827. <div
  3828. @click="getChoosePic(2)"
  3829. class="cru_select"
  3830. :class="chooseType == 2 ? 'cru_selected' : ''"
  3831. >
  3832. 科技
  3833. </div>
  3834. <div
  3835. @click="getChoosePic(3)"
  3836. class="cru_select"
  3837. :class="chooseType == 3 ? 'cru_selected' : ''"
  3838. >
  3839. 人文
  3840. </div>
  3841. <div
  3842. @click="getChoosePic(4)"
  3843. class="cru_select"
  3844. :class="chooseType == 4 ? 'cru_selected' : ''"
  3845. >
  3846. 艺术
  3847. </div>
  3848. </div>
  3849. <div class="sysPicBox">
  3850. <div v-for="(sys, sysIndex) in sysPic" :key="sysIndex" class="sysPic">
  3851. <img :src="sys.poster" alt="" @click="chooseSysPic(sys.poster)" />
  3852. </div>
  3853. </div>
  3854. <span slot="footer" class="dialog-footer">
  3855. <el-button @click="sysPicVisible = false">取 消</el-button>
  3856. <el-button type="primary">确 定</el-button>
  3857. </span>
  3858. </el-dialog>
  3859. <el-dialog
  3860. title="选择填空"
  3861. :visible.sync="dialogVisibleSelect"
  3862. :append-to-body="true"
  3863. width="800px"
  3864. :before-close="handleClose"
  3865. class="dialog_diy dialog_diy3"
  3866. >
  3867. <div v-if="selectJson">
  3868. <div class="select_box1" v-if="selectSteps == 1">
  3869. <div class="select_box1_img">
  3870. <div class="select_box1_title">
  3871. <span>上传题目图片</span
  3872. ><span>提示:请将题目以图片的方式上传</span>
  3873. </div>
  3874. <div class="select_box1_add_img">
  3875. <div
  3876. class="uploadFm"
  3877. @click="addImg($event)"
  3878. v-if="!selectJson.url"
  3879. >
  3880. <input
  3881. type="file"
  3882. accept="image/*"
  3883. style="display: none"
  3884. @change="beforeUploadSelect"
  3885. />
  3886. <img src="../../assets/icon/addPoster.png" alt="" />
  3887. </div>
  3888. <div class="isSysPic" v-else>
  3889. <img :src="selectJson.url" alt="" />
  3890. <div class="deletePic" @click="deleteSelectPic">
  3891. <img src="../../assets/icon/delete.png" alt="" />
  3892. </div>
  3893. </div>
  3894. </div>
  3895. </div>
  3896. <div class="select_box1_select">
  3897. <div class="select_box1_title">
  3898. <span>添加选项</span><span>提示:请输入题目选项</span>
  3899. </div>
  3900. <div class="select_box1_select_box">
  3901. <el-input
  3902. v-for="(item2, checkIndex) in selectJson.select"
  3903. :key="checkIndex"
  3904. v-model="selectJson.select[checkIndex]"
  3905. placeholder="请输入选项..."
  3906. style="width: 150px; margin: 10px 10px 0 0"
  3907. ></el-input>
  3908. <div class="select_box1_select_box_add">
  3909. <el-button
  3910. style="margin: 10px 0px 0 0"
  3911. type="primary"
  3912. size="small"
  3913. @click="addSelectList(selectJson)"
  3914. >
  3915. 添加</el-button
  3916. >
  3917. <el-button
  3918. type="primary"
  3919. size="small"
  3920. style="margin: 10px 0 0 0"
  3921. @click="deleteSelectList(selectJson)"
  3922. v-if="selectJson.select && selectJson.select.length > 0"
  3923. >删除</el-button
  3924. >
  3925. </div>
  3926. </div>
  3927. </div>
  3928. </div>
  3929. <div v-if="selectSteps == 2">
  3930. <div class="select_box2">
  3931. <div class="select_box2_title">设置答案</div>
  3932. <div class="select_box2_box">
  3933. <div class="select_box2_img">
  3934. <img :src="selectJson.url" alt="" />
  3935. </div>
  3936. <div class="select_box2_answer">
  3937. <div class="select_answer_title">根据题目选择对应答案</div>
  3938. <div
  3939. class="select_box2_answer_box"
  3940. v-for="(item2, checkIndex) in selectJson.select"
  3941. :key="checkIndex"
  3942. >
  3943. <span>{{ checkIndex + 1 }}、</span>
  3944. <el-select
  3945. v-model="selectJson.answer[checkIndex]"
  3946. placeholder="请选择正确答案"
  3947. >
  3948. <el-option
  3949. v-for="(e, eIndex) in selectJson.select"
  3950. :key="eIndex"
  3951. :label="e"
  3952. :value="eIndex"
  3953. >
  3954. </el-option>
  3955. </el-select>
  3956. </div>
  3957. </div>
  3958. </div>
  3959. </div>
  3960. </div>
  3961. </div>
  3962. <span slot="footer" class="dialog-footer">
  3963. <el-button
  3964. type="primary"
  3965. @click="nextSelectSteps()"
  3966. v-if="selectSteps == 1"
  3967. >下一步</el-button
  3968. >
  3969. <el-button @click="selectSteps--" v-if="selectSteps == 2"
  3970. >上一步</el-button
  3971. >
  3972. <el-button
  3973. type="primary"
  3974. @click="addSelectAnswer"
  3975. v-if="selectSteps == 2"
  3976. >确 定</el-button
  3977. >
  3978. </span>
  3979. </el-dialog>
  3980. <el-dialog
  3981. title="添加评价"
  3982. :visible.sync="dialogVisibleRate"
  3983. :append-to-body="true"
  3984. width="650px"
  3985. :before-close="handleClose"
  3986. class="dialog_diy"
  3987. >
  3988. <div style="background: #fff; padding: 15px; box-sizing: border-box">
  3989. <div style="font-size: 18px; color: #a9a9a9">请输入个人评价指标:</div>
  3990. <div class="pjCss" style="width: 100%">
  3991. <div
  3992. v-if="rateJson.length"
  3993. class="elist_input"
  3994. style="height: 360px; overflow: auto"
  3995. >
  3996. <div
  3997. v-for="(eItem, eIndex) in rateJson"
  3998. :key="eIndex"
  3999. class="elist_input_box"
  4000. >
  4001. <span style="min-width: 100px; text-align: right"
  4002. >个人评价指标:</span
  4003. >
  4004. <input
  4005. type="input"
  4006. v-model="eItem.value"
  4007. placeholder="填写评价名称"
  4008. />
  4009. <div class="remove" @click="deletRateList(eIndex)"></div>
  4010. <div style="width: 100%; display: flex">
  4011. <span style="min-width: 100px; text-align: right"
  4012. >评星等级:</span
  4013. >
  4014. <el-rate v-model="eItem.score" disabled></el-rate>
  4015. </div>
  4016. <div class="elist_inptu_text" style="align-items: flex-start">
  4017. <span style="min-width: 100px; text-align: right">描述:</span>
  4018. <textarea
  4019. class="rate_textarea"
  4020. :rows="3"
  4021. v-model="eItem.detail"
  4022. placeholder="填写评价描述"
  4023. ></textarea>
  4024. </div>
  4025. </div>
  4026. </div>
  4027. <div class="addToolFun" @click="addRateList()">
  4028. <div class="addToolImg">
  4029. <img src="../../assets/icon/add.png" alt />
  4030. </div>
  4031. <div>添加</div>
  4032. </div>
  4033. </div>
  4034. </div>
  4035. <span slot="footer" class="dialog-footer">
  4036. <el-button @click="dialogVisibleRate = false">取 消</el-button>
  4037. <el-button type="primary" @click="addRateAnswer">确 定</el-button>
  4038. </span>
  4039. </el-dialog>
  4040. <el-dialog
  4041. title="连词成句设置"
  4042. :visible.sync="dialogVisibleSentence"
  4043. :append-to-body="true"
  4044. width="1000px"
  4045. :before-close="handleClose"
  4046. class="dialog_diy dialog_diy3"
  4047. >
  4048. <div>
  4049. <div class="sentenBox">
  4050. <div class="addSen" @click="addSt">添加题目</div>
  4051. <div
  4052. v-for="(st, stIndex) in sentenceList"
  4053. :key="stIndex"
  4054. style="padding-bottom: 20px"
  4055. >
  4056. <div class="sentenTopBox">
  4057. <div class="sentenTop">
  4058. <div>题目设置</div>
  4059. <div>
  4060. <el-input
  4061. placeholder="请输入卡片内容"
  4062. v-model="st.sentenceTitle"
  4063. ></el-input>
  4064. </div>
  4065. <div @click="addSen(stIndex)">添加</div>
  4066. </div>
  4067. <div
  4068. class="remove1"
  4069. v-if="sentenceList.length > 1"
  4070. @click="deleteSentence(stIndex)"
  4071. ></div>
  4072. </div>
  4073. <div class="cardList">
  4074. <div v-if="st.addSentence.length > 0" class="cardBox">
  4075. <div
  4076. class="isCard"
  4077. v-for="(s, sIndex) in st.addSentence"
  4078. :key="sIndex"
  4079. @click="setRightAnswer(s, stIndex, sIndex)"
  4080. >
  4081. <el-tooltip
  4082. class="item"
  4083. effect="light"
  4084. :content="s"
  4085. placement="top"
  4086. >
  4087. <div>{{ s }}</div>
  4088. </el-tooltip>
  4089. <div
  4090. class="deleteWord"
  4091. @click.stop="deleteS(s, stIndex, sIndex)"
  4092. >
  4093. <img src="../../assets/icon/delete.png" alt="" />
  4094. </div>
  4095. </div>
  4096. </div>
  4097. <div class="card">
  4098. <img src="../../assets/icon/conSentences/noTitle.png" alt="" />
  4099. </div>
  4100. </div>
  4101. <div class="rightCardBox">
  4102. <div>正确顺序</div>
  4103. <div class="rightCardList">
  4104. <div v-if="st.rightAnswer.length > 0" class="cardBox">
  4105. <div
  4106. v-for="(r, rIndex) in st.rightAnswer"
  4107. :key="rIndex"
  4108. class="cardCss"
  4109. >
  4110. <div
  4111. class="isCard1"
  4112. @click="returnCard(r, stIndex, rIndex)"
  4113. >
  4114. <el-tooltip
  4115. class="item"
  4116. effect="light"
  4117. :content="r"
  4118. placement="top"
  4119. >
  4120. <div>{{ r }}</div>
  4121. </el-tooltip>
  4122. </div>
  4123. <div>{{ rIndex + 1 }}</div>
  4124. </div>
  4125. </div>
  4126. <div class="card" v-if="st.rightAnswer.length == 0">
  4127. <img
  4128. src="../../assets/icon/conSentences/noAnswer.png"
  4129. alt=""
  4130. />
  4131. </div>
  4132. </div>
  4133. </div>
  4134. </div>
  4135. </div>
  4136. </div>
  4137. <span slot="footer" class="dialog-footer">
  4138. <el-button @click="dialogVisibleSentence = false">取 消</el-button>
  4139. <el-button type="primary" @click="addSentenceTool">确 定</el-button>
  4140. </span>
  4141. </el-dialog>
  4142. <el-dialog
  4143. title="添加表格"
  4144. :visible.sync="dialogVisibleTable"
  4145. :append-to-body="true"
  4146. width="95%"
  4147. :before-close="handleClose"
  4148. class="dialog_diy"
  4149. >
  4150. <el-form>
  4151. <!-- <el-form-item label="文本标题">
  4152. <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
  4153. </el-form-item> -->
  4154. <div>表格内容</div>
  4155. <Table v-model="tableJson.text" @change="change"></Table>
  4156. </el-form>
  4157. <span slot="footer" class="dialog-footer">
  4158. <el-button @click="dialogVisibleTable = false">取 消</el-button>
  4159. <el-button type="primary" @click="addTableJson">确定</el-button>
  4160. </span>
  4161. </el-dialog>
  4162. <el-dialog
  4163. title="添加文档"
  4164. :visible.sync="dialogVisibleWord"
  4165. :append-to-body="true"
  4166. width="800px"
  4167. :before-close="handleClose"
  4168. class="dialog_diy"
  4169. >
  4170. <el-form>
  4171. <!-- <el-form-item label="文本标题">
  4172. <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
  4173. </el-form-item> -->
  4174. <div>文档内容</div>
  4175. <editor-bar v-model="wordJson.text"></editor-bar>
  4176. </el-form>
  4177. <span slot="footer" class="dialog-footer">
  4178. <el-button @click="dialogVisibleWord = false">取 消</el-button>
  4179. <el-button type="primary" @click="addWordJson">确定</el-button>
  4180. </span>
  4181. </el-dialog>
  4182. <el-dialog
  4183. title="添加班级"
  4184. :visible.sync="dialogVisibleMoreUpload"
  4185. :append-to-body="true"
  4186. width="30%"
  4187. :before-close="handleClose"
  4188. class="dialog_diy"
  4189. >
  4190. <div
  4191. style="
  4192. width: 100%;
  4193. display: flex;
  4194. flex-direction: row;
  4195. flex-wrap: nowrap;
  4196. align-items: center;
  4197. justify-content: center;
  4198. "
  4199. >
  4200. <div>班级:</div>
  4201. <el-select multiple v-model="uploadJson" placeholder="请选择">
  4202. <el-option
  4203. v-for="item in classJuri"
  4204. :key="item.id"
  4205. :label="item.name"
  4206. :value="item.id"
  4207. >
  4208. </el-option>
  4209. </el-select>
  4210. </div>
  4211. <span slot="footer" class="dialog-footer">
  4212. <el-button @click="dialogVisibleMoreUpload = false">取 消</el-button>
  4213. <el-button type="primary" @click="addMoreUpload">确定</el-button>
  4214. </span>
  4215. </el-dialog>
  4216. <el-dialog
  4217. title="添加预设时间"
  4218. :visible.sync="dialogVisiblePreTime"
  4219. :append-to-body="true"
  4220. width="30%"
  4221. :before-close="handleClose"
  4222. class="dialog_diy"
  4223. >
  4224. <div>
  4225. <Time
  4226. :preTime="preTime"
  4227. @updateTimeNum="updateTime"
  4228. v-if="dialogVisiblePreTime"
  4229. ></Time>
  4230. </div>
  4231. <span slot="footer" class="dialog-footer">
  4232. <el-button @click="dialogVisiblePreTime = false">取 消</el-button>
  4233. <el-button type="primary" @click="addPreTime">确定</el-button>
  4234. </span>
  4235. </el-dialog>
  4236. <el-dialog
  4237. title="分组设置"
  4238. :visible.sync="dialogVisibleGroup"
  4239. :append-to-body="true"
  4240. width="650px"
  4241. :before-close="handleClose"
  4242. class="dialog_diy"
  4243. >
  4244. <div class="groupBox">
  4245. <div v-if="groupJson.group" class="groupContent">
  4246. <div class="groupTitle">请设置小组数量</div>
  4247. <div
  4248. v-for="(item, index) in groupJson.group"
  4249. :key="index"
  4250. class="groupName"
  4251. >
  4252. <span class="groupn">组{{ index + 1 }}名称:</span>
  4253. <el-input
  4254. v-model="item.name"
  4255. placeholder="请输入名称..."
  4256. style="width: 250px"
  4257. ></el-input>
  4258. <div class="groupBtn">
  4259. <el-button type="primary" size="small" @click="addGroup(index)">
  4260. 添加</el-button
  4261. >
  4262. <el-button
  4263. type="primary"
  4264. size="small"
  4265. @click="deleteGroup(index)"
  4266. v-if="groupJson.group && groupJson.group.length > 1"
  4267. >删除</el-button
  4268. >
  4269. </div>
  4270. </div>
  4271. </div>
  4272. <div class="groupContent">
  4273. <div class="groupTitle">请设置每组人数数量</div>
  4274. <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
  4275. style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
  4276. <el-input-number
  4277. v-model="groupJson.number"
  4278. :controls="false"
  4279. :min="2"
  4280. :max="10"
  4281. placeholder="2-10人以内"
  4282. ></el-input-number>
  4283. </div>
  4284. </div>
  4285. <span slot="footer" class="dialog-footer">
  4286. <el-button @click="dialogVisibleGroup = false">取 消</el-button>
  4287. <el-button type="primary" @click="addGroupJson">确定</el-button>
  4288. </span>
  4289. </el-dialog>
  4290. </div>
  4291. </template>
  4292. <script>
  4293. import "../../common/aws-sdk-2.235.1.min.js";
  4294. // import "../../common/aws-sdk-2.99.0.min.js";
  4295. import $ from "jquery";
  4296. import EditorBar from "../../components/tools/wangEnduit";
  4297. import Table from "../../components/tools/table";
  4298. import Mind from "../tools/jsmind2";
  4299. import Time from "../tools/time.vue";
  4300. import Sunburst from "../tools/sunburst";
  4301. import SeeBoard from "../tools/seeBoard";
  4302. export default {
  4303. components: { EditorBar, Mind, Time, Sunburst, SeeBoard, Table },
  4304. data() {
  4305. return {
  4306. checkAll: false,
  4307. chooseType: 1,
  4308. checkedCities: [],
  4309. isIndeterminate: true,
  4310. isSysPic: false,
  4311. steps: 1,
  4312. nbOrder: 0,
  4313. courseId: "",
  4314. chapToolsType: 0,
  4315. chapTools: [
  4316. {
  4317. tools: [],
  4318. toolDetail: "",
  4319. },
  4320. ],
  4321. line: "",
  4322. lineTitle: "",
  4323. sysPic: [],
  4324. sentenceList: [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }],
  4325. isPushTitleList: [],
  4326. lineCount: 0,
  4327. lineType: 0,
  4328. chapCount: 0,
  4329. courseName: "",
  4330. isTeacherSee: true,
  4331. courseText: "",
  4332. preTime: 0,
  4333. formLabelWidth: "100px",
  4334. choosePicVisible: false,
  4335. sysPicVisible: false,
  4336. uploadLoading1: false,
  4337. noneBtnImg: false,
  4338. updateBoolean2: false,
  4339. unitIndex: 0,
  4340. taskCount: 0,
  4341. dialogVisible: false,
  4342. dialogVisible1: false,
  4343. dialogVisible2: false,
  4344. dialogVisible3: false,
  4345. dialogVisible4: false,
  4346. dialogVisible5: false,
  4347. dialogVisible6: false,
  4348. dialogVisible7: false,
  4349. dialogVisible8: false,
  4350. dialogVisible9: false,
  4351. dialogVisibleClass: false,
  4352. dialogVisibleMember: false,
  4353. dialogVisibleMp3: false,
  4354. dialogVisibleSelect: false,
  4355. dialogVisibleSentence: false,
  4356. dialogVisibleRate: false,
  4357. dialogVisibleChoice: false,
  4358. isClickColor: 0,
  4359. publicTool: 0,
  4360. searchPeople: "",
  4361. searchTN: "",
  4362. userid: this.$route.query.userid,
  4363. oid: this.$route.query.oid,
  4364. org: this.$route.query.org,
  4365. cid: this.$route.query.cid != undefined ? this.$route.query.cid : "",
  4366. dialogVisibleTable: false,
  4367. dialogVisibleWord: false,
  4368. tableJson: { text: "" },
  4369. wordJson: { text: "" },
  4370. dialogVisibleMoreUpload: false,
  4371. dialogVisiblePreTime: false,
  4372. uploadJson: [],
  4373. classJuri: [],
  4374. cover: [], //课程封面
  4375. myWord: [],
  4376. evaJuri: [],
  4377. evalua: "",
  4378. targetArray: [],
  4379. eTitle: "",
  4380. eJson: {},
  4381. fid: "", //一级
  4382. sid: "", //二级
  4383. tid: "", //二级
  4384. typeMode: 1,
  4385. eJSONNum: 0,
  4386. data: {
  4387. meta: {
  4388. name: "example",
  4389. author: "dd@163.com",
  4390. version: "0.2",
  4391. },
  4392. format: "node_array",
  4393. data: [{ id: "root", isroot: true, topic: "" }],
  4394. },
  4395. askJson: {
  4396. askCount: 1,
  4397. askTitle: "",
  4398. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  4399. },
  4400. testJson: {},
  4401. selectJson: {},
  4402. rateJson: [],
  4403. unitJson2: [],
  4404. unitJson: [
  4405. {
  4406. dyName: "", //单元标题
  4407. chapterInfo: [
  4408. {
  4409. isread: false,
  4410. chapterid: this.guid(),
  4411. title: "",
  4412. courseName: "",
  4413. taskJson: [
  4414. {
  4415. task: "",
  4416. taskDetail: "",
  4417. chapterData: [],
  4418. toolText: "",
  4419. toolChoose: [
  4420. {
  4421. tool: [],
  4422. toolDetail: "",
  4423. toolType: 0,
  4424. askCount: 1,
  4425. askTitle: "",
  4426. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  4427. },
  4428. ],
  4429. isShowTools: false,
  4430. askCount: 1,
  4431. isFold: 0,
  4432. askTitle: "",
  4433. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  4434. checkJson: [{ checkCount: [], checkPerent: [] }],
  4435. homeworkList: [],
  4436. },
  4437. ],
  4438. itemCount: 1,
  4439. fileList1: [],
  4440. video: [],
  4441. testData: [],
  4442. pData: [],
  4443. templateArray: [],
  4444. },
  4445. ],
  4446. },
  4447. ],
  4448. studentJuri: [],
  4449. teacherJuri: [],
  4450. checkboxList: [],
  4451. checkboxList2: [],
  4452. checkboxList3: [],
  4453. classSearch: "",
  4454. number: "",
  4455. tTitle: "",
  4456. tdetail: "",
  4457. templateC: {},
  4458. AttText: {},
  4459. AttTextType: 0,
  4460. AttTextIndex: 0,
  4461. cTemplate: "",
  4462. CourseType: [],
  4463. CourseTypeJson: {},
  4464. courseTypeId: [],
  4465. courseTypeSon: [],
  4466. clearArray: [],
  4467. loading: false,
  4468. toolType: 0,
  4469. inputShow: true,
  4470. inputShow2: true,
  4471. toolIndex: 0,
  4472. cidType: 0,
  4473. answerQ: "",
  4474. grade: [],
  4475. grade2: [],
  4476. courseUserid: "",
  4477. timer: null,
  4478. timer2: null,
  4479. checkId: "",
  4480. isDelete: 1,
  4481. addindex: 0,
  4482. selectSteps: 1,
  4483. groupJson: {},
  4484. dialogVisibleGroup: false,
  4485. rightBoxHeight: 0,
  4486. ManAarray: [],
  4487. };
  4488. },
  4489. computed: {
  4490. // rightBoxHeight: function () {
  4491. // return $(".rightBox")[0] ? $(".rightBox")[0].scrollHeight : 1000
  4492. // },
  4493. offsetLetfPx: function () {
  4494. //addnum可以直接在模板语法里面用,相当于data内的值
  4495. return (
  4496. $(".cru_select")[this.unitIndex] &&
  4497. $(".cru_select")[this.unitIndex].offsetLeft
  4498. );
  4499. },
  4500. getMan2() {
  4501. return function (people) {
  4502. let _people = people;
  4503. let _people2 = "";
  4504. if (this.ManAarray.length) {
  4505. for (var i = 0; i < this.ManAarray.length; i++) {
  4506. if (this.ManAarray[i].userid == people) {
  4507. _people2 = this.ManAarray[i].name;
  4508. break;
  4509. }
  4510. }
  4511. }
  4512. if (people == this.courseUserid) {
  4513. return "";
  4514. }
  4515. return this.ManAarray.length ? _people2 : "";
  4516. };
  4517. },
  4518. getClassC() {
  4519. return function (c) {
  4520. let _c2 = "";
  4521. if (this.grade.length) {
  4522. for (var i = 0; i < this.grade.length; i++) {
  4523. if (this.grade[i].id == c) {
  4524. _c2 = this.grade[i].name;
  4525. break;
  4526. }
  4527. }
  4528. }
  4529. return this.grade.length ? _c2 : "";
  4530. };
  4531. },
  4532. },
  4533. watch: {
  4534. unitIndex(newValue, oldValue) {
  4535. if (this.isDelete == 2) {
  4536. this.isDelete = 1;
  4537. return;
  4538. }
  4539. if (this.cid != "") {
  4540. let _unitIndex = oldValue;
  4541. if (
  4542. JSON.stringify(this.unitJson2[_unitIndex]) ==
  4543. JSON.stringify(this.unitJson[_unitIndex])
  4544. ) {
  4545. this.$refs.rightboxR.scrollTop = 0;
  4546. return;
  4547. }
  4548. let cPan = 1;
  4549. for (
  4550. var j = 0;
  4551. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  4552. j++
  4553. ) {
  4554. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  4555. j
  4556. ].proVisible = false;
  4557. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  4558. j
  4559. ].proVisible2 = false;
  4560. if (
  4561. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  4562. .length > 1
  4563. ) {
  4564. for (
  4565. var z = 0;
  4566. z <
  4567. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  4568. .length;
  4569. z++
  4570. ) {
  4571. if (
  4572. !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j]
  4573. .toolChoose[z].tool.length
  4574. ) {
  4575. this.$message.error("请把工具添加完整");
  4576. cPan = 2;
  4577. break;
  4578. }
  4579. }
  4580. }
  4581. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  4582. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  4583. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  4584. (ele) => {
  4585. return ele.value != "";
  4586. }
  4587. );
  4588. }
  4589. }
  4590. if (cPan == 2) {
  4591. this.unitIndex = oldValue;
  4592. return;
  4593. }
  4594. for (var i = 0; i < this.unitJson.length; i++) {
  4595. if (this.addindex != i) {
  4596. delete this.unitJson[i].isUpdate;
  4597. }
  4598. }
  4599. this.$refs.rightboxR.scrollTop = 0;
  4600. this.addindex = -1;
  4601. let params = [
  4602. {
  4603. cid: this.cid,
  4604. chapters: JSON.stringify(this.unitJson),
  4605. uid: this.userid,
  4606. unitIndex: _unitIndex,
  4607. },
  4608. ];
  4609. this.ajax
  4610. .post(this.$store.state.api + "updateWorkNew4", params)
  4611. .then((res) => {
  4612. // this.$message({
  4613. // message: "修改成功",
  4614. // type: "success",
  4615. // });
  4616. // this.courseId = this.cid;
  4617. })
  4618. .catch((err) => {
  4619. this.$message.error("网络不佳");
  4620. console.error(err);
  4621. });
  4622. }
  4623. },
  4624. },
  4625. methods: {
  4626. setMan() {
  4627. // let teacherJuri = this.teacherJuri2;
  4628. this.ManAarray = [];
  4629. if (this.checkboxList3.indexOf(this.courseUserid || this.userid) == -1) {
  4630. this.checkboxList3.push(this.courseUserid || this.userid);
  4631. }
  4632. let params = {
  4633. uid: this.checkboxList3.join(","),
  4634. };
  4635. this.ajax
  4636. .get(this.$store.state.api + "getAllUserById", params)
  4637. .then((res) => {
  4638. let teacherJuri = res.data[0];
  4639. this.ManAarray = teacherJuri;
  4640. })
  4641. .catch((err) => {
  4642. console.error(err);
  4643. });
  4644. },
  4645. previewImg(url) {
  4646. this.$hevueImgPreview(url);
  4647. },
  4648. scrollChange() {
  4649. this.rightBoxHeight = $(".rightBox")[0].scrollHeight;
  4650. },
  4651. handleCheckAllChange(val) {
  4652. this.checkedCities = val ? cityOptions : [];
  4653. this.isIndeterminate = false;
  4654. },
  4655. handleCheckedCitiesChange(value) {
  4656. let checkedCount = value.length;
  4657. this.checkAll = checkedCount === this.cities.length;
  4658. this.isIndeterminate =
  4659. checkedCount > 0 && checkedCount < this.cities.length;
  4660. },
  4661. addHw(e) {
  4662. var el = e.currentTarget;
  4663. el.getElementsByTagName("input")[0].click();
  4664. },
  4665. change(val) {
  4666. console.log(val);
  4667. },
  4668. change2(val) {
  4669. console.log(val);
  4670. this.$forceUpdate();
  4671. },
  4672. handleClose(done) {
  4673. done();
  4674. },
  4675. imgChange2(i, j) {
  4676. var _tmp = this.testJson.testJson[i].checkList[j];
  4677. this.noneBtnImg = _tmp.length >= 1;
  4678. },
  4679. imgChange3(i) {
  4680. var _tmp = this.testJson.testJson[i];
  4681. this.noneBtnImg = _tmp.length >= 1;
  4682. },
  4683. imgChange1(file, fileList, type, itemTaskIndex) {
  4684. if (type == 1) {
  4685. var _tmp = this.cover;
  4686. } else if (
  4687. type == 2 ||
  4688. type == 3 ||
  4689. type == 6 ||
  4690. type == 7 ||
  4691. type == 8
  4692. ) {
  4693. var _tmp =
  4694. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4695. .chapterData;
  4696. } else if (type == 4) {
  4697. var _tmp = this.unitJson[this.unitIndex].chapterInfo[0].fileList1;
  4698. } else {
  4699. var _tmp =
  4700. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4701. .homeworkList;
  4702. }
  4703. this.noneBtnImg = _tmp.length >= 1;
  4704. },
  4705. goTo(path) {
  4706. this.$router.push(path);
  4707. },
  4708. guid() {
  4709. var _num,
  4710. i,
  4711. _guid = "";
  4712. for (i = 0; i < 32; i++) {
  4713. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  4714. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  4715. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  4716. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  4717. _guid += "-";
  4718. }
  4719. }
  4720. return _guid;
  4721. },
  4722. lastSteps() {
  4723. if (this.steps == 4) {
  4724. this.goTo(
  4725. "/course?userid=" +
  4726. this.userid +
  4727. "&oid=" +
  4728. this.oid +
  4729. "&org=" +
  4730. this.org
  4731. );
  4732. } else {
  4733. if (this.cidType == 0) {
  4734. this.steps--;
  4735. if (this.steps == 1) {
  4736. setTimeout(() => {
  4737. this.checkEva(this.checkId);
  4738. }, 0);
  4739. }
  4740. } else {
  4741. if (this.steps == 3) {
  4742. this.steps = 1;
  4743. setTimeout(() => {
  4744. this.checkEva(this.checkId);
  4745. }, 0);
  4746. }
  4747. }
  4748. }
  4749. },
  4750. navSteps(s) {
  4751. if (this.courseName == "") {
  4752. this.$message.error("请将信息填写完整");
  4753. return;
  4754. }
  4755. if (this.cidType == 0) {
  4756. if (this.steps == 1) {
  4757. if (this.cid == "" || this.cid == undefined) {
  4758. this.addWork();
  4759. } else {
  4760. if (this.userid != this.courseUserid) {
  4761. // this.updateWork2();
  4762. } else {
  4763. this.updateWork();
  4764. }
  4765. }
  4766. }
  4767. if (s == 1) {
  4768. this.steps = 1;
  4769. setTimeout(() => {
  4770. this.checkEva(this.checkId);
  4771. }, 0);
  4772. }
  4773. if (s == 2) {
  4774. this.steps = 2;
  4775. }
  4776. if (s == 3) {
  4777. this.cTemplate = this.templateC.content;
  4778. this.dialogVisible2 = false;
  4779. this.steps = 3;
  4780. setTimeout(() => {
  4781. this.checkEva(this.checkId);
  4782. }, 1000);
  4783. }
  4784. } else {
  4785. if (this.steps == 1) {
  4786. if (this.cid == "" || this.cid == undefined) {
  4787. this.addWork();
  4788. } else {
  4789. if (this.userid != this.courseUserid) {
  4790. // this.updateWork2();
  4791. } else {
  4792. this.updateWork();
  4793. }
  4794. }
  4795. }
  4796. if (s == 1) {
  4797. this.steps = 1;
  4798. setTimeout(() => {
  4799. this.checkEva(this.checkId);
  4800. }, 0);
  4801. }
  4802. if (s == 3) {
  4803. this.cTemplate = this.templateC.content;
  4804. this.dialogVisible2 = false;
  4805. this.steps = 3;
  4806. setTimeout(() => {
  4807. this.checkEva(this.checkId);
  4808. }, 1000);
  4809. }
  4810. }
  4811. this.$refs.stepBox.scrollTop = 0;
  4812. },
  4813. nextSteps() {
  4814. if (this.cidType == 1) {
  4815. if (this.steps == 1) {
  4816. if (this.courseName != "") {
  4817. this.steps = 3;
  4818. setTimeout(() => {
  4819. this.checkEva(this.checkId);
  4820. }, 1000);
  4821. if (this.cid == "" || this.cid == undefined) {
  4822. this.addWork();
  4823. } else {
  4824. if (this.userid != this.courseUserid) {
  4825. // this.updateWork2();
  4826. } else {
  4827. this.updateWork();
  4828. }
  4829. }
  4830. } else {
  4831. this.$message.error("请将信息填写完整");
  4832. return;
  4833. }
  4834. } else if (this.steps == 3) {
  4835. if (this.cid == "" || this.cid == undefined) {
  4836. if (this.courseName == "") {
  4837. this.$message.error("请将信息填写完整");
  4838. return;
  4839. } else {
  4840. this.addWork();
  4841. this.steps++;
  4842. }
  4843. } else {
  4844. if (this.courseName == "") {
  4845. this.$message.error("请将信息填写完整");
  4846. return;
  4847. } else {
  4848. if (this.userid != this.courseUserid) {
  4849. this.updateWork2();
  4850. } else {
  4851. this.updateWork();
  4852. }
  4853. this.steps++;
  4854. }
  4855. }
  4856. }
  4857. } else {
  4858. if (this.steps == 1) {
  4859. if (this.courseName != "") {
  4860. if (this.cid == "" || this.cid == undefined) {
  4861. this.addWork();
  4862. } else {
  4863. if (this.userid != this.courseUserid) {
  4864. // this.updateWork2();
  4865. } else {
  4866. this.updateWork();
  4867. }
  4868. }
  4869. this.steps++;
  4870. } else {
  4871. this.$message.error("请将信息填写完整");
  4872. return;
  4873. }
  4874. } else if (this.steps == 2) {
  4875. if (this.templateC.id != "" || this.templateC.id != undefined) {
  4876. this.cTemplate = this.templateC.content;
  4877. }
  4878. this.dialogVisible2 = false;
  4879. this.steps++;
  4880. setTimeout(() => {
  4881. this.checkEva(this.checkId);
  4882. }, 1000);
  4883. } else if (this.steps == 3) {
  4884. if (this.cid == "" || this.cid == undefined) {
  4885. if (this.courseName == "") {
  4886. this.$message.error("请将信息填写完整");
  4887. return;
  4888. } else {
  4889. this.addWork();
  4890. this.steps++;
  4891. }
  4892. } else {
  4893. if (this.courseName == "") {
  4894. this.$message.error("请将信息填写完整");
  4895. return;
  4896. } else {
  4897. if (this.userid != this.courseUserid) {
  4898. this.updateWork2();
  4899. } else {
  4900. this.updateWork();
  4901. }
  4902. this.steps++;
  4903. }
  4904. }
  4905. }
  4906. }
  4907. this.$refs.stepBox.scrollTop = 0;
  4908. },
  4909. unitSet(i) {
  4910. this.unitIndex = i;
  4911. // this.$refs.rightboxR.scrollTop = 0;
  4912. },
  4913. time() {
  4914. if (!this.now) {
  4915. this.now = new Date().getTime();
  4916. return true;
  4917. } else {
  4918. let time = new Date().getTime();
  4919. if (time - this.now > 3000) {
  4920. this.now = time;
  4921. return true;
  4922. } else {
  4923. return false;
  4924. }
  4925. }
  4926. },
  4927. deleteUnit(i) {
  4928. var _this = this;
  4929. if (_this.time()) {
  4930. _this
  4931. .$confirm("确定删除此单元吗?", "提示", {
  4932. confirmButtonText: "确定",
  4933. cancelButtonText: "取消",
  4934. type: "warning",
  4935. })
  4936. .then(() => {
  4937. _this.isDelete = 2;
  4938. // _this.unitIndex = _this.unitIndex - 1;
  4939. _this.deleteWork(_this.unitJson[i].chapterInfo[0].chapterid);
  4940. // _this.$message.success("删除成功");
  4941. })
  4942. .catch(() => {
  4943. return;
  4944. });
  4945. }
  4946. },
  4947. deleteWork(chapid) {
  4948. let params = [
  4949. {
  4950. cid: this.cid,
  4951. chapters: JSON.stringify(this.unitJson),
  4952. uid: this.userid,
  4953. chapid: chapid,
  4954. },
  4955. ];
  4956. this.ajax
  4957. .post(this.$store.state.api + "deleteWork", params)
  4958. .then((res) => {
  4959. this.$message({
  4960. message: "删除成功",
  4961. type: "success",
  4962. });
  4963. this.unitJson.splice(this.unitIndex, 1);
  4964. this.unitIndex = this.unitIndex - 1;
  4965. })
  4966. .catch((err) => {
  4967. this.$message.error("网络不佳");
  4968. console.error(err);
  4969. });
  4970. },
  4971. deleteTool(itemTaskIndex, i) {
  4972. var _this = this;
  4973. if (_this.time()) {
  4974. _this
  4975. .$confirm("确定删除此工具吗?", "提示", {
  4976. confirmButtonText: "确定",
  4977. cancelButtonText: "取消",
  4978. type: "warning",
  4979. })
  4980. .then(() => {
  4981. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  4982. itemTaskIndex
  4983. ].toolChoose.splice(i, 1);
  4984. _this.$message.success("删除成功");
  4985. })
  4986. .catch(() => {
  4987. return;
  4988. });
  4989. }
  4990. },
  4991. deleteSentence(i) {
  4992. var _this = this;
  4993. if (_this.time()) {
  4994. _this
  4995. .$confirm("确定删除此题目吗?", "提示", {
  4996. confirmButtonText: "确定",
  4997. cancelButtonText: "取消",
  4998. type: "warning",
  4999. })
  5000. .then(() => {
  5001. _this.sentenceList.splice(i, 1);
  5002. _this.$message.success("删除成功");
  5003. })
  5004. .catch(() => {
  5005. return;
  5006. });
  5007. }
  5008. },
  5009. deleteS(s, i, j) {
  5010. this.sentenceList[i].addSentence.splice(j, 1);
  5011. if (this.sentenceList[i].rightAnswer.indexOf(s) != -1) {
  5012. var a = this.sentenceList[i].rightAnswer.indexOf(s);
  5013. this.sentenceList[i].rightAnswer.splice(a, 1);
  5014. }
  5015. },
  5016. openT() {
  5017. window.parent.postMessage({ tools: "25" }, "*");
  5018. },
  5019. deleteTask(i) {
  5020. var _this = this;
  5021. if (_this.time()) {
  5022. _this
  5023. .$confirm("确定删除此任务吗?", "提示", {
  5024. confirmButtonText: "确定",
  5025. cancelButtonText: "取消",
  5026. type: "warning",
  5027. })
  5028. .then(() => {
  5029. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
  5030. i,
  5031. 1
  5032. );
  5033. _this.$message.success("删除成功");
  5034. })
  5035. .catch(() => {
  5036. return;
  5037. });
  5038. }
  5039. },
  5040. handlePictureCardPreview(file) {
  5041. this.dialogImageUrl = file.url;
  5042. },
  5043. clean(i, c) {
  5044. this.unitJson[this.unitIndex].chapterInfo[i].fileList1.splice(c, 1);
  5045. },
  5046. handle_remove1(file, fileList, type) {
  5047. var _tmp = this.cover;
  5048. // for (var i = 0, len = _tmp.length; i < len; i++) {
  5049. // if (_tmp[i].uid == file.uid) {
  5050. // _tmp.splice(i, 1);
  5051. // break;
  5052. // }
  5053. // this.cover = _tmp;
  5054. // }
  5055. this.cover = [];
  5056. this.noneBtnImg = this.cover.length >= 1;
  5057. this.isSysPic = false;
  5058. this.$forceUpdate();
  5059. },
  5060. addImg(e) {
  5061. var el = e.currentTarget;
  5062. el.getElementsByTagName("input")[0].click();
  5063. },
  5064. addChaptersTools(i) {
  5065. this.chapTools = [
  5066. {
  5067. tools: [],
  5068. toolDetail: "",
  5069. },
  5070. ];
  5071. this.chapCount = i;
  5072. this.dialogVisible4 = true;
  5073. },
  5074. isNoFinsh() {
  5075. this.$message.warning("功能正在开发中");
  5076. },
  5077. addAttText(i) {
  5078. this.AttText = {
  5079. title: "",
  5080. text: "",
  5081. };
  5082. this.taskCount = i;
  5083. this.AttTextType = 0;
  5084. this.$forceUpdate();
  5085. this.dialogVisible6 = true;
  5086. },
  5087. openLine(i) {
  5088. this.line = "";
  5089. this.lineCount = i;
  5090. this.lineType = 0;
  5091. this.$forceUpdate();
  5092. this.dialogVisible7 = true;
  5093. },
  5094. beforeUploadTiMu(event, i) {
  5095. const loading = this.openLoading();
  5096. var file = event.target.files[0];
  5097. var credentials = {
  5098. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5099. secretAccessKey: "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",
  5100. }; //秘钥形式的登录上传
  5101. window.AWS.config.update(credentials);
  5102. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5103. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5104. var _this = this;
  5105. if (file) {
  5106. var params = {
  5107. Key:
  5108. file.name.split(".")[0] +
  5109. new Date().getTime() +
  5110. "." +
  5111. file.name.split(".")[file.name.split(".").length - 1],
  5112. ContentType: file.type,
  5113. Body: file,
  5114. "Access-Control-Allow-Credentials": "*",
  5115. ACL: "public-read",
  5116. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5117. var options = {
  5118. partSize: 2048 * 1024 * 1024,
  5119. queueSize: 2,
  5120. leavePartsOnError: true,
  5121. };
  5122. bucket
  5123. .upload(params, options)
  5124. .on("httpUploadProgress", function (evt) {
  5125. //这里可以写进度条
  5126. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5127. })
  5128. .send(function (err, data) {
  5129. loading.close();
  5130. if (err) {
  5131. _this.$message.error("上传失败");
  5132. } else {
  5133. _this.testJson.testJson[i].timuList.push({
  5134. src: data.Location,
  5135. });
  5136. _this.imgChange3(i);
  5137. _this.$forceUpdate();
  5138. }
  5139. });
  5140. }
  5141. },
  5142. beforeUploadTi(event, i, j) {
  5143. const loading = this.openLoading();
  5144. var file = event.target.files[0];
  5145. var credentials = {
  5146. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5147. secretAccessKey: "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",
  5148. }; //秘钥形式的登录上传
  5149. window.AWS.config.update(credentials);
  5150. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5151. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5152. var _this = this;
  5153. if (file) {
  5154. var params = {
  5155. Key:
  5156. file.name.split(".")[0] +
  5157. new Date().getTime() +
  5158. "." +
  5159. file.name.split(".")[file.name.split(".").length - 1],
  5160. ContentType: file.type,
  5161. Body: file,
  5162. "Access-Control-Allow-Credentials": "*",
  5163. ACL: "public-read",
  5164. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5165. var options = {
  5166. partSize: 2048 * 1024 * 1024,
  5167. queueSize: 2,
  5168. leavePartsOnError: true,
  5169. };
  5170. bucket
  5171. .upload(params, options)
  5172. .on("httpUploadProgress", function (evt) {
  5173. //这里可以写进度条
  5174. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5175. })
  5176. .send(function (err, data) {
  5177. loading.close();
  5178. if (err) {
  5179. _this.$message.error("上传失败");
  5180. } else {
  5181. _this.testJson.testJson[i].checkList[j] = {};
  5182. _this.testJson.testJson[i].checkList[j].src = data.Location;
  5183. _this.testJson.testJson[i].checkList[j].imgType = 1;
  5184. _this.imgChange2(i, j);
  5185. _this.$forceUpdate();
  5186. }
  5187. });
  5188. }
  5189. },
  5190. beforeUpload1(event, type) {
  5191. const loading = this.openLoading();
  5192. var file = event.target.files[0];
  5193. var credentials = {
  5194. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5195. secretAccessKey: "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",
  5196. }; //秘钥形式的登录上传
  5197. window.AWS.config.update(credentials);
  5198. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5199. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5200. var _this = this;
  5201. if (file) {
  5202. var params = {
  5203. Key:
  5204. file.name.split(".")[0] +
  5205. new Date().getTime() +
  5206. "." +
  5207. file.name.split(".")[file.name.split(".").length - 1],
  5208. ContentType: file.type,
  5209. Body: file,
  5210. "Access-Control-Allow-Credentials": "*",
  5211. ACL: "public-read",
  5212. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5213. var options = {
  5214. partSize: 2048 * 1024 * 1024,
  5215. queueSize: 2,
  5216. leavePartsOnError: true,
  5217. };
  5218. bucket
  5219. .upload(params, options)
  5220. .on("httpUploadProgress", function (evt) {
  5221. //这里可以写进度条
  5222. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5223. })
  5224. .send(function (err, data) {
  5225. loading.close();
  5226. if (err) {
  5227. var a = _this.$refs.upload1.uploadFiles;
  5228. a.splice(a.length - 1, a.length);
  5229. _this.$message.error("上传失败");
  5230. } else {
  5231. _this.cover.push({
  5232. name: file.name,
  5233. url: data.Location,
  5234. uid: file.uid,
  5235. });
  5236. _this.imgChange1(null, null, 1, null);
  5237. _this.choosePicVisible = false;
  5238. console.log(data.Location);
  5239. }
  5240. });
  5241. }
  5242. },
  5243. beforeUploadSelect(event, type) {
  5244. const loading = this.openLoading();
  5245. var file = event.target.files[0];
  5246. var credentials = {
  5247. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5248. secretAccessKey: "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",
  5249. }; //秘钥形式的登录上传
  5250. window.AWS.config.update(credentials);
  5251. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5252. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5253. var _this = this;
  5254. if (file) {
  5255. var params = {
  5256. Key:
  5257. file.name.split(".")[0] +
  5258. new Date().getTime() +
  5259. "." +
  5260. file.name.split(".")[file.name.split(".").length - 1],
  5261. ContentType: file.type,
  5262. Body: file,
  5263. "Access-Control-Allow-Credentials": "*",
  5264. ACL: "public-read",
  5265. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5266. var options = {
  5267. partSize: 2048 * 1024 * 1024,
  5268. queueSize: 2,
  5269. leavePartsOnError: true,
  5270. };
  5271. bucket
  5272. .upload(params, options)
  5273. .on("httpUploadProgress", function (evt) {
  5274. //这里可以写进度条
  5275. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5276. })
  5277. .send(function (err, data) {
  5278. loading.close();
  5279. if (err) {
  5280. _this.$message.error("上传失败");
  5281. } else {
  5282. _this.selectJson.url = data.Location;
  5283. console.log(data.Location);
  5284. }
  5285. });
  5286. }
  5287. },
  5288. chooseSysPic(p) {
  5289. this.cover.push({
  5290. name: "系统图片.png",
  5291. url: p,
  5292. });
  5293. this.imgChange1(null, null, 1, null);
  5294. this.isSysPic = true;
  5295. this.sysPicVisible = false;
  5296. },
  5297. beforeUpload(data) {
  5298. this.$refs.upload1.uploadFiles;
  5299. this.uploadLoading1 = true;
  5300. var file = data.file;
  5301. var credentials = {
  5302. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5303. secretAccessKey: "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",
  5304. }; //秘钥形式的登录上传
  5305. window.AWS.config.update(credentials);
  5306. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5307. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5308. var _this = this;
  5309. if (file) {
  5310. var params = {
  5311. Key:
  5312. file.name.split(".")[0] +
  5313. new Date().getTime() +
  5314. "." +
  5315. file.name.split(".")[file.name.split(".").length - 1],
  5316. ContentType: file.type,
  5317. Body: file,
  5318. "Access-Control-Allow-Credentials": "*",
  5319. ACL: "public-read",
  5320. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5321. var options = {
  5322. partSize: 2048 * 1024 * 1024,
  5323. queueSize: 2,
  5324. leavePartsOnError: true,
  5325. };
  5326. bucket
  5327. .upload(params, options)
  5328. .on("httpUploadProgress", function (evt) {
  5329. //这里可以写进度条
  5330. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5331. })
  5332. .send(function (err, data) {
  5333. _this.uploadLoading1 = false;
  5334. if (err) {
  5335. var a = _this.$refs.upload1.uploadFiles;
  5336. a.splice(a.length - 1, a.length);
  5337. _this.$message.error("上传失败");
  5338. } else {
  5339. //上传成功处理
  5340. _this.unitJson[_this.unitIndex].chapterInfo[0].fileList1.push({
  5341. name: file.name,
  5342. url: data.Location,
  5343. uid: file.uid,
  5344. });
  5345. _this.imgChange();
  5346. console.log(data.Location);
  5347. }
  5348. });
  5349. }
  5350. },
  5351. onExceed() {
  5352. this.$message.error("课程封面仅支持上传一张,请删除后再进行上传");
  5353. },
  5354. beforeUpload2(event, unitIndex, type, itemTaskIndex) {
  5355. // const loading = this.openLoading();
  5356. var file = event.target.files[0];
  5357. var credentials = {
  5358. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5359. secretAccessKey: "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",
  5360. }; //秘钥形式的登录上传
  5361. window.AWS.config.update(credentials);
  5362. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5363. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5364. var _this = this;
  5365. if (type == 3) {
  5366. var b = [
  5367. "DOC",
  5368. "DOCX",
  5369. "DOCM",
  5370. "DOTM",
  5371. "DOTX",
  5372. "PPTX",
  5373. "PPSX",
  5374. "PPT",
  5375. "PPS",
  5376. "PPTM",
  5377. "POTM",
  5378. "PPAM",
  5379. "POTX",
  5380. "PPSM",
  5381. ];
  5382. if (
  5383. b.indexOf(
  5384. file.name
  5385. .split(".")
  5386. [file.name.split(".").length - 1].toLocaleUpperCase()
  5387. ) != -1
  5388. ) {
  5389. if (file.size / 1024 / 1024 > 80) {
  5390. this.$message.error("上传文件大于80兆,请重新选择文件!");
  5391. this.inputShow = true;
  5392. var a = _this.$refs.upload1.uploadFiles;
  5393. a.splice(a.length - 1, a.length);
  5394. // loading.close();
  5395. return;
  5396. }
  5397. } else if (
  5398. file.name
  5399. .split(".")
  5400. [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
  5401. ) {
  5402. if (file.size / 1024 / 1024 > 80) {
  5403. this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
  5404. this.inputShow = true;
  5405. var a = _this.$refs.upload1.uploadFiles;
  5406. a.splice(a.length - 1, a.length);
  5407. // loading.close();
  5408. return;
  5409. }
  5410. }
  5411. }
  5412. this.inputShow = false;
  5413. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5414. itemTaskIndex
  5415. ].progress = 0;
  5416. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5417. itemTaskIndex
  5418. ].proVisible = true;
  5419. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5420. itemTaskIndex
  5421. ].isFinishSize = 0;
  5422. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5423. itemTaskIndex
  5424. ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
  5425. if (file) {
  5426. var params = {
  5427. Key:
  5428. file.name.split(".")[0] +
  5429. new Date().getTime() +
  5430. "." +
  5431. file.name.split(".")[file.name.split(".").length - 1],
  5432. ContentType: file.type,
  5433. Body: file,
  5434. "Access-Control-Allow-Credentials": "*",
  5435. ACL: "public-read",
  5436. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5437. var options = {
  5438. partSize: 2048 * 1024 * 1024,
  5439. queueSize: 2,
  5440. leavePartsOnError: true,
  5441. };
  5442. bucket
  5443. .upload(params, options)
  5444. .on("httpUploadProgress", function (evt) {
  5445. //这里可以写进度条
  5446. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5447. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5448. itemTaskIndex
  5449. ].progress = parseInt((evt.loaded / evt.total) * 100);
  5450. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5451. itemTaskIndex
  5452. ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
  5453. this.$forceUpdate();
  5454. })
  5455. .send(function (err, data) {
  5456. // loading.close();
  5457. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5458. itemTaskIndex
  5459. ].progress = 100;
  5460. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5461. itemTaskIndex
  5462. ].isFinishSize =
  5463. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5464. itemTaskIndex
  5465. ].isAllSize;
  5466. _this.$forceUpdate();
  5467. setTimeout(() => {
  5468. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5469. itemTaskIndex
  5470. ].proVisible = false;
  5471. _this.$forceUpdate();
  5472. }, 1000);
  5473. _this.inputShow = true;
  5474. if (err) {
  5475. var a = _this.$refs.upload1.uploadFiles;
  5476. a.splice(a.length - 1, a.length);
  5477. _this.$message.error("上传失败");
  5478. } else {
  5479. if (type == 2 || type == 3) {
  5480. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5481. itemTaskIndex
  5482. ].chapterData.push({
  5483. name: file.name,
  5484. url: data.Location,
  5485. uid: file.uid,
  5486. type: type,
  5487. });
  5488. _this.imgChange1(null, null, type, itemTaskIndex);
  5489. } else if (type == 4) {
  5490. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  5491. itemTaskIndex
  5492. ].fileList1.push({
  5493. name: file.name,
  5494. url: data.Location,
  5495. uid: file.uid,
  5496. });
  5497. _this.imgChange1(null, null, type, itemTaskIndex);
  5498. } else if (type == 5) {
  5499. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  5500. itemTaskIndex
  5501. ].homeworkList.push({
  5502. name: file.name,
  5503. url: data.Location,
  5504. uid: file.uid,
  5505. });
  5506. _this.imgChange1(null, null, type, itemTaskIndex);
  5507. }
  5508. console.log(data.Location);
  5509. }
  5510. });
  5511. }
  5512. },
  5513. beforeUpload3(event, unitIndex, type, itemTaskIndex, string) {
  5514. // const loading = this.openLoading();
  5515. var file = event.target.files[0];
  5516. var credentials = {
  5517. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  5518. secretAccessKey: "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",
  5519. }; //秘钥形式的登录上传
  5520. window.AWS.config.update(credentials);
  5521. window.AWS.config.region = "cn-northwest-1"; //设置区域
  5522. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  5523. var _this = this;
  5524. if (type == 3) {
  5525. var b = [
  5526. "DOC",
  5527. "DOCX",
  5528. "DOCM",
  5529. "DOTM",
  5530. "DOTX",
  5531. "PPTX",
  5532. "PPSX",
  5533. "PPT",
  5534. "PPS",
  5535. "PPTM",
  5536. "POTM",
  5537. "PPAM",
  5538. "POTX",
  5539. "PPSM",
  5540. ];
  5541. if (
  5542. b.indexOf(
  5543. file.name
  5544. .split(".")
  5545. [file.name.split(".").length - 1].toLocaleUpperCase()
  5546. ) != -1
  5547. ) {
  5548. if (file.size / 1024 / 1024 > 80) {
  5549. this.$message.error("上传文件大于80兆,请重新选择文件!");
  5550. this.inputShow = true;
  5551. var a = _this.$refs.upload1.uploadFiles;
  5552. a.splice(a.length - 1, a.length);
  5553. // loading.close();
  5554. return;
  5555. }
  5556. } else if (
  5557. file.name
  5558. .split(".")
  5559. [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
  5560. ) {
  5561. if (file.size / 1024 / 1024 > 80) {
  5562. this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
  5563. this.inputShow = true;
  5564. var a = _this.$refs.upload1.uploadFiles;
  5565. a.splice(a.length - 1, a.length);
  5566. // loading.close();
  5567. return;
  5568. }
  5569. }
  5570. }
  5571. this.inputShow = false;
  5572. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5573. itemTaskIndex
  5574. ].progress = 0;
  5575. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5576. itemTaskIndex
  5577. ].proVisible = true;
  5578. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5579. itemTaskIndex
  5580. ].isFinishSize = 0;
  5581. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5582. itemTaskIndex
  5583. ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
  5584. if (file) {
  5585. var params = {
  5586. Key:
  5587. file.name.split(".")[0] +
  5588. new Date().getTime() +
  5589. "." +
  5590. file.name.split(".")[file.name.split(".").length - 1],
  5591. ContentType: file.type,
  5592. Body: file,
  5593. "Access-Control-Allow-Credentials": "*",
  5594. ACL: "public-read",
  5595. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  5596. var options = {
  5597. partSize: 2048 * 1024 * 1024,
  5598. queueSize: 2,
  5599. leavePartsOnError: true,
  5600. };
  5601. bucket
  5602. .upload(params, options)
  5603. .on("httpUploadProgress", function (evt) {
  5604. //这里可以写进度条
  5605. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  5606. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5607. itemTaskIndex
  5608. ].progress = parseInt((evt.loaded / evt.total) * 100);
  5609. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5610. itemTaskIndex
  5611. ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
  5612. this.$forceUpdate();
  5613. })
  5614. .send(function (err, data) {
  5615. // loading.close();
  5616. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5617. itemTaskIndex
  5618. ].progress = 100;
  5619. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5620. itemTaskIndex
  5621. ].isFinishSize =
  5622. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5623. itemTaskIndex
  5624. ].isAllSize;
  5625. _this.$forceUpdate();
  5626. setTimeout(() => {
  5627. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5628. itemTaskIndex
  5629. ].proVisible = false;
  5630. _this.$forceUpdate();
  5631. }, 1000);
  5632. _this.inputShow = true;
  5633. if (err) {
  5634. var a = _this.$refs.upload1.uploadFiles;
  5635. a.splice(a.length - 1, a.length);
  5636. _this.$message.error("上传失败");
  5637. } else {
  5638. if (type == 2 || type == 3) {
  5639. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  5640. itemTaskIndex
  5641. ].chapterData.push({
  5642. name: file.name,
  5643. url: data.Location,
  5644. uid: file.uid,
  5645. type: type,
  5646. text: string,
  5647. });
  5648. _this.imgChange1(null, null, type, itemTaskIndex);
  5649. } else if (type == 4) {
  5650. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  5651. itemTaskIndex
  5652. ].fileList1.push({
  5653. name: file.name,
  5654. url: data.Location,
  5655. uid: file.uid,
  5656. });
  5657. _this.imgChange1(null, null, type, itemTaskIndex);
  5658. } else if (type == 5) {
  5659. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  5660. itemTaskIndex
  5661. ].homeworkList.push({
  5662. name: file.name,
  5663. url: data.Location,
  5664. uid: file.uid,
  5665. });
  5666. _this.imgChange1(null, null, type, itemTaskIndex);
  5667. }
  5668. console.log(data.Location);
  5669. }
  5670. });
  5671. }
  5672. },
  5673. addunit() {
  5674. this.unitJson.push({
  5675. dyName: "", //单元标题
  5676. isUpdate: 1,
  5677. easy: this.unitJson[this.unitJson.length - 1].easy ? 1 : 0,
  5678. chapterInfo: [
  5679. {
  5680. isread: false,
  5681. chapterid: this.guid(),
  5682. title: "",
  5683. courseName: "",
  5684. taskJson: [
  5685. {
  5686. task: "",
  5687. taskDetail: "",
  5688. chapterData: [],
  5689. toolText: "",
  5690. toolChoose: [
  5691. {
  5692. tool: [],
  5693. toolDetail: "",
  5694. toolType: 0,
  5695. askCount: 1,
  5696. askTitle: "",
  5697. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  5698. },
  5699. ],
  5700. isShowTools: false,
  5701. askCount: 1,
  5702. isFold: 0,
  5703. askTitle: "",
  5704. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  5705. checkJson: [{ checkCount: [], checkPerent: [] }],
  5706. homeworkList: [],
  5707. },
  5708. ],
  5709. itemCount: 1,
  5710. fileList1: [],
  5711. video: [],
  5712. testData: [],
  5713. pData: [],
  5714. templateArray: [],
  5715. },
  5716. ],
  5717. });
  5718. this.addindex = this.unitJson.length - 1;
  5719. setTimeout(() => {
  5720. this.unitIndex = this.unitJson.length - 1;
  5721. this.unitSet(this.unitIndex);
  5722. }, 0);
  5723. },
  5724. addToolFun(itemTaskIndex) {
  5725. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  5726. itemTaskIndex
  5727. ].toolChoose.push({
  5728. tool: [],
  5729. toolDetail: "",
  5730. toolType: 0,
  5731. askCount: 1,
  5732. askTitle: "",
  5733. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  5734. });
  5735. },
  5736. addTaskBorder() {
  5737. this.unitJson[this.unitIndex].chapterInfo[0].taskJson.push({
  5738. task: "",
  5739. taskDetail: "",
  5740. chapterData: [],
  5741. toolText: "",
  5742. toolChoose: [
  5743. {
  5744. tool: [],
  5745. toolDetail: "",
  5746. toolType: 0,
  5747. askCount: 1,
  5748. askTitle: "",
  5749. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  5750. },
  5751. ],
  5752. isShowTools: false,
  5753. askCount: 1,
  5754. isFold: 0,
  5755. askTitle: "",
  5756. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  5757. checkJson: [{ checkCount: [], checkPerent: [] }],
  5758. homeworkList: [],
  5759. });
  5760. },
  5761. add(e, i) {
  5762. var el = e.currentTarget;
  5763. el.getElementsByTagName("input")[0].click();
  5764. },
  5765. fold(i, e, type) {
  5766. var a = e.currentTarget.parentElement.parentElement;
  5767. var b = e.currentTarget.parentElement;
  5768. if (type == 1) {
  5769. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
  5770. a.className += " smallTaskBorder";
  5771. b.className += " funBlockTop";
  5772. } else {
  5773. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
  5774. a.className = "taskBorder";
  5775. b.className = "funBlock";
  5776. }
  5777. console.log(e);
  5778. },
  5779. deleteHomeworkBox(unitIndex, index, i) {
  5780. this.unitJson[unitIndex].chapterInfo[index].taskJson[
  5781. this.taskCount
  5782. ].homeworkList.splice(i, 1);
  5783. },
  5784. getStudent() {
  5785. let params = {
  5786. oid: this.oid,
  5787. cu: "",
  5788. cn: this.searchPeople,
  5789. };
  5790. this.ajax
  5791. .get(this.$store.state.api + "selectStudentAdd", params)
  5792. .then((res) => {
  5793. this.studentJuri = res.data[0];
  5794. })
  5795. .catch((err) => {
  5796. this.isLoading = false;
  5797. console.error(err);
  5798. });
  5799. },
  5800. getTeacher() {
  5801. let params = {
  5802. oid:
  5803. this.org && this.org != "undefined" && this.org != "null"
  5804. ? this.org
  5805. : this.oid,
  5806. cu: "",
  5807. cn: this.searchTN,
  5808. };
  5809. this.ajax
  5810. .get(
  5811. this.$store.state.api +
  5812. (this.org && this.org != "undefined" && this.org != "null"
  5813. ? "selectTeacherAddOrg"
  5814. : "selectTeacherAdd"),
  5815. params
  5816. )
  5817. .then((res) => {
  5818. let teacherJuri = res.data[0];
  5819. for (var i = 0; i < teacherJuri.length; i++) {
  5820. if (teacherJuri[i].userid == this.userid) {
  5821. teacherJuri.splice(i, 1);
  5822. break;
  5823. }
  5824. }
  5825. this.teacherJuri = teacherJuri;
  5826. })
  5827. .catch((err) => {
  5828. console.error(err);
  5829. });
  5830. },
  5831. searchStudent() {
  5832. this.getStudent();
  5833. },
  5834. //获取班级列表
  5835. getClass() {
  5836. let params = {
  5837. oid: this.oid,
  5838. cn: this.classSearch,
  5839. };
  5840. this.ajax
  5841. .get(this.$store.state.api + "selectClassBySchoolSearch", params)
  5842. .then((res) => {
  5843. if (!this.grade.length) {
  5844. this.grade = res.data[0];
  5845. }
  5846. this.grade2 = res.data[0];
  5847. this.classJuri = res.data[0];
  5848. })
  5849. .catch((err) => {
  5850. this.isLoading = false;
  5851. console.error(err);
  5852. });
  5853. },
  5854. getChapterData(e, i, j, ic, type) {
  5855. e.stopPropagation();
  5856. this.updataC = true;
  5857. this.icc = ic;
  5858. if ((type == 2 || type == 3) && e.target.tagName !== "INPUT") {
  5859. console.log("还不能下载图片喔");
  5860. }
  5861. },
  5862. deleteChapterData(e, i, j, ic, taskI) {
  5863. e.stopPropagation();
  5864. this.unitJson[i].chapterInfo[j].taskJson[taskI].chapterData.splice(ic, 1);
  5865. },
  5866. updataVideoT(e, i, j, ic) {
  5867. e.stopPropagation();
  5868. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  5869. ic
  5870. ].name = e.target.value;
  5871. },
  5872. upCd(e, i, j, taskCount, ic) {
  5873. e.stopPropagation();
  5874. if (ic == 0) {
  5875. return;
  5876. }
  5877. var a =
  5878. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1];
  5879. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1] =
  5880. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic];
  5881. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
  5882. this.$forceUpdate();
  5883. },
  5884. downCd(e, i, j, taskCount, ic) {
  5885. e.stopPropagation();
  5886. if (
  5887. ic ==
  5888. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData.length -
  5889. 1
  5890. ) {
  5891. return;
  5892. }
  5893. var a =
  5894. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1];
  5895. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1] =
  5896. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic];
  5897. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
  5898. this.$forceUpdate();
  5899. },
  5900. addWork() {
  5901. let cPan = 1;
  5902. for (var i = 0; i < this.unitJson.length; i++) {
  5903. for (
  5904. var j = 0;
  5905. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  5906. j++
  5907. ) {
  5908. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
  5909. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
  5910. if (
  5911. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  5912. ) {
  5913. for (
  5914. var z = 0;
  5915. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  5916. z++
  5917. ) {
  5918. if (
  5919. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  5920. .length
  5921. ) {
  5922. this.$message.error("请把工具添加完整");
  5923. cPan = 2;
  5924. break;
  5925. }
  5926. }
  5927. }
  5928. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  5929. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  5930. i
  5931. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  5932. return ele.value != "";
  5933. });
  5934. }
  5935. }
  5936. }
  5937. if (cPan == 2) {
  5938. this.steps--;
  5939. return;
  5940. }
  5941. for (var i = 0; i < this.unitJson.length; i++) {
  5942. delete this.unitJson[i].isUpdate;
  5943. }
  5944. let params = [
  5945. {
  5946. uid: this.userid,
  5947. title: this.courseName.replace(/%/g, "%25"),
  5948. brief: this.courseText.replace(/%/g, "%25"),
  5949. cover:
  5950. this.cover.length > 0
  5951. ? JSON.stringify(this.cover)
  5952. : JSON.stringify([
  5953. {
  5954. name: "noBanner.jpg",
  5955. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
  5956. uid: 1656409780264,
  5957. status: "success",
  5958. },
  5959. ]),
  5960. evaId: this.evalua,
  5961. astudent:
  5962. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  5963. see: this.isTeacherSee == true ? 1 : 0,
  5964. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  5965. template: this.cTemplate != "undefined" ? this.cTemplate : "",
  5966. courseType: JSON.stringify(this.courseTypeId),
  5967. ateacher:
  5968. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  5969. },
  5970. ];
  5971. this.ajax
  5972. .post(this.$store.state.api + "addWorkNew2", params)
  5973. .then((res) => {
  5974. console.log(this.steps);
  5975. if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  5976. this.$message({
  5977. message: "新增成功",
  5978. type: "success",
  5979. });
  5980. }
  5981. this.number = res.data.ordernumber;
  5982. this.courseId = res.data.courseId;
  5983. this.cid = res.data.courseId;
  5984. this.courseUserid = this.userid;
  5985. this.islogin = true;
  5986. })
  5987. .catch((err) => {
  5988. this.$message.error("网络不佳");
  5989. console.error(err);
  5990. });
  5991. },
  5992. goCourse() {
  5993. window.parent.postMessage({ cid: this.courseId, type: "1" }, "*");
  5994. },
  5995. updateWork2() {
  5996. let _unitIndex = this.unitIndex;
  5997. let cPan = 1;
  5998. for (
  5999. var j = 0;
  6000. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  6001. j++
  6002. ) {
  6003. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
  6004. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  6005. j
  6006. ].proVisible2 = false;
  6007. if (
  6008. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  6009. .length > 1
  6010. ) {
  6011. for (
  6012. var z = 0;
  6013. z <
  6014. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  6015. .length;
  6016. z++
  6017. ) {
  6018. if (
  6019. !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
  6020. z
  6021. ].tool.length
  6022. ) {
  6023. this.$message.error("请把工具添加完整");
  6024. cPan = 2;
  6025. break;
  6026. }
  6027. }
  6028. }
  6029. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  6030. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  6031. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  6032. (ele) => {
  6033. return ele.value != "";
  6034. }
  6035. );
  6036. }
  6037. }
  6038. if (cPan == 2) {
  6039. this.steps--;
  6040. return;
  6041. }
  6042. let params = [
  6043. {
  6044. cid: this.cid,
  6045. chapters: JSON.stringify(this.unitJson),
  6046. uid: this.userid,
  6047. unitIndex: _unitIndex,
  6048. },
  6049. ];
  6050. this.ajax
  6051. .post(this.$store.state.api + "updateWorkNew4", params)
  6052. .then((res) => {
  6053. this.$message({
  6054. message: "修改成功",
  6055. type: "success",
  6056. });
  6057. this.courseId = this.cid;
  6058. })
  6059. .catch((err) => {
  6060. this.$message.error("网络不佳");
  6061. console.error(err);
  6062. });
  6063. },
  6064. updateWork() {
  6065. let cPan = 1;
  6066. for (var i = 0; i < this.unitJson.length; i++) {
  6067. for (
  6068. var j = 0;
  6069. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  6070. j++
  6071. ) {
  6072. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
  6073. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
  6074. if (
  6075. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  6076. ) {
  6077. for (
  6078. var z = 0;
  6079. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  6080. z++
  6081. ) {
  6082. if (
  6083. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  6084. .length
  6085. ) {
  6086. this.$message.error("请把工具添加完整");
  6087. cPan = 2;
  6088. break;
  6089. }
  6090. }
  6091. }
  6092. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  6093. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  6094. i
  6095. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  6096. return ele.value != "";
  6097. });
  6098. }
  6099. }
  6100. }
  6101. if (cPan == 2) {
  6102. this.steps--;
  6103. return;
  6104. }
  6105. for (var i = 0; i < this.unitJson.length; i++) {
  6106. delete this.unitJson[i].isUpdate;
  6107. }
  6108. let params = [
  6109. {
  6110. cid: this.cid,
  6111. title: this.courseName.replace(/%/g, "%25"),
  6112. brief: this.courseText.replace(/%/g, "%25"),
  6113. cover:
  6114. this.cover.length > 0
  6115. ? JSON.stringify(this.cover)
  6116. : JSON.stringify([
  6117. {
  6118. name: "noBanner.jpg",
  6119. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
  6120. uid: 1656409780264,
  6121. status: "success",
  6122. },
  6123. ]),
  6124. evaId: this.evalua,
  6125. astudent:
  6126. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  6127. see: this.isTeacherSee == true ? 1 : 0,
  6128. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  6129. template: this.myWord != "undefined" ? this.myWord : [],
  6130. uid: this.userid,
  6131. courseType: JSON.stringify(this.courseTypeId),
  6132. ateacher:
  6133. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  6134. },
  6135. ];
  6136. this.ajax
  6137. .post(this.$store.state.api + "updateWorkNew2", params)
  6138. .then((res) => {
  6139. if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  6140. if (this.cidType == 1) {
  6141. this.$message({
  6142. message: "修改成功",
  6143. type: "success",
  6144. });
  6145. } else {
  6146. this.$message({
  6147. message: "新增成功",
  6148. type: "success",
  6149. });
  6150. }
  6151. }
  6152. this.number = this.nbOrder;
  6153. this.courseId = this.cid;
  6154. })
  6155. .catch((err) => {
  6156. this.$message.error("网络不佳");
  6157. console.error(err);
  6158. });
  6159. },
  6160. guid() {
  6161. var _num,
  6162. i,
  6163. _guid = "";
  6164. for (i = 0; i < 32; i++) {
  6165. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  6166. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  6167. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  6168. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  6169. _guid += "-";
  6170. }
  6171. }
  6172. return _guid;
  6173. },
  6174. insertWord() {
  6175. this.dialogVisible1 = true;
  6176. this.updateBoolean2 = false;
  6177. this.tTitle = "";
  6178. this.tdetail = "";
  6179. },
  6180. addWord() {
  6181. this.unitJson[this.unitIndex].chapterInfo[0].fileList1.push({
  6182. name: this.tTitle,
  6183. content: this.tdetail,
  6184. uid: this.guid(),
  6185. });
  6186. this.dialogVisible1 = false;
  6187. },
  6188. upWord() {},
  6189. selectWord(uid, i, c) {
  6190. this.dialogVisible1 = true;
  6191. this.updateBoolean2 = true;
  6192. if (
  6193. uid == this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].uid
  6194. ) {
  6195. this.tTitle =
  6196. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].name;
  6197. this.tdetail =
  6198. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].content;
  6199. }
  6200. },
  6201. isAddPP() {
  6202. if (this.checkboxList.length > 0) {
  6203. this.$message({
  6204. message: "添加成功",
  6205. type: "success",
  6206. });
  6207. this.dialogVisible3 = false;
  6208. } else {
  6209. this.$message({
  6210. message: "请添加课程成员",
  6211. type: "error",
  6212. });
  6213. }
  6214. },
  6215. isAddClass() {
  6216. this.dialogVisibleClass = false;
  6217. },
  6218. isAddPPTeacher() {
  6219. this.dialogVisibleMember = false;
  6220. this.setMan();
  6221. },
  6222. getTemplate() {
  6223. this.ajax
  6224. .get(this.$store.state.api + "getCourseTemplateT", "")
  6225. .then((res) => {
  6226. this.templateArray = res.data[0];
  6227. this.$forceUpdate();
  6228. })
  6229. .catch((err) => {});
  6230. },
  6231. clearChoose() {
  6232. this.clearArray.splice(this.templateC.id, 1);
  6233. this.dialogVisible2 = false;
  6234. },
  6235. clearAttText() {
  6236. this.AttText = {
  6237. title: "",
  6238. text: "",
  6239. };
  6240. this.dialogVisible6 = false;
  6241. },
  6242. clearLine() {
  6243. this.line = "";
  6244. this.dialogVisible7 = false;
  6245. },
  6246. checkTemplate(res) {
  6247. let _this = this;
  6248. _this
  6249. .$confirm("确定选择此模板吗?", "提示", {
  6250. confirmButtonText: "确定",
  6251. cancelButtonText: "取消",
  6252. type: "warning",
  6253. })
  6254. .then(() => {
  6255. _this.unitJson = JSON.parse(res.chapters);
  6256. _this.steps++;
  6257. setTimeout(() => {
  6258. this.checkEva(this.checkId);
  6259. }, 1000);
  6260. })
  6261. .catch(() => {
  6262. return;
  6263. });
  6264. },
  6265. checkTemplate1(w) {
  6266. this.steps++;
  6267. },
  6268. checkTemplate2() {
  6269. let _this = this;
  6270. _this
  6271. .$confirm("确定选择空模板吗?", "提示", {
  6272. confirmButtonText: "确定",
  6273. cancelButtonText: "取消",
  6274. type: "warning",
  6275. })
  6276. .then(() => {
  6277. _this.unitIndex = 0;
  6278. _this.unitJson = [
  6279. {
  6280. dyName: "", //单元标题
  6281. chapterInfo: [
  6282. {
  6283. isread: false,
  6284. chapterid: this.guid(),
  6285. title: "",
  6286. courseName: "",
  6287. taskJson: [
  6288. {
  6289. task: "",
  6290. taskDetail: "",
  6291. chapterData: [],
  6292. toolText: "",
  6293. toolChoose: [
  6294. {
  6295. tool: [],
  6296. toolDetail: "",
  6297. toolType: 0,
  6298. askCount: 1,
  6299. askTitle: "",
  6300. askJson: [
  6301. { askstitle: "", askItem: 1, checkList: [] },
  6302. ],
  6303. },
  6304. ],
  6305. isShowTools: false,
  6306. askCount: 1,
  6307. isFold: 0,
  6308. askTitle: "",
  6309. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  6310. checkJson: [{ checkCount: [], checkPerent: [] }],
  6311. homeworkList: [],
  6312. },
  6313. ],
  6314. itemCount: 1,
  6315. fileList1: [],
  6316. video: [],
  6317. testData: [],
  6318. pData: [],
  6319. templateArray: [],
  6320. },
  6321. ],
  6322. },
  6323. ];
  6324. this.steps++;
  6325. this.updateWork();
  6326. })
  6327. .catch(() => {
  6328. return;
  6329. });
  6330. },
  6331. checkTemplate3() {
  6332. let _this = this;
  6333. _this
  6334. .$confirm("确定选择简易模式吗?", "提示", {
  6335. confirmButtonText: "确定",
  6336. cancelButtonText: "取消",
  6337. type: "warning",
  6338. })
  6339. .then(() => {
  6340. _this.unitIndex = 0;
  6341. _this.unitJson = [
  6342. {
  6343. dyName: "", //单元标题
  6344. easy: 1,
  6345. chapterInfo: [
  6346. {
  6347. isread: false,
  6348. chapterid: this.guid(),
  6349. title: "",
  6350. courseName: "",
  6351. taskJson: [
  6352. {
  6353. task: "",
  6354. taskDetail: "",
  6355. chapterData: [],
  6356. toolText: "",
  6357. toolChoose: [
  6358. {
  6359. tool: [],
  6360. toolDetail: "",
  6361. toolType: 0,
  6362. askCount: 1,
  6363. askTitle: "",
  6364. askJson: [
  6365. { askstitle: "", askItem: 1, checkList: [] },
  6366. ],
  6367. },
  6368. ],
  6369. isShowTools: false,
  6370. askCount: 1,
  6371. isFold: 0,
  6372. askTitle: "",
  6373. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  6374. checkJson: [{ checkCount: [], checkPerent: [] }],
  6375. homeworkList: [],
  6376. },
  6377. ],
  6378. itemCount: 1,
  6379. fileList1: [],
  6380. video: [],
  6381. testData: [],
  6382. pData: [],
  6383. templateArray: [],
  6384. },
  6385. ],
  6386. },
  6387. ];
  6388. this.steps++;
  6389. this.updateWork();
  6390. })
  6391. .catch(() => {
  6392. return;
  6393. });
  6394. },
  6395. wordNext() {
  6396. this.dialogVisible2 = false;
  6397. },
  6398. isAddOrUpdateAttText() {
  6399. if (this.AttTextType == 0) {
  6400. this.addAttTextMessage();
  6401. } else {
  6402. this.updateAttText();
  6403. }
  6404. },
  6405. isAddOrUpdateLine() {
  6406. if (!this.lineTitle) {
  6407. this.$message.error("请填写链接标题");
  6408. return;
  6409. }
  6410. if (this.lineType == 0) {
  6411. this.addLine();
  6412. } else {
  6413. this.updateLine();
  6414. }
  6415. },
  6416. addAttTextMessage() {
  6417. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6418. this.taskCount
  6419. ].chapterData.push({
  6420. name: this.AttText.title,
  6421. url: this.AttText.text,
  6422. type: 6,
  6423. });
  6424. this.imgChange1(null, null, 6, this.taskCount);
  6425. this.dialogVisible6 = false;
  6426. },
  6427. selectAttText(itemTaskIndex, i) {
  6428. this.AttText.title =
  6429. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6430. itemTaskIndex
  6431. ].chapterData[i].name;
  6432. this.AttText.text =
  6433. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6434. itemTaskIndex
  6435. ].chapterData[i].url;
  6436. this.taskCount = itemTaskIndex;
  6437. this.AttTextIndex = i;
  6438. this.AttTextType = 1;
  6439. this.dialogVisible6 = true;
  6440. },
  6441. updateAttText() {
  6442. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6443. this.taskCount
  6444. ].chapterData[this.AttTextIndex].name = this.AttText.title;
  6445. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6446. this.taskCount
  6447. ].chapterData[this.AttTextIndex].url = this.AttText.text;
  6448. this.dialogVisible6 = false;
  6449. },
  6450. addLine() {
  6451. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6452. this.lineCount
  6453. ].chapterData.push({
  6454. name: "链接",
  6455. title: this.lineTitle,
  6456. url: this.line,
  6457. type: 8,
  6458. });
  6459. this.imgChange1(null, null, 8, this.lineCount);
  6460. this.dialogVisible7 = false;
  6461. },
  6462. selectLine(itemTaskIndex, i) {
  6463. this.line =
  6464. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6465. itemTaskIndex
  6466. ].chapterData[i].url;
  6467. this.lineTitle = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6468. itemTaskIndex
  6469. ].chapterData[i].title
  6470. ? this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6471. .chapterData[i].title
  6472. : "";
  6473. this.taskCount = itemTaskIndex;
  6474. this.lineCount = i;
  6475. this.lineType = 1;
  6476. this.dialogVisible7 = true;
  6477. },
  6478. updateLine() {
  6479. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6480. this.taskCount
  6481. ].chapterData[this.lineCount].url = this.line;
  6482. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6483. this.taskCount
  6484. ].chapterData[this.lineCount].title = this.lineTitle;
  6485. this.dialogVisible7 = false;
  6486. },
  6487. addPP() {
  6488. this.dialogVisible3 = true;
  6489. },
  6490. goTo(path) {
  6491. this.$router.push(path);
  6492. },
  6493. openTools(itemTaskIndex, i, toolIndex) {
  6494. this.toolIndex = toolIndex;
  6495. this.taskCount = itemTaskIndex;
  6496. if (i == 4) {
  6497. if (toolIndex == null) {
  6498. var a =
  6499. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6500. .chapterData;
  6501. for (var i = 0; i < a.length; i++) {
  6502. if (a[i].url == 4 && a[i].askJson.askTitle != "") {
  6503. this.askJson =
  6504. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6505. itemTaskIndex
  6506. ].chapterData[i].askJson;
  6507. }
  6508. }
  6509. } else {
  6510. this.askJson = JSON.parse(
  6511. JSON.stringify(
  6512. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6513. itemTaskIndex
  6514. ].toolChoose[toolIndex]
  6515. )
  6516. );
  6517. }
  6518. this.dialogVisible5 = true;
  6519. } else if (i == 45) {
  6520. if (
  6521. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6522. .toolChoose[toolIndex].testJson
  6523. ) {
  6524. this.testJson = JSON.parse(
  6525. JSON.stringify(
  6526. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6527. itemTaskIndex
  6528. ].toolChoose[toolIndex].testJson
  6529. )
  6530. );
  6531. } else {
  6532. var testJson = {
  6533. testCount: 1,
  6534. testTitle: "",
  6535. testJson: [
  6536. {
  6537. teststitle: "",
  6538. testItem: 1,
  6539. checkList: [],
  6540. timuList:[],
  6541. answer: [],
  6542. type: "1",
  6543. },
  6544. ],
  6545. };
  6546. this.testJson = testJson;
  6547. }
  6548. this.dialogVisibleChoice = true;
  6549. } else if (i == 47) {
  6550. if (
  6551. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6552. .toolChoose[toolIndex].sentenceList
  6553. ) {
  6554. this.sentenceList = JSON.parse(
  6555. JSON.stringify(
  6556. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6557. itemTaskIndex
  6558. ].toolChoose[toolIndex].sentenceList
  6559. )
  6560. );
  6561. } else {
  6562. var sentenceList = [
  6563. { sentenceTitle: "", addSentence: [], rightAnswer: [] },
  6564. ];
  6565. this.sentenceList = sentenceList;
  6566. }
  6567. this.dialogVisibleSentence = true;
  6568. } else if (i == 48) {
  6569. if (
  6570. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6571. .toolChoose[toolIndex].tableJson
  6572. ) {
  6573. this.tableJson = JSON.parse(
  6574. JSON.stringify(
  6575. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6576. itemTaskIndex
  6577. ].toolChoose[toolIndex].tableJson
  6578. )
  6579. );
  6580. } else {
  6581. var tableJson = { text: "" };
  6582. this.tableJson = tableJson;
  6583. }
  6584. this.dialogVisibleTable = true;
  6585. } else if (i == 52) {
  6586. if (
  6587. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6588. .toolChoose[toolIndex].wordJson
  6589. ) {
  6590. this.wordJson = JSON.parse(
  6591. JSON.stringify(
  6592. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6593. itemTaskIndex
  6594. ].toolChoose[toolIndex].wordJson
  6595. )
  6596. );
  6597. } else {
  6598. var wordJson = { text: "" };
  6599. this.wordJson = wordJson;
  6600. }
  6601. this.dialogVisibleWord = true;
  6602. } else if (i == 50) {
  6603. if (
  6604. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6605. .toolChoose[toolIndex].uploadJson
  6606. ) {
  6607. this.uploadJson = JSON.parse(
  6608. JSON.stringify(
  6609. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6610. itemTaskIndex
  6611. ].toolChoose[toolIndex].uploadJson
  6612. )
  6613. );
  6614. } else {
  6615. var uploadJson = [];
  6616. this.uploadJson = uploadJson;
  6617. }
  6618. this.dialogVisibleMoreUpload = true;
  6619. } else if (i == 10) {
  6620. if (
  6621. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6622. .toolChoose[toolIndex].preTime
  6623. ) {
  6624. this.preTime = JSON.parse(
  6625. JSON.stringify(
  6626. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6627. itemTaskIndex
  6628. ].toolChoose[toolIndex].preTime
  6629. )
  6630. );
  6631. } else {
  6632. var preTime = 0;
  6633. this.preTime = preTime;
  6634. }
  6635. this.dialogVisiblePreTime = true;
  6636. } else if (i == 49) {
  6637. if (
  6638. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6639. .toolChoose[toolIndex].groupJson
  6640. ) {
  6641. this.groupJson = JSON.parse(
  6642. JSON.stringify(
  6643. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6644. itemTaskIndex
  6645. ].toolChoose[toolIndex].groupJson
  6646. )
  6647. );
  6648. } else {
  6649. var groupJson = {
  6650. group: [{ name: "第1组" }],
  6651. number: undefined,
  6652. islock: 1,
  6653. };
  6654. this.groupJson = groupJson;
  6655. }
  6656. this.dialogVisibleGroup = true;
  6657. } else if (i == 15) {
  6658. this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6659. itemTaskIndex
  6660. ].toolChoose[toolIndex].answerQ
  6661. ? JSON.parse(
  6662. JSON.stringify(
  6663. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6664. itemTaskIndex
  6665. ].toolChoose[toolIndex].answerQ
  6666. )
  6667. )
  6668. : "";
  6669. this.dialogVisible8 = true;
  6670. } else if (i == 40) {
  6671. this.rateJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6672. itemTaskIndex
  6673. ].toolChoose[toolIndex].rateJson
  6674. ? JSON.parse(
  6675. JSON.stringify(
  6676. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6677. itemTaskIndex
  6678. ].toolChoose[toolIndex].rateJson
  6679. )
  6680. )
  6681. : [{ detail: "", score: 5, value: "" }]; //{detail:"",score:5,value:""}
  6682. this.selectSteps = 1;
  6683. this.dialogVisibleRate = true;
  6684. } else if (i == 42) {
  6685. this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6686. itemTaskIndex
  6687. ].toolChoose[toolIndex].answerQ
  6688. ? JSON.parse(
  6689. JSON.stringify(
  6690. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6691. itemTaskIndex
  6692. ].toolChoose[toolIndex].answerQ
  6693. )
  6694. )
  6695. : "";
  6696. this.dialogVisibleMp3 = true;
  6697. } else if (i == 41) {
  6698. this.selectJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6699. itemTaskIndex
  6700. ].toolChoose[toolIndex].selectJson
  6701. ? JSON.parse(
  6702. JSON.stringify(
  6703. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6704. itemTaskIndex
  6705. ].toolChoose[toolIndex].selectJson
  6706. )
  6707. )
  6708. : { url: "", select: [], answer: [] };
  6709. this.selectSteps = 1;
  6710. this.dialogVisibleSelect = true;
  6711. } else if (i == 3) {
  6712. window.parent.postMessage(
  6713. {
  6714. tools: "3y",
  6715. cid: this.cid,
  6716. stage: this.unitIndex,
  6717. task: itemTaskIndex,
  6718. tool: toolIndex,
  6719. },
  6720. "*"
  6721. );
  6722. } else if (i == 1) {
  6723. window.parent.postMessage(
  6724. {
  6725. tools: "1y",
  6726. cid: this.cid,
  6727. stage: this.unitIndex,
  6728. task: itemTaskIndex,
  6729. tool: toolIndex,
  6730. },
  6731. "*"
  6732. );
  6733. }
  6734. },
  6735. chapAddTools(i) {
  6736. if (this.chapTools[0].tools.length == 0) {
  6737. this.chapTools[0].tools.push(i);
  6738. } else {
  6739. if (this.chapTools[0].tools.indexOf(i) != -1) {
  6740. this.chapTools[0].tools.splice(this.chapTools[0].tools.indexOf(i), 1);
  6741. } else {
  6742. this.chapTools[0].tools.push(i);
  6743. }
  6744. }
  6745. this.$forceUpdate();
  6746. },
  6747. addChaptersDataTools() {
  6748. if (this.chapTools[0].tools.indexOf(4) != -1) {
  6749. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6750. this.chapCount
  6751. ].chapterData.push({
  6752. name: this.chapTools[0].toolDetail,
  6753. url: this.chapTools[0].tools,
  6754. type: 7,
  6755. askJson: this.askJson,
  6756. });
  6757. } else {
  6758. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6759. this.chapCount
  6760. ].chapterData.push({
  6761. name: this.chapTools[0].toolDetail,
  6762. url: this.chapTools[0].tools,
  6763. type: 7,
  6764. });
  6765. }
  6766. this.imgChange1(null, null, 7, this.chapCount);
  6767. this.dialogVisible4 = false;
  6768. },
  6769. addTools(i, itemTaskIndex, toolIndex) {
  6770. // if (
  6771. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6772. // .toolChoose[toolIndex].tool.length == 0
  6773. // ) {
  6774. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6775. // itemTaskIndex
  6776. // ].toolChoose[toolIndex].tool.push(i);
  6777. // } else {
  6778. // if (
  6779. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6780. // itemTaskIndex
  6781. // ].toolChoose[toolIndex].tool.indexOf(i) != -1
  6782. // ) {
  6783. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6784. // itemTaskIndex
  6785. // ].toolChoose[toolIndex].tool.splice(
  6786. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6787. // itemTaskIndex
  6788. // ].toolChoose[toolIndex].tool.indexOf(i),
  6789. // 1
  6790. // );
  6791. // } else {
  6792. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6793. // itemTaskIndex
  6794. // ].toolChoose[toolIndex].tool.push(i);
  6795. // }
  6796. // console.log(
  6797. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6798. // .toolChoose[toolIndex].tool
  6799. // );
  6800. // }
  6801. if (i == 4) {
  6802. if (
  6803. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6804. .toolChoose[toolIndex].askJson.askTitle == "" ||
  6805. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6806. .toolChoose[toolIndex].askJson[0].askstitle == "" ||
  6807. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6808. .toolChoose[toolIndex].askJson[0].checkList < 2
  6809. ) {
  6810. this.openTools(itemTaskIndex, 4, toolIndex);
  6811. // this.$message({
  6812. // message: "请填写完整问卷内容",
  6813. // type: "error",
  6814. // });
  6815. return;
  6816. }
  6817. }
  6818. if (i == 45) {
  6819. if (
  6820. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6821. .toolChoose[toolIndex].testJson ||
  6822. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6823. .toolChoose[toolIndex].testJson.testJson[0].teststitle == "" ||
  6824. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6825. .toolChoose[toolIndex].testJson.testJson[0].checkList < 2
  6826. ) {
  6827. this.openTools(itemTaskIndex, 45, toolIndex);
  6828. // this.$message({
  6829. // message: "请填写完整问卷内容",
  6830. // type: "error",
  6831. // });
  6832. return;
  6833. }
  6834. }
  6835. if (i == 47) {
  6836. if (
  6837. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6838. .toolChoose[toolIndex].sentenceList ||
  6839. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6840. .toolChoose[toolIndex].sentenceList[0].rightAnswer == 0
  6841. ) {
  6842. this.openTools(itemTaskIndex, 47, toolIndex);
  6843. return;
  6844. }
  6845. }
  6846. // if (i == 48) {
  6847. // if (
  6848. // !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6849. // .toolChoose[toolIndex].tableJson
  6850. // ) {
  6851. // this.openTools(itemTaskIndex, 48, toolIndex);
  6852. // return;
  6853. // }
  6854. // }
  6855. if (i == 50) {
  6856. if (
  6857. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6858. .toolChoose[toolIndex].uploadJson
  6859. ) {
  6860. this.openTools(itemTaskIndex, 50, toolIndex);
  6861. return;
  6862. }
  6863. }
  6864. if (i == 49) {
  6865. if (
  6866. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6867. .toolChoose[toolIndex].groupJson
  6868. ) {
  6869. this.openTools(itemTaskIndex, 49, toolIndex);
  6870. return;
  6871. }
  6872. }
  6873. if (i == 15) {
  6874. if (
  6875. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6876. .toolChoose[toolIndex].answerQ ||
  6877. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6878. .toolChoose[toolIndex].answerQ == ""
  6879. ) {
  6880. this.openTools(itemTaskIndex, 15, toolIndex);
  6881. // this.$message({
  6882. // message: "请填写问答内容",
  6883. // type: "error",
  6884. // });
  6885. return;
  6886. }
  6887. }
  6888. if (i == 40) {
  6889. if (
  6890. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6891. .toolChoose[toolIndex].rateJson ||
  6892. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6893. .toolChoose[toolIndex].rateJson.length
  6894. ) {
  6895. this.openTools(itemTaskIndex, 40, toolIndex);
  6896. return;
  6897. }
  6898. }
  6899. if (i == 41) {
  6900. if (
  6901. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6902. .toolChoose[toolIndex].selectJson ||
  6903. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6904. .toolChoose[toolIndex].selectJson.url == "" ||
  6905. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6906. .toolChoose[toolIndex].selectJson.select.length ||
  6907. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6908. .toolChoose[toolIndex].selectJson.answer.length
  6909. ) {
  6910. this.openTools(itemTaskIndex, 41, toolIndex);
  6911. return;
  6912. }
  6913. }
  6914. if (i == 42) {
  6915. if (
  6916. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6917. .toolChoose[toolIndex].answerQ ||
  6918. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6919. .toolChoose[toolIndex].answerQ == ""
  6920. ) {
  6921. this.openTools(itemTaskIndex, 42, toolIndex);
  6922. return;
  6923. }
  6924. }
  6925. if (
  6926. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  6927. .toolChoose[toolIndex].tool.length > 0
  6928. ) {
  6929. if (
  6930. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6931. itemTaskIndex
  6932. ].toolChoose[toolIndex].tool.indexOf(i) != -1
  6933. ) {
  6934. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6935. itemTaskIndex
  6936. ].toolChoose[toolIndex].tool.splice(
  6937. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6938. itemTaskIndex
  6939. ].toolChoose[toolIndex].tool.indexOf(i),
  6940. 1
  6941. );
  6942. } else {
  6943. // this.$message({
  6944. // message: "每个工具只能添加一个",
  6945. // type: "error",
  6946. // });
  6947. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6948. itemTaskIndex
  6949. ].toolChoose[toolIndex].tool = [];
  6950. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6951. itemTaskIndex
  6952. ].toolChoose[toolIndex].tool.push(i);
  6953. }
  6954. } else {
  6955. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  6956. itemTaskIndex
  6957. ].toolChoose[toolIndex].tool.push(i);
  6958. }
  6959. this.$forceUpdate();
  6960. },
  6961. addAskList() {
  6962. this.askJson.askJson.push({
  6963. askstitle: "",
  6964. askItem: 1,
  6965. checkList: [],
  6966. });
  6967. this.askJson.askCount++;
  6968. },
  6969. addTestList() {
  6970. this.testJson.testJson.push({
  6971. teststitle: "",
  6972. testItem: 1,
  6973. checkList: [],
  6974. timuList: [],
  6975. answer: [],
  6976. type: "1",
  6977. });
  6978. this.testJson.testCount++;
  6979. },
  6980. deleteAskList(index) {
  6981. this.askJson.askJson.splice(index, 1);
  6982. this.askJson.askCount--;
  6983. },
  6984. deleteTestList(index) {
  6985. this.testJson.testJson.splice(index, 1);
  6986. this.testJson.testCount--;
  6987. },
  6988. addcheckList(json) {
  6989. json.checkList.length++;
  6990. json.askItem++;
  6991. },
  6992. deletecheckList(json) {
  6993. json.checkList.length--;
  6994. json.askItem--;
  6995. },
  6996. addTcheckList(json) {
  6997. json.checkList.length++;
  6998. json.testItem++;
  6999. },
  7000. deleteTcheckList(json) {
  7001. json.checkList.length--;
  7002. json.testItem--;
  7003. },
  7004. checkTestType(type, json) {
  7005. json.type = type;
  7006. json.answer = [];
  7007. },
  7008. addSelectList(json) {
  7009. json.select.push("");
  7010. json.answer.push("");
  7011. },
  7012. deleteSelectList(json) {
  7013. // json.select.length--;
  7014. // json.answer.length--;
  7015. json.select.splice(json.select.length - 1, 1);
  7016. json.answer.splice(json.answer.length - 1, 1);
  7017. },
  7018. addAsk() {
  7019. if (this.askJson.askTitle === "") {
  7020. this.$message.error("标题不能为空!");
  7021. return;
  7022. }
  7023. var aj = this.askJson.askJson;
  7024. var b = 1;
  7025. for (var i = 0; i < aj.length; i++) {
  7026. if (aj[i].askstitle === "") {
  7027. var a = 1;
  7028. for (let index = 0; index < aj[i].askItem; index++) {
  7029. const element = aj[i].checkList[index]
  7030. ? aj[i].checkList[index]
  7031. : "";
  7032. if (element != "") {
  7033. b++;
  7034. this.$message.error("填写了选项,题目不能为空!");
  7035. return;
  7036. } else {
  7037. a++;
  7038. }
  7039. }
  7040. if (b == 1) {
  7041. this.$message.error("至少填写一个问题");
  7042. return;
  7043. }
  7044. } else if (aj[i].askstitle != "") {
  7045. for (let index = 0; index < aj[i].askItem; index++) {
  7046. const element = aj[i].checkList[index]
  7047. ? aj[i].checkList[index]
  7048. : "";
  7049. var index = 0;
  7050. for (var z = 0; z < aj[i].checkList.length; z++) {
  7051. var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
  7052. if (checkC != "") {
  7053. index++;
  7054. } else {
  7055. this.$message.error("选项不能为空!");
  7056. return;
  7057. }
  7058. }
  7059. b++;
  7060. if (index < 2) {
  7061. this.$message.error("填写了的题目,选项至少要有两项!");
  7062. return;
  7063. }
  7064. }
  7065. }
  7066. }
  7067. this.askJson.askJson = this.askJson.askJson.filter((el) => {
  7068. var elc = el.checkList.filter((element) => {
  7069. return element != "";
  7070. });
  7071. return el.askstitle != "" && elc.length != 0;
  7072. });
  7073. if (!this.dialogVisible4) {
  7074. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7075. this.taskCount
  7076. ].toolChoose[this.toolIndex] = this.askJson;
  7077. }
  7078. this.dialogVisible5 = false;
  7079. if (
  7080. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7081. .toolChoose[this.toolIndex].tool != 4
  7082. ) {
  7083. this.addTools(4, this.taskCount, this.toolIndex);
  7084. }
  7085. },
  7086. addTest() {
  7087. // if (this.testJson.testTitle === "") {
  7088. // this.$message.error("标题不能为空!");
  7089. // return;
  7090. // }
  7091. var aj = this.testJson.testJson;
  7092. var b = 1;
  7093. for (var i = 0; i < aj.length; i++) {
  7094. if (aj[i].teststitle === "" && aj[i].timuList.length == 0) {
  7095. var a = 1;
  7096. for (let index = 0; index < aj[i].testItem; index++) {
  7097. const element = aj[i].checkList[index]
  7098. ? aj[i].checkList[index]
  7099. : "";
  7100. if (element != "") {
  7101. b++;
  7102. this.$message.error("填写了选项,题目不能为空!");
  7103. return;
  7104. } else {
  7105. a++;
  7106. }
  7107. }
  7108. if (b == 1) {
  7109. this.$message.error("至少填写一个问题");
  7110. return;
  7111. }
  7112. } else if (aj[i].teststitle != "" || aj[i].timuList.length > 0) {
  7113. for (let index = 0; index < aj[i].testItem; index++) {
  7114. const element = aj[i].checkList[index]
  7115. ? aj[i].checkList[index]
  7116. : "";
  7117. var index = 0;
  7118. for (var z = 0; z < aj[i].checkList.length; z++) {
  7119. var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
  7120. if (checkC != "") {
  7121. index++;
  7122. } else {
  7123. this.$message.error("选项不能为空!");
  7124. return;
  7125. }
  7126. }
  7127. b++;
  7128. if (index < 2) {
  7129. this.$message.error("填写了的题目,选项至少要有两项!");
  7130. return;
  7131. }
  7132. if (
  7133. (aj[i].type == "2" && !aj[i].answer.length) ||
  7134. (aj[i].type == "1" && aj[i].answer !== 0 && !aj[i].answer)
  7135. ) {
  7136. this.$message.error("有题目未选择答案请选择答案");
  7137. return;
  7138. }
  7139. }
  7140. }
  7141. }
  7142. var isTestJson = JSON.parse(JSON.stringify(this.testJson));
  7143. isTestJson.testJson = this.testJson.testJson.filter((el) => {
  7144. var elc = el.checkList.filter((element) => {
  7145. return element != "";
  7146. });
  7147. return (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0;
  7148. });
  7149. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7150. this.taskCount
  7151. ].toolChoose[this.toolIndex].testJson = isTestJson;
  7152. this.dialogVisibleChoice = false;
  7153. if (
  7154. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7155. .toolChoose[this.toolIndex].tool != 45
  7156. ) {
  7157. this.addTools(45, this.taskCount, this.toolIndex);
  7158. }
  7159. },
  7160. addAnswer() {
  7161. if (this.answerQ == "") {
  7162. this.$message.error("请输入您想要问的问题");
  7163. return;
  7164. }
  7165. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7166. this.taskCount
  7167. ].toolChoose[this.toolIndex].answerQ = this.answerQ;
  7168. this.dialogVisible8 = false;
  7169. if (
  7170. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7171. .toolChoose[this.toolIndex].tool != 15
  7172. ) {
  7173. this.addTools(15, this.taskCount, this.toolIndex);
  7174. }
  7175. },
  7176. addMp3Answer() {
  7177. if (this.answerQ == "") {
  7178. this.$message.error("请输入您想要回答的问题");
  7179. return;
  7180. }
  7181. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7182. this.taskCount
  7183. ].toolChoose[this.toolIndex].answerQ = this.answerQ;
  7184. this.dialogVisibleMp3 = false;
  7185. },
  7186. addRateAnswer() {
  7187. var a = 1;
  7188. for (var i = 0; i < this.rateJson.length; i++) {
  7189. if (this.rateJson[i].value == "") {
  7190. a = 2;
  7191. break;
  7192. }
  7193. }
  7194. if (a == 2) {
  7195. this.$message.error("请把评价信息填写完整");
  7196. return;
  7197. }
  7198. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7199. this.taskCount
  7200. ].toolChoose[this.toolIndex].rateJson = this.rateJson;
  7201. this.dialogVisibleRate = false;
  7202. if (
  7203. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7204. .toolChoose[this.toolIndex].tool != 40
  7205. ) {
  7206. this.addTools(40, this.taskCount, this.toolIndex);
  7207. }
  7208. },
  7209. addSelectAnswer() {
  7210. if (this.selectJson.url == "") {
  7211. this.$message.error("请上传题目");
  7212. return;
  7213. }
  7214. if (!this.selectJson.select.length) {
  7215. this.$message.error("请添加选项");
  7216. return;
  7217. }
  7218. if (!this.selectJson.answer.length) {
  7219. this.$message.error("请设置答案");
  7220. return;
  7221. }
  7222. var a = 1;
  7223. for (var i = 0; i < this.selectJson.answer.length; i++) {
  7224. if (!this.selectJson.answer[i] && this.selectJson.answer[i] !== 0) {
  7225. a = 2;
  7226. }
  7227. }
  7228. if (a == 2) {
  7229. this.$message.error("请设置答案");
  7230. return;
  7231. }
  7232. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7233. this.taskCount
  7234. ].toolChoose[this.toolIndex].selectJson = this.selectJson;
  7235. this.dialogVisibleSelect = false;
  7236. if (
  7237. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7238. .toolChoose[this.toolIndex].tool != 41
  7239. ) {
  7240. this.addTools(41, this.taskCount, this.toolIndex);
  7241. }
  7242. },
  7243. nextSelectSteps() {
  7244. if (this.selectJson.url == "") {
  7245. this.$message.error("请上传题目");
  7246. return;
  7247. }
  7248. if (!this.selectJson.select.length) {
  7249. this.$message.error("请添加选项");
  7250. return;
  7251. }
  7252. var a = 1;
  7253. for (var i = 0; i < this.selectJson.select.length; i++) {
  7254. if (!this.selectJson.select[i]) {
  7255. a = 2;
  7256. }
  7257. }
  7258. if (a == 2) {
  7259. this.$message.error("添加的选项不能为空");
  7260. return;
  7261. }
  7262. this.selectSteps++;
  7263. },
  7264. selectCourseDetail() {
  7265. if (this.cid == "" || this.cid == undefined) {
  7266. console.log("这是新增课程");
  7267. this.selectAllType();
  7268. } else {
  7269. this.cidType = 1;
  7270. let params = {
  7271. cid: this.cid,
  7272. };
  7273. this.ajax
  7274. .get(this.$store.state.api + "select_course_detail", params)
  7275. .then((res) => {
  7276. this.loading = true;
  7277. this.unitJson = JSON.parse(res.data[0][0].chapters);
  7278. for (var j = 0; j < this.unitJson.length; j++) {
  7279. for (
  7280. var k = 0;
  7281. k < this.unitJson[j].chapterInfo[0].taskJson.length;
  7282. k++
  7283. ) {
  7284. this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose = this
  7285. .unitJson[j].chapterInfo[0].taskJson[k].toolChoose
  7286. ? this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose
  7287. : [];
  7288. let _chapterData = [];
  7289. for (
  7290. var c = 0;
  7291. c <
  7292. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData
  7293. .length;
  7294. c++
  7295. ) {
  7296. if (
  7297. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
  7298. ) {
  7299. _chapterData.push(
  7300. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
  7301. );
  7302. }
  7303. }
  7304. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData =
  7305. _chapterData;
  7306. }
  7307. }
  7308. this.$forceUpdate();
  7309. this.courseName = res.data[0][0].title;
  7310. this.courseText = res.data[0][0].brief;
  7311. this.evalua = res.data[0][0].evaId;
  7312. this.cover = JSON.parse(res.data[0][0].cover);
  7313. this.noneBtnImg = this.cover.length >= 1;
  7314. // this.checkboxList =
  7315. // res.data[0][0].course_student.length > 0
  7316. // ? JSON.parse(res.data[0][0].course_student)
  7317. // : [];
  7318. this.checkboxList2 = res.data[0][0].juri
  7319. ? res.data[0][0].juri.split(",")
  7320. : [];
  7321. this.checkboxList3 = res.data[0][0].course_teacher
  7322. ? res.data[0][0].course_teacher.split(",")
  7323. : [];
  7324. // this.isTeacherSee =
  7325. // res.data[0][0].is_teacher_look == 0 ? true : false;
  7326. this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
  7327. this.myWord = res.data[0][0].template;
  7328. this.templateC.id = "123";
  7329. this.courseUserid = res.data[0][0].userid;
  7330. this.nbOrder = res.data[0][0].ordernumber;
  7331. this.courseTypeId = [];
  7332. for (var i = 0; i < res.data[1].length; i++) {
  7333. this.courseTypeId.push(res.data[1][i].typeid);
  7334. }
  7335. console.log(this.courseTypeId);
  7336. // if (this.timer) clearInterval(this.timer);
  7337. if (this.timer) clearTimeout(this.timer);
  7338. this.timer = null;
  7339. // this.timer = setInterval(() => {
  7340. this.seleteCourseUpdate();
  7341. this.setMan();
  7342. this.selectAllType();
  7343. // }, 5000);
  7344. this.$forceUpdate();
  7345. setTimeout(() => {
  7346. this.checkEva(this.evalua);
  7347. }, 0);
  7348. })
  7349. .catch((err) => {
  7350. console.error(err);
  7351. });
  7352. }
  7353. },
  7354. seleteCourseUpdate() {
  7355. let params = {
  7356. cid: this.cid,
  7357. };
  7358. this.ajax
  7359. .get(this.$store.state.api + "select_course_detail", params)
  7360. .then((res) => {
  7361. // console.log(this.unitJson);
  7362. let unitJson = JSON.parse(res.data[0][0].chapters);
  7363. this.unitJson2 = JSON.parse(res.data[0][0].chapters);
  7364. let _unitJson2 = JSON.parse(JSON.stringify(this.unitJson));
  7365. let _unitJson = [];
  7366. let _chapAarry = [];
  7367. let _unitIndex = JSON.parse(JSON.stringify(this.unitIndex));
  7368. let _unitIndex2 = JSON.parse(JSON.stringify(this.unitIndex));
  7369. let index = 1;
  7370. let chapindex;
  7371. if (_unitJson2.length > unitJson.length) {
  7372. for (let c = 0; c < _unitJson2.length; c++) {
  7373. _chapAarry.push(_unitJson2[c].chapterInfo[0].chapterid);
  7374. }
  7375. for (let j = 0; j < unitJson.length; j++) {
  7376. let count = 0;
  7377. for (let k = 0; k < _unitJson2.length; k++) {
  7378. if (
  7379. unitJson[j].chapterInfo[0].chapterid ==
  7380. _unitJson2[k].chapterInfo[0].chapterid
  7381. ) {
  7382. count++;
  7383. _chapAarry.splice(
  7384. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  7385. 1
  7386. );
  7387. _unitJson.push(unitJson[j]);
  7388. break;
  7389. }
  7390. }
  7391. // if(count === 0){
  7392. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  7393. // }
  7394. }
  7395. for (let k = 0; k < _unitJson2.length; k++) {
  7396. if (_unitJson2[k].isUpdate == 1) {
  7397. _chapAarry.splice(
  7398. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  7399. 1
  7400. );
  7401. _unitJson.push(_unitJson2[k]);
  7402. }
  7403. }
  7404. console.log(_chapAarry);
  7405. for (let d = 0; d < _unitJson2.length; d++) {
  7406. if (
  7407. _chapAarry.indexOf(_unitJson2[d].chapterInfo[0].chapterid) != -1
  7408. ) {
  7409. if (_unitIndex == d) {
  7410. index = 2;
  7411. }
  7412. chapindex = d;
  7413. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  7414. }
  7415. }
  7416. } else {
  7417. _unitJson = JSON.parse(JSON.stringify(_unitJson2));
  7418. }
  7419. for (let i = 0; i < unitJson.length; i++) {
  7420. if (
  7421. (i < _unitJson.length - 1 || i == _unitJson.length - 1) &&
  7422. _unitJson[i].chapterInfo[0].chapterid !=
  7423. unitJson[i].chapterInfo[0].chapterid
  7424. ) {
  7425. if (i == _unitJson.length - 1) {
  7426. // this.unitIndex++
  7427. _unitIndex2++;
  7428. }
  7429. _unitJson.splice(i, 0, unitJson[i]);
  7430. } else if (i > _unitJson.length - 1) {
  7431. _unitJson.push(unitJson[i]);
  7432. } else if (
  7433. _unitJson[i].chapterInfo[0].chapterid ==
  7434. unitJson[i].chapterInfo[0].chapterid
  7435. ) {
  7436. _unitJson[i] = unitJson[i];
  7437. }
  7438. // if (i == _unitIndex) {
  7439. // continue;
  7440. // } else
  7441. }
  7442. if (_chapAarry.length && index != 2) {
  7443. if (chapindex < _unitIndex) {
  7444. this.isDelete = 2;
  7445. // this.unitIndex--;
  7446. _unitIndex2--;
  7447. } else if (
  7448. _unitJson2[_unitIndex].chapterInfo[0].chapterid !=
  7449. _unitJson[_unitIndex].chapterInfo[0].chapterid
  7450. ) {
  7451. this.isDelete = 2;
  7452. for (let n = 0; n < _unitJson.length; n++) {
  7453. if (
  7454. _unitJson2[_unitIndex].chapterInfo[0].chapterid ==
  7455. _unitJson[n].chapterInfo[0].chapterid
  7456. ) {
  7457. // this.unitIndex = n;
  7458. _unitIndex2 = n;
  7459. _unitJson[n] = _unitJson2[_unitIndex];
  7460. break;
  7461. }
  7462. }
  7463. }
  7464. } else if (index != 2) {
  7465. // _unitJson[this.unitIndex] = _unitJson2[_unitIndex];
  7466. _unitJson2[_unitIndex];
  7467. for (
  7468. var ci = 0;
  7469. ci < _unitJson2[_unitIndex].chapterInfo[0].taskJson.length;
  7470. ci++
  7471. ) {
  7472. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose =
  7473. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose
  7474. ? _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  7475. .toolChoose
  7476. : [];
  7477. let _chapterData = [];
  7478. for (
  7479. var c = 0;
  7480. c <
  7481. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData
  7482. .length;
  7483. c++
  7484. ) {
  7485. if (
  7486. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  7487. .chapterData[c]
  7488. ) {
  7489. _chapterData.push(
  7490. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  7491. .chapterData[c]
  7492. );
  7493. }
  7494. }
  7495. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData =
  7496. _chapterData;
  7497. }
  7498. _unitJson[_unitIndex2] = _unitJson2[_unitIndex];
  7499. }
  7500. if (index == 1) {
  7501. this.unitJson = _unitJson;
  7502. this.$forceUpdate();
  7503. setTimeout(() => {
  7504. if (this.unitIndex != _unitIndex2) {
  7505. this.isDelete = 2;
  7506. this.unitIndex = _unitIndex2;
  7507. }
  7508. }, 0);
  7509. this.timer = setTimeout(() => {
  7510. this.seleteCourseUpdate();
  7511. }, 1000);
  7512. } else if (index == 2) {
  7513. let _this = this;
  7514. _this
  7515. .$confirm(
  7516. "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
  7517. "提示",
  7518. {
  7519. confirmButtonText: "需要",
  7520. cancelButtonText: "取消",
  7521. type: "warning",
  7522. }
  7523. )
  7524. .then(() => {
  7525. if (_this.time()) {
  7526. _this.restoreWork(
  7527. _chapAarry[0],
  7528. _unitJson,
  7529. chapindex,
  7530. _unitJson2,
  7531. _unitIndex2
  7532. );
  7533. }
  7534. })
  7535. .catch(() => {
  7536. _this.unitJson = _unitJson;
  7537. _this.$forceUpdate();
  7538. setTimeout(() => {
  7539. if (this.unitIndex != _unitIndex2) {
  7540. this.isDelete = 2;
  7541. this.unitIndex = _unitIndex2;
  7542. }
  7543. }, 0);
  7544. _this.timer = setTimeout(() => {
  7545. _this.seleteCourseUpdate();
  7546. }, 1000);
  7547. });
  7548. }
  7549. })
  7550. .catch((err) => {
  7551. console.error(err);
  7552. });
  7553. },
  7554. restoreWork(chapid, unitJson, chapindex, unitJson2, unitIndex2) {
  7555. let params = [
  7556. {
  7557. cid: this.cid,
  7558. chapters: JSON.stringify(this.unitJson),
  7559. uid: this.userid,
  7560. chapid: chapid,
  7561. },
  7562. ];
  7563. this.ajax
  7564. .post(this.$store.state.api + "restoreWork", params)
  7565. .then((res) => {
  7566. this.$message({
  7567. message: "恢复成功",
  7568. type: "success",
  7569. });
  7570. unitJson.splice(chapindex, 0, unitJson2[chapindex]);
  7571. this.unitJson = unitJson;
  7572. this.$forceUpdate();
  7573. setTimeout(() => {
  7574. if (this.unitIndex != unitIndex2) {
  7575. this.isDelete = 2;
  7576. this.unitIndex = unitIndex2;
  7577. }
  7578. }, 0);
  7579. this.timer = setTimeout(() => {
  7580. this.seleteCourseUpdate();
  7581. }, 1000);
  7582. })
  7583. .catch((err) => {
  7584. this.$message.error("网络不佳");
  7585. console.error(err);
  7586. });
  7587. },
  7588. getTypeName() {
  7589. console.log(this.courseTypeId);
  7590. this.$forceUpdate();
  7591. },
  7592. selectAllType() {
  7593. let params = {
  7594. org: this.org && this.org != "" ? this.org : "",
  7595. oid: this.oid && this.oid != "" ? this.oid : "",
  7596. };
  7597. this.ajax
  7598. .get(this.$store.state.api + "selectAllType", params)
  7599. .then((res) => {
  7600. this.CourseType = res.data;
  7601. let _courseTypeId = [];
  7602. for (var i = 0; i < res.data[0].length; i++) {
  7603. if (!this.cid) {
  7604. this.courseTypeId[res.data[0][i].id] = [];
  7605. }
  7606. if (!this.CourseTypeJson[res.data[0][i].id]) {
  7607. this.CourseTypeJson[res.data[0][i].id] = [];
  7608. }
  7609. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  7610. if (res.data[0][i].name == "栏目") {
  7611. this.CourseType[0][i].name = "主题";
  7612. }
  7613. }
  7614. if (res.data[2].length == 0 && res.data[3].length == 0) {
  7615. for (var j = 0; j < res.data[1].length; j++) {
  7616. if (
  7617. this.courseTypeId.indexOf(res.data[1][j].id) != -1 &&
  7618. _courseTypeId.indexOf(res.data[1][j].id) == -1
  7619. ) {
  7620. _courseTypeId.push(res.data[1][j].id);
  7621. }
  7622. if (res.data[0][i].id == res.data[1][j].pid) {
  7623. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  7624. }
  7625. }
  7626. } else {
  7627. if (res.data[2].length > 0) {
  7628. for (var j = 0; j < res.data[2].length; j++) {
  7629. if (
  7630. this.courseTypeId.indexOf(res.data[2][j].id) != -1 &&
  7631. _courseTypeId.indexOf(res.data[2][j].id) == -1
  7632. ) {
  7633. _courseTypeId.push(res.data[2][j].id);
  7634. }
  7635. if (res.data[0][i].id == res.data[2][j].pid) {
  7636. this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
  7637. }
  7638. }
  7639. }
  7640. if (res.data[3].length > 0) {
  7641. for (var j = 0; j < res.data[3].length; j++) {
  7642. if (
  7643. this.courseTypeId.indexOf(res.data[3][j].id) != -1 &&
  7644. _courseTypeId.indexOf(res.data[3][j].id) == -1
  7645. ) {
  7646. _courseTypeId.push(res.data[3][j].id);
  7647. }
  7648. if (res.data[0][i].id == res.data[3][j].pid) {
  7649. this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
  7650. }
  7651. }
  7652. }
  7653. }
  7654. }
  7655. this.courseTypeId = _courseTypeId;
  7656. })
  7657. .catch((err) => {
  7658. console.error(err);
  7659. });
  7660. },
  7661. selectType() {
  7662. this.ajax
  7663. .get(this.$store.state.api + "selectType")
  7664. .then((res) => {
  7665. this.CourseType = res.data;
  7666. for (var i = 0; i < res.data[0].length; i++) {
  7667. if (!this.cid) {
  7668. this.courseTypeId[res.data[0][i].id] = "";
  7669. }
  7670. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  7671. if (res.data[0][i].name == "栏目") {
  7672. this.CourseType[0][i].name = "主题";
  7673. }
  7674. }
  7675. for (var j = 0; j < res.data[1].length; j++) {
  7676. if (res.data[0][i].id == res.data[1][j].pid) {
  7677. if (!this.CourseTypeJson[res.data[0][i].id]) {
  7678. this.CourseTypeJson[res.data[0][i].id] = [];
  7679. }
  7680. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  7681. }
  7682. }
  7683. }
  7684. this.selectTypeByOid();
  7685. this.selectTypeByOrg();
  7686. })
  7687. .catch((err) => {
  7688. console.error(err);
  7689. });
  7690. },
  7691. selectTypeByOid() {
  7692. let params = {
  7693. oid: this.oid,
  7694. };
  7695. this.ajax
  7696. .get(this.$store.state.api + "selectTypeByOid", params)
  7697. .then((res) => {
  7698. for (var i = 0; i < res.data[0].length; i++) {
  7699. for (var j = 0; j < res.data[1].length; j++) {
  7700. if (res.data[0][i].id == res.data[1][j].pid) {
  7701. if (!this.CourseTypeJson[res.data[0][i].id]) {
  7702. this.CourseTypeJson[res.data[0][i].id] = [];
  7703. }
  7704. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  7705. }
  7706. }
  7707. }
  7708. })
  7709. .catch((err) => {
  7710. console.error(err);
  7711. });
  7712. },
  7713. selectTypeByOrg() {
  7714. let params = {
  7715. oid: this.org,
  7716. };
  7717. this.ajax
  7718. .get(this.$store.state.api + "selectTypeByOrg", params)
  7719. .then((res) => {
  7720. for (var i = 0; i < res.data[0].length; i++) {
  7721. for (var j = 0; j < res.data[1].length; j++) {
  7722. if (res.data[0][i].id == res.data[1][j].pid) {
  7723. if (!this.CourseTypeJson[res.data[0][i].id]) {
  7724. this.CourseTypeJson[res.data[0][i].id] = [];
  7725. }
  7726. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  7727. }
  7728. }
  7729. }
  7730. this.$forceUpdate();
  7731. })
  7732. .catch((err) => {
  7733. console.error(err);
  7734. });
  7735. },
  7736. OtherMb(type) {
  7737. this.typeMode = type;
  7738. setTimeout(() => {
  7739. this.checkEva(this.checkId);
  7740. }, 0);
  7741. },
  7742. openMember() {
  7743. this.searchTN = "";
  7744. this.getTeacher();
  7745. this.dialogVisibleMember = true;
  7746. },
  7747. checkEva(id) {
  7748. this.selectEva();
  7749. this.evalua = id;
  7750. this.checkId = id;
  7751. if (this.evalua != "") {
  7752. for (var i = 0; i < this.evaJuri.length; i++) {
  7753. if (this.evalua == this.evaJuri[i].id) {
  7754. this.eTitle = this.evaJuri[i].title;
  7755. this.eJson = JSON.parse(this.evaJuri[i].content);
  7756. }
  7757. }
  7758. this.data.data = [];
  7759. this.$forceUpdate();
  7760. setTimeout(() => {
  7761. this.setMindData();
  7762. }, 500);
  7763. }
  7764. },
  7765. selectEva() {
  7766. let params = {
  7767. oid: this.oid,
  7768. };
  7769. this.ajax
  7770. .get(this.$store.state.api + "selectAllEvaluation", params)
  7771. .then((res) => {
  7772. this.evaJuri = res.data[0];
  7773. })
  7774. .catch((err) => {
  7775. console.error(err);
  7776. });
  7777. },
  7778. setMindData() {
  7779. let targetArray = [];
  7780. this.data.data = [];
  7781. this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
  7782. let _eJson = Object.keys(this.eJson);
  7783. let _e = this.eJson;
  7784. for (let i = 0; i < _eJson.length; i++) {
  7785. let element = _e[_eJson[i]];
  7786. this.data.data.push({
  7787. id: element.id,
  7788. parentid: "root",
  7789. topic: element.name,
  7790. });
  7791. // targetArray.push({
  7792. // id: element.id,
  7793. // parentid: "root",
  7794. // name: element.name,
  7795. // });
  7796. targetArray.push({
  7797. value: element.name,
  7798. label: element.name,
  7799. children: [],
  7800. });
  7801. let _eJsonc = Object.keys(element.child);
  7802. let _e2 = element.child;
  7803. for (let j = 0; j < _eJsonc.length; j++) {
  7804. let _ec = _e2[_eJsonc[j]];
  7805. this.data.data.push({
  7806. id: _ec.id,
  7807. parentid: element.id,
  7808. topic: _ec.name,
  7809. });
  7810. // targetArray.push({
  7811. // id: _ec.id,
  7812. // parentid: element.id,
  7813. // name: _ec.name,
  7814. // });
  7815. targetArray[i].children.push({
  7816. value: _ec.name,
  7817. label: _ec.name,
  7818. children: [],
  7819. });
  7820. let _eJsonz = Object.keys(_ec.child);
  7821. let _e3 = _ec.child;
  7822. for (let z = 0; z < _eJsonz.length; z++) {
  7823. let _ez = _e3[_eJsonz[z]];
  7824. this.data.data.push({
  7825. id: _ez.id,
  7826. parentid: _ec.id,
  7827. topic: _ez.name,
  7828. });
  7829. // targetArray.push({
  7830. // id: _ez.id,
  7831. // parentid: _ec.id,
  7832. // name: _ez.name,
  7833. // });
  7834. targetArray[i].children[j].children.push({
  7835. value: _ez.name,
  7836. label: _ez.name,
  7837. });
  7838. }
  7839. }
  7840. }
  7841. this.targetArray = targetArray;
  7842. this.$forceUpdate();
  7843. },
  7844. /*添加评价 */
  7845. addEList(index, tIndex) {
  7846. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList
  7847. ? this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.push({
  7848. value: "",
  7849. detail: "",
  7850. score: 5,
  7851. })
  7852. : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
  7853. { value: "", detail: "", score: 5 },
  7854. ]);
  7855. this.$forceUpdate();
  7856. },
  7857. forceUpdate() {
  7858. this.$forceUpdate();
  7859. },
  7860. deletEList(index, tIndex, eIndex) {
  7861. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.splice(
  7862. eIndex,
  7863. 1
  7864. );
  7865. this.$forceUpdate();
  7866. },
  7867. getChoosePic(t) {
  7868. this.chooseType = t;
  7869. this.getAllBanner();
  7870. },
  7871. getAllBanner() {
  7872. this.sysPicVisible = true;
  7873. let params = {
  7874. t: this.chooseType,
  7875. };
  7876. this.ajax
  7877. .get(this.$store.state.api + "selectAllBanner", params)
  7878. .then((res) => {
  7879. this.sysPic = res.data[0];
  7880. })
  7881. .catch((err) => {
  7882. console.error(err);
  7883. });
  7884. },
  7885. // getClass() {
  7886. // let params = {
  7887. // oid: this.oid,
  7888. // };
  7889. // this.ajax
  7890. // .get(this.$store.state.api + "selectClassBySchool", params)
  7891. // .then((res) => {
  7892. // this.classJuri = res.data[0];
  7893. // })
  7894. // .catch((err) => {
  7895. // console.error(err);
  7896. // });
  7897. // },
  7898. deleteSysPic() {
  7899. this.cover = [];
  7900. this.isSysPic = false;
  7901. },
  7902. deleteSelectPic() {
  7903. this.selectJson.url = "";
  7904. },
  7905. setEListStar() {
  7906. this.$forceUpdate();
  7907. },
  7908. deletRateList(i) {
  7909. this.rateJson.splice(i, 1);
  7910. },
  7911. addRateList() {
  7912. this.rateJson.push({ detail: "", score: 5, value: "" });
  7913. },
  7914. addSt() {
  7915. this.sentenceList.push({
  7916. sentenceTitle: "",
  7917. addSentence: [],
  7918. rightAnswer: [],
  7919. });
  7920. },
  7921. addSen(i) {
  7922. this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
  7923. // this.isPushTitleList.push(this.sentenceTitle);
  7924. this.sentenceList[i].sentenceTitle = "";
  7925. },
  7926. setRightAnswer(s, i, j) {
  7927. if (this.sentenceList[i].rightAnswer.indexOf(s) == -1) {
  7928. this.sentenceList[i].rightAnswer.push(s);
  7929. }
  7930. },
  7931. returnCard(r, i, j) {
  7932. this.sentenceList[i].rightAnswer.splice(j, 1);
  7933. },
  7934. addSentenceTool() {
  7935. for (var i = 0; i < this.sentenceList.length; i++) {
  7936. if (this.sentenceList[i].rightAnswer.length == 0) {
  7937. this.$message.error("请将信息填写完整!");
  7938. return;
  7939. }
  7940. if (
  7941. this.sentenceList[i].addSentence.length !=
  7942. this.sentenceList[i].rightAnswer.length
  7943. ) {
  7944. this.$message.error("请将信息填写完整!");
  7945. return;
  7946. }
  7947. }
  7948. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7949. this.taskCount
  7950. ].toolChoose[this.toolIndex].sentenceList = this.sentenceList;
  7951. this.sentenceList = [
  7952. { sentenceTitle: "", addSentence: [], rightAnswer: [] },
  7953. ];
  7954. this.dialogVisibleSentence = false;
  7955. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7956. // itemTaskIndex
  7957. // ].toolChoose[toolIndex].tool = [];
  7958. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7959. // itemTaskIndex
  7960. // ].toolChoose[toolIndex].tool.push(i);
  7961. if (
  7962. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7963. .toolChoose[this.toolIndex].tool != 47
  7964. ) {
  7965. this.addTools(47, this.taskCount, this.toolIndex);
  7966. }
  7967. },
  7968. addTableJson() {
  7969. // if (this.tableJson.text == "" || this.tableJson.text == "<p></p>") {
  7970. // this.$message.error("请将信息填写完整!");
  7971. // return;
  7972. // }
  7973. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7974. this.taskCount
  7975. ].toolChoose[this.toolIndex].tableJson = this.tableJson;
  7976. this.tableJson = [{ text: "" }];
  7977. this.dialogVisibleTable = false;
  7978. if (
  7979. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7980. .toolChoose[this.toolIndex].tool != 48
  7981. ) {
  7982. this.addTools(48, this.taskCount, this.toolIndex);
  7983. }
  7984. },
  7985. addWordJson() {
  7986. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7987. this.taskCount
  7988. ].toolChoose[this.toolIndex].wordJson = this.wordJson;
  7989. this.wordJson = [{ text: "" }];
  7990. this.dialogVisibleWord = false;
  7991. if (
  7992. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  7993. .toolChoose[this.toolIndex].tool != 52
  7994. ) {
  7995. this.addTools(52, this.taskCount, this.toolIndex);
  7996. }
  7997. },
  7998. addMoreUpload() {
  7999. if (this.uploadJson.length == 0) {
  8000. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8001. this.taskCount
  8002. ].toolChoose[this.toolIndex].uploadJson = [];
  8003. } else {
  8004. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8005. this.taskCount
  8006. ].toolChoose[this.toolIndex].uploadJson = this.uploadJson;
  8007. }
  8008. this.uploadJson = [];
  8009. this.dialogVisibleMoreUpload = false;
  8010. if (
  8011. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  8012. .toolChoose[this.toolIndex].tool != 50
  8013. ) {
  8014. this.addTools(50, this.taskCount, this.toolIndex);
  8015. }
  8016. },
  8017. addPreTime() {
  8018. if (this.preTime == 0) {
  8019. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8020. this.taskCount
  8021. ].toolChoose[this.toolIndex].preTime = 0;
  8022. } else {
  8023. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8024. this.taskCount
  8025. ].toolChoose[this.toolIndex].preTime = this.preTime;
  8026. }
  8027. this.preTime = 0;
  8028. this.dialogVisiblePreTime = false;
  8029. if (
  8030. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  8031. .toolChoose[this.toolIndex].tool != 10
  8032. ) {
  8033. this.addTools(10, this.taskCount, this.toolIndex);
  8034. }
  8035. },
  8036. goToTask(i) {
  8037. document.getElementsByClassName("rightBox")[0].scrollTop =
  8038. document.getElementsByClassName("taskBorder")[i].offsetTop - 100;
  8039. this.isClickColor = i + 1;
  8040. },
  8041. taskMove(type, index) {
  8042. if (type == 1) {
  8043. if (index > 0) {
  8044. let a = JSON.parse(
  8045. JSON.stringify(
  8046. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1]
  8047. )
  8048. );
  8049. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1] =
  8050. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
  8051. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
  8052. }
  8053. } else {
  8054. if (
  8055. index <
  8056. this.unitJson[this.unitIndex].chapterInfo[0].taskJson.length - 1
  8057. ) {
  8058. let a = JSON.parse(
  8059. JSON.stringify(
  8060. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1]
  8061. )
  8062. );
  8063. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1] =
  8064. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
  8065. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
  8066. }
  8067. }
  8068. this.$forceUpdate();
  8069. },
  8070. addGroup(i) {
  8071. // this.groupJson.group.splice(i + 1, 0, { name: "第"+(i+1)+"组" });
  8072. this.groupJson.group.push({
  8073. name: "第" + (this.groupJson.group.length + 1) + "组",
  8074. });
  8075. },
  8076. deleteGroup(i) {
  8077. this.groupJson.group.splice(i, 1);
  8078. },
  8079. addGroupJson() {
  8080. for (var i = 0; i < this.groupJson.group.length; i++) {
  8081. if (!this.groupJson.group[i].name) {
  8082. this.$message.error("请将信息填写完整!");
  8083. return;
  8084. }
  8085. }
  8086. if (!this.groupJson.number) {
  8087. this.$message.error("请将信息填写完整!");
  8088. return;
  8089. }
  8090. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8091. this.taskCount
  8092. ].toolChoose[this.toolIndex].groupJson = JSON.parse(
  8093. JSON.stringify(this.groupJson)
  8094. );
  8095. this.dialogVisibleGroup = false;
  8096. this.groupJson = {};
  8097. if (
  8098. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  8099. .toolChoose[this.toolIndex].tool != 49
  8100. ) {
  8101. this.addTools(49, this.taskCount, this.toolIndex);
  8102. }
  8103. },
  8104. updateTime(preTime) {
  8105. this.preTime = preTime;
  8106. },
  8107. },
  8108. beforeDestroy() {
  8109. clearTimeout(this.timer);
  8110. this.timer = null;
  8111. clearInterval(this.timer2);
  8112. this.timer2 = null;
  8113. },
  8114. beforeRouteLeave(to, from, next) {
  8115. clearTimeout(this.timer);
  8116. this.timer = null;
  8117. clearInterval(this.timer2);
  8118. this.timer2 = null;
  8119. next();
  8120. },
  8121. created() {
  8122. this.getStudent();
  8123. this.getTeacher();
  8124. this.getClass();
  8125. this.getTemplate();
  8126. // this.selectType();
  8127. this.selectEva();
  8128. this.loading = false;
  8129. this.timer2 = setInterval(() => {
  8130. this.selectEva();
  8131. }, 5000);
  8132. setTimeout(() => {
  8133. this.selectCourseDetail();
  8134. }, 500);
  8135. },
  8136. };
  8137. </script>
  8138. <style scoped>
  8139. @media screen and (max-width: 1280px) {
  8140. .mbCss {
  8141. flex-direction: column !important;
  8142. }
  8143. .pjCss {
  8144. width: 100% !important;
  8145. }
  8146. .evaCss {
  8147. width: 100% !important;
  8148. }
  8149. }
  8150. .dialog_diy >>> .el-dialog__header {
  8151. background: #3c3c3c !important;
  8152. padding: 15px 20px;
  8153. }
  8154. .dialog_diy >>> .el-dialog__title {
  8155. color: #fff;
  8156. }
  8157. .dialog_diy >>> .el-dialog__headerbtn {
  8158. top: 19px;
  8159. }
  8160. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  8161. color: #fff;
  8162. }
  8163. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  8164. color: #fff;
  8165. }
  8166. .dialog_diy >>> .el-dialog__body,
  8167. .dialog_diy >>> .el-dialog__footer {
  8168. background: #fafafa;
  8169. }
  8170. .dialog_diy3 >>> .el-dialog__body,
  8171. .dialog_diy3 >>> .el-dialog__footer {
  8172. background: #eee !important;
  8173. }
  8174. .dialog_diy3 >>> .el-dialog__body {
  8175. padding: 20px 20px;
  8176. }
  8177. .left {
  8178. border-right: 1px solid rgb(60, 94, 143);
  8179. display: flex;
  8180. flex-direction: column;
  8181. align-items: center;
  8182. min-height: 600px;
  8183. width: 385px;
  8184. height: 80%;
  8185. }
  8186. .tips {
  8187. color: rgb(128, 128, 128);
  8188. font-size: 12px;
  8189. width: 270px;
  8190. margin: 40px;
  8191. }
  8192. .pb_content {
  8193. height: 100% !important;
  8194. /* margin: 0 20px 0 20px; */
  8195. }
  8196. .pb_content_body {
  8197. width: 100% !important;
  8198. height: 100%;
  8199. }
  8200. .info_solid {
  8201. width: 270px;
  8202. height: 30px;
  8203. border-left: 1px solid #bdbdbd;
  8204. margin: 10px 0px 10px 30px;
  8205. }
  8206. .info_steps {
  8207. width: 270px;
  8208. font-size: 0.875rem;
  8209. display: flex;
  8210. align-items: center;
  8211. }
  8212. .info_steps span:nth-child(1) {
  8213. width: 30px;
  8214. height: 30px;
  8215. background: rgba(0, 0, 0, 0.38);
  8216. display: block;
  8217. color: #fff;
  8218. border-radius: 40px;
  8219. text-align: center;
  8220. line-height: 30px;
  8221. }
  8222. .steps_active {
  8223. background: #3d67bc !important;
  8224. }
  8225. .info_steps span:nth-child(2) {
  8226. margin-left: 5px;
  8227. }
  8228. .right {
  8229. height: 100%;
  8230. width: 100%;
  8231. display: flex;
  8232. overflow: hidden;
  8233. }
  8234. .basic_box {
  8235. margin: 0 auto;
  8236. position: relative;
  8237. padding: 0 20px 0 20px;
  8238. }
  8239. .basic_box_success {
  8240. width: 100%;
  8241. min-height: 455px;
  8242. padding: 50px 0;
  8243. position: relative;
  8244. text-align: center;
  8245. border-bottom: 1px solid #bfbfbf;
  8246. box-sizing: border-box;
  8247. display: flex;
  8248. align-items: center;
  8249. flex-direction: column;
  8250. justify-content: center;
  8251. }
  8252. .info_title {
  8253. font-size: 1.5em;
  8254. margin-right: 25px;
  8255. /* margin: 20px 30px 20px 30px; */
  8256. }
  8257. .bInfo_title {
  8258. text-align: left;
  8259. margin: 10px 0;
  8260. }
  8261. .small_title {
  8262. font-size: 14px;
  8263. line-height: 40px;
  8264. }
  8265. .chapter_beizhu {
  8266. font-size: 12px;
  8267. font-weight: bold;
  8268. float: right;
  8269. color: rgb(128, 128, 128);
  8270. margin-top: 5px;
  8271. }
  8272. .chapter_uploadBox1 {
  8273. text-align: left;
  8274. background-color: rgb(242, 242, 242);
  8275. width: 100%;
  8276. height: 67px;
  8277. padding: 0px 15px;
  8278. border-radius: 8px;
  8279. overflow: hidden;
  8280. font-size: 16px;
  8281. box-sizing: border-box;
  8282. position: relative;
  8283. }
  8284. .chapter_add {
  8285. width: 100%;
  8286. height: 32px;
  8287. margin-top: 15px;
  8288. cursor: pointer;
  8289. }
  8290. .chapter_add_l {
  8291. margin-left: 5px;
  8292. width: 30px;
  8293. height: 30px;
  8294. float: left;
  8295. border: 1px solid #aaa;
  8296. color: #aaa;
  8297. border-radius: 50%;
  8298. font-size: 25px;
  8299. text-align: center;
  8300. }
  8301. .chapter_add_r {
  8302. font-size: 18px;
  8303. height: 40px;
  8304. line-height: 30px;
  8305. text-indent: 10px;
  8306. color: #aaa;
  8307. }
  8308. .chapter_add_r span {
  8309. font-size: 12px;
  8310. color: rgb(204, 204, 204);
  8311. }
  8312. .chapter_add_input {
  8313. display: none;
  8314. }
  8315. .line {
  8316. width: 85%;
  8317. margin: 0 auto;
  8318. border-top: 1px solid #e5e5e5;
  8319. margin-top: 20px;
  8320. }
  8321. .info_btnBox {
  8322. width: 100%;
  8323. display: flex;
  8324. justify-content: space-evenly;
  8325. margin: 10px 0 10px 0;
  8326. }
  8327. .info_btn,
  8328. .teacherWord {
  8329. color: #fff;
  8330. background-color: #0f7eff;
  8331. padding: 8px 24px;
  8332. font-size: 0.9375rem;
  8333. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%),
  8334. 0px 3px 1px -2px rgb(0 0 0 / 12%);
  8335. min-width: 64px;
  8336. font-weight: 500;
  8337. border-radius: 4px;
  8338. box-sizing: border-box;
  8339. border: none;
  8340. cursor: pointer;
  8341. }
  8342. .teacherWord {
  8343. width: 105px !important;
  8344. text-align: center !important;
  8345. line-height: 36px !important;
  8346. padding: 0 !important;
  8347. font-size: 14px !important;
  8348. margin: 10px 0 !important;
  8349. }
  8350. .wordTeacher {
  8351. display: flex;
  8352. flex-direction: column;
  8353. width: 20%;
  8354. text-align: center;
  8355. font-size: 14px;
  8356. margin: 30px 30px 0 10px;
  8357. background: #fff;
  8358. position: relative;
  8359. border-radius: 5px;
  8360. padding: 25px 0px;
  8361. }
  8362. .wordPic {
  8363. margin: 0 auto;
  8364. width: 60px;
  8365. height: 60px;
  8366. cursor: pointer;
  8367. }
  8368. .deleteWord {
  8369. width: 22px;
  8370. height: 22px;
  8371. position: absolute;
  8372. right: 5px;
  8373. top: -15px;
  8374. cursor: pointer;
  8375. display: none;
  8376. z-index: 999;
  8377. }
  8378. .wordPic > img,
  8379. .deleteWord > img,
  8380. .addToolImg > img {
  8381. width: 100%;
  8382. height: 100%;
  8383. }
  8384. .info_btn:hover {
  8385. background-color: #4f7cd5 !important;
  8386. }
  8387. .cru_selectBox {
  8388. display: flex;
  8389. margin: 24px 0 10px;
  8390. flex-wrap: nowrap;
  8391. white-space: nowrap;
  8392. overflow: auto;
  8393. position: relative;
  8394. height: 47px;
  8395. }
  8396. .cru_selectBox::-webkit-scrollbar {
  8397. /*滚动条整体样式*/
  8398. width: 6px;
  8399. /*高宽分别对应横竖滚动条的尺寸*/
  8400. height: 6px;
  8401. }
  8402. /*定义滚动条轨道 内阴影+圆角*/
  8403. .cru_selectBox::-webkit-scrollbar-track {
  8404. border-radius: 10px;
  8405. background-color: #eee;
  8406. }
  8407. /*定义滑块 内阴影+圆角*/
  8408. .cru_selectBox::-webkit-scrollbar-thumb {
  8409. border-radius: 10px;
  8410. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  8411. background-color: rgba(0, 0, 0, 0.1);
  8412. }
  8413. .cru_line {
  8414. position: absolute;
  8415. bottom: 0px;
  8416. transition: all 0.5s;
  8417. left: 0px;
  8418. width: 125px;
  8419. margin-left: -25px;
  8420. }
  8421. .cru_select {
  8422. font-size: 21px;
  8423. margin-right: 37px;
  8424. margin-left: 5px;
  8425. cursor: pointer;
  8426. color: #a6a6a6;
  8427. }
  8428. .cru_selected {
  8429. color: #0b7fc2 !important;
  8430. }
  8431. .chapter_contentbox {
  8432. display: flex;
  8433. align-items: center;
  8434. margin-top: 15px;
  8435. }
  8436. .chapter_contentbox div:nth-child(1) {
  8437. /* width: 150px; */
  8438. margin: 0px;
  8439. /* font-size: 2em; */
  8440. color: black;
  8441. display: block;
  8442. white-space: nowrap;
  8443. overflow: hidden;
  8444. text-overflow: ellipsis;
  8445. /* font-weight: 600; */
  8446. margin-right: 20px;
  8447. font-size: 18px;
  8448. }
  8449. .chapter_contentbox div:nth-child(2) {
  8450. width: 380px;
  8451. }
  8452. .chapter_contentbox div:nth-child(3),
  8453. .remove {
  8454. background-image: url("../../assets/remove.png");
  8455. cursor: pointer;
  8456. opacity: 0.5;
  8457. width: 40px;
  8458. height: 50px;
  8459. background-repeat: no-repeat;
  8460. background-position: 5px 10px;
  8461. }
  8462. .remove1 {
  8463. background-image: url("../../assets/remove1.png");
  8464. background-repeat: no-repeat;
  8465. background-position: 5px 10px;
  8466. width: 40px;
  8467. height: 50px;
  8468. cursor: pointer;
  8469. }
  8470. .binfo_input {
  8471. font: inherit;
  8472. color: currentColor;
  8473. width: 100%;
  8474. margin: 0;
  8475. /* padding: 15px 14px; */
  8476. padding: 8px 14px;
  8477. display: block;
  8478. min-width: 0;
  8479. outline: none;
  8480. box-sizing: content-box;
  8481. background: none;
  8482. border: 1px solid rgba(0, 0, 0, 0.23);
  8483. border-radius: 4px;
  8484. box-sizing: border-box;
  8485. background: #fff;
  8486. font-size: 18px;
  8487. }
  8488. .binfo_input:focus-visible {
  8489. border: 1px solid rgba(61, 103, 188);
  8490. }
  8491. .time {
  8492. display: flex;
  8493. margin: 35px 0 80px 0;
  8494. }
  8495. .chapter_btnbox {
  8496. width: 160px;
  8497. border-radius: 5px;
  8498. border: 2px dashed gray;
  8499. display: flex;
  8500. padding: 8px 50px;
  8501. align-items: center;
  8502. justify-content: center;
  8503. margin: 30px auto 0;
  8504. cursor: pointer;
  8505. }
  8506. .icon_add {
  8507. position: relative;
  8508. width: 24px;
  8509. padding-top: 20px;
  8510. border-radius: 100%;
  8511. border-width: 2px;
  8512. border-style: solid;
  8513. border-color: gray;
  8514. }
  8515. .icon_add i:nth-child(1) {
  8516. position: absolute;
  8517. left: 50%;
  8518. top: 50%;
  8519. height: 60%;
  8520. transform: translate(-50%, -50%);
  8521. border-width: 1px;
  8522. border-style: solid;
  8523. border-color: inherit;
  8524. }
  8525. .icon_add i:nth-child(2) {
  8526. position: absolute;
  8527. top: 50%;
  8528. left: 50%;
  8529. width: 60%;
  8530. transform: translate(-50%, -50%);
  8531. border-width: 1px;
  8532. border-style: solid;
  8533. border-color: inherit;
  8534. }
  8535. .chapter_btn_w {
  8536. font-size: 0.9375rem;
  8537. font-weight: bold;
  8538. color: gray;
  8539. margin-left: 20px;
  8540. }
  8541. .disUoloadSty >>> .el-icon-plus {
  8542. display: none !important;
  8543. /* 上传按钮隐藏 */
  8544. }
  8545. .imgLeft {
  8546. margin: 15px 0;
  8547. }
  8548. .add_info_box {
  8549. margin: 20px 0;
  8550. }
  8551. .add_info_box button {
  8552. margin: 0 10px 10px 0;
  8553. }
  8554. .add_info_box2 {
  8555. display: flex;
  8556. align-items: center;
  8557. flex-wrap: wrap;
  8558. }
  8559. .add_info_box2::after {
  8560. content: "提示:支持上传10M以内的PPT和Word文件、5M以内的Excel文件, PDF文件不限制大小。";
  8561. color: red;
  8562. font-size: 14px;
  8563. margin-bottom: 10px;
  8564. }
  8565. .add_chapters_box {
  8566. text-align: left;
  8567. background-color: rgb(232 234 237);
  8568. width: 100%;
  8569. padding: 0px 15px;
  8570. border-radius: 15px;
  8571. font-size: 16px;
  8572. box-sizing: border-box;
  8573. position: relative;
  8574. padding: 0 10px 5px 10px;
  8575. height: 185px;
  8576. overflow-y: auto;
  8577. overflow-x: hidden;
  8578. }
  8579. .homework_box {
  8580. display: flex;
  8581. align-items: flex-start;
  8582. flex-wrap: wrap;
  8583. margin: 15px 0 0 0;
  8584. flex-direction: column;
  8585. align-content: flex-start;
  8586. }
  8587. .course_homework {
  8588. display: flex;
  8589. justify-content: center;
  8590. flex-direction: row;
  8591. align-items: center;
  8592. margin: 0 10px 0 0;
  8593. }
  8594. .course_homework >>> .el-input__inner {
  8595. width: 140px;
  8596. margin-left: 15px;
  8597. }
  8598. .chapter_upload_move {
  8599. position: relative;
  8600. background-color: #fff;
  8601. position: absolute;
  8602. width: 100%;
  8603. top: 0px;
  8604. left: 0px;
  8605. border: 1px solid #eee;
  8606. border-radius: 5px;
  8607. transition: width 2s;
  8608. -moz-transition: width 2s;
  8609. -webkit-transition: width 2s;
  8610. -o-transition: width 2s;
  8611. }
  8612. .chapter_upload_l_i {
  8613. background-image: url("../../assets/icon.png");
  8614. background-position: 3px -165px;
  8615. width: 30px;
  8616. height: 30px;
  8617. margin: 10px auto 0 auto;
  8618. }
  8619. .left_first {
  8620. display: flex;
  8621. flex-direction: column;
  8622. flex-wrap: nowrap;
  8623. }
  8624. .right_first {
  8625. width: 100%;
  8626. height: 100%;
  8627. margin-top: 15px;
  8628. }
  8629. .right_title {
  8630. height: 30px;
  8631. padding: 15px 0 15px 20px;
  8632. border-bottom: 1px solid #f2f2f2;
  8633. font-size: 1.5em;
  8634. font-weight: bold;
  8635. color: #0f7eff;
  8636. margin: 0 auto;
  8637. }
  8638. .people {
  8639. border: 1px solid rgb(229 229 229);
  8640. height: 495px;
  8641. border-radius: 5px;
  8642. width: 100%;
  8643. overflow: auto;
  8644. }
  8645. .people_top {
  8646. display: flex;
  8647. width: 100%;
  8648. /* justify-content: space-between; */
  8649. /* align-items: center; */
  8650. flex-direction: column;
  8651. padding: 10px 25px 0;
  8652. box-sizing: border-box;
  8653. }
  8654. .people_nav,
  8655. .people_top_right {
  8656. /* padding: 20px 0 0 20px; */
  8657. }
  8658. .people_top_right {
  8659. height: 40px;
  8660. margin-bottom: 10px;
  8661. }
  8662. .people_search {
  8663. display: flex;
  8664. position: relative;
  8665. }
  8666. .people_search >>> .el-input__inner {
  8667. /* height: 25px; */
  8668. width: 95%;
  8669. }
  8670. .search_img {
  8671. width: 20px;
  8672. height: 20px;
  8673. position: absolute;
  8674. right: 30px;
  8675. top: 50%;
  8676. transform: translateY(-50%);
  8677. }
  8678. .search_img > img {
  8679. width: 100%;
  8680. height: 100%;
  8681. }
  8682. .people_name {
  8683. display: flex;
  8684. justify-content: flex-start;
  8685. padding: 20px 0 0 25px;
  8686. flex-direction: column;
  8687. flex-wrap: wrap;
  8688. }
  8689. .people_name >>> .el-checkbox {
  8690. width: 100%;
  8691. display: flex;
  8692. align-items: center;
  8693. margin-bottom: 10px;
  8694. }
  8695. .people_name >>> .el-checkbox__label {
  8696. text-overflow: ellipsis;
  8697. overflow: hidden;
  8698. width: 100%;
  8699. }
  8700. .right_img {
  8701. width: 150px;
  8702. height: 150px;
  8703. margin: 0 auto;
  8704. }
  8705. .right_img > img {
  8706. width: 100%;
  8707. height: 100%;
  8708. }
  8709. .number {
  8710. margin-top: 20px;
  8711. color: #4aa6ff;
  8712. text-decoration: underline;
  8713. }
  8714. .success_button {
  8715. display: flex;
  8716. text-align: center;
  8717. margin: 5% 0 auto;
  8718. flex-direction: row;
  8719. justify-content: center;
  8720. }
  8721. .look_course {
  8722. margin-right: 40px;
  8723. background: #3d67bc;
  8724. width: 200px;
  8725. height: 35px;
  8726. line-height: 35px;
  8727. color: #fff;
  8728. text-align: center;
  8729. font-size: 14px;
  8730. border-radius: 5px;
  8731. cursor: pointer;
  8732. }
  8733. .attend_others {
  8734. width: 250px;
  8735. background: #4fb13c;
  8736. height: 35px;
  8737. line-height: 35px;
  8738. color: #fff;
  8739. text-align: center;
  8740. font-size: 14px;
  8741. border-radius: 5px;
  8742. cursor: pointer;
  8743. }
  8744. .dialog_diy2 >>> .el-dialog__body {
  8745. text-align: center;
  8746. }
  8747. .write_togother {
  8748. position: absolute;
  8749. right: 45px;
  8750. display: flex;
  8751. top: 5%;
  8752. }
  8753. .write_people {
  8754. font-size: 14px;
  8755. line-height: 50px;
  8756. padding-right: 10px;
  8757. }
  8758. .end_write {
  8759. background: #3d67bc;
  8760. color: #fff;
  8761. width: 100px;
  8762. height: 35px;
  8763. line-height: 35px;
  8764. text-align: center;
  8765. font-size: 14px;
  8766. border-radius: 5px;
  8767. cursor: pointer;
  8768. }
  8769. .chapter_upload {
  8770. height: 50px;
  8771. margin-top: 12px;
  8772. position: relative;
  8773. display: flex;
  8774. align-items: center;
  8775. width: 100%;
  8776. min-height: 50px;
  8777. }
  8778. .chapter_upload_t {
  8779. background-color: #fff;
  8780. position: absolute;
  8781. height: 100%;
  8782. top: 0px;
  8783. left: 0px;
  8784. border-radius: 40px;
  8785. box-sizing: border-box;
  8786. box-shadow: 0 0 3px 3px #dfdfdf;
  8787. }
  8788. .chapter_upload_o {
  8789. width: 100%;
  8790. height: 100%;
  8791. position: relative;
  8792. z-index: 1;
  8793. }
  8794. .chapter_upload_ic {
  8795. height: 30px;
  8796. float: right;
  8797. }
  8798. .chapter_upload_ic_l {
  8799. width: 50px;
  8800. height: 50px;
  8801. float: left;
  8802. }
  8803. .chapter_upload_ic_l div {
  8804. width: 30px;
  8805. height: 35px;
  8806. background: url("../../assets/icon/icon.png");
  8807. }
  8808. .chapter_upload_ic_r {
  8809. width: 50px;
  8810. height: 50px;
  8811. float: left;
  8812. margin-left: 0px;
  8813. display: flex;
  8814. align-items: center;
  8815. }
  8816. .chapter_upload_ic_r div {
  8817. width: 25px;
  8818. height: 25px;
  8819. background-image: url("../../assets/delete.png");
  8820. background-size: 100% 100%;
  8821. }
  8822. .chapter_upload_n {
  8823. display: flex;
  8824. text-indent: 10px;
  8825. text-decoration: none;
  8826. text-overflow: ellipsis;
  8827. white-space: nowrap;
  8828. overflow: hidden;
  8829. width: 55%;
  8830. margin-left: 10px;
  8831. cursor: pointer;
  8832. margin-top: 2px;
  8833. align-items: center;
  8834. }
  8835. .chapter_upload_l_i1 {
  8836. background-image: url("../../assets/icon/video.png");
  8837. width: 28px;
  8838. height: 28px;
  8839. background-size: 100% 100%;
  8840. }
  8841. .chapter_upload_l_i5 {
  8842. background-image: url("../../assets/icon/word.png");
  8843. width: 24px;
  8844. height: 24px;
  8845. background-size: 100% 100%;
  8846. }
  8847. .chapter_upload_l_i8 {
  8848. background-image: url("../../assets/icon/line.png");
  8849. width: 24px;
  8850. height: 24px;
  8851. background-size: 100% 100%;
  8852. }
  8853. .chapter_upload_ud {
  8854. display: flex;
  8855. flex-direction: column;
  8856. margin-left: 5px;
  8857. justify-content: center;
  8858. }
  8859. .chapter_upload_up {
  8860. background-image: url("../../assets/icon/up.png");
  8861. width: 17px;
  8862. height: 15px;
  8863. background-size: 100% 100%;
  8864. cursor: pointer;
  8865. }
  8866. .chapter_upload_down {
  8867. background-image: url("../../assets/icon/down.png");
  8868. width: 17px;
  8869. height: 15px;
  8870. margin: 2px auto 0 auto;
  8871. background-size: 100% 100%;
  8872. cursor: pointer;
  8873. }
  8874. .addWordStyle {
  8875. display: flex;
  8876. flex-direction: row;
  8877. justify-content: flex-start;
  8878. overflow-x: auto;
  8879. white-space: nowrap;
  8880. flex-wrap: wrap;
  8881. }
  8882. /* table 样式 */
  8883. .cont >>> table {
  8884. border-top: 1px solid #ccc;
  8885. border-left: 1px solid #ccc;
  8886. }
  8887. .cont >>> table td,
  8888. .cont >>> table th {
  8889. border-bottom: 1px solid #ccc;
  8890. border-right: 1px solid #ccc;
  8891. /* padding: 20px 5px; */
  8892. padding: 5px 10px;
  8893. max-width: 0px;
  8894. height: 30px;
  8895. vertical-align: baseline;
  8896. }
  8897. .cont >>> table th {
  8898. border-bottom: 2px solid #ccc;
  8899. text-align: center;
  8900. }
  8901. /* blockquote 样式 */
  8902. .cont >>> blockquote {
  8903. display: block;
  8904. border-left: 8px solid #d0e5f2;
  8905. padding: 5px 10px;
  8906. margin: 10px 0;
  8907. line-height: 1.4;
  8908. font-size: 100%;
  8909. background-color: #f1f1f1;
  8910. }
  8911. /* code 样式 */
  8912. .cont >>> code {
  8913. display: inline-block;
  8914. *display: inline;
  8915. *zoom: 1;
  8916. background-color: #f1f1f1;
  8917. border-radius: 3px;
  8918. padding: 3px 5px;
  8919. margin: 0 3px;
  8920. }
  8921. .cont >>> pre code {
  8922. display: block;
  8923. }
  8924. /* ul ol 样式 */
  8925. .cont >>> ul,
  8926. ol {
  8927. margin: 10px 0 10px 20px;
  8928. }
  8929. .wordbox {
  8930. display: flex;
  8931. flex-wrap: wrap;
  8932. cursor: pointer;
  8933. width: 100%;
  8934. }
  8935. .checkword {
  8936. width: 22px;
  8937. height: 22px;
  8938. margin: 10px auto 0;
  8939. cursor: pointer;
  8940. }
  8941. .checkword img {
  8942. width: 100%;
  8943. }
  8944. .stepBg {
  8945. display: flex;
  8946. flex-direction: column;
  8947. justify-content: space-between;
  8948. align-items: center;
  8949. background: #fff;
  8950. width: 300px;
  8951. margin: 0 25px 0 0;
  8952. }
  8953. .stepTop {
  8954. min-width: 300px;
  8955. width: 300px;
  8956. /* border-radius: 10px; */
  8957. display: flex;
  8958. flex-direction: column;
  8959. justify-content: flex-start;
  8960. align-items: center;
  8961. flex-wrap: nowrap;
  8962. background: #fff;
  8963. /* top: 18%; */
  8964. }
  8965. .stepTop > div {
  8966. height: 80px;
  8967. width: 85%;
  8968. cursor: pointer;
  8969. margin: 10px 0;
  8970. border-radius: 10px;
  8971. }
  8972. .first,
  8973. .second,
  8974. .third,
  8975. .four {
  8976. background: #4a83d0;
  8977. height: 90px;
  8978. color: #fff;
  8979. display: flex;
  8980. flex-direction: row;
  8981. align-items: center;
  8982. justify-content: center;
  8983. }
  8984. .first > div:nth-child(1),
  8985. .second > div:nth-child(1),
  8986. .third > div:nth-child(1),
  8987. .four > div:nth-child(1) {
  8988. margin: 5px 10px 0 0;
  8989. width: 2rem;
  8990. }
  8991. .firstNo,
  8992. .secondNo,
  8993. .thirdNo,
  8994. .fourNo {
  8995. background: #e7e7e7;
  8996. color: #adadad;
  8997. display: flex;
  8998. flex-direction: row;
  8999. align-items: center;
  9000. justify-content: center;
  9001. }
  9002. .firstNo > div:nth-child(1),
  9003. .secondNo > div:nth-child(1),
  9004. .thirdNo > div:nth-child(1),
  9005. .fourNo > div:nth-child(1) {
  9006. margin: 5px 10px 0 0;
  9007. width: 2rem;
  9008. }
  9009. .uploadWidth >>> .el-upload {
  9010. width: 60px;
  9011. height: 60px;
  9012. position: relative;
  9013. }
  9014. .addPeople {
  9015. background: #fa6060;
  9016. width: 150px;
  9017. height: 40px;
  9018. color: #fff;
  9019. border-radius: 5px;
  9020. text-align: center;
  9021. line-height: 40px;
  9022. font-size: 14px;
  9023. cursor: pointer;
  9024. margin-top: 20px;
  9025. }
  9026. .kcImg {
  9027. width: 60px;
  9028. margin-left: 10px;
  9029. }
  9030. .zyImg {
  9031. width: 55px;
  9032. margin: 0 10px;
  9033. }
  9034. .deleteZy {
  9035. width: 20px;
  9036. position: absolute;
  9037. top: 5px;
  9038. right: 5px;
  9039. cursor: pointer;
  9040. }
  9041. .kcImg > img,
  9042. .zyImg > img,
  9043. .deleteZy > img {
  9044. width: 100%;
  9045. height: 100%;
  9046. }
  9047. .zyBox {
  9048. display: flex;
  9049. flex-direction: row;
  9050. align-items: center;
  9051. background: #67d37d;
  9052. color: #fff;
  9053. width: 210px;
  9054. margin: 20px 20px 0 0;
  9055. border-radius: 10px;
  9056. height: 70px;
  9057. position: relative;
  9058. }
  9059. .upCss {
  9060. display: flex;
  9061. flex-direction: row;
  9062. justify-content: flex-start;
  9063. }
  9064. .upCss >>> .el-icon-plus {
  9065. position: none !important;
  9066. width: 200px;
  9067. height: 100px;
  9068. display: flex;
  9069. flex-wrap: nowrap;
  9070. flex-direction: column;
  9071. align-items: center;
  9072. justify-content: center;
  9073. border: 1px dashed #ccc;
  9074. min-width: 78px;
  9075. min-height: 100px;
  9076. z-index: 999;
  9077. }
  9078. .upCss >>> .el-upload-list__item-name {
  9079. width: 100px;
  9080. white-space: nowrap;
  9081. overflow: hidden;
  9082. text-overflow: ellipsis;
  9083. }
  9084. .addStageImg {
  9085. min-width: 25px;
  9086. min-height: 25px;
  9087. width: 25px;
  9088. height: 25px;
  9089. cursor: pointer;
  9090. }
  9091. .addHW {
  9092. width: 28px;
  9093. height: 28px;
  9094. cursor: pointer;
  9095. }
  9096. .addStageImg > img,
  9097. .addHW > img {
  9098. width: 100%;
  9099. height: 100%;
  9100. }
  9101. .addNewPP >>> .el-dialog__body {
  9102. padding: 5px 20px;
  9103. }
  9104. .isHeight {
  9105. height: 680px;
  9106. }
  9107. .toolChoose {
  9108. display: flex;
  9109. /* width: 100%; */
  9110. flex-direction: row;
  9111. flex-wrap: wrap;
  9112. }
  9113. .tool {
  9114. display: flex;
  9115. flex-direction: column;
  9116. flex-wrap: nowrap;
  9117. width: fit-content;
  9118. margin: 10px 0 10px 0;
  9119. align-items: center;
  9120. }
  9121. .tool + .tool {
  9122. margin-right: 45px;
  9123. }
  9124. .whiteBIcon {
  9125. width: 80px;
  9126. cursor: pointer;
  9127. display: flex;
  9128. flex-direction: column;
  9129. flex-wrap: nowrap;
  9130. align-items: center;
  9131. }
  9132. .whiteBIcon > img,
  9133. .toolIcon > img,
  9134. .arrow > img {
  9135. width: 100%;
  9136. height: 100%;
  9137. }
  9138. .check img {
  9139. width: 20px;
  9140. height: 20px;
  9141. }
  9142. .whiteBIcon > img {
  9143. box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
  9144. border-radius: 15px;
  9145. }
  9146. .check {
  9147. /* width: 20px;
  9148. height: 20px; */
  9149. cursor: pointer;
  9150. margin: 10px 0;
  9151. }
  9152. .checkDiv {
  9153. display: flex;
  9154. align-items: center;
  9155. }
  9156. .checkDiv span {
  9157. margin-left: 5px;
  9158. color: #858585;
  9159. }
  9160. .customWidth >>> .el-dialog {
  9161. min-width: 500px !important;
  9162. }
  9163. .a_addBox {
  9164. margin: 10px 0;
  9165. background: #fff;
  9166. padding: 15px;
  9167. max-height: 600px;
  9168. overflow: auto;
  9169. }
  9170. .a_add_box {
  9171. border-bottom: 2px solid #eee;
  9172. padding-bottom: 25px;
  9173. }
  9174. .a_add_head {
  9175. display: flex;
  9176. align-items: center;
  9177. justify-content: space-between;
  9178. margin: 10px 0 0 0;
  9179. font-size: 18px;
  9180. }
  9181. .a_add_checkType {
  9182. margin-top: 10px;
  9183. display: flex;
  9184. font-size: 16px;
  9185. }
  9186. .a_add_checkType span {
  9187. box-sizing: border-box;
  9188. padding: 0 0 5px 0;
  9189. cursor: pointer;
  9190. }
  9191. .a_add_checkType span + span {
  9192. margin-left: 10px;
  9193. }
  9194. .a_add_checkType .active {
  9195. border-bottom: 2px solid #409eff;
  9196. color: #409eff;
  9197. }
  9198. .a_add_head .a_add_head_input {
  9199. width: 300px;
  9200. }
  9201. .a_add_head .a_add_head_div {
  9202. display: flex;
  9203. align-items: center;
  9204. justify-content: space-between;
  9205. }
  9206. .a_add_body {
  9207. display: flex;
  9208. /* align-items: center; */
  9209. align-items: flex-end;
  9210. }
  9211. .a_add_input {
  9212. display: flex;
  9213. align-items: center;
  9214. flex-wrap: wrap;
  9215. }
  9216. .a_add_input_choice {
  9217. flex-direction: column;
  9218. margin-right: 10px;
  9219. }
  9220. .a_add_input_choice >>> .el-radio {
  9221. display: flex;
  9222. align-items: center;
  9223. flex-direction: row-reverse;
  9224. margin: 30px 0 0 0;
  9225. }
  9226. .a_add_input_choice >>> .el-checkbox {
  9227. display: flex;
  9228. align-items: center;
  9229. flex-direction: row-reverse;
  9230. margin: 30px 0 0 0;
  9231. }
  9232. .width100 {
  9233. width: 100%;
  9234. }
  9235. .a_add_input .a_add_persent {
  9236. width: 100%;
  9237. }
  9238. .a_add_persent_div {
  9239. width: 100%;
  9240. display: flex;
  9241. align-items: center;
  9242. }
  9243. .a_add_persent_div span {
  9244. margin: 5px 0;
  9245. }
  9246. .a_add_persent_div span:nth-child(1) {
  9247. width: 30%;
  9248. }
  9249. .a_add_persent_div span:nth-child(2) {
  9250. width: 7%;
  9251. }
  9252. .a_add_persent_div span:nth-child(3) {
  9253. width: 40%;
  9254. }
  9255. .a_add_body_div {
  9256. display: flex;
  9257. align-items: center;
  9258. justify-content: center;
  9259. /* flex-direction: column; */
  9260. }
  9261. .all_choose {
  9262. display: flex;
  9263. flex-direction: row;
  9264. align-items: flex-start;
  9265. width: 100%;
  9266. }
  9267. .all_choose > span {
  9268. width: 100px;
  9269. display: block;
  9270. letter-spacing: 14px;
  9271. white-space: nowrap;
  9272. overflow: hidden;
  9273. text-overflow: ellipsis;
  9274. }
  9275. .all_choose >>> .el-checkbox-group {
  9276. display: flex;
  9277. flex-direction: row;
  9278. width: 100%;
  9279. flex-wrap: wrap;
  9280. align-content: center;
  9281. justify-content: flex-start;
  9282. align-items: center;
  9283. margin-top: 3px;
  9284. }
  9285. .all_choose > .el-checkbox-group >>> .el-checkbox {
  9286. margin-bottom: 10px;
  9287. display: flex;
  9288. flex-direction: row;
  9289. align-items: center;
  9290. }
  9291. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label {
  9292. min-width: 80px;
  9293. overflow: hidden;
  9294. width: 80px;
  9295. text-overflow: ellipsis;
  9296. white-space: nowrap;
  9297. }
  9298. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label:hover {
  9299. width: auto;
  9300. }
  9301. .choose > div:nth-child(3) > span {
  9302. /* letter-spacing: 0 !important; */
  9303. }
  9304. .choose {
  9305. display: flex;
  9306. flex-direction: column;
  9307. flex-wrap: nowrap;
  9308. height: 100%;
  9309. justify-content: space-evenly;
  9310. align-items: flex-start;
  9311. }
  9312. .both {
  9313. display: flex;
  9314. flex-direction: row;
  9315. flex-wrap: wrap;
  9316. width: 100%;
  9317. align-items: center;
  9318. justify-content: flex-start;
  9319. margin: 30px 0;
  9320. }
  9321. .notice >>> .el-dialog {
  9322. width: 500px !important;
  9323. text-align: center;
  9324. }
  9325. .notice >>> .el-button {
  9326. margin-top: 20px;
  9327. }
  9328. .whiteBg {
  9329. background: #fff;
  9330. border-radius: 10px;
  9331. }
  9332. .chooseWho {
  9333. display: flex;
  9334. width: 380px;
  9335. flex-direction: row;
  9336. flex-wrap: nowrap;
  9337. justify-content: space-between;
  9338. padding-bottom: 10px;
  9339. }
  9340. .chooseWho > div {
  9341. cursor: pointer;
  9342. padding-bottom: 10px;
  9343. font-weight: bold;
  9344. }
  9345. .isChooseActive {
  9346. color: #3e88f4;
  9347. border-bottom: 2px solid #2f80f3;
  9348. }
  9349. .toolSort {
  9350. display: flex;
  9351. flex-direction: row;
  9352. flex-wrap: wrap;
  9353. justify-content: flex-start;
  9354. align-items: flex-start;
  9355. }
  9356. .toolSort > div {
  9357. margin-right: 45px;
  9358. }
  9359. .tools {
  9360. width: 100%;
  9361. display: flex;
  9362. flex-direction: column;
  9363. flex-wrap: nowrap;
  9364. align-items: flex-start;
  9365. }
  9366. .leftTools,
  9367. .rightTools {
  9368. width: 50%;
  9369. }
  9370. .rightTools {
  9371. display: flex;
  9372. flex-direction: row;
  9373. flex-wrap: nowrap;
  9374. justify-content: space-around;
  9375. }
  9376. .firstToolList {
  9377. display: flex;
  9378. flex-direction: column;
  9379. flex-wrap: nowrap;
  9380. align-items: center;
  9381. }
  9382. .iconList {
  9383. display: flex;
  9384. flex-direction: row;
  9385. flex-wrap: wrap;
  9386. justify-content: flex-start;
  9387. align-items: center;
  9388. margin: 20px 0 5px 0;
  9389. width: 240px;
  9390. min-width: 240px;
  9391. }
  9392. .iconTool {
  9393. display: flex;
  9394. flex-direction: column;
  9395. flex-wrap: nowrap;
  9396. align-items: center;
  9397. justify-content: flex-start;
  9398. margin: 15px 10px;
  9399. }
  9400. .toolIcon {
  9401. width: 50px;
  9402. }
  9403. .taskBorder {
  9404. border: 1px solid #e1e1e1;
  9405. border-radius: 10px;
  9406. margin-top: 20px;
  9407. min-height: 1160px;
  9408. position: relative;
  9409. background: #fbfbfb;
  9410. }
  9411. .smallTaskBorder {
  9412. height: 170px;
  9413. min-height: 170px !important;
  9414. overflow: hidden;
  9415. }
  9416. .taskBorder > div {
  9417. padding: 30px 0 10px 30px;
  9418. }
  9419. .addTaskBorder {
  9420. border: 2px solid #e1e1e1;
  9421. border-radius: 10px;
  9422. margin-top: 25px;
  9423. cursor: pointer;
  9424. }
  9425. .addTaskBorder > div {
  9426. margin: 0 auto;
  9427. display: flex;
  9428. align-items: center;
  9429. justify-content: center;
  9430. }
  9431. .addTaskBorder > div > img {
  9432. width: 100px;
  9433. }
  9434. .addTaskBorder > div > span {
  9435. font-size: 23px;
  9436. color: #dbdbdb;
  9437. }
  9438. .funBlock {
  9439. display: flex;
  9440. padding: 15px 0;
  9441. flex-direction: row;
  9442. justify-content: flex-end;
  9443. align-items: center;
  9444. position: absolute;
  9445. right: 15px;
  9446. bottom: 35px;
  9447. }
  9448. .fold {
  9449. display: flex;
  9450. margin: 0 10px;
  9451. flex-direction: row;
  9452. align-items: center;
  9453. cursor: pointer;
  9454. }
  9455. .arrow {
  9456. width: 15px;
  9457. height: 15px;
  9458. margin-left: 10px;
  9459. }
  9460. .addToolFun {
  9461. display: flex;
  9462. width: 150px;
  9463. flex-direction: row;
  9464. align-items: center;
  9465. justify-content: center;
  9466. border: 1px dashed;
  9467. border-radius: 5px;
  9468. height: 50px;
  9469. margin: 35px auto 0;
  9470. cursor: pointer;
  9471. }
  9472. .addToolImg {
  9473. width: 30px;
  9474. height: 30px;
  9475. margin-right: 20px;
  9476. }
  9477. .addToolsDia >>> .el-dialog__body {
  9478. padding: 20px;
  9479. }
  9480. .addToolsDia >>> .el-dialog__body > .toolChoose {
  9481. padding: 0;
  9482. }
  9483. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools {
  9484. padding: 0;
  9485. border-bottom: none;
  9486. margin-bottom: 0;
  9487. }
  9488. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools > .chooseWho {
  9489. width: 100%;
  9490. }
  9491. .lineCss >>> .el-form-item__label {
  9492. width: auto !important;
  9493. }
  9494. .lineCss >>> .el-form-item__content {
  9495. margin-left: 50px !important;
  9496. }
  9497. .newSteps {
  9498. display: flex;
  9499. width: 100% !important;
  9500. height: 80px;
  9501. cursor: pointer;
  9502. margin: 10px 0;
  9503. border-radius: 10px;
  9504. flex-direction: row;
  9505. align-content: center;
  9506. justify-content: center;
  9507. align-items: center;
  9508. margin: 0 !important;
  9509. }
  9510. /* 评价样式 */
  9511. .elist_css {
  9512. padding-bottom: 60px !important;
  9513. }
  9514. .elist_title {
  9515. margin-bottom: 10px;
  9516. }
  9517. .elist_input {
  9518. }
  9519. .elist_input_box {
  9520. display: flex;
  9521. align-items: center;
  9522. flex-wrap: wrap;
  9523. }
  9524. .elist_input_box + .elist_input_box {
  9525. margin-top: 30px;
  9526. }
  9527. .elist_input .elist_input_box input {
  9528. font: inherit;
  9529. color: currentColor;
  9530. /* width: 200px; */
  9531. max-width: 200px;
  9532. padding: 8px 14px;
  9533. display: block;
  9534. min-width: 0;
  9535. outline: none;
  9536. border: 1px solid rgba(0, 0, 0, 0.23);
  9537. border-radius: 4px;
  9538. box-sizing: border-box;
  9539. background: #fff;
  9540. margin: 0 20px 0 0;
  9541. }
  9542. .elist_input .elist_input_box span {
  9543. height: 36px;
  9544. line-height: 36px;
  9545. color: rgb(82, 82, 82);
  9546. min-width: 80px;
  9547. }
  9548. .elist_input .elist_input_box .remove {
  9549. height: 20px;
  9550. width: 20px;
  9551. background-size: 100% 100%;
  9552. background-position: unset;
  9553. margin-left: 5px;
  9554. }
  9555. .elist_input_box >>> .el-rate {
  9556. display: flex;
  9557. height: 36px;
  9558. align-items: center;
  9559. }
  9560. .elist_input_box .elist_inptu_text {
  9561. width: 100%;
  9562. display: flex;
  9563. align-items: center;
  9564. margin-top: 10px;
  9565. }
  9566. .elist_input_box .elist_inptu_text input {
  9567. /* width: 500px; */
  9568. width: 100%;
  9569. max-width: unset;
  9570. }
  9571. .elist_input_box >>> .el-rate__icon {
  9572. font-size: 24px;
  9573. }
  9574. .elist_btn {
  9575. margin-top: 10px;
  9576. }
  9577. .lineTitle {
  9578. margin-top: 15px;
  9579. width: 110px;
  9580. }
  9581. .courseTop {
  9582. display: flex;
  9583. flex-direction: row;
  9584. justify-content: flex-start;
  9585. align-items: center;
  9586. /* width: 100%; */
  9587. width: calc(100% - 20px);
  9588. /* background: rgb(255, 255, 255); */
  9589. /* border-radius: 10px; */
  9590. padding: 20px 0;
  9591. }
  9592. .stepsNav {
  9593. display: flex;
  9594. flex-direction: row;
  9595. justify-content: flex-start;
  9596. align-items: center;
  9597. }
  9598. .stepsWord {
  9599. font-size: 18px;
  9600. color: #fff;
  9601. font-weight: bold;
  9602. margin-left: auto;
  9603. background: rgb(15, 126, 255);
  9604. border-radius: 5px;
  9605. padding: 3px 25px;
  9606. box-sizing: border-box;
  9607. }
  9608. .rightBox {
  9609. width: calc(100% - 20px);
  9610. background: rgb(255, 255, 255);
  9611. border-radius: 10px;
  9612. overflow: auto;
  9613. height: calc(100% - 130px);
  9614. position: relative;
  9615. }
  9616. .e_add_top {
  9617. display: flex;
  9618. justify-content: space-between;
  9619. padding: 20px 20px 0 20px;
  9620. border-radius: 3px;
  9621. background: #fff;
  9622. }
  9623. .e_add_title2 {
  9624. display: flex;
  9625. align-items: center;
  9626. }
  9627. .e_add_title2 span {
  9628. width: 40px;
  9629. }
  9630. .e_add_title {
  9631. display: flex;
  9632. align-items: center;
  9633. color: #b8b8b8;
  9634. font-size: 18px;
  9635. position: relative;
  9636. height: 40px;
  9637. }
  9638. .e_add_title span {
  9639. margin-right: 10px;
  9640. }
  9641. .e_add_title .el_input {
  9642. width: 300px;
  9643. }
  9644. .e_add_title >>> .el-input__inner {
  9645. width: 400px;
  9646. }
  9647. .e_add_btn {
  9648. }
  9649. .e_add_content {
  9650. display: flex;
  9651. width: 100%;
  9652. }
  9653. .e_add_list {
  9654. background: #fff;
  9655. height: 500px;
  9656. width: 210px;
  9657. position: relative;
  9658. margin: 15px 5px 0 0;
  9659. flex-shrink: 0;
  9660. display: flex;
  9661. flex-direction: column;
  9662. }
  9663. .e_add_list_title {
  9664. font-size: 20px;
  9665. width: 100%;
  9666. box-sizing: border-box;
  9667. padding: 15px 40px;
  9668. text-align: center;
  9669. border-bottom: 1px solid #eaeaea;
  9670. position: relative;
  9671. display: flex;
  9672. align-items: center;
  9673. justify-content: center;
  9674. height: 57px;
  9675. background: #f6f6f6;
  9676. }
  9677. .e_add_list_title span {
  9678. overflow: hidden;
  9679. white-space: nowrap;
  9680. text-overflow: ellipsis;
  9681. }
  9682. .e_add_list_title img {
  9683. position: absolute;
  9684. right: 15px;
  9685. width: 25px;
  9686. cursor: pointer;
  9687. top: 50%;
  9688. transform: translateY(-50%);
  9689. }
  9690. .e_add_list_body {
  9691. height: calc(100% - 187px);
  9692. overflow: auto;
  9693. }
  9694. .e_add_list_child {
  9695. width: 100%;
  9696. display: flex;
  9697. align-items: center;
  9698. justify-content: center;
  9699. position: relative;
  9700. box-sizing: border-box;
  9701. padding: 15px 40px;
  9702. text-align: center;
  9703. }
  9704. .e_add_list_child span {
  9705. overflow: hidden;
  9706. white-space: nowrap;
  9707. text-overflow: ellipsis;
  9708. cursor: pointer;
  9709. }
  9710. .e_add_list_child img {
  9711. position: absolute;
  9712. right: 10px;
  9713. width: 21px;
  9714. cursor: pointer;
  9715. top: 50%;
  9716. transform: translateY(-50%);
  9717. }
  9718. .e_add_list_child + .e_add_list_child {
  9719. border-top: 1px solid #eaeaea;
  9720. }
  9721. .e_add_list_child .active {
  9722. color: #409eff;
  9723. }
  9724. .e_add_list_btn {
  9725. position: absolute;
  9726. bottom: 0;
  9727. height: 50px;
  9728. background: rgb(120, 120, 254);
  9729. width: 100%;
  9730. color: #fff;
  9731. font-size: 16px;
  9732. text-align: center;
  9733. line-height: 50px;
  9734. cursor: pointer;
  9735. }
  9736. .e_add_list_detail {
  9737. position: absolute;
  9738. bottom: 0;
  9739. height: 130px;
  9740. background: rgb(120, 120, 254);
  9741. width: 100%;
  9742. color: #fff;
  9743. font-size: 16px;
  9744. display: flex;
  9745. align-items: center;
  9746. justify-content: center;
  9747. }
  9748. .e_add_list_detail textarea {
  9749. height: 90%;
  9750. width: 95%;
  9751. border: none;
  9752. resize: none;
  9753. outline: none;
  9754. padding: 5px;
  9755. box-sizing: border-box;
  9756. }
  9757. .e_add_list_pbox {
  9758. width: 100%;
  9759. }
  9760. .e_add_list_pbox_title {
  9761. height: 50px;
  9762. background: #fff;
  9763. display: flex;
  9764. align-items: center;
  9765. width: 100%;
  9766. box-sizing: border-box;
  9767. padding: 0 20px;
  9768. flex-direction: row;
  9769. flex-wrap: wrap;
  9770. }
  9771. .type_title {
  9772. font-size: 18px;
  9773. font-weight: 700;
  9774. }
  9775. .type_content {
  9776. font-size: 16px;
  9777. margin-left: 30px;
  9778. }
  9779. .type_content span + span {
  9780. margin-left: 20px;
  9781. }
  9782. .type_content span {
  9783. cursor: pointer;
  9784. padding-bottom: 5px;
  9785. box-sizing: border-box;
  9786. }
  9787. .type_content .active {
  9788. color: #409eff;
  9789. border-bottom: 2px solid #409eff;
  9790. }
  9791. .e_add_list_pbox_content {
  9792. height: calc(100% - 50px);
  9793. display: flex;
  9794. align-items: center;
  9795. width: 100%;
  9796. background: #fff;
  9797. }
  9798. .mbCss {
  9799. width: 100%;
  9800. display: flex;
  9801. flex-direction: row;
  9802. flex-wrap: nowrap;
  9803. align-content: center;
  9804. align-items: flex-start;
  9805. justify-content: flex-start;
  9806. }
  9807. .pjCss {
  9808. /* width: 42%; */
  9809. width: calc(100% - 55%);
  9810. display: flex;
  9811. flex-direction: column;
  9812. flex-wrap: nowrap;
  9813. align-items: flex-start;
  9814. margin-top: 1.5%;
  9815. }
  9816. .e_box {
  9817. display: flex;
  9818. flex-wrap: wrap;
  9819. max-height: 500px;
  9820. align-items: flex-start;
  9821. overflow: auto;
  9822. }
  9823. .e_card {
  9824. border: 1px solid #ccc;
  9825. background: #fff;
  9826. margin-right: 20px;
  9827. width: 270px;
  9828. display: flex;
  9829. flex-direction: column;
  9830. align-items: center;
  9831. border-radius: 5px;
  9832. margin-top: 10px;
  9833. text-align: center;
  9834. }
  9835. .e_card_picture {
  9836. margin: 10px 0;
  9837. }
  9838. .e_card_picture > img {
  9839. width: 50px;
  9840. }
  9841. .e_card_name {
  9842. width: 100%;
  9843. padding: 0 10px;
  9844. box-sizing: border-box;
  9845. margin-bottom: 10px;
  9846. overflow: hidden;
  9847. text-overflow: ellipsis;
  9848. white-space: nowrap;
  9849. }
  9850. .e_card_time {
  9851. width: 100%;
  9852. padding: 0 10px;
  9853. box-sizing: border-box;
  9854. font-size: 15px;
  9855. color: #c3c3c3;
  9856. margin-bottom: 10px;
  9857. }
  9858. .e_card_btn {
  9859. height: 40px;
  9860. display: flex;
  9861. align-items: center;
  9862. width: 100%;
  9863. background: rgb(244, 244, 244);
  9864. }
  9865. .e_card_btn:hover {
  9866. background: rgb(221 221 221);
  9867. }
  9868. .e_card_btn span {
  9869. flex: 1 1 auto;
  9870. text-align: center;
  9871. cursor: pointer;
  9872. }
  9873. .addEva {
  9874. border: 1px solid #ccc;
  9875. background: #fff;
  9876. margin-right: 20px;
  9877. width: 270px;
  9878. height: 149px;
  9879. display: flex;
  9880. flex-direction: column;
  9881. align-items: center;
  9882. border-radius: 5px;
  9883. margin-top: 10px;
  9884. text-align: center;
  9885. cursor: pointer;
  9886. justify-content: center;
  9887. }
  9888. .addEva > img {
  9889. width: 50px;
  9890. object-fit: cover;
  9891. }
  9892. .uploadFm {
  9893. border: 1px dashed #ccc;
  9894. width: 202px;
  9895. height: 102px;
  9896. position: relative;
  9897. cursor: pointer;
  9898. }
  9899. .uploadFm > img {
  9900. position: absolute;
  9901. top: 25px;
  9902. left: 35%;
  9903. width: 50px;
  9904. }
  9905. .fileCss {
  9906. width: 100%;
  9907. display: flex;
  9908. flex-direction: row;
  9909. flex-wrap: nowrap;
  9910. justify-content: space-around;
  9911. align-items: center;
  9912. padding-top: 15px;
  9913. }
  9914. .sysPicBox {
  9915. display: flex;
  9916. flex-direction: row;
  9917. flex-wrap: wrap;
  9918. align-content: flex-start;
  9919. height: 435px;
  9920. overflow: auto;
  9921. }
  9922. .sysPic {
  9923. width: 200px;
  9924. height: 115px;
  9925. margin: 0 20px 20px 0;
  9926. cursor: pointer;
  9927. }
  9928. .sysPic > img,
  9929. .isSysPic > img,
  9930. .deletePic > img {
  9931. width: 100%;
  9932. height: 100%;
  9933. object-fit: cover;
  9934. }
  9935. .isSysPic {
  9936. width: 200px;
  9937. height: 115px;
  9938. position: relative;
  9939. }
  9940. .deletePic {
  9941. width: 20px;
  9942. height: 20px;
  9943. position: absolute;
  9944. top: 0;
  9945. right: 0;
  9946. cursor: pointer;
  9947. }
  9948. .select_box1 {
  9949. }
  9950. .select_box1_img {
  9951. background: #fff;
  9952. border-radius: 5px;
  9953. padding: 15px;
  9954. box-sizing: border-box;
  9955. margin-bottom: 20px;
  9956. }
  9957. .select_box1_title {
  9958. padding: 0 0 15px 0;
  9959. border-bottom: 1px solid #eee;
  9960. margin-bottom: 15px;
  9961. }
  9962. .select_box1_title span:nth-child(1) {
  9963. font-size: 16px;
  9964. margin-right: 20px;
  9965. color: #000;
  9966. }
  9967. .select_box1_title span:nth-child(2) {
  9968. font-size: 14px;
  9969. color: rgb(112, 112, 112);
  9970. }
  9971. .select_box1_add_img {
  9972. }
  9973. .select_box1_select {
  9974. background: #fff;
  9975. border-radius: 5px;
  9976. padding: 15px;
  9977. box-sizing: border-box;
  9978. }
  9979. .select_box2 {
  9980. }
  9981. .select_box2_title {
  9982. background: #fff;
  9983. border-radius: 5px;
  9984. padding: 5px 10px;
  9985. box-sizing: border-box;
  9986. margin-bottom: 10px;
  9987. }
  9988. .select_box2_box {
  9989. display: flex;
  9990. height: 500px;
  9991. }
  9992. .select_box2_img {
  9993. width: calc(100% - 310px);
  9994. height: 100%;
  9995. overflow: auto;
  9996. background: #fff;
  9997. border-radius: 5px;
  9998. }
  9999. .select_box2_img img {
  10000. width: 100%;
  10001. }
  10002. .select_box2_answer {
  10003. background: #fff;
  10004. margin-left: 10px;
  10005. border-radius: 5px;
  10006. width: 300px;
  10007. overflow: auto;
  10008. height: 100%;
  10009. display: flex;
  10010. flex-direction: column;
  10011. align-items: center;
  10012. padding-top: 10px;
  10013. box-sizing: border-box;
  10014. }
  10015. .select_box2_answer_box {
  10016. margin: 0 0 10px 0;
  10017. width: 85%;
  10018. }
  10019. .rate_textarea {
  10020. font: inherit;
  10021. color: currentColor;
  10022. width: 100%;
  10023. padding: 8px 14px;
  10024. display: block;
  10025. min-width: 0;
  10026. outline: none;
  10027. border: 1px solid rgba(0, 0, 0, 0.23);
  10028. border-radius: 4px;
  10029. box-sizing: border-box;
  10030. background: #fff;
  10031. margin: 0 20px 0 0;
  10032. resize: none;
  10033. }
  10034. .select_answer_title {
  10035. text-align: left;
  10036. width: 85%;
  10037. margin-bottom: 10px;
  10038. font-size: 18px;
  10039. color: #8e8e8e;
  10040. }
  10041. .mask {
  10042. background-color: rgb(0 0 0 / 30%);
  10043. /* position: fixed; */
  10044. position: absolute;
  10045. top: 0;
  10046. left: 0;
  10047. width: 100%;
  10048. height: 100%;
  10049. z-index: 90;
  10050. display: flex;
  10051. align-items: center;
  10052. justify-content: center;
  10053. }
  10054. .progressBox {
  10055. width: 300px;
  10056. height: 150px;
  10057. background: #fff;
  10058. border-radius: 10px;
  10059. box-shadow: 0 0 6px 1px #bfbfbf;
  10060. display: flex;
  10061. align-items: center;
  10062. justify-content: center;
  10063. flex-direction: column;
  10064. position: relative;
  10065. color: #6c6c6c;
  10066. }
  10067. .progressBox >>> .el-progress-bar__outer {
  10068. background-color: #d1dfff !important;
  10069. }
  10070. .progressBox .lbox {
  10071. height: 50px;
  10072. font-size: 19px;
  10073. display: flex;
  10074. align-items: center;
  10075. color: #747474;
  10076. }
  10077. .progressBox .lbox img {
  10078. width: 40px;
  10079. margin-right: 20px;
  10080. }
  10081. .closeCss {
  10082. position: absolute;
  10083. top: 8px;
  10084. right: 8px;
  10085. cursor: pointer;
  10086. width: 20px;
  10087. height: 20px;
  10088. }
  10089. .closeCss > img {
  10090. width: 100%;
  10091. height: 100%;
  10092. }
  10093. .updateTips::after {
  10094. content: "协同编辑课程暂不支持修改基本信息,只支持修改阶段内容。";
  10095. font-size: 14px;
  10096. margin-left: 20px;
  10097. font-weight: 400;
  10098. color: #ff3a3a;
  10099. }
  10100. .updateMask {
  10101. width: 100%;
  10102. z-index: 3;
  10103. top: 0;
  10104. position: absolute;
  10105. /* background-color: rgba(0,0,0,.3); */
  10106. }
  10107. .t_j_box {
  10108. display: flex;
  10109. }
  10110. .t_j_box span:nth-child(1) {
  10111. width: 15%;
  10112. overflow: hidden;
  10113. margin-right: 10px;
  10114. text-overflow: ellipsis;
  10115. white-space: nowrap;
  10116. }
  10117. .t_j_box span:nth-child(2) {
  10118. width: 30%;
  10119. overflow: hidden;
  10120. text-overflow: ellipsis;
  10121. margin-right: 10px;
  10122. }
  10123. .t_j_box span:nth-child(3) {
  10124. max-width: calc(55% - 20px);
  10125. overflow: hidden;
  10126. text-overflow: ellipsis;
  10127. }
  10128. .sentenBox {
  10129. background: #fff;
  10130. height: 600px;
  10131. overflow: auto;
  10132. background-image: url("../../assets/icon/conSentences/csBg.png");
  10133. background-position: 102%;
  10134. background-repeat: no-repeat;
  10135. background-size: 60%;
  10136. }
  10137. .addSen {
  10138. background: #409efe;
  10139. width: 90px;
  10140. color: #fff;
  10141. height: 35px;
  10142. text-align: center;
  10143. line-height: 35px;
  10144. border-radius: 5px;
  10145. float: right;
  10146. margin: 10px 20px 0 0;
  10147. cursor: pointer;
  10148. }
  10149. .sentenTop {
  10150. display: flex;
  10151. flex-direction: row;
  10152. flex-wrap: nowrap;
  10153. align-items: center;
  10154. }
  10155. .sentenTop > div:nth-child(2) {
  10156. width: 300px;
  10157. margin: 0 15px;
  10158. }
  10159. .sentenTop > div:nth-child(3) {
  10160. background: #409efe;
  10161. color: #fff;
  10162. width: 65px;
  10163. height: 35px;
  10164. text-align: center;
  10165. line-height: 35px;
  10166. border-radius: 5px;
  10167. cursor: pointer;
  10168. }
  10169. .cardList {
  10170. padding: 30px 0 20px 0;
  10171. display: flex;
  10172. flex-direction: row;
  10173. flex-wrap: wrap;
  10174. align-items: center;
  10175. box-sizing: border-box;
  10176. border-bottom: 1px solid #f4f4f4;
  10177. width: 98%;
  10178. margin: 0 auto;
  10179. }
  10180. .cardBox {
  10181. display: flex;
  10182. flex-direction: row;
  10183. flex-wrap: wrap;
  10184. align-items: center;
  10185. align-content: center;
  10186. }
  10187. .isCard,
  10188. .isCard1 {
  10189. width: 140px;
  10190. height: 65px;
  10191. text-align: center;
  10192. line-height: 65px;
  10193. font-size: 20px;
  10194. cursor: pointer;
  10195. background-image: url("../../assets/icon/conSentences/titleBorder.png");
  10196. background-size: cover;
  10197. position: relative;
  10198. z-index: 99;
  10199. }
  10200. .isCard1 {
  10201. background-image: url("../../assets/icon/conSentences/answerBorder.png");
  10202. }
  10203. .isCard:hover .deleteWord {
  10204. display: block;
  10205. }
  10206. .isCard > div:nth-child(1),
  10207. .isCard1 > div:nth-child(1) {
  10208. white-space: nowrap;
  10209. overflow: hidden;
  10210. text-overflow: ellipsis;
  10211. width: 80%;
  10212. margin: 0 auto;
  10213. }
  10214. .card {
  10215. width: 140px;
  10216. height: 65px;
  10217. }
  10218. .card > img {
  10219. width: 100%;
  10220. height: 100%;
  10221. }
  10222. .rightCardBox {
  10223. margin: 10px 0 0 10px;
  10224. }
  10225. .rightCardBox > div:nth-child(1) {
  10226. margin-bottom: 10px;
  10227. }
  10228. .cardCss {
  10229. display: flex;
  10230. flex-direction: column;
  10231. flex-wrap: nowrap;
  10232. align-items: center;
  10233. border-bottom: 3px solid #b4c3d3;
  10234. padding: 0 0 5px 0;
  10235. margin-right: 10px;
  10236. }
  10237. .cardCss > div:nth-child(2) {
  10238. background: #5b7b9d;
  10239. color: #fff;
  10240. width: 20px;
  10241. height: 20px;
  10242. border-radius: 50%;
  10243. text-align: center;
  10244. line-height: 20px;
  10245. }
  10246. .sentenTopBox {
  10247. display: flex;
  10248. flex-direction: row;
  10249. flex-wrap: nowrap;
  10250. align-items: center;
  10251. justify-content: space-between;
  10252. padding: 55px 0 0 20px;
  10253. box-sizing: border-box;
  10254. width: 85%;
  10255. }
  10256. .stepsBottom {
  10257. width: 85%;
  10258. margin-bottom: 20px;
  10259. box-shadow: 0 0 10px 10px #f7f7f7;
  10260. background: #f7f7f7;
  10261. border-radius: 10px;
  10262. overflow: hidden;
  10263. }
  10264. .navTop {
  10265. background: #53749b;
  10266. color: #fff;
  10267. height: 40px;
  10268. line-height: 40px;
  10269. padding-left: 15px;
  10270. font-size: 18px;
  10271. }
  10272. .navBottom {
  10273. background: #6b91b7;
  10274. height: 180px;
  10275. overflow: auto;
  10276. }
  10277. .navTask {
  10278. display: flex;
  10279. flex-direction: row;
  10280. flex-wrap: nowrap;
  10281. align-items: center;
  10282. padding: 5px 5px 5px 0;
  10283. cursor: pointer;
  10284. background: #ffffff;
  10285. width: 95%;
  10286. margin: 10px auto;
  10287. box-sizing: border-box;
  10288. border-radius: 5px;
  10289. }
  10290. .isNavTask {
  10291. /* background: #7e9ebd; */
  10292. }
  10293. .navTask > div:nth-child(1) {
  10294. background: #468fe4;
  10295. color: #fff;
  10296. width: 65px;
  10297. height: 25px;
  10298. line-height: 25px;
  10299. text-align: center;
  10300. border-radius: 5px;
  10301. margin: 0 10px 0 5px;
  10302. font-size: 14px;
  10303. }
  10304. .navTask > div:nth-child(2) {
  10305. /* color: #fff; */
  10306. /* max-width: 130px; */
  10307. width: 130px;
  10308. white-space: nowrap;
  10309. overflow: hidden;
  10310. text-overflow: ellipsis;
  10311. font-size: 15px;
  10312. }
  10313. .groupBox {
  10314. }
  10315. .groupContent + .groupContent {
  10316. margin-top: 30px;
  10317. }
  10318. .groupTitle {
  10319. font-size: 24px;
  10320. color: rgb(80, 80, 80);
  10321. margin-bottom: 20px;
  10322. }
  10323. .groupName {
  10324. display: flex;
  10325. align-items: center;
  10326. }
  10327. .groupn {
  10328. font-size: 15px;
  10329. margin-right: 10px;
  10330. }
  10331. .groupName + .groupName {
  10332. margin-top: 15px;
  10333. }
  10334. .groupBtn {
  10335. margin-left: 10px;
  10336. }
  10337. .groupContent >>> .el-input-number.is-without-controls .el-input__inner {
  10338. text-align: left;
  10339. }
  10340. .radioBox > div {
  10341. margin: 10px 0 0 10px;
  10342. }
  10343. .radioBox >>> .el-radio__input,
  10344. .radioBox >>> .el-checkbox__inner {
  10345. margin-left: 10px;
  10346. }
  10347. .radioBox >>> .el-radio__label,
  10348. .radioBox >>> .el-checkbox__label {
  10349. display: flex;
  10350. align-items: center;
  10351. }
  10352. .inImg {
  10353. width: 50px;
  10354. }
  10355. .inImg > img {
  10356. width: 100%;
  10357. height: 100%;
  10358. object-fit: cover;
  10359. }
  10360. .upCss >>> .el-upload-list--picture .el-upload-list__item {
  10361. height: auto;
  10362. }
  10363. .upCss >>> .el-upload-list--picture .el-upload-list__item-thumbnail {
  10364. width: 200px;
  10365. height: 100px;
  10366. object-fit: contain;
  10367. background: unset;
  10368. }
  10369. .upCss
  10370. >>> .el-upload-list--picture
  10371. .el-upload-list__item.is-success
  10372. .el-upload-list__item-name {
  10373. display: none;
  10374. }
  10375. .tcMember + .tcMember::before {
  10376. content: "、";
  10377. }
  10378. .xzUpImg {
  10379. width: 25px;
  10380. height: 25px;
  10381. cursor: pointer;
  10382. }
  10383. .xzUpImg > img {
  10384. width: 100%;
  10385. height: 100%;
  10386. }
  10387. .closeCss {
  10388. position: absolute;
  10389. top: 8px;
  10390. right: 8px;
  10391. cursor: pointer;
  10392. width: 20px;
  10393. height: 20px;
  10394. }
  10395. .closeCss > img {
  10396. width: 100%;
  10397. height: 100%;
  10398. }
  10399. .moveBtn {
  10400. display: flex;
  10401. flex-direction: column;
  10402. align-items: flex-end;
  10403. width: 40px;
  10404. }
  10405. .timuUpImg {
  10406. display: flex;
  10407. flex-direction: row;
  10408. align-items: center;
  10409. }
  10410. .timuUpImg > div:nth-child(1) {
  10411. margin-right: 10px;
  10412. }
  10413. .timuImgBox {
  10414. margin: 10px 0;
  10415. display: flex;
  10416. flex-direction: row;
  10417. flex-wrap: wrap;
  10418. align-items: center;
  10419. }
  10420. .timuImg {
  10421. width: 100%;
  10422. margin-right: 10px;
  10423. cursor: pointer;
  10424. }
  10425. .timuImg > img {
  10426. width: 100%;
  10427. height: 100%;
  10428. object-fit: cover;
  10429. }
  10430. </style>