addCourse.vue 486 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234
  1. <template>
  2. <div class="pb_content">
  3. <div class="pb_content_body" style="position: relative; margin: 0">
  4. <div class="right">
  5. <!-- <div style="display: flex; margin-top: 20px; position: relative"> -->
  6. <div style="width: 100%; height: 100%; overflow: auto" ref="stepBox">
  7. <div class="courseTop">
  8. <div class="stepsNav">
  9. <h3 class="info_title" v-if="steps == 1">填写基本信息</h3>
  10. <h3 class="info_title" v-if="steps == 4">上传课程</h3>
  11. <el-breadcrumb
  12. separator-class="el-icon-arrow-right"
  13. style="margin-top: 15px"
  14. >
  15. <el-breadcrumb-item
  16. :to="{
  17. path:
  18. '/course?userid=' +
  19. userid +
  20. '&oid=' +
  21. oid +
  22. '&org=' +
  23. org +
  24. '&role=' +
  25. role,
  26. }"
  27. >课程管理</el-breadcrumb-item
  28. >
  29. <el-breadcrumb-item>
  30. <span style="color: rgb(15, 126, 255)">添加课程</span>
  31. </el-breadcrumb-item>
  32. </el-breadcrumb>
  33. </div>
  34. </div>
  35. <div
  36. class="rightBox"
  37. v-if="this.steps == 1"
  38. @mousewheel="scrollChange"
  39. >
  40. <div
  41. class="updateMask"
  42. :style="{
  43. height: rightBoxHeight ? rightBoxHeight + 'px' : '100%',
  44. }"
  45. v-if="cid && userid != courseUserid && role != '1'"
  46. ></div>
  47. <div class="whiteBg">
  48. <div
  49. class="right_title"
  50. :class="{
  51. updateTips: cid && userid != courseUserid && role != '1',
  52. }"
  53. >
  54. 课程基本信息
  55. </div>
  56. <div class="basic_box">
  57. <div class="big_box">
  58. <div class="left_first">
  59. <div>
  60. <div>
  61. <div class="bInfo_title" style="margin-bottom: 15px">
  62. <!-- <span style="color: red">*</span> -->
  63. 课程名称
  64. </div>
  65. <div style="display: flex; margin-right: 20px">
  66. <img
  67. src="../../../assets/icon/projectName.png"
  68. alt
  69. style="margin-right: 8px"
  70. />
  71. <input
  72. type="text"
  73. placeholder="请输入课程名称"
  74. class="binfo_input"
  75. v-model="courseName"
  76. />
  77. </div>
  78. </div>
  79. <div
  80. class="pType_box all_choose"
  81. v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'"
  82. >
  83. <span>类型</span>
  84. <!-- 学科+ 主题+ 未来+ -->
  85. <el-radio-group
  86. @change="CourseType2Change"
  87. v-model="pTypeCheckName"
  88. style="display: flex; align-items: center"
  89. >
  90. <div
  91. class="all_choose"
  92. style="width: 100px"
  93. v-for="(item, index) in CourseType2"
  94. :key="index"
  95. >
  96. <el-radio :label="item.name">{{
  97. item.name
  98. }}</el-radio>
  99. </div>
  100. </el-radio-group>
  101. </div>
  102. <div class="both">
  103. <div class="choose">
  104. <div
  105. class="all_choose"
  106. v-for="(item, index) in CourseType[0]"
  107. :key="index"
  108. >
  109. <span
  110. v-if="
  111. CourseTypeJson[item.id].length > 0 &&
  112. (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
  113. ? pTypeCheck.indexOf(item.id) != -1
  114. : true)
  115. "
  116. >{{ item.name }}</span
  117. >
  118. <el-checkbox-group
  119. v-model="courseTypeId"
  120. v-if="
  121. CourseTypeJson[item.id].length > 0 &&
  122. (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
  123. ? pTypeCheck.indexOf(item.id) != -1
  124. : true)
  125. "
  126. >
  127. <el-checkbox
  128. v-for="item1 in CourseTypeJson[item.id]"
  129. :key="item1.id"
  130. :label="item1.id"
  131. >{{ item1.name }}</el-checkbox
  132. >
  133. </el-checkbox-group>
  134. <!-- <div
  135. v-else
  136. style="font-size: 14px; margin-left: -8px"
  137. >
  138. 暂无
  139. </div> -->
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div class="whiteBg" style="border-radius: 0">
  149. <div class="right_first">
  150. <div class="right_title">上传封面</div>
  151. <div
  152. style="
  153. padding: 0 0 50px 20px;
  154. display: flex;
  155. align-items: baseline;
  156. justify-content: flex-start;
  157. margin: 0 auto;
  158. "
  159. >
  160. <div>
  161. <div class="bInfo_title" style="margin-top: 0 !important">
  162. 课程封面
  163. </div>
  164. <div
  165. class="uploadFm"
  166. @click="choosePicVisible = true"
  167. v-if="cover.length == 0"
  168. >
  169. <img src="../../../assets/icon/addPoster.png" alt="" />
  170. </div>
  171. <el-upload
  172. :class="{ disUoloadSty: noneBtnImg }"
  173. class="upCss"
  174. action="#"
  175. list-type="picture"
  176. v-loading="uploadLoading1"
  177. :http-request="beforeUpload1"
  178. ref="upload1"
  179. :on-preview="handlePictureCardPreview"
  180. :on-remove="handle_remove1"
  181. :show-file-list="true"
  182. :file-list="cover"
  183. accept="image/*"
  184. :limit="1"
  185. :on-exceed="onExceed"
  186. v-else
  187. >
  188. <i class="el-icon-plus"></i>
  189. </el-upload>
  190. </div>
  191. <div
  192. style="
  193. display: flex;
  194. flex-flow: row nowrap;
  195. flex-direction: row;
  196. flex-wrap: wrap;
  197. align-items: baseline;
  198. margin: 0 30px;
  199. "
  200. >
  201. <div style="margin: 0 30px 0 0; width: 150px">
  202. <div class="bInfo_title">添加班级</div>
  203. <div
  204. class="addPeople"
  205. @click="
  206. (dialogVisibleClass = true),
  207. (classSearch = ''),
  208. getClass()
  209. "
  210. >
  211. 添加班级
  212. </div>
  213. <div
  214. v-if="checkboxList2.length"
  215. style="
  216. max-width: 100%;
  217. word-break: break-all;
  218. overflow: hidden;
  219. margin-top: 10px;
  220. font-size: 14px;
  221. color: #6e6e6e;
  222. "
  223. >
  224. <span
  225. :class="{ tcMember: getClassC(tc) }"
  226. v-for="(tc, tcIndex) in checkboxList2"
  227. :key="tcIndex"
  228. >{{ getClassC(tc) }}</span
  229. >
  230. </div>
  231. </div>
  232. </div>
  233. </div>
  234. <div style="width: 95%; padding: 15px 0px 15px 20px">
  235. <el-switch
  236. v-model="isTeacherSee"
  237. active-text="是否公开此课程"
  238. style="padding-bottom: 30px"
  239. ></el-switch>
  240. </div>
  241. </div>
  242. </div>
  243. <div
  244. class="whiteBg"
  245. style="border-radius: 0; margin-top: 15px"
  246. v-if="false"
  247. >
  248. <div class="right_title">课程简要描述</div>
  249. <div style="width: 95%; padding: 15px 0px 15px 20px">
  250. <div style="width: 55%">
  251. <textarea
  252. rows="8"
  253. class="binfo_input"
  254. cols
  255. v-model="courseText"
  256. :placeholder="
  257. '1、课程内容说明' +
  258. '\n' +
  259. '2、课程学习知识目标' +
  260. '\n' +
  261. '3、课程学习技能目标'
  262. "
  263. ></textarea>
  264. </div>
  265. </div>
  266. </div>
  267. <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
  268. <div class="right_title">
  269. <span>上传课程内容</span>
  270. <el-button type="primary" @click="pasteTask" size="mini" style="margin-left:10px"
  271. >智能粘贴</el-button
  272. >
  273. </div>
  274. <div style="padding: 0 0 50px 20px; display: flex">
  275. <div class="course_left">
  276. <div class="stepsBottom2">
  277. <div class="navTop">辅助导航</div>
  278. <div class="navBottom">
  279. <div
  280. class="navTask"
  281. :class="{
  282. isNavTask:
  283. isClickColor > 0 && isClickColor == tIndex + 1,
  284. }"
  285. v-for="(t, tIndex) in unitJson[unitIndex].chapterInfo[0]
  286. .taskJson"
  287. :key="tIndex"
  288. @click="goToTask(tIndex)"
  289. >
  290. <div>任务{{ tIndex + 1 }}</div>
  291. <div>
  292. <el-tooltip
  293. effect="light"
  294. :content="t.task"
  295. placement="top"
  296. >
  297. <span>{{ t.task }}</span>
  298. </el-tooltip>
  299. </div>
  300. <div
  301. class="moveBtn"
  302. v-if="
  303. unitJson[unitIndex].chapterInfo[0].taskJson.length >
  304. 1
  305. "
  306. >
  307. <div
  308. class="chapter_upload_up"
  309. style="width: 15px; height: 15px"
  310. @click.stop="taskMove(1, tIndex)"
  311. ></div>
  312. <div
  313. class="chapter_upload_down"
  314. style="width: 15px; height: 15px; margin: 2px 0 0"
  315. @click.stop="taskMove(2, tIndex)"
  316. ></div>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. <div class="basic_box2">
  323. <div
  324. style="margin: 0 0 40px 0; padding: 0 20px 0 20px"
  325. v-for="(item, index) in unitJson[unitIndex].chapterInfo"
  326. :key="index"
  327. >
  328. <div class="taskBorder">
  329. <div
  330. class="basic_box"
  331. style="
  332. margin: 0;
  333. min-height: 0;
  334. width: 90% !important;
  335. padding-top: 10px !important;
  336. "
  337. >
  338. <div
  339. style="
  340. display: flex;
  341. margin: 0 0 20px 0;
  342. flex-direction: row;
  343. justify-content: flex-start;
  344. align-items: center;
  345. "
  346. >
  347. <div class="lineTitle">学习内容</div>
  348. <div class="line"></div>
  349. </div>
  350. <div>
  351. <div
  352. class="add_chapters_box"
  353. v-if="
  354. item.taskJson[0].chapterData &&
  355. item.taskJson[0].chapterData.length == 0
  356. "
  357. style="height: 185px"
  358. ></div>
  359. <div
  360. v-else
  361. class="add_chapters_box"
  362. style="display: flex; flex-direction: column"
  363. >
  364. <div
  365. class="chapter_upload"
  366. v-for="(item1, index1) in item.taskJson[0]
  367. .chapterData"
  368. :key="item1.id"
  369. @click="
  370. getChapterData(
  371. $event,
  372. unitIndex,
  373. index,
  374. index1,
  375. item1.type
  376. )
  377. "
  378. >
  379. <div
  380. class="chapter_upload_t"
  381. style="width: 100%"
  382. ></div>
  383. <div
  384. class="chapter_upload_o"
  385. style="
  386. position: relative;
  387. display: flex;
  388. align-items: center;
  389. "
  390. >
  391. <div
  392. class="chapter_upload_l"
  393. style="padding: 1px 0 0 10px"
  394. >
  395. <div
  396. v-if="item1.type == 2"
  397. class="chapter_upload_l_i1"
  398. ></div>
  399. <div
  400. v-if="
  401. item1.type == 3 ||
  402. item1.type == 12 ||
  403. item1.type == 13 ||
  404. item1.type == 6 ||
  405. item1.type == 7
  406. "
  407. class="chapter_upload_l_i5"
  408. style="margin-left: 1px"
  409. ></div>
  410. <div
  411. v-if="item1.type == 8"
  412. class="chapter_upload_l_i8"
  413. style="margin-left: 1px"
  414. ></div>
  415. </div>
  416. <div
  417. class="chapter_upload_ic"
  418. style="
  419. cursor: pointer;
  420. position: absolute;
  421. width: 45px;
  422. right: 0;
  423. top: 0;
  424. "
  425. >
  426. <div class="chapter_upload_ic_l"></div>
  427. <div
  428. class="chapter_upload_ic_r"
  429. style="position: absolute"
  430. @click.stop="
  431. deleteChapterData(
  432. $event,
  433. unitIndex,
  434. index,
  435. index1,
  436. 0
  437. )
  438. "
  439. >
  440. <div></div>
  441. </div>
  442. </div>
  443. <div class="chapter_upload_n">
  444. <input
  445. v-if="
  446. item1.type == 2 ||
  447. item1.type == 3 ||
  448. item1.type == 12 ||
  449. item1.type == 13 ||
  450. item1.type == 7
  451. "
  452. :placeholder="item1.name"
  453. @change="
  454. updataVideoT(
  455. $event,
  456. unitIndex,
  457. chapterIndex,
  458. index1
  459. )
  460. "
  461. style="
  462. border: none;
  463. outline: none;
  464. width: 80%;
  465. minwidth: 215px;
  466. z-index: 99;
  467. font-size: 14px;
  468. white-space: nowrap;
  469. overflow: hidden;
  470. text-overflow: ellipsis;
  471. "
  472. />
  473. <input
  474. :placeholder="item1.name"
  475. v-if="item1.type == 6"
  476. style="
  477. border: none;
  478. outline: none;
  479. width: 80%;
  480. white-space: nowrap;
  481. overflow: hidden;
  482. text-overflow: ellipsis;
  483. "
  484. readonly="true"
  485. @click="selectAttText(0, index1)"
  486. />
  487. <input
  488. :placeholder="
  489. item1.title ? item1.title : '链接'
  490. "
  491. v-if="item1.type == 8"
  492. style="
  493. border: none;
  494. outline: none;
  495. width: 80%;
  496. white-space: nowrap;
  497. overflow: hidden;
  498. text-overflow: ellipsis;
  499. "
  500. readonly="true"
  501. @click="selectLine(0, index1)"
  502. />
  503. <div
  504. class="chapter_upload_ud"
  505. style="z-index: 99"
  506. >
  507. <div
  508. class="chapter_upload_up"
  509. @click="
  510. upCd(
  511. $event,
  512. unitIndex,
  513. index,
  514. 0,
  515. index1
  516. )
  517. "
  518. ></div>
  519. <div
  520. class="chapter_upload_down"
  521. @click="
  522. downCd(
  523. $event,
  524. unitIndex,
  525. index,
  526. 0,
  527. index1
  528. )
  529. "
  530. ></div>
  531. </div>
  532. </div>
  533. </div>
  534. </div>
  535. </div>
  536. </div>
  537. <div class="add_info_box">
  538. <button class="info_btn" @click="addImg($event)">
  539. 添加文件
  540. <input
  541. type="file"
  542. accept="*"
  543. style="display: none"
  544. v-if="inputShow"
  545. @change="beforeUpload2($event, unitIndex, 13, 0)"
  546. />
  547. </button>
  548. <!-- <button class="info_btn" @click="addImg($event)">
  549. 添加视频
  550. <input type="file" accept="video/mp4, video/quicktime, video/x-msvideo" style="display: none"
  551. v-if="inputShow" @change="beforeUpload2($event, unitIndex, 2, 0)
  552. " />
  553. </button>
  554. <button class="info_btn" @click="addImg($event)">
  555. 添加文档
  556. <input type="file"
  557. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  558. style="display: none" v-if="inputShow" @change="beforeUpload2($event, unitIndex, 3, 0)
  559. " />
  560. </button> -->
  561. <button class="info_btn" @click="addAttText(0)">
  562. 添加图文
  563. </button>
  564. <button class="info_btn" @click="openLine(0)">
  565. 添加链接
  566. </button>
  567. <button class="info_btn" @click="pasteLine(0)">
  568. 嵌入代码
  569. </button>
  570. <!-- <button class="info_btn" @click="openSource(0)">
  571. 添加资源
  572. </button> -->
  573. <!-- <button class="info_btn" @click="addImg($event)">
  574. 其他附件
  575. <input type="file" accept="*" style="display: none" v-if="inputShow" @change="beforeUpload2($event, unitIndex, 12, itemTaskIndex)
  576. " />
  577. </button> -->
  578. </div>
  579. <div
  580. v-if="
  581. unitJson[unitIndex].chapterInfo[0].taskJson[0]
  582. .proVisible
  583. "
  584. class="mask"
  585. >
  586. <div class="progressBox">
  587. <!-- <div id="closePro" class="closeCss">
  588. <img src="../../../../assets/icon/close.png" alt />
  589. </div> -->
  590. <div class="lbox">
  591. <img
  592. src="../../../assets/loading.gif"
  593. />上传中,请稍后
  594. </div>
  595. <div style="margin-bottom: 10px">
  596. <span
  597. >{{
  598. unitJson[unitIndex].chapterInfo[0].taskJson[0]
  599. .isFinishSize
  600. }}M</span
  601. >
  602. /
  603. <span
  604. >{{
  605. unitJson[unitIndex].chapterInfo[0].taskJson[0]
  606. .isAllSize
  607. }}M</span
  608. >
  609. </div>
  610. <el-progress
  611. :text-inside="true"
  612. :stroke-width="20"
  613. :percentage="
  614. unitJson[unitIndex].chapterInfo[0].taskJson[0]
  615. .progress
  616. ? unitJson[unitIndex].chapterInfo[0]
  617. .taskJson[0].progress
  618. : 0
  619. "
  620. style="width: 80%"
  621. ></el-progress>
  622. </div>
  623. </div>
  624. </div>
  625. </div>
  626. <div
  627. class="taskBorder"
  628. :style="{
  629. minHeight: unitJson[unitIndex].easy && 'unset',
  630. }"
  631. v-for="(itemTask, itemTaskIndex) in item.taskJson"
  632. :key="itemTaskIndex"
  633. >
  634. <div v-if="unitJson[unitIndex].easy != 1">
  635. <div
  636. :style="{
  637. marginBottom:
  638. unitJson[unitIndex].easy == 3 ||
  639. (unitJson[unitIndex].easy == 5 &&
  640. itemTask.taskType == 1)
  641. ? '75px'
  642. : '0',
  643. }"
  644. >
  645. <div
  646. style="font-size: 22px; color: #8e8e8e"
  647. :id="'task' + itemTaskIndex"
  648. >
  649. 任务{{ itemTaskIndex + 1 }}
  650. </div>
  651. <div
  652. class="chapter_contentbox"
  653. style="
  654. flex-direction: row;
  655. justify-content: flex-start;
  656. align-items: center;
  657. "
  658. >
  659. <div
  660. style="
  661. border-left: 6px solid #5699e8;
  662. height: 20px;
  663. padding-left: 10px;
  664. line-height: 22px;
  665. "
  666. >
  667. 任务名称
  668. </div>
  669. <div>
  670. <input
  671. type="text"
  672. placeholder="输入任务名称"
  673. class="binfo_input"
  674. style="border-radius: 4px"
  675. v-model="
  676. unitJson[unitIndex].chapterInfo[0].taskJson[
  677. itemTaskIndex
  678. ].task
  679. "
  680. />
  681. </div>
  682. <div
  683. class="remove"
  684. v-if="item.taskJson.length > 1"
  685. @click="deleteTask(itemTaskIndex)"
  686. style="position: absolute; right: 55px"
  687. ></div>
  688. </div>
  689. </div>
  690. </div>
  691. <div style="padding: 25px 0 10px 30px">
  692. <!-- <editor-bar style="width: 90% !important; margin: 0" placeholder="请输入任务描述" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
  693. itemTaskIndex
  694. ].taskDetail
  695. " @change="change"></editor-bar> -->
  696. <textarea
  697. rows="2"
  698. class="binfo_input"
  699. placeholder="请输入任务描述"
  700. cols
  701. style="width: 90% !important; resize: none"
  702. v-model="
  703. unitJson[unitIndex].chapterInfo[0].taskJson[
  704. itemTaskIndex
  705. ].taskDetail
  706. "
  707. ></textarea>
  708. </div>
  709. <div class="toolChoose" style="padding: 0 0 0 30px">
  710. <div class="tools">
  711. <div
  712. class="leftTools"
  713. style="
  714. width: 95%;
  715. padding: 0 0 15px 0;
  716. border-bottom: 1px solid #efefef;
  717. margin-bottom: 15px;
  718. "
  719. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  720. :key="toolIndex"
  721. >
  722. <div>
  723. <textarea
  724. rows="3"
  725. type="text"
  726. placeholder="添加工具描述"
  727. class="binfo_input"
  728. style="
  729. margin: 0 0 20px 0;
  730. width: 71.5% !important;
  731. "
  732. v-model="itemTool.toolDetail"
  733. ></textarea>
  734. </div>
  735. <div
  736. style="
  737. display: flex;
  738. flex-direction: row;
  739. align-items: baseline;
  740. flex-wrap: nowrap;
  741. justify-content: flex-start;
  742. position: relative;
  743. "
  744. >
  745. <div
  746. style="margin-right: 20px; font-weight: bold"
  747. >
  748. 步骤 {{ toolIndex + 1 }} :
  749. </div>
  750. <div class="chooseWho">
  751. <!-- <div :class="itemTool.toolType == 0 ? 'isChooseActive' : ''
  752. " @click="(itemTool.toolType = 0), $forceUpdate()">
  753. 互动类
  754. </div> -->
  755. <div
  756. :class="
  757. itemTool.toolType == 1
  758. ? 'isChooseActive'
  759. : ''
  760. "
  761. @click="
  762. (itemTool.toolType = 1), $forceUpdate()
  763. "
  764. >
  765. 思维类
  766. </div>
  767. <div
  768. :class="
  769. itemTool.toolType == 6
  770. ? 'isChooseActive'
  771. : ''
  772. "
  773. @click="
  774. (itemTool.toolType = 6), $forceUpdate()
  775. "
  776. >
  777. 协作类
  778. </div>
  779. <div
  780. :class="
  781. itemTool.toolType == 2
  782. ? 'isChooseActive'
  783. : ''
  784. "
  785. @click="
  786. (itemTool.toolType = 2), $forceUpdate()
  787. "
  788. >
  789. 测评类
  790. </div>
  791. <div
  792. :class="
  793. itemTool.toolType == 7
  794. ? 'isChooseActive'
  795. : ''
  796. "
  797. @click="
  798. (itemTool.toolType = 7), $forceUpdate()
  799. "
  800. >
  801. 评价类
  802. </div>
  803. <div
  804. :class="
  805. itemTool.toolType == 3
  806. ? 'isChooseActive'
  807. : ''
  808. "
  809. @click="
  810. (itemTool.toolType = 3), $forceUpdate()
  811. "
  812. >
  813. 学科类
  814. </div>
  815. <!-- <div :class="itemTool.toolType == 5 ? 'isChooseActive' : ''
  816. " @click="(itemTool.toolType = 5), $forceUpdate()">
  817. 学科类
  818. </div>
  819. <div :class="itemTool.toolType == 4 ? 'isChooseActive' : ''
  820. " @click="(itemTool.toolType = 4), $forceUpdate()">
  821. 其他
  822. </div> -->
  823. </div>
  824. <div
  825. class="remove"
  826. @click="deleteTool(itemTaskIndex, toolIndex)"
  827. v-if="itemTask.toolChoose.length > 1"
  828. style="position: absolute; right: 55px"
  829. ></div>
  830. </div>
  831. <div style="min-height: 163px">
  832. <div
  833. class="toolSort"
  834. v-if="itemTool.toolType == 0"
  835. >
  836. <!-- <div class="tool">
  837. <div
  838. class="whiteBIcon"
  839. @click="addTools(8, itemTaskIndex, toolIndex)"
  840. >
  841. <img src="../../../assets/icon/secondToolList/library.png" alt />
  842. <div style="margin: 5px 0">素材库</div>
  843. </div>
  844. <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
  845. <img
  846. src="../../../assets/icon/checkNo.png"
  847. alt
  848. v-if="itemTool.tool.indexOf(8) == -1"
  849. />
  850. <div class="checkDiv" v-else><img src="../../../assets/icon/checkedIs.png"
  851. alt /><span>已选择</span></div>
  852. </div>
  853. </div>-->
  854. <!-- <div class="tool">
  855. <div
  856. class="whiteBIcon"
  857. @click="addTools(17, itemTaskIndex, toolIndex)"
  858. >
  859. <img
  860. src="../../../assets/icon/secondToolList/library.png"
  861. alt
  862. />
  863. <div style="margin: 5px 0">学习资料</div>
  864. </div>
  865. <div
  866. class="check"
  867. @click="addTools(17, itemTaskIndex, toolIndex)"
  868. >
  869. <img
  870. src="../../../assets/icon/checkNo.png"
  871. alt
  872. v-if="itemTool.tool.indexOf(17) == -1"
  873. />
  874. <img
  875. src="../../../assets/icon/checkedIs.png"
  876. alt
  877. v-else
  878. />
  879. </div>10
  880. </div> -->
  881. <div class="tool">
  882. <div
  883. class="whiteBIcon"
  884. @click="
  885. openTools(itemTaskIndex, 10, toolIndex)
  886. "
  887. >
  888. <img
  889. src="../../../assets/icon/thirdToolList/time.png"
  890. alt
  891. />
  892. <div style="margin: 5px 0">倒计时</div>
  893. </div>
  894. <div
  895. class="check"
  896. @click="
  897. addTools(10, itemTaskIndex, toolIndex)
  898. "
  899. >
  900. <img
  901. src="../../../assets/icon/checkNo.png"
  902. alt
  903. v-if="itemTool.tool.indexOf(10) == -1"
  904. />
  905. <div class="checkDiv" v-else>
  906. <img
  907. src="../../../assets/icon/checkedIs.png"
  908. alt
  909. /><span>已选择</span>
  910. </div>
  911. </div>
  912. </div>
  913. <!-- <div class="tool">
  914. <div
  915. class="whiteBIcon"
  916. @click="
  917. openTools(itemTaskIndex, 49, toolIndex)
  918. "
  919. >
  920. <img
  921. src="../../../assets/icon/fourthToolList/group.png"
  922. alt
  923. />
  924. <div style="margin: 5px 0">学生分组</div>
  925. </div>
  926. <div
  927. class="check"
  928. @click="
  929. addTools(49, itemTaskIndex, toolIndex)
  930. "
  931. >
  932. <img
  933. src="../../../assets/icon/checkNo.png"
  934. alt
  935. v-if="itemTool.tool.indexOf(49) == -1"
  936. />
  937. <div class="checkDiv" v-else>
  938. <img
  939. src="../../../assets/icon/checkedIs.png"
  940. alt
  941. /><span>已选择</span>
  942. </div>
  943. </div>
  944. </div> -->
  945. <div class="tool">
  946. <div
  947. class="whiteBIcon"
  948. @click="
  949. openTools(itemTaskIndex, 62, toolIndex)
  950. "
  951. >
  952. <img
  953. src="../../../assets/icon/fourthToolList/interVideo.png"
  954. alt
  955. />
  956. <div style="margin: 5px 0">交互视频</div>
  957. </div>
  958. <div
  959. class="check"
  960. @click="
  961. addTools(62, itemTaskIndex, toolIndex)
  962. "
  963. >
  964. <img
  965. src="../../../assets/icon/checkNo.png"
  966. alt
  967. v-if="itemTool.tool.indexOf(62) == -1"
  968. />
  969. <div class="checkDiv" v-else>
  970. <img
  971. src="../../../assets/icon/checkedIs.png"
  972. alt
  973. /><span>已选择</span>
  974. </div>
  975. </div>
  976. </div>
  977. </div>
  978. <div
  979. class="toolSort"
  980. v-if="itemTool.toolType == 1"
  981. >
  982. <div class="tool">
  983. <div
  984. class="whiteBIcon"
  985. @click="
  986. addTools(7, itemTaskIndex, toolIndex)
  987. "
  988. >
  989. <img
  990. src="../../../assets/icon/secondToolList/mindNetwork.png"
  991. alt
  992. />
  993. <div style="margin: 5px 0">思维网格</div>
  994. </div>
  995. <div
  996. class="check"
  997. @click="
  998. addTools(7, itemTaskIndex, toolIndex)
  999. "
  1000. >
  1001. <img
  1002. src="../../../assets/icon/checkNo.png"
  1003. alt
  1004. v-if="itemTool.tool.indexOf(7) == -1"
  1005. />
  1006. <div class="checkDiv" v-else>
  1007. <img
  1008. src="../../../assets/icon/checkedIs.png"
  1009. alt
  1010. /><span>已选择</span>
  1011. </div>
  1012. </div>
  1013. </div>
  1014. <div class="tool">
  1015. <div
  1016. class="whiteBIcon"
  1017. @click="
  1018. openTools(itemTaskIndex, 1, toolIndex)
  1019. "
  1020. >
  1021. <img
  1022. src="../../../assets/icon/secondToolList/whiteBoard.png"
  1023. alt
  1024. />
  1025. <div style="margin: 5px 0">电子白板</div>
  1026. </div>
  1027. <div
  1028. class="check"
  1029. @click="
  1030. addTools(1, itemTaskIndex, toolIndex)
  1031. "
  1032. >
  1033. <img
  1034. src="../../../assets/icon/checkNo.png"
  1035. alt
  1036. v-if="itemTool.tool.indexOf(1) == -1"
  1037. />
  1038. <div class="checkDiv" v-else>
  1039. <img
  1040. src="../../../assets/icon/checkedIs.png"
  1041. alt
  1042. /><span>已选择</span>
  1043. </div>
  1044. </div>
  1045. </div>
  1046. <!-- <div class="tool">
  1047. <div
  1048. class="whiteBIcon"
  1049. @click="addTools(2, itemTaskIndex, toolIndex)"
  1050. >
  1051. <img
  1052. src="../../../assets/icon/secondToolList/note.png"
  1053. alt
  1054. />
  1055. <div style="margin: 5px 0">便签</div>
  1056. </div>
  1057. <div
  1058. class="check"
  1059. @click="addTools(2, itemTaskIndex, toolIndex)"
  1060. >
  1061. <img
  1062. src="../../../assets/icon/checkNo.png"
  1063. alt
  1064. v-if="itemTool.tool.indexOf(2) == -1"
  1065. />
  1066. <div class="checkDiv" v-else>
  1067. <img
  1068. src="../../../assets/icon/checkedIs.png"
  1069. alt
  1070. /><span>已选择</span>
  1071. </div>
  1072. </div>
  1073. </div> -->
  1074. <!-- <div class="tool">
  1075. <div class="whiteBIcon" @click="addTools(6, itemTaskIndex, toolIndex)">
  1076. <img src="../../../assets/icon/secondToolList/doc.png" alt />
  1077. <div style="margin: 5px 0">协同文档</div>
  1078. </div>
  1079. <div
  1080. class="check"
  1081. @click="addTools(6, itemTaskIndex, toolIndex)"
  1082. >
  1083. <img
  1084. src="../../../assets/icon/checkNo.png"
  1085. alt
  1086. v-if="itemTool.tool.indexOf(6) == -1"
  1087. />
  1088. <div class="checkDiv" v-else>
  1089. <img
  1090. src="../../../assets/icon/checkedIs.png"
  1091. alt
  1092. /><span>已选择</span>
  1093. </div>
  1094. </div>
  1095. </div> -->
  1096. <div class="tool">
  1097. <div
  1098. class="whiteBIcon"
  1099. @click="
  1100. openTools(itemTaskIndex, 52, toolIndex)
  1101. "
  1102. >
  1103. <img
  1104. src="../../../assets/icon/fourthToolList/text.png"
  1105. alt
  1106. />
  1107. <div style="margin: 5px 0">文档</div>
  1108. </div>
  1109. <div
  1110. class="check"
  1111. @click="
  1112. addTools(52, itemTaskIndex, toolIndex)
  1113. "
  1114. >
  1115. <img
  1116. src="../../../assets/icon/checkNo.png"
  1117. alt
  1118. v-if="itemTool.tool.indexOf(52) == -1"
  1119. />
  1120. <div class="checkDiv" v-else>
  1121. <img
  1122. src="../../../assets/icon/checkedIs.png"
  1123. alt
  1124. /><span>已选择</span>
  1125. </div>
  1126. </div>
  1127. </div>
  1128. <div class="tool">
  1129. <div
  1130. class="whiteBIcon"
  1131. @click="
  1132. openTools(itemTaskIndex, 3, toolIndex)
  1133. "
  1134. >
  1135. <img
  1136. src="../../../assets/icon/secondToolList/mindMapping.png"
  1137. alt
  1138. />
  1139. <div style="margin: 5px 0">思维导图</div>
  1140. </div>
  1141. <div
  1142. class="check"
  1143. @click="
  1144. addTools(3, itemTaskIndex, toolIndex)
  1145. "
  1146. >
  1147. <img
  1148. src="../../../assets/icon/checkNo.png"
  1149. alt
  1150. v-if="itemTool.tool.indexOf(3) == -1"
  1151. />
  1152. <div class="checkDiv" v-else>
  1153. <img
  1154. src="../../../assets/icon/checkedIs.png"
  1155. alt
  1156. /><span>已选择</span>
  1157. </div>
  1158. </div>
  1159. </div>
  1160. <div class="tool">
  1161. <div
  1162. class="whiteBIcon"
  1163. @click="
  1164. openTools(itemTaskIndex, 48, toolIndex)
  1165. "
  1166. >
  1167. <img
  1168. src="../../../assets/icon/fourthToolList/table.png"
  1169. alt
  1170. />
  1171. <div style="margin: 5px 0">表格</div>
  1172. </div>
  1173. <div
  1174. class="check"
  1175. @click="
  1176. addTools(48, itemTaskIndex, toolIndex)
  1177. "
  1178. >
  1179. <img
  1180. src="../../../assets/icon/checkNo.png"
  1181. alt
  1182. v-if="itemTool.tool.indexOf(48) == -1"
  1183. />
  1184. <div class="checkDiv" v-else>
  1185. <img
  1186. src="../../../assets/icon/checkedIs.png"
  1187. alt
  1188. /><span>已选择</span>
  1189. </div>
  1190. </div>
  1191. </div>
  1192. </div>
  1193. <div
  1194. class="toolSort"
  1195. v-if="itemTool.toolType == 6"
  1196. >
  1197. <div class="tool">
  1198. <div
  1199. class="whiteBIcon"
  1200. @click="
  1201. openTools(itemTaskIndex, 49, toolIndex)
  1202. "
  1203. >
  1204. <img
  1205. src="../../../assets/icon/fourthToolList/group.png"
  1206. alt
  1207. />
  1208. <div style="margin: 5px 0">学生分组</div>
  1209. </div>
  1210. <div
  1211. class="check"
  1212. @click="
  1213. addTools(49, itemTaskIndex, toolIndex)
  1214. "
  1215. >
  1216. <img
  1217. src="../../../assets/icon/checkNo.png"
  1218. alt
  1219. v-if="itemTool.tool.indexOf(49) == -1"
  1220. />
  1221. <div class="checkDiv" v-else>
  1222. <img
  1223. src="../../../assets/icon/checkedIs.png"
  1224. alt
  1225. /><span>已选择</span>
  1226. </div>
  1227. </div>
  1228. </div>
  1229. </div>
  1230. <div
  1231. class="toolSort"
  1232. v-if="itemTool.toolType == 2"
  1233. >
  1234. <!-- <div class="tool">
  1235. <div
  1236. class="whiteBIcon"
  1237. @click="addTools(5, itemTaskIndex, toolIndex)"
  1238. >
  1239. <img
  1240. src="../../../assets/icon/thirdToolList/score.png"
  1241. alt
  1242. />
  1243. <div style="margin: 5px 0">量规评分</div>
  1244. </div>
  1245. <div
  1246. class="check"
  1247. @click="addTools(5, itemTaskIndex, toolIndex)"
  1248. >
  1249. <img
  1250. src="../../../assets/icon/checkNo.png"
  1251. alt
  1252. v-if="itemTool.tool.indexOf(5) == -1"
  1253. />
  1254. <img
  1255. src="../../../assets/icon/checkedIs.png"
  1256. alt
  1257. v-else
  1258. />
  1259. </div>
  1260. </div>-->
  1261. <div class="tool">
  1262. <div
  1263. class="whiteBIcon"
  1264. @click="
  1265. openTools(itemTaskIndex, 4, toolIndex)
  1266. "
  1267. >
  1268. <img
  1269. src="../../../assets/icon/thirdToolList/ask.png"
  1270. alt
  1271. />
  1272. <div style="margin: 5px 0">问卷调查</div>
  1273. </div>
  1274. <div
  1275. class="check"
  1276. @click="
  1277. addTools(4, itemTaskIndex, toolIndex)
  1278. "
  1279. >
  1280. <img
  1281. src="../../../assets/icon/checkNo.png"
  1282. alt
  1283. v-if="itemTool.tool.indexOf(4) == -1"
  1284. />
  1285. <div class="checkDiv" v-else>
  1286. <img
  1287. src="../../../assets/icon/checkedIs.png"
  1288. alt
  1289. /><span>已选择</span>
  1290. </div>
  1291. </div>
  1292. </div>
  1293. <div class="tool">
  1294. <div
  1295. class="whiteBIcon"
  1296. @click="
  1297. openTools(itemTaskIndex, 45, toolIndex)
  1298. "
  1299. >
  1300. <img
  1301. src="../../../assets/icon/thirdToolList/choose.png"
  1302. alt
  1303. />
  1304. <div style="margin: 5px 0">选择题</div>
  1305. </div>
  1306. <div
  1307. class="check"
  1308. @click="
  1309. addTools(45, itemTaskIndex, toolIndex)
  1310. "
  1311. >
  1312. <img
  1313. src="../../../assets/icon/checkNo.png"
  1314. alt
  1315. v-if="itemTool.tool.indexOf(45) == -1"
  1316. />
  1317. <div class="checkDiv" v-else>
  1318. <img
  1319. src="../../../assets/icon/checkedIs.png"
  1320. alt
  1321. /><span>已选择</span>
  1322. </div>
  1323. </div>
  1324. </div>
  1325. <div class="tool">
  1326. <div
  1327. class="whiteBIcon"
  1328. @click="
  1329. openTools(itemTaskIndex, 15, toolIndex)
  1330. "
  1331. >
  1332. <img
  1333. src="../../../assets/icon/thirdToolList/answer.png"
  1334. alt
  1335. />
  1336. <div style="margin: 5px 0">问答工具</div>
  1337. </div>
  1338. <div
  1339. class="check"
  1340. @click="
  1341. addTools(15, itemTaskIndex, toolIndex)
  1342. "
  1343. >
  1344. <img
  1345. src="../../../assets/icon/checkNo.png"
  1346. alt
  1347. v-if="itemTool.tool.indexOf(15) == -1"
  1348. />
  1349. <div class="checkDiv" v-else>
  1350. <img
  1351. src="../../../assets/icon/checkedIs.png"
  1352. alt
  1353. /><span>已选择</span>
  1354. </div>
  1355. </div>
  1356. </div>
  1357. <div class="tool">
  1358. <div
  1359. class="whiteBIcon"
  1360. @click="
  1361. addTools(16, itemTaskIndex, toolIndex)
  1362. "
  1363. >
  1364. <img
  1365. src="../../../assets/icon/thirdToolList/work.png"
  1366. alt
  1367. />
  1368. <div style="margin: 5px 0">作业提交</div>
  1369. </div>
  1370. <div
  1371. class="check"
  1372. @click="
  1373. addTools(16, itemTaskIndex, toolIndex)
  1374. "
  1375. >
  1376. <img
  1377. src="../../../assets/icon/checkNo.png"
  1378. alt
  1379. v-if="itemTool.tool.indexOf(16) == -1"
  1380. />
  1381. <div class="checkDiv" v-else>
  1382. <img
  1383. src="../../../assets/icon/checkedIs.png"
  1384. alt
  1385. /><span>已选择</span>
  1386. </div>
  1387. </div>
  1388. </div>
  1389. <div class="tool">
  1390. <div
  1391. class="whiteBIcon"
  1392. @click="
  1393. addTools(50, itemTaskIndex, toolIndex)
  1394. "
  1395. >
  1396. <img
  1397. src="../../../assets/icon/thirdToolList/plwork.png"
  1398. alt
  1399. />
  1400. <div style="margin: 5px 0">批量上传</div>
  1401. </div>
  1402. <div
  1403. class="check"
  1404. @click="
  1405. addTools(50, itemTaskIndex, toolIndex)
  1406. "
  1407. >
  1408. <img
  1409. src="../../../assets/icon/checkNo.png"
  1410. alt
  1411. v-if="itemTool.tool.indexOf(50) == -1"
  1412. />
  1413. <div class="checkDiv" v-else>
  1414. <img
  1415. src="../../../assets/icon/checkedIs.png"
  1416. alt
  1417. /><span>已选择</span>
  1418. </div>
  1419. </div>
  1420. </div>
  1421. <!-- <div class="tool">
  1422. <div
  1423. class="whiteBIcon"
  1424. @click="
  1425. openTools(itemTaskIndex, 40, toolIndex)
  1426. "
  1427. >
  1428. <img
  1429. src="../../../assets/icon/thirdToolList/eval.png"
  1430. alt
  1431. />
  1432. <div style="margin: 5px 0">个人评价</div>
  1433. </div>
  1434. <div
  1435. class="check"
  1436. @click="
  1437. addTools(40, itemTaskIndex, toolIndex)
  1438. "
  1439. >
  1440. <img
  1441. src="../../../assets/icon/checkNo.png"
  1442. alt
  1443. v-if="itemTool.tool.indexOf(40) == -1"
  1444. />
  1445. <div class="checkDiv" v-else>
  1446. <img
  1447. src="../../../assets/icon/checkedIs.png"
  1448. alt
  1449. /><span>已选择</span>
  1450. </div>
  1451. </div>
  1452. </div> -->
  1453. <div class="tool">
  1454. <div
  1455. class="whiteBIcon"
  1456. @click="
  1457. openTools(itemTaskIndex, 41, toolIndex)
  1458. "
  1459. >
  1460. <img
  1461. src="../../../assets/icon/thirdToolList/select.png"
  1462. alt
  1463. />
  1464. <div style="margin: 5px 0">选择填空</div>
  1465. </div>
  1466. <div
  1467. class="check"
  1468. @click="
  1469. addTools(41, itemTaskIndex, toolIndex)
  1470. "
  1471. >
  1472. <img
  1473. src="../../../assets/icon/checkNo.png"
  1474. alt
  1475. v-if="itemTool.tool.indexOf(41) == -1"
  1476. />
  1477. <div class="checkDiv" v-else>
  1478. <img
  1479. src="../../../assets/icon/checkedIs.png"
  1480. alt
  1481. /><span>已选择</span>
  1482. </div>
  1483. </div>
  1484. </div>
  1485. <div class="tool">
  1486. <div
  1487. class="whiteBIcon"
  1488. @click="
  1489. openTools(itemTaskIndex, 47, toolIndex)
  1490. "
  1491. >
  1492. <img
  1493. src="../../../assets/icon/fourthToolList/conSentences.png"
  1494. alt
  1495. />
  1496. <div style="margin: 5px 0">连词成句</div>
  1497. </div>
  1498. <div
  1499. class="check"
  1500. @click="
  1501. addTools(47, itemTaskIndex, toolIndex)
  1502. "
  1503. >
  1504. <img
  1505. src="../../../assets/icon/checkNo.png"
  1506. alt
  1507. v-if="itemTool.tool.indexOf(47) == -1"
  1508. />
  1509. <div class="checkDiv" v-else>
  1510. <img
  1511. src="../../../assets/icon/checkedIs.png"
  1512. alt
  1513. /><span>已选择</span>
  1514. </div>
  1515. </div>
  1516. </div>
  1517. <!-- <div class="tool">
  1518. <div
  1519. class="whiteBIcon"
  1520. @click="openTools(itemTaskIndex, 42, toolIndex)"
  1521. >
  1522. <img
  1523. src="../../../assets/icon/thirdToolList/mp3.png"
  1524. alt
  1525. />
  1526. <div style="margin: 5px 0">上传音频</div>
  1527. </div>
  1528. <div
  1529. class="check"
  1530. @click="addTools(42, itemTaskIndex, toolIndex)"
  1531. >
  1532. <img
  1533. src="../../../assets/icon/checkNo.png"
  1534. alt
  1535. v-if="itemTool.tool.indexOf(42) == -1"
  1536. />
  1537. <img
  1538. src="../../../assets/icon/checkedIs.png"
  1539. alt
  1540. v-else
  1541. />
  1542. </div>
  1543. </div> -->
  1544. </div>
  1545. <div
  1546. class="toolSort"
  1547. v-if="itemTool.toolType == 3"
  1548. >
  1549. <div class="tool">
  1550. <div
  1551. class="whiteBIcon"
  1552. @click="
  1553. addTools(18, itemTaskIndex, toolIndex)
  1554. "
  1555. >
  1556. <img
  1557. src="../../../assets/icon/thirdToolList/trainPlatform.png"
  1558. alt
  1559. />
  1560. <div style="margin: 5px 0">训练平台</div>
  1561. </div>
  1562. <div
  1563. class="check"
  1564. @click="
  1565. addTools(18, itemTaskIndex, toolIndex)
  1566. "
  1567. >
  1568. <img
  1569. src="../../../assets/icon/checkNo.png"
  1570. alt
  1571. v-if="itemTool.tool.indexOf(18) == -1"
  1572. />
  1573. <div class="checkDiv" v-else>
  1574. <img
  1575. src="../../../assets/icon/checkedIs.png"
  1576. alt
  1577. /><span>已选择</span>
  1578. </div>
  1579. </div>
  1580. </div>
  1581. <div class="tool">
  1582. <div
  1583. class="whiteBIcon"
  1584. @click="
  1585. addTools(21, itemTaskIndex, toolIndex)
  1586. "
  1587. >
  1588. <img
  1589. src="../../../assets/icon/fourthToolList/program.png"
  1590. alt
  1591. />
  1592. <div style="margin: 5px 0">编程平台</div>
  1593. </div>
  1594. <div
  1595. class="check"
  1596. @click="
  1597. addTools(21, itemTaskIndex, toolIndex)
  1598. "
  1599. >
  1600. <img
  1601. src="../../../assets/icon/checkNo.png"
  1602. alt
  1603. v-if="itemTool.tool.indexOf(21) == -1"
  1604. />
  1605. <div class="checkDiv" v-else>
  1606. <img
  1607. src="../../../assets/icon/checkedIs.png"
  1608. alt
  1609. /><span>已选择</span>
  1610. </div>
  1611. </div>
  1612. </div>
  1613. <div class="tool">
  1614. <div
  1615. class="whiteBIcon"
  1616. @click="
  1617. addTools(22, itemTaskIndex, toolIndex)
  1618. "
  1619. >
  1620. <img
  1621. src="../../../assets/icon/fourthToolList/AIprogram2.png"
  1622. alt
  1623. />
  1624. <div style="margin: 5px 0">AI体验</div>
  1625. </div>
  1626. <div
  1627. class="check"
  1628. @click="
  1629. addTools(22, itemTaskIndex, toolIndex)
  1630. "
  1631. >
  1632. <img
  1633. src="../../../assets/icon/checkNo.png"
  1634. alt
  1635. v-if="itemTool.tool.indexOf(22) == -1"
  1636. />
  1637. <div class="checkDiv" v-else>
  1638. <img
  1639. src="../../../assets/icon/checkedIs.png"
  1640. alt
  1641. /><span>已选择</span>
  1642. </div>
  1643. </div>
  1644. </div>
  1645. <div class="tool">
  1646. <div
  1647. class="whiteBIcon"
  1648. @click="
  1649. addTools(23, itemTaskIndex, toolIndex)
  1650. "
  1651. >
  1652. <img
  1653. src="../../../assets/icon/fourthToolList/Pythonprogram.png"
  1654. alt
  1655. />
  1656. <div style="margin: 5px 0">Python</div>
  1657. </div>
  1658. <div
  1659. class="check"
  1660. @click="
  1661. addTools(23, itemTaskIndex, toolIndex)
  1662. "
  1663. >
  1664. <img
  1665. src="../../../assets/icon/checkNo.png"
  1666. alt
  1667. v-if="itemTool.tool.indexOf(23) == -1"
  1668. />
  1669. <div class="checkDiv" v-else>
  1670. <img
  1671. src="../../../assets/icon/checkedIs.png"
  1672. alt
  1673. /><span>已选择</span>
  1674. </div>
  1675. </div>
  1676. </div>
  1677. <div class="tool">
  1678. <div
  1679. class="whiteBIcon"
  1680. @click="
  1681. addTools(24, itemTaskIndex, toolIndex)
  1682. "
  1683. >
  1684. <img
  1685. src="../../../assets/icon/fourthToolList/AIprogram.png"
  1686. alt
  1687. />
  1688. <div style="margin: 5px 0">AI平台</div>
  1689. </div>
  1690. <div
  1691. class="check"
  1692. @click="
  1693. addTools(24, itemTaskIndex, toolIndex)
  1694. "
  1695. >
  1696. <img
  1697. src="../../../assets/icon/checkNo.png"
  1698. alt
  1699. v-if="itemTool.tool.indexOf(24) == -1"
  1700. />
  1701. <div class="checkDiv" v-else>
  1702. <img
  1703. src="../../../assets/icon/checkedIs.png"
  1704. alt
  1705. /><span>已选择</span>
  1706. </div>
  1707. </div>
  1708. </div>
  1709. <!-- <div class="tool">
  1710. <div
  1711. class="whiteBIcon"
  1712. @click="
  1713. addTools(32, itemTaskIndex, toolIndex)
  1714. "
  1715. >
  1716. <img
  1717. src="../../../assets/icon/thirdToolList/code.png"
  1718. alt
  1719. />
  1720. <div style="margin: 5px 0">源码编辑</div>
  1721. </div>
  1722. <div
  1723. class="check"
  1724. @click="
  1725. addTools(32, itemTaskIndex, toolIndex)
  1726. "
  1727. >
  1728. <img
  1729. src="../../../assets/icon/checkNo.png"
  1730. alt
  1731. v-if="itemTool.tool.indexOf(32) == -1"
  1732. />
  1733. <div class="checkDiv" v-else>
  1734. <img
  1735. src="../../../assets/icon/checkedIs.png"
  1736. alt
  1737. /><span>已选择</span>
  1738. </div>
  1739. </div>
  1740. </div> -->
  1741. <div class="tool">
  1742. <div
  1743. class="whiteBIcon"
  1744. @click="openTools(itemTaskIndex, 57, toolIndex)"
  1745. >
  1746. <img
  1747. src="../../../assets/icon/fourthToolList/cocopi.png"
  1748. alt
  1749. />
  1750. <div style="margin: 5px 0">CocoPi</div>
  1751. </div>
  1752. <div
  1753. class="check"
  1754. @click="
  1755. addTools(57, itemTaskIndex, toolIndex)
  1756. "
  1757. >
  1758. <img
  1759. src="../../../assets/icon/checkNo.png"
  1760. alt
  1761. v-if="itemTool.tool.indexOf(57) == -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
  1773. class="whiteBIcon"
  1774. @click="
  1775. addTools(63, itemTaskIndex, toolIndex)
  1776. "
  1777. >
  1778. <img
  1779. src="../../../assets/icon/fourthToolList/Wood.png"
  1780. alt
  1781. />
  1782. <div style="margin: 5px 0">海龟编程</div>
  1783. </div>
  1784. <div
  1785. class="check"
  1786. @click="
  1787. addTools(63, itemTaskIndex, toolIndex)
  1788. "
  1789. >
  1790. <img
  1791. src="../../../assets/icon/checkNo.png"
  1792. alt
  1793. v-if="itemTool.tool.indexOf(63) == -1"
  1794. />
  1795. <div class="checkDiv" v-else>
  1796. <img
  1797. src="../../../assets/icon/checkedIs.png"
  1798. alt
  1799. /><span>已选择</span>
  1800. </div>
  1801. </div>
  1802. </div>
  1803. </div>
  1804. <div
  1805. class="toolSort"
  1806. v-if="itemTool.toolType == 5"
  1807. >
  1808. <div class="tool">
  1809. <div
  1810. class="whiteBIcon"
  1811. @click="
  1812. addTools(28, itemTaskIndex, toolIndex)
  1813. "
  1814. >
  1815. <img
  1816. src="../../../assets/icon/secondToolList/translation.png"
  1817. alt
  1818. />
  1819. <div style="margin: 5px 0">翻译</div>
  1820. </div>
  1821. <div
  1822. class="check"
  1823. @click="
  1824. addTools(28, itemTaskIndex, toolIndex)
  1825. "
  1826. >
  1827. <img
  1828. src="../../../assets/icon/checkNo.png"
  1829. alt
  1830. v-if="itemTool.tool.indexOf(28) == -1"
  1831. />
  1832. <div class="checkDiv" v-else>
  1833. <img
  1834. src="../../../assets/icon/checkedIs.png"
  1835. alt
  1836. /><span>已选择</span>
  1837. </div>
  1838. </div>
  1839. </div>
  1840. <div class="tool">
  1841. <div
  1842. class="whiteBIcon"
  1843. @click="
  1844. addTools(37, itemTaskIndex, toolIndex)
  1845. "
  1846. >
  1847. <img
  1848. src="../../../assets/icon/secondToolList/mohe.png"
  1849. alt
  1850. />
  1851. <div style="margin: 5px 0">魔盒识字</div>
  1852. </div>
  1853. <div
  1854. class="check"
  1855. @click="
  1856. addTools(37, itemTaskIndex, toolIndex)
  1857. "
  1858. >
  1859. <img
  1860. src="../../../assets/icon/checkNo.png"
  1861. alt
  1862. v-if="itemTool.tool.indexOf(37) == -1"
  1863. />
  1864. <div class="checkDiv" v-else>
  1865. <img
  1866. src="../../../assets/icon/checkedIs.png"
  1867. alt
  1868. /><span>已选择</span>
  1869. </div>
  1870. </div>
  1871. </div>
  1872. <div class="tool">
  1873. <div
  1874. class="whiteBIcon"
  1875. @click="
  1876. addTools(38, itemTaskIndex, toolIndex)
  1877. "
  1878. >
  1879. <img
  1880. src="../../../assets/icon/secondToolList/24game.png"
  1881. alt
  1882. />
  1883. <div style="margin: 5px 0">24点</div>
  1884. </div>
  1885. <div
  1886. class="check"
  1887. @click="
  1888. addTools(38, itemTaskIndex, toolIndex)
  1889. "
  1890. >
  1891. <img
  1892. src="../../../assets/icon/checkNo.png"
  1893. alt
  1894. v-if="itemTool.tool.indexOf(38) == -1"
  1895. />
  1896. <div class="checkDiv" v-else>
  1897. <img
  1898. src="../../../assets/icon/checkedIs.png"
  1899. alt
  1900. /><span>已选择</span>
  1901. </div>
  1902. </div>
  1903. </div>
  1904. <div class="tool">
  1905. <div
  1906. class="whiteBIcon"
  1907. @click="
  1908. addTools(31, itemTaskIndex, toolIndex)
  1909. "
  1910. >
  1911. <img
  1912. src="../../../assets/icon/secondToolList/networkPanel.png"
  1913. alt
  1914. />
  1915. <div style="margin: 5px 0">数学画板</div>
  1916. </div>
  1917. <div
  1918. class="check"
  1919. @click="
  1920. addTools(31, itemTaskIndex, toolIndex)
  1921. "
  1922. >
  1923. <img
  1924. src="../../../assets/icon/checkNo.png"
  1925. alt
  1926. v-if="itemTool.tool.indexOf(31) == -1"
  1927. />
  1928. <div class="checkDiv" v-else>
  1929. <img
  1930. src="../../../assets/icon/checkedIs.png"
  1931. alt
  1932. /><span>已选择</span>
  1933. </div>
  1934. </div>
  1935. </div>
  1936. <div class="tool">
  1937. <div
  1938. class="whiteBIcon"
  1939. @click="
  1940. addTools(39, itemTaskIndex, toolIndex)
  1941. "
  1942. >
  1943. <img
  1944. src="../../../assets/icon/secondToolList/GeoGebra.png"
  1945. alt
  1946. />
  1947. <div style="margin: 5px 0">GeoGebra</div>
  1948. </div>
  1949. <div
  1950. class="check"
  1951. @click="
  1952. addTools(39, itemTaskIndex, toolIndex)
  1953. "
  1954. >
  1955. <img
  1956. src="../../../assets/icon/checkNo.png"
  1957. alt
  1958. v-if="itemTool.tool.indexOf(39) == -1"
  1959. />
  1960. <div class="checkDiv" v-else>
  1961. <img
  1962. src="../../../assets/icon/checkedIs.png"
  1963. alt
  1964. /><span>已选择</span>
  1965. </div>
  1966. </div>
  1967. </div>
  1968. <div class="tool">
  1969. <div
  1970. class="whiteBIcon"
  1971. @click="
  1972. addTools(58, itemTaskIndex, toolIndex)
  1973. "
  1974. >
  1975. <img
  1976. src="../../../assets/icon/fourthToolList/car.png"
  1977. alt
  1978. />
  1979. <div style="margin: 5px 0">模拟驾驶</div>
  1980. </div>
  1981. <div
  1982. class="check"
  1983. @click="
  1984. addTools(58, itemTaskIndex, toolIndex)
  1985. "
  1986. >
  1987. <img
  1988. src="../../../assets/icon/checkNo.png"
  1989. alt
  1990. v-if="itemTool.tool.indexOf(58) == -1"
  1991. />
  1992. <div class="checkDiv" v-else>
  1993. <img
  1994. src="../../../assets/icon/checkedIs.png"
  1995. alt
  1996. /><span>已选择</span>
  1997. </div>
  1998. </div>
  1999. </div>
  2000. <div class="tool">
  2001. <div
  2002. class="whiteBIcon"
  2003. @click="
  2004. addTools(59, itemTaskIndex, toolIndex)
  2005. "
  2006. >
  2007. <img
  2008. src="../../../assets/icon/fourthToolList/lineSearch.png"
  2009. alt
  2010. />
  2011. <div style="margin: 5px 0">路径搜索</div>
  2012. </div>
  2013. <div
  2014. class="check"
  2015. @click="
  2016. addTools(59, itemTaskIndex, toolIndex)
  2017. "
  2018. >
  2019. <img
  2020. src="../../../assets/icon/checkNo.png"
  2021. alt
  2022. v-if="itemTool.tool.indexOf(59) == -1"
  2023. />
  2024. <div class="checkDiv" v-else>
  2025. <img
  2026. src="../../../assets/icon/checkedIs.png"
  2027. alt
  2028. /><span>已选择</span>
  2029. </div>
  2030. </div>
  2031. </div>
  2032. <div class="tool">
  2033. <div
  2034. class="whiteBIcon"
  2035. @click="
  2036. addTools(60, itemTaskIndex, toolIndex)
  2037. "
  2038. >
  2039. <img
  2040. src="../../../assets/icon/fourthToolList/deepLearning.png"
  2041. alt
  2042. />
  2043. <div style="margin: 5px 0">深度学习</div>
  2044. </div>
  2045. <div
  2046. class="check"
  2047. @click="
  2048. addTools(60, itemTaskIndex, toolIndex)
  2049. "
  2050. >
  2051. <img
  2052. src="../../../assets/icon/checkNo.png"
  2053. alt
  2054. v-if="itemTool.tool.indexOf(60) == -1"
  2055. />
  2056. <div class="checkDiv" v-else>
  2057. <img
  2058. src="../../../assets/icon/checkedIs.png"
  2059. alt
  2060. /><span>已选择</span>
  2061. </div>
  2062. </div>
  2063. </div>
  2064. <div class="tool">
  2065. <div
  2066. class="whiteBIcon"
  2067. @click="
  2068. addTools(61, itemTaskIndex, toolIndex)
  2069. "
  2070. >
  2071. <img
  2072. src="../../../assets/icon/fourthToolList/allHistory.png"
  2073. alt
  2074. />
  2075. <div style="margin: 5px 0">全历史</div>
  2076. </div>
  2077. <div
  2078. class="check"
  2079. @click="
  2080. addTools(61, itemTaskIndex, toolIndex)
  2081. "
  2082. >
  2083. <img
  2084. src="../../../assets/icon/checkNo.png"
  2085. alt
  2086. v-if="itemTool.tool.indexOf(61) == -1"
  2087. />
  2088. <div class="checkDiv" v-else>
  2089. <img
  2090. src="../../../assets/icon/checkedIs.png"
  2091. alt
  2092. /><span>已选择</span>
  2093. </div>
  2094. </div>
  2095. </div>
  2096. </div>
  2097. <div
  2098. class="toolSort"
  2099. v-if="itemTool.toolType == 7"
  2100. >
  2101. <div class="tool">
  2102. <div
  2103. class="whiteBIcon"
  2104. @click="
  2105. openTools(itemTaskIndex, 40, toolIndex)
  2106. "
  2107. >
  2108. <img
  2109. src="../../../assets/icon/thirdToolList/eval.png"
  2110. alt
  2111. />
  2112. <div style="margin: 5px 0">个人评价</div>
  2113. </div>
  2114. <div
  2115. class="check"
  2116. @click="
  2117. addTools(40, itemTaskIndex, toolIndex)
  2118. "
  2119. >
  2120. <img
  2121. src="../../../assets/icon/checkNo.png"
  2122. alt
  2123. v-if="itemTool.tool.indexOf(40) == -1"
  2124. />
  2125. <div class="checkDiv" v-else>
  2126. <img
  2127. src="../../../assets/icon/checkedIs.png"
  2128. alt
  2129. /><span>已选择</span>
  2130. </div>
  2131. </div>
  2132. </div>
  2133. </div>
  2134. <div
  2135. class="toolSort"
  2136. v-if="itemTool.toolType == 4"
  2137. >
  2138. <div class="tool">
  2139. <div
  2140. class="whiteBIcon"
  2141. @click="
  2142. addTools(26, itemTaskIndex, toolIndex)
  2143. "
  2144. >
  2145. <img
  2146. src="../../../assets/icon/thirdToolList/courseDesign.png"
  2147. alt
  2148. />
  2149. <div style="margin: 5px 0">课程设计</div>
  2150. </div>
  2151. <div
  2152. class="check"
  2153. @click="
  2154. addTools(26, itemTaskIndex, toolIndex)
  2155. "
  2156. >
  2157. <img
  2158. src="../../../assets/icon/checkNo.png"
  2159. alt
  2160. v-if="itemTool.tool.indexOf(26) == -1"
  2161. />
  2162. <div class="checkDiv" v-else>
  2163. <img
  2164. src="../../../assets/icon/checkedIs.png"
  2165. alt
  2166. /><span>已选择</span>
  2167. </div>
  2168. </div>
  2169. </div>
  2170. <div class="tool">
  2171. <div
  2172. class="whiteBIcon"
  2173. @click="
  2174. addTools(25, itemTaskIndex, toolIndex)
  2175. "
  2176. >
  2177. <img
  2178. src="../../../assets/icon/thirdToolList/evalua.png"
  2179. alt
  2180. />
  2181. <div style="margin: 5px 0">目标管理</div>
  2182. </div>
  2183. <div
  2184. class="check"
  2185. @click="
  2186. addTools(25, itemTaskIndex, toolIndex)
  2187. "
  2188. >
  2189. <img
  2190. src="../../../assets/icon/checkNo.png"
  2191. alt
  2192. v-if="itemTool.tool.indexOf(25) == -1"
  2193. />
  2194. <div class="checkDiv" v-else>
  2195. <img
  2196. src="../../../assets/icon/checkedIs.png"
  2197. alt
  2198. /><span>已选择</span>
  2199. </div>
  2200. </div>
  2201. </div>
  2202. <!-- <div class="tool">
  2203. <div class="whiteBIcon" @click="addTools(44, itemTaskIndex, toolIndex)">
  2204. <img src="../../../assets/icon/thirdToolList/hanClass.png" alt />
  2205. <div style="margin: 5px 0">汉字宫</div>
  2206. </div>
  2207. <div class="check" @click="addTools(44, itemTaskIndex, toolIndex)">
  2208. <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(44) == -1" />
  2209. <div class="checkDiv" v-else>
  2210. <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
  2211. </div>
  2212. </div>
  2213. </div> -->
  2214. </div>
  2215. </div>
  2216. </div>
  2217. <div
  2218. class="addToolFun"
  2219. @click="addToolFun(itemTaskIndex)"
  2220. >
  2221. <div class="addToolImg">
  2222. <img src="../../../assets/icon/add.png" alt />
  2223. </div>
  2224. <div>添加工具</div>
  2225. </div>
  2226. </div>
  2227. </div>
  2228. </div>
  2229. <div
  2230. class="addTaskBorder"
  2231. @click="addTaskBorder"
  2232. v-if="!unitJson[unitIndex].easy"
  2233. >
  2234. <div>
  2235. <img src="../../../assets/icon/addHw.png" alt />
  2236. <span>添加任务</span>
  2237. </div>
  2238. </div>
  2239. </div>
  2240. </div>
  2241. </div>
  2242. </div>
  2243. </div>
  2244. <div class="rightBox" v-if="this.steps == 2">
  2245. <div
  2246. class="basic_box"
  2247. style="padding: 20px 30px 0px !important; box-sizing: border-box"
  2248. >
  2249. <div
  2250. class="right_title"
  2251. style="border: none; margin: 0; padding: 0"
  2252. >
  2253. 请选择合适的课程模板
  2254. </div>
  2255. <div class="wordbox">
  2256. <div
  2257. class="wordTeacher"
  2258. v-for="(aa, indexF) in templateArray"
  2259. :key="indexF"
  2260. @click="checkTemplate(aa)"
  2261. >
  2262. <div class="wordPic">
  2263. <img src="../../../assets/icon/wordMub.png" alt />
  2264. </div>
  2265. <div
  2266. style="
  2267. margin-top: 10px;
  2268. line-height: 19px;
  2269. overflow: hidden;
  2270. text-overflow: ellipsis;
  2271. white-space: nowrap;
  2272. padding: 0 20px;
  2273. "
  2274. >
  2275. {{ aa.title }}
  2276. </div>
  2277. </div>
  2278. <div class="wordTeacher" @click="checkTemplate2()">
  2279. <div class="wordPic">
  2280. <img src="../../../assets/icon/wordMub.png" alt />
  2281. </div>
  2282. <div
  2283. style="
  2284. margin-top: 10px;
  2285. line-height: 19px;
  2286. overflow: hidden;
  2287. text-overflow: ellipsis;
  2288. white-space: nowrap;
  2289. padding: 0 20px;
  2290. "
  2291. >
  2292. 任务模式
  2293. </div>
  2294. </div>
  2295. <div class="wordTeacher" @click="checkTemplate3()">
  2296. <div class="wordPic">
  2297. <img src="../../../assets/icon/wordMub.png" alt />
  2298. </div>
  2299. <div
  2300. style="
  2301. margin-top: 10px;
  2302. line-height: 19px;
  2303. overflow: hidden;
  2304. text-overflow: ellipsis;
  2305. white-space: nowrap;
  2306. padding: 0 20px;
  2307. "
  2308. >
  2309. 简易模式
  2310. </div>
  2311. </div>
  2312. <div class="wordTeacher" @click="pasteStage()">
  2313. <div class="wordPic">
  2314. <img src="../../../assets/icon/wordMub.png" alt />
  2315. </div>
  2316. <div
  2317. style="
  2318. margin-top: 10px;
  2319. line-height: 19px;
  2320. overflow: hidden;
  2321. text-overflow: ellipsis;
  2322. white-space: nowrap;
  2323. padding: 0 20px;
  2324. "
  2325. >
  2326. 智能粘贴模式
  2327. </div>
  2328. </div>
  2329. <!-- <div class="wordTeacher" @click="checkTemplate4()">
  2330. <div class="wordPic">
  2331. <img src="../../../assets/icon/wordMub.png" alt />
  2332. </div>
  2333. <div style="
  2334. margin-top: 10px;
  2335. line-height: 19px;
  2336. overflow: hidden;
  2337. text-overflow: ellipsis;
  2338. white-space: nowrap;
  2339. padding: 0 20px;
  2340. ">
  2341. 未来小学课程设计
  2342. </div>
  2343. </div> -->
  2344. <!-- <div class="wordTeacher" @click="checkTemplate1()">
  2345. <div class="wordPic">
  2346. <img src="../../../assets/icon/wordMub.png" alt />
  2347. </div>
  2348. <div style="
  2349. margin-top: 10px;
  2350. line-height: 19px;
  2351. overflow: hidden;
  2352. text-overflow: ellipsis;
  2353. white-space: nowrap;
  2354. padding: 0 20px;
  2355. ">
  2356. 我的课程
  2357. </div>
  2358. </div> -->
  2359. </div>
  2360. </div>
  2361. </div>
  2362. <div class="rightBox" v-if="this.steps == 3" ref="rightboxR">
  2363. <div class="basic_box">
  2364. <div
  2365. style="
  2366. display: flex;
  2367. flex-direction: row;
  2368. align-items: center;
  2369. position: sticky;
  2370. top: 0;
  2371. background: #fff;
  2372. z-index: 99;
  2373. width: 100%;
  2374. padding: 0 20px 0 20px;
  2375. box-sizing: border-box;
  2376. "
  2377. >
  2378. <div class="cru_selectBox">
  2379. <div
  2380. v-for="(item, index) in unitJson"
  2381. :key="index"
  2382. class="cru_select"
  2383. :class="unitIndex == index ? 'cru_selected' : ''"
  2384. @click="unitSet(index)"
  2385. >
  2386. <!-- item.dyName ? item.dyName : -->
  2387. {{ "第" + (index + 1) + "阶段" }}
  2388. </div>
  2389. <img
  2390. src="../../../assets/line.png"
  2391. class="cru_line"
  2392. :style="{
  2393. left: offsetLetfPx + 'px',
  2394. }"
  2395. />
  2396. </div>
  2397. <div
  2398. class="addStageImg"
  2399. @click="addunit()"
  2400. v-if="
  2401. !(unitJson[unitJson.length - 1].easy == 4) &&
  2402. !(unitJson[unitJson.length - 1].easy == 6)
  2403. "
  2404. >
  2405. <img src="../../../assets/icon/add.png" alt />
  2406. </div>
  2407. </div>
  2408. <div
  2409. style="margin: 0 0 40px 0; padding: 0 20px 0 20px"
  2410. v-for="(item, index) in unitJson[unitIndex].chapterInfo"
  2411. :key="index"
  2412. >
  2413. <div>
  2414. <div class="chapter_contentbox">
  2415. <div>第{{ unitIndex + 1 }}阶段</div>
  2416. <div>
  2417. <input
  2418. type="text"
  2419. placeholder="阶段标题"
  2420. class="binfo_input"
  2421. v-model="unitJson[unitIndex].dyName"
  2422. />
  2423. </div>
  2424. <div
  2425. v-if="
  2426. unitJson.length > 1 &&
  2427. !(unitJson[unitJson.length - 1].easy == 4) &&
  2428. !(unitJson[unitJson.length - 1].easy == 6)
  2429. "
  2430. @click="deleteUnit(unitIndex)"
  2431. ></div>
  2432. </div>
  2433. </div>
  2434. <div
  2435. v-if="!unitJson[unitIndex].easy"
  2436. style="
  2437. margin: 50px 0px 10px;
  2438. font-size: 1.5em;
  2439. font-weight: 700;
  2440. color: #0f7eff;
  2441. "
  2442. >
  2443. 添加任务
  2444. </div>
  2445. <div
  2446. class="taskBorder"
  2447. :style="{ minHeight: unitJson[unitIndex].easy && 'unset' }"
  2448. v-for="(itemTask, itemTaskIndex) in item.taskJson"
  2449. :key="itemTaskIndex"
  2450. >
  2451. <div v-if="unitJson[unitIndex].easy != 1">
  2452. <div
  2453. :style="{
  2454. marginBottom:
  2455. unitJson[unitIndex].easy == 3 ||
  2456. (unitJson[unitIndex].easy == 5 &&
  2457. itemTask.taskType == 1)
  2458. ? '75px'
  2459. : '0',
  2460. }"
  2461. >
  2462. <div
  2463. style="font-size: 22px; color: #8e8e8e"
  2464. :id="'task' + itemTaskIndex"
  2465. >
  2466. 任务{{ itemTaskIndex + 1 }}
  2467. </div>
  2468. <div
  2469. class="chapter_contentbox"
  2470. style="
  2471. flex-direction: row;
  2472. justify-content: flex-start;
  2473. align-items: center;
  2474. "
  2475. >
  2476. <div
  2477. style="
  2478. border-left: 6px solid #5699e8;
  2479. height: 20px;
  2480. padding-left: 10px;
  2481. line-height: 22px;
  2482. "
  2483. >
  2484. 任务名称
  2485. </div>
  2486. <div>
  2487. <input
  2488. type="text"
  2489. placeholder="输入任务名称"
  2490. class="binfo_input"
  2491. style="border-radius: 4px"
  2492. v-model="
  2493. unitJson[unitIndex].chapterInfo[0].taskJson[
  2494. itemTaskIndex
  2495. ].task
  2496. "
  2497. />
  2498. </div>
  2499. <div
  2500. class="remove"
  2501. v-if="
  2502. item.taskJson.length > 1 &&
  2503. (!unitJson[unitIndex].easy ||
  2504. unitJson[unitIndex].easy == 6)
  2505. "
  2506. @click="deleteTask(itemTaskIndex)"
  2507. style="position: absolute; right: 55px"
  2508. ></div>
  2509. </div>
  2510. <div
  2511. v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1"
  2512. style="
  2513. display: flex;
  2514. margin: 0 0 20px 0;
  2515. flex-direction: row;
  2516. justify-content: flex-start;
  2517. align-items: center;
  2518. width: 70.5% !important;
  2519. padding-top: 30px;
  2520. "
  2521. >
  2522. <div class="lineTitle">任务描述</div>
  2523. <div class="line"></div>
  2524. </div>
  2525. <div
  2526. v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1"
  2527. >
  2528. <editor-bar
  2529. style="width: 90% !important; margin: 0"
  2530. placeholder="请输入任务描述"
  2531. v-model="
  2532. unitJson[unitIndex].chapterInfo[0].taskJson[
  2533. itemTaskIndex
  2534. ].taskDetail
  2535. "
  2536. @change="change"
  2537. ></editor-bar>
  2538. <!-- <textarea
  2539. rows="6"
  2540. class="binfo_input"
  2541. placeholder="请输入任务描述"
  2542. cols
  2543. style="width: 70.5% !important; height: 120px"
  2544. v-model="
  2545. unitJson[unitIndex].chapterInfo[0].taskJson[
  2546. itemTaskIndex
  2547. ].taskDetail
  2548. "
  2549. ></textarea>-->
  2550. </div>
  2551. </div>
  2552. </div>
  2553. <div
  2554. v-if="
  2555. !unitJson[unitIndex].easy ||
  2556. easyArray.indexOf(unitJson[unitIndex].easy) != -1
  2557. "
  2558. class="basic_box"
  2559. style="
  2560. margin: 0;
  2561. min-height: 0;
  2562. width: 90% !important;
  2563. padding-top: 10px !important;
  2564. "
  2565. >
  2566. <div
  2567. style="
  2568. display: flex;
  2569. margin: 0 0 20px 0;
  2570. flex-direction: row;
  2571. justify-content: flex-start;
  2572. align-items: center;
  2573. "
  2574. >
  2575. <div class="lineTitle">学习内容</div>
  2576. <div class="line"></div>
  2577. </div>
  2578. <div>
  2579. <div
  2580. class="add_chapters_box"
  2581. v-if="
  2582. itemTask.chapterData &&
  2583. itemTask.chapterData.length == 0
  2584. "
  2585. style="height: 185px"
  2586. ></div>
  2587. <div
  2588. v-else
  2589. class="add_chapters_box"
  2590. style="display: flex; flex-direction: column"
  2591. >
  2592. <div
  2593. class="chapter_upload"
  2594. v-for="(item1, index1) in itemTask.chapterData"
  2595. :key="item1.id"
  2596. @click="
  2597. getChapterData(
  2598. $event,
  2599. unitIndex,
  2600. index,
  2601. index1,
  2602. item1.type
  2603. )
  2604. "
  2605. >
  2606. <div
  2607. class="chapter_upload_t"
  2608. style="width: 100%"
  2609. ></div>
  2610. <div
  2611. class="chapter_upload_o"
  2612. style="
  2613. position: relative;
  2614. display: flex;
  2615. align-items: center;
  2616. "
  2617. >
  2618. <div
  2619. class="chapter_upload_l"
  2620. style="padding: 1px 0 0 10px"
  2621. >
  2622. <div
  2623. v-if="item1.type == 2"
  2624. class="chapter_upload_l_i1"
  2625. ></div>
  2626. <div
  2627. v-if="
  2628. item1.type == 3 ||
  2629. item1.type == 12 ||
  2630. item1.type == 13 ||
  2631. item1.type == 6 ||
  2632. item1.type == 7
  2633. "
  2634. class="chapter_upload_l_i5"
  2635. style="margin-left: 1px"
  2636. ></div>
  2637. <div
  2638. v-if="item1.type == 8"
  2639. class="chapter_upload_l_i8"
  2640. style="margin-left: 1px"
  2641. ></div>
  2642. </div>
  2643. <div
  2644. class="chapter_upload_ic"
  2645. style="
  2646. cursor: pointer;
  2647. position: absolute;
  2648. width: 45px;
  2649. right: 0;
  2650. top: 0;
  2651. "
  2652. >
  2653. <div class="chapter_upload_ic_l"></div>
  2654. <div
  2655. class="chapter_upload_ic_r"
  2656. style="position: absolute"
  2657. @click.stop="
  2658. deleteChapterData(
  2659. $event,
  2660. unitIndex,
  2661. index,
  2662. index1,
  2663. itemTaskIndex
  2664. )
  2665. "
  2666. >
  2667. <div></div>
  2668. </div>
  2669. </div>
  2670. <div class="chapter_upload_n">
  2671. <input
  2672. v-if="
  2673. item1.type == 2 ||
  2674. item1.type == 3 ||
  2675. item1.type == 12 ||
  2676. item1.type == 13 ||
  2677. item1.type == 7
  2678. "
  2679. :placeholder="item1.name"
  2680. @change="
  2681. updataVideoT(
  2682. $event,
  2683. unitIndex,
  2684. chapterIndex,
  2685. index1
  2686. )
  2687. "
  2688. style="
  2689. border: none;
  2690. outline: none;
  2691. width: 80%;
  2692. minwidth: 215px;
  2693. z-index: 99;
  2694. font-size: 14px;
  2695. white-space: nowrap;
  2696. overflow: hidden;
  2697. text-overflow: ellipsis;
  2698. "
  2699. />
  2700. <input
  2701. :placeholder="item1.name"
  2702. v-if="item1.type == 6"
  2703. style="
  2704. border: none;
  2705. outline: none;
  2706. width: 80%;
  2707. white-space: nowrap;
  2708. overflow: hidden;
  2709. text-overflow: ellipsis;
  2710. "
  2711. readonly="true"
  2712. @click="selectAttText(itemTaskIndex, index1)"
  2713. />
  2714. <input
  2715. :placeholder="
  2716. item1.title ? item1.title : '链接'
  2717. "
  2718. v-if="item1.type == 8"
  2719. style="
  2720. border: none;
  2721. outline: none;
  2722. width: 80%;
  2723. white-space: nowrap;
  2724. overflow: hidden;
  2725. text-overflow: ellipsis;
  2726. "
  2727. readonly="true"
  2728. @click="selectLine(itemTaskIndex, index1)"
  2729. />
  2730. <div
  2731. class="chapter_upload_ud"
  2732. style="z-index: 99"
  2733. >
  2734. <div
  2735. class="chapter_upload_up"
  2736. @click="
  2737. upCd(
  2738. $event,
  2739. unitIndex,
  2740. index,
  2741. itemTaskIndex,
  2742. index1
  2743. )
  2744. "
  2745. ></div>
  2746. <div
  2747. class="chapter_upload_down"
  2748. @click="
  2749. downCd(
  2750. $event,
  2751. unitIndex,
  2752. index,
  2753. itemTaskIndex,
  2754. index1
  2755. )
  2756. "
  2757. ></div>
  2758. </div>
  2759. </div>
  2760. </div>
  2761. </div>
  2762. </div>
  2763. </div>
  2764. <div class="add_info_box">
  2765. <button class="info_btn" @click="addImg($event)">
  2766. 添加文件
  2767. <input
  2768. type="file"
  2769. accept="*"
  2770. style="display: none"
  2771. v-if="inputShow"
  2772. @change="
  2773. beforeUpload2($event, unitIndex, 13, itemTaskIndex)
  2774. "
  2775. />
  2776. </button>
  2777. <!-- <button class="info_btn" @click="addImg($event)">
  2778. 添加视频
  2779. <input type="file" accept="video/mp4, video/quicktime, video/x-msvideo" style="display: none"
  2780. v-if="inputShow" @change="beforeUpload2($event, unitIndex, 2, itemTaskIndex)
  2781. " />
  2782. </button>
  2783. <button class="info_btn" @click="addImg($event)">
  2784. 添加文档
  2785. <input type="file"
  2786. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  2787. style="display: none" v-if="inputShow" @change="beforeUpload2($event, unitIndex, 3, itemTaskIndex)
  2788. " />
  2789. </button> -->
  2790. <button
  2791. class="info_btn"
  2792. @click="addAttText(itemTaskIndex)"
  2793. >
  2794. 添加图文
  2795. </button>
  2796. <button class="info_btn" @click="openLine(itemTaskIndex)">
  2797. 添加链接
  2798. </button>
  2799. <button
  2800. class="info_btn"
  2801. @click="openSource(itemTaskIndex)"
  2802. >
  2803. 添加资源
  2804. </button>
  2805. <button
  2806. class="info_btn"
  2807. @click="pasteLine(itemTaskIndex)"
  2808. >
  2809. 嵌入代码
  2810. </button>
  2811. <!-- <button class="info_btn" @click="addImg($event)">
  2812. 其他附件
  2813. <input type="file" accept="*" style="display: none" v-if="inputShow" @change="beforeUpload2($event, unitIndex, 12, itemTaskIndex)
  2814. " />
  2815. </button> -->
  2816. </div>
  2817. <div
  2818. v-if="
  2819. unitJson[unitIndex].chapterInfo[0].taskJson[
  2820. itemTaskIndex
  2821. ].proVisible
  2822. "
  2823. class="mask"
  2824. >
  2825. <div class="progressBox">
  2826. <!-- <div id="closePro" class="closeCss">
  2827. <img src="../../../../assets/icon/close.png" alt />
  2828. </div> -->
  2829. <div class="lbox">
  2830. <img
  2831. src="../../../assets/loading.gif"
  2832. />上传中,请稍后
  2833. </div>
  2834. <div style="margin-bottom: 10px">
  2835. <span
  2836. >{{
  2837. unitJson[unitIndex].chapterInfo[0].taskJson[
  2838. itemTaskIndex
  2839. ].isFinishSize
  2840. }}M</span
  2841. >
  2842. /
  2843. <span
  2844. >{{
  2845. unitJson[unitIndex].chapterInfo[0].taskJson[
  2846. itemTaskIndex
  2847. ].isAllSize
  2848. }}M</span
  2849. >
  2850. </div>
  2851. <el-progress
  2852. :text-inside="true"
  2853. :stroke-width="20"
  2854. :percentage="
  2855. unitJson[unitIndex].chapterInfo[0].taskJson[
  2856. itemTaskIndex
  2857. ].progress
  2858. ? unitJson[unitIndex].chapterInfo[0].taskJson[
  2859. itemTaskIndex
  2860. ].progress
  2861. : 0
  2862. "
  2863. style="width: 80%"
  2864. ></el-progress>
  2865. </div>
  2866. </div>
  2867. </div>
  2868. <div
  2869. v-if="
  2870. unitJson[unitIndex].easy == 1 ||
  2871. (unitJson[unitIndex].easy == 5 && itemTask.taskType == 2)
  2872. "
  2873. class="basic_box"
  2874. style="
  2875. margin: 0 auto;
  2876. min-height: 0;
  2877. width: 95% !important;
  2878. padding: 20px 10px 10px;
  2879. "
  2880. >
  2881. <div>
  2882. <div
  2883. class="add_chapters_box"
  2884. v-if="
  2885. itemTask.chapterData &&
  2886. itemTask.chapterData.length == 0
  2887. "
  2888. style="height: 185px"
  2889. ></div>
  2890. <div
  2891. v-else
  2892. class="add_chapters_box"
  2893. style="display: flex; flex-direction: column"
  2894. >
  2895. <div
  2896. v-for="(item1, index1) in itemTask.chapterData"
  2897. :key="item1.id"
  2898. >
  2899. <div
  2900. class="chapter_upload"
  2901. @click="
  2902. getChapterData(
  2903. $event,
  2904. unitIndex,
  2905. index,
  2906. index1,
  2907. item1.type
  2908. )
  2909. "
  2910. >
  2911. <div
  2912. class="chapter_upload_t"
  2913. style="width: 100%"
  2914. ></div>
  2915. <div
  2916. class="chapter_upload_o"
  2917. style="
  2918. position: relative;
  2919. display: flex;
  2920. align-items: center;
  2921. "
  2922. >
  2923. <div
  2924. class="chapter_upload_l"
  2925. style="padding: 1px 0 0 10px"
  2926. >
  2927. <div
  2928. v-if="item1.type == 2"
  2929. class="chapter_upload_l_i1"
  2930. ></div>
  2931. <div
  2932. v-if="
  2933. item1.type == 3 ||
  2934. item1.type == 6 ||
  2935. item1.type == 7
  2936. "
  2937. class="chapter_upload_l_i5"
  2938. style="margin-left: 1px"
  2939. ></div>
  2940. <div
  2941. v-if="item1.type == 8"
  2942. class="chapter_upload_l_i8"
  2943. style="margin-left: 1px"
  2944. ></div>
  2945. </div>
  2946. <div
  2947. class="chapter_upload_ic"
  2948. style="
  2949. cursor: pointer;
  2950. position: absolute;
  2951. width: 45px;
  2952. right: 0;
  2953. top: 0;
  2954. "
  2955. >
  2956. <div class="chapter_upload_ic_l"></div>
  2957. <div
  2958. class="chapter_upload_ic_r"
  2959. style="position: absolute"
  2960. @click.stop="
  2961. deleteChapterData(
  2962. $event,
  2963. unitIndex,
  2964. index,
  2965. index1,
  2966. itemTaskIndex
  2967. )
  2968. "
  2969. >
  2970. <div></div>
  2971. </div>
  2972. </div>
  2973. <div class="chapter_upload_n">
  2974. <span
  2975. style="
  2976. font-size: 14px;
  2977. color: rgb(109, 109, 109);
  2978. height: 14px;
  2979. line-height: 12px;
  2980. "
  2981. v-if="
  2982. item1.type == 2 ||
  2983. item1.type == 3 ||
  2984. item1.type == 7
  2985. "
  2986. >{{ item1.text }}-</span
  2987. >
  2988. <input
  2989. v-if="
  2990. item1.type == 2 ||
  2991. item1.type == 3 ||
  2992. item1.type == 7
  2993. "
  2994. :placeholder="item1.name"
  2995. @change="
  2996. updataVideoT(
  2997. $event,
  2998. unitIndex,
  2999. chapterIndex,
  3000. index1
  3001. )
  3002. "
  3003. style="
  3004. border: none;
  3005. outline: none;
  3006. width: 80%;
  3007. minwidth: 215px;
  3008. z-index: 99;
  3009. font-size: 14px;
  3010. white-space: nowrap;
  3011. overflow: hidden;
  3012. text-overflow: ellipsis;
  3013. "
  3014. />
  3015. <input
  3016. :placeholder="item1.name"
  3017. v-if="item1.type == 6"
  3018. style="
  3019. border: none;
  3020. outline: none;
  3021. width: 80%;
  3022. white-space: nowrap;
  3023. overflow: hidden;
  3024. text-overflow: ellipsis;
  3025. "
  3026. readonly="true"
  3027. @click="selectAttText(itemTaskIndex, index1)"
  3028. />
  3029. <input
  3030. :placeholder="
  3031. item1.title ? item1.title : '链接'
  3032. "
  3033. v-if="item1.type == 8"
  3034. style="
  3035. border: none;
  3036. outline: none;
  3037. width: 80%;
  3038. white-space: nowrap;
  3039. overflow: hidden;
  3040. text-overflow: ellipsis;
  3041. "
  3042. readonly="true"
  3043. @click="selectLine(itemTaskIndex, index1)"
  3044. />
  3045. <div
  3046. class="chapter_upload_ud"
  3047. style="z-index: 99"
  3048. >
  3049. <div
  3050. class="chapter_upload_up"
  3051. @click="
  3052. upCd(
  3053. $event,
  3054. unitIndex,
  3055. index,
  3056. itemTaskIndex,
  3057. index1
  3058. )
  3059. "
  3060. ></div>
  3061. <div
  3062. class="chapter_upload_down"
  3063. @click="
  3064. downCd(
  3065. $event,
  3066. unitIndex,
  3067. index,
  3068. itemTaskIndex,
  3069. index1
  3070. )
  3071. "
  3072. ></div>
  3073. </div>
  3074. </div>
  3075. </div>
  3076. </div>
  3077. </div>
  3078. </div>
  3079. </div>
  3080. <div class="add_info_box" style="margin: 10px 0 0">
  3081. <button class="info_btn" @click="addImg($event)">
  3082. <span style="color: red">*</span>
  3083. 教学设计
  3084. <input
  3085. type="file"
  3086. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  3087. style="display: none"
  3088. v-if="inputShow"
  3089. @change="
  3090. beforeUpload3(
  3091. $event,
  3092. unitIndex,
  3093. 3,
  3094. itemTaskIndex,
  3095. '教学设计'
  3096. )
  3097. "
  3098. />
  3099. </button>
  3100. <button class="info_btn" @click="addImg($event)">
  3101. <span style="color: red">*</span>
  3102. 教学课件
  3103. <input
  3104. type="file"
  3105. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  3106. style="display: none"
  3107. v-if="inputShow"
  3108. @change="
  3109. beforeUpload3(
  3110. $event,
  3111. unitIndex,
  3112. 3,
  3113. itemTaskIndex,
  3114. '教学课件'
  3115. )
  3116. "
  3117. />
  3118. </button>
  3119. <button class="info_btn" @click="addImg($event)">
  3120. 教学视频
  3121. <input
  3122. type="file"
  3123. accept="video/mp4, video/quicktime, video/x-msvideo"
  3124. style="display: none"
  3125. v-if="inputShow"
  3126. @change="
  3127. beforeUpload3(
  3128. $event,
  3129. unitIndex,
  3130. 2,
  3131. itemTaskIndex,
  3132. '教学视频'
  3133. )
  3134. "
  3135. />
  3136. </button>
  3137. <button class="info_btn" @click="addImg($event)">
  3138. 教学音频
  3139. <input
  3140. type="file"
  3141. accept="audio/*"
  3142. style="display: none"
  3143. v-if="inputShow"
  3144. @change="
  3145. beforeUpload3(
  3146. $event,
  3147. unitIndex,
  3148. 2,
  3149. itemTaskIndex,
  3150. '教学音频'
  3151. )
  3152. "
  3153. />
  3154. </button>
  3155. <button class="info_btn" @click="addImg($event)">
  3156. 学习单
  3157. <input
  3158. type="file"
  3159. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  3160. style="display: none"
  3161. v-if="inputShow"
  3162. @change="
  3163. beforeUpload3(
  3164. $event,
  3165. unitIndex,
  3166. 3,
  3167. itemTaskIndex,
  3168. '学习单'
  3169. )
  3170. "
  3171. />
  3172. </button>
  3173. </div>
  3174. <div
  3175. v-if="
  3176. unitJson[unitIndex].chapterInfo[0].taskJson[
  3177. itemTaskIndex
  3178. ].proVisible
  3179. "
  3180. class="mask"
  3181. >
  3182. <div class="progressBox">
  3183. <!-- <div id="closePro" class="closeCss">
  3184. <img src="../../../../assets/icon/close.png" alt />
  3185. </div> -->
  3186. <div class="lbox">
  3187. <img
  3188. src="../../../assets/loading.gif"
  3189. />上传中,请稍后
  3190. </div>
  3191. <div style="margin-bottom: 10px">
  3192. <span
  3193. >{{
  3194. unitJson[unitIndex].chapterInfo[0].taskJson[
  3195. itemTaskIndex
  3196. ].isFinishSize
  3197. }}M</span
  3198. >
  3199. /
  3200. <span
  3201. >{{
  3202. unitJson[unitIndex].chapterInfo[0].taskJson[
  3203. itemTaskIndex
  3204. ].isAllSize
  3205. }}M</span
  3206. >
  3207. </div>
  3208. <el-progress
  3209. :text-inside="true"
  3210. :stroke-width="20"
  3211. :percentage="
  3212. unitJson[unitIndex].chapterInfo[0].taskJson[
  3213. itemTaskIndex
  3214. ].progress
  3215. ? unitJson[unitIndex].chapterInfo[0].taskJson[
  3216. itemTaskIndex
  3217. ].progress
  3218. : 0
  3219. "
  3220. style="width: 80%"
  3221. ></el-progress>
  3222. </div>
  3223. </div>
  3224. </div>
  3225. <div
  3226. v-if="
  3227. unitJson[unitIndex].easy != 3 &&
  3228. !(unitJson[unitIndex].easy == 5 && itemTask.taskType == 1)
  3229. "
  3230. style="
  3231. flex-direction: row;
  3232. justify-content: flex-start;
  3233. align-items: center;
  3234. padding: 0 0 0 30px;
  3235. paddint-top: 10px !important;
  3236. "
  3237. >
  3238. <div
  3239. style="
  3240. display: flex;
  3241. flex-direction: row;
  3242. align-items: center;
  3243. margin-bottom: 20px;
  3244. "
  3245. >
  3246. <div class="lineTitle">
  3247. {{
  3248. !unitJson[unitIndex].easy ||
  3249. unitJson[unitIndex].easy == 6 ||
  3250. easyArray.indexOf(unitJson[unitIndex].easy) != -1
  3251. ? "练习内容"
  3252. : "评价内容"
  3253. }}
  3254. </div>
  3255. <div class="line" style="width: 90%"></div>
  3256. </div>
  3257. </div>
  3258. <div
  3259. v-if="
  3260. unitJson[unitIndex].easy == 6 || !unitJson[unitIndex].easy
  3261. "
  3262. class="toolChoose"
  3263. style="padding: 0 0 0 30px"
  3264. >
  3265. <div class="tools">
  3266. <div
  3267. class="leftTools"
  3268. style="
  3269. width: 95%;
  3270. padding: 0 0 15px 0;
  3271. border-bottom: 1px solid #efefef;
  3272. margin-bottom: 15px;
  3273. "
  3274. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  3275. :key="toolIndex"
  3276. >
  3277. <div>
  3278. <textarea
  3279. rows="3"
  3280. type="text"
  3281. placeholder="添加工具描述"
  3282. class="binfo_input"
  3283. style="margin: 0 0 20px 0; width: 71.5% !important"
  3284. v-model="itemTool.toolDetail"
  3285. ></textarea>
  3286. </div>
  3287. <div
  3288. style="
  3289. display: flex;
  3290. flex-direction: row;
  3291. align-items: baseline;
  3292. flex-wrap: nowrap;
  3293. justify-content: flex-start;
  3294. position: relative;
  3295. "
  3296. >
  3297. <div style="margin-right: 20px; font-weight: bold">
  3298. 步骤 {{ toolIndex + 1 }} :
  3299. </div>
  3300. <div class="chooseWho">
  3301. <!-- <div
  3302. :class="
  3303. itemTool.toolType == 0 ? 'isChooseActive' : ''
  3304. "
  3305. @click="(itemTool.toolType = 0), $forceUpdate()"
  3306. >
  3307. 互动类
  3308. </div> -->
  3309. <div
  3310. :class="
  3311. itemTool.toolType == 1 ? 'isChooseActive' : ''
  3312. "
  3313. @click="(itemTool.toolType = 1), $forceUpdate()"
  3314. >
  3315. 思维类
  3316. </div>
  3317. <div
  3318. :class="
  3319. itemTool.toolType == 6 ? 'isChooseActive' : ''
  3320. "
  3321. @click="(itemTool.toolType = 6), $forceUpdate()"
  3322. >
  3323. 协作类
  3324. </div>
  3325. <div
  3326. :class="
  3327. itemTool.toolType == 2 ? 'isChooseActive' : ''
  3328. "
  3329. @click="(itemTool.toolType = 2), $forceUpdate()"
  3330. >
  3331. 测评类
  3332. </div>
  3333. <div
  3334. :class="
  3335. itemTool.toolType == 7 ? 'isChooseActive' : ''
  3336. "
  3337. @click="(itemTool.toolType = 7), $forceUpdate()"
  3338. >
  3339. 评价类
  3340. </div>
  3341. <div
  3342. :class="
  3343. itemTool.toolType == 3 ? 'isChooseActive' : ''
  3344. "
  3345. @click="(itemTool.toolType = 3), $forceUpdate()"
  3346. >
  3347. 学科类
  3348. </div>
  3349. <!-- <div
  3350. :class="
  3351. itemTool.toolType == 5 ? 'isChooseActive' : ''
  3352. "
  3353. @click="(itemTool.toolType = 5), $forceUpdate()"
  3354. >
  3355. 学科类
  3356. </div>
  3357. <div
  3358. :class="
  3359. itemTool.toolType == 4 ? 'isChooseActive' : ''
  3360. "
  3361. @click="(itemTool.toolType = 4), $forceUpdate()"
  3362. >
  3363. 其他
  3364. </div> -->
  3365. </div>
  3366. <div
  3367. class="remove"
  3368. @click="deleteTool(itemTaskIndex, toolIndex)"
  3369. v-if="itemTask.toolChoose.length > 1"
  3370. style="position: absolute; right: 55px"
  3371. ></div>
  3372. </div>
  3373. <div style="min-height: 163px">
  3374. <div class="toolSort" v-if="itemTool.toolType == 0">
  3375. <!-- <div class="tool">
  3376. <div
  3377. class="whiteBIcon"
  3378. @click="addTools(8, itemTaskIndex, toolIndex)"
  3379. >
  3380. <img src="../../../assets/icon/secondToolList/library.png" alt />
  3381. <div style="margin: 5px 0">素材库</div>
  3382. </div>
  3383. <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
  3384. <img
  3385. src="../../../assets/icon/checkNo.png"
  3386. alt
  3387. v-if="itemTool.tool.indexOf(8) == -1"
  3388. />
  3389. <div class="checkDiv" v-else><img src="../../../assets/icon/checkedIs.png"
  3390. alt /><span>已选择</span></div>
  3391. </div>
  3392. </div>-->
  3393. <!-- <div class="tool">
  3394. <div
  3395. class="whiteBIcon"
  3396. @click="addTools(17, itemTaskIndex, toolIndex)"
  3397. >
  3398. <img
  3399. src="../../../assets/icon/secondToolList/library.png"
  3400. alt
  3401. />
  3402. <div style="margin: 5px 0">学习资料</div>
  3403. </div>
  3404. <div
  3405. class="check"
  3406. @click="addTools(17, itemTaskIndex, toolIndex)"
  3407. >
  3408. <img
  3409. src="../../../assets/icon/checkNo.png"
  3410. alt
  3411. v-if="itemTool.tool.indexOf(17) == -1"
  3412. />
  3413. <img
  3414. src="../../../assets/icon/checkedIs.png"
  3415. alt
  3416. v-else
  3417. />
  3418. </div>10
  3419. </div> -->
  3420. <div class="tool">
  3421. <div
  3422. class="whiteBIcon"
  3423. @click="openTools(itemTaskIndex, 10, toolIndex)"
  3424. >
  3425. <img
  3426. src="../../../assets/icon/thirdToolList/time.png"
  3427. alt
  3428. />
  3429. <div style="margin: 5px 0">倒计时</div>
  3430. </div>
  3431. <div
  3432. class="check"
  3433. @click="addTools(10, itemTaskIndex, toolIndex)"
  3434. >
  3435. <img
  3436. src="../../../assets/icon/checkNo.png"
  3437. alt
  3438. v-if="itemTool.tool.indexOf(10) == -1"
  3439. />
  3440. <div class="checkDiv" v-else>
  3441. <img
  3442. src="../../../assets/icon/checkedIs.png"
  3443. alt
  3444. /><span>已选择</span>
  3445. </div>
  3446. </div>
  3447. </div>
  3448. <!-- <div class="tool">
  3449. <div
  3450. class="whiteBIcon"
  3451. @click="openTools(itemTaskIndex, 49, toolIndex)"
  3452. >
  3453. <img
  3454. src="../../../assets/icon/fourthToolList/group.png"
  3455. alt
  3456. />
  3457. <div style="margin: 5px 0">学生分组</div>
  3458. </div>
  3459. <div
  3460. class="check"
  3461. @click="addTools(49, itemTaskIndex, toolIndex)"
  3462. >
  3463. <img
  3464. src="../../../assets/icon/checkNo.png"
  3465. alt
  3466. v-if="itemTool.tool.indexOf(49) == -1"
  3467. />
  3468. <div class="checkDiv" v-else>
  3469. <img
  3470. src="../../../assets/icon/checkedIs.png"
  3471. alt
  3472. /><span>已选择</span>
  3473. </div>
  3474. </div>
  3475. </div> -->
  3476. <div class="tool">
  3477. <div
  3478. class="whiteBIcon"
  3479. @click="openTools(itemTaskIndex, 62, toolIndex)"
  3480. >
  3481. <img
  3482. src="../../../assets/icon/fourthToolList/interVideo.png"
  3483. alt
  3484. />
  3485. <div style="margin: 5px 0">交互视频</div>
  3486. </div>
  3487. <div
  3488. class="check"
  3489. @click="addTools(62, itemTaskIndex, toolIndex)"
  3490. >
  3491. <img
  3492. src="../../../assets/icon/checkNo.png"
  3493. alt
  3494. v-if="itemTool.tool.indexOf(62) == -1"
  3495. />
  3496. <div class="checkDiv" v-else>
  3497. <img
  3498. src="../../../assets/icon/checkedIs.png"
  3499. alt
  3500. /><span>已选择</span>
  3501. </div>
  3502. </div>
  3503. </div>
  3504. </div>
  3505. <div class="toolSort" v-if="itemTool.toolType == 1">
  3506. <div class="tool">
  3507. <div
  3508. class="whiteBIcon"
  3509. @click="addTools(7, itemTaskIndex, toolIndex)"
  3510. >
  3511. <img
  3512. src="../../../assets/icon/secondToolList/mindNetwork.png"
  3513. alt
  3514. />
  3515. <div style="margin: 5px 0">思维网格</div>
  3516. </div>
  3517. <div
  3518. class="check"
  3519. @click="addTools(7, itemTaskIndex, toolIndex)"
  3520. >
  3521. <img
  3522. src="../../../assets/icon/checkNo.png"
  3523. alt
  3524. v-if="itemTool.tool.indexOf(7) == -1"
  3525. />
  3526. <div class="checkDiv" v-else>
  3527. <img
  3528. src="../../../assets/icon/checkedIs.png"
  3529. alt
  3530. /><span>已选择</span>
  3531. </div>
  3532. </div>
  3533. </div>
  3534. <div class="tool">
  3535. <div
  3536. class="whiteBIcon"
  3537. @click="openTools(itemTaskIndex, 1, toolIndex)"
  3538. >
  3539. <img
  3540. src="../../../assets/icon/secondToolList/whiteBoard.png"
  3541. alt
  3542. />
  3543. <div style="margin: 5px 0">电子白板</div>
  3544. </div>
  3545. <div
  3546. class="check"
  3547. @click="addTools(1, itemTaskIndex, toolIndex)"
  3548. >
  3549. <img
  3550. src="../../../assets/icon/checkNo.png"
  3551. alt
  3552. v-if="itemTool.tool.indexOf(1) == -1"
  3553. />
  3554. <div class="checkDiv" v-else>
  3555. <img
  3556. src="../../../assets/icon/checkedIs.png"
  3557. alt
  3558. /><span>已选择</span>
  3559. </div>
  3560. </div>
  3561. </div>
  3562. <!-- <div class="tool">
  3563. <div
  3564. class="whiteBIcon"
  3565. @click="addTools(2, itemTaskIndex, toolIndex)"
  3566. >
  3567. <img
  3568. src="../../../assets/icon/secondToolList/note.png"
  3569. alt
  3570. />
  3571. <div style="margin: 5px 0">便签</div>
  3572. </div>
  3573. <div
  3574. class="check"
  3575. @click="addTools(2, itemTaskIndex, toolIndex)"
  3576. >
  3577. <img
  3578. src="../../../assets/icon/checkNo.png"
  3579. alt
  3580. v-if="itemTool.tool.indexOf(2) == -1"
  3581. />
  3582. <div class="checkDiv" v-else>
  3583. <img
  3584. src="../../../assets/icon/checkedIs.png"
  3585. alt
  3586. /><span>已选择</span>
  3587. </div>
  3588. </div>
  3589. </div> -->
  3590. <!-- <div class="tool">
  3591. <div class="whiteBIcon" @click="addTools(6, itemTaskIndex, toolIndex)">
  3592. <img src="../../../assets/icon/secondToolList/doc.png" alt />
  3593. <div style="margin: 5px 0">协同文档</div>
  3594. </div>
  3595. <div
  3596. class="check"
  3597. @click="addTools(6, itemTaskIndex, toolIndex)"
  3598. >
  3599. <img
  3600. src="../../../assets/icon/checkNo.png"
  3601. alt
  3602. v-if="itemTool.tool.indexOf(6) == -1"
  3603. />
  3604. <div class="checkDiv" v-else>
  3605. <img
  3606. src="../../../assets/icon/checkedIs.png"
  3607. alt
  3608. /><span>已选择</span>
  3609. </div>
  3610. </div>
  3611. </div> -->
  3612. <div class="tool">
  3613. <div
  3614. class="whiteBIcon"
  3615. @click="openTools(itemTaskIndex, 52, toolIndex)"
  3616. >
  3617. <img
  3618. src="../../../assets/icon/fourthToolList/text.png"
  3619. alt
  3620. />
  3621. <div style="margin: 5px 0">文档</div>
  3622. </div>
  3623. <div
  3624. class="check"
  3625. @click="addTools(52, itemTaskIndex, toolIndex)"
  3626. >
  3627. <img
  3628. src="../../../assets/icon/checkNo.png"
  3629. alt
  3630. v-if="itemTool.tool.indexOf(52) == -1"
  3631. />
  3632. <div class="checkDiv" v-else>
  3633. <img
  3634. src="../../../assets/icon/checkedIs.png"
  3635. alt
  3636. /><span>已选择</span>
  3637. </div>
  3638. </div>
  3639. </div>
  3640. <div class="tool">
  3641. <div
  3642. class="whiteBIcon"
  3643. @click="openTools(itemTaskIndex, 3, toolIndex)"
  3644. >
  3645. <img
  3646. src="../../../assets/icon/secondToolList/mindMapping.png"
  3647. alt
  3648. />
  3649. <div style="margin: 5px 0">思维导图</div>
  3650. </div>
  3651. <div
  3652. class="check"
  3653. @click="addTools(3, itemTaskIndex, toolIndex)"
  3654. >
  3655. <img
  3656. src="../../../assets/icon/checkNo.png"
  3657. alt
  3658. v-if="itemTool.tool.indexOf(3) == -1"
  3659. />
  3660. <div class="checkDiv" v-else>
  3661. <img
  3662. src="../../../assets/icon/checkedIs.png"
  3663. alt
  3664. /><span>已选择</span>
  3665. </div>
  3666. </div>
  3667. </div>
  3668. <div class="tool">
  3669. <div
  3670. class="whiteBIcon"
  3671. @click="openTools(itemTaskIndex, 48, toolIndex)"
  3672. >
  3673. <img
  3674. src="../../../assets/icon/fourthToolList/table.png"
  3675. alt
  3676. />
  3677. <div style="margin: 5px 0">表格</div>
  3678. </div>
  3679. <div
  3680. class="check"
  3681. @click="addTools(48, itemTaskIndex, toolIndex)"
  3682. >
  3683. <img
  3684. src="../../../assets/icon/checkNo.png"
  3685. alt
  3686. v-if="itemTool.tool.indexOf(48) == -1"
  3687. />
  3688. <div class="checkDiv" v-else>
  3689. <img
  3690. src="../../../assets/icon/checkedIs.png"
  3691. alt
  3692. /><span>已选择</span>
  3693. </div>
  3694. </div>
  3695. </div>
  3696. </div>
  3697. <div class="toolSort" v-if="itemTool.toolType == 6">
  3698. <div class="tool">
  3699. <div
  3700. class="whiteBIcon"
  3701. @click="openTools(itemTaskIndex, 49, toolIndex)"
  3702. >
  3703. <img
  3704. src="../../../assets/icon/fourthToolList/group.png"
  3705. alt
  3706. />
  3707. <div style="margin: 5px 0">学生分组</div>
  3708. </div>
  3709. <div
  3710. class="check"
  3711. @click="addTools(49, itemTaskIndex, toolIndex)"
  3712. >
  3713. <img
  3714. src="../../../assets/icon/checkNo.png"
  3715. alt
  3716. v-if="itemTool.tool.indexOf(49) == -1"
  3717. />
  3718. <div class="checkDiv" v-else>
  3719. <img
  3720. src="../../../assets/icon/checkedIs.png"
  3721. alt
  3722. /><span>已选择</span>
  3723. </div>
  3724. </div>
  3725. </div>
  3726. </div>
  3727. <div class="toolSort" v-if="itemTool.toolType == 2">
  3728. <!-- <div class="tool">
  3729. <div
  3730. class="whiteBIcon"
  3731. @click="addTools(5, itemTaskIndex, toolIndex)"
  3732. >
  3733. <img
  3734. src="../../../assets/icon/thirdToolList/score.png"
  3735. alt
  3736. />
  3737. <div style="margin: 5px 0">量规评分</div>
  3738. </div>
  3739. <div
  3740. class="check"
  3741. @click="addTools(5, itemTaskIndex, toolIndex)"
  3742. >
  3743. <img
  3744. src="../../../assets/icon/checkNo.png"
  3745. alt
  3746. v-if="itemTool.tool.indexOf(5) == -1"
  3747. />
  3748. <img
  3749. src="../../../assets/icon/checkedIs.png"
  3750. alt
  3751. v-else
  3752. />
  3753. </div>
  3754. </div>-->
  3755. <div class="tool">
  3756. <div
  3757. class="whiteBIcon"
  3758. @click="openTools(itemTaskIndex, 4, toolIndex)"
  3759. >
  3760. <img
  3761. src="../../../assets/icon/thirdToolList/ask.png"
  3762. alt
  3763. />
  3764. <div style="margin: 5px 0">问卷调查</div>
  3765. </div>
  3766. <div
  3767. class="check"
  3768. @click="addTools(4, itemTaskIndex, toolIndex)"
  3769. >
  3770. <img
  3771. src="../../../assets/icon/checkNo.png"
  3772. alt
  3773. v-if="itemTool.tool.indexOf(4) == -1"
  3774. />
  3775. <div class="checkDiv" v-else>
  3776. <img
  3777. src="../../../assets/icon/checkedIs.png"
  3778. alt
  3779. /><span>已选择</span>
  3780. </div>
  3781. </div>
  3782. </div>
  3783. <div class="tool">
  3784. <div
  3785. class="whiteBIcon"
  3786. @click="openTools(itemTaskIndex, 45, toolIndex)"
  3787. >
  3788. <img
  3789. src="../../../assets/icon/thirdToolList/choose.png"
  3790. alt
  3791. />
  3792. <div style="margin: 5px 0">选择题</div>
  3793. </div>
  3794. <div
  3795. class="check"
  3796. @click="addTools(45, itemTaskIndex, toolIndex)"
  3797. >
  3798. <img
  3799. src="../../../assets/icon/checkNo.png"
  3800. alt
  3801. v-if="itemTool.tool.indexOf(45) == -1"
  3802. />
  3803. <div class="checkDiv" v-else>
  3804. <img
  3805. src="../../../assets/icon/checkedIs.png"
  3806. alt
  3807. /><span>已选择</span>
  3808. </div>
  3809. </div>
  3810. </div>
  3811. <div class="tool">
  3812. <div
  3813. class="whiteBIcon"
  3814. @click="openTools(itemTaskIndex, 15, toolIndex)"
  3815. >
  3816. <img
  3817. src="../../../assets/icon/thirdToolList/answer.png"
  3818. alt
  3819. />
  3820. <div style="margin: 5px 0">问答工具</div>
  3821. </div>
  3822. <div
  3823. class="check"
  3824. @click="addTools(15, itemTaskIndex, toolIndex)"
  3825. >
  3826. <img
  3827. src="../../../assets/icon/checkNo.png"
  3828. alt
  3829. v-if="itemTool.tool.indexOf(15) == -1"
  3830. />
  3831. <div class="checkDiv" v-else>
  3832. <img
  3833. src="../../../assets/icon/checkedIs.png"
  3834. alt
  3835. /><span>已选择</span>
  3836. </div>
  3837. </div>
  3838. </div>
  3839. <div class="tool">
  3840. <div
  3841. class="whiteBIcon"
  3842. @click="addTools(16, itemTaskIndex, toolIndex)"
  3843. >
  3844. <img
  3845. src="../../../assets/icon/thirdToolList/work.png"
  3846. alt
  3847. />
  3848. <div style="margin: 5px 0">作业提交</div>
  3849. </div>
  3850. <div
  3851. class="check"
  3852. @click="addTools(16, itemTaskIndex, toolIndex)"
  3853. >
  3854. <img
  3855. src="../../../assets/icon/checkNo.png"
  3856. alt
  3857. v-if="itemTool.tool.indexOf(16) == -1"
  3858. />
  3859. <div class="checkDiv" v-else>
  3860. <img
  3861. src="../../../assets/icon/checkedIs.png"
  3862. alt
  3863. /><span>已选择</span>
  3864. </div>
  3865. </div>
  3866. </div>
  3867. <div class="tool">
  3868. <div
  3869. class="whiteBIcon"
  3870. @click="addTools(50, itemTaskIndex, toolIndex)"
  3871. >
  3872. <img
  3873. src="../../../assets/icon/thirdToolList/plwork.png"
  3874. alt
  3875. />
  3876. <div style="margin: 5px 0">批量上传</div>
  3877. </div>
  3878. <div
  3879. class="check"
  3880. @click="addTools(50, itemTaskIndex, toolIndex)"
  3881. >
  3882. <img
  3883. src="../../../assets/icon/checkNo.png"
  3884. alt
  3885. v-if="itemTool.tool.indexOf(50) == -1"
  3886. />
  3887. <div class="checkDiv" v-else>
  3888. <img
  3889. src="../../../assets/icon/checkedIs.png"
  3890. alt
  3891. /><span>已选择</span>
  3892. </div>
  3893. </div>
  3894. </div>
  3895. <!-- <div class="tool">
  3896. <div
  3897. class="whiteBIcon"
  3898. @click="openTools(itemTaskIndex, 40, toolIndex)"
  3899. >
  3900. <img
  3901. src="../../../assets/icon/thirdToolList/eval.png"
  3902. alt
  3903. />
  3904. <div style="margin: 5px 0">个人评价</div>
  3905. </div>
  3906. <div
  3907. class="check"
  3908. @click="addTools(40, itemTaskIndex, toolIndex)"
  3909. >
  3910. <img
  3911. src="../../../assets/icon/checkNo.png"
  3912. alt
  3913. v-if="itemTool.tool.indexOf(40) == -1"
  3914. />
  3915. <div class="checkDiv" v-else>
  3916. <img
  3917. src="../../../assets/icon/checkedIs.png"
  3918. alt
  3919. /><span>已选择</span>
  3920. </div>
  3921. </div>
  3922. </div> -->
  3923. <div class="tool">
  3924. <div
  3925. class="whiteBIcon"
  3926. @click="openTools(itemTaskIndex, 41, toolIndex)"
  3927. >
  3928. <img
  3929. src="../../../assets/icon/thirdToolList/select.png"
  3930. alt
  3931. />
  3932. <div style="margin: 5px 0">选择填空</div>
  3933. </div>
  3934. <div
  3935. class="check"
  3936. @click="addTools(41, itemTaskIndex, toolIndex)"
  3937. >
  3938. <img
  3939. src="../../../assets/icon/checkNo.png"
  3940. alt
  3941. v-if="itemTool.tool.indexOf(41) == -1"
  3942. />
  3943. <div class="checkDiv" v-else>
  3944. <img
  3945. src="../../../assets/icon/checkedIs.png"
  3946. alt
  3947. /><span>已选择</span>
  3948. </div>
  3949. </div>
  3950. </div>
  3951. <div class="tool">
  3952. <div
  3953. class="whiteBIcon"
  3954. @click="openTools(itemTaskIndex, 47, toolIndex)"
  3955. >
  3956. <img
  3957. src="../../../assets/icon/fourthToolList/conSentences.png"
  3958. alt
  3959. />
  3960. <div style="margin: 5px 0">连词成句</div>
  3961. </div>
  3962. <div
  3963. class="check"
  3964. @click="addTools(47, itemTaskIndex, toolIndex)"
  3965. >
  3966. <img
  3967. src="../../../assets/icon/checkNo.png"
  3968. alt
  3969. v-if="itemTool.tool.indexOf(47) == -1"
  3970. />
  3971. <div class="checkDiv" v-else>
  3972. <img
  3973. src="../../../assets/icon/checkedIs.png"
  3974. alt
  3975. /><span>已选择</span>
  3976. </div>
  3977. </div>
  3978. </div>
  3979. <!-- <div class="tool">
  3980. <div
  3981. class="whiteBIcon"
  3982. @click="openTools(itemTaskIndex, 42, toolIndex)"
  3983. >
  3984. <img
  3985. src="../../../assets/icon/thirdToolList/mp3.png"
  3986. alt
  3987. />
  3988. <div style="margin: 5px 0">上传音频</div>
  3989. </div>
  3990. <div
  3991. class="check"
  3992. @click="addTools(42, itemTaskIndex, toolIndex)"
  3993. >
  3994. <img
  3995. src="../../../assets/icon/checkNo.png"
  3996. alt
  3997. v-if="itemTool.tool.indexOf(42) == -1"
  3998. />
  3999. <img
  4000. src="../../../assets/icon/checkedIs.png"
  4001. alt
  4002. v-else
  4003. />
  4004. </div>
  4005. </div> -->
  4006. </div>
  4007. <div class="toolSort" v-if="itemTool.toolType == 3">
  4008. <div class="tool">
  4009. <div
  4010. class="whiteBIcon"
  4011. @click="addTools(18, itemTaskIndex, toolIndex)"
  4012. >
  4013. <img
  4014. src="../../../assets/icon/thirdToolList/trainPlatform.png"
  4015. alt
  4016. />
  4017. <div style="margin: 5px 0">训练平台</div>
  4018. </div>
  4019. <div
  4020. class="check"
  4021. @click="addTools(18, itemTaskIndex, toolIndex)"
  4022. >
  4023. <img
  4024. src="../../../assets/icon/checkNo.png"
  4025. alt
  4026. v-if="itemTool.tool.indexOf(18) == -1"
  4027. />
  4028. <div class="checkDiv" v-else>
  4029. <img
  4030. src="../../../assets/icon/checkedIs.png"
  4031. alt
  4032. /><span>已选择</span>
  4033. </div>
  4034. </div>
  4035. </div>
  4036. <div class="tool">
  4037. <div
  4038. class="whiteBIcon"
  4039. @click="addTools(21, itemTaskIndex, toolIndex)"
  4040. >
  4041. <img
  4042. src="../../../assets/icon/fourthToolList/program.png"
  4043. alt
  4044. />
  4045. <div style="margin: 5px 0">编程平台</div>
  4046. </div>
  4047. <div
  4048. class="check"
  4049. @click="addTools(21, itemTaskIndex, toolIndex)"
  4050. >
  4051. <img
  4052. src="../../../assets/icon/checkNo.png"
  4053. alt
  4054. v-if="itemTool.tool.indexOf(21) == -1"
  4055. />
  4056. <div class="checkDiv" v-else>
  4057. <img
  4058. src="../../../assets/icon/checkedIs.png"
  4059. alt
  4060. /><span>已选择</span>
  4061. </div>
  4062. </div>
  4063. </div>
  4064. <div class="tool">
  4065. <div
  4066. class="whiteBIcon"
  4067. @click="addTools(22, itemTaskIndex, toolIndex)"
  4068. >
  4069. <img
  4070. src="../../../assets/icon/fourthToolList/AIprogram2.png"
  4071. alt
  4072. />
  4073. <div style="margin: 5px 0">AI体验</div>
  4074. </div>
  4075. <div
  4076. class="check"
  4077. @click="addTools(22, itemTaskIndex, toolIndex)"
  4078. >
  4079. <img
  4080. src="../../../assets/icon/checkNo.png"
  4081. alt
  4082. v-if="itemTool.tool.indexOf(22) == -1"
  4083. />
  4084. <div class="checkDiv" v-else>
  4085. <img
  4086. src="../../../assets/icon/checkedIs.png"
  4087. alt
  4088. /><span>已选择</span>
  4089. </div>
  4090. </div>
  4091. </div>
  4092. <div class="tool">
  4093. <div
  4094. class="whiteBIcon"
  4095. @click="addTools(23, itemTaskIndex, toolIndex)"
  4096. >
  4097. <img
  4098. src="../../../assets/icon/fourthToolList/Pythonprogram.png"
  4099. alt
  4100. />
  4101. <div style="margin: 5px 0">Python</div>
  4102. </div>
  4103. <div
  4104. class="check"
  4105. @click="addTools(23, itemTaskIndex, toolIndex)"
  4106. >
  4107. <img
  4108. src="../../../assets/icon/checkNo.png"
  4109. alt
  4110. v-if="itemTool.tool.indexOf(23) == -1"
  4111. />
  4112. <div class="checkDiv" v-else>
  4113. <img
  4114. src="../../../assets/icon/checkedIs.png"
  4115. alt
  4116. /><span>已选择</span>
  4117. </div>
  4118. </div>
  4119. </div>
  4120. <div class="tool">
  4121. <div
  4122. class="whiteBIcon"
  4123. @click="addTools(24, itemTaskIndex, toolIndex)"
  4124. >
  4125. <img
  4126. src="../../../assets/icon/fourthToolList/AIprogram.png"
  4127. alt
  4128. />
  4129. <div style="margin: 5px 0">AI平台</div>
  4130. </div>
  4131. <div
  4132. class="check"
  4133. @click="addTools(24, itemTaskIndex, toolIndex)"
  4134. >
  4135. <img
  4136. src="../../../assets/icon/checkNo.png"
  4137. alt
  4138. v-if="itemTool.tool.indexOf(24) == -1"
  4139. />
  4140. <div class="checkDiv" v-else>
  4141. <img
  4142. src="../../../assets/icon/checkedIs.png"
  4143. alt
  4144. /><span>已选择</span>
  4145. </div>
  4146. </div>
  4147. </div>
  4148. <!-- <div class="tool">
  4149. <div
  4150. class="whiteBIcon"
  4151. @click="addTools(32, itemTaskIndex, toolIndex)"
  4152. >
  4153. <img
  4154. src="../../../assets/icon/thirdToolList/code.png"
  4155. alt
  4156. />
  4157. <div style="margin: 5px 0">源码编辑</div>
  4158. </div>
  4159. <div
  4160. class="check"
  4161. @click="addTools(32, itemTaskIndex, toolIndex)"
  4162. >
  4163. <img
  4164. src="../../../assets/icon/checkNo.png"
  4165. alt
  4166. v-if="itemTool.tool.indexOf(32) == -1"
  4167. />
  4168. <div class="checkDiv" v-else>
  4169. <img
  4170. src="../../../assets/icon/checkedIs.png"
  4171. alt
  4172. /><span>已选择</span>
  4173. </div>
  4174. </div>
  4175. </div> -->
  4176. <div class="tool">
  4177. <div
  4178. class="whiteBIcon"
  4179. @click="openTools(itemTaskIndex, 57, toolIndex)"
  4180. >
  4181. <img
  4182. src="../../../assets/icon/fourthToolList/cocopi.png"
  4183. alt
  4184. />
  4185. <div style="margin: 5px 0">CocoPi</div>
  4186. </div>
  4187. <div
  4188. class="check"
  4189. @click="addTools(57, itemTaskIndex, toolIndex)"
  4190. >
  4191. <img
  4192. src="../../../assets/icon/checkNo.png"
  4193. alt
  4194. v-if="itemTool.tool.indexOf(57) == -1"
  4195. />
  4196. <div class="checkDiv" v-else>
  4197. <img
  4198. src="../../../assets/icon/checkedIs.png"
  4199. alt
  4200. /><span>已选择</span>
  4201. </div>
  4202. </div>
  4203. </div>
  4204. <div class="tool">
  4205. <div
  4206. class="whiteBIcon"
  4207. @click="addTools(63, itemTaskIndex, toolIndex)"
  4208. >
  4209. <img
  4210. src="../../../assets/icon/fourthToolList/Wood.png"
  4211. alt
  4212. />
  4213. <div style="margin: 5px 0">海龟编程</div>
  4214. </div>
  4215. <div
  4216. class="check"
  4217. @click="addTools(63, itemTaskIndex, toolIndex)"
  4218. >
  4219. <img
  4220. src="../../../assets/icon/checkNo.png"
  4221. alt
  4222. v-if="itemTool.tool.indexOf(63) == -1"
  4223. />
  4224. <div class="checkDiv" v-else>
  4225. <img
  4226. src="../../../assets/icon/checkedIs.png"
  4227. alt
  4228. /><span>已选择</span>
  4229. </div>
  4230. </div>
  4231. </div>
  4232. </div>
  4233. <div class="toolSort" v-if="itemTool.toolType == 7">
  4234. <div class="tool">
  4235. <div
  4236. class="whiteBIcon"
  4237. @click="openTools(itemTaskIndex, 40, toolIndex)"
  4238. >
  4239. <img
  4240. src="../../../assets/icon/thirdToolList/eval.png"
  4241. alt
  4242. />
  4243. <div style="margin: 5px 0">个人评价</div>
  4244. </div>
  4245. <div
  4246. class="check"
  4247. @click="addTools(40, itemTaskIndex, toolIndex)"
  4248. >
  4249. <img
  4250. src="../../../assets/icon/checkNo.png"
  4251. alt
  4252. v-if="itemTool.tool.indexOf(40) == -1"
  4253. />
  4254. <div class="checkDiv" v-else>
  4255. <img
  4256. src="../../../assets/icon/checkedIs.png"
  4257. alt
  4258. /><span>已选择</span>
  4259. </div>
  4260. </div>
  4261. </div>
  4262. </div>
  4263. <div class="toolSort" v-if="itemTool.toolType == 5">
  4264. <div class="tool">
  4265. <div
  4266. class="whiteBIcon"
  4267. @click="addTools(28, itemTaskIndex, toolIndex)"
  4268. >
  4269. <img
  4270. src="../../../assets/icon/secondToolList/translation.png"
  4271. alt
  4272. />
  4273. <div style="margin: 5px 0">翻译</div>
  4274. </div>
  4275. <div
  4276. class="check"
  4277. @click="addTools(28, itemTaskIndex, toolIndex)"
  4278. >
  4279. <img
  4280. src="../../../assets/icon/checkNo.png"
  4281. alt
  4282. v-if="itemTool.tool.indexOf(28) == -1"
  4283. />
  4284. <div class="checkDiv" v-else>
  4285. <img
  4286. src="../../../assets/icon/checkedIs.png"
  4287. alt
  4288. /><span>已选择</span>
  4289. </div>
  4290. </div>
  4291. </div>
  4292. <div class="tool">
  4293. <div
  4294. class="whiteBIcon"
  4295. @click="addTools(37, itemTaskIndex, toolIndex)"
  4296. >
  4297. <img
  4298. src="../../../assets/icon/secondToolList/mohe.png"
  4299. alt
  4300. />
  4301. <div style="margin: 5px 0">魔盒识字</div>
  4302. </div>
  4303. <div
  4304. class="check"
  4305. @click="addTools(37, itemTaskIndex, toolIndex)"
  4306. >
  4307. <img
  4308. src="../../../assets/icon/checkNo.png"
  4309. alt
  4310. v-if="itemTool.tool.indexOf(37) == -1"
  4311. />
  4312. <div class="checkDiv" v-else>
  4313. <img
  4314. src="../../../assets/icon/checkedIs.png"
  4315. alt
  4316. /><span>已选择</span>
  4317. </div>
  4318. </div>
  4319. </div>
  4320. <div class="tool">
  4321. <div
  4322. class="whiteBIcon"
  4323. @click="addTools(38, itemTaskIndex, toolIndex)"
  4324. >
  4325. <img
  4326. src="../../../assets/icon/secondToolList/24game.png"
  4327. alt
  4328. />
  4329. <div style="margin: 5px 0">24点</div>
  4330. </div>
  4331. <div
  4332. class="check"
  4333. @click="addTools(38, itemTaskIndex, toolIndex)"
  4334. >
  4335. <img
  4336. src="../../../assets/icon/checkNo.png"
  4337. alt
  4338. v-if="itemTool.tool.indexOf(38) == -1"
  4339. />
  4340. <div class="checkDiv" v-else>
  4341. <img
  4342. src="../../../assets/icon/checkedIs.png"
  4343. alt
  4344. /><span>已选择</span>
  4345. </div>
  4346. </div>
  4347. </div>
  4348. <div class="tool">
  4349. <div
  4350. class="whiteBIcon"
  4351. @click="addTools(31, itemTaskIndex, toolIndex)"
  4352. >
  4353. <img
  4354. src="../../../assets/icon/secondToolList/networkPanel.png"
  4355. alt
  4356. />
  4357. <div style="margin: 5px 0">数学画板</div>
  4358. </div>
  4359. <div
  4360. class="check"
  4361. @click="addTools(31, itemTaskIndex, toolIndex)"
  4362. >
  4363. <img
  4364. src="../../../assets/icon/checkNo.png"
  4365. alt
  4366. v-if="itemTool.tool.indexOf(31) == -1"
  4367. />
  4368. <div class="checkDiv" v-else>
  4369. <img
  4370. src="../../../assets/icon/checkedIs.png"
  4371. alt
  4372. /><span>已选择</span>
  4373. </div>
  4374. </div>
  4375. </div>
  4376. <div class="tool">
  4377. <div
  4378. class="whiteBIcon"
  4379. @click="addTools(39, itemTaskIndex, toolIndex)"
  4380. >
  4381. <img
  4382. src="../../../assets/icon/secondToolList/GeoGebra.png"
  4383. alt
  4384. />
  4385. <div style="margin: 5px 0">GeoGebra</div>
  4386. </div>
  4387. <div
  4388. class="check"
  4389. @click="addTools(39, itemTaskIndex, toolIndex)"
  4390. >
  4391. <img
  4392. src="../../../assets/icon/checkNo.png"
  4393. alt
  4394. v-if="itemTool.tool.indexOf(39) == -1"
  4395. />
  4396. <div class="checkDiv" v-else>
  4397. <img
  4398. src="../../../assets/icon/checkedIs.png"
  4399. alt
  4400. /><span>已选择</span>
  4401. </div>
  4402. </div>
  4403. </div>
  4404. <div class="tool">
  4405. <div
  4406. class="whiteBIcon"
  4407. @click="addTools(58, itemTaskIndex, toolIndex)"
  4408. >
  4409. <img
  4410. src="../../../assets/icon/fourthToolList/car.png"
  4411. alt
  4412. />
  4413. <div style="margin: 5px 0">模拟驾驶</div>
  4414. </div>
  4415. <div
  4416. class="check"
  4417. @click="addTools(58, itemTaskIndex, toolIndex)"
  4418. >
  4419. <img
  4420. src="../../../assets/icon/checkNo.png"
  4421. alt
  4422. v-if="itemTool.tool.indexOf(58) == -1"
  4423. />
  4424. <div class="checkDiv" v-else>
  4425. <img
  4426. src="../../../assets/icon/checkedIs.png"
  4427. alt
  4428. /><span>已选择</span>
  4429. </div>
  4430. </div>
  4431. </div>
  4432. <div class="tool">
  4433. <div
  4434. class="whiteBIcon"
  4435. @click="addTools(59, itemTaskIndex, toolIndex)"
  4436. >
  4437. <img
  4438. src="../../../assets/icon/fourthToolList/lineSearch.png"
  4439. alt
  4440. />
  4441. <div style="margin: 5px 0">路径搜索</div>
  4442. </div>
  4443. <div
  4444. class="check"
  4445. @click="addTools(59, itemTaskIndex, toolIndex)"
  4446. >
  4447. <img
  4448. src="../../../assets/icon/checkNo.png"
  4449. alt
  4450. v-if="itemTool.tool.indexOf(59) == -1"
  4451. />
  4452. <div class="checkDiv" v-else>
  4453. <img
  4454. src="../../../assets/icon/checkedIs.png"
  4455. alt
  4456. /><span>已选择</span>
  4457. </div>
  4458. </div>
  4459. </div>
  4460. <div class="tool">
  4461. <div
  4462. class="whiteBIcon"
  4463. @click="addTools(60, itemTaskIndex, toolIndex)"
  4464. >
  4465. <img
  4466. src="../../../assets/icon/fourthToolList/deepLearning.png"
  4467. alt
  4468. />
  4469. <div style="margin: 5px 0">深度学习</div>
  4470. </div>
  4471. <div
  4472. class="check"
  4473. @click="addTools(60, itemTaskIndex, toolIndex)"
  4474. >
  4475. <img
  4476. src="../../../assets/icon/checkNo.png"
  4477. alt
  4478. v-if="itemTool.tool.indexOf(60) == -1"
  4479. />
  4480. <div class="checkDiv" v-else>
  4481. <img
  4482. src="../../../assets/icon/checkedIs.png"
  4483. alt
  4484. /><span>已选择</span>
  4485. </div>
  4486. </div>
  4487. </div>
  4488. <div class="tool">
  4489. <div
  4490. class="whiteBIcon"
  4491. @click="addTools(61, itemTaskIndex, toolIndex)"
  4492. >
  4493. <img
  4494. src="../../../assets/icon/fourthToolList/allHistory.png"
  4495. alt
  4496. />
  4497. <div style="margin: 5px 0">全历史</div>
  4498. </div>
  4499. <div
  4500. class="check"
  4501. @click="addTools(61, itemTaskIndex, toolIndex)"
  4502. >
  4503. <img
  4504. src="../../../assets/icon/checkNo.png"
  4505. alt
  4506. v-if="itemTool.tool.indexOf(61) == -1"
  4507. />
  4508. <div class="checkDiv" v-else>
  4509. <img
  4510. src="../../../assets/icon/checkedIs.png"
  4511. alt
  4512. /><span>已选择</span>
  4513. </div>
  4514. </div>
  4515. </div>
  4516. </div>
  4517. <div class="toolSort" v-if="itemTool.toolType == 4">
  4518. <div class="tool">
  4519. <div
  4520. class="whiteBIcon"
  4521. @click="addTools(26, itemTaskIndex, toolIndex)"
  4522. >
  4523. <img
  4524. src="../../../assets/icon/thirdToolList/courseDesign.png"
  4525. alt
  4526. />
  4527. <div style="margin: 5px 0">课程设计</div>
  4528. </div>
  4529. <div
  4530. class="check"
  4531. @click="addTools(26, itemTaskIndex, toolIndex)"
  4532. >
  4533. <img
  4534. src="../../../assets/icon/checkNo.png"
  4535. alt
  4536. v-if="itemTool.tool.indexOf(26) == -1"
  4537. />
  4538. <div class="checkDiv" v-else>
  4539. <img
  4540. src="../../../assets/icon/checkedIs.png"
  4541. alt
  4542. /><span>已选择</span>
  4543. </div>
  4544. </div>
  4545. </div>
  4546. <div class="tool">
  4547. <div
  4548. class="whiteBIcon"
  4549. @click="addTools(25, itemTaskIndex, toolIndex)"
  4550. >
  4551. <img
  4552. src="../../../assets/icon/thirdToolList/evalua.png"
  4553. alt
  4554. />
  4555. <div style="margin: 5px 0">目标管理</div>
  4556. </div>
  4557. <div
  4558. class="check"
  4559. @click="addTools(25, itemTaskIndex, toolIndex)"
  4560. >
  4561. <img
  4562. src="../../../assets/icon/checkNo.png"
  4563. alt
  4564. v-if="itemTool.tool.indexOf(25) == -1"
  4565. />
  4566. <div class="checkDiv" v-else>
  4567. <img
  4568. src="../../../assets/icon/checkedIs.png"
  4569. alt
  4570. /><span>已选择</span>
  4571. </div>
  4572. </div>
  4573. </div>
  4574. <!-- <div class="tool">
  4575. <div class="whiteBIcon" @click="addTools(44, itemTaskIndex, toolIndex)">
  4576. <img src="../../../assets/icon/thirdToolList/hanClass.png" alt />
  4577. <div style="margin: 5px 0">汉字宫</div>
  4578. </div>
  4579. <div class="check" @click="addTools(44, itemTaskIndex, toolIndex)">
  4580. <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(44) == -1" />
  4581. <div class="checkDiv" v-else>
  4582. <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
  4583. </div>
  4584. </div>
  4585. </div> -->
  4586. </div>
  4587. </div>
  4588. </div>
  4589. <div
  4590. class="addToolFun"
  4591. @click="addToolFun(itemTaskIndex)"
  4592. >
  4593. <div class="addToolImg">
  4594. <img src="../../../assets/icon/add.png" alt />
  4595. </div>
  4596. <div>添加工具</div>
  4597. </div>
  4598. </div>
  4599. </div>
  4600. <div
  4601. v-else-if="
  4602. unitJson[unitIndex].easy == 2 ||
  4603. unitJson[unitIndex].easy == 4
  4604. "
  4605. class="toolChoose"
  4606. style="padding: 0 0 0 30px"
  4607. >
  4608. <div class="tools">
  4609. <div
  4610. class="leftTools"
  4611. style="width: 95%"
  4612. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  4613. :key="toolIndex"
  4614. >
  4615. <div>
  4616. <textarea
  4617. rows="3"
  4618. type="text"
  4619. placeholder="添加工具描述"
  4620. class="binfo_input"
  4621. style="margin: 0 0 20px 0; width: 71.5% !important"
  4622. v-model="itemTool.toolDetail"
  4623. ></textarea>
  4624. </div>
  4625. <div
  4626. style="
  4627. display: flex;
  4628. flex-direction: row;
  4629. align-items: baseline;
  4630. flex-wrap: nowrap;
  4631. justify-content: flex-start;
  4632. position: relative;
  4633. "
  4634. >
  4635. <div style="margin-right: 20px; font-weight: bold">
  4636. 步骤 {{ toolIndex + 1 }} :
  4637. </div>
  4638. <div
  4639. class="remove"
  4640. @click="deleteTool(itemTaskIndex, toolIndex)"
  4641. v-if="itemTask.toolChoose.length > 1"
  4642. style="position: absolute; right: 55px"
  4643. ></div>
  4644. </div>
  4645. <div style="min-height: 163px">
  4646. <div class="toolSort">
  4647. <div class="tool">
  4648. <div
  4649. class="whiteBIcon"
  4650. @click="openTools(itemTaskIndex, 1, toolIndex)"
  4651. >
  4652. <img
  4653. src="../../../assets/icon/secondToolList/whiteBoard.png"
  4654. alt
  4655. />
  4656. <div style="margin: 5px 0">电子白板</div>
  4657. </div>
  4658. <div
  4659. class="check"
  4660. @click="addTools(1, itemTaskIndex, toolIndex)"
  4661. >
  4662. <img
  4663. src="../../../assets/icon/checkNo.png"
  4664. alt
  4665. v-if="itemTool.tool.indexOf(1) == -1"
  4666. />
  4667. <div class="checkDiv" v-else>
  4668. <img
  4669. src="../../../assets/icon/checkedIs.png"
  4670. alt
  4671. /><span>已选择</span>
  4672. </div>
  4673. </div>
  4674. </div>
  4675. <div class="tool">
  4676. <div
  4677. class="whiteBIcon"
  4678. @click="openTools(itemTaskIndex, 52, toolIndex)"
  4679. >
  4680. <img
  4681. src="../../../assets/icon/fourthToolList/text.png"
  4682. alt
  4683. />
  4684. <div style="margin: 5px 0">文档</div>
  4685. </div>
  4686. <div
  4687. class="check"
  4688. @click="addTools(52, itemTaskIndex, toolIndex)"
  4689. >
  4690. <img
  4691. src="../../../assets/icon/checkNo.png"
  4692. alt
  4693. v-if="itemTool.tool.indexOf(52) == -1"
  4694. />
  4695. <div class="checkDiv" v-else>
  4696. <img
  4697. src="../../../assets/icon/checkedIs.png"
  4698. alt
  4699. /><span>已选择</span>
  4700. </div>
  4701. </div>
  4702. </div>
  4703. <div class="tool">
  4704. <div
  4705. class="whiteBIcon"
  4706. @click="openTools(itemTaskIndex, 3, toolIndex)"
  4707. >
  4708. <img
  4709. src="../../../assets/icon/secondToolList/mindMapping.png"
  4710. alt
  4711. />
  4712. <div style="margin: 5px 0">思维导图</div>
  4713. </div>
  4714. <div
  4715. class="check"
  4716. @click="addTools(3, itemTaskIndex, toolIndex)"
  4717. >
  4718. <img
  4719. src="../../../assets/icon/checkNo.png"
  4720. alt
  4721. v-if="itemTool.tool.indexOf(3) == -1"
  4722. />
  4723. <div class="checkDiv" v-else>
  4724. <img
  4725. src="../../../assets/icon/checkedIs.png"
  4726. alt
  4727. /><span>已选择</span>
  4728. </div>
  4729. </div>
  4730. </div>
  4731. <div class="tool">
  4732. <div
  4733. class="whiteBIcon"
  4734. @click="openTools(itemTaskIndex, 4, toolIndex)"
  4735. >
  4736. <img
  4737. src="../../../assets/icon/thirdToolList/ask.png"
  4738. alt
  4739. />
  4740. <div style="margin: 5px 0">问卷调查</div>
  4741. </div>
  4742. <div
  4743. class="check"
  4744. @click="addTools(4, itemTaskIndex, toolIndex)"
  4745. >
  4746. <img
  4747. src="../../../assets/icon/checkNo.png"
  4748. alt
  4749. v-if="itemTool.tool.indexOf(4) == -1"
  4750. />
  4751. <div class="checkDiv" v-else>
  4752. <img
  4753. src="../../../assets/icon/checkedIs.png"
  4754. alt
  4755. /><span>已选择</span>
  4756. </div>
  4757. </div>
  4758. </div>
  4759. <div class="tool">
  4760. <div
  4761. class="whiteBIcon"
  4762. @click="openTools(itemTaskIndex, 45, toolIndex)"
  4763. >
  4764. <img
  4765. src="../../../assets/icon/thirdToolList/choose.png"
  4766. alt
  4767. />
  4768. <div style="margin: 5px 0">选择题</div>
  4769. </div>
  4770. <div
  4771. class="check"
  4772. @click="addTools(45, itemTaskIndex, toolIndex)"
  4773. >
  4774. <img
  4775. src="../../../assets/icon/checkNo.png"
  4776. alt
  4777. v-if="itemTool.tool.indexOf(45) == -1"
  4778. />
  4779. <div class="checkDiv" v-else>
  4780. <img
  4781. src="../../../assets/icon/checkedIs.png"
  4782. alt
  4783. /><span>已选择</span>
  4784. </div>
  4785. </div>
  4786. </div>
  4787. <div class="tool">
  4788. <div
  4789. class="whiteBIcon"
  4790. @click="openTools(itemTaskIndex, 15, toolIndex)"
  4791. >
  4792. <img
  4793. src="../../../assets/icon/thirdToolList/answer.png"
  4794. alt
  4795. />
  4796. <div style="margin: 5px 0">问答工具</div>
  4797. </div>
  4798. <div
  4799. class="check"
  4800. @click="addTools(15, itemTaskIndex, toolIndex)"
  4801. >
  4802. <img
  4803. src="../../../assets/icon/checkNo.png"
  4804. alt
  4805. v-if="itemTool.tool.indexOf(15) == -1"
  4806. />
  4807. <div class="checkDiv" v-else>
  4808. <img
  4809. src="../../../assets/icon/checkedIs.png"
  4810. alt
  4811. /><span>已选择</span>
  4812. </div>
  4813. </div>
  4814. </div>
  4815. <div class="tool">
  4816. <div
  4817. class="whiteBIcon"
  4818. @click="addTools(16, itemTaskIndex, toolIndex)"
  4819. >
  4820. <img
  4821. src="../../../assets/icon/thirdToolList/work.png"
  4822. alt
  4823. />
  4824. <div style="margin: 5px 0">作业提交</div>
  4825. </div>
  4826. <div
  4827. class="check"
  4828. @click="addTools(16, itemTaskIndex, toolIndex)"
  4829. >
  4830. <img
  4831. src="../../../assets/icon/checkNo.png"
  4832. alt
  4833. v-if="itemTool.tool.indexOf(16) == -1"
  4834. />
  4835. <div class="checkDiv" v-else>
  4836. <img
  4837. src="../../../assets/icon/checkedIs.png"
  4838. alt
  4839. /><span>已选择</span>
  4840. </div>
  4841. </div>
  4842. </div>
  4843. <div class="tool">
  4844. <div
  4845. class="whiteBIcon"
  4846. @click="openTools(itemTaskIndex, 50, toolIndex)"
  4847. >
  4848. <img
  4849. src="../../../assets/icon/thirdToolList/plwork.png"
  4850. alt
  4851. />
  4852. <div style="margin: 5px 0">批量上传</div>
  4853. </div>
  4854. <div
  4855. class="check"
  4856. @click="addTools(50, itemTaskIndex, toolIndex)"
  4857. >
  4858. <img
  4859. src="../../../assets/icon/checkNo.png"
  4860. alt
  4861. v-if="itemTool.tool.indexOf(50) == -1"
  4862. />
  4863. <div class="checkDiv" v-else>
  4864. <img
  4865. src="../../../assets/icon/checkedIs.png"
  4866. alt
  4867. /><span>已选择</span>
  4868. </div>
  4869. </div>
  4870. </div>
  4871. <div class="tool">
  4872. <div
  4873. class="whiteBIcon"
  4874. @click="openTools(itemTaskIndex, 41, toolIndex)"
  4875. >
  4876. <img
  4877. src="../../../assets/icon/thirdToolList/select.png"
  4878. alt
  4879. />
  4880. <div style="margin: 5px 0">选择填空</div>
  4881. </div>
  4882. <div
  4883. class="check"
  4884. @click="addTools(41, itemTaskIndex, toolIndex)"
  4885. >
  4886. <img
  4887. src="../../../assets/icon/checkNo.png"
  4888. alt
  4889. v-if="itemTool.tool.indexOf(41) == -1"
  4890. />
  4891. <div class="checkDiv" v-else>
  4892. <img
  4893. src="../../../assets/icon/checkedIs.png"
  4894. alt
  4895. /><span>已选择</span>
  4896. </div>
  4897. </div>
  4898. </div>
  4899. <div class="tool">
  4900. <div
  4901. class="whiteBIcon"
  4902. @click="openTools(itemTaskIndex, 47, toolIndex)"
  4903. >
  4904. <img
  4905. src="../../../assets/icon/fourthToolList/conSentences.png"
  4906. alt
  4907. />
  4908. <div style="margin: 5px 0">连词成句</div>
  4909. </div>
  4910. <div
  4911. class="check"
  4912. @click="addTools(47, itemTaskIndex, toolIndex)"
  4913. >
  4914. <img
  4915. src="../../../assets/icon/checkNo.png"
  4916. alt
  4917. v-if="itemTool.tool.indexOf(47) == -1"
  4918. />
  4919. <div class="checkDiv" v-else>
  4920. <img
  4921. src="../../../assets/icon/checkedIs.png"
  4922. alt
  4923. /><span>已选择</span>
  4924. </div>
  4925. </div>
  4926. </div>
  4927. <div class="tool">
  4928. <div
  4929. class="whiteBIcon"
  4930. @click="openTools(itemTaskIndex, 48, toolIndex)"
  4931. >
  4932. <img
  4933. src="../../../assets/icon/fourthToolList/table.png"
  4934. alt
  4935. />
  4936. <div style="margin: 5px 0">表格</div>
  4937. </div>
  4938. <div
  4939. class="check"
  4940. @click="addTools(48, itemTaskIndex, toolIndex)"
  4941. >
  4942. <img
  4943. src="../../../assets/icon/checkNo.png"
  4944. alt
  4945. v-if="itemTool.tool.indexOf(48) == -1"
  4946. />
  4947. <div class="checkDiv" v-else>
  4948. <img
  4949. src="../../../assets/icon/checkedIs.png"
  4950. alt
  4951. /><span>已选择</span>
  4952. </div>
  4953. </div>
  4954. </div>
  4955. </div>
  4956. </div>
  4957. </div>
  4958. <div
  4959. class="addToolFun"
  4960. style="margin-bottom: 20px"
  4961. @click="addToolFun(itemTaskIndex)"
  4962. >
  4963. <div class="addToolImg">
  4964. <img src="../../../assets/icon/add.png" alt />
  4965. </div>
  4966. <div>添加工具</div>
  4967. </div>
  4968. </div>
  4969. </div>
  4970. <div
  4971. v-else-if="
  4972. unitJson[unitIndex].easy == 1 ||
  4973. (unitJson[unitIndex].easy == 5 && itemTask.taskType == 2)
  4974. "
  4975. class="toolChoose"
  4976. style="padding: 0 0 0 30px"
  4977. >
  4978. <div class="tools">
  4979. <div
  4980. class="leftTools"
  4981. style="
  4982. width: 95%;
  4983. padding: 0 0 15px 0;
  4984. margin-bottom: 15px;
  4985. "
  4986. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  4987. :key="toolIndex"
  4988. >
  4989. <div style="min-height: 163px">
  4990. <div class="toolSort">
  4991. <div class="tool">
  4992. <div
  4993. class="whiteBIcon"
  4994. @click="openTools(itemTaskIndex, 50, toolIndex)"
  4995. >
  4996. <img
  4997. src="../../../assets/icon/thirdToolList/plwork.png"
  4998. alt
  4999. />
  5000. <div style="margin: 5px 0">批量上传</div>
  5001. </div>
  5002. <div
  5003. class="check"
  5004. @click="addTools(50, itemTaskIndex, toolIndex)"
  5005. >
  5006. <img
  5007. src="../../../assets/icon/checkNo.png"
  5008. alt
  5009. v-if="itemTool.tool.indexOf(50) == -1"
  5010. />
  5011. <div class="checkDiv" v-else>
  5012. <img
  5013. src="../../../assets/icon/checkedIs.png"
  5014. alt
  5015. /><span>已选择</span>
  5016. </div>
  5017. </div>
  5018. </div>
  5019. </div>
  5020. </div>
  5021. </div>
  5022. </div>
  5023. </div>
  5024. <div
  5025. class="elist_css"
  5026. v-if="!(unitJson[unitJson.length - 1].easy == 4)"
  5027. >
  5028. <div class="elist_title">
  5029. <div
  5030. style="
  5031. display: flex;
  5032. flex-direction: row;
  5033. align-items: center;
  5034. margin-bottom: 20px;
  5035. "
  5036. >
  5037. <div class="lineTitle">评价设置</div>
  5038. <div class="line" style="width: 90%"></div>
  5039. </div>
  5040. </div>
  5041. <div class="mbCss">
  5042. <div class="pjCss">
  5043. <div
  5044. v-if="itemTask.eList && itemTask.eList.length"
  5045. class="elist_input"
  5046. >
  5047. <div
  5048. v-for="(eItem, eIndex) in itemTask.eList"
  5049. :key="eIndex"
  5050. class="elist_input_box"
  5051. >
  5052. <span>评价名称:</span>
  5053. <input
  5054. type="input"
  5055. v-model="itemTask.eList[eIndex].value"
  5056. placeholder="填写评价名称"
  5057. />
  5058. <span>评星等级:</span>
  5059. <el-rate
  5060. v-model="itemTask.eList[eIndex].score"
  5061. @change="setEListStar()"
  5062. disabled
  5063. ></el-rate>
  5064. <div
  5065. class="remove"
  5066. @click="
  5067. deletEList(unitIndex, itemTaskIndex, eIndex)
  5068. "
  5069. ></div>
  5070. <div class="elist_inptu_text">
  5071. <span>评价描述:</span>
  5072. <input
  5073. type="input"
  5074. v-model="itemTask.eList[eIndex].detail"
  5075. placeholder="填写评价描述"
  5076. />
  5077. </div>
  5078. <div class="elist_inptu_text" v-if="evalua">
  5079. <span>目标:</span>
  5080. <!-- <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写评价描述" /> -->
  5081. <!-- <el-select v-model="itemTask.eList[eIndex].target" placeholder="请选择目标"
  5082. @change="forceUpdate()">
  5083. <el-option v-for="(e, eIndex) in targetArray" :key="eIndex" :label="e.name"
  5084. :value="e.name">
  5085. </el-option>
  5086. </el-select> -->
  5087. <el-cascader
  5088. :options="targetArray"
  5089. v-model="itemTask.eList[eIndex].target"
  5090. :props="{ checkStrictly: true }"
  5091. :show-all-levels="false"
  5092. clearable
  5093. ></el-cascader>
  5094. </div>
  5095. </div>
  5096. </div>
  5097. <div
  5098. class="addToolFun"
  5099. @click="addEList(unitIndex, itemTaskIndex)"
  5100. style="margin: 35px 35px 0 0"
  5101. >
  5102. <div class="addToolImg">
  5103. <img src="../../../assets/icon/add.png" alt />
  5104. </div>
  5105. <div>添加</div>
  5106. </div>
  5107. </div>
  5108. <div
  5109. v-if="evalua"
  5110. style="
  5111. border: 1px solid #e5e5e5;
  5112. width: 55%;
  5113. margin-top: 20px;
  5114. box-shadow: 3px 1px 15px 3px #e0e0e0;
  5115. "
  5116. class="evaCss"
  5117. >
  5118. <div class="e_add_top">
  5119. <div class="e_add_title">
  5120. <span>当前使用目标管理</span>
  5121. <span>{{ eTitle }}</span>
  5122. <img
  5123. src="../../../assets/line.png"
  5124. class="cru_line"
  5125. style="
  5126. width: 125px;
  5127. height: 20px;
  5128. bottom: -10px;
  5129. left: 155px;
  5130. "
  5131. />
  5132. </div>
  5133. </div>
  5134. <div class="e_add_content" style="width: 100%">
  5135. <div class="e_add_list_pbox" style="width: 100%">
  5136. <div class="e_add_list_pbox_title">
  5137. <span class="type_title">切换模式</span>
  5138. <div class="type_content">
  5139. <span
  5140. :class="{ active: typeMode == 1 }"
  5141. @click="OtherMb(1)"
  5142. >目标树</span
  5143. >
  5144. <span
  5145. :class="{ active: typeMode == 2 }"
  5146. @click="OtherMb(2)"
  5147. >目标罗盘</span
  5148. >
  5149. <span
  5150. :class="{ active: typeMode == 3 }"
  5151. @click="OtherMb(3)"
  5152. >目标看板</span
  5153. >
  5154. </div>
  5155. </div>
  5156. <div class="e_add_list_pbox_content">
  5157. <Mind
  5158. :showBar="false"
  5159. :mindData="data"
  5160. style="width: 100%"
  5161. :jsmindId="
  5162. unitIndex + '-' + itemTaskIndex + 'mind'
  5163. "
  5164. v-if="typeMode == 1"
  5165. ></Mind>
  5166. <Sunburst
  5167. :Josn="eJson"
  5168. :num="eJSONNum"
  5169. style="width: 100%"
  5170. v-if="typeMode == 2"
  5171. >
  5172. </Sunburst>
  5173. <SeeBoard
  5174. :Josn="eJson"
  5175. :num="eJSONNum"
  5176. :ename="eTitle"
  5177. style="width: 100%"
  5178. v-if="typeMode == 3"
  5179. ></SeeBoard>
  5180. </div>
  5181. </div>
  5182. </div>
  5183. </div>
  5184. </div>
  5185. </div>
  5186. <div class="funBlock" style="padding: 0">
  5187. <div class="fold" @click="fold(itemTaskIndex, $event, 1)">
  5188. <div>折叠</div>
  5189. <div class="arrow">
  5190. <img src="../../../assets/icon/fold.png" alt />
  5191. </div>
  5192. </div>
  5193. <div class="fold" @click="fold(itemTaskIndex, $event, 0)">
  5194. <div>展开</div>
  5195. <div class="arrow">
  5196. <img src="../../../assets/icon/expand.png" alt />
  5197. </div>
  5198. </div>
  5199. </div>
  5200. </div>
  5201. <div
  5202. class="addTaskBorder"
  5203. @click="addTaskBorder"
  5204. v-if="!unitJson[unitIndex].easy"
  5205. >
  5206. <div>
  5207. <img src="../../../assets/icon/addHw.png" alt />
  5208. <span>添加任务</span>
  5209. </div>
  5210. </div>
  5211. </div>
  5212. </div>
  5213. </div>
  5214. <div class="rightBox" v-if="this.steps == 4">
  5215. <div class="basic_box_success">
  5216. <div class="right_img">
  5217. <img src="../../../assets/icon/right.png" alt />
  5218. </div>
  5219. <div style="font-weight: bold">成功</div>
  5220. <!-- <div>您的课程编号</div>
  5221. <div class="number">{{ number }}</div>-->
  5222. <!-- <div class="success_button">
  5223. <div class="look_course" @click="isNoFinsh">
  5224. 邀请老师协同编辑
  5225. </div>
  5226. <div class="attend_others" @click="goCourse">预览课程</div>
  5227. </div> -->
  5228. </div>
  5229. </div>
  5230. <div class="info_btnBox">
  5231. <button
  5232. class="info_btn"
  5233. @click="
  5234. goTo(
  5235. '/course?userid=' +
  5236. userid +
  5237. '&oid=' +
  5238. oid +
  5239. '&org=' +
  5240. org +
  5241. '&role=' +
  5242. role
  5243. )
  5244. "
  5245. >
  5246. 返回课程
  5247. </button>
  5248. <button class="info_btn" @click="nextSteps" v-if="this.steps == 1">
  5249. 确认上传
  5250. </button>
  5251. </div>
  5252. </div>
  5253. </div>
  5254. </div>
  5255. <el-dialog
  5256. title="提示"
  5257. :visible.sync="dialogVisible"
  5258. :append-to-body="true"
  5259. width="25%"
  5260. :before-close="handleClose"
  5261. class="dialog_diy2 customWidth"
  5262. >
  5263. <div>请复制该链接邀请协同编辑</div>
  5264. <div>http://www.boomyon.com/index-zhang.com</div>
  5265. <span slot="footer" class="dialog-footer">
  5266. <el-button type="primary">复制链接分享</el-button>
  5267. <el-button @click="dialogVisible = false">取消</el-button>
  5268. </span>
  5269. </el-dialog>
  5270. <el-dialog
  5271. :title="updateBoolean2 ? '查看文档' : '添加文档'"
  5272. :visible.sync="dialogVisible1"
  5273. :append-to-body="true"
  5274. width="25%"
  5275. :before-close="handleClose"
  5276. class="dialog_diy2 customWidth"
  5277. >
  5278. <el-form>
  5279. <el-form-item label="文档标题">
  5280. <el-input
  5281. v-model="tTitle"
  5282. auto-complete="off"
  5283. placeholder="请输入文档标题名..."
  5284. ></el-input>
  5285. </el-form-item>
  5286. <div>文档简介</div>
  5287. <editor-bar v-model="tdetail" @change="change"></editor-bar>
  5288. </el-form>
  5289. <span slot="footer" class="dialog-footer">
  5290. <el-button @click="dialogVisible1 = false">取 消</el-button>
  5291. <el-button type="primary" @click="addWord" v-if="!updateBoolean2"
  5292. >添加</el-button
  5293. >
  5294. <el-button type="primary" @click="upWord" v-else>修 改</el-button>
  5295. </span>
  5296. </el-dialog>
  5297. <el-dialog
  5298. title="添加文档"
  5299. :visible.sync="dialogVisible2"
  5300. :append-to-body="true"
  5301. width="500px"
  5302. :before-close="handleClose"
  5303. class="dialog_diy"
  5304. >
  5305. <el-form>
  5306. <el-form-item label="文档标题">
  5307. <el-input
  5308. v-model="templateC.title"
  5309. auto-complete="off"
  5310. placeholder="请输入文档标题名..."
  5311. ></el-input>
  5312. </el-form-item>
  5313. <div>文档内容</div>
  5314. <editor-bar v-model="cTemplate" @change="change"></editor-bar>
  5315. </el-form>
  5316. <span slot="footer" class="dialog-footer">
  5317. <el-button @click="clearChoose">取 消</el-button>
  5318. <el-button type="primary" @click="wordNext()">确定</el-button>
  5319. </span>
  5320. </el-dialog>
  5321. <el-dialog
  5322. title="添加富文本"
  5323. :visible.sync="dialogVisible6"
  5324. :append-to-body="true"
  5325. width="500px"
  5326. :before-close="handleClose"
  5327. class="dialog_diy"
  5328. >
  5329. <el-form>
  5330. <el-form-item label="文本标题">
  5331. <el-input
  5332. v-model="AttText.title"
  5333. auto-complete="off"
  5334. @input="change2"
  5335. placeholder="请输入文本标题..."
  5336. ></el-input>
  5337. </el-form-item>
  5338. <div>富文本内容</div>
  5339. <editor-bar
  5340. v-model="AttText.text"
  5341. @change="change"
  5342. v-if="dialogVisible6"
  5343. ></editor-bar>
  5344. </el-form>
  5345. <span slot="footer" class="dialog-footer">
  5346. <el-button @click="clearAttText">取 消</el-button>
  5347. <el-button type="primary" @click="isAddOrUpdateAttText">确定</el-button>
  5348. </span>
  5349. </el-dialog>
  5350. <el-dialog
  5351. title="添加链接"
  5352. :visible.sync="dialogVisible7"
  5353. :append-to-body="true"
  5354. width="500px"
  5355. :before-close="handleClose"
  5356. class="dialog_diy lineCss"
  5357. >
  5358. <el-form>
  5359. <el-form-item label="标题" :label-width="formLabelWidth">
  5360. <span>
  5361. <el-input
  5362. placeholder="请输入链接标题"
  5363. clearable
  5364. v-model="lineTitle"
  5365. class="add_input"
  5366. ></el-input>
  5367. </span>
  5368. </el-form-item>
  5369. <el-form-item label="链接" :label-width="formLabelWidth">
  5370. <span>
  5371. <el-input
  5372. placeholder="请输入链接"
  5373. clearable
  5374. v-model="line"
  5375. class="add_input"
  5376. ></el-input>
  5377. </span>
  5378. </el-form-item>
  5379. </el-form>
  5380. <span slot="footer" class="dialog-footer">
  5381. <el-button @click="clearLine">取 消</el-button>
  5382. <el-button type="primary" @click="isAddOrUpdateLine">确定</el-button>
  5383. </span>
  5384. </el-dialog>
  5385. <el-dialog
  5386. title="添加资源"
  5387. :visible.sync="dialogVisibleSource"
  5388. :append-to-body="true"
  5389. width="100%"
  5390. :before-close="handleClose"
  5391. class="dialog_diy source_diy"
  5392. >
  5393. <div>
  5394. <sourceDialog :sourceData="sourceData"></sourceDialog>
  5395. </div>
  5396. <span slot="footer" class="dialog-footer">
  5397. <el-button @click="dialogVisibleSource = false">取 消</el-button>
  5398. <el-button type="primary" @click="addSource">确定</el-button>
  5399. </span>
  5400. </el-dialog>
  5401. <el-dialog
  5402. title="添加课程成员"
  5403. :visible.sync="dialogVisible3"
  5404. :append-to-body="true"
  5405. width="25%"
  5406. height="80%"
  5407. :before-close="handleClose"
  5408. class="addNewPP customWidth"
  5409. >
  5410. <div class="people">
  5411. <div class="people_top">
  5412. <div class="people_nav">选择成员</div>
  5413. <div class="people_top_right">
  5414. <div class="people_search">
  5415. <el-input
  5416. style="height: 100%"
  5417. placeholder="搜索成员名称"
  5418. v-model="searchPeople"
  5419. ></el-input>
  5420. <div class="search_img" @click="searchStudent">
  5421. <img src="../../../assets/icon/search.png" alt />
  5422. </div>
  5423. </div>
  5424. </div>
  5425. </div>
  5426. <el-checkbox-group v-model="checkboxList" class="people_name">
  5427. <el-checkbox
  5428. v-for="item in studentJuri"
  5429. :key="item.userid"
  5430. :label="item.userid"
  5431. >{{ item.name ? item.name : "暂无学生可选" }}</el-checkbox
  5432. >
  5433. </el-checkbox-group>
  5434. </div>
  5435. <span slot="footer" class="dialog-footer">
  5436. <el-button @click="dialogVisible3 = false">取 消</el-button>
  5437. <el-button type="primary" @click="isAddPP">确定</el-button>
  5438. </span>
  5439. </el-dialog>
  5440. <el-dialog
  5441. title="添加班级"
  5442. :visible.sync="dialogVisibleClass"
  5443. :append-to-body="true"
  5444. width="400px"
  5445. height="80%"
  5446. :before-close="handleClose"
  5447. class="addNewPP"
  5448. >
  5449. <div class="people" style="height: 300px">
  5450. <div class="people_top">
  5451. <div class="people_top_right">
  5452. <div class="people_search">
  5453. <el-input
  5454. placeholder="搜索班级名称"
  5455. v-model="classSearch"
  5456. @input="getClass()"
  5457. ></el-input>
  5458. <!-- @click="getClass()"
  5459. @keyup.enter.native="getClass()"
  5460. -->
  5461. <div class="search_img">
  5462. <img src="../../../assets/icon/search.png" alt />
  5463. </div>
  5464. </div>
  5465. </div>
  5466. <div class="people_nav">选择班级</div>
  5467. </div>
  5468. <el-checkbox-group
  5469. v-model="checkboxList2"
  5470. class="people_name people_name2"
  5471. @change="InviteChange"
  5472. >
  5473. <div v-for="item in grade2" :key="item.id" class="p_box">
  5474. <el-checkbox :label="item.id">
  5475. {{ item.name }}
  5476. </el-checkbox>
  5477. <!-- <div class="inviteCode" :class="{ noneInvite: !isInvite(item.id) }" v-if="isInvite(item.id)">
  5478. 邀请码:{{ getInviteCodeC(item.id) }}</div> -->
  5479. <!-- <div class="inviteCode" :class="{ noneInvite: !isInvite(item.id) }" v-if="checkboxList2.indexOf(item.id) != -1"
  5480. @click="OpenInviteD(item.id)">随机码设置</div>
  5481. <img src="../../../assets/icon/rightInvite.png" class="inviteImg" v-if="isInvite(item.id)" /> -->
  5482. </div>
  5483. </el-checkbox-group>
  5484. </div>
  5485. <span slot="footer" class="dialog-footer">
  5486. <el-button @click="dialogVisibleClass = false">取 消</el-button>
  5487. <el-button type="primary" @click="isAddClass">确定</el-button>
  5488. </span>
  5489. </el-dialog>
  5490. <el-dialog
  5491. title="添加协同成员"
  5492. :visible.sync="dialogVisibleMember"
  5493. :append-to-body="true"
  5494. width="25%"
  5495. height="80%"
  5496. :before-close="handleClose"
  5497. class="addNewPP customWidth"
  5498. >
  5499. <div class="people">
  5500. <div class="people_top">
  5501. <div class="people_top_right">
  5502. <div class="people_search">
  5503. <el-input
  5504. placeholder="搜索成员名称"
  5505. v-model="searchTN"
  5506. @keyup.enter.native="getTeacher"
  5507. ></el-input>
  5508. <div class="search_img" @click="getTeacher">
  5509. <img src="../../../assets/icon/search.png" alt />
  5510. </div>
  5511. </div>
  5512. </div>
  5513. <div class="people_nav">选择成员</div>
  5514. </div>
  5515. <el-checkbox-group
  5516. v-model="checkboxList3"
  5517. class="people_name"
  5518. v-if="teacherJuri.length"
  5519. >
  5520. <el-checkbox
  5521. v-for="item in teacherJuri"
  5522. :key="item.userid"
  5523. :label="item.userid"
  5524. >
  5525. <div class="t_j_box">
  5526. <el-tooltip
  5527. placement="top"
  5528. :content="item.name ? item.name : '暂无姓名'"
  5529. >
  5530. <span>{{ item.name ? item.name : "暂无姓名" }}</span>
  5531. </el-tooltip>
  5532. <el-tooltip placement="top" :content="item.username">
  5533. <span>{{ item.username }}</span>
  5534. </el-tooltip>
  5535. <el-tooltip placement="top" :content="item.school">
  5536. <span>{{ item.school }}</span>
  5537. </el-tooltip>
  5538. </div>
  5539. </el-checkbox>
  5540. </el-checkbox-group>
  5541. <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
  5542. </div>
  5543. <span slot="footer" class="dialog-footer">
  5544. <el-button @click="dialogVisibleMember = false">取 消</el-button>
  5545. <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
  5546. </span>
  5547. </el-dialog>
  5548. <el-dialog
  5549. title="创建问卷"
  5550. :visible.sync="dialogVisible5"
  5551. :append-to-body="true"
  5552. width="800px"
  5553. :before-close="handleClose"
  5554. class="dialog_diy"
  5555. >
  5556. <div>
  5557. <div
  5558. class="a_add_title"
  5559. style="
  5560. display: flex;
  5561. flex-direction: row;
  5562. align-items: center;
  5563. justify-content: center;
  5564. "
  5565. >
  5566. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  5567. <el-input
  5568. v-model="askJson.askTitle"
  5569. placeholder="请输入标题"
  5570. style="width: 400px"
  5571. ></el-input>
  5572. </div>
  5573. <div class="a_addBox">
  5574. <div style="font-size: 16px; color: #c7c7c7">请输入题目内容</div>
  5575. <div
  5576. class="a_add_box"
  5577. v-for="(item1, index1) in askJson.askCount"
  5578. :key="index1"
  5579. >
  5580. <div class="a_add_checkType">
  5581. <span
  5582. :class="{
  5583. active:
  5584. askJson.askJson[index1].type == '1' ||
  5585. !askJson.askJson[index1].type,
  5586. }"
  5587. @click="checkAskType('1', askJson.askJson[index1])"
  5588. >单选题</span
  5589. >
  5590. <span
  5591. :class="{ active: askJson.askJson[index1].type == '2' }"
  5592. @click="checkAskType('2', askJson.askJson[index1])"
  5593. >多选题</span
  5594. >
  5595. </div>
  5596. <div class="a_add_head">
  5597. <div>
  5598. {{ index1 + 1 + "、" }}
  5599. <el-input
  5600. class="a_add_head_input"
  5601. v-model="askJson.askJson[index1].askstitle"
  5602. placeholder="请输入题目..."
  5603. >
  5604. </el-input>
  5605. </div>
  5606. <div class="a_add_head_div">
  5607. <el-button type="primary" size="small" @click="addAskList()"
  5608. >添加</el-button
  5609. >
  5610. <el-button
  5611. type="primary"
  5612. size="small"
  5613. @click="deleteAskList(index1)"
  5614. v-if="askJson.askCount != 1"
  5615. >删除
  5616. </el-button>
  5617. </div>
  5618. </div>
  5619. <div class="a_add_body">
  5620. <div class="a_add_input">
  5621. <el-input
  5622. v-for="(item2, checkIndex) in askJson.askJson[index1].askItem"
  5623. :key="checkIndex"
  5624. v-model="askJson.askJson[index1].checkList[checkIndex]"
  5625. placeholder="请输入选项..."
  5626. style="width: 150px; margin: 10px 10px 0 0"
  5627. ></el-input>
  5628. </div>
  5629. <div class="a_add_body_div">
  5630. <el-button
  5631. style="margin: 10px 0px 0 0"
  5632. type="primary"
  5633. size="small"
  5634. @click="addcheckList(askJson.askJson[index1])"
  5635. >添加</el-button
  5636. >
  5637. <el-button
  5638. type="primary"
  5639. size="small"
  5640. style="margin: 10px 0 0 10px"
  5641. @click="deletecheckList(askJson.askJson[index1])"
  5642. v-if="askJson.askJson[index1].askItem != 1"
  5643. >删除
  5644. </el-button>
  5645. </div>
  5646. </div>
  5647. </div>
  5648. </div>
  5649. </div>
  5650. <span slot="footer" class="dialog-footer">
  5651. <el-button @click="dialogVisible5 = false">取 消</el-button>
  5652. <el-button type="primary" @click="addAsk">确 定</el-button>
  5653. </span>
  5654. </el-dialog>
  5655. <el-dialog
  5656. title="创建选择题"
  5657. :visible.sync="dialogVisibleChoice"
  5658. :append-to-body="true"
  5659. width="800px"
  5660. :before-close="handleClose"
  5661. class="dialog_diy"
  5662. >
  5663. <div>
  5664. <!-- <div class="a_add_title" style="
  5665. display: flex;
  5666. flex-direction: row;
  5667. align-items: center;
  5668. justify-content: center;
  5669. ">
  5670. <div style="margin-right: 20px; font-size: 20px">标题:</div>
  5671. <el-input v-model="testJson.testTitle" placeholder="请输入标题" style="width: 400px"></el-input>
  5672. </div> -->
  5673. <div class="a_addBox">
  5674. <div style="font-size: 16px; color: #c7c7c7">
  5675. 请输入题目内容
  5676. <el-button
  5677. type="primary"
  5678. size="small"
  5679. @click="pasteOption"
  5680. style="margin-left: 10px"
  5681. >智能粘贴</el-button
  5682. >
  5683. </div>
  5684. <div
  5685. class="a_add_box"
  5686. v-for="(item1, index1) in testJson.testCount"
  5687. :key="index1"
  5688. >
  5689. <div class="a_add_checkType">
  5690. <span
  5691. :class="{ active: testJson.testJson[index1].type == '1' }"
  5692. @click="checkTestType('1', testJson.testJson[index1])"
  5693. >单选题</span
  5694. >
  5695. <span
  5696. :class="{ active: testJson.testJson[index1].type == '2' }"
  5697. @click="checkTestType('2', testJson.testJson[index1])"
  5698. >多选题</span
  5699. >
  5700. </div>
  5701. <div class="a_add_head">
  5702. <div class="timuUpImg">
  5703. <div>
  5704. {{ index1 + 1 + "、" }}
  5705. <el-input
  5706. class="a_add_head_input"
  5707. v-model="testJson.testJson[index1].teststitle"
  5708. placeholder="请输入题目..."
  5709. >
  5710. </el-input>
  5711. </div>
  5712. <div class="xzUpImg" @click.stop="addImg($event)">
  5713. <img src="../../../assets/icon/xzUpImg.png" alt="" />
  5714. <input
  5715. type="file"
  5716. accept="image/*"
  5717. style="display: none"
  5718. @change="beforeUploadTiMu($event, index1)"
  5719. />
  5720. </div>
  5721. </div>
  5722. <div class="a_add_head_div">
  5723. <el-button type="primary" size="small" @click="addTestList()"
  5724. >添加</el-button
  5725. >
  5726. <el-button
  5727. type="primary"
  5728. size="small"
  5729. @click="deleteTestList(index1)"
  5730. v-if="testJson.testCount != 1"
  5731. >删除
  5732. </el-button>
  5733. </div>
  5734. </div>
  5735. <div
  5736. class="timuImgBox"
  5737. v-if="
  5738. testJson.testJson[index1].timuList &&
  5739. testJson.testJson[index1].timuList.length
  5740. "
  5741. >
  5742. <div
  5743. v-for="(timg, tIndex) in testJson.testJson[index1].timuList"
  5744. :key="tIndex"
  5745. class="timuImg"
  5746. @click.stop="previewImg(timg.src)"
  5747. >
  5748. <img :src="timg.src" alt="" />
  5749. <div class="deleteWord" @click.stop="deleteM(index1, tIndex)">
  5750. <img src="../../../assets/icon/delete.png" alt="" />
  5751. </div>
  5752. </div>
  5753. </div>
  5754. <div class="a_add_body">
  5755. <div class="a_add_input a_add_input_choice">
  5756. <el-radio-group
  5757. v-model="testJson.testJson[index1].answer"
  5758. v-if="testJson.testJson[index1].type == 1"
  5759. >
  5760. <div class="radioBox">
  5761. <el-radio
  5762. v-for="(item2, checkIndex) in testJson.testJson[index1]
  5763. .testItem"
  5764. :key="checkIndex"
  5765. :label="checkIndex"
  5766. >
  5767. <div style="margin-right: 10px">
  5768. 选项{{ checkIndex + 1 }}
  5769. </div>
  5770. <div
  5771. style="margin-right: 10px; width: 300px"
  5772. v-if="
  5773. testJson.testJson[index1].checkList[checkIndex] &&
  5774. testJson.testJson[index1].checkList[checkIndex]
  5775. .imgType &&
  5776. testJson.testJson[index1].checkList[checkIndex]
  5777. .imgType == 1
  5778. "
  5779. >
  5780. <div
  5781. class="inImg"
  5782. @click.stop="
  5783. previewImg(
  5784. testJson.testJson[index1].checkList[checkIndex]
  5785. .src
  5786. )
  5787. "
  5788. >
  5789. <el-image
  5790. :src="
  5791. testJson.testJson[index1].checkList[checkIndex]
  5792. .src
  5793. "
  5794. lazy
  5795. />
  5796. <!-- <img :src="
  5797. testJson.testJson[index1].checkList[checkIndex]
  5798. .src
  5799. " alt="" /> -->
  5800. </div>
  5801. </div>
  5802. <el-input
  5803. v-else
  5804. v-model="
  5805. testJson.testJson[index1].checkList[checkIndex]
  5806. "
  5807. placeholder="请输入选项..."
  5808. style="width: 300px; margin-right: 10px"
  5809. ></el-input>
  5810. <div class="xzUpImg" @click.stop="addImg($event)">
  5811. <img src="../../../assets/icon/xzUpImg.png" alt="" />
  5812. <input
  5813. type="file"
  5814. accept="image/*"
  5815. style="display: none"
  5816. @change="beforeUploadTi($event, index1, checkIndex)"
  5817. />
  5818. </div>
  5819. </el-radio>
  5820. </div>
  5821. </el-radio-group>
  5822. <el-checkbox-group
  5823. v-model="testJson.testJson[index1].answer"
  5824. v-if="testJson.testJson[index1].type == '2'"
  5825. >
  5826. <div class="radioBox">
  5827. <el-checkbox
  5828. v-for="(item2, checkIndex1) in testJson.testJson[index1]
  5829. .testItem"
  5830. :key="checkIndex1"
  5831. :label="checkIndex1"
  5832. >
  5833. <div style="margin-right: 10px">
  5834. 选项{{ checkIndex1 + 1 }}
  5835. </div>
  5836. <div
  5837. style="margin-right: 10px; width: 300px"
  5838. v-if="
  5839. testJson.testJson[index1].checkList[checkIndex1] &&
  5840. testJson.testJson[index1].checkList[checkIndex1]
  5841. .imgType &&
  5842. testJson.testJson[index1].checkList[checkIndex1]
  5843. .imgType == 1
  5844. "
  5845. >
  5846. <div
  5847. class="inImg"
  5848. @click.stop="
  5849. previewImg(
  5850. testJson.testJson[index1].checkList[checkIndex1]
  5851. .src
  5852. )
  5853. "
  5854. >
  5855. <el-image
  5856. :src="
  5857. testJson.testJson[index1].checkList[checkIndex1]
  5858. .src
  5859. "
  5860. lazy
  5861. />
  5862. <!-- <img :src="
  5863. testJson.testJson[index1].checkList[checkIndex1]
  5864. .src
  5865. " alt="" /> -->
  5866. </div>
  5867. </div>
  5868. <el-input
  5869. v-else
  5870. v-model="
  5871. testJson.testJson[index1].checkList[checkIndex1]
  5872. "
  5873. placeholder="请输入选项..."
  5874. style="width: 300px; margin-right: 10px"
  5875. ></el-input>
  5876. <div class="xzUpImg" @click.stop="addImg($event)">
  5877. <img src="../../../assets/icon/xzUpImg.png" alt="" />
  5878. <input
  5879. type="file"
  5880. accept="image/*"
  5881. style="display: none"
  5882. @change="beforeUploadTi($event, index1, checkIndex1)"
  5883. />
  5884. </div>
  5885. </el-checkbox>
  5886. </div>
  5887. </el-checkbox-group>
  5888. </div>
  5889. <div class="a_add_body_div" style="margin-bottom: 3px">
  5890. <el-button
  5891. type="primary"
  5892. size="small"
  5893. @click="addTcheckList(testJson.testJson[index1])"
  5894. >添加</el-button
  5895. >
  5896. <el-button
  5897. type="primary"
  5898. size="small"
  5899. @click="deleteTcheckList(testJson.testJson[index1])"
  5900. v-if="testJson.testJson[index1].testItem != 1"
  5901. >删除
  5902. </el-button>
  5903. </div>
  5904. </div>
  5905. </div>
  5906. </div>
  5907. </div>
  5908. <span slot="footer" class="dialog-footer">
  5909. <el-button @click="dialogVisibleChoice = false">取 消</el-button>
  5910. <el-button type="primary" @click="addTest">确 定</el-button>
  5911. </span>
  5912. </el-dialog>
  5913. <el-dialog
  5914. title="添加工具"
  5915. :visible.sync="dialogVisible4"
  5916. :append-to-body="true"
  5917. width="600px"
  5918. :before-close="handleClose"
  5919. class="dialog_diy addToolsDia"
  5920. >
  5921. <div class="toolChoose" style="padding: 0 0 0 30px">
  5922. <div class="tools">
  5923. <div
  5924. class="leftTools"
  5925. style="
  5926. width: 95%;
  5927. padding: 0 0 15px 0;
  5928. border-bottom: 1px solid #efefef;
  5929. margin-bottom: 15px;
  5930. "
  5931. v-for="(itemTools, itemToolsIndex) in chapTools"
  5932. :key="itemToolsIndex"
  5933. >
  5934. <div
  5935. style="
  5936. display: flex;
  5937. flex-direction: row;
  5938. align-items: baseline;
  5939. flex-wrap: nowrap;
  5940. justify-content: flex-start;
  5941. position: relative;
  5942. "
  5943. >
  5944. <div class="chooseWho">
  5945. <div
  5946. :class="chapToolsType == 0 ? 'isChooseActive' : ''"
  5947. @click="chapToolsType = 0"
  5948. >
  5949. 互动类
  5950. </div>
  5951. <div
  5952. :class="chapToolsType == 1 ? 'isChooseActive' : ''"
  5953. @click="chapToolsType = 1"
  5954. >
  5955. 思维类
  5956. </div>
  5957. <div
  5958. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  5959. @click="chapToolsType = 2"
  5960. >
  5961. 评价类
  5962. </div>
  5963. <div
  5964. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  5965. @click="chapToolsType = 2"
  5966. >
  5967. 其他
  5968. </div>
  5969. </div>
  5970. </div>
  5971. <div style="min-height: 163px">
  5972. <div class="toolSort" v-if="chapToolsType == 0">
  5973. <div class="tool">
  5974. <div class="whiteBIcon" @click="chapAddTools(8)">
  5975. <img
  5976. src="../../../assets/icon/secondToolList/library.png"
  5977. alt
  5978. />
  5979. <div style="margin: 5px 0">素材库</div>
  5980. </div>
  5981. <div class="check" @click="chapAddTools(8)">
  5982. <img
  5983. src="../../../assets/icon/checkNo.png"
  5984. alt
  5985. v-if="itemTools.tools.indexOf(8) == -1"
  5986. />
  5987. <div class="checkDiv" v-else>
  5988. <img src="../../../assets/icon/checkedIs.png" alt /><span
  5989. >已选择</span
  5990. >
  5991. </div>
  5992. </div>
  5993. </div>
  5994. </div>
  5995. <div class="toolSort" v-if="chapToolsType == 1">
  5996. <div class="tool">
  5997. <div class="whiteBIcon" @click="chapAddTools(7)">
  5998. <img
  5999. src="../../../assets/icon/secondToolList/mindNetwork.png"
  6000. alt
  6001. />
  6002. <div style="margin: 5px 0">思维网格</div>
  6003. </div>
  6004. <div class="check" @click="chapAddTools(7)">
  6005. <img
  6006. src="../../../assets/icon/checkNo.png"
  6007. alt
  6008. v-if="itemTools.tools.indexOf(7) == -1"
  6009. />
  6010. <div class="checkDiv" v-else>
  6011. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6012. >已选择</span
  6013. >
  6014. </div>
  6015. </div>
  6016. </div>
  6017. <div class="tool">
  6018. <div class="whiteBIcon" @click="chapAddTools(1)">
  6019. <img
  6020. src="../../../assets/icon/secondToolList/whiteBoard.png"
  6021. alt
  6022. />
  6023. <div style="margin: 5px 0">电子白板</div>
  6024. </div>
  6025. <div class="check" @click="chapAddTools(1)">
  6026. <img
  6027. src="../../../assets/icon/checkNo.png"
  6028. alt
  6029. v-if="itemTools.tools.indexOf(1) == -1"
  6030. />
  6031. <div class="checkDiv" v-else>
  6032. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6033. >已选择</span
  6034. >
  6035. </div>
  6036. </div>
  6037. </div>
  6038. <div class="tool">
  6039. <div class="whiteBIcon" @click="chapAddTools(2)">
  6040. <img
  6041. src="../../../assets/icon/secondToolList/note.png"
  6042. alt
  6043. />
  6044. <div style="margin: 5px 0">便签</div>
  6045. </div>
  6046. <div class="check" @click="chapAddTools(2)">
  6047. <img
  6048. src="../../../assets/icon/checkNo.png"
  6049. alt
  6050. v-if="itemTools.tools.indexOf(2) == -1"
  6051. />
  6052. <div class="checkDiv" v-else>
  6053. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6054. >已选择</span
  6055. >
  6056. </div>
  6057. </div>
  6058. </div>
  6059. <div class="tool">
  6060. <div class="whiteBIcon" @click="chapAddTools(6)">
  6061. <img
  6062. src="../../../assets/icon/secondToolList/doc.png"
  6063. alt
  6064. />
  6065. <div style="margin: 5px 0">协同文档</div>
  6066. </div>
  6067. <div class="check" @click="chapAddTools(6)">
  6068. <img
  6069. src="../../../assets/icon/checkNo.png"
  6070. alt
  6071. v-if="itemTools.tools.indexOf(6) == -1"
  6072. />
  6073. <div class="checkDiv" v-else>
  6074. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6075. >已选择</span
  6076. >
  6077. </div>
  6078. </div>
  6079. </div>
  6080. <div class="tool">
  6081. <div class="whiteBIcon" @click="chapAddTools(3)">
  6082. <img
  6083. src="../../../assets/icon/secondToolList/mindMapping.png"
  6084. alt
  6085. />
  6086. <div style="margin: 5px 0">思维导图</div>
  6087. </div>
  6088. <div class="check" @click="chapAddTools(3)">
  6089. <img
  6090. src="../../../assets/icon/checkNo.png"
  6091. alt
  6092. v-if="itemTools.tools.indexOf(3) == -1"
  6093. />
  6094. <div class="checkDiv" v-else>
  6095. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6096. >已选择</span
  6097. >
  6098. </div>
  6099. </div>
  6100. </div>
  6101. <div class="tool">
  6102. <div class="whiteBIcon" @click="chapAddTools(31)">
  6103. <img
  6104. src="../../../assets/icon/secondToolList/networkPanel.png"
  6105. alt
  6106. />
  6107. <div style="margin: 5px 0">数学画板</div>
  6108. </div>
  6109. <div class="check" @click="chapAddTools(31)">
  6110. <img
  6111. src="../../../assets/icon/checkNo.png"
  6112. alt
  6113. v-if="itemTools.tools.indexOf(31) == -1"
  6114. />
  6115. <div class="checkDiv" v-else>
  6116. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6117. >已选择</span
  6118. >
  6119. </div>
  6120. </div>
  6121. </div>
  6122. </div>
  6123. <div class="toolSort" v-if="chapToolsType == 2">
  6124. <div class="tool">
  6125. <div class="whiteBIcon" @click="chapAddTools(5)">
  6126. <img
  6127. src="../../../assets/icon/thirdToolList/score.png"
  6128. alt
  6129. />
  6130. <div style="margin: 5px 0">量规评分</div>
  6131. </div>
  6132. <div class="check" @click="chapAddTools(5)">
  6133. <img
  6134. src="../../../assets/icon/checkNo.png"
  6135. alt
  6136. v-if="itemTools.tools.indexOf(5) == -1"
  6137. />
  6138. <div class="checkDiv" v-else>
  6139. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6140. >已选择</span
  6141. >
  6142. </div>
  6143. </div>
  6144. </div>
  6145. <div class="tool">
  6146. <div
  6147. class="whiteBIcon"
  6148. @click="openTools(chapCount, 4, null)"
  6149. >
  6150. <img src="../../../assets/icon/thirdToolList/ask.png" alt />
  6151. <div style="margin: 5px 0">问卷调查</div>
  6152. </div>
  6153. <div class="check" @click="chapAddTools(4)">
  6154. <img
  6155. src="../../../assets/icon/checkNo.png"
  6156. alt
  6157. v-if="itemTools.tools.indexOf(4) == -1"
  6158. />
  6159. <div class="checkDiv" v-else>
  6160. <img src="../../../assets/icon/checkedIs.png" alt /><span
  6161. >已选择</span
  6162. >
  6163. </div>
  6164. </div>
  6165. </div>
  6166. </div>
  6167. </div>
  6168. <div>
  6169. <input
  6170. type="text"
  6171. placeholder="添加工具描述"
  6172. class="binfo_input"
  6173. style="margin: 20px 0; width: 71.5% !important"
  6174. v-model="itemTools.toolDetail"
  6175. />
  6176. </div>
  6177. </div>
  6178. </div>
  6179. </div>
  6180. <span slot="footer" class="dialog-footer">
  6181. <el-button @click="dialogVisible4 = false">取 消</el-button>
  6182. <el-button type="primary" @click="addChaptersDataTools">确定</el-button>
  6183. </span>
  6184. </el-dialog>
  6185. <el-dialog
  6186. title="添加问答"
  6187. :visible.sync="dialogVisible8"
  6188. :append-to-body="true"
  6189. width="500px"
  6190. :before-close="handleClose"
  6191. class="dialog_diy"
  6192. >
  6193. <div>
  6194. <div
  6195. class="a_add_title"
  6196. style="
  6197. display: flex;
  6198. flex-direction: column;
  6199. align-items: flex-start;
  6200. justify-content: center;
  6201. "
  6202. >
  6203. <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
  6204. <el-input
  6205. v-model="answerQ"
  6206. placeholder="请输入您要问的问题"
  6207. ></el-input>
  6208. </div>
  6209. </div>
  6210. <span slot="footer" class="dialog-footer">
  6211. <el-button @click="dialogVisible8 = false">取 消</el-button>
  6212. <el-button type="primary" @click="addAnswer">确 定</el-button>
  6213. </span>
  6214. </el-dialog>
  6215. <el-dialog
  6216. title="添加问题"
  6217. :visible.sync="dialogVisibleMp3"
  6218. :append-to-body="true"
  6219. width="500px"
  6220. :before-close="handleClose"
  6221. class="dialog_diy"
  6222. >
  6223. <div>
  6224. <div
  6225. class="a_add_title"
  6226. style="
  6227. display: flex;
  6228. flex-direction: column;
  6229. align-items: flex-start;
  6230. justify-content: center;
  6231. "
  6232. >
  6233. <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
  6234. <el-input
  6235. v-model="answerQ"
  6236. placeholder="请输入您想要回答的问题"
  6237. ></el-input>
  6238. </div>
  6239. </div>
  6240. <span slot="footer" class="dialog-footer">
  6241. <el-button @click="dialogVisibleMp3 = false">取 消</el-button>
  6242. <el-button type="primary" @click="addMp3Answer">确 定</el-button>
  6243. </span>
  6244. </el-dialog>
  6245. <el-dialog
  6246. title="上传图片"
  6247. :visible.sync="choosePicVisible"
  6248. :append-to-body="true"
  6249. width="500px"
  6250. :before-close="handleClose"
  6251. class="dialog_diy"
  6252. >
  6253. <div>
  6254. <div class="fileCss" style="padding-top: 20px">
  6255. <div>
  6256. <button class="info_btn" @click="addImg($event)">
  6257. 选择本地文件
  6258. <input
  6259. type="file"
  6260. accept="image/*"
  6261. style="display: none"
  6262. @change="beforeUpload1"
  6263. />
  6264. </button>
  6265. </div>
  6266. <div>
  6267. <el-button
  6268. @click="getAllBanner"
  6269. v-if="isSysPic == false && cover.length == 0"
  6270. >选择系统文件</el-button
  6271. >
  6272. <div class="isSysPic" v-if="isSysPic == true && cover.length > 0">
  6273. <img :src="cover[0].url" alt="" />
  6274. <div class="deletePic" @click="deleteSysPic">
  6275. <img src="../../../assets/icon/delete.png" alt="" />
  6276. </div>
  6277. </div>
  6278. </div>
  6279. </div>
  6280. <div class="fileCss">
  6281. <div>选择本地文件</div>
  6282. <div>选择系统文件</div>
  6283. </div>
  6284. </div>
  6285. <span slot="footer" class="dialog-footer">
  6286. <el-button @click="choosePicVisible = false">取 消</el-button>
  6287. <el-button type="primary" @click="choosePicVisible = false"
  6288. >确 定</el-button
  6289. >
  6290. </span>
  6291. </el-dialog>
  6292. <el-dialog
  6293. title="选择系统文件"
  6294. :visible.sync="sysPicVisible"
  6295. :append-to-body="true"
  6296. width="710px"
  6297. :before-close="handleClose"
  6298. class="dialog_diy"
  6299. >
  6300. <div class="cru_selectBox" style="margin: 0">
  6301. <div
  6302. @click="getChoosePic(1)"
  6303. class="cru_select"
  6304. :class="chooseType == 1 ? 'cru_selected' : ''"
  6305. >
  6306. 绘画
  6307. </div>
  6308. <div
  6309. @click="getChoosePic(2)"
  6310. class="cru_select"
  6311. :class="chooseType == 2 ? 'cru_selected' : ''"
  6312. >
  6313. 科技
  6314. </div>
  6315. <div
  6316. @click="getChoosePic(3)"
  6317. class="cru_select"
  6318. :class="chooseType == 3 ? 'cru_selected' : ''"
  6319. >
  6320. 人文
  6321. </div>
  6322. <div
  6323. @click="getChoosePic(4)"
  6324. class="cru_select"
  6325. :class="chooseType == 4 ? 'cru_selected' : ''"
  6326. >
  6327. 艺术
  6328. </div>
  6329. </div>
  6330. <div class="sysPicBox">
  6331. <div v-for="(sys, sysIndex) in sysPic" :key="sysIndex" class="sysPic">
  6332. <img :src="sys.poster" alt="" @click="chooseSysPic(sys.poster)" />
  6333. </div>
  6334. </div>
  6335. <span slot="footer" class="dialog-footer">
  6336. <el-button @click="sysPicVisible = false">取 消</el-button>
  6337. <el-button type="primary">确 定</el-button>
  6338. </span>
  6339. </el-dialog>
  6340. <el-dialog
  6341. title="选择填空"
  6342. :visible.sync="dialogVisibleSelect"
  6343. :append-to-body="true"
  6344. width="800px"
  6345. :before-close="handleClose"
  6346. class="dialog_diy dialog_diy3"
  6347. >
  6348. <div v-if="selectJson">
  6349. <div class="select_box1" v-if="selectSteps == 1">
  6350. <div class="select_box1_img">
  6351. <div class="select_box1_title">
  6352. <span>上传题目图片</span
  6353. ><span>提示:请将题目以图片的方式上传</span>
  6354. </div>
  6355. <div class="select_box1_add_img">
  6356. <div
  6357. class="uploadFm"
  6358. @click="addImg($event)"
  6359. v-if="!selectJson.url"
  6360. >
  6361. <input
  6362. type="file"
  6363. accept="image/*"
  6364. style="display: none"
  6365. @change="beforeUploadSelect"
  6366. />
  6367. <img src="../../../assets/icon/addPoster.png" alt="" />
  6368. </div>
  6369. <div class="isSysPic" v-else>
  6370. <img :src="selectJson.url" alt="" />
  6371. <div class="deletePic" @click="deleteSelectPic">
  6372. <img src="../../../assets/icon/delete.png" alt="" />
  6373. </div>
  6374. </div>
  6375. </div>
  6376. </div>
  6377. <div class="select_box1_select">
  6378. <div class="select_box1_title">
  6379. <span>添加选项</span><span>提示:请输入题目选项</span>
  6380. </div>
  6381. <div class="select_box1_select_box">
  6382. <el-input
  6383. v-for="(item2, checkIndex) in selectJson.select"
  6384. :key="checkIndex"
  6385. v-model="selectJson.select[checkIndex]"
  6386. placeholder="请输入选项..."
  6387. style="width: 150px; margin: 10px 10px 0 0"
  6388. ></el-input>
  6389. <div class="select_box1_select_box_add">
  6390. <el-button
  6391. style="margin: 10px 0px 0 0"
  6392. type="primary"
  6393. size="small"
  6394. @click="addSelectList(selectJson)"
  6395. >
  6396. 添加</el-button
  6397. >
  6398. <el-button
  6399. type="primary"
  6400. size="small"
  6401. style="margin: 10px 0 0 0"
  6402. @click="deleteSelectList(selectJson)"
  6403. v-if="selectJson.select && selectJson.select.length > 0"
  6404. >删除</el-button
  6405. >
  6406. </div>
  6407. </div>
  6408. </div>
  6409. </div>
  6410. <div v-if="selectSteps == 2">
  6411. <div class="select_box2">
  6412. <div class="select_box2_title">设置答案</div>
  6413. <div class="select_box2_box">
  6414. <div class="select_box2_img">
  6415. <img :src="selectJson.url" alt="" />
  6416. </div>
  6417. <div class="select_box2_answer">
  6418. <div class="select_answer_title">根据题目选择对应答案</div>
  6419. <div
  6420. class="select_box2_answer_box"
  6421. v-for="(item2, checkIndex) in selectJson.select"
  6422. :key="checkIndex"
  6423. >
  6424. <span>{{ checkIndex + 1 }}、</span>
  6425. <el-select
  6426. v-model="selectJson.answer[checkIndex]"
  6427. placeholder="请选择正确答案"
  6428. >
  6429. <el-option
  6430. v-for="(e, eIndex) in selectJson.select"
  6431. :key="eIndex"
  6432. :label="e"
  6433. :value="eIndex"
  6434. >
  6435. </el-option>
  6436. </el-select>
  6437. </div>
  6438. </div>
  6439. </div>
  6440. </div>
  6441. </div>
  6442. </div>
  6443. <span slot="footer" class="dialog-footer">
  6444. <el-button
  6445. type="primary"
  6446. @click="nextSelectSteps()"
  6447. v-if="selectSteps == 1"
  6448. >下一步</el-button
  6449. >
  6450. <el-button @click="selectSteps--" v-if="selectSteps == 2"
  6451. >上一步</el-button
  6452. >
  6453. <el-button
  6454. type="primary"
  6455. @click="addSelectAnswer"
  6456. v-if="selectSteps == 2"
  6457. >确 定</el-button
  6458. >
  6459. </span>
  6460. </el-dialog>
  6461. <el-dialog
  6462. title="添加评价"
  6463. :visible.sync="dialogVisibleRate"
  6464. :append-to-body="true"
  6465. width="650px"
  6466. :before-close="handleClose"
  6467. class="dialog_diy"
  6468. >
  6469. <div style="background: #fff; padding: 15px; box-sizing: border-box">
  6470. <div style="font-size: 18px; color: #a9a9a9">请输入个人评价指标:</div>
  6471. <div class="pjCss" style="width: 100%">
  6472. <div
  6473. v-if="rateJson.length"
  6474. class="elist_input"
  6475. style="height: 360px; overflow: auto"
  6476. >
  6477. <div
  6478. v-for="(eItem, eIndex) in rateJson"
  6479. :key="eIndex"
  6480. class="elist_input_box"
  6481. >
  6482. <span style="min-width: 100px; text-align: right"
  6483. >个人评价指标:</span
  6484. >
  6485. <input
  6486. type="input"
  6487. v-model="eItem.value"
  6488. placeholder="填写评价名称"
  6489. />
  6490. <div class="remove" @click="deletRateList(eIndex)"></div>
  6491. <div style="width: 100%; display: flex">
  6492. <span style="min-width: 100px; text-align: right"
  6493. >评星等级:</span
  6494. >
  6495. <el-rate v-model="eItem.score" disabled></el-rate>
  6496. </div>
  6497. <div class="elist_inptu_text" style="align-items: flex-start">
  6498. <span style="min-width: 100px; text-align: right">描述:</span>
  6499. <textarea
  6500. class="rate_textarea"
  6501. :rows="3"
  6502. v-model="eItem.detail"
  6503. placeholder="填写评价描述"
  6504. ></textarea>
  6505. </div>
  6506. </div>
  6507. </div>
  6508. <div class="addToolFun" @click="addRateList()">
  6509. <div class="addToolImg">
  6510. <img src="../../../assets/icon/add.png" alt />
  6511. </div>
  6512. <div>添加</div>
  6513. </div>
  6514. </div>
  6515. </div>
  6516. <span slot="footer" class="dialog-footer">
  6517. <el-button @click="dialogVisibleRate = false">取 消</el-button>
  6518. <el-button type="primary" @click="addRateAnswer">确 定</el-button>
  6519. </span>
  6520. </el-dialog>
  6521. <el-dialog
  6522. title="连词成句设置"
  6523. :visible.sync="dialogVisibleSentence"
  6524. :append-to-body="true"
  6525. width="1000px"
  6526. :before-close="handleClose"
  6527. class="dialog_diy dialog_diy3"
  6528. >
  6529. <div>
  6530. <div class="sentenBox">
  6531. <div class="addSen" @click="addSt">添加题目</div>
  6532. <div
  6533. v-for="(st, stIndex) in sentenceList"
  6534. :key="stIndex"
  6535. style="padding-bottom: 20px"
  6536. >
  6537. <div class="sentenTopBox">
  6538. <div class="sentenTop">
  6539. <div>题目设置</div>
  6540. <div>
  6541. <el-input
  6542. placeholder="请输入卡片内容"
  6543. v-model="st.sentenceTitle"
  6544. ></el-input>
  6545. </div>
  6546. <div @click="addSen(stIndex)">添加</div>
  6547. </div>
  6548. <div
  6549. class="remove1"
  6550. v-if="sentenceList.length > 1"
  6551. @click="deleteSentence(stIndex)"
  6552. ></div>
  6553. </div>
  6554. <div class="cardList">
  6555. <div v-if="st.addSentence.length > 0" class="cardBox">
  6556. <div
  6557. class="isCard"
  6558. v-for="(s, sIndex) in st.addSentence"
  6559. :key="sIndex"
  6560. @click="setRightAnswer(s, stIndex, sIndex)"
  6561. >
  6562. <el-tooltip
  6563. class="item"
  6564. effect="light"
  6565. :content="s"
  6566. placement="top"
  6567. >
  6568. <div>{{ s }}</div>
  6569. </el-tooltip>
  6570. <div
  6571. class="deleteWord"
  6572. @click.stop="deleteS(s, stIndex, sIndex)"
  6573. >
  6574. <img src="../../../assets/icon/delete.png" alt="" />
  6575. </div>
  6576. </div>
  6577. </div>
  6578. <div class="card">
  6579. <img
  6580. src="../../../assets/icon/conSentences/noTitle.png"
  6581. alt=""
  6582. />
  6583. </div>
  6584. </div>
  6585. <div class="rightCardBox">
  6586. <div>正确顺序</div>
  6587. <div class="rightCardList">
  6588. <div v-if="st.rightAnswer.length > 0" class="cardBox">
  6589. <div
  6590. v-for="(r, rIndex) in st.rightAnswer"
  6591. :key="rIndex"
  6592. class="cardCss"
  6593. >
  6594. <div
  6595. class="isCard1"
  6596. @click="returnCard(r, stIndex, rIndex)"
  6597. >
  6598. <el-tooltip
  6599. class="item"
  6600. effect="light"
  6601. :content="r"
  6602. placement="top"
  6603. >
  6604. <div>{{ r }}</div>
  6605. </el-tooltip>
  6606. </div>
  6607. <div>{{ rIndex + 1 }}</div>
  6608. </div>
  6609. </div>
  6610. <div class="card" v-if="st.rightAnswer.length == 0">
  6611. <img
  6612. src="../../../assets/icon/conSentences/noAnswer.png"
  6613. alt=""
  6614. />
  6615. </div>
  6616. </div>
  6617. </div>
  6618. </div>
  6619. </div>
  6620. </div>
  6621. <span slot="footer" class="dialog-footer">
  6622. <el-button @click="dialogVisibleSentence = false">取 消</el-button>
  6623. <el-button type="primary" @click="addSentenceTool">确 定</el-button>
  6624. </span>
  6625. </el-dialog>
  6626. <el-dialog
  6627. title="添加表格"
  6628. :visible.sync="dialogVisibleTable"
  6629. :append-to-body="true"
  6630. width="95%"
  6631. :before-close="handleClose"
  6632. class="dialog_diy"
  6633. >
  6634. <el-form>
  6635. <!-- <el-form-item label="文本标题">
  6636. <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
  6637. </el-form-item> -->
  6638. <div>表格内容</div>
  6639. <Table v-model="tableJson.text" @change="change"></Table>
  6640. </el-form>
  6641. <span slot="footer" class="dialog-footer">
  6642. <!-- <el-button @click="dialogVisibleTable = false">取 消</el-button>
  6643. <el-button type="primary" @click="addTableJson">确定</el-button> -->
  6644. <el-button type="primary" @click="addTableJson">上传模板</el-button>
  6645. </span>
  6646. </el-dialog>
  6647. <el-dialog
  6648. title="添加文档"
  6649. :visible.sync="dialogVisibleWord"
  6650. :append-to-body="true"
  6651. width="800px"
  6652. :before-close="handleClose"
  6653. class="dialog_diy"
  6654. >
  6655. <el-form>
  6656. <!-- <el-form-item label="文本标题">
  6657. <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
  6658. </el-form-item> -->
  6659. <div>文档内容</div>
  6660. <editor-bar v-model="wordJson.text"></editor-bar>
  6661. </el-form>
  6662. <span slot="footer" class="dialog-footer">
  6663. <!-- <el-button @click="dialogVisibleWord = false">取 消</el-button> -->
  6664. <el-button type="primary" @click="addWordJson">上传模板</el-button>
  6665. </span>
  6666. </el-dialog>
  6667. <el-dialog
  6668. title="添加班级"
  6669. :visible.sync="dialogVisibleMoreUpload"
  6670. :append-to-body="true"
  6671. width="30%"
  6672. :before-close="handleClose"
  6673. class="dialog_diy"
  6674. >
  6675. <div
  6676. style="
  6677. width: 100%;
  6678. display: flex;
  6679. flex-direction: row;
  6680. flex-wrap: nowrap;
  6681. align-items: center;
  6682. justify-content: center;
  6683. "
  6684. >
  6685. <div>班级:</div>
  6686. <el-select multiple v-model="uploadJson" placeholder="请选择">
  6687. <el-option
  6688. v-for="item in classJuri"
  6689. :key="item.id"
  6690. :label="item.name"
  6691. :value="item.id"
  6692. >
  6693. </el-option>
  6694. </el-select>
  6695. </div>
  6696. <span slot="footer" class="dialog-footer">
  6697. <el-button @click="dialogVisibleMoreUpload = false">取 消</el-button>
  6698. <el-button type="primary" @click="addMoreUpload">确定</el-button>
  6699. </span>
  6700. </el-dialog>
  6701. <el-dialog
  6702. title="设置随机码"
  6703. :visible.sync="dialogVisibleInvite"
  6704. :append-to-body="true"
  6705. width="360px"
  6706. :before-close="handleClose"
  6707. class="dialog_diy"
  6708. >
  6709. <div
  6710. style="
  6711. width: 100%;
  6712. display: flex;
  6713. flex-direction: row;
  6714. flex-wrap: nowrap;
  6715. align-items: center;
  6716. justify-content: center;
  6717. "
  6718. >
  6719. <div>随机码:</div>
  6720. <el-input
  6721. v-model="icode"
  6722. style="width: 240px"
  6723. placeholder="请输入随机码"
  6724. ></el-input>
  6725. </div>
  6726. <span slot="footer" class="dialog-footer">
  6727. <el-button @click="dialogVisibleInvite = false">取 消</el-button>
  6728. <el-button type="primary" @click="addInvite">确定</el-button>
  6729. </span>
  6730. </el-dialog>
  6731. <el-dialog
  6732. title="添加预设时间"
  6733. :visible.sync="dialogVisiblePreTime"
  6734. :append-to-body="true"
  6735. width="30%"
  6736. :before-close="handleClose"
  6737. class="dialog_diy"
  6738. >
  6739. <div>
  6740. <Time
  6741. :preTime="preTime"
  6742. @updateTimeNum="updateTime"
  6743. v-if="dialogVisiblePreTime"
  6744. ></Time>
  6745. </div>
  6746. <span slot="footer" class="dialog-footer">
  6747. <el-button @click="dialogVisiblePreTime = false">取 消</el-button>
  6748. <el-button type="primary" @click="addPreTime">确定</el-button>
  6749. </span>
  6750. </el-dialog>
  6751. <el-dialog
  6752. title="导入目标"
  6753. :visible.sync="dialogVisiblemb"
  6754. :append-to-body="true"
  6755. width="70%"
  6756. :before-close="handleClose"
  6757. class="dialog_diy"
  6758. >
  6759. <div>
  6760. <div
  6761. style="
  6762. width: 100%;
  6763. display: flex;
  6764. flex-direction: row;
  6765. flex-wrap: nowrap;
  6766. align-content: center;
  6767. align-items: center;
  6768. justify-content: space-between;
  6769. "
  6770. >
  6771. <div
  6772. style="
  6773. display: flex;
  6774. flex-flow: row nowrap;
  6775. align-items: flex-start;
  6776. width: 100%;
  6777. flex-direction: column;
  6778. flex-wrap: nowrap;
  6779. position: relative;
  6780. "
  6781. >
  6782. <div class="e_box">
  6783. <div class="e_card" v-for="(item, index) in evaJuri" :key="index">
  6784. <div class="e_card_picture">
  6785. <img src="../../../assets/e_picture.png" />
  6786. </div>
  6787. <div class="e_card_name">
  6788. <span>{{ item.title }}</span>
  6789. </div>
  6790. <div class="e_card_btn">
  6791. <span @click="checkEva(item.id, 2)">导入</span>
  6792. </div>
  6793. </div>
  6794. <div class="addEva" @click="openT">
  6795. <img src="../../../assets/icon/addEva.png" alt="" />
  6796. </div>
  6797. <div
  6798. v-if="evaJuri.length === 0"
  6799. style="margin: 0 auto; color: #6e6e6e"
  6800. >
  6801. 暂无数据
  6802. </div>
  6803. </div>
  6804. </div>
  6805. </div>
  6806. </div>
  6807. <span slot="footer" class="dialog-footer">
  6808. <el-button @click="dialogVisiblemb = false">取 消</el-button>
  6809. </span>
  6810. </el-dialog>
  6811. <el-dialog
  6812. title="分组设置"
  6813. :visible.sync="dialogVisibleGroup"
  6814. :append-to-body="true"
  6815. width="650px"
  6816. :before-close="handleClose"
  6817. class="dialog_diy"
  6818. >
  6819. <div class="groupBox">
  6820. <div v-if="groupJson.group" class="groupContent">
  6821. <div class="groupTitle">请设置小组数量</div>
  6822. <div
  6823. v-for="(item, index) in groupJson.group"
  6824. :key="index"
  6825. class="groupName"
  6826. >
  6827. <span class="groupn">组{{ index + 1 }}名称:</span>
  6828. <el-input
  6829. v-model="item.name"
  6830. placeholder="请输入名称..."
  6831. style="width: 250px"
  6832. ></el-input>
  6833. <div class="groupBtn">
  6834. <el-button type="primary" size="small" @click="addGroup(index)">
  6835. 添加</el-button
  6836. >
  6837. <el-button
  6838. type="primary"
  6839. size="small"
  6840. @click="deleteGroup(index)"
  6841. v-if="groupJson.group && groupJson.group.length > 1"
  6842. >删除</el-button
  6843. >
  6844. </div>
  6845. </div>
  6846. </div>
  6847. <div class="groupContent">
  6848. <div class="groupTitle">请设置每组人数数量</div>
  6849. <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
  6850. style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
  6851. <el-input-number
  6852. v-model="groupJson.number"
  6853. :controls="false"
  6854. :min="2"
  6855. :max="10"
  6856. placeholder="2-10人以内"
  6857. ></el-input-number>
  6858. </div>
  6859. </div>
  6860. <span slot="footer" class="dialog-footer">
  6861. <el-button @click="dialogVisibleGroup = false">取 消</el-button>
  6862. <el-button type="primary" @click="addGroupJson">确定</el-button>
  6863. </span>
  6864. </el-dialog>
  6865. <interVideo
  6866. :dialogVisibleVideo.sync="dialogVisibleVideo"
  6867. :videoJson="videoJson"
  6868. @add="addVideoJson"
  6869. ></interVideo>
  6870. </div>
  6871. </template>
  6872. <script>
  6873. import "../../../common/aws-sdk-2.235.1.min.js";
  6874. import $ from "jquery";
  6875. import EditorBar from "../../../components/tools/wangEnduit";
  6876. import Table from "../../../components/tools/table";
  6877. import Mind from "../../tools/jsmind2";
  6878. import Time from "../../tools/time.vue";
  6879. import Sunburst from "../../tools/sunburst";
  6880. import SeeBoard from "../../tools/seeBoard";
  6881. import weilaiData from "../components/weilai.js";
  6882. import sourceDialog from "../teacherSource/dialog.vue";
  6883. import interVideo from "../interVideo/index.vue";
  6884. export default {
  6885. components: {
  6886. EditorBar,
  6887. Mind,
  6888. Time,
  6889. Sunburst,
  6890. SeeBoard,
  6891. Table,
  6892. sourceDialog,
  6893. interVideo,
  6894. },
  6895. data() {
  6896. return {
  6897. checkAll: false,
  6898. chooseType: 1,
  6899. checkedCities: [],
  6900. isIndeterminate: true,
  6901. isSysPic: false,
  6902. steps: 1,
  6903. nbOrder: 0,
  6904. courseId: "",
  6905. chapToolsType: 0,
  6906. chapTools: [
  6907. {
  6908. tools: [],
  6909. toolDetail: "",
  6910. },
  6911. ],
  6912. line: "",
  6913. lineTitle: "",
  6914. sysPic: [],
  6915. sentenceList: [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }],
  6916. isPushTitleList: [],
  6917. lineCount: 0,
  6918. lineType: 0,
  6919. chapCount: 0,
  6920. courseName: "",
  6921. isTeacherSee: true,
  6922. courseText: "",
  6923. preTime: 0,
  6924. formLabelWidth: "100px",
  6925. choosePicVisible: false,
  6926. sysPicVisible: false,
  6927. uploadLoading1: false,
  6928. noneBtnImg: false,
  6929. updateBoolean2: false,
  6930. unitIndex: 0,
  6931. taskCount: 0,
  6932. dialogVisible: false,
  6933. dialogVisible1: false,
  6934. dialogVisible2: false,
  6935. dialogVisible3: false,
  6936. dialogVisible4: false,
  6937. dialogVisible5: false,
  6938. dialogVisible6: false,
  6939. dialogVisible7: false,
  6940. dialogVisible8: false,
  6941. dialogVisible9: false,
  6942. dialogVisibleClass: false,
  6943. dialogVisibleMember: false,
  6944. dialogVisibleMp3: false,
  6945. dialogVisibleSelect: false,
  6946. dialogVisibleSentence: false,
  6947. dialogVisibleRate: false,
  6948. dialogVisibleChoice: false,
  6949. dialogVisiblemb: false,
  6950. dialogVisibleInvite: false,
  6951. dialogVisibleSource: false,
  6952. dialogVisibleVideo: false,
  6953. isClickColor: 0,
  6954. publicTool: 0,
  6955. searchPeople: "",
  6956. searchTN: "",
  6957. userid: this.$route.query.userid,
  6958. oid: this.$route.query.oid,
  6959. org: this.$route.query.org,
  6960. role: this.$route.query.role,
  6961. cid: this.$route.query.cid != undefined ? this.$route.query.cid : "",
  6962. dialogVisibleTable: false,
  6963. dialogVisibleWord: false,
  6964. tableJson: { text: "" },
  6965. wordJson: { text: "" },
  6966. dialogVisibleMoreUpload: false,
  6967. dialogVisiblePreTime: false,
  6968. uploadJson: [],
  6969. classJuri: [],
  6970. cover: [], //课程封面
  6971. myWord: [],
  6972. evaJuri: [],
  6973. evalua: "",
  6974. targetArray: [],
  6975. eTitle: "",
  6976. eJson: {},
  6977. fid: "", //一级
  6978. sid: "", //二级
  6979. tid: "", //二级
  6980. typeMode: 1,
  6981. eJSONNum: 0,
  6982. data: {
  6983. meta: {
  6984. name: "example",
  6985. author: "dd@163.com",
  6986. version: "0.2",
  6987. },
  6988. format: "node_array",
  6989. data: [{ id: "root", isroot: true, topic: "" }],
  6990. },
  6991. askJson: {
  6992. askCount: 1,
  6993. askTitle: "",
  6994. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  6995. },
  6996. testJson: {},
  6997. selectJson: {},
  6998. rateJson: [],
  6999. unitJson2: [],
  7000. unitJson: [
  7001. {
  7002. dyName: "", //单元标题
  7003. chapterInfo: [
  7004. {
  7005. isread: false,
  7006. chapterid: this.guid(),
  7007. title: "",
  7008. courseName: "",
  7009. taskJson: [
  7010. {
  7011. task: "",
  7012. taskDetail: "",
  7013. chapterData: [],
  7014. toolChoose: [
  7015. {
  7016. tool: [],
  7017. toolDetail: "",
  7018. toolType: 1,
  7019. askCount: 1,
  7020. askTitle: "",
  7021. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  7022. },
  7023. ],
  7024. toolText: "",
  7025. isShowTools: false,
  7026. askCount: 1,
  7027. isFold: 0,
  7028. askTitle: "",
  7029. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  7030. checkJson: [{ checkCount: [], checkPerent: [] }],
  7031. homeworkList: [],
  7032. },
  7033. ],
  7034. itemCount: 1,
  7035. fileList1: [],
  7036. video: [],
  7037. testData: [],
  7038. pData: [],
  7039. templateArray: [],
  7040. },
  7041. ],
  7042. },
  7043. ],
  7044. studentJuri: [],
  7045. teacherJuri: [],
  7046. checkboxList: [],
  7047. checkboxList2: [],
  7048. checkboxList3: [],
  7049. classSearch: "",
  7050. number: "",
  7051. tTitle: "",
  7052. tdetail: "",
  7053. templateC: {},
  7054. AttText: {},
  7055. AttTextType: 0,
  7056. AttTextIndex: 0,
  7057. cTemplate: "",
  7058. CourseType: [],
  7059. CourseType2: [],
  7060. CourseTypeJson: {},
  7061. courseTypeId: [],
  7062. courseTypeSon: [],
  7063. clearArray: [],
  7064. pTypeCheck: [],
  7065. pTypeCheckName: [],
  7066. loading: false,
  7067. toolType: 1,
  7068. inputShow: true,
  7069. inputShow2: true,
  7070. toolIndex: 0,
  7071. cidType: 0,
  7072. answerQ: "",
  7073. grade: [],
  7074. grade2: [],
  7075. courseUserid: "",
  7076. timer: null,
  7077. timer2: null,
  7078. checkId: "",
  7079. isDelete: 1,
  7080. addindex: 0,
  7081. selectSteps: 1,
  7082. groupJson: {},
  7083. dialogVisibleGroup: false,
  7084. rightBoxHeight: 0,
  7085. ManAarray: [],
  7086. checkBoolean: false,
  7087. inviteCode: [],
  7088. inviteId: "",
  7089. icode: "",
  7090. easyArray: [2, 4],
  7091. sourceData: {},
  7092. videoJson: {},
  7093. };
  7094. },
  7095. computed: {
  7096. // rightBoxHeight: function () {
  7097. // return $(".rightBox")[0] ? $(".rightBox")[0].scrollHeight : 1000
  7098. // },
  7099. offsetLetfPx: function () {
  7100. //addnum可以直接在模板语法里面用,相当于data内的值
  7101. return (
  7102. $(".cru_select")[this.unitIndex] &&
  7103. $(".cru_select")[this.unitIndex].offsetLeft
  7104. );
  7105. },
  7106. getMan2() {
  7107. return function (people) {
  7108. let _people = people;
  7109. let _people2 = "";
  7110. if (this.ManAarray.length) {
  7111. for (var i = 0; i < this.ManAarray.length; i++) {
  7112. if (this.ManAarray[i].userid == people) {
  7113. _people2 = this.ManAarray[i].name;
  7114. break;
  7115. }
  7116. }
  7117. }
  7118. if (people == this.courseUserid) {
  7119. return "";
  7120. }
  7121. return this.ManAarray.length ? _people2 : "";
  7122. };
  7123. },
  7124. isInvite() {
  7125. return function (cid) {
  7126. let array = [];
  7127. for (var i = 0; i < this.inviteCode.length; i++) {
  7128. array.push(this.inviteCode[i].cid);
  7129. }
  7130. return array.indexOf(cid) != -1;
  7131. };
  7132. },
  7133. getInviteCodeC() {
  7134. return function (cid) {
  7135. let array = [];
  7136. for (var i = 0; i < this.inviteCode.length; i++) {
  7137. array.push(this.inviteCode[i].cid);
  7138. }
  7139. return this.inviteCode[array.indexOf(cid)].ic;
  7140. };
  7141. },
  7142. getClassC() {
  7143. return function (c) {
  7144. let _c2 = "";
  7145. if (this.grade.length) {
  7146. for (var i = 0; i < this.grade.length; i++) {
  7147. if (this.grade[i].id == c) {
  7148. _c2 = this.grade[i].name;
  7149. break;
  7150. }
  7151. }
  7152. }
  7153. return this.grade.length ? _c2 : "";
  7154. };
  7155. },
  7156. },
  7157. watch: {
  7158. unitIndex(newValue, oldValue) {
  7159. if (this.isDelete == 2) {
  7160. this.isDelete = 1;
  7161. return;
  7162. }
  7163. if (this.cid != "") {
  7164. let _unitIndex = oldValue;
  7165. if (
  7166. JSON.stringify(this.unitJson2[_unitIndex]) ==
  7167. JSON.stringify(this.unitJson[_unitIndex])
  7168. ) {
  7169. this.$refs.rightboxR.scrollTop = 0;
  7170. return;
  7171. }
  7172. let cPan = 1;
  7173. for (
  7174. var j = 0;
  7175. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  7176. j++
  7177. ) {
  7178. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  7179. j
  7180. ].proVisible = false;
  7181. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  7182. j
  7183. ].proVisible2 = false;
  7184. if (
  7185. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  7186. .length > 1
  7187. ) {
  7188. for (
  7189. var z = 0;
  7190. z <
  7191. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  7192. .length;
  7193. z++
  7194. ) {
  7195. if (
  7196. !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j]
  7197. .toolChoose[z].tool.length
  7198. ) {
  7199. this.$message.error("请把工具添加完整");
  7200. cPan = 2;
  7201. break;
  7202. }
  7203. }
  7204. }
  7205. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  7206. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  7207. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  7208. (ele) => {
  7209. return ele.value != "";
  7210. }
  7211. );
  7212. }
  7213. }
  7214. if (cPan == 2) {
  7215. this.unitIndex = oldValue;
  7216. return;
  7217. }
  7218. for (var i = 0; i < this.unitJson.length; i++) {
  7219. if (this.addindex != i) {
  7220. delete this.unitJson[i].isUpdate;
  7221. }
  7222. }
  7223. this.$refs.rightboxR.scrollTop = 0;
  7224. this.addindex = -1;
  7225. let params = [
  7226. {
  7227. cid: this.cid,
  7228. chapters: JSON.stringify(this.unitJson),
  7229. uid: this.userid,
  7230. unitIndex: _unitIndex,
  7231. },
  7232. ];
  7233. this.ajax
  7234. .post(this.$store.state.api + "updateWorkNew4", params)
  7235. .then((res) => {
  7236. // this.$message({
  7237. // message: "修改成功",
  7238. // type: "success",
  7239. // });
  7240. // this.courseId = this.cid;
  7241. })
  7242. .catch((err) => {
  7243. this.$message.error("网络不佳");
  7244. console.error(err);
  7245. });
  7246. }
  7247. },
  7248. steps(newValue) {
  7249. if (newValue == 4) {
  7250. this.goTo(
  7251. "/course?userid=" +
  7252. this.userid +
  7253. "&oid=" +
  7254. this.oid +
  7255. "&org=" +
  7256. this.org +
  7257. "&role=" +
  7258. this.role
  7259. );
  7260. }
  7261. },
  7262. },
  7263. methods: {
  7264. setMan() {
  7265. // let teacherJuri = this.teacherJuri2;
  7266. this.ManAarray = [];
  7267. let _user = JSON.parse(JSON.stringify(this.checkboxList3));
  7268. if (_user.indexOf(this.courseUserid || this.userid) == -1) {
  7269. _user.push(this.courseUserid || this.userid);
  7270. }
  7271. let params = {
  7272. uid: _user.join(","),
  7273. };
  7274. this.ajax
  7275. .get(this.$store.state.api + "getAllUserById", params)
  7276. .then((res) => {
  7277. let teacherJuri = res.data[0];
  7278. this.ManAarray = teacherJuri;
  7279. })
  7280. .catch((err) => {
  7281. console.error(err);
  7282. });
  7283. },
  7284. previewImg(url) {
  7285. this.$hevueImgPreview(url);
  7286. },
  7287. scrollChange() {
  7288. this.rightBoxHeight = $(".rightBox")[0].scrollHeight;
  7289. // document.querySelector('.course_left').scrollHeight
  7290. // document.querySelector('.stepsBottom2').scrollHeight
  7291. let stepsBottom2 = $(".stepsBottom2")[0].clientHeight;
  7292. // let client = $(".course_left")[0].clientHeight - stepsBottom2
  7293. let client = $(".course_left")[0].clientHeight - stepsBottom2;
  7294. let top = $(".rightBox")[0].scrollTop - 400 - stepsBottom2;
  7295. // if (top < client) {
  7296. // $('.stepsBottom2')[0].style.position = 'absolute'
  7297. // $('.stepsBottom2')[0].style.top = 0 + 'px'
  7298. // // $('.stepsBottom2')[0].style.top = client + 'px'
  7299. // } else
  7300. if (top > 0) {
  7301. let top = $(".rightBox")[0].offsetTop;
  7302. $(".stepsBottom2")[0].style.position = "fixed";
  7303. $(".stepsBottom2")[0].style.top = top + "px";
  7304. // $('.stepsBottom2')[0].style.top = top + 'px'
  7305. } else {
  7306. $(".stepsBottom2")[0].style.position = "absolute";
  7307. $(".stepsBottom2")[0].style.top = "0px";
  7308. }
  7309. },
  7310. handleCheckAllChange(val) {
  7311. this.checkedCities = val ? cityOptions : [];
  7312. this.isIndeterminate = false;
  7313. },
  7314. handleCheckedCitiesChange(value) {
  7315. let checkedCount = value.length;
  7316. this.checkAll = checkedCount === this.cities.length;
  7317. this.isIndeterminate =
  7318. checkedCount > 0 && checkedCount < this.cities.length;
  7319. },
  7320. addHw(e) {
  7321. var el = e.currentTarget;
  7322. el.getElementsByTagName("input")[0].click();
  7323. },
  7324. change(val) {
  7325. console.log(val);
  7326. },
  7327. change2(val) {
  7328. console.log(val);
  7329. this.$forceUpdate();
  7330. },
  7331. handleClose(done) {
  7332. done();
  7333. },
  7334. imgChange2(i, j) {
  7335. var _tmp = this.testJson.testJson[i].checkList[j];
  7336. this.noneBtnImg = _tmp.length >= 1;
  7337. },
  7338. imgChange3(i) {
  7339. var _tmp = this.testJson.testJson[i];
  7340. this.noneBtnImg = _tmp.length >= 1;
  7341. },
  7342. imgChange1(file, fileList, type, itemTaskIndex) {
  7343. if (type == 1) {
  7344. var _tmp = this.cover;
  7345. } else if (
  7346. type == 2 ||
  7347. type == 3 ||
  7348. type == 6 ||
  7349. type == 7 ||
  7350. type == 8
  7351. ) {
  7352. var _tmp =
  7353. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  7354. .chapterData;
  7355. } else if (type == 4) {
  7356. var _tmp = this.unitJson[this.unitIndex].chapterInfo[0].fileList1;
  7357. } else {
  7358. var _tmp =
  7359. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  7360. .homeworkList;
  7361. }
  7362. this.noneBtnImg = _tmp.length >= 1;
  7363. },
  7364. goTo(path) {
  7365. this.$router.push(path);
  7366. },
  7367. guid() {
  7368. var _num,
  7369. i,
  7370. _guid = "";
  7371. for (i = 0; i < 32; i++) {
  7372. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  7373. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  7374. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  7375. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  7376. _guid += "-";
  7377. }
  7378. }
  7379. return _guid;
  7380. },
  7381. lastSteps() {
  7382. this.goTo(
  7383. "/course?userid=" +
  7384. this.userid +
  7385. "&oid=" +
  7386. this.oid +
  7387. "&org=" +
  7388. this.org +
  7389. "&role=" +
  7390. this.role
  7391. );
  7392. },
  7393. nextSteps() {
  7394. if (this.cid == "" || this.cid == undefined) {
  7395. if (this.courseName == "") {
  7396. this.$message.error("请将信息填写完整");
  7397. return;
  7398. } else {
  7399. this.addWork();
  7400. }
  7401. } else {
  7402. if (this.courseName == "") {
  7403. this.$message.error("请将信息填写完整");
  7404. return;
  7405. } else {
  7406. if (this.userid != this.courseUserid && this.role != "1") {
  7407. this.updateWork2();
  7408. } else {
  7409. this.updateWork();
  7410. }
  7411. }
  7412. }
  7413. this.$refs.stepBox.scrollTop = 0;
  7414. },
  7415. unitSet(i) {
  7416. this.unitIndex = i;
  7417. // this.$refs.rightboxR.scrollTop = 0;
  7418. },
  7419. time() {
  7420. if (!this.now) {
  7421. this.now = new Date().getTime();
  7422. return true;
  7423. } else {
  7424. let time = new Date().getTime();
  7425. if (time - this.now > 3000) {
  7426. this.now = time;
  7427. return true;
  7428. } else {
  7429. return false;
  7430. }
  7431. }
  7432. },
  7433. deleteUnit(i) {
  7434. var _this = this;
  7435. if (_this.time()) {
  7436. _this
  7437. .$confirm("确定删除此单元吗?", "提示", {
  7438. confirmButtonText: "确定",
  7439. cancelButtonText: "取消",
  7440. type: "warning",
  7441. })
  7442. .then(() => {
  7443. _this.isDelete = 2;
  7444. // _this.unitIndex = _this.unitIndex - 1;
  7445. _this.deleteWork(_this.unitJson[i].chapterInfo[0].chapterid);
  7446. // _this.$message.success("删除成功");
  7447. })
  7448. .catch(() => {
  7449. return;
  7450. });
  7451. }
  7452. },
  7453. deleteWork(chapid) {
  7454. let params = [
  7455. {
  7456. cid: this.cid,
  7457. chapters: JSON.stringify(this.unitJson),
  7458. uid: this.userid,
  7459. chapid: chapid,
  7460. },
  7461. ];
  7462. this.ajax
  7463. .post(this.$store.state.api + "deleteWork", params)
  7464. .then((res) => {
  7465. this.$message({
  7466. message: "删除成功",
  7467. type: "success",
  7468. });
  7469. this.unitJson.splice(this.unitIndex, 1);
  7470. this.unitIndex = this.unitIndex - 1;
  7471. })
  7472. .catch((err) => {
  7473. this.$message.error("网络不佳");
  7474. console.error(err);
  7475. });
  7476. },
  7477. deleteTool(itemTaskIndex, i) {
  7478. var _this = this;
  7479. if (_this.time()) {
  7480. _this
  7481. .$confirm("确定删除此工具吗?", "提示", {
  7482. confirmButtonText: "确定",
  7483. cancelButtonText: "取消",
  7484. type: "warning",
  7485. })
  7486. .then(() => {
  7487. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  7488. itemTaskIndex
  7489. ].toolChoose.splice(i, 1);
  7490. _this.$message.success("删除成功");
  7491. })
  7492. .catch(() => {
  7493. return;
  7494. });
  7495. }
  7496. },
  7497. deleteSentence(i) {
  7498. var _this = this;
  7499. if (_this.time()) {
  7500. _this
  7501. .$confirm("确定删除此题目吗?", "提示", {
  7502. confirmButtonText: "确定",
  7503. cancelButtonText: "取消",
  7504. type: "warning",
  7505. })
  7506. .then(() => {
  7507. _this.sentenceList.splice(i, 1);
  7508. _this.$message.success("删除成功");
  7509. })
  7510. .catch(() => {
  7511. return;
  7512. });
  7513. }
  7514. },
  7515. deleteS(s, i, j) {
  7516. this.sentenceList[i].addSentence.splice(j, 1);
  7517. if (this.sentenceList[i].rightAnswer.indexOf(s) != -1) {
  7518. var a = this.sentenceList[i].rightAnswer.indexOf(s);
  7519. this.sentenceList[i].rightAnswer.splice(a, 1);
  7520. }
  7521. },
  7522. openT() {
  7523. window.parent.postMessage({ tools: "25" }, "*");
  7524. },
  7525. deleteTask(i) {
  7526. var _this = this;
  7527. //((_this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.length - 1) == i) ? "确定删除此任务吗?" : "切换任务顺序将删除所有工具的提交成果,是否继续此操作?"
  7528. _this
  7529. .$confirm("确定删除此任务吗?", "提示", {
  7530. confirmButtonText: "确定",
  7531. cancelButtonText: "取消",
  7532. type: "warning",
  7533. })
  7534. .then(() => {
  7535. if (i == 0) {
  7536. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  7537. i + 1
  7538. ].chapterData = JSON.parse(
  7539. JSON.stringify(
  7540. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[i]
  7541. .chapterData
  7542. )
  7543. );
  7544. }
  7545. _this.$forceUpdate();
  7546. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(i, 1);
  7547. _this.$message.success("删除成功");
  7548. // this.$nextTick(() => {
  7549. // $('.stepsBottom2')[0].style.transition = 'unset'
  7550. // setTimeout(() => {
  7551. // let stepsBottom2 = $(".stepsBottom2")[0].clientHeight
  7552. // let client = $(".basic_box2")[0].clientHeight - stepsBottom2 - 100
  7553. // let top = $('.stepsBottom2')[0].offsetTop - 20
  7554. // if (top > client) {
  7555. // $('.stepsBottom2')[0].style.top = client + 'px'
  7556. // }
  7557. // $('.stepsBottom2')[0].style.transition = 'all .5s'
  7558. // this.$forceUpdate()
  7559. // }, 500)
  7560. // })
  7561. })
  7562. .catch(() => {
  7563. return;
  7564. });
  7565. },
  7566. handlePictureCardPreview(file) {
  7567. this.dialogImageUrl = file.url;
  7568. },
  7569. clean(i, c) {
  7570. this.unitJson[this.unitIndex].chapterInfo[i].fileList1.splice(c, 1);
  7571. },
  7572. handle_remove1(file, fileList, type) {
  7573. var _tmp = this.cover;
  7574. // for (var i = 0, len = _tmp.length; i < len; i++) {
  7575. // if (_tmp[i].uid == file.uid) {
  7576. // _tmp.splice(i, 1);
  7577. // break;
  7578. // }
  7579. // this.cover = _tmp;
  7580. // }
  7581. this.cover = [];
  7582. this.noneBtnImg = this.cover.length >= 1;
  7583. this.isSysPic = false;
  7584. this.$forceUpdate();
  7585. },
  7586. addImg(e) {
  7587. var el = e.currentTarget;
  7588. el.getElementsByTagName("input")[0].click();
  7589. e.target.value = "";
  7590. },
  7591. addChaptersTools(i) {
  7592. this.chapTools = [
  7593. {
  7594. tools: [],
  7595. toolDetail: "",
  7596. },
  7597. ];
  7598. this.chapCount = i;
  7599. this.dialogVisible4 = true;
  7600. },
  7601. isNoFinsh() {
  7602. this.$message.warning("功能正在开发中");
  7603. },
  7604. addAttText(i) {
  7605. this.AttText = {
  7606. title: "",
  7607. text: "",
  7608. };
  7609. this.taskCount = i;
  7610. this.AttTextType = 0;
  7611. this.$forceUpdate();
  7612. this.dialogVisible6 = true;
  7613. },
  7614. openLine(i) {
  7615. this.line = "";
  7616. this.lineCount = i;
  7617. this.lineType = 0;
  7618. this.$forceUpdate();
  7619. this.dialogVisible7 = true;
  7620. },
  7621. pasteLine(i) {
  7622. navigator.clipboard
  7623. .readText()
  7624. .then((v) => {
  7625. console.log("获取剪贴板成功:", v);
  7626. const html = v;
  7627. const regex = /src="(.*?)"/g;
  7628. const match = regex.exec(html);
  7629. if (match && match[1]) {
  7630. console.log(match[1]);
  7631. this.$message.success("粘贴成功");
  7632. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7633. i
  7634. ].chapterData.push({
  7635. name: "链接",
  7636. title: "嵌入代码",
  7637. url: match[1],
  7638. type: 8,
  7639. });
  7640. } else {
  7641. // console.log("未找到包含 src 属性的 iframe");
  7642. this.$message.error("没有找到粘贴的链接");
  7643. }
  7644. })
  7645. .catch((v) => {
  7646. console.log("获取剪贴板失败: ", v);
  7647. });
  7648. },
  7649. openSource(i) {
  7650. this.lineCount = i;
  7651. this.sourceData = {};
  7652. this.dialogVisibleSource = true;
  7653. },
  7654. addSource() {
  7655. if (!Object.keys(this.sourceData).length) {
  7656. this.$message.error("请选择要上传的资源");
  7657. return;
  7658. }
  7659. let keys = Object.keys(this.sourceData);
  7660. for (var i = 0; i < keys.length; i++) {
  7661. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  7662. this.lineCount
  7663. ].chapterData.push({
  7664. name: "链接",
  7665. title: this.sourceData[keys[i]].name,
  7666. url: this.sourceData[keys[i]].url,
  7667. type: 8,
  7668. });
  7669. }
  7670. this.$forceUpdate();
  7671. this.dialogVisibleSource = false;
  7672. },
  7673. deleteM(i, j) {
  7674. this.testJson.testJson[i].timuList.splice(j, 1);
  7675. },
  7676. beforeUploadTiMu(event, i) {
  7677. const loading = this.openLoading();
  7678. var file = event.target.files[0];
  7679. var credentials = {
  7680. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7681. secretAccessKey: "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",
  7682. }; //秘钥形式的登录上传
  7683. window.AWS.config.update(credentials);
  7684. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7685. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7686. var _this = this;
  7687. if (file) {
  7688. var params = {
  7689. Key:
  7690. file.name.split(".")[0] +
  7691. new Date().getTime() +
  7692. "." +
  7693. file.name.split(".")[file.name.split(".").length - 1],
  7694. ContentType: file.type,
  7695. Body: file,
  7696. "Access-Control-Allow-Credentials": "*",
  7697. ACL: "public-read",
  7698. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  7699. var options = {
  7700. partSize: 2048 * 1024 * 1024,
  7701. queueSize: 2,
  7702. leavePartsOnError: true,
  7703. };
  7704. bucket
  7705. .upload(params, options)
  7706. .on("httpUploadProgress", function (evt) {
  7707. //这里可以写进度条
  7708. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  7709. })
  7710. .send(function (err, data) {
  7711. loading.close();
  7712. if (err) {
  7713. _this.$message.error("上传失败");
  7714. } else {
  7715. if (_this.testJson.testJson[i].timuList) {
  7716. _this.testJson.testJson[i].timuList.push({
  7717. src: data.Location,
  7718. });
  7719. } else {
  7720. _this.testJson.testJson[i].timuList = [];
  7721. _this.testJson.testJson[i].timuList.push({
  7722. src: data.Location,
  7723. });
  7724. }
  7725. _this.imgChange3(i);
  7726. _this.$forceUpdate();
  7727. }
  7728. });
  7729. }
  7730. },
  7731. beforeUploadTi(event, i, j) {
  7732. const loading = this.openLoading();
  7733. var file = event.target.files[0];
  7734. var credentials = {
  7735. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7736. secretAccessKey: "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",
  7737. }; //秘钥形式的登录上传
  7738. window.AWS.config.update(credentials);
  7739. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7740. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7741. var _this = this;
  7742. if (file) {
  7743. var params = {
  7744. Key:
  7745. file.name.split(".")[0] +
  7746. new Date().getTime() +
  7747. "." +
  7748. file.name.split(".")[file.name.split(".").length - 1],
  7749. ContentType: file.type,
  7750. Body: file,
  7751. "Access-Control-Allow-Credentials": "*",
  7752. ACL: "public-read",
  7753. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  7754. var options = {
  7755. partSize: 2048 * 1024 * 1024,
  7756. queueSize: 2,
  7757. leavePartsOnError: true,
  7758. };
  7759. bucket
  7760. .upload(params, options)
  7761. .on("httpUploadProgress", function (evt) {
  7762. //这里可以写进度条
  7763. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  7764. })
  7765. .send(function (err, data) {
  7766. loading.close();
  7767. if (err) {
  7768. _this.$message.error("上传失败");
  7769. } else {
  7770. _this.testJson.testJson[i].checkList[j] = {};
  7771. _this.testJson.testJson[i].checkList[j].src = data.Location;
  7772. _this.testJson.testJson[i].checkList[j].imgType = 1;
  7773. _this.imgChange2(i, j);
  7774. _this.$forceUpdate();
  7775. }
  7776. });
  7777. }
  7778. },
  7779. beforeUpload1(event, type) {
  7780. // const loading = this.openLoading();
  7781. var file = event.target.files[0];
  7782. var credentials = {
  7783. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7784. secretAccessKey: "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",
  7785. }; //秘钥形式的登录上传
  7786. window.AWS.config.update(credentials);
  7787. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7788. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7789. var _this = this;
  7790. if (file) {
  7791. var params = {
  7792. Key:
  7793. file.name.split(".")[0] +
  7794. new Date().getTime() +
  7795. "." +
  7796. file.name.split(".")[file.name.split(".").length - 1],
  7797. ContentType: file.type,
  7798. Body: file,
  7799. "Access-Control-Allow-Credentials": "*",
  7800. ACL: "public-read",
  7801. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  7802. var options = {
  7803. partSize: 2048 * 1024 * 1024,
  7804. queueSize: 2,
  7805. leavePartsOnError: true,
  7806. };
  7807. bucket
  7808. .upload(params, options)
  7809. .on("httpUploadProgress", function (evt) {
  7810. //这里可以写进度条
  7811. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  7812. })
  7813. .send(function (err, data) {
  7814. // loading.close();
  7815. if (err) {
  7816. // var a = _this.$refs.upload1.uploadFiles;
  7817. // a.splice(a.length - 1, a.length);
  7818. _this.$message.error("上传失败");
  7819. } else {
  7820. _this.cover.push({
  7821. name: file.name,
  7822. url: data.Location,
  7823. uid: file.uid,
  7824. });
  7825. _this.imgChange1(null, null, 1, null);
  7826. _this.choosePicVisible = false;
  7827. console.log(data.Location);
  7828. }
  7829. });
  7830. }
  7831. },
  7832. beforeUploadSelect(event, type) {
  7833. // const loading = this.openLoading();
  7834. var file = event.target.files[0];
  7835. var credentials = {
  7836. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7837. secretAccessKey: "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",
  7838. }; //秘钥形式的登录上传
  7839. window.AWS.config.update(credentials);
  7840. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7841. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7842. var _this = this;
  7843. if (file) {
  7844. var params = {
  7845. Key:
  7846. file.name.split(".")[0] +
  7847. new Date().getTime() +
  7848. "." +
  7849. file.name.split(".")[file.name.split(".").length - 1],
  7850. ContentType: file.type,
  7851. Body: file,
  7852. "Access-Control-Allow-Credentials": "*",
  7853. ACL: "public-read",
  7854. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  7855. var options = {
  7856. partSize: 2048 * 1024 * 1024,
  7857. queueSize: 2,
  7858. leavePartsOnError: true,
  7859. };
  7860. bucket
  7861. .upload(params, options)
  7862. .on("httpUploadProgress", function (evt) {
  7863. //这里可以写进度条
  7864. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  7865. })
  7866. .send(function (err, data) {
  7867. // loading.close();
  7868. if (err) {
  7869. _this.$message.error("上传失败");
  7870. } else {
  7871. _this.selectJson.url = data.Location;
  7872. console.log(data.Location);
  7873. }
  7874. });
  7875. }
  7876. },
  7877. chooseSysPic(p) {
  7878. this.cover.push({
  7879. name: "系统图片.png",
  7880. url: p,
  7881. });
  7882. this.imgChange1(null, null, 1, null);
  7883. this.isSysPic = true;
  7884. this.sysPicVisible = false;
  7885. },
  7886. beforeUpload(data) {
  7887. this.$refs.upload1.uploadFiles;
  7888. this.uploadLoading1 = true;
  7889. var file = data.file;
  7890. var credentials = {
  7891. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7892. secretAccessKey: "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",
  7893. }; //秘钥形式的登录上传
  7894. window.AWS.config.update(credentials);
  7895. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7896. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7897. var _this = this;
  7898. if (file) {
  7899. var params = {
  7900. Key:
  7901. file.name.split(".")[0] +
  7902. new Date().getTime() +
  7903. "." +
  7904. file.name.split(".")[file.name.split(".").length - 1],
  7905. ContentType: file.type,
  7906. Body: file,
  7907. "Access-Control-Allow-Credentials": "*",
  7908. ACL: "public-read",
  7909. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  7910. var options = {
  7911. partSize: 2048 * 1024 * 1024,
  7912. queueSize: 2,
  7913. leavePartsOnError: true,
  7914. };
  7915. bucket
  7916. .upload(params, options)
  7917. .on("httpUploadProgress", function (evt) {
  7918. //这里可以写进度条
  7919. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  7920. })
  7921. .send(function (err, data) {
  7922. _this.uploadLoading1 = false;
  7923. if (err) {
  7924. // var a = _this.$refs.upload1.uploadFiles;
  7925. // a.splice(a.length - 1, a.length);
  7926. _this.$message.error("上传失败");
  7927. } else {
  7928. //上传成功处理
  7929. _this.unitJson[_this.unitIndex].chapterInfo[0].fileList1.push({
  7930. name: file.name,
  7931. url: data.Location,
  7932. uid: file.uid,
  7933. });
  7934. _this.imgChange();
  7935. console.log(data.Location);
  7936. }
  7937. });
  7938. }
  7939. },
  7940. onExceed() {
  7941. this.$message.error("课程封面仅支持上传一张,请删除后再进行上传");
  7942. },
  7943. beforeUpload2(event, unitIndex, type, itemTaskIndex) {
  7944. // const loading = this.openLoading();
  7945. var file = event.target.files[0];
  7946. var credentials = {
  7947. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  7948. secretAccessKey: "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",
  7949. }; //秘钥形式的登录上传
  7950. window.AWS.config.update(credentials);
  7951. window.AWS.config.region = "cn-northwest-1"; //设置区域
  7952. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  7953. var _this = this;
  7954. if (type == 3) {
  7955. var b = [
  7956. "DOC",
  7957. "DOCX",
  7958. "DOCM",
  7959. "DOTM",
  7960. "DOTX",
  7961. "PPTX",
  7962. "PPSX",
  7963. "PPT",
  7964. "PPS",
  7965. "PPTM",
  7966. "POTM",
  7967. "PPAM",
  7968. "POTX",
  7969. "PPSM",
  7970. "XLSX",
  7971. "XLS",
  7972. ];
  7973. if (
  7974. b.indexOf(
  7975. file.name
  7976. .split(".")
  7977. [file.name.split(".").length - 1].toLocaleUpperCase()
  7978. ) != -1
  7979. ) {
  7980. if (file.size / 1024 / 1024 > 80) {
  7981. this.$message.error("上传文件大于80兆,请重新选择文件!");
  7982. this.inputShow = true;
  7983. // var a = _this.$refs.upload1.uploadFiles;
  7984. // a.splice(a.length - 1, a.length);
  7985. // loading.close();
  7986. return;
  7987. }
  7988. } else if (
  7989. file.name
  7990. .split(".")
  7991. [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
  7992. ) {
  7993. if (file.size / 1024 / 1024 > 80) {
  7994. this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
  7995. this.inputShow = true;
  7996. // var a = _this.$refs.upload1.uploadFiles;
  7997. // a.splice(a.length - 1, a.length);
  7998. // loading.close();
  7999. return;
  8000. }
  8001. }
  8002. }
  8003. this.inputShow = false;
  8004. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8005. itemTaskIndex
  8006. ].progress = 0;
  8007. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8008. itemTaskIndex
  8009. ].proVisible = true;
  8010. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8011. itemTaskIndex
  8012. ].isFinishSize = 0;
  8013. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8014. itemTaskIndex
  8015. ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
  8016. _this.$forceUpdate();
  8017. if (file) {
  8018. var params = {
  8019. Key:
  8020. file.name.split(".")[0] +
  8021. new Date().getTime() +
  8022. "." +
  8023. file.name.split(".")[file.name.split(".").length - 1],
  8024. ContentType: file.type,
  8025. Body: file,
  8026. "Access-Control-Allow-Credentials": "*",
  8027. ACL: "public-read",
  8028. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  8029. var options = {
  8030. partSize: 2048 * 1024 * 1024,
  8031. queueSize: 2,
  8032. leavePartsOnError: true,
  8033. };
  8034. bucket
  8035. .upload(params, options)
  8036. .on("httpUploadProgress", function (evt) {
  8037. //这里可以写进度条
  8038. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  8039. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8040. itemTaskIndex
  8041. ].progress = parseInt((evt.loaded / evt.total) * 100);
  8042. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8043. itemTaskIndex
  8044. ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
  8045. _this.$forceUpdate();
  8046. })
  8047. .send(function (err, data) {
  8048. // loading.close();
  8049. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8050. itemTaskIndex
  8051. ].progress = 100;
  8052. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8053. itemTaskIndex
  8054. ].isFinishSize =
  8055. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8056. itemTaskIndex
  8057. ].isAllSize;
  8058. _this.$forceUpdate();
  8059. setTimeout(() => {
  8060. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8061. itemTaskIndex
  8062. ].proVisible = false;
  8063. _this.$forceUpdate();
  8064. }, 1000);
  8065. _this.inputShow = true;
  8066. if (err) {
  8067. // var a = _this.$refs.upload1.uploadFiles;
  8068. // a.splice(a.length - 1, a.length);
  8069. _this.$message.error("上传失败");
  8070. } else {
  8071. if (type == 13) {
  8072. let _type = 2;
  8073. var imgA = [
  8074. "png",
  8075. "jpg",
  8076. "jpeg",
  8077. "bmp",
  8078. "gif",
  8079. "webp",
  8080. "psd",
  8081. "svg",
  8082. "tiff",
  8083. ];
  8084. var fileA = [
  8085. "PDF",
  8086. "DOC",
  8087. "DOCX",
  8088. "DOCM",
  8089. "DOTM",
  8090. "DOTX",
  8091. "PPTX",
  8092. "PPSX",
  8093. "PPT",
  8094. "PPS",
  8095. "PPTM",
  8096. "POTM",
  8097. "PPAM",
  8098. "POTX",
  8099. "PPSM",
  8100. "XLSX",
  8101. "XLS",
  8102. ];
  8103. var videoA = [
  8104. "AVI",
  8105. "NAVI",
  8106. "MPEG",
  8107. "ASF",
  8108. "MOV",
  8109. "WMV",
  8110. "3GP",
  8111. "RM",
  8112. "RMVB",
  8113. "FLV",
  8114. "F4V",
  8115. "H.264",
  8116. "H.265",
  8117. "REAL VIDEO",
  8118. "MKV",
  8119. "WebM",
  8120. "HDDVD",
  8121. "MP4",
  8122. "MPG",
  8123. "M4V",
  8124. "MGV",
  8125. "OGV",
  8126. "QTM",
  8127. "STR",
  8128. "AMC",
  8129. "DVX",
  8130. "EVO",
  8131. "DAT",
  8132. "OGG",
  8133. "OGM",
  8134. ];
  8135. if (
  8136. fileA.indexOf(
  8137. data.Location.split(".")[
  8138. data.Location.split(".").length - 1
  8139. ].toLocaleUpperCase()
  8140. ) != -1
  8141. ) {
  8142. _type = 3;
  8143. } else if (
  8144. videoA.indexOf(
  8145. data.Location.split(".")[
  8146. data.Location.split(".").length - 1
  8147. ].toLocaleUpperCase()
  8148. ) != -1
  8149. ) {
  8150. _type = 2;
  8151. } else if (
  8152. imgA.indexOf(
  8153. data.Location.split(".")[
  8154. data.Location.split(".").length - 1
  8155. ].toLocaleLowerCase()
  8156. ) != -1
  8157. ) {
  8158. _type = 13;
  8159. } else {
  8160. _type = 12;
  8161. }
  8162. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8163. itemTaskIndex
  8164. ].chapterData.push({
  8165. name: file.name,
  8166. url: data.Location,
  8167. uid: file.uid,
  8168. type: _type,
  8169. });
  8170. _this.imgChange1(null, null, _type, itemTaskIndex);
  8171. } else if (type == 2 || type == 3 || type == 12) {
  8172. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8173. itemTaskIndex
  8174. ].chapterData.push({
  8175. name: file.name,
  8176. url: data.Location,
  8177. uid: file.uid,
  8178. type: type,
  8179. });
  8180. _this.imgChange1(null, null, type, itemTaskIndex);
  8181. } else if (type == 4) {
  8182. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  8183. itemTaskIndex
  8184. ].fileList1.push({
  8185. name: file.name,
  8186. url: data.Location,
  8187. uid: file.uid,
  8188. });
  8189. _this.imgChange1(null, null, type, itemTaskIndex);
  8190. } else if (type == 5) {
  8191. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  8192. itemTaskIndex
  8193. ].homeworkList.push({
  8194. name: file.name,
  8195. url: data.Location,
  8196. uid: file.uid,
  8197. });
  8198. _this.imgChange1(null, null, type, itemTaskIndex);
  8199. }
  8200. console.log(data.Location);
  8201. }
  8202. });
  8203. }
  8204. },
  8205. beforeUpload3(event, unitIndex, type, itemTaskIndex, string) {
  8206. // const loading = this.openLoading();
  8207. var file = event.target.files[0];
  8208. var credentials = {
  8209. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  8210. secretAccessKey: "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",
  8211. }; //秘钥形式的登录上传
  8212. window.AWS.config.update(credentials);
  8213. window.AWS.config.region = "cn-northwest-1"; //设置区域
  8214. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  8215. var _this = this;
  8216. if (type == 3) {
  8217. var b = [
  8218. "DOC",
  8219. "DOCX",
  8220. "DOCM",
  8221. "DOTM",
  8222. "DOTX",
  8223. "PPTX",
  8224. "PPSX",
  8225. "PPT",
  8226. "PPS",
  8227. "PPTM",
  8228. "POTM",
  8229. "PPAM",
  8230. "POTX",
  8231. "PPSM",
  8232. ];
  8233. if (
  8234. b.indexOf(
  8235. file.name
  8236. .split(".")
  8237. [file.name.split(".").length - 1].toLocaleUpperCase()
  8238. ) != -1
  8239. ) {
  8240. if (file.size / 1024 / 1024 > 80) {
  8241. this.$message.error("上传文件大于80兆,请重新选择文件!");
  8242. this.inputShow = true;
  8243. // var a = _this.$refs.upload1.uploadFiles;
  8244. // a.splice(a.length - 1, a.length);
  8245. // loading.close();
  8246. return;
  8247. }
  8248. } else if (
  8249. file.name
  8250. .split(".")
  8251. [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
  8252. ) {
  8253. if (file.size / 1024 / 1024 > 80) {
  8254. this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
  8255. this.inputShow = true;
  8256. // var a = _this.$refs.upload1.uploadFiles;
  8257. // a.splice(a.length - 1, a.length);
  8258. // loading.close();
  8259. return;
  8260. }
  8261. }
  8262. }
  8263. this.inputShow = false;
  8264. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8265. itemTaskIndex
  8266. ].progress = 0;
  8267. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8268. itemTaskIndex
  8269. ].proVisible = true;
  8270. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8271. itemTaskIndex
  8272. ].isFinishSize = 0;
  8273. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8274. itemTaskIndex
  8275. ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
  8276. _this.$forceUpdate();
  8277. if (file) {
  8278. var params = {
  8279. Key:
  8280. file.name.split(".")[0] +
  8281. new Date().getTime() +
  8282. "." +
  8283. file.name.split(".")[file.name.split(".").length - 1],
  8284. ContentType: file.type,
  8285. Body: file,
  8286. "Access-Control-Allow-Credentials": "*",
  8287. ACL: "public-read",
  8288. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  8289. var options = {
  8290. partSize: 2048 * 1024 * 1024,
  8291. queueSize: 2,
  8292. leavePartsOnError: true,
  8293. };
  8294. bucket
  8295. .upload(params, options)
  8296. .on("httpUploadProgress", function (evt) {
  8297. //这里可以写进度条
  8298. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  8299. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8300. itemTaskIndex
  8301. ].progress = parseInt((evt.loaded / evt.total) * 100);
  8302. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8303. itemTaskIndex
  8304. ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
  8305. _this.$forceUpdate();
  8306. })
  8307. .send(function (err, data) {
  8308. // loading.close();
  8309. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8310. itemTaskIndex
  8311. ].progress = 100;
  8312. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8313. itemTaskIndex
  8314. ].isFinishSize =
  8315. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8316. itemTaskIndex
  8317. ].isAllSize;
  8318. _this.$forceUpdate();
  8319. setTimeout(() => {
  8320. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8321. itemTaskIndex
  8322. ].proVisible = false;
  8323. _this.$forceUpdate();
  8324. }, 1000);
  8325. _this.inputShow = true;
  8326. if (err) {
  8327. // var a = _this.$refs.upload1.uploadFiles;
  8328. // a.splice(a.length - 1, a.length);
  8329. _this.$message.error("上传失败");
  8330. } else {
  8331. if (type == 2 || type == 3) {
  8332. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8333. itemTaskIndex
  8334. ].chapterData.push({
  8335. name: file.name,
  8336. // name: string+''+(_this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8337. // itemTaskIndex
  8338. // ].chapterData.length+1),
  8339. url: data.Location,
  8340. uid: file.uid,
  8341. type: type,
  8342. text: string,
  8343. // text: string + '' + (_this.unitJson[unitIndex].chapterInfo[0].taskJson[
  8344. // itemTaskIndex
  8345. // ].chapterData.length + 1),
  8346. });
  8347. _this.imgChange1(null, null, type, itemTaskIndex);
  8348. } else if (type == 4) {
  8349. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  8350. itemTaskIndex
  8351. ].fileList1.push({
  8352. name: file.name,
  8353. url: data.Location,
  8354. uid: file.uid,
  8355. });
  8356. _this.imgChange1(null, null, type, itemTaskIndex);
  8357. } else if (type == 5) {
  8358. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  8359. itemTaskIndex
  8360. ].homeworkList.push({
  8361. name: file.name,
  8362. url: data.Location,
  8363. uid: file.uid,
  8364. });
  8365. _this.imgChange1(null, null, type, itemTaskIndex);
  8366. }
  8367. console.log(data.Location);
  8368. }
  8369. });
  8370. }
  8371. },
  8372. addunit() {
  8373. this.unitJson.push({
  8374. dyName: "", //单元标题
  8375. isUpdate: 1,
  8376. easy: this.unitJson[this.unitJson.length - 1].easy ? 1 : 0,
  8377. chapterInfo: [
  8378. {
  8379. isread: false,
  8380. chapterid: this.guid(),
  8381. title: "",
  8382. courseName: "",
  8383. taskJson: [
  8384. {
  8385. task: "",
  8386. taskDetail: "",
  8387. chapterData: [],
  8388. toolText: "",
  8389. toolChoose: [
  8390. {
  8391. tool: [],
  8392. toolDetail: "",
  8393. toolType: 1,
  8394. askCount: 1,
  8395. askTitle: "",
  8396. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  8397. },
  8398. ],
  8399. isShowTools: false,
  8400. askCount: 1,
  8401. isFold: 0,
  8402. askTitle: "",
  8403. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  8404. checkJson: [{ checkCount: [], checkPerent: [] }],
  8405. homeworkList: [],
  8406. },
  8407. ],
  8408. itemCount: 1,
  8409. fileList1: [],
  8410. video: [],
  8411. testData: [],
  8412. pData: [],
  8413. templateArray: [],
  8414. },
  8415. ],
  8416. });
  8417. this.addindex = this.unitJson.length - 1;
  8418. setTimeout(() => {
  8419. this.unitIndex = this.unitJson.length - 1;
  8420. this.unitSet(this.unitIndex);
  8421. }, 0);
  8422. },
  8423. addToolFun(itemTaskIndex) {
  8424. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  8425. itemTaskIndex
  8426. ].toolChoose.push({
  8427. tool: [],
  8428. toolDetail: "",
  8429. toolType: 1,
  8430. askCount: 1,
  8431. askTitle: "",
  8432. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  8433. });
  8434. },
  8435. addTaskBorder() {
  8436. this.unitJson[this.unitIndex].chapterInfo[0].taskJson.push({
  8437. task: "",
  8438. taskDetail: "",
  8439. chapterData: [],
  8440. toolChoose: [
  8441. {
  8442. tool: [],
  8443. toolDetail: "",
  8444. toolType: 1,
  8445. askCount: 1,
  8446. askTitle: "",
  8447. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  8448. },
  8449. ],
  8450. toolText: "",
  8451. isShowTools: false,
  8452. askCount: 1,
  8453. isFold: 0,
  8454. askTitle: "",
  8455. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  8456. checkJson: [{ checkCount: [], checkPerent: [] }],
  8457. homeworkList: [],
  8458. });
  8459. },
  8460. add(e, i) {
  8461. var el = e.currentTarget;
  8462. el.getElementsByTagName("input")[0].click();
  8463. },
  8464. fold(i, e, type) {
  8465. var a = e.currentTarget.parentElement.parentElement;
  8466. var b = e.currentTarget.parentElement;
  8467. if (type == 1) {
  8468. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
  8469. a.className += " smallTaskBorder";
  8470. b.className += " funBlockTop";
  8471. } else {
  8472. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
  8473. a.className = "taskBorder";
  8474. b.className = "funBlock";
  8475. }
  8476. console.log(e);
  8477. },
  8478. deleteHomeworkBox(unitIndex, index, i) {
  8479. this.unitJson[unitIndex].chapterInfo[index].taskJson[
  8480. this.taskCount
  8481. ].homeworkList.splice(i, 1);
  8482. },
  8483. getStudent() {
  8484. let params = {
  8485. oid: this.oid,
  8486. cu: "",
  8487. cn: this.searchPeople,
  8488. };
  8489. this.ajax
  8490. .get(this.$store.state.api + "selectStudentAdd", params)
  8491. .then((res) => {
  8492. this.studentJuri = res.data[0];
  8493. })
  8494. .catch((err) => {
  8495. this.isLoading = false;
  8496. console.error(err);
  8497. });
  8498. },
  8499. getTeacher() {
  8500. let params = {
  8501. oid:
  8502. this.org && this.org != "undefined" && this.org != "null"
  8503. ? this.org
  8504. : this.oid,
  8505. cu: "",
  8506. cn: this.searchTN,
  8507. };
  8508. this.ajax
  8509. .get(
  8510. this.$store.state.api +
  8511. (this.org && this.org != "undefined" && this.org != "null"
  8512. ? "selectTeacherAddOrg"
  8513. : "selectTeacherAdd"),
  8514. params
  8515. )
  8516. .then((res) => {
  8517. let teacherJuri = res.data[0];
  8518. for (var i = 0; i < teacherJuri.length; i++) {
  8519. if (teacherJuri[i].userid == this.userid) {
  8520. teacherJuri.splice(i, 1);
  8521. break;
  8522. }
  8523. }
  8524. this.teacherJuri = teacherJuri;
  8525. })
  8526. .catch((err) => {
  8527. console.error(err);
  8528. });
  8529. },
  8530. searchStudent() {
  8531. this.getStudent();
  8532. },
  8533. //获取班级列表
  8534. getClass() {
  8535. let params = {
  8536. oid: this.oid,
  8537. cn: this.classSearch,
  8538. };
  8539. this.ajax
  8540. .get(this.$store.state.api + "selectClassBySchoolSearch", params)
  8541. .then((res) => {
  8542. if (!this.grade.length) {
  8543. this.grade = res.data[0];
  8544. }
  8545. this.grade2 = res.data[0];
  8546. this.classJuri = res.data[0];
  8547. })
  8548. .catch((err) => {
  8549. this.isLoading = false;
  8550. console.error(err);
  8551. });
  8552. },
  8553. CourseType2Change(val) {
  8554. this.pTypeCheck = [];
  8555. for (var i = 0; i < this.CourseType2.length; i++) {
  8556. let typeA = this.CourseType2[i];
  8557. if (val.indexOf(typeA.name) != -1) {
  8558. this.pTypeCheck.push(...typeA.id);
  8559. }
  8560. }
  8561. },
  8562. getChapterData(e, i, j, ic, type) {
  8563. e.stopPropagation();
  8564. this.updataC = true;
  8565. this.icc = ic;
  8566. if ((type == 2 || type == 3) && e.target.tagName !== "INPUT") {
  8567. console.log("还不能下载图片喔");
  8568. }
  8569. },
  8570. deleteChapterData(e, i, j, ic, taskI) {
  8571. e.stopPropagation();
  8572. this.unitJson[i].chapterInfo[j].taskJson[taskI].chapterData.splice(ic, 1);
  8573. },
  8574. updataVideoT(e, i, j, ic) {
  8575. e.stopPropagation();
  8576. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  8577. ic
  8578. ].name = e.target.value;
  8579. },
  8580. upCd(e, i, j, taskCount, ic) {
  8581. e.stopPropagation();
  8582. if (ic == 0) {
  8583. return;
  8584. }
  8585. var a =
  8586. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1];
  8587. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1] =
  8588. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic];
  8589. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
  8590. this.$forceUpdate();
  8591. },
  8592. downCd(e, i, j, taskCount, ic) {
  8593. e.stopPropagation();
  8594. if (
  8595. ic ==
  8596. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData.length -
  8597. 1
  8598. ) {
  8599. return;
  8600. }
  8601. var a =
  8602. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1];
  8603. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1] =
  8604. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic];
  8605. this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
  8606. this.$forceUpdate();
  8607. },
  8608. addWork() {
  8609. let cPan = 1;
  8610. for (var i = 0; i < this.unitJson.length; i++) {
  8611. for (
  8612. var j = 0;
  8613. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  8614. j++
  8615. ) {
  8616. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
  8617. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
  8618. if (
  8619. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  8620. ) {
  8621. for (
  8622. var z = 0;
  8623. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  8624. z++
  8625. ) {
  8626. if (
  8627. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  8628. .length
  8629. ) {
  8630. this.$message.error("请把工具添加完整");
  8631. cPan = 2;
  8632. break;
  8633. }
  8634. }
  8635. }
  8636. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  8637. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  8638. i
  8639. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  8640. return ele.value != "";
  8641. });
  8642. }
  8643. }
  8644. }
  8645. this.inputShow = true;
  8646. if (cPan == 2) {
  8647. return;
  8648. }
  8649. for (var i = 0; i < this.unitJson.length; i++) {
  8650. delete this.unitJson[i].isUpdate;
  8651. }
  8652. let params = [
  8653. {
  8654. uid: this.userid,
  8655. title: this.courseName.replace(/%/g, "%25"),
  8656. brief: this.courseText.replace(/%/g, "%25"),
  8657. cover:
  8658. this.cover.length > 0
  8659. ? JSON.stringify(this.cover)
  8660. : JSON.stringify([
  8661. {
  8662. name: "noBanner.jpg",
  8663. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
  8664. uid: 1656409780264,
  8665. status: "success",
  8666. },
  8667. ]),
  8668. evaId: this.evalua,
  8669. astudent:
  8670. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  8671. see: this.isTeacherSee == true ? 1 : 0,
  8672. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  8673. template: this.cTemplate != "undefined" ? this.cTemplate : "",
  8674. courseType: JSON.stringify(this.courseTypeId),
  8675. ateacher:
  8676. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  8677. inviteCode: JSON.stringify(this.inviteCode),
  8678. },
  8679. ];
  8680. this.ajax
  8681. .post(this.$store.state.api + "addWorkNew2T", params)
  8682. .then((res) => {
  8683. console.log(this.steps);
  8684. // if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  8685. this.$message({
  8686. message: "新增成功",
  8687. type: "success",
  8688. });
  8689. // }
  8690. this.number = res.data.ordernumber;
  8691. this.courseId = res.data.courseId;
  8692. this.cid = res.data.courseId;
  8693. this.courseUserid = this.userid;
  8694. this.islogin = true;
  8695. this.steps = 4;
  8696. })
  8697. .catch((err) => {
  8698. this.$message.error("网络不佳");
  8699. console.error(err);
  8700. });
  8701. },
  8702. goCourse() {
  8703. window.parent.postMessage({ cid: this.courseId, type: "1" }, "*");
  8704. },
  8705. updateWork2() {
  8706. let _unitIndex = this.unitIndex;
  8707. let cPan = 1;
  8708. for (
  8709. var j = 0;
  8710. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  8711. j++
  8712. ) {
  8713. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
  8714. this.unitJson[_unitIndex].chapterInfo[0].taskJson[
  8715. j
  8716. ].proVisible2 = false;
  8717. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  8718. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  8719. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  8720. (ele) => {
  8721. return ele.value != "";
  8722. }
  8723. );
  8724. }
  8725. }
  8726. this.inputShow = true;
  8727. if (cPan == 2) {
  8728. return;
  8729. }
  8730. let params = [
  8731. {
  8732. cid: this.cid,
  8733. chapters: JSON.stringify(this.unitJson),
  8734. uid: this.userid,
  8735. unitIndex: _unitIndex,
  8736. },
  8737. ];
  8738. this.ajax
  8739. .post(this.$store.state.api + "updateWorkNew4", params)
  8740. .then((res) => {
  8741. this.$message({
  8742. message: "修改成功",
  8743. type: "success",
  8744. });
  8745. this.courseId = this.cid;
  8746. })
  8747. .catch((err) => {
  8748. this.$message.error("网络不佳");
  8749. console.error(err);
  8750. });
  8751. },
  8752. updateWork() {
  8753. let cPan = 1;
  8754. for (var i = 0; i < this.unitJson.length; i++) {
  8755. for (
  8756. var j = 0;
  8757. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  8758. j++
  8759. ) {
  8760. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
  8761. this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
  8762. if (
  8763. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  8764. ) {
  8765. for (
  8766. var z = 0;
  8767. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  8768. z++
  8769. ) {
  8770. if (
  8771. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  8772. .length
  8773. ) {
  8774. this.$message.error("请把工具添加完整");
  8775. cPan = 2;
  8776. break;
  8777. }
  8778. }
  8779. }
  8780. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  8781. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  8782. i
  8783. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  8784. return ele.value != "";
  8785. });
  8786. }
  8787. }
  8788. }
  8789. this.inputShow = true;
  8790. if (cPan == 2) {
  8791. return;
  8792. }
  8793. for (var i = 0; i < this.unitJson.length; i++) {
  8794. delete this.unitJson[i].isUpdate;
  8795. }
  8796. let params = [
  8797. {
  8798. cid: this.cid,
  8799. title: this.courseName.replace(/%/g, "%25"),
  8800. brief: this.courseText.replace(/%/g, "%25"),
  8801. cover:
  8802. this.cover.length > 0
  8803. ? JSON.stringify(this.cover)
  8804. : JSON.stringify([
  8805. {
  8806. name: "noBanner.jpg",
  8807. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
  8808. uid: 1656409780264,
  8809. status: "success",
  8810. },
  8811. ]),
  8812. evaId: this.evalua,
  8813. astudent:
  8814. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  8815. see: this.isTeacherSee == true ? 1 : 0,
  8816. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  8817. template: this.myWord != "undefined" ? this.myWord : [],
  8818. uid: this.userid,
  8819. courseType: JSON.stringify(this.courseTypeId),
  8820. ateacher:
  8821. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  8822. inviteCode: JSON.stringify(this.inviteCode),
  8823. },
  8824. ];
  8825. this.ajax
  8826. .post(this.$store.state.api + "updateWorkNew2", params)
  8827. .then((res) => {
  8828. // if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  8829. if (this.cidType == 1) {
  8830. this.$message({
  8831. message: "修改成功",
  8832. type: "success",
  8833. });
  8834. } else {
  8835. this.$message({
  8836. message: "新增成功",
  8837. type: "success",
  8838. });
  8839. }
  8840. // }
  8841. this.number = this.nbOrder;
  8842. this.courseId = this.cid;
  8843. this.steps = 4;
  8844. })
  8845. .catch((err) => {
  8846. this.$message.error("网络不佳");
  8847. console.error(err);
  8848. });
  8849. },
  8850. guid() {
  8851. var _num,
  8852. i,
  8853. _guid = "";
  8854. for (i = 0; i < 32; i++) {
  8855. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  8856. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  8857. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  8858. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  8859. _guid += "-";
  8860. }
  8861. }
  8862. return _guid;
  8863. },
  8864. insertWord() {
  8865. this.dialogVisible1 = true;
  8866. this.updateBoolean2 = false;
  8867. this.tTitle = "";
  8868. this.tdetail = "";
  8869. },
  8870. addWord() {
  8871. this.unitJson[this.unitIndex].chapterInfo[0].fileList1.push({
  8872. name: this.tTitle,
  8873. content: this.tdetail,
  8874. uid: this.guid(),
  8875. });
  8876. this.dialogVisible1 = false;
  8877. },
  8878. upWord() {},
  8879. selectWord(uid, i, c) {
  8880. this.dialogVisible1 = true;
  8881. this.updateBoolean2 = true;
  8882. if (
  8883. uid == this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].uid
  8884. ) {
  8885. this.tTitle =
  8886. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].name;
  8887. this.tdetail =
  8888. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].content;
  8889. }
  8890. },
  8891. isAddPP() {
  8892. if (this.checkboxList.length > 0) {
  8893. this.$message({
  8894. message: "添加成功",
  8895. type: "success",
  8896. });
  8897. this.dialogVisible3 = false;
  8898. } else {
  8899. this.$message({
  8900. message: "请添加课程成员",
  8901. type: "error",
  8902. });
  8903. }
  8904. },
  8905. isAddClass() {
  8906. this.dialogVisibleClass = false;
  8907. },
  8908. isAddPPTeacher() {
  8909. this.dialogVisibleMember = false;
  8910. this.setMan();
  8911. },
  8912. getTemplate() {
  8913. this.ajax
  8914. .get(this.$store.state.api + "getCourseTemplateT", "")
  8915. .then((res) => {
  8916. this.templateArray = res.data[0];
  8917. this.getTemplateOid();
  8918. this.$forceUpdate();
  8919. })
  8920. .catch((err) => {});
  8921. },
  8922. getTemplateOid() {
  8923. let params = {
  8924. oid: this.oid,
  8925. };
  8926. this.ajax
  8927. .get(this.$store.state.api + "getCourseTemplateTByOid", params)
  8928. .then((res) => {
  8929. if (res.data[0].length) {
  8930. this.templateArray = [...res.data[0], ...this.templateArray];
  8931. }
  8932. this.getTemplateOrg();
  8933. this.$forceUpdate();
  8934. })
  8935. .catch((err) => {});
  8936. },
  8937. getTemplateOrg() {
  8938. let params = {
  8939. oid: this.org,
  8940. };
  8941. this.ajax
  8942. .get(this.$store.state.api + "getCourseTemplateTByOid", params)
  8943. .then((res) => {
  8944. if (res.data[0].length) {
  8945. this.templateArray = [...res.data[0], ...this.templateArray];
  8946. }
  8947. this.$forceUpdate();
  8948. })
  8949. .catch((err) => {});
  8950. },
  8951. clearChoose() {
  8952. this.clearArray.splice(this.templateC.id, 1);
  8953. this.dialogVisible2 = false;
  8954. },
  8955. clearAttText() {
  8956. this.AttText = {
  8957. title: "",
  8958. text: "",
  8959. };
  8960. this.dialogVisible6 = false;
  8961. },
  8962. clearLine() {
  8963. this.line = "";
  8964. this.dialogVisible7 = false;
  8965. },
  8966. checkTemplate(res) {
  8967. let _this = this;
  8968. _this
  8969. .$confirm("确定选择此模板吗?", "提示", {
  8970. confirmButtonText: "确定",
  8971. cancelButtonText: "取消",
  8972. type: "warning",
  8973. })
  8974. .then(() => {
  8975. _this.unitJson = JSON.parse(res.chapters);
  8976. _this.steps++;
  8977. setTimeout(() => {
  8978. this.checkEva(this.checkId);
  8979. }, 1000);
  8980. })
  8981. .catch(() => {
  8982. return;
  8983. });
  8984. },
  8985. checkTemplate1(w) {
  8986. this.steps++;
  8987. },
  8988. checkTemplate2() {
  8989. let _this = this;
  8990. _this
  8991. .$confirm("确定选择空模板吗?", "提示", {
  8992. confirmButtonText: "确定",
  8993. cancelButtonText: "取消",
  8994. type: "warning",
  8995. })
  8996. .then(() => {
  8997. _this.unitIndex = 0;
  8998. _this.unitJson = [
  8999. {
  9000. dyName: "", //单元标题
  9001. chapterInfo: [
  9002. {
  9003. isread: false,
  9004. chapterid: this.guid(),
  9005. title: "",
  9006. courseName: "",
  9007. taskJson: [
  9008. {
  9009. task: "",
  9010. taskDetail: "",
  9011. chapterData: [],
  9012. toolText: "",
  9013. toolChoose: [
  9014. {
  9015. tool: [],
  9016. toolDetail: "",
  9017. toolType: 1,
  9018. askCount: 1,
  9019. askTitle: "",
  9020. askJson: [
  9021. { askstitle: "", askItem: 1, checkList: [] },
  9022. ],
  9023. },
  9024. ],
  9025. isShowTools: false,
  9026. askCount: 1,
  9027. isFold: 0,
  9028. askTitle: "",
  9029. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  9030. checkJson: [{ checkCount: [], checkPerent: [] }],
  9031. homeworkList: [],
  9032. },
  9033. ],
  9034. itemCount: 1,
  9035. fileList1: [],
  9036. video: [],
  9037. testData: [],
  9038. pData: [],
  9039. templateArray: [],
  9040. },
  9041. ],
  9042. },
  9043. ];
  9044. this.steps++;
  9045. this.updateWork();
  9046. })
  9047. .catch(() => {
  9048. return;
  9049. });
  9050. },
  9051. checkTemplate3() {
  9052. let _this = this;
  9053. _this
  9054. .$confirm("确定选择简易模式吗?", "提示", {
  9055. confirmButtonText: "确定",
  9056. cancelButtonText: "取消",
  9057. type: "warning",
  9058. })
  9059. .then(() => {
  9060. _this.unitIndex = 0;
  9061. _this.unitJson = [
  9062. {
  9063. dyName: "", //单元标题
  9064. easy: 1,
  9065. chapterInfo: [
  9066. {
  9067. isread: false,
  9068. chapterid: this.guid(),
  9069. title: "",
  9070. courseName: "",
  9071. taskJson: [
  9072. {
  9073. task: "",
  9074. taskDetail: "",
  9075. chapterData: [],
  9076. toolText: "",
  9077. toolChoose: [
  9078. {
  9079. tool: [],
  9080. toolDetail: "",
  9081. toolType: 1,
  9082. askCount: 1,
  9083. askTitle: "",
  9084. askJson: [
  9085. { askstitle: "", askItem: 1, checkList: [] },
  9086. ],
  9087. },
  9088. ],
  9089. isShowTools: false,
  9090. askCount: 1,
  9091. isFold: 0,
  9092. askTitle: "",
  9093. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  9094. checkJson: [{ checkCount: [], checkPerent: [] }],
  9095. homeworkList: [],
  9096. },
  9097. ],
  9098. itemCount: 1,
  9099. fileList1: [],
  9100. video: [],
  9101. testData: [],
  9102. pData: [],
  9103. templateArray: [],
  9104. },
  9105. ],
  9106. },
  9107. ];
  9108. this.steps++;
  9109. this.updateWork();
  9110. })
  9111. .catch(() => {
  9112. return;
  9113. });
  9114. },
  9115. checkTemplate4() {
  9116. let _this = this;
  9117. _this
  9118. .$confirm("确定选择未来小学课程设计吗?", "提示", {
  9119. confirmButtonText: "确定",
  9120. cancelButtonText: "取消",
  9121. type: "warning",
  9122. })
  9123. .then(() => {
  9124. _this.unitIndex = 0;
  9125. _this.unitJson = JSON.parse(JSON.stringify(weilaiData));
  9126. this.steps++;
  9127. this.updateWork();
  9128. })
  9129. .catch(() => {
  9130. return;
  9131. });
  9132. },
  9133. wordNext() {
  9134. this.dialogVisible2 = false;
  9135. },
  9136. isAddOrUpdateAttText() {
  9137. if (this.AttTextType == 0) {
  9138. this.addAttTextMessage();
  9139. } else {
  9140. this.updateAttText();
  9141. }
  9142. },
  9143. isAddOrUpdateLine() {
  9144. if (!this.lineTitle) {
  9145. this.$message.error("请填写链接标题");
  9146. return;
  9147. }
  9148. if (this.lineType == 0) {
  9149. this.addLine();
  9150. } else {
  9151. this.updateLine();
  9152. }
  9153. },
  9154. addAttTextMessage() {
  9155. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9156. this.taskCount
  9157. ].chapterData.push({
  9158. name: this.AttText.title,
  9159. url: this.AttText.text,
  9160. type: 6,
  9161. });
  9162. this.imgChange1(null, null, 6, this.taskCount);
  9163. this.dialogVisible6 = false;
  9164. },
  9165. selectAttText(itemTaskIndex, i) {
  9166. this.AttText.title =
  9167. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9168. itemTaskIndex
  9169. ].chapterData[i].name;
  9170. this.AttText.text =
  9171. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9172. itemTaskIndex
  9173. ].chapterData[i].url;
  9174. this.taskCount = itemTaskIndex;
  9175. this.AttTextIndex = i;
  9176. this.AttTextType = 1;
  9177. this.dialogVisible6 = true;
  9178. },
  9179. updateAttText() {
  9180. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9181. this.taskCount
  9182. ].chapterData[this.AttTextIndex].name = this.AttText.title;
  9183. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9184. this.taskCount
  9185. ].chapterData[this.AttTextIndex].url = this.AttText.text;
  9186. this.dialogVisible6 = false;
  9187. },
  9188. addLine() {
  9189. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9190. this.lineCount
  9191. ].chapterData.push({
  9192. name: "链接",
  9193. title: this.lineTitle,
  9194. url: this.line,
  9195. type: 8,
  9196. });
  9197. this.imgChange1(null, null, 8, this.lineCount);
  9198. this.dialogVisible7 = false;
  9199. },
  9200. selectLine(itemTaskIndex, i) {
  9201. this.line =
  9202. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9203. itemTaskIndex
  9204. ].chapterData[i].url;
  9205. this.lineTitle = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9206. itemTaskIndex
  9207. ].chapterData[i].title
  9208. ? this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9209. .chapterData[i].title
  9210. : "";
  9211. this.taskCount = itemTaskIndex;
  9212. this.lineCount = i;
  9213. this.lineType = 1;
  9214. this.dialogVisible7 = true;
  9215. },
  9216. updateLine() {
  9217. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9218. this.taskCount
  9219. ].chapterData[this.lineCount].url = this.line;
  9220. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9221. this.taskCount
  9222. ].chapterData[this.lineCount].title = this.lineTitle;
  9223. this.dialogVisible7 = false;
  9224. },
  9225. addPP() {
  9226. this.dialogVisible3 = true;
  9227. },
  9228. goTo(path) {
  9229. this.$router.push(path);
  9230. },
  9231. openTools(itemTaskIndex, i, toolIndex) {
  9232. this.toolIndex = toolIndex;
  9233. this.taskCount = itemTaskIndex;
  9234. if (i == 4) {
  9235. if (toolIndex == null) {
  9236. var a =
  9237. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9238. .chapterData;
  9239. for (var i = 0; i < a.length; i++) {
  9240. if (a[i].url == 4 && a[i].askJson.askTitle != "") {
  9241. this.askJson =
  9242. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9243. itemTaskIndex
  9244. ].chapterData[i].askJson;
  9245. }
  9246. }
  9247. } else {
  9248. this.askJson = JSON.parse(
  9249. JSON.stringify(
  9250. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9251. itemTaskIndex
  9252. ].toolChoose[toolIndex]
  9253. )
  9254. );
  9255. }
  9256. this.dialogVisible5 = true;
  9257. } else if (i == 45) {
  9258. if (
  9259. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9260. .toolChoose[toolIndex].testJson
  9261. ) {
  9262. this.testJson = JSON.parse(
  9263. JSON.stringify(
  9264. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9265. itemTaskIndex
  9266. ].toolChoose[toolIndex].testJson
  9267. )
  9268. );
  9269. } else {
  9270. var testJson = {
  9271. testCount: 1,
  9272. testTitle: "",
  9273. testJson: [
  9274. {
  9275. teststitle: "",
  9276. testItem: 1,
  9277. checkList: [],
  9278. timuList: [],
  9279. answer: [],
  9280. type: "1",
  9281. },
  9282. ],
  9283. };
  9284. this.testJson = testJson;
  9285. }
  9286. this.dialogVisibleChoice = true;
  9287. } else if (i == 47) {
  9288. if (
  9289. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9290. .toolChoose[toolIndex].sentenceList
  9291. ) {
  9292. this.sentenceList = JSON.parse(
  9293. JSON.stringify(
  9294. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9295. itemTaskIndex
  9296. ].toolChoose[toolIndex].sentenceList
  9297. )
  9298. );
  9299. } else {
  9300. var sentenceList = [
  9301. { sentenceTitle: "", addSentence: [], rightAnswer: [] },
  9302. ];
  9303. this.sentenceList = sentenceList;
  9304. }
  9305. this.dialogVisibleSentence = true;
  9306. } else if (i == 48) {
  9307. if (
  9308. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9309. .toolChoose[toolIndex].tableJson
  9310. ) {
  9311. this.tableJson = JSON.parse(
  9312. JSON.stringify(
  9313. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9314. itemTaskIndex
  9315. ].toolChoose[toolIndex].tableJson
  9316. )
  9317. );
  9318. } else {
  9319. var tableJson = { text: "" };
  9320. this.tableJson = tableJson;
  9321. }
  9322. this.dialogVisibleTable = true;
  9323. } else if (i == 52) {
  9324. if (
  9325. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9326. .toolChoose[toolIndex].wordJson
  9327. ) {
  9328. this.wordJson = JSON.parse(
  9329. JSON.stringify(
  9330. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9331. itemTaskIndex
  9332. ].toolChoose[toolIndex].wordJson
  9333. )
  9334. );
  9335. } else {
  9336. var wordJson = { text: "" };
  9337. this.wordJson = wordJson;
  9338. }
  9339. this.dialogVisibleWord = true;
  9340. // else if (i == 50) {
  9341. // if (
  9342. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9343. // .toolChoose[toolIndex].uploadJson
  9344. // ) {
  9345. // this.uploadJson = JSON.parse(
  9346. // JSON.stringify(
  9347. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9348. // itemTaskIndex
  9349. // ].toolChoose[toolIndex].uploadJson
  9350. // )
  9351. // );
  9352. // } else {
  9353. // var uploadJson = [];
  9354. // this.uploadJson = uploadJson;
  9355. // }
  9356. // this.dialogVisibleMoreUpload = true;
  9357. // }
  9358. } else if (i == 10) {
  9359. if (
  9360. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9361. .toolChoose[toolIndex].preTime
  9362. ) {
  9363. this.preTime = JSON.parse(
  9364. JSON.stringify(
  9365. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9366. itemTaskIndex
  9367. ].toolChoose[toolIndex].preTime
  9368. )
  9369. );
  9370. } else {
  9371. var preTime = 0;
  9372. this.preTime = preTime;
  9373. }
  9374. this.dialogVisiblePreTime = true;
  9375. } else if (i == 49) {
  9376. if (
  9377. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9378. .toolChoose[toolIndex].groupJson
  9379. ) {
  9380. this.groupJson = JSON.parse(
  9381. JSON.stringify(
  9382. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9383. itemTaskIndex
  9384. ].toolChoose[toolIndex].groupJson
  9385. )
  9386. );
  9387. } else {
  9388. var groupJson = {
  9389. group: [{ name: "第1组" }],
  9390. number: undefined,
  9391. islock: 1,
  9392. };
  9393. this.groupJson = groupJson;
  9394. }
  9395. this.dialogVisibleGroup = true;
  9396. } else if (i == 62) {
  9397. if (
  9398. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9399. .toolChoose[toolIndex].videoJson
  9400. ) {
  9401. this.videoJson = JSON.parse(
  9402. JSON.stringify(
  9403. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9404. itemTaskIndex
  9405. ].toolChoose[toolIndex].videoJson
  9406. )
  9407. );
  9408. } else {
  9409. var videoJson = {
  9410. video: "",
  9411. setting: [],
  9412. };
  9413. this.videoJson = videoJson;
  9414. }
  9415. this.dialogVisibleVideo = true;
  9416. } else if (i == 15) {
  9417. this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9418. itemTaskIndex
  9419. ].toolChoose[toolIndex].answerQ
  9420. ? JSON.parse(
  9421. JSON.stringify(
  9422. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9423. itemTaskIndex
  9424. ].toolChoose[toolIndex].answerQ
  9425. )
  9426. )
  9427. : "";
  9428. this.dialogVisible8 = true;
  9429. } else if (i == 40) {
  9430. this.rateJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9431. itemTaskIndex
  9432. ].toolChoose[toolIndex].rateJson
  9433. ? JSON.parse(
  9434. JSON.stringify(
  9435. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9436. itemTaskIndex
  9437. ].toolChoose[toolIndex].rateJson
  9438. )
  9439. )
  9440. : [{ detail: "", score: 5, value: "" }]; //{detail:"",score:5,value:""}
  9441. this.selectSteps = 1;
  9442. this.dialogVisibleRate = true;
  9443. } else if (i == 42) {
  9444. this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9445. itemTaskIndex
  9446. ].toolChoose[toolIndex].answerQ
  9447. ? JSON.parse(
  9448. JSON.stringify(
  9449. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9450. itemTaskIndex
  9451. ].toolChoose[toolIndex].answerQ
  9452. )
  9453. )
  9454. : "";
  9455. this.dialogVisibleMp3 = true;
  9456. } else if (i == 41) {
  9457. this.selectJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9458. itemTaskIndex
  9459. ].toolChoose[toolIndex].selectJson
  9460. ? JSON.parse(
  9461. JSON.stringify(
  9462. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9463. itemTaskIndex
  9464. ].toolChoose[toolIndex].selectJson
  9465. )
  9466. )
  9467. : { url: "", select: [], answer: [] };
  9468. this.selectSteps = 1;
  9469. this.dialogVisibleSelect = true;
  9470. } else if (i == 3) {
  9471. if (!this.cid) {
  9472. this.$message.error(
  9473. "如果您需要在内容中添加模板,请在修改模式下进行添加。"
  9474. );
  9475. return;
  9476. }
  9477. window.parent.postMessage(
  9478. {
  9479. tools: "3y",
  9480. cid: this.cid,
  9481. stage: this.unitIndex,
  9482. task: itemTaskIndex,
  9483. tool: toolIndex,
  9484. },
  9485. "*"
  9486. );
  9487. } else if (i == 1) {
  9488. if (!this.cid) {
  9489. this.$message.error(
  9490. "如果您需要在内容中添加模板,请在修改模式下进行添加。"
  9491. );
  9492. return;
  9493. }
  9494. window.parent.postMessage(
  9495. {
  9496. tools: "1y",
  9497. cid: this.cid,
  9498. stage: this.unitIndex,
  9499. task: itemTaskIndex,
  9500. tool: toolIndex,
  9501. },
  9502. "*"
  9503. );
  9504. } else if (i == 57) {
  9505. if (!this.cid) {
  9506. this.$message.error(
  9507. "如果您需要在内容中添加模板,请在修改模式下进行添加。"
  9508. );
  9509. return;
  9510. }
  9511. window.parent.postMessage(
  9512. {
  9513. tools: "57y",
  9514. cid: this.cid,
  9515. stage: this.unitIndex,
  9516. task: itemTaskIndex,
  9517. tool: toolIndex,
  9518. },
  9519. "*"
  9520. );
  9521. }
  9522. },
  9523. chapAddTools(i) {
  9524. if (this.chapTools[0].tools.length == 0) {
  9525. this.chapTools[0].tools.push(i);
  9526. } else {
  9527. if (this.chapTools[0].tools.indexOf(i) != -1) {
  9528. this.chapTools[0].tools.splice(this.chapTools[0].tools.indexOf(i), 1);
  9529. } else {
  9530. this.chapTools[0].tools.push(i);
  9531. }
  9532. }
  9533. this.$forceUpdate();
  9534. },
  9535. addChaptersDataTools() {
  9536. if (this.chapTools[0].tools.indexOf(4) != -1) {
  9537. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9538. this.chapCount
  9539. ].chapterData.push({
  9540. name: this.chapTools[0].toolDetail,
  9541. url: this.chapTools[0].tools,
  9542. type: 7,
  9543. askJson: this.askJson,
  9544. });
  9545. } else {
  9546. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9547. this.chapCount
  9548. ].chapterData.push({
  9549. name: this.chapTools[0].toolDetail,
  9550. url: this.chapTools[0].tools,
  9551. type: 7,
  9552. });
  9553. }
  9554. this.imgChange1(null, null, 7, this.chapCount);
  9555. this.dialogVisible4 = false;
  9556. },
  9557. addTools(i, itemTaskIndex, toolIndex) {
  9558. // if (
  9559. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9560. // .toolChoose[toolIndex].tool.length == 0
  9561. // ) {
  9562. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9563. // itemTaskIndex
  9564. // ].toolChoose[toolIndex].tool.push(i);
  9565. // } else {
  9566. // if (
  9567. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9568. // itemTaskIndex
  9569. // ].toolChoose[toolIndex].tool.indexOf(i) != -1
  9570. // ) {
  9571. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9572. // itemTaskIndex
  9573. // ].toolChoose[toolIndex].tool.splice(
  9574. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9575. // itemTaskIndex
  9576. // ].toolChoose[toolIndex].tool.indexOf(i),
  9577. // 1
  9578. // );
  9579. // } else {
  9580. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9581. // itemTaskIndex
  9582. // ].toolChoose[toolIndex].tool.push(i);
  9583. // }
  9584. // console.log(
  9585. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9586. // .toolChoose[toolIndex].tool
  9587. // );
  9588. // }
  9589. if (i == 4) {
  9590. if (
  9591. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9592. .toolChoose[toolIndex].askJson.askTitle == "" ||
  9593. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9594. .toolChoose[toolIndex].askJson[0].askstitle == "" ||
  9595. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9596. .toolChoose[toolIndex].askJson[0].checkList < 2
  9597. ) {
  9598. this.openTools(itemTaskIndex, 4, toolIndex);
  9599. // this.$message({
  9600. // message: "请填写完整问卷内容",
  9601. // type: "error",
  9602. // });
  9603. return;
  9604. }
  9605. }
  9606. if (i == 45) {
  9607. if (
  9608. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9609. .toolChoose[toolIndex].testJson ||
  9610. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9611. .toolChoose[toolIndex].testJson.testJson[0].teststitle == "" ||
  9612. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9613. .toolChoose[toolIndex].testJson.testJson[0].checkList < 2
  9614. ) {
  9615. this.openTools(itemTaskIndex, 45, toolIndex);
  9616. // this.$message({
  9617. // message: "请填写完整问卷内容",
  9618. // type: "error",
  9619. // });
  9620. return;
  9621. }
  9622. }
  9623. if (i == 47) {
  9624. if (
  9625. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9626. .toolChoose[toolIndex].sentenceList ||
  9627. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9628. .toolChoose[toolIndex].sentenceList[0].rightAnswer == 0
  9629. ) {
  9630. this.openTools(itemTaskIndex, 47, toolIndex);
  9631. return;
  9632. }
  9633. }
  9634. // if (i == 48) {
  9635. // if (
  9636. // !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9637. // .toolChoose[toolIndex].tableJson
  9638. // ) {
  9639. // this.openTools(itemTaskIndex, 48, toolIndex);
  9640. // return;
  9641. // }
  9642. // }
  9643. // if (i == 50) {
  9644. // if (
  9645. // !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9646. // .toolChoose[toolIndex].uploadJson
  9647. // ) {
  9648. // this.openTools(itemTaskIndex, 50, toolIndex);
  9649. // return;
  9650. // }
  9651. // }
  9652. if (i == 49) {
  9653. if (
  9654. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9655. .toolChoose[toolIndex].groupJson
  9656. ) {
  9657. this.openTools(itemTaskIndex, 49, toolIndex);
  9658. return;
  9659. }
  9660. }
  9661. if (i == 62) {
  9662. if (
  9663. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9664. .toolChoose[toolIndex].videoJson
  9665. ) {
  9666. this.openTools(itemTaskIndex, 62, toolIndex);
  9667. return;
  9668. }
  9669. }
  9670. if (i == 15) {
  9671. if (
  9672. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9673. .toolChoose[toolIndex].answerQ ||
  9674. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9675. .toolChoose[toolIndex].answerQ == ""
  9676. ) {
  9677. this.openTools(itemTaskIndex, 15, toolIndex);
  9678. // this.$message({
  9679. // message: "请填写问答内容",
  9680. // type: "error",
  9681. // });
  9682. return;
  9683. }
  9684. }
  9685. if (i == 40) {
  9686. if (
  9687. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9688. .toolChoose[toolIndex].rateJson ||
  9689. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9690. .toolChoose[toolIndex].rateJson.length
  9691. ) {
  9692. this.openTools(itemTaskIndex, 40, toolIndex);
  9693. return;
  9694. }
  9695. }
  9696. if (i == 41) {
  9697. if (
  9698. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9699. .toolChoose[toolIndex].selectJson ||
  9700. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9701. .toolChoose[toolIndex].selectJson.url == "" ||
  9702. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9703. .toolChoose[toolIndex].selectJson.select.length ||
  9704. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9705. .toolChoose[toolIndex].selectJson.answer.length
  9706. ) {
  9707. this.openTools(itemTaskIndex, 41, toolIndex);
  9708. return;
  9709. }
  9710. }
  9711. if (i == 42) {
  9712. if (
  9713. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9714. .toolChoose[toolIndex].answerQ ||
  9715. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9716. .toolChoose[toolIndex].answerQ == ""
  9717. ) {
  9718. this.openTools(itemTaskIndex, 42, toolIndex);
  9719. return;
  9720. }
  9721. }
  9722. if (
  9723. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  9724. .toolChoose[toolIndex].tool.length > 0
  9725. ) {
  9726. if (
  9727. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9728. itemTaskIndex
  9729. ].toolChoose[toolIndex].tool.indexOf(i) != -1
  9730. ) {
  9731. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9732. itemTaskIndex
  9733. ].toolChoose[toolIndex].tool.splice(
  9734. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9735. itemTaskIndex
  9736. ].toolChoose[toolIndex].tool.indexOf(i),
  9737. 1
  9738. );
  9739. } else {
  9740. // this.$message({
  9741. // message: "每个工具只能添加一个",
  9742. // type: "error",
  9743. // });
  9744. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9745. itemTaskIndex
  9746. ].toolChoose[toolIndex].tool = [];
  9747. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9748. itemTaskIndex
  9749. ].toolChoose[toolIndex].tool.push(i);
  9750. }
  9751. } else {
  9752. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9753. itemTaskIndex
  9754. ].toolChoose[toolIndex].tool.push(i);
  9755. }
  9756. this.$forceUpdate();
  9757. },
  9758. addAskList() {
  9759. this.askJson.askJson.push({
  9760. askstitle: "",
  9761. askItem: 1,
  9762. checkList: [],
  9763. });
  9764. this.askJson.askCount++;
  9765. },
  9766. addTestList() {
  9767. this.testJson.testJson.push({
  9768. teststitle: "",
  9769. testItem: 1,
  9770. checkList: [],
  9771. timuList: [],
  9772. answer: [],
  9773. type: "1",
  9774. });
  9775. this.testJson.testCount++;
  9776. },
  9777. deleteAskList(index) {
  9778. this.askJson.askJson.splice(index, 1);
  9779. this.askJson.askCount--;
  9780. },
  9781. deleteTestList(index) {
  9782. this.testJson.testJson.splice(index, 1);
  9783. this.testJson.testCount--;
  9784. },
  9785. addcheckList(json) {
  9786. json.checkList.length++;
  9787. json.askItem++;
  9788. },
  9789. deletecheckList(json) {
  9790. json.checkList.length--;
  9791. json.askItem--;
  9792. },
  9793. addTcheckList(json) {
  9794. json.checkList.length++;
  9795. json.testItem++;
  9796. },
  9797. deleteTcheckList(json) {
  9798. json.checkList.length--;
  9799. json.testItem--;
  9800. },
  9801. checkTestType(type, json) {
  9802. json.type = type;
  9803. json.answer = [];
  9804. },
  9805. checkAskType(type, json) {
  9806. json.type = type;
  9807. json.checkList = [];
  9808. },
  9809. addSelectList(json) {
  9810. json.select.push("");
  9811. json.answer.push("");
  9812. },
  9813. deleteSelectList(json) {
  9814. // json.select.length--;
  9815. // json.answer.length--;
  9816. json.select.splice(json.select.length - 1, 1);
  9817. json.answer.splice(json.answer.length - 1, 1);
  9818. },
  9819. addAsk() {
  9820. if (this.askJson.askTitle === "") {
  9821. this.$message.error("标题不能为空!");
  9822. return;
  9823. }
  9824. var aj = this.askJson.askJson;
  9825. var b = 1;
  9826. for (var i = 0; i < aj.length; i++) {
  9827. if (aj[i].askstitle === "") {
  9828. var a = 1;
  9829. for (let index = 0; index < aj[i].askItem; index++) {
  9830. const element = aj[i].checkList[index]
  9831. ? aj[i].checkList[index]
  9832. : "";
  9833. if (element != "") {
  9834. b++;
  9835. this.$message.error("填写了选项,题目不能为空!");
  9836. return;
  9837. } else {
  9838. a++;
  9839. }
  9840. }
  9841. if (b == 1) {
  9842. this.$message.error("至少填写一个问题");
  9843. return;
  9844. }
  9845. } else if (aj[i].askstitle != "") {
  9846. for (let index = 0; index < aj[i].askItem; index++) {
  9847. const element = aj[i].checkList[index]
  9848. ? aj[i].checkList[index]
  9849. : "";
  9850. var index = 0;
  9851. for (var z = 0; z < aj[i].checkList.length; z++) {
  9852. var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
  9853. if (checkC != "") {
  9854. index++;
  9855. } else {
  9856. this.$message.error("选项不能为空!");
  9857. return;
  9858. }
  9859. }
  9860. b++;
  9861. if (index < 2) {
  9862. this.$message.error("填写了的题目,选项至少要有两项!");
  9863. return;
  9864. }
  9865. }
  9866. }
  9867. }
  9868. this.askJson.askJson = this.askJson.askJson.filter((el) => {
  9869. var elc = el.checkList.filter((element) => {
  9870. return element != "";
  9871. });
  9872. return el.askstitle != "" && elc.length != 0;
  9873. });
  9874. if (!this.dialogVisible4) {
  9875. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9876. this.taskCount
  9877. ].toolChoose[this.toolIndex] = this.askJson;
  9878. }
  9879. this.dialogVisible5 = false;
  9880. if (
  9881. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  9882. .toolChoose[this.toolIndex].tool != 4
  9883. ) {
  9884. this.addTools(4, this.taskCount, this.toolIndex);
  9885. }
  9886. },
  9887. addTest() {
  9888. // if (this.testJson.testTitle === "") {
  9889. // this.$message.error("标题不能为空!");
  9890. // return;
  9891. // }
  9892. var aj = this.testJson.testJson;
  9893. var b = 1;
  9894. for (var i = 0; i < aj.length; i++) {
  9895. if (aj[i].teststitle === "" && aj[i].timuList.length == 0) {
  9896. var a = 1;
  9897. for (let index = 0; index < aj[i].testItem; index++) {
  9898. const element = aj[i].checkList[index]
  9899. ? aj[i].checkList[index]
  9900. : "";
  9901. if (element != "") {
  9902. b++;
  9903. this.$message.error("填写了选项,题目不能为空!");
  9904. return;
  9905. } else {
  9906. a++;
  9907. }
  9908. }
  9909. if (b == 1) {
  9910. this.$message.error("至少填写一个问题");
  9911. return;
  9912. }
  9913. } else if (aj[i].teststitle != "" || aj[i].timuList.length > 0) {
  9914. for (let index = 0; index < aj[i].testItem; index++) {
  9915. const element = aj[i].checkList[index]
  9916. ? aj[i].checkList[index]
  9917. : "";
  9918. var index = 0;
  9919. for (var z = 0; z < aj[i].checkList.length; z++) {
  9920. var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
  9921. if (checkC != "") {
  9922. index++;
  9923. } else {
  9924. this.$message.error("选项不能为空!");
  9925. return;
  9926. }
  9927. }
  9928. b++;
  9929. if (index < 2) {
  9930. this.$message.error("填写了的题目,选项至少要有两项!");
  9931. return;
  9932. }
  9933. if (
  9934. (aj[i].type == "2" && !aj[i].answer.length) ||
  9935. (aj[i].type == "1" && aj[i].answer !== 0 && !aj[i].answer)
  9936. ) {
  9937. this.$message.error("有题目未选择答案请选择答案");
  9938. return;
  9939. }
  9940. }
  9941. }
  9942. }
  9943. var isTestJson = JSON.parse(JSON.stringify(this.testJson));
  9944. isTestJson.testJson = this.testJson.testJson.filter((el) => {
  9945. var elc = el.checkList.filter((element) => {
  9946. return element != "";
  9947. });
  9948. return (
  9949. (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
  9950. );
  9951. });
  9952. isTestJson.testCount = isTestJson.testJson.length;
  9953. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9954. this.taskCount
  9955. ].toolChoose[this.toolIndex].testJson = isTestJson;
  9956. this.dialogVisibleChoice = false;
  9957. if (
  9958. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  9959. .toolChoose[this.toolIndex].tool != 45
  9960. ) {
  9961. this.addTools(45, this.taskCount, this.toolIndex);
  9962. }
  9963. },
  9964. addVideoJson(videoJson) {
  9965. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  9966. this.taskCount
  9967. ].toolChoose[this.toolIndex].videoJson = videoJson;
  9968. this.dialogVisibleVideo = false;
  9969. if (
  9970. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  9971. .toolChoose[this.toolIndex].tool != 62
  9972. ) {
  9973. this.addTools(62, this.taskCount, this.toolIndex);
  9974. }
  9975. },
  9976. //自动获取剪贴板
  9977. pasteOption() {
  9978. let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
  9979. if (!iframe) {
  9980. this.$message.error("请使用AI共创生成题目");
  9981. return;
  9982. }
  9983. let copyData = iframe.contentWindow.copyData;
  9984. if (!copyData || !copyData.selectData.length) {
  9985. this.$message.error("请使用AI共创生成题目");
  9986. return;
  9987. }
  9988. let selectData = copyData.selectData;
  9989. for (var i = 0; i < selectData.length; i++) {
  9990. let answer = 0;
  9991. switch (selectData[i].answer[0]) {
  9992. case "A":
  9993. answer = 0;
  9994. break;
  9995. case "B":
  9996. answer = 1;
  9997. break;
  9998. case "C":
  9999. answer = 2;
  10000. break;
  10001. case "D":
  10002. answer = 3;
  10003. break;
  10004. case "E":
  10005. answer = 4;
  10006. break;
  10007. default:
  10008. break;
  10009. }
  10010. this.testJson.testJson.push({
  10011. teststitle: selectData[i].subject,
  10012. testItem: selectData[i].options.length,
  10013. checkList: selectData[i].options,
  10014. timuList: [],
  10015. answer: answer,
  10016. type: "1",
  10017. });
  10018. this.testJson.testCount++;
  10019. }
  10020. var isTestJson = JSON.parse(JSON.stringify(this.testJson));
  10021. isTestJson.testJson = this.testJson.testJson.filter((el) => {
  10022. var elc = el.checkList.filter((element) => {
  10023. return element != "";
  10024. });
  10025. return (
  10026. (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
  10027. );
  10028. });
  10029. isTestJson.testCount = isTestJson.testJson.length;
  10030. this.testJson = isTestJson;
  10031. this.$forceUpdate();
  10032. },
  10033. pasteTask() {
  10034. let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
  10035. if (!iframe) {
  10036. this.$message.error("请使用AI共创生成");
  10037. return;
  10038. }
  10039. let copyData = iframe.contentWindow.copyData;
  10040. if (!copyData || !copyData.tasksData || !copyData.tasksData.length) {
  10041. this.$message.error("请使用AI共创生成");
  10042. return;
  10043. }
  10044. let stageTasksData = copyData.tasksData;
  10045. let taskA = [];
  10046. let tasks = stageTasksData;
  10047. for (var j = 0; j < tasks.length; j++) {
  10048. taskA.push({
  10049. task: tasks[j].taskName,
  10050. taskDetail: tasks[j].taskDecs,
  10051. chapterData: [],
  10052. toolText: "",
  10053. toolChoose: [
  10054. {
  10055. tool: [],
  10056. toolDetail: "",
  10057. toolType: 1,
  10058. askCount: 1,
  10059. askTitle: "",
  10060. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  10061. },
  10062. ],
  10063. isShowTools: false,
  10064. askCount: 1,
  10065. isFold: 0,
  10066. askTitle: "",
  10067. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  10068. checkJson: [{ checkCount: [], checkPerent: [] }],
  10069. homeworkList: [],
  10070. });
  10071. }
  10072. this.unitJson[this.unitIndex].chapterInfo[0].taskJson = taskA;
  10073. this.$forceUpdate();
  10074. },
  10075. pasteStage() {
  10076. let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
  10077. if (!iframe) {
  10078. this.$message.error("请使用AI共创生成");
  10079. return;
  10080. }
  10081. let copyData = iframe.contentWindow.copyData;
  10082. if (!copyData || !copyData.stageData || !copyData.stageData.length) {
  10083. this.$message.error("请使用AI共创生成");
  10084. return;
  10085. }
  10086. let stageData = copyData.stageData;
  10087. let stage = [];
  10088. for (var i = 0; i < stageData.length; i++) {
  10089. stage.push({
  10090. dyName: stageData[i], //单元标题
  10091. chapterInfo: [
  10092. {
  10093. isread: false,
  10094. chapterid: this.guid(),
  10095. title: "",
  10096. courseName: "",
  10097. taskJson: [
  10098. {
  10099. task: "",
  10100. taskDetail: "",
  10101. chapterData: [],
  10102. toolText: "",
  10103. toolChoose: [
  10104. {
  10105. tool: [],
  10106. toolDetail: "",
  10107. toolType: 1,
  10108. askCount: 1,
  10109. askTitle: "",
  10110. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  10111. },
  10112. ],
  10113. isShowTools: false,
  10114. askCount: 1,
  10115. isFold: 0,
  10116. askTitle: "",
  10117. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  10118. checkJson: [{ checkCount: [], checkPerent: [] }],
  10119. homeworkList: [],
  10120. },
  10121. ],
  10122. itemCount: 1,
  10123. fileList1: [],
  10124. video: [],
  10125. testData: [],
  10126. pData: [],
  10127. templateArray: [],
  10128. },
  10129. ],
  10130. });
  10131. }
  10132. let _this = this;
  10133. _this
  10134. .$confirm("确定选择智能粘贴模式吗?", "提示", {
  10135. confirmButtonText: "确定",
  10136. cancelButtonText: "取消",
  10137. type: "warning",
  10138. })
  10139. .then(() => {
  10140. _this.unitIndex = 0;
  10141. _this.unitJson = stage;
  10142. _this.steps++;
  10143. _this.updateWork();
  10144. })
  10145. .catch(() => {
  10146. return;
  10147. });
  10148. },
  10149. addAnswer() {
  10150. if (this.answerQ == "") {
  10151. this.$message.error("请输入您想要问的问题");
  10152. return;
  10153. }
  10154. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  10155. this.taskCount
  10156. ].toolChoose[this.toolIndex].answerQ = this.answerQ;
  10157. this.dialogVisible8 = false;
  10158. if (
  10159. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  10160. .toolChoose[this.toolIndex].tool != 15
  10161. ) {
  10162. this.addTools(15, this.taskCount, this.toolIndex);
  10163. }
  10164. },
  10165. addMp3Answer() {
  10166. if (this.answerQ == "") {
  10167. this.$message.error("请输入您想要回答的问题");
  10168. return;
  10169. }
  10170. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  10171. this.taskCount
  10172. ].toolChoose[this.toolIndex].answerQ = this.answerQ;
  10173. this.dialogVisibleMp3 = false;
  10174. },
  10175. addRateAnswer() {
  10176. var a = 1;
  10177. for (var i = 0; i < this.rateJson.length; i++) {
  10178. if (this.rateJson[i].value == "") {
  10179. a = 2;
  10180. break;
  10181. }
  10182. }
  10183. if (a == 2) {
  10184. this.$message.error("请把评价信息填写完整");
  10185. return;
  10186. }
  10187. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  10188. this.taskCount
  10189. ].toolChoose[this.toolIndex].rateJson = this.rateJson;
  10190. this.dialogVisibleRate = false;
  10191. if (
  10192. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  10193. .toolChoose[this.toolIndex].tool != 40
  10194. ) {
  10195. this.addTools(40, this.taskCount, this.toolIndex);
  10196. }
  10197. },
  10198. addSelectAnswer() {
  10199. if (this.selectJson.url == "") {
  10200. this.$message.error("请上传题目");
  10201. return;
  10202. }
  10203. if (!this.selectJson.select.length) {
  10204. this.$message.error("请添加选项");
  10205. return;
  10206. }
  10207. if (!this.selectJson.answer.length) {
  10208. this.$message.error("请设置答案");
  10209. return;
  10210. }
  10211. var a = 1;
  10212. for (var i = 0; i < this.selectJson.answer.length; i++) {
  10213. if (!this.selectJson.answer[i] && this.selectJson.answer[i] !== 0) {
  10214. a = 2;
  10215. }
  10216. }
  10217. if (a == 2) {
  10218. this.$message.error("请设置答案");
  10219. return;
  10220. }
  10221. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  10222. this.taskCount
  10223. ].toolChoose[this.toolIndex].selectJson = this.selectJson;
  10224. this.dialogVisibleSelect = false;
  10225. if (
  10226. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  10227. .toolChoose[this.toolIndex].tool != 41
  10228. ) {
  10229. this.addTools(41, this.taskCount, this.toolIndex);
  10230. }
  10231. },
  10232. nextSelectSteps() {
  10233. if (this.selectJson.url == "") {
  10234. this.$message.error("请上传题目");
  10235. return;
  10236. }
  10237. if (!this.selectJson.select.length) {
  10238. this.$message.error("请添加选项");
  10239. return;
  10240. }
  10241. var a = 1;
  10242. for (var i = 0; i < this.selectJson.select.length; i++) {
  10243. if (!this.selectJson.select[i]) {
  10244. a = 2;
  10245. }
  10246. }
  10247. if (a == 2) {
  10248. this.$message.error("添加的选项不能为空");
  10249. return;
  10250. }
  10251. this.selectSteps++;
  10252. },
  10253. selectCourseDetail() {
  10254. if (this.cid == "" || this.cid == undefined) {
  10255. console.log("这是新增课程");
  10256. this.selectAllType();
  10257. } else {
  10258. this.cidType = 1;
  10259. let params = {
  10260. cid: this.cid,
  10261. };
  10262. this.ajax
  10263. .get(this.$store.state.api + "select_course_detail", params)
  10264. .then((res) => {
  10265. this.loading = true;
  10266. this.unitJson = JSON.parse(res.data[0][0].chapters);
  10267. for (var j = 0; j < this.unitJson.length; j++) {
  10268. for (
  10269. var k = 0;
  10270. k < this.unitJson[j].chapterInfo[0].taskJson.length;
  10271. k++
  10272. ) {
  10273. this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose = this
  10274. .unitJson[j].chapterInfo[0].taskJson[k].toolChoose
  10275. ? this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose
  10276. : [];
  10277. let _chapterData = [];
  10278. for (
  10279. var c = 0;
  10280. c <
  10281. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData
  10282. .length;
  10283. c++
  10284. ) {
  10285. if (
  10286. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
  10287. ) {
  10288. _chapterData.push(
  10289. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
  10290. );
  10291. }
  10292. }
  10293. this.unitJson[j].chapterInfo[0].taskJson[k].chapterData =
  10294. _chapterData;
  10295. }
  10296. }
  10297. this.$forceUpdate();
  10298. this.courseName = res.data[0][0].title;
  10299. this.courseText = res.data[0][0].brief;
  10300. this.evalua = res.data[0][0].evaId;
  10301. this.cover = JSON.parse(res.data[0][0].cover);
  10302. this.noneBtnImg = this.cover.length >= 1;
  10303. // this.checkboxList =
  10304. // res.data[0][0].course_student.length > 0
  10305. // ? JSON.parse(res.data[0][0].course_student)
  10306. // : [];
  10307. this.checkboxList2 = res.data[0][0].juri
  10308. ? res.data[0][0].juri.split(",")
  10309. : [];
  10310. this.inviteCode = [];
  10311. for (var i = 0; i < res.data[2].length; i++) {
  10312. this.inviteCode.push({
  10313. cid: res.data[2][i].classid,
  10314. ic: res.data[2][i].code,
  10315. });
  10316. }
  10317. this.checkboxList3 = res.data[0][0].course_teacher
  10318. ? res.data[0][0].course_teacher.split(",")
  10319. : [];
  10320. // this.isTeacherSee =
  10321. // res.data[0][0].is_teacher_look == 0 ? true : false;
  10322. this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
  10323. this.myWord = res.data[0][0].template;
  10324. this.templateC.id = "123";
  10325. this.courseUserid = res.data[0][0].userid;
  10326. // if(this.courseUserid == this.userid){
  10327. // this.InviteChange(this.checkboxList2)
  10328. // }
  10329. this.nbOrder = res.data[0][0].ordernumber;
  10330. this.courseTypeId = [];
  10331. for (var i = 0; i < res.data[1].length; i++) {
  10332. this.courseTypeId.push(res.data[1][i].typeid);
  10333. }
  10334. console.log(this.courseTypeId);
  10335. // if (this.timer) clearInterval(this.timer);
  10336. if (this.timer) clearTimeout(this.timer);
  10337. this.timer = null;
  10338. // this.timer = setInterval(() => {
  10339. // this.seleteCourseUpdate();
  10340. this.setMan();
  10341. this.selectAllType();
  10342. // }, 5000);
  10343. this.$forceUpdate();
  10344. setTimeout(() => {
  10345. this.checkEva(this.evalua);
  10346. }, 0);
  10347. })
  10348. .catch((err) => {
  10349. console.error(err);
  10350. });
  10351. }
  10352. },
  10353. seleteCourseUpdate() {
  10354. let params = {
  10355. cid: this.cid,
  10356. };
  10357. this.ajax
  10358. .get(this.$store.state.api + "select_course_detail", params)
  10359. .then((res) => {
  10360. // console.log(this.unitJson);
  10361. let unitJson = JSON.parse(res.data[0][0].chapters);
  10362. this.unitJson2 = JSON.parse(res.data[0][0].chapters);
  10363. let _unitJson2 = JSON.parse(JSON.stringify(this.unitJson));
  10364. let _unitJson = [];
  10365. let _chapAarry = [];
  10366. let _unitIndex = JSON.parse(JSON.stringify(this.unitIndex));
  10367. let _unitIndex2 = JSON.parse(JSON.stringify(this.unitIndex));
  10368. let index = 1;
  10369. let chapindex;
  10370. if (_unitJson2.length > unitJson.length) {
  10371. for (let c = 0; c < _unitJson2.length; c++) {
  10372. _chapAarry.push(_unitJson2[c].chapterInfo[0].chapterid);
  10373. }
  10374. for (let j = 0; j < unitJson.length; j++) {
  10375. let count = 0;
  10376. for (let k = 0; k < _unitJson2.length; k++) {
  10377. if (
  10378. unitJson[j].chapterInfo[0].chapterid ==
  10379. _unitJson2[k].chapterInfo[0].chapterid
  10380. ) {
  10381. count++;
  10382. _chapAarry.splice(
  10383. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  10384. 1
  10385. );
  10386. _unitJson.push(unitJson[j]);
  10387. break;
  10388. }
  10389. }
  10390. // if(count === 0){
  10391. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  10392. // }
  10393. }
  10394. for (let k = 0; k < _unitJson2.length; k++) {
  10395. if (_unitJson2[k].isUpdate == 1) {
  10396. _chapAarry.splice(
  10397. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  10398. 1
  10399. );
  10400. _unitJson.push(_unitJson2[k]);
  10401. }
  10402. }
  10403. console.log(_chapAarry);
  10404. for (let d = 0; d < _unitJson2.length; d++) {
  10405. if (
  10406. _chapAarry.indexOf(_unitJson2[d].chapterInfo[0].chapterid) != -1
  10407. ) {
  10408. if (_unitIndex == d) {
  10409. index = 2;
  10410. }
  10411. chapindex = d;
  10412. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  10413. }
  10414. }
  10415. } else {
  10416. _unitJson = JSON.parse(JSON.stringify(_unitJson2));
  10417. }
  10418. for (let i = 0; i < unitJson.length; i++) {
  10419. if (
  10420. (i < _unitJson.length - 1 || i == _unitJson.length - 1) &&
  10421. _unitJson[i].chapterInfo[0].chapterid !=
  10422. unitJson[i].chapterInfo[0].chapterid
  10423. ) {
  10424. if (i == _unitJson.length - 1) {
  10425. // this.unitIndex++
  10426. _unitIndex2++;
  10427. }
  10428. _unitJson.splice(i, 0, unitJson[i]);
  10429. } else if (i > _unitJson.length - 1) {
  10430. _unitJson.push(unitJson[i]);
  10431. } else if (
  10432. _unitJson[i].chapterInfo[0].chapterid ==
  10433. unitJson[i].chapterInfo[0].chapterid
  10434. ) {
  10435. _unitJson[i] = unitJson[i];
  10436. }
  10437. // if (i == _unitIndex) {
  10438. // continue;
  10439. // } else
  10440. }
  10441. if (_chapAarry.length && index != 2) {
  10442. if (chapindex < _unitIndex) {
  10443. this.isDelete = 2;
  10444. // this.unitIndex--;
  10445. _unitIndex2--;
  10446. } else if (
  10447. _unitJson2[_unitIndex].chapterInfo[0].chapterid !=
  10448. _unitJson[_unitIndex].chapterInfo[0].chapterid
  10449. ) {
  10450. this.isDelete = 2;
  10451. for (let n = 0; n < _unitJson.length; n++) {
  10452. if (
  10453. _unitJson2[_unitIndex].chapterInfo[0].chapterid ==
  10454. _unitJson[n].chapterInfo[0].chapterid
  10455. ) {
  10456. // this.unitIndex = n;
  10457. _unitIndex2 = n;
  10458. _unitJson[n] = _unitJson2[_unitIndex];
  10459. break;
  10460. }
  10461. }
  10462. }
  10463. } else if (index != 2) {
  10464. // _unitJson[this.unitIndex] = _unitJson2[_unitIndex];
  10465. _unitJson2[_unitIndex];
  10466. for (
  10467. var ci = 0;
  10468. ci < _unitJson2[_unitIndex].chapterInfo[0].taskJson.length;
  10469. ci++
  10470. ) {
  10471. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose =
  10472. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose
  10473. ? _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  10474. .toolChoose
  10475. : [];
  10476. let _chapterData = [];
  10477. for (
  10478. var c = 0;
  10479. c <
  10480. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData
  10481. .length;
  10482. c++
  10483. ) {
  10484. if (
  10485. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  10486. .chapterData[c]
  10487. ) {
  10488. _chapterData.push(
  10489. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
  10490. .chapterData[c]
  10491. );
  10492. }
  10493. }
  10494. _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData =
  10495. _chapterData;
  10496. }
  10497. _unitJson[_unitIndex2] = _unitJson2[_unitIndex];
  10498. }
  10499. if (index == 1) {
  10500. this.unitJson = _unitJson;
  10501. this.$forceUpdate();
  10502. setTimeout(() => {
  10503. if (this.unitIndex != _unitIndex2) {
  10504. this.isDelete = 2;
  10505. this.unitIndex = _unitIndex2;
  10506. }
  10507. }, 0);
  10508. this.timer = setTimeout(() => {
  10509. this.seleteCourseUpdate();
  10510. }, 1000);
  10511. } else if (index == 2) {
  10512. let _this = this;
  10513. _this
  10514. .$confirm(
  10515. "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
  10516. "提示",
  10517. {
  10518. confirmButtonText: "需要",
  10519. cancelButtonText: "取消",
  10520. type: "warning",
  10521. }
  10522. )
  10523. .then(() => {
  10524. if (_this.time()) {
  10525. _this.restoreWork(
  10526. _chapAarry[0],
  10527. _unitJson,
  10528. chapindex,
  10529. _unitJson2,
  10530. _unitIndex2
  10531. );
  10532. }
  10533. })
  10534. .catch(() => {
  10535. _this.unitJson = _unitJson;
  10536. _this.$forceUpdate();
  10537. setTimeout(() => {
  10538. if (this.unitIndex != _unitIndex2) {
  10539. this.isDelete = 2;
  10540. this.unitIndex = _unitIndex2;
  10541. }
  10542. }, 0);
  10543. _this.timer = setTimeout(() => {
  10544. _this.seleteCourseUpdate();
  10545. }, 1000);
  10546. });
  10547. }
  10548. })
  10549. .catch((err) => {
  10550. console.error(err);
  10551. });
  10552. },
  10553. restoreWork(chapid, unitJson, chapindex, unitJson2, unitIndex2) {
  10554. let params = [
  10555. {
  10556. cid: this.cid,
  10557. chapters: JSON.stringify(this.unitJson),
  10558. uid: this.userid,
  10559. chapid: chapid,
  10560. },
  10561. ];
  10562. this.ajax
  10563. .post(this.$store.state.api + "restoreWork", params)
  10564. .then((res) => {
  10565. this.$message({
  10566. message: "恢复成功",
  10567. type: "success",
  10568. });
  10569. unitJson.splice(chapindex, 0, unitJson2[chapindex]);
  10570. this.unitJson = unitJson;
  10571. this.$forceUpdate();
  10572. setTimeout(() => {
  10573. if (this.unitIndex != unitIndex2) {
  10574. this.isDelete = 2;
  10575. this.unitIndex = unitIndex2;
  10576. }
  10577. }, 0);
  10578. this.timer = setTimeout(() => {
  10579. this.seleteCourseUpdate();
  10580. }, 1000);
  10581. })
  10582. .catch((err) => {
  10583. this.$message.error("网络不佳");
  10584. console.error(err);
  10585. });
  10586. },
  10587. getTypeName() {
  10588. console.log(this.courseTypeId);
  10589. this.$forceUpdate();
  10590. },
  10591. selectAllType() {
  10592. let params = {
  10593. org: this.org && this.org != "" ? this.org : "",
  10594. oid: this.oid && this.oid != "" ? this.oid : "",
  10595. };
  10596. this.ajax
  10597. .get(this.$store.state.api + "selectAllType", params)
  10598. .then((res) => {
  10599. this.CourseType = res.data;
  10600. this.CourseType2 = [
  10601. { name: "智见课程", id: [] },
  10602. { name: "智行课程", id: [] },
  10603. { name: "智创课程", id: [] },
  10604. ];
  10605. for (var cti = 0; cti < res.data[0].length; cti++) {
  10606. if (
  10607. res.data[0][cti].name == "年级" ||
  10608. res.data[0][cti].name == "学科"
  10609. ) {
  10610. this.CourseType2[1].id.push(res.data[0][cti].id);
  10611. this.CourseType2[0].id.push(res.data[0][cti].id);
  10612. } else if (res.data[0][cti].name == "主题") {
  10613. this.CourseType2[2].id.push(res.data[0][cti].id);
  10614. }
  10615. if(res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5"){
  10616. res.data[0][cti].name = "年级";
  10617. }else if(res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5"){
  10618. res.data[0][cti].name = "学科";
  10619. }else if(res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"){
  10620. res.data[0][cti].name = "主题";
  10621. }
  10622. }
  10623. let _courseTypeId = [];
  10624. for (var i = 0; i < res.data[0].length; i++) {
  10625. if (!this.cid) {
  10626. this.courseTypeId[res.data[0][i].id] = [];
  10627. }
  10628. // if (!this.CourseTypeJson[res.data[0][i].id]) {
  10629. // }
  10630. this.CourseTypeJson[res.data[0][i].id] = [];
  10631. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  10632. if (res.data[0][i].name == "栏目") {
  10633. this.CourseType[0][i].name = "主题";
  10634. }
  10635. }
  10636. if (res.data[2].length == 0 && res.data[3].length == 0) {
  10637. for (var j = 0; j < res.data[1].length; j++) {
  10638. if (
  10639. this.courseTypeId.indexOf(res.data[1][j].id) != -1 &&
  10640. _courseTypeId.indexOf(res.data[1][j].id) == -1
  10641. ) {
  10642. _courseTypeId.push(res.data[1][j].id);
  10643. }
  10644. if (res.data[0][i].id == res.data[1][j].pid) {
  10645. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  10646. }
  10647. }
  10648. } else {
  10649. if (res.data[2].length > 0) {
  10650. for (var j = 0; j < res.data[2].length; j++) {
  10651. if (
  10652. this.courseTypeId.indexOf(res.data[2][j].id) != -1 &&
  10653. _courseTypeId.indexOf(res.data[2][j].id) == -1
  10654. ) {
  10655. _courseTypeId.push(res.data[2][j].id);
  10656. }
  10657. if (res.data[0][i].id == res.data[2][j].pid) {
  10658. this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
  10659. }
  10660. }
  10661. }
  10662. if (res.data[3].length > 0) {
  10663. for (var j = 0; j < res.data[3].length; j++) {
  10664. if (
  10665. this.courseTypeId.indexOf(res.data[3][j].id) != -1 &&
  10666. _courseTypeId.indexOf(res.data[3][j].id) == -1
  10667. ) {
  10668. _courseTypeId.push(res.data[3][j].id);
  10669. }
  10670. if (res.data[0][i].id == res.data[3][j].pid) {
  10671. this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
  10672. }
  10673. }
  10674. }
  10675. }
  10676. }
  10677. this.courseTypeId = _courseTypeId;
  10678. })
  10679. .catch((err) => {
  10680. console.error(err);
  10681. });
  10682. },
  10683. selectType() {
  10684. this.ajax
  10685. .get(this.$store.state.api + "selectType")
  10686. .then((res) => {
  10687. this.CourseType = res.data;
  10688. for (var i = 0; i < res.data[0].length; i++) {
  10689. if (!this.cid) {
  10690. this.courseTypeId[res.data[0][i].id] = "";
  10691. }
  10692. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  10693. if (res.data[0][i].name == "栏目") {
  10694. this.CourseType[0][i].name = "主题";
  10695. }
  10696. }
  10697. for (var j = 0; j < res.data[1].length; j++) {
  10698. if (res.data[0][i].id == res.data[1][j].pid) {
  10699. if (!this.CourseTypeJson[res.data[0][i].id]) {
  10700. this.CourseTypeJson[res.data[0][i].id] = [];
  10701. }
  10702. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  10703. }
  10704. }
  10705. }
  10706. this.selectTypeByOid();
  10707. this.selectTypeByOrg();
  10708. })
  10709. .catch((err) => {
  10710. console.error(err);
  10711. });
  10712. },
  10713. selectTypeByOid() {
  10714. let params = {
  10715. oid: this.oid,
  10716. };
  10717. this.ajax
  10718. .get(this.$store.state.api + "selectTypeByOid", params)
  10719. .then((res) => {
  10720. for (var i = 0; i < res.data[0].length; i++) {
  10721. for (var j = 0; j < res.data[1].length; j++) {
  10722. if (res.data[0][i].id == res.data[1][j].pid) {
  10723. if (!this.CourseTypeJson[res.data[0][i].id]) {
  10724. this.CourseTypeJson[res.data[0][i].id] = [];
  10725. }
  10726. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  10727. }
  10728. }
  10729. }
  10730. })
  10731. .catch((err) => {
  10732. console.error(err);
  10733. });
  10734. },
  10735. selectTypeByOrg() {
  10736. let params = {
  10737. oid: this.org,
  10738. };
  10739. this.ajax
  10740. .get(this.$store.state.api + "selectTypeByOrg", params)
  10741. .then((res) => {
  10742. for (var i = 0; i < res.data[0].length; i++) {
  10743. for (var j = 0; j < res.data[1].length; j++) {
  10744. if (res.data[0][i].id == res.data[1][j].pid) {
  10745. if (!this.CourseTypeJson[res.data[0][i].id]) {
  10746. this.CourseTypeJson[res.data[0][i].id] = [];
  10747. }
  10748. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  10749. }
  10750. }
  10751. }
  10752. this.$forceUpdate();
  10753. })
  10754. .catch((err) => {
  10755. console.error(err);
  10756. });
  10757. },
  10758. OtherMb(type) {
  10759. this.typeMode = type;
  10760. setTimeout(() => {
  10761. this.checkEva(this.checkId);
  10762. }, 0);
  10763. },
  10764. openMember() {
  10765. this.searchTN = "";
  10766. this.getTeacher();
  10767. this.dialogVisibleMember = true;
  10768. },
  10769. checkEva(id, type) {
  10770. this.dialogVisiblemb = false;
  10771. this.selectEva();
  10772. if (this.evalua != id && type == 2) {
  10773. this.$message.success("导入成功");
  10774. }
  10775. this.evalua = id;
  10776. this.checkId = id;
  10777. if (this.evalua != "") {
  10778. for (var i = 0; i < this.evaJuri.length; i++) {
  10779. if (this.evalua == this.evaJuri[i].id) {
  10780. this.eTitle = this.evaJuri[i].title;
  10781. this.eJson = JSON.parse(this.evaJuri[i].content);
  10782. }
  10783. }
  10784. this.data.data = [];
  10785. this.$forceUpdate();
  10786. setTimeout(() => {
  10787. this.setMindData();
  10788. }, 500);
  10789. }
  10790. },
  10791. deleteEva() {
  10792. let _this = this;
  10793. if (_this.evalua == "") {
  10794. this.$message.warning("内容已经清空了,请勿重复清空");
  10795. return;
  10796. }
  10797. _this
  10798. .$confirm("确定删除此目标吗?", "提示", {
  10799. confirmButtonText: "确定",
  10800. cancelButtonText: "取消",
  10801. type: "warning",
  10802. })
  10803. .then(() => {
  10804. _this.evalua = "";
  10805. _this.checkId = "";
  10806. _this.eTitle = "";
  10807. let _unitJson = _this.unitJson;
  10808. for (var i = 0; i < _unitJson.length; i++) {
  10809. let _task = _unitJson[i].chapterInfo[0].taskJson;
  10810. for (var j = 0; j < _task.length; j++) {
  10811. let _eList = _task[j].eList;
  10812. for (var k = 0; k < _eList.length; k++) {
  10813. delete _eList[k].target;
  10814. }
  10815. }
  10816. }
  10817. _this.$forceUpdate();
  10818. if (_this.cid) {
  10819. _this.updateWork();
  10820. }
  10821. })
  10822. .catch(() => {
  10823. return;
  10824. });
  10825. },
  10826. selectEva() {
  10827. let params = {
  10828. oid: this.oid,
  10829. };
  10830. this.ajax
  10831. .get(this.$store.state.api + "selectAllEvaluation", params)
  10832. .then((res) => {
  10833. this.evaJuri = res.data[0];
  10834. })
  10835. .catch((err) => {
  10836. console.error(err);
  10837. });
  10838. },
  10839. setMindData() {
  10840. let targetArray = [];
  10841. this.data.data = [];
  10842. this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
  10843. let _eJson = Object.keys(this.eJson);
  10844. let _e = this.eJson;
  10845. for (let i = 0; i < _eJson.length; i++) {
  10846. let element = _e[_eJson[i]];
  10847. this.data.data.push({
  10848. id: element.id,
  10849. parentid: "root",
  10850. topic: element.name,
  10851. });
  10852. // targetArray.push({
  10853. // id: element.id,
  10854. // parentid: "root",
  10855. // name: element.name,
  10856. // });
  10857. targetArray.push({
  10858. value: element.name,
  10859. label: element.name,
  10860. children: [],
  10861. });
  10862. let _eJsonc = Object.keys(element.child);
  10863. let _e2 = element.child;
  10864. for (let j = 0; j < _eJsonc.length; j++) {
  10865. let _ec = _e2[_eJsonc[j]];
  10866. this.data.data.push({
  10867. id: _ec.id,
  10868. parentid: element.id,
  10869. topic: _ec.name,
  10870. });
  10871. // targetArray.push({
  10872. // id: _ec.id,
  10873. // parentid: element.id,
  10874. // name: _ec.name,
  10875. // });
  10876. targetArray[i].children.push({
  10877. value: _ec.name,
  10878. label: _ec.name,
  10879. children: [],
  10880. });
  10881. let _eJsonz = Object.keys(_ec.child);
  10882. let _e3 = _ec.child;
  10883. for (let z = 0; z < _eJsonz.length; z++) {
  10884. let _ez = _e3[_eJsonz[z]];
  10885. this.data.data.push({
  10886. id: _ez.id,
  10887. parentid: _ec.id,
  10888. topic: _ez.name,
  10889. });
  10890. // targetArray.push({
  10891. // id: _ez.id,
  10892. // parentid: _ec.id,
  10893. // name: _ez.name,
  10894. // });
  10895. targetArray[i].children[j].children.push({
  10896. value: _ez.name,
  10897. label: _ez.name,
  10898. });
  10899. }
  10900. }
  10901. }
  10902. this.targetArray = targetArray;
  10903. this.$forceUpdate();
  10904. },
  10905. /*添加评价 */
  10906. addEList(index, tIndex) {
  10907. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList
  10908. ? this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.push({
  10909. value: "",
  10910. detail: "",
  10911. score: 5,
  10912. })
  10913. : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
  10914. { value: "", detail: "", score: 5 },
  10915. ]);
  10916. this.$forceUpdate();
  10917. },
  10918. forceUpdate() {
  10919. this.$forceUpdate();
  10920. },
  10921. deletEList(index, tIndex, eIndex) {
  10922. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.splice(
  10923. eIndex,
  10924. 1
  10925. );
  10926. this.$forceUpdate();
  10927. },
  10928. getChoosePic(t) {
  10929. this.chooseType = t;
  10930. this.getAllBanner();
  10931. },
  10932. getAllBanner() {
  10933. this.sysPicVisible = true;
  10934. let params = {
  10935. t: this.chooseType,
  10936. };
  10937. this.ajax
  10938. .get(this.$store.state.api + "selectAllBanner", params)
  10939. .then((res) => {
  10940. this.sysPic = res.data[0];
  10941. })
  10942. .catch((err) => {
  10943. console.error(err);
  10944. });
  10945. },
  10946. // getClass() {
  10947. // let params = {
  10948. // oid: this.oid,
  10949. // };
  10950. // this.ajax
  10951. // .get(this.$store.state.api + "selectClassBySchool", params)
  10952. // .then((res) => {
  10953. // this.classJuri = res.data[0];
  10954. // })
  10955. // .catch((err) => {
  10956. // console.error(err);
  10957. // });
  10958. // },
  10959. deleteSysPic() {
  10960. this.cover = [];
  10961. this.isSysPic = false;
  10962. },
  10963. deleteSelectPic() {
  10964. this.selectJson.url = "";
  10965. },
  10966. setEListStar() {
  10967. this.$forceUpdate();
  10968. },
  10969. deletRateList(i) {
  10970. this.rateJson.splice(i, 1);
  10971. },
  10972. addRateList() {
  10973. this.rateJson.push({ detail: "", score: 5, value: "" });
  10974. },
  10975. addSt() {
  10976. this.sentenceList.push({
  10977. sentenceTitle: "",
  10978. addSentence: [],
  10979. rightAnswer: [],
  10980. });
  10981. },
  10982. addSen(i) {
  10983. this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
  10984. // this.isPushTitleList.push(this.sentenceTitle);
  10985. this.sentenceList[i].sentenceTitle = "";
  10986. },
  10987. setRightAnswer(s, i, j) {
  10988. if (this.sentenceList[i].rightAnswer.indexOf(s) == -1) {
  10989. this.sentenceList[i].rightAnswer.push(s);
  10990. }
  10991. },
  10992. returnCard(r, i, j) {
  10993. this.sentenceList[i].rightAnswer.splice(j, 1);
  10994. },
  10995. addSentenceTool() {
  10996. for (var i = 0; i < this.sentenceList.length; i++) {
  10997. if (this.sentenceList[i].rightAnswer.length == 0) {
  10998. this.$message.error("请将信息填写完整!");
  10999. return;
  11000. }
  11001. if (
  11002. this.sentenceList[i].addSentence.length !=
  11003. this.sentenceList[i].rightAnswer.length
  11004. ) {
  11005. this.$message.error("请将信息填写完整!");
  11006. return;
  11007. }
  11008. }
  11009. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11010. this.taskCount
  11011. ].toolChoose[this.toolIndex].sentenceList = this.sentenceList;
  11012. this.sentenceList = [
  11013. { sentenceTitle: "", addSentence: [], rightAnswer: [] },
  11014. ];
  11015. this.dialogVisibleSentence = false;
  11016. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11017. // itemTaskIndex
  11018. // ].toolChoose[toolIndex].tool = [];
  11019. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11020. // itemTaskIndex
  11021. // ].toolChoose[toolIndex].tool.push(i);
  11022. if (
  11023. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11024. .toolChoose[this.toolIndex].tool != 47
  11025. ) {
  11026. this.addTools(47, this.taskCount, this.toolIndex);
  11027. }
  11028. },
  11029. addTableJson() {
  11030. // if (this.tableJson.text == "" || this.tableJson.text == "<p></p>") {
  11031. // this.$message.error("请将信息填写完整!");
  11032. // return;
  11033. // }
  11034. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11035. this.taskCount
  11036. ].toolChoose[this.toolIndex].tableJson = this.tableJson;
  11037. // this.tableJson = [{ text: "" }];
  11038. // this.dialogVisibleTable = false;
  11039. this.$message.success("上传成功");
  11040. if (
  11041. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11042. .toolChoose[this.toolIndex].tool != 48
  11043. ) {
  11044. this.addTools(48, this.taskCount, this.toolIndex);
  11045. }
  11046. },
  11047. addWordJson() {
  11048. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11049. this.taskCount
  11050. ].toolChoose[this.toolIndex].wordJson = this.wordJson;
  11051. // this.wordJson = [{ text: "" }];
  11052. // this.dialogVisibleWord = false;
  11053. this.$message.success("上传成功");
  11054. if (
  11055. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11056. .toolChoose[this.toolIndex].tool != 52
  11057. ) {
  11058. this.addTools(52, this.taskCount, this.toolIndex);
  11059. }
  11060. },
  11061. addMoreUpload() {
  11062. if (this.uploadJson.length == 0) {
  11063. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11064. this.taskCount
  11065. ].toolChoose[this.toolIndex].uploadJson = [];
  11066. } else {
  11067. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11068. this.taskCount
  11069. ].toolChoose[this.toolIndex].uploadJson = this.uploadJson;
  11070. }
  11071. this.uploadJson = [];
  11072. this.dialogVisibleMoreUpload = false;
  11073. if (
  11074. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11075. .toolChoose[this.toolIndex].tool != 50
  11076. ) {
  11077. this.addTools(50, this.taskCount, this.toolIndex);
  11078. }
  11079. },
  11080. addPreTime() {
  11081. if (this.preTime == 0) {
  11082. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11083. this.taskCount
  11084. ].toolChoose[this.toolIndex].preTime = 0;
  11085. } else {
  11086. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11087. this.taskCount
  11088. ].toolChoose[this.toolIndex].preTime = this.preTime;
  11089. }
  11090. this.preTime = 0;
  11091. this.dialogVisiblePreTime = false;
  11092. if (
  11093. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11094. .toolChoose[this.toolIndex].tool != 10
  11095. ) {
  11096. this.addTools(10, this.taskCount, this.toolIndex);
  11097. }
  11098. },
  11099. goToTask(i) {
  11100. $(".rightBox")[0].scrollTop =
  11101. $(".taskBorder")[i].offsetTop +
  11102. $(".taskBorder")[i].parentElement.parentElement.offsetTop;
  11103. this.isClickColor = i + 1;
  11104. },
  11105. taskMove(type, index) {
  11106. // this
  11107. // .$confirm("切换任务顺序将删除所有工具的提交成果,是否继续此操作?", "提示", {
  11108. // confirmButtonText: "确定",
  11109. // cancelButtonText: "取消",
  11110. // type: "warning",
  11111. // })
  11112. // .then(() => {
  11113. if (type == 1) {
  11114. if (index > 0) {
  11115. let a = JSON.parse(
  11116. JSON.stringify(
  11117. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1]
  11118. )
  11119. );
  11120. let b = JSON.parse(
  11121. JSON.stringify(
  11122. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index]
  11123. )
  11124. );
  11125. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1] =
  11126. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
  11127. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
  11128. if (index - 1 == 0) {
  11129. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11130. index - 1
  11131. ].chapterData = a.chapterData;
  11132. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11133. index
  11134. ].chapterData = b.chapterData;
  11135. }
  11136. }
  11137. } else {
  11138. if (
  11139. index <
  11140. this.unitJson[this.unitIndex].chapterInfo[0].taskJson.length - 1
  11141. ) {
  11142. let a = JSON.parse(
  11143. JSON.stringify(
  11144. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1]
  11145. )
  11146. );
  11147. let b = JSON.parse(
  11148. JSON.stringify(
  11149. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index]
  11150. )
  11151. );
  11152. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1] =
  11153. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
  11154. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
  11155. if (index == 0) {
  11156. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11157. index + 1
  11158. ].chapterData = a.chapterData;
  11159. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11160. index
  11161. ].chapterData = b.chapterData;
  11162. }
  11163. }
  11164. }
  11165. this.$forceUpdate();
  11166. // })
  11167. // .catch(() => {
  11168. // return;
  11169. // })
  11170. },
  11171. addGroup(i) {
  11172. // this.groupJson.group.splice(i + 1, 0, { name: "第"+(i+1)+"组" });
  11173. this.groupJson.group.push({
  11174. name: "第" + (this.groupJson.group.length + 1) + "组",
  11175. });
  11176. },
  11177. deleteGroup(i) {
  11178. this.groupJson.group.splice(i, 1);
  11179. },
  11180. addGroupJson() {
  11181. for (var i = 0; i < this.groupJson.group.length; i++) {
  11182. if (!this.groupJson.group[i].name) {
  11183. this.$message.error("请将信息填写完整!");
  11184. return;
  11185. }
  11186. }
  11187. if (!this.groupJson.number) {
  11188. this.$message.error("请将信息填写完整!");
  11189. return;
  11190. }
  11191. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  11192. this.taskCount
  11193. ].toolChoose[this.toolIndex].groupJson = JSON.parse(
  11194. JSON.stringify(this.groupJson)
  11195. );
  11196. this.dialogVisibleGroup = false;
  11197. this.groupJson = {};
  11198. if (
  11199. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
  11200. .toolChoose[this.toolIndex].tool != 49
  11201. ) {
  11202. this.addTools(49, this.taskCount, this.toolIndex);
  11203. }
  11204. },
  11205. updateTime(preTime) {
  11206. this.preTime = preTime;
  11207. },
  11208. InviteChange(val) {
  11209. console.log(val);
  11210. return;
  11211. let array = JSON.parse(JSON.stringify(val));
  11212. this.inviteCode = this.inviteCode.filter((el) => {
  11213. if (val.indexOf(el.cid) != -1) {
  11214. array.splice(array.indexOf(el.cid), 1);
  11215. return el;
  11216. }
  11217. });
  11218. for (var i = 0; i < array.length; i++) {
  11219. this.getInviteCode(array[i]);
  11220. }
  11221. },
  11222. async getInviteCode(cid) {
  11223. let code = this.randomNumber();
  11224. let params = {
  11225. code: code,
  11226. oid: this.oid,
  11227. };
  11228. let type = 1;
  11229. for (var i = 0; i < this.inviteCode.length; i++) {
  11230. if (this.inviteCode[i].cid != cid && code == this.inviteCode[i].ic) {
  11231. type = 2;
  11232. }
  11233. }
  11234. if (type == 2) {
  11235. this.getInviteCode(cid);
  11236. return;
  11237. }
  11238. const res = await this.ajax.get(
  11239. this.$store.state.api + "selectInviteCode2",
  11240. params
  11241. );
  11242. if (
  11243. res.data.length &&
  11244. res.data[0].length &&
  11245. res.data[0][0].courseId != this.cid
  11246. ) {
  11247. this.getInviteCode(cid);
  11248. return;
  11249. }
  11250. let array = [];
  11251. for (var i = 0; i < this.inviteCode.length; i++) {
  11252. array.push(this.inviteCode[i].cid);
  11253. }
  11254. if (array.indexOf(cid) != -1) {
  11255. this.inviteCode[array.indexOf(cid)].ic = code;
  11256. } else {
  11257. this.inviteCode.push({ cid: cid, ic: code });
  11258. }
  11259. },
  11260. OpenInviteD(cid) {
  11261. let array = [];
  11262. this.icode = "";
  11263. for (var i = 0; i < this.inviteCode.length; i++) {
  11264. array.push(this.inviteCode[i].cid);
  11265. }
  11266. if (array.indexOf(cid) != -1) {
  11267. this.icode = this.inviteCode[array.indexOf(cid)].ic;
  11268. }
  11269. this.inviteId = cid;
  11270. this.dialogVisibleInvite = true;
  11271. },
  11272. addInvite() {
  11273. let reg = /^[A-Za-z0-9]{4,}$/;
  11274. if (!reg.test(this.icode)) {
  11275. this.$message.error("请输入至少四位数字或英文组合的随机码");
  11276. return;
  11277. }
  11278. let type = 1;
  11279. for (var i = 0; i < this.inviteCode.length; i++) {
  11280. if (
  11281. this.inviteCode[i].cid != this.inviteId &&
  11282. this.icode == this.inviteCode[i].ic
  11283. ) {
  11284. type = 2;
  11285. }
  11286. }
  11287. if (type == 2) {
  11288. this.$message.error("已有此随机码,不能重复");
  11289. return;
  11290. }
  11291. let params = {
  11292. code: this.icode,
  11293. oid: this.oid,
  11294. };
  11295. this.ajax
  11296. .get(this.$store.state.api + "selectInviteCode", params)
  11297. .then((res) => {
  11298. if (
  11299. res.data.length &&
  11300. res.data[0].length &&
  11301. res.data[0][0].courseId != this.cid
  11302. ) {
  11303. this.$message.error("已有此随机码,不能重复");
  11304. return;
  11305. }
  11306. let array = [];
  11307. for (var i = 0; i < this.inviteCode.length; i++) {
  11308. array.push(this.inviteCode[i].cid);
  11309. }
  11310. if (array.indexOf(this.inviteId) != -1) {
  11311. this.inviteCode[array.indexOf(this.inviteId)].ic = this.icode;
  11312. } else {
  11313. this.inviteCode.push({ cid: this.inviteId, ic: this.icode });
  11314. }
  11315. this.icode = "";
  11316. this.dialogVisibleInvite = false;
  11317. })
  11318. .catch((err) => {
  11319. console.error(err);
  11320. });
  11321. },
  11322. randomNumber() {
  11323. // 随机生成两位数
  11324. // let num = Math.floor(Math.random() * 900) + 100;
  11325. // 生成 0 到 99 之间的随机整数
  11326. const randomNumber = Math.floor(Math.random() * 100);
  11327. // 如果随机数小于 10,补上前导零
  11328. const num =
  11329. randomNumber < 10 ? "0" + randomNumber : randomNumber.toString();
  11330. // 随机生成两个大写字母
  11331. let letters = "";
  11332. let chars2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  11333. for (let i = 0; i < 3; i++) {
  11334. letters += chars2.charAt(Math.floor(Math.random() * chars2.length));
  11335. }
  11336. // 随机生成两位数字和字母的组合
  11337. let mix = "";
  11338. let chars =
  11339. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  11340. for (let i = 0; i < 3; i++) {
  11341. let char = chars.charAt(Math.floor(Math.random() * chars.length));
  11342. mix += char;
  11343. }
  11344. // 随机选择一种类型
  11345. let type = Math.floor(Math.random() * 3);
  11346. return num;
  11347. // 根据类型输出结果
  11348. switch (type) {
  11349. case 0:
  11350. console.log(num); // 输出两位数
  11351. return num;
  11352. case 1:
  11353. console.log(letters); // 输出两个大写字母
  11354. return letters;
  11355. case 2:
  11356. console.log(mix); // 输出两位数字和字母的组合
  11357. return mix;
  11358. }
  11359. },
  11360. },
  11361. beforeDestroy() {
  11362. clearTimeout(this.timer);
  11363. this.timer = null;
  11364. clearInterval(this.timer2);
  11365. this.timer2 = null;
  11366. },
  11367. beforeRouteLeave(to, from, next) {
  11368. clearTimeout(this.timer);
  11369. this.timer = null;
  11370. clearInterval(this.timer2);
  11371. this.timer2 = null;
  11372. next();
  11373. },
  11374. created() {
  11375. this.getStudent();
  11376. this.getTeacher();
  11377. this.getClass();
  11378. this.getTemplate();
  11379. // this.selectType();
  11380. this.selectEva();
  11381. this.loading = false;
  11382. this.timer2 = setInterval(() => {
  11383. this.selectEva();
  11384. }, 5000);
  11385. setTimeout(() => {
  11386. this.selectCourseDetail();
  11387. }, 500);
  11388. },
  11389. mounted() {
  11390. this.$nextTick(() => {
  11391. //监听这个dom的scroll事件
  11392. $(".rightBox")[0].addEventListener("scroll", this.scrollChange);
  11393. });
  11394. },
  11395. };
  11396. </script>
  11397. <style scoped>
  11398. @media screen and (max-width: 1280px) {
  11399. .mbCss {
  11400. flex-direction: column !important;
  11401. }
  11402. .pjCss {
  11403. width: 100% !important;
  11404. }
  11405. .evaCss {
  11406. width: 100% !important;
  11407. }
  11408. }
  11409. .dialog_diy >>> .el-dialog__header {
  11410. background: #3c3c3c !important;
  11411. padding: 15px 20px;
  11412. }
  11413. .dialog_diy >>> .el-dialog__title {
  11414. color: #fff;
  11415. }
  11416. .dialog_diy >>> .el-dialog__headerbtn {
  11417. top: 19px;
  11418. }
  11419. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  11420. color: #fff;
  11421. }
  11422. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  11423. color: #fff;
  11424. }
  11425. .dialog_diy >>> .el-dialog__body,
  11426. .dialog_diy >>> .el-dialog__footer {
  11427. background: #fafafa;
  11428. }
  11429. .dialog_diy3 >>> .el-dialog__body,
  11430. .dialog_diy3 >>> .el-dialog__footer {
  11431. background: #eee !important;
  11432. }
  11433. .dialog_diy3 >>> .el-dialog__body {
  11434. padding: 20px 20px;
  11435. }
  11436. .source_diy >>> .el-dialog {
  11437. height: 100% !important;
  11438. margin: 0 auto !important;
  11439. }
  11440. .source_diy >>> .el-dialog__body {
  11441. height: calc(100% - 185px);
  11442. overflow: auto;
  11443. background: #e6eaf0;
  11444. }
  11445. .source_diy >>> .el-dialog__footer {
  11446. background: #e6eaf0 !important;
  11447. }
  11448. .left {
  11449. border-right: 1px solid rgb(60, 94, 143);
  11450. display: flex;
  11451. flex-direction: column;
  11452. align-items: center;
  11453. min-height: 600px;
  11454. width: 385px;
  11455. height: 80%;
  11456. }
  11457. .tips {
  11458. color: rgb(128, 128, 128);
  11459. font-size: 12px;
  11460. width: 270px;
  11461. margin: 40px;
  11462. }
  11463. .pb_content {
  11464. height: 100% !important;
  11465. /* margin: 0 20px 0 20px; */
  11466. }
  11467. .pb_content_body {
  11468. width: 100% !important;
  11469. height: 100%;
  11470. }
  11471. .info_solid {
  11472. width: 270px;
  11473. height: 30px;
  11474. border-left: 1px solid #bdbdbd;
  11475. margin: 10px 0px 10px 30px;
  11476. }
  11477. .info_steps {
  11478. width: 270px;
  11479. font-size: 0.875rem;
  11480. display: flex;
  11481. align-items: center;
  11482. }
  11483. .info_steps span:nth-child(1) {
  11484. width: 30px;
  11485. height: 30px;
  11486. background: rgba(0, 0, 0, 0.38);
  11487. display: block;
  11488. color: #fff;
  11489. border-radius: 40px;
  11490. text-align: center;
  11491. line-height: 30px;
  11492. }
  11493. .steps_active {
  11494. background: #3d67bc !important;
  11495. }
  11496. .info_steps span:nth-child(2) {
  11497. margin-left: 5px;
  11498. }
  11499. .right {
  11500. height: 100%;
  11501. width: 100%;
  11502. display: flex;
  11503. overflow: hidden;
  11504. }
  11505. .basic_box {
  11506. margin: 0 auto;
  11507. position: relative;
  11508. padding: 0 20px 0 20px;
  11509. }
  11510. .basic_box2 {
  11511. position: relative;
  11512. width: calc(100% - 300px);
  11513. }
  11514. .basic_box_success {
  11515. width: 100%;
  11516. height: 100%;
  11517. padding: 50px 0;
  11518. position: relative;
  11519. text-align: center;
  11520. /* border-bottom: 1px solid #bfbfbf; */
  11521. box-sizing: border-box;
  11522. display: flex;
  11523. align-items: center;
  11524. flex-direction: column;
  11525. justify-content: center;
  11526. }
  11527. .info_title {
  11528. font-size: 1.5em;
  11529. margin-right: 25px;
  11530. /* margin: 20px 30px 20px 30px; */
  11531. }
  11532. .bInfo_title {
  11533. text-align: left;
  11534. margin: 10px 0;
  11535. }
  11536. .small_title {
  11537. font-size: 14px;
  11538. line-height: 40px;
  11539. }
  11540. .chapter_beizhu {
  11541. font-size: 12px;
  11542. font-weight: bold;
  11543. float: right;
  11544. color: rgb(128, 128, 128);
  11545. margin-top: 5px;
  11546. }
  11547. .chapter_uploadBox1 {
  11548. text-align: left;
  11549. background-color: rgb(242, 242, 242);
  11550. width: 100%;
  11551. height: 67px;
  11552. padding: 0px 15px;
  11553. border-radius: 8px;
  11554. overflow: hidden;
  11555. font-size: 16px;
  11556. box-sizing: border-box;
  11557. position: relative;
  11558. }
  11559. .chapter_add {
  11560. width: 100%;
  11561. height: 32px;
  11562. margin-top: 15px;
  11563. cursor: pointer;
  11564. }
  11565. .chapter_add_l {
  11566. margin-left: 5px;
  11567. width: 30px;
  11568. height: 30px;
  11569. float: left;
  11570. border: 1px solid #aaa;
  11571. color: #aaa;
  11572. border-radius: 50%;
  11573. font-size: 25px;
  11574. text-align: center;
  11575. }
  11576. .chapter_add_r {
  11577. font-size: 18px;
  11578. height: 40px;
  11579. line-height: 30px;
  11580. text-indent: 10px;
  11581. color: #aaa;
  11582. }
  11583. .chapter_add_r span {
  11584. font-size: 12px;
  11585. color: rgb(204, 204, 204);
  11586. }
  11587. .chapter_add_input {
  11588. display: none;
  11589. }
  11590. .line {
  11591. width: 85%;
  11592. margin: 0 auto;
  11593. border-top: 1px solid #e5e5e5;
  11594. margin-top: 20px;
  11595. }
  11596. .info_btnBox {
  11597. width: 100%;
  11598. display: flex;
  11599. justify-content: space-evenly;
  11600. margin: 10px 0 10px 0;
  11601. }
  11602. .info_btn,
  11603. .teacherWord {
  11604. color: #fff;
  11605. background-color: #0f7eff;
  11606. padding: 8px 24px;
  11607. font-size: 0.9375rem;
  11608. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%),
  11609. 0px 3px 1px -2px rgb(0 0 0 / 12%);
  11610. min-width: 64px;
  11611. font-weight: 500;
  11612. border-radius: 4px;
  11613. box-sizing: border-box;
  11614. border: none;
  11615. cursor: pointer;
  11616. }
  11617. .teacherWord {
  11618. width: 105px !important;
  11619. text-align: center !important;
  11620. line-height: 36px !important;
  11621. padding: 0 !important;
  11622. font-size: 14px !important;
  11623. margin: 10px 0 !important;
  11624. }
  11625. .wordTeacher {
  11626. display: flex;
  11627. flex-direction: column;
  11628. width: 20%;
  11629. text-align: center;
  11630. font-size: 14px;
  11631. margin: 30px 30px 0 10px;
  11632. background: #fff;
  11633. position: relative;
  11634. border-radius: 5px;
  11635. padding: 25px 0px;
  11636. }
  11637. .wordPic {
  11638. margin: 0 auto;
  11639. width: 60px;
  11640. height: 60px;
  11641. cursor: pointer;
  11642. }
  11643. .deleteWord {
  11644. width: 22px;
  11645. height: 22px;
  11646. position: absolute;
  11647. right: 5px;
  11648. top: -15px;
  11649. cursor: pointer;
  11650. display: none;
  11651. z-index: 999;
  11652. }
  11653. .wordPic > img,
  11654. .deleteWord > img,
  11655. .addToolImg > img {
  11656. width: 100%;
  11657. height: 100%;
  11658. }
  11659. .info_btn:hover {
  11660. background-color: #4f7cd5 !important;
  11661. }
  11662. .cru_selectBox {
  11663. display: flex;
  11664. margin: 24px 0 10px;
  11665. flex-wrap: nowrap;
  11666. white-space: nowrap;
  11667. overflow: auto;
  11668. position: relative;
  11669. height: 47px;
  11670. }
  11671. .cru_selectBox::-webkit-scrollbar {
  11672. /*滚动条整体样式*/
  11673. width: 6px;
  11674. /*高宽分别对应横竖滚动条的尺寸*/
  11675. height: 6px;
  11676. }
  11677. /*定义滚动条轨道 内阴影+圆角*/
  11678. .cru_selectBox::-webkit-scrollbar-track {
  11679. border-radius: 10px;
  11680. background-color: #eee;
  11681. }
  11682. /*定义滑块 内阴影+圆角*/
  11683. .cru_selectBox::-webkit-scrollbar-thumb {
  11684. border-radius: 10px;
  11685. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  11686. background-color: rgba(0, 0, 0, 0.1);
  11687. }
  11688. .cru_line {
  11689. position: absolute;
  11690. bottom: 0px;
  11691. transition: all 0.5s;
  11692. left: 0px;
  11693. width: 125px;
  11694. margin-left: -25px;
  11695. }
  11696. .cru_select {
  11697. font-size: 21px;
  11698. margin-right: 37px;
  11699. margin-left: 5px;
  11700. cursor: pointer;
  11701. color: #a6a6a6;
  11702. }
  11703. .cru_selected {
  11704. color: #0b7fc2 !important;
  11705. }
  11706. .chapter_contentbox {
  11707. display: flex;
  11708. align-items: center;
  11709. margin-top: 15px;
  11710. }
  11711. .chapter_contentbox div:nth-child(1) {
  11712. /* width: 150px; */
  11713. margin: 0px;
  11714. /* font-size: 2em; */
  11715. color: black;
  11716. display: block;
  11717. white-space: nowrap;
  11718. overflow: hidden;
  11719. text-overflow: ellipsis;
  11720. /* font-weight: 600; */
  11721. margin-right: 20px;
  11722. font-size: 18px;
  11723. }
  11724. .chapter_contentbox div:nth-child(2) {
  11725. width: 380px;
  11726. }
  11727. .chapter_contentbox div:nth-child(3),
  11728. .remove {
  11729. background-image: url("../../../assets/remove.png");
  11730. cursor: pointer;
  11731. opacity: 0.5;
  11732. width: 40px;
  11733. height: 50px;
  11734. background-repeat: no-repeat;
  11735. background-position: 5px 10px;
  11736. }
  11737. .remove1 {
  11738. background-image: url("../../../assets/remove1.png");
  11739. background-repeat: no-repeat;
  11740. background-position: 5px 10px;
  11741. width: 40px;
  11742. height: 50px;
  11743. cursor: pointer;
  11744. }
  11745. .binfo_input {
  11746. font: inherit;
  11747. color: currentColor;
  11748. width: 100%;
  11749. margin: 0;
  11750. /* padding: 15px 14px; */
  11751. padding: 8px 14px;
  11752. display: block;
  11753. min-width: 0;
  11754. outline: none;
  11755. box-sizing: content-box;
  11756. background: none;
  11757. border: 1px solid rgba(0, 0, 0, 0.23);
  11758. border-radius: 4px;
  11759. box-sizing: border-box;
  11760. background: #fff;
  11761. font-size: 14px;
  11762. }
  11763. .binfo_input:focus-visible {
  11764. border: 1px solid rgba(61, 103, 188);
  11765. }
  11766. .time {
  11767. display: flex;
  11768. margin: 35px 0 80px 0;
  11769. }
  11770. .chapter_btnbox {
  11771. width: 160px;
  11772. border-radius: 5px;
  11773. border: 2px dashed gray;
  11774. display: flex;
  11775. padding: 8px 50px;
  11776. align-items: center;
  11777. justify-content: center;
  11778. margin: 30px auto 0;
  11779. cursor: pointer;
  11780. }
  11781. .icon_add {
  11782. position: relative;
  11783. width: 24px;
  11784. padding-top: 20px;
  11785. border-radius: 100%;
  11786. border-width: 2px;
  11787. border-style: solid;
  11788. border-color: gray;
  11789. }
  11790. .icon_add i:nth-child(1) {
  11791. position: absolute;
  11792. left: 50%;
  11793. top: 50%;
  11794. height: 60%;
  11795. transform: translate(-50%, -50%);
  11796. border-width: 1px;
  11797. border-style: solid;
  11798. border-color: inherit;
  11799. }
  11800. .icon_add i:nth-child(2) {
  11801. position: absolute;
  11802. top: 50%;
  11803. left: 50%;
  11804. width: 60%;
  11805. transform: translate(-50%, -50%);
  11806. border-width: 1px;
  11807. border-style: solid;
  11808. border-color: inherit;
  11809. }
  11810. .chapter_btn_w {
  11811. font-size: 0.9375rem;
  11812. font-weight: bold;
  11813. color: gray;
  11814. margin-left: 20px;
  11815. }
  11816. .disUoloadSty >>> .el-icon-plus {
  11817. display: none !important;
  11818. /* 上传按钮隐藏 */
  11819. }
  11820. .imgLeft {
  11821. margin: 15px 0;
  11822. }
  11823. .add_info_box {
  11824. margin: 20px 0;
  11825. }
  11826. .add_info_box button {
  11827. margin: 0 10px 10px 0;
  11828. }
  11829. .add_info_box2 {
  11830. display: flex;
  11831. align-items: center;
  11832. flex-wrap: wrap;
  11833. }
  11834. .add_info_box2::after {
  11835. content: "提示:支持上传10M以内的PPT和Word文件、5M以内的Excel文件, PDF文件不限制大小。";
  11836. color: red;
  11837. font-size: 14px;
  11838. margin-bottom: 10px;
  11839. }
  11840. .add_chapters_box {
  11841. text-align: left;
  11842. background-color: rgb(232 234 237);
  11843. width: 100%;
  11844. padding: 0px 15px;
  11845. border-radius: 15px;
  11846. font-size: 16px;
  11847. box-sizing: border-box;
  11848. position: relative;
  11849. padding: 0 10px 5px 10px;
  11850. height: 185px;
  11851. overflow-y: auto;
  11852. overflow-x: hidden;
  11853. }
  11854. .homework_box {
  11855. display: flex;
  11856. align-items: flex-start;
  11857. flex-wrap: wrap;
  11858. margin: 15px 0 0 0;
  11859. flex-direction: column;
  11860. align-content: flex-start;
  11861. }
  11862. .course_homework {
  11863. display: flex;
  11864. justify-content: center;
  11865. flex-direction: row;
  11866. align-items: center;
  11867. margin: 0 10px 0 0;
  11868. }
  11869. .course_homework >>> .el-input__inner {
  11870. width: 140px;
  11871. margin-left: 15px;
  11872. }
  11873. .chapter_upload_move {
  11874. position: relative;
  11875. background-color: #fff;
  11876. position: absolute;
  11877. width: 100%;
  11878. top: 0px;
  11879. left: 0px;
  11880. border: 1px solid #eee;
  11881. border-radius: 5px;
  11882. transition: width 2s;
  11883. -moz-transition: width 2s;
  11884. -webkit-transition: width 2s;
  11885. -o-transition: width 2s;
  11886. }
  11887. .chapter_upload_l_i {
  11888. background-image: url("../../../assets/icon.png");
  11889. background-position: 3px -165px;
  11890. width: 30px;
  11891. height: 30px;
  11892. margin: 10px auto 0 auto;
  11893. }
  11894. .left_first {
  11895. display: flex;
  11896. flex-direction: column;
  11897. flex-wrap: nowrap;
  11898. }
  11899. .right_first {
  11900. width: 100%;
  11901. height: 100%;
  11902. margin-top: 15px;
  11903. }
  11904. .right_title {
  11905. height: 30px;
  11906. padding: 15px 20px 15px 20px;
  11907. border-bottom: 1px solid #f2f2f2;
  11908. font-size: 1.5em;
  11909. font-weight: bold;
  11910. color: #0f7eff;
  11911. margin: 0 auto;
  11912. display: flex;
  11913. /* justify-content: space-between; */
  11914. align-items: flex-end;
  11915. }
  11916. .people {
  11917. border: 1px solid rgb(229 229 229);
  11918. height: 495px;
  11919. border-radius: 5px;
  11920. width: 100%;
  11921. overflow: auto;
  11922. }
  11923. .people_top {
  11924. display: flex;
  11925. width: 100%;
  11926. /* justify-content: space-between; */
  11927. /* align-items: center; */
  11928. flex-direction: column;
  11929. padding: 10px 25px 0;
  11930. box-sizing: border-box;
  11931. }
  11932. .people_nav,
  11933. .people_top_right {
  11934. /* padding: 20px 0 0 20px; */
  11935. }
  11936. .people_top_right {
  11937. height: 40px;
  11938. margin-bottom: 10px;
  11939. }
  11940. .people_search {
  11941. display: flex;
  11942. position: relative;
  11943. }
  11944. .people_search >>> .el-input__inner {
  11945. /* height: 25px; */
  11946. width: 95%;
  11947. }
  11948. .search_img {
  11949. width: 20px;
  11950. height: 20px;
  11951. position: absolute;
  11952. right: 30px;
  11953. top: 50%;
  11954. transform: translateY(-50%);
  11955. }
  11956. .search_img > img {
  11957. width: 100%;
  11958. height: 100%;
  11959. }
  11960. .people_name {
  11961. display: flex;
  11962. justify-content: flex-start;
  11963. padding: 20px 0 0 25px;
  11964. flex-direction: column;
  11965. flex-wrap: wrap;
  11966. }
  11967. .p_box {
  11968. position: relative;
  11969. }
  11970. .people_name >>> .el-checkbox {
  11971. width: 100%;
  11972. display: flex;
  11973. align-items: center;
  11974. margin-bottom: 10px;
  11975. }
  11976. .people_name >>> .el-checkbox__label {
  11977. text-overflow: ellipsis;
  11978. overflow: hidden;
  11979. width: calc(100%);
  11980. }
  11981. .people_name2 >>> .el-checkbox__label {
  11982. width: calc(100% - 130px);
  11983. }
  11984. .inviteCode {
  11985. position: absolute;
  11986. right: 30px;
  11987. color: #237ade;
  11988. top: 0;
  11989. cursor: pointer;
  11990. font-size: 13px;
  11991. }
  11992. .noneInvite {
  11993. color: #a8a8a8;
  11994. }
  11995. .inviteImg {
  11996. position: absolute;
  11997. right: 5px;
  11998. top: 0;
  11999. width: 20px;
  12000. }
  12001. .right_img {
  12002. width: 150px;
  12003. height: 150px;
  12004. margin: 20px auto;
  12005. }
  12006. .right_img > img {
  12007. width: 100%;
  12008. height: 100%;
  12009. }
  12010. .number {
  12011. margin-top: 20px;
  12012. color: #4aa6ff;
  12013. text-decoration: underline;
  12014. }
  12015. .success_button {
  12016. display: flex;
  12017. text-align: center;
  12018. margin: 5% 0 auto;
  12019. flex-direction: row;
  12020. justify-content: center;
  12021. }
  12022. .look_course {
  12023. margin-right: 40px;
  12024. background: #3d67bc;
  12025. width: 200px;
  12026. height: 35px;
  12027. line-height: 35px;
  12028. color: #fff;
  12029. text-align: center;
  12030. font-size: 14px;
  12031. border-radius: 5px;
  12032. cursor: pointer;
  12033. }
  12034. .attend_others {
  12035. width: 250px;
  12036. background: #4fb13c;
  12037. height: 35px;
  12038. line-height: 35px;
  12039. color: #fff;
  12040. text-align: center;
  12041. font-size: 14px;
  12042. border-radius: 5px;
  12043. cursor: pointer;
  12044. }
  12045. .dialog_diy2 >>> .el-dialog__body {
  12046. text-align: center;
  12047. }
  12048. .write_togother {
  12049. position: absolute;
  12050. right: 45px;
  12051. display: flex;
  12052. top: 5%;
  12053. }
  12054. .write_people {
  12055. font-size: 14px;
  12056. line-height: 50px;
  12057. padding-right: 10px;
  12058. }
  12059. .end_write {
  12060. background: #3d67bc;
  12061. color: #fff;
  12062. width: 100px;
  12063. height: 35px;
  12064. line-height: 35px;
  12065. text-align: center;
  12066. font-size: 14px;
  12067. border-radius: 5px;
  12068. cursor: pointer;
  12069. }
  12070. .chapter_upload {
  12071. height: 50px;
  12072. margin-top: 12px;
  12073. position: relative;
  12074. display: flex;
  12075. align-items: center;
  12076. width: 100%;
  12077. min-height: 50px;
  12078. }
  12079. .chapter_upload_t {
  12080. background-color: #fff;
  12081. position: absolute;
  12082. height: 100%;
  12083. top: 0px;
  12084. left: 0px;
  12085. border-radius: 40px;
  12086. box-sizing: border-box;
  12087. box-shadow: 0 0 3px 3px #dfdfdf;
  12088. }
  12089. .chapter_upload_o {
  12090. width: 100%;
  12091. height: 100%;
  12092. position: relative;
  12093. z-index: 1;
  12094. }
  12095. .chapter_upload_ic {
  12096. height: 30px;
  12097. float: right;
  12098. }
  12099. .chapter_upload_ic_l {
  12100. width: 50px;
  12101. height: 50px;
  12102. float: left;
  12103. }
  12104. .chapter_upload_ic_l div {
  12105. width: 30px;
  12106. height: 35px;
  12107. background: url("../../../assets/icon/icon.png");
  12108. }
  12109. .chapter_upload_ic_r {
  12110. width: 50px;
  12111. height: 50px;
  12112. float: left;
  12113. margin-left: 0px;
  12114. display: flex;
  12115. align-items: center;
  12116. }
  12117. .chapter_upload_ic_r div {
  12118. width: 25px;
  12119. height: 25px;
  12120. background-image: url("../../../assets/delete.png");
  12121. background-size: 100% 100%;
  12122. }
  12123. .chapter_upload_n {
  12124. display: flex;
  12125. text-indent: 10px;
  12126. text-decoration: none;
  12127. text-overflow: ellipsis;
  12128. white-space: nowrap;
  12129. overflow: hidden;
  12130. width: 55%;
  12131. margin-left: 10px;
  12132. cursor: pointer;
  12133. margin-top: 2px;
  12134. align-items: center;
  12135. }
  12136. .chapter_upload_l_i1 {
  12137. background-image: url("../../../assets/icon/video.png");
  12138. width: 28px;
  12139. height: 28px;
  12140. background-size: 100% 100%;
  12141. }
  12142. .chapter_upload_l_i5 {
  12143. background-image: url("../../../assets/icon/word.png");
  12144. width: 24px;
  12145. height: 24px;
  12146. background-size: 100% 100%;
  12147. }
  12148. .chapter_upload_l_i8 {
  12149. background-image: url("../../../assets/icon/line.png");
  12150. width: 24px;
  12151. height: 24px;
  12152. background-size: 100% 100%;
  12153. }
  12154. .chapter_upload_ud {
  12155. display: flex;
  12156. flex-direction: column;
  12157. margin-left: 5px;
  12158. justify-content: center;
  12159. }
  12160. .chapter_upload_up {
  12161. background-image: url("../../../assets/icon/up.png");
  12162. width: 17px;
  12163. height: 15px;
  12164. background-size: 100% 100%;
  12165. cursor: pointer;
  12166. }
  12167. .chapter_upload_down {
  12168. background-image: url("../../../assets/icon/down.png");
  12169. width: 17px;
  12170. height: 15px;
  12171. margin: 2px auto 0 auto;
  12172. background-size: 100% 100%;
  12173. cursor: pointer;
  12174. }
  12175. .addWordStyle {
  12176. display: flex;
  12177. flex-direction: row;
  12178. justify-content: flex-start;
  12179. overflow-x: auto;
  12180. white-space: nowrap;
  12181. flex-wrap: wrap;
  12182. }
  12183. /* table 样式 */
  12184. .cont >>> table {
  12185. border-top: 1px solid #ccc;
  12186. border-left: 1px solid #ccc;
  12187. }
  12188. .cont >>> table td,
  12189. .cont >>> table th {
  12190. border-bottom: 1px solid #ccc;
  12191. border-right: 1px solid #ccc;
  12192. /* padding: 20px 5px; */
  12193. padding: 5px 10px;
  12194. max-width: 0px;
  12195. height: 30px;
  12196. vertical-align: baseline;
  12197. }
  12198. .cont >>> table th {
  12199. border-bottom: 2px solid #ccc;
  12200. text-align: center;
  12201. }
  12202. /* blockquote 样式 */
  12203. .cont >>> blockquote {
  12204. display: block;
  12205. border-left: 8px solid #d0e5f2;
  12206. padding: 5px 10px;
  12207. margin: 10px 0;
  12208. line-height: 1.4;
  12209. font-size: 100%;
  12210. background-color: #f1f1f1;
  12211. }
  12212. /* code 样式 */
  12213. .cont >>> code {
  12214. display: inline-block;
  12215. *display: inline;
  12216. *zoom: 1;
  12217. background-color: #f1f1f1;
  12218. border-radius: 3px;
  12219. padding: 3px 5px;
  12220. margin: 0 3px;
  12221. }
  12222. .cont >>> pre code {
  12223. display: block;
  12224. }
  12225. /* ul ol 样式 */
  12226. .cont >>> ul,
  12227. ol {
  12228. margin: 10px 0 10px 20px;
  12229. }
  12230. .wordbox {
  12231. display: flex;
  12232. flex-wrap: wrap;
  12233. cursor: pointer;
  12234. width: 100%;
  12235. }
  12236. .checkword {
  12237. width: 22px;
  12238. height: 22px;
  12239. margin: 10px auto 0;
  12240. cursor: pointer;
  12241. }
  12242. .checkword img {
  12243. width: 100%;
  12244. }
  12245. .stepBg {
  12246. display: flex;
  12247. flex-direction: column;
  12248. justify-content: space-between;
  12249. align-items: center;
  12250. background: #fff;
  12251. width: 300px;
  12252. margin: 0 25px 0 0;
  12253. }
  12254. .stepTop {
  12255. min-width: 300px;
  12256. width: 300px;
  12257. /* border-radius: 10px; */
  12258. display: flex;
  12259. flex-direction: column;
  12260. justify-content: flex-start;
  12261. align-items: center;
  12262. flex-wrap: nowrap;
  12263. background: #fff;
  12264. /* top: 18%; */
  12265. }
  12266. .stepTop > div {
  12267. height: 80px;
  12268. width: 85%;
  12269. cursor: pointer;
  12270. margin: 10px 0;
  12271. border-radius: 10px;
  12272. }
  12273. .first,
  12274. .second,
  12275. .third,
  12276. .four {
  12277. background: #4a83d0;
  12278. height: 90px;
  12279. color: #fff;
  12280. display: flex;
  12281. flex-direction: row;
  12282. align-items: center;
  12283. justify-content: center;
  12284. }
  12285. .first > div:nth-child(1),
  12286. .second > div:nth-child(1),
  12287. .third > div:nth-child(1),
  12288. .four > div:nth-child(1) {
  12289. margin: 5px 10px 0 0;
  12290. width: 2rem;
  12291. }
  12292. .firstNo,
  12293. .secondNo,
  12294. .thirdNo,
  12295. .fourNo {
  12296. background: #e7e7e7;
  12297. color: #adadad;
  12298. display: flex;
  12299. flex-direction: row;
  12300. align-items: center;
  12301. justify-content: center;
  12302. }
  12303. .firstNo > div:nth-child(1),
  12304. .secondNo > div:nth-child(1),
  12305. .thirdNo > div:nth-child(1),
  12306. .fourNo > div:nth-child(1) {
  12307. margin: 5px 10px 0 0;
  12308. width: 2rem;
  12309. }
  12310. .uploadWidth >>> .el-upload {
  12311. width: 60px;
  12312. height: 60px;
  12313. position: relative;
  12314. }
  12315. .addPeople {
  12316. background: #fa6060;
  12317. width: 150px;
  12318. height: 40px;
  12319. color: #fff;
  12320. border-radius: 5px;
  12321. text-align: center;
  12322. line-height: 40px;
  12323. font-size: 14px;
  12324. cursor: pointer;
  12325. margin-top: 20px;
  12326. }
  12327. .kcImg {
  12328. width: 60px;
  12329. margin-left: 10px;
  12330. }
  12331. .zyImg {
  12332. width: 55px;
  12333. margin: 0 10px;
  12334. }
  12335. .deleteZy {
  12336. width: 20px;
  12337. position: absolute;
  12338. top: 5px;
  12339. right: 5px;
  12340. cursor: pointer;
  12341. }
  12342. .kcImg > img,
  12343. .zyImg > img,
  12344. .deleteZy > img {
  12345. width: 100%;
  12346. height: 100%;
  12347. }
  12348. .zyBox {
  12349. display: flex;
  12350. flex-direction: row;
  12351. align-items: center;
  12352. background: #67d37d;
  12353. color: #fff;
  12354. width: 210px;
  12355. margin: 20px 20px 0 0;
  12356. border-radius: 10px;
  12357. height: 70px;
  12358. position: relative;
  12359. }
  12360. .upCss {
  12361. display: flex;
  12362. flex-direction: row;
  12363. justify-content: flex-start;
  12364. }
  12365. .upCss >>> .el-icon-plus {
  12366. position: none !important;
  12367. width: 200px;
  12368. height: 100px;
  12369. display: flex;
  12370. flex-wrap: nowrap;
  12371. flex-direction: column;
  12372. align-items: center;
  12373. justify-content: center;
  12374. border: 1px dashed #ccc;
  12375. min-width: 78px;
  12376. min-height: 100px;
  12377. z-index: 999;
  12378. }
  12379. .upCss >>> .el-upload-list__item-name {
  12380. width: 100px;
  12381. white-space: nowrap;
  12382. overflow: hidden;
  12383. text-overflow: ellipsis;
  12384. }
  12385. .addStageImg {
  12386. min-width: 25px;
  12387. min-height: 25px;
  12388. width: 25px;
  12389. height: 25px;
  12390. cursor: pointer;
  12391. }
  12392. .addHW {
  12393. width: 28px;
  12394. height: 28px;
  12395. cursor: pointer;
  12396. }
  12397. .addStageImg > img,
  12398. .addHW > img {
  12399. width: 100%;
  12400. height: 100%;
  12401. }
  12402. .addNewPP >>> .el-dialog__body {
  12403. padding: 5px 20px;
  12404. }
  12405. .isHeight {
  12406. height: 680px;
  12407. }
  12408. .toolChoose {
  12409. display: flex;
  12410. /* width: 100%; */
  12411. flex-direction: row;
  12412. flex-wrap: wrap;
  12413. }
  12414. .tool {
  12415. display: flex;
  12416. flex-direction: column;
  12417. flex-wrap: nowrap;
  12418. width: fit-content;
  12419. margin: 10px 0 10px 0;
  12420. align-items: center;
  12421. }
  12422. .tool + .tool {
  12423. margin-right: 45px;
  12424. }
  12425. .whiteBIcon {
  12426. width: 80px;
  12427. cursor: pointer;
  12428. display: flex;
  12429. flex-direction: column;
  12430. flex-wrap: nowrap;
  12431. align-items: center;
  12432. }
  12433. .whiteBIcon > img,
  12434. .toolIcon > img,
  12435. .arrow > img {
  12436. width: 100%;
  12437. height: 100%;
  12438. }
  12439. .check img {
  12440. width: 20px;
  12441. height: 20px;
  12442. }
  12443. .whiteBIcon > img {
  12444. box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
  12445. border-radius: 15px;
  12446. }
  12447. .check {
  12448. /* width: 20px;
  12449. height: 20px; */
  12450. cursor: pointer;
  12451. margin: 10px 0;
  12452. }
  12453. .checkDiv {
  12454. display: flex;
  12455. align-items: center;
  12456. }
  12457. .checkDiv span {
  12458. margin-left: 5px;
  12459. color: #858585;
  12460. }
  12461. .customWidth >>> .el-dialog {
  12462. min-width: 500px !important;
  12463. }
  12464. .a_addBox {
  12465. margin: 10px 0;
  12466. background: #fff;
  12467. padding: 15px;
  12468. max-height: 600px;
  12469. overflow: auto;
  12470. }
  12471. .a_add_box {
  12472. border-bottom: 2px solid #eee;
  12473. padding-bottom: 25px;
  12474. }
  12475. .a_add_head {
  12476. display: flex;
  12477. align-items: center;
  12478. justify-content: space-between;
  12479. margin: 10px 0 0 0;
  12480. font-size: 18px;
  12481. }
  12482. .a_add_checkType {
  12483. margin-top: 10px;
  12484. display: flex;
  12485. font-size: 16px;
  12486. align-items: center;
  12487. }
  12488. .a_add_checkType span {
  12489. box-sizing: border-box;
  12490. padding: 0 0 5px 0;
  12491. cursor: pointer;
  12492. }
  12493. .a_add_checkType span + span {
  12494. margin-left: 10px;
  12495. }
  12496. .a_add_checkType .active {
  12497. border-bottom: 2px solid #409eff;
  12498. color: #409eff;
  12499. }
  12500. .a_add_head .a_add_head_input {
  12501. width: 300px;
  12502. }
  12503. .a_add_head .a_add_head_div {
  12504. display: flex;
  12505. align-items: center;
  12506. justify-content: space-between;
  12507. }
  12508. .a_add_body {
  12509. display: flex;
  12510. /* align-items: center; */
  12511. align-items: flex-end;
  12512. }
  12513. .a_add_input {
  12514. display: flex;
  12515. align-items: center;
  12516. flex-wrap: wrap;
  12517. }
  12518. .a_add_input_choice {
  12519. flex-direction: column;
  12520. margin-right: 10px;
  12521. }
  12522. .a_add_input_choice >>> .el-radio {
  12523. display: flex;
  12524. align-items: center;
  12525. flex-direction: row-reverse;
  12526. margin: 30px 0 0 0;
  12527. }
  12528. .a_add_input_choice >>> .el-checkbox {
  12529. display: flex;
  12530. align-items: center;
  12531. flex-direction: row-reverse;
  12532. margin: 30px 0 0 0;
  12533. }
  12534. .width100 {
  12535. width: 100%;
  12536. }
  12537. .a_add_input .a_add_persent {
  12538. width: 100%;
  12539. }
  12540. .a_add_persent_div {
  12541. width: 100%;
  12542. display: flex;
  12543. align-items: center;
  12544. }
  12545. .a_add_persent_div span {
  12546. margin: 5px 0;
  12547. }
  12548. .a_add_persent_div span:nth-child(1) {
  12549. width: 30%;
  12550. }
  12551. .a_add_persent_div span:nth-child(2) {
  12552. width: 7%;
  12553. }
  12554. .a_add_persent_div span:nth-child(3) {
  12555. width: 40%;
  12556. }
  12557. .a_add_body_div {
  12558. display: flex;
  12559. align-items: center;
  12560. justify-content: center;
  12561. /* flex-direction: column; */
  12562. }
  12563. .all_choose {
  12564. display: flex;
  12565. flex-direction: row;
  12566. align-items: flex-start;
  12567. width: 100%;
  12568. }
  12569. .all_choose > span {
  12570. min-width: 100px;
  12571. display: block;
  12572. letter-spacing: 14px;
  12573. white-space: nowrap;
  12574. overflow: hidden;
  12575. text-overflow: ellipsis;
  12576. }
  12577. .all_choose >>> .el-checkbox-group {
  12578. display: flex;
  12579. flex-direction: row;
  12580. width: 100%;
  12581. flex-wrap: wrap;
  12582. align-content: center;
  12583. justify-content: flex-start;
  12584. align-items: center;
  12585. margin-top: 3px;
  12586. }
  12587. .all_choose > .el-checkbox-group >>> .el-checkbox {
  12588. margin-bottom: 10px;
  12589. display: flex;
  12590. flex-direction: row;
  12591. align-items: center;
  12592. }
  12593. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label {
  12594. min-width: 80px;
  12595. overflow: hidden;
  12596. width: 80px;
  12597. text-overflow: ellipsis;
  12598. white-space: nowrap;
  12599. }
  12600. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label:hover {
  12601. width: auto;
  12602. }
  12603. .choose > div:nth-child(3) > span {
  12604. /* letter-spacing: 0 !important; */
  12605. }
  12606. .choose {
  12607. display: flex;
  12608. flex-direction: column;
  12609. flex-wrap: nowrap;
  12610. height: 100%;
  12611. justify-content: space-evenly;
  12612. align-items: flex-start;
  12613. }
  12614. .both {
  12615. display: flex;
  12616. flex-direction: row;
  12617. flex-wrap: wrap;
  12618. width: 100%;
  12619. align-items: center;
  12620. justify-content: flex-start;
  12621. margin: 15px 0;
  12622. }
  12623. .notice >>> .el-dialog {
  12624. width: 500px !important;
  12625. text-align: center;
  12626. }
  12627. .notice >>> .el-button {
  12628. margin-top: 20px;
  12629. }
  12630. .whiteBg {
  12631. background: #fff;
  12632. border-radius: 10px;
  12633. }
  12634. .chooseWho {
  12635. display: flex;
  12636. width: 380px;
  12637. flex-direction: row;
  12638. flex-wrap: nowrap;
  12639. justify-content: space-between;
  12640. padding-bottom: 10px;
  12641. }
  12642. .chooseWho > div {
  12643. cursor: pointer;
  12644. padding-bottom: 10px;
  12645. font-weight: bold;
  12646. }
  12647. .isChooseActive {
  12648. color: #3e88f4;
  12649. border-bottom: 2px solid #2f80f3;
  12650. }
  12651. .toolSort {
  12652. display: flex;
  12653. flex-direction: row;
  12654. flex-wrap: wrap;
  12655. justify-content: flex-start;
  12656. align-items: flex-start;
  12657. }
  12658. .toolSort > div {
  12659. margin-right: 45px;
  12660. }
  12661. .tools {
  12662. width: 100%;
  12663. display: flex;
  12664. flex-direction: column;
  12665. flex-wrap: nowrap;
  12666. align-items: flex-start;
  12667. }
  12668. .leftTools,
  12669. .rightTools {
  12670. width: 50%;
  12671. }
  12672. .rightTools {
  12673. display: flex;
  12674. flex-direction: row;
  12675. flex-wrap: nowrap;
  12676. justify-content: space-around;
  12677. }
  12678. .firstToolList {
  12679. display: flex;
  12680. flex-direction: column;
  12681. flex-wrap: nowrap;
  12682. align-items: center;
  12683. }
  12684. .iconList {
  12685. display: flex;
  12686. flex-direction: row;
  12687. flex-wrap: wrap;
  12688. justify-content: flex-start;
  12689. align-items: center;
  12690. margin: 20px 0 5px 0;
  12691. width: 240px;
  12692. min-width: 240px;
  12693. }
  12694. .iconTool {
  12695. display: flex;
  12696. flex-direction: column;
  12697. flex-wrap: nowrap;
  12698. align-items: center;
  12699. justify-content: flex-start;
  12700. margin: 15px 10px;
  12701. }
  12702. .toolIcon {
  12703. width: 50px;
  12704. }
  12705. .taskBorder {
  12706. border: 1px solid #e1e1e1;
  12707. border-radius: 10px;
  12708. margin-top: 20px;
  12709. /* min-height: 1160px; */
  12710. position: relative;
  12711. background: #fbfbfb;
  12712. }
  12713. .smallTaskBorder {
  12714. height: 170px;
  12715. min-height: 170px !important;
  12716. overflow: hidden;
  12717. }
  12718. .taskBorder > div {
  12719. padding: 30px 0 10px 30px;
  12720. }
  12721. .addTaskBorder {
  12722. border: 2px solid #e1e1e1;
  12723. border-radius: 10px;
  12724. margin-top: 25px;
  12725. cursor: pointer;
  12726. }
  12727. .addTaskBorder > div {
  12728. margin: 0 auto;
  12729. display: flex;
  12730. align-items: center;
  12731. justify-content: center;
  12732. }
  12733. .addTaskBorder > div > img {
  12734. width: 100px;
  12735. }
  12736. .addTaskBorder > div > span {
  12737. font-size: 23px;
  12738. color: #dbdbdb;
  12739. }
  12740. .funBlock {
  12741. display: flex;
  12742. padding: 15px 0;
  12743. flex-direction: row;
  12744. justify-content: flex-end;
  12745. align-items: center;
  12746. position: absolute;
  12747. right: 15px;
  12748. bottom: 35px;
  12749. }
  12750. .fold {
  12751. display: flex;
  12752. margin: 0 10px;
  12753. flex-direction: row;
  12754. align-items: center;
  12755. cursor: pointer;
  12756. }
  12757. .arrow {
  12758. width: 15px;
  12759. height: 15px;
  12760. margin-left: 10px;
  12761. }
  12762. .addToolFun {
  12763. display: flex;
  12764. width: 150px;
  12765. flex-direction: row;
  12766. align-items: center;
  12767. justify-content: center;
  12768. border: 1px dashed;
  12769. border-radius: 5px;
  12770. height: 50px;
  12771. margin: 20px auto 35px;
  12772. cursor: pointer;
  12773. }
  12774. .addToolImg {
  12775. width: 30px;
  12776. height: 30px;
  12777. margin-right: 20px;
  12778. }
  12779. .addToolsDia >>> .el-dialog__body {
  12780. padding: 20px;
  12781. }
  12782. .addToolsDia >>> .el-dialog__body > .toolChoose {
  12783. padding: 0;
  12784. }
  12785. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools {
  12786. padding: 0;
  12787. border-bottom: none;
  12788. margin-bottom: 0;
  12789. }
  12790. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools > .chooseWho {
  12791. width: 100%;
  12792. }
  12793. .lineCss >>> .el-form-item__label {
  12794. width: auto !important;
  12795. }
  12796. .lineCss >>> .el-form-item__content {
  12797. margin-left: 50px !important;
  12798. }
  12799. .newSteps {
  12800. display: flex;
  12801. width: 100% !important;
  12802. height: 80px;
  12803. cursor: pointer;
  12804. margin: 10px 0;
  12805. border-radius: 10px;
  12806. flex-direction: row;
  12807. align-content: center;
  12808. justify-content: center;
  12809. align-items: center;
  12810. margin: 0 !important;
  12811. }
  12812. /* 评价样式 */
  12813. .elist_css {
  12814. padding-bottom: 60px !important;
  12815. }
  12816. .elist_title {
  12817. margin-bottom: 10px;
  12818. }
  12819. .elist_input {
  12820. }
  12821. .elist_input_box {
  12822. display: flex;
  12823. align-items: center;
  12824. flex-wrap: wrap;
  12825. }
  12826. .elist_input_box + .elist_input_box {
  12827. margin-top: 30px;
  12828. }
  12829. .elist_input .elist_input_box input {
  12830. font: inherit;
  12831. color: currentColor;
  12832. /* width: 200px; */
  12833. max-width: 200px;
  12834. padding: 8px 14px;
  12835. display: block;
  12836. min-width: 0;
  12837. outline: none;
  12838. border: 1px solid rgba(0, 0, 0, 0.23);
  12839. border-radius: 4px;
  12840. box-sizing: border-box;
  12841. background: #fff;
  12842. margin: 0 20px 0 0;
  12843. }
  12844. .elist_input .elist_input_box span {
  12845. height: 36px;
  12846. line-height: 36px;
  12847. color: rgb(82, 82, 82);
  12848. min-width: 80px;
  12849. }
  12850. .elist_input .elist_input_box .remove {
  12851. height: 20px;
  12852. width: 20px;
  12853. background-size: 100% 100%;
  12854. background-position: unset;
  12855. margin-left: 5px;
  12856. }
  12857. .elist_input_box >>> .el-rate {
  12858. display: flex;
  12859. height: 36px;
  12860. align-items: center;
  12861. }
  12862. .elist_input_box .elist_inptu_text {
  12863. width: 100%;
  12864. display: flex;
  12865. align-items: center;
  12866. margin-top: 10px;
  12867. }
  12868. .elist_input_box .elist_inptu_text input {
  12869. /* width: 500px; */
  12870. width: 100%;
  12871. max-width: unset;
  12872. }
  12873. .elist_input_box >>> .el-rate__icon {
  12874. font-size: 24px;
  12875. }
  12876. .elist_btn {
  12877. margin-top: 10px;
  12878. }
  12879. .lineTitle {
  12880. margin-top: 15px;
  12881. width: 110px;
  12882. }
  12883. .courseTop {
  12884. display: flex;
  12885. flex-direction: row;
  12886. justify-content: flex-start;
  12887. align-items: center;
  12888. width: calc(100% - 40px);
  12889. padding: 20px 0;
  12890. margin: 0 auto;
  12891. }
  12892. .stepsNav {
  12893. display: flex;
  12894. flex-direction: row;
  12895. justify-content: flex-start;
  12896. align-items: center;
  12897. }
  12898. .stepsWord {
  12899. font-size: 18px;
  12900. color: #fff;
  12901. font-weight: bold;
  12902. margin-left: auto;
  12903. background: rgb(15, 126, 255);
  12904. border-radius: 5px;
  12905. padding: 3px 25px;
  12906. box-sizing: border-box;
  12907. }
  12908. .rightBox {
  12909. width: calc(100% - 40px);
  12910. background: rgb(255, 255, 255);
  12911. border-radius: 10px;
  12912. overflow: auto;
  12913. height: calc(100% - 160px);
  12914. position: relative;
  12915. margin: 0px auto 0;
  12916. }
  12917. .e_add_top {
  12918. display: flex;
  12919. justify-content: space-between;
  12920. padding: 20px 20px 0 20px;
  12921. border-radius: 3px;
  12922. background: #fff;
  12923. }
  12924. .e_add_title2 {
  12925. display: flex;
  12926. align-items: center;
  12927. }
  12928. .e_add_title2 span {
  12929. width: 40px;
  12930. }
  12931. .e_add_title {
  12932. display: flex;
  12933. align-items: center;
  12934. color: #b8b8b8;
  12935. font-size: 18px;
  12936. position: relative;
  12937. height: 40px;
  12938. }
  12939. .e_add_title span {
  12940. margin-right: 10px;
  12941. }
  12942. .e_add_title .el_input {
  12943. width: 300px;
  12944. }
  12945. .e_add_title >>> .el-input__inner {
  12946. width: 400px;
  12947. }
  12948. .e_add_btn {
  12949. }
  12950. .e_add_content {
  12951. display: flex;
  12952. width: 100%;
  12953. }
  12954. .e_add_list {
  12955. background: #fff;
  12956. height: 500px;
  12957. width: 210px;
  12958. position: relative;
  12959. margin: 15px 5px 0 0;
  12960. flex-shrink: 0;
  12961. display: flex;
  12962. flex-direction: column;
  12963. }
  12964. .e_add_list_title {
  12965. font-size: 20px;
  12966. width: 100%;
  12967. box-sizing: border-box;
  12968. padding: 15px 40px;
  12969. text-align: center;
  12970. border-bottom: 1px solid #eaeaea;
  12971. position: relative;
  12972. display: flex;
  12973. align-items: center;
  12974. justify-content: center;
  12975. height: 57px;
  12976. background: #f6f6f6;
  12977. }
  12978. .e_add_list_title span {
  12979. overflow: hidden;
  12980. white-space: nowrap;
  12981. text-overflow: ellipsis;
  12982. }
  12983. .e_add_list_title img {
  12984. position: absolute;
  12985. right: 15px;
  12986. width: 25px;
  12987. cursor: pointer;
  12988. top: 50%;
  12989. transform: translateY(-50%);
  12990. }
  12991. .e_add_list_body {
  12992. height: calc(100% - 187px);
  12993. overflow: auto;
  12994. }
  12995. .e_add_list_child {
  12996. width: 100%;
  12997. display: flex;
  12998. align-items: center;
  12999. justify-content: center;
  13000. position: relative;
  13001. box-sizing: border-box;
  13002. padding: 15px 40px;
  13003. text-align: center;
  13004. }
  13005. .e_add_list_child span {
  13006. overflow: hidden;
  13007. white-space: nowrap;
  13008. text-overflow: ellipsis;
  13009. cursor: pointer;
  13010. }
  13011. .e_add_list_child img {
  13012. position: absolute;
  13013. right: 10px;
  13014. width: 21px;
  13015. cursor: pointer;
  13016. top: 50%;
  13017. transform: translateY(-50%);
  13018. }
  13019. .e_add_list_child + .e_add_list_child {
  13020. border-top: 1px solid #eaeaea;
  13021. }
  13022. .e_add_list_child .active {
  13023. color: #409eff;
  13024. }
  13025. .e_add_list_btn {
  13026. position: absolute;
  13027. bottom: 0;
  13028. height: 50px;
  13029. background: rgb(120, 120, 254);
  13030. width: 100%;
  13031. color: #fff;
  13032. font-size: 16px;
  13033. text-align: center;
  13034. line-height: 50px;
  13035. cursor: pointer;
  13036. }
  13037. .e_add_list_detail {
  13038. position: absolute;
  13039. bottom: 0;
  13040. height: 130px;
  13041. background: rgb(120, 120, 254);
  13042. width: 100%;
  13043. color: #fff;
  13044. font-size: 16px;
  13045. display: flex;
  13046. align-items: center;
  13047. justify-content: center;
  13048. }
  13049. .e_add_list_detail textarea {
  13050. height: 90%;
  13051. width: 95%;
  13052. border: none;
  13053. resize: none;
  13054. outline: none;
  13055. padding: 5px;
  13056. box-sizing: border-box;
  13057. }
  13058. .e_add_list_pbox {
  13059. width: 100%;
  13060. }
  13061. .e_add_list_pbox_title {
  13062. height: 50px;
  13063. background: #fff;
  13064. display: flex;
  13065. align-items: center;
  13066. width: 100%;
  13067. box-sizing: border-box;
  13068. padding: 0 20px;
  13069. flex-direction: row;
  13070. flex-wrap: wrap;
  13071. }
  13072. .type_title {
  13073. font-size: 18px;
  13074. font-weight: 700;
  13075. }
  13076. .type_content {
  13077. font-size: 16px;
  13078. margin-left: 30px;
  13079. }
  13080. .type_content span + span {
  13081. margin-left: 20px;
  13082. }
  13083. .type_content span {
  13084. cursor: pointer;
  13085. padding-bottom: 5px;
  13086. box-sizing: border-box;
  13087. }
  13088. .type_content .active {
  13089. color: #409eff;
  13090. border-bottom: 2px solid #409eff;
  13091. }
  13092. .e_add_list_pbox_content {
  13093. height: calc(100% - 50px);
  13094. display: flex;
  13095. align-items: center;
  13096. width: 100%;
  13097. background: #fff;
  13098. }
  13099. .mbCss {
  13100. width: 100%;
  13101. display: flex;
  13102. flex-direction: row;
  13103. flex-wrap: nowrap;
  13104. align-content: center;
  13105. align-items: flex-start;
  13106. justify-content: flex-start;
  13107. }
  13108. .pjCss {
  13109. /* width: 42%; */
  13110. width: calc(100% - 55%);
  13111. display: flex;
  13112. flex-direction: column;
  13113. flex-wrap: nowrap;
  13114. align-items: flex-start;
  13115. margin-top: 1.5%;
  13116. }
  13117. .e_box {
  13118. display: flex;
  13119. flex-wrap: wrap;
  13120. max-height: 500px;
  13121. align-items: flex-start;
  13122. overflow: auto;
  13123. }
  13124. .e_card {
  13125. border: 1px solid #ccc;
  13126. background: #fff;
  13127. margin-right: 20px;
  13128. width: 270px;
  13129. display: flex;
  13130. flex-direction: column;
  13131. align-items: center;
  13132. border-radius: 5px;
  13133. margin-top: 10px;
  13134. text-align: center;
  13135. }
  13136. .e_card_picture {
  13137. margin: 10px 0;
  13138. }
  13139. .e_card_picture > img {
  13140. width: 50px;
  13141. }
  13142. .e_card_name {
  13143. width: 100%;
  13144. padding: 0 10px;
  13145. box-sizing: border-box;
  13146. margin-bottom: 10px;
  13147. overflow: hidden;
  13148. text-overflow: ellipsis;
  13149. white-space: nowrap;
  13150. }
  13151. .e_card_time {
  13152. width: 100%;
  13153. padding: 0 10px;
  13154. box-sizing: border-box;
  13155. font-size: 15px;
  13156. color: #c3c3c3;
  13157. margin-bottom: 10px;
  13158. }
  13159. .e_card_btn {
  13160. height: 40px;
  13161. display: flex;
  13162. align-items: center;
  13163. width: 100%;
  13164. background: rgb(244, 244, 244);
  13165. }
  13166. .e_card_btn:hover {
  13167. background: rgb(221 221 221);
  13168. }
  13169. .e_card_btn span {
  13170. flex: 1 1 auto;
  13171. text-align: center;
  13172. cursor: pointer;
  13173. }
  13174. .addEva {
  13175. border: 1px solid #ccc;
  13176. background: #fff;
  13177. margin-right: 20px;
  13178. width: 270px;
  13179. height: 149px;
  13180. display: flex;
  13181. flex-direction: column;
  13182. align-items: center;
  13183. border-radius: 5px;
  13184. margin-top: 10px;
  13185. text-align: center;
  13186. cursor: pointer;
  13187. justify-content: center;
  13188. }
  13189. .addEva > img {
  13190. width: 50px;
  13191. object-fit: cover;
  13192. }
  13193. .uploadFm {
  13194. border: 1px dashed #ccc;
  13195. width: 202px;
  13196. height: 102px;
  13197. position: relative;
  13198. cursor: pointer;
  13199. }
  13200. .uploadFm > img {
  13201. position: absolute;
  13202. top: 25px;
  13203. left: 35%;
  13204. width: 50px;
  13205. }
  13206. .fileCss {
  13207. width: 100%;
  13208. display: flex;
  13209. flex-direction: row;
  13210. flex-wrap: nowrap;
  13211. justify-content: space-around;
  13212. align-items: center;
  13213. padding-top: 15px;
  13214. }
  13215. .sysPicBox {
  13216. display: flex;
  13217. flex-direction: row;
  13218. flex-wrap: wrap;
  13219. align-content: flex-start;
  13220. height: 435px;
  13221. overflow: auto;
  13222. }
  13223. .sysPic {
  13224. width: 200px;
  13225. height: 115px;
  13226. margin: 0 20px 20px 0;
  13227. cursor: pointer;
  13228. }
  13229. .sysPic > img,
  13230. .isSysPic > img,
  13231. .deletePic > img {
  13232. width: 100%;
  13233. height: 100%;
  13234. object-fit: cover;
  13235. }
  13236. .isSysPic {
  13237. width: 200px;
  13238. height: 115px;
  13239. position: relative;
  13240. }
  13241. .deletePic {
  13242. width: 20px;
  13243. height: 20px;
  13244. position: absolute;
  13245. top: 0;
  13246. right: 0;
  13247. cursor: pointer;
  13248. }
  13249. .select_box1 {
  13250. }
  13251. .select_box1_img {
  13252. background: #fff;
  13253. border-radius: 5px;
  13254. padding: 15px;
  13255. box-sizing: border-box;
  13256. margin-bottom: 20px;
  13257. }
  13258. .select_box1_title {
  13259. padding: 0 0 15px 0;
  13260. border-bottom: 1px solid #eee;
  13261. margin-bottom: 15px;
  13262. }
  13263. .select_box1_title span:nth-child(1) {
  13264. font-size: 16px;
  13265. margin-right: 20px;
  13266. color: #000;
  13267. }
  13268. .select_box1_title span:nth-child(2) {
  13269. font-size: 14px;
  13270. color: rgb(112, 112, 112);
  13271. }
  13272. .select_box1_add_img {
  13273. }
  13274. .select_box1_select {
  13275. background: #fff;
  13276. border-radius: 5px;
  13277. padding: 15px;
  13278. box-sizing: border-box;
  13279. }
  13280. .select_box2 {
  13281. }
  13282. .select_box2_title {
  13283. background: #fff;
  13284. border-radius: 5px;
  13285. padding: 5px 10px;
  13286. box-sizing: border-box;
  13287. margin-bottom: 10px;
  13288. }
  13289. .select_box2_box {
  13290. display: flex;
  13291. height: 500px;
  13292. }
  13293. .select_box2_img {
  13294. width: calc(100% - 310px);
  13295. height: 100%;
  13296. overflow: auto;
  13297. background: #fff;
  13298. border-radius: 5px;
  13299. }
  13300. .select_box2_img img {
  13301. width: 100%;
  13302. }
  13303. .select_box2_answer {
  13304. background: #fff;
  13305. margin-left: 10px;
  13306. border-radius: 5px;
  13307. width: 300px;
  13308. overflow: auto;
  13309. height: 100%;
  13310. display: flex;
  13311. flex-direction: column;
  13312. align-items: center;
  13313. padding-top: 10px;
  13314. box-sizing: border-box;
  13315. }
  13316. .select_box2_answer_box {
  13317. margin: 0 0 10px 0;
  13318. width: 85%;
  13319. }
  13320. .rate_textarea {
  13321. font: inherit;
  13322. color: currentColor;
  13323. width: 100%;
  13324. padding: 8px 14px;
  13325. display: block;
  13326. min-width: 0;
  13327. outline: none;
  13328. border: 1px solid rgba(0, 0, 0, 0.23);
  13329. border-radius: 4px;
  13330. box-sizing: border-box;
  13331. background: #fff;
  13332. margin: 0 20px 0 0;
  13333. resize: none;
  13334. }
  13335. .select_answer_title {
  13336. text-align: left;
  13337. width: 85%;
  13338. margin-bottom: 10px;
  13339. font-size: 18px;
  13340. color: #8e8e8e;
  13341. }
  13342. .mask {
  13343. background-color: rgb(0 0 0 / 30%);
  13344. /* position: fixed; */
  13345. position: absolute;
  13346. top: 0;
  13347. left: 0;
  13348. width: 100%;
  13349. height: 100%;
  13350. z-index: 90;
  13351. display: flex;
  13352. align-items: center;
  13353. justify-content: center;
  13354. }
  13355. .progressBox {
  13356. width: 300px;
  13357. height: 150px;
  13358. background: #fff;
  13359. border-radius: 10px;
  13360. box-shadow: 0 0 6px 1px #bfbfbf;
  13361. display: flex;
  13362. align-items: center;
  13363. justify-content: center;
  13364. flex-direction: column;
  13365. position: relative;
  13366. color: #6c6c6c;
  13367. }
  13368. .progressBox >>> .el-progress-bar__outer {
  13369. background-color: #d1dfff !important;
  13370. }
  13371. .progressBox .lbox {
  13372. height: 50px;
  13373. font-size: 19px;
  13374. display: flex;
  13375. align-items: center;
  13376. color: #747474;
  13377. }
  13378. .progressBox .lbox img {
  13379. width: 40px;
  13380. margin-right: 20px;
  13381. }
  13382. .closeCss {
  13383. position: absolute;
  13384. top: 8px;
  13385. right: 8px;
  13386. cursor: pointer;
  13387. width: 20px;
  13388. height: 20px;
  13389. }
  13390. .closeCss > img {
  13391. width: 100%;
  13392. height: 100%;
  13393. }
  13394. .updateTips::after {
  13395. content: "协同编辑课程暂不支持修改基本信息,只支持修改阶段内容。";
  13396. font-size: 14px;
  13397. margin-left: 20px;
  13398. font-weight: 400;
  13399. color: #ff3a3a;
  13400. }
  13401. .updateMask {
  13402. width: 100%;
  13403. z-index: 3;
  13404. top: 0;
  13405. position: absolute;
  13406. /* background-color: rgba(0,0,0,.3); */
  13407. }
  13408. .t_j_box {
  13409. display: flex;
  13410. }
  13411. .t_j_box span:nth-child(1) {
  13412. width: 15%;
  13413. overflow: hidden;
  13414. margin-right: 10px;
  13415. text-overflow: ellipsis;
  13416. white-space: nowrap;
  13417. }
  13418. .t_j_box span:nth-child(2) {
  13419. width: 30%;
  13420. overflow: hidden;
  13421. text-overflow: ellipsis;
  13422. margin-right: 10px;
  13423. }
  13424. .t_j_box span:nth-child(3) {
  13425. max-width: calc(55% - 20px);
  13426. overflow: hidden;
  13427. text-overflow: ellipsis;
  13428. }
  13429. .sentenBox {
  13430. background: #fff;
  13431. height: 600px;
  13432. overflow: auto;
  13433. background-image: url("../../../assets/icon/conSentences/csBg.png");
  13434. background-position: 102%;
  13435. background-repeat: no-repeat;
  13436. background-size: 60%;
  13437. }
  13438. .addSen {
  13439. background: #409efe;
  13440. width: 90px;
  13441. color: #fff;
  13442. height: 35px;
  13443. text-align: center;
  13444. line-height: 35px;
  13445. border-radius: 5px;
  13446. float: right;
  13447. margin: 10px 20px 0 0;
  13448. cursor: pointer;
  13449. }
  13450. .sentenTop {
  13451. display: flex;
  13452. flex-direction: row;
  13453. flex-wrap: nowrap;
  13454. align-items: center;
  13455. }
  13456. .sentenTop > div:nth-child(2) {
  13457. width: 300px;
  13458. margin: 0 15px;
  13459. }
  13460. .sentenTop > div:nth-child(3) {
  13461. background: #409efe;
  13462. color: #fff;
  13463. width: 65px;
  13464. height: 35px;
  13465. text-align: center;
  13466. line-height: 35px;
  13467. border-radius: 5px;
  13468. cursor: pointer;
  13469. }
  13470. .cardList {
  13471. padding: 30px 0 20px 0;
  13472. display: flex;
  13473. flex-direction: row;
  13474. flex-wrap: wrap;
  13475. align-items: center;
  13476. box-sizing: border-box;
  13477. border-bottom: 1px solid #f4f4f4;
  13478. width: 98%;
  13479. margin: 0 auto;
  13480. }
  13481. .cardBox {
  13482. display: flex;
  13483. flex-direction: row;
  13484. flex-wrap: wrap;
  13485. align-items: center;
  13486. align-content: center;
  13487. }
  13488. .isCard,
  13489. .isCard1 {
  13490. width: 140px;
  13491. height: 65px;
  13492. text-align: center;
  13493. line-height: 65px;
  13494. font-size: 20px;
  13495. cursor: pointer;
  13496. background-image: url("../../../assets/icon/conSentences/titleBorder.png");
  13497. background-size: cover;
  13498. position: relative;
  13499. z-index: 99;
  13500. }
  13501. .isCard1 {
  13502. background-image: url("../../../assets/icon/conSentences/answerBorder.png");
  13503. }
  13504. .isCard:hover .deleteWord {
  13505. display: block;
  13506. }
  13507. .isCard > div:nth-child(1),
  13508. .isCard1 > div:nth-child(1) {
  13509. white-space: nowrap;
  13510. overflow: hidden;
  13511. text-overflow: ellipsis;
  13512. width: 80%;
  13513. margin: 0 auto;
  13514. }
  13515. .card {
  13516. width: 140px;
  13517. height: 65px;
  13518. }
  13519. .card > img {
  13520. width: 100%;
  13521. height: 100%;
  13522. }
  13523. .rightCardBox {
  13524. margin: 10px 0 0 10px;
  13525. }
  13526. .rightCardBox > div:nth-child(1) {
  13527. margin-bottom: 10px;
  13528. }
  13529. .cardCss {
  13530. display: flex;
  13531. flex-direction: column;
  13532. flex-wrap: nowrap;
  13533. align-items: center;
  13534. border-bottom: 3px solid #b4c3d3;
  13535. padding: 0 0 5px 0;
  13536. margin-right: 10px;
  13537. }
  13538. .cardCss > div:nth-child(2) {
  13539. background: #5b7b9d;
  13540. color: #fff;
  13541. width: 20px;
  13542. height: 20px;
  13543. border-radius: 50%;
  13544. text-align: center;
  13545. line-height: 20px;
  13546. }
  13547. .sentenTopBox {
  13548. display: flex;
  13549. flex-direction: row;
  13550. flex-wrap: nowrap;
  13551. align-items: center;
  13552. justify-content: space-between;
  13553. padding: 55px 0 0 20px;
  13554. box-sizing: border-box;
  13555. width: 85%;
  13556. }
  13557. .stepsBottom {
  13558. width: 85%;
  13559. margin-bottom: 20px;
  13560. box-shadow: 0 0 10px 10px #f7f7f7;
  13561. background: #f7f7f7;
  13562. border-radius: 10px;
  13563. overflow: hidden;
  13564. }
  13565. .course_left {
  13566. width: 300px;
  13567. height: auto;
  13568. position: relative;
  13569. }
  13570. .stepsBottom2 {
  13571. width: 300px;
  13572. margin: 20px 0;
  13573. /* box-shadow: 0 0 10px 10px #f7f7f7; */
  13574. /* background: #f7f7f7; */
  13575. border-radius: 10px;
  13576. overflow: hidden;
  13577. height: fit-content;
  13578. position: relative;
  13579. /* transition: all .5s; */
  13580. }
  13581. .navTop {
  13582. background: #53749b;
  13583. color: #fff;
  13584. height: 40px;
  13585. line-height: 40px;
  13586. padding-left: 15px;
  13587. font-size: 18px;
  13588. }
  13589. .navBottom {
  13590. background: #6b91b7;
  13591. height: 300px;
  13592. overflow: auto;
  13593. }
  13594. .navTask {
  13595. display: flex;
  13596. flex-direction: row;
  13597. flex-wrap: nowrap;
  13598. align-items: center;
  13599. padding: 5px 5px 5px 0;
  13600. cursor: pointer;
  13601. background: #ffffff;
  13602. width: 95%;
  13603. margin: 10px auto;
  13604. box-sizing: border-box;
  13605. border-radius: 5px;
  13606. }
  13607. .isNavTask {
  13608. /* background: #7e9ebd; */
  13609. }
  13610. .navTask > div:nth-child(1) {
  13611. background: #468fe4;
  13612. color: #fff;
  13613. width: 65px;
  13614. height: 25px;
  13615. line-height: 25px;
  13616. text-align: center;
  13617. border-radius: 5px;
  13618. margin: 0 10px 0 5px;
  13619. font-size: 14px;
  13620. }
  13621. .navTask > div:nth-child(2) {
  13622. /* color: #fff; */
  13623. /* max-width: 130px; */
  13624. width: 130px;
  13625. white-space: nowrap;
  13626. overflow: hidden;
  13627. text-overflow: ellipsis;
  13628. font-size: 15px;
  13629. }
  13630. .groupBox {
  13631. }
  13632. .groupContent + .groupContent {
  13633. margin-top: 30px;
  13634. }
  13635. .groupTitle {
  13636. font-size: 24px;
  13637. color: rgb(80, 80, 80);
  13638. margin-bottom: 20px;
  13639. }
  13640. .groupName {
  13641. display: flex;
  13642. align-items: center;
  13643. }
  13644. .groupn {
  13645. font-size: 15px;
  13646. margin-right: 10px;
  13647. }
  13648. .groupName + .groupName {
  13649. margin-top: 15px;
  13650. }
  13651. .groupBtn {
  13652. margin-left: 10px;
  13653. }
  13654. .groupContent >>> .el-input-number.is-without-controls .el-input__inner {
  13655. text-align: left;
  13656. }
  13657. .radioBox > div {
  13658. margin: 10px 0 0 10px;
  13659. }
  13660. .radioBox >>> .el-radio__input,
  13661. .radioBox >>> .el-checkbox__inner {
  13662. margin-left: 10px;
  13663. }
  13664. .radioBox >>> .el-radio__label,
  13665. .radioBox >>> .el-checkbox__label {
  13666. display: flex;
  13667. align-items: center;
  13668. }
  13669. .inImg {
  13670. width: 50px;
  13671. }
  13672. .inImg > img {
  13673. width: 100%;
  13674. height: 100%;
  13675. object-fit: cover;
  13676. }
  13677. .upCss >>> .el-upload-list--picture .el-upload-list__item {
  13678. height: auto;
  13679. }
  13680. .upCss >>> .el-upload-list--picture .el-upload-list__item-thumbnail {
  13681. width: 200px;
  13682. height: 100px;
  13683. object-fit: contain;
  13684. background: unset;
  13685. }
  13686. .upCss
  13687. >>> .el-upload-list--picture
  13688. .el-upload-list__item.is-success
  13689. .el-upload-list__item-name {
  13690. display: none;
  13691. }
  13692. .tcMember + .tcMember::before {
  13693. content: "、";
  13694. }
  13695. .xzUpImg {
  13696. width: 25px;
  13697. height: 25px;
  13698. cursor: pointer;
  13699. }
  13700. .xzUpImg > img {
  13701. width: 100%;
  13702. height: 100%;
  13703. }
  13704. .closeCss {
  13705. position: absolute;
  13706. top: 8px;
  13707. right: 8px;
  13708. cursor: pointer;
  13709. width: 20px;
  13710. height: 20px;
  13711. }
  13712. .closeCss > img {
  13713. width: 100%;
  13714. height: 100%;
  13715. }
  13716. .moveBtn {
  13717. display: flex;
  13718. flex-direction: column;
  13719. align-items: flex-end;
  13720. width: 40px;
  13721. }
  13722. .timuUpImg {
  13723. display: flex;
  13724. flex-direction: row;
  13725. align-items: center;
  13726. }
  13727. .timuUpImg > div:nth-child(1) {
  13728. margin-right: 10px;
  13729. }
  13730. .timuImgBox {
  13731. margin: 10px 0;
  13732. display: flex;
  13733. flex-direction: column;
  13734. flex-wrap: wrap;
  13735. align-items: flex-start;
  13736. }
  13737. .timuImg {
  13738. width: 100px;
  13739. margin: 5px 0;
  13740. cursor: pointer;
  13741. position: relative;
  13742. }
  13743. .timuImg:hover .deleteWord {
  13744. display: block;
  13745. }
  13746. .deleteWord {
  13747. width: 25px;
  13748. height: 25px;
  13749. position: absolute;
  13750. right: -5px;
  13751. top: -5px;
  13752. cursor: pointer;
  13753. display: none;
  13754. }
  13755. .timuImg > img,
  13756. .deleteWord > img {
  13757. width: 100%;
  13758. height: 100%;
  13759. object-fit: cover;
  13760. }
  13761. .e_add_delete {
  13762. cursor: pointer;
  13763. margin-left: 10px;
  13764. }
  13765. .pType_box {
  13766. margin-top: 30px;
  13767. align-items: flex-end;
  13768. }
  13769. .noneBox {
  13770. height: 100%;
  13771. width: 100%;
  13772. display: flex;
  13773. align-items: center;
  13774. justify-content: center;
  13775. margin-top: 150px;
  13776. }
  13777. .noneBox > img {
  13778. width: 300px;
  13779. }
  13780. </style>