addCourse.vue 205 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772
  1. <template>
  2. <div class="pb_content">
  3. <div class="pb_content_body" style="position: relative; margin: 0">
  4. <div class="right">
  5. <div class="stepBg">
  6. <div v-if="steps == 1" class="first" @click="navSteps(1)">
  7. <div>
  8. <img src="../../assets/icon/first.png" alt />
  9. </div>
  10. <div>填写基本信息</div>
  11. </div>
  12. <div v-else class="firstNo" @click="navSteps(1)">
  13. <div>
  14. <img src="../../assets/icon/firstNo.png" alt />
  15. </div>
  16. <div>填写基本信息</div>
  17. </div>
  18. <div v-show="cidType === 0" class="secondNo">
  19. <div v-if="steps == 2" class="newSteps second" @click="navSteps(2)">
  20. <div style="margin: 5px 10px 0 0; width: 2rem">
  21. <img src="../../assets/icon/second.png" alt />
  22. </div>
  23. <div>选择课程框架</div>
  24. </div>
  25. <div v-else class="newSteps secondNo" @click="navSteps(2)">
  26. <div>
  27. <img src="../../assets/icon/secondNo.png" alt />
  28. </div>
  29. <div>选择课程框架</div>
  30. </div>
  31. </div>
  32. <div v-if="steps == 3" class="third" @click="navSteps(3)">
  33. <div>
  34. <img src="../../assets/icon/third.png" alt />
  35. </div>
  36. <div>上传课程内容</div>
  37. </div>
  38. <div v-else class="thirdNo" @click="navSteps(3)">
  39. <div>
  40. <img src="../../assets/icon/thirdNo.png" alt />
  41. </div>
  42. <div>上传课程内容</div>
  43. </div>
  44. <div v-if="steps == 4" class="four">
  45. <div>
  46. <img src="../../assets/icon/four.png" alt />
  47. </div>
  48. <div>上传完成</div>
  49. </div>
  50. <div v-else class="fourNo">
  51. <div>
  52. <img src="../../assets/icon/fourNo.png" alt />
  53. </div>
  54. <div>上传完成</div>
  55. </div>
  56. </div>
  57. <!-- <div style="display: flex; margin-top: 20px; position: relative"> -->
  58. <div style="width: 100%; height: 100%; overflow: auto" ref="stepBox">
  59. <div class="courseTop">
  60. <div class="stepsNav">
  61. <h3 class="info_title" v-if="steps == 1">课程内容填写</h3>
  62. <h3 class="info_title" v-if="steps == 2">请选择课程框架</h3>
  63. <h3 class="info_title" v-if="steps == 3">课程内容填写</h3>
  64. <h3 class="info_title" v-if="steps == 4">上传课程</h3>
  65. <el-breadcrumb
  66. separator-class="el-icon-arrow-right"
  67. style="margin-top: 15px"
  68. >
  69. <el-breadcrumb-item
  70. :to="{ path: '/course?userid=' + userid + '&oid=' + oid }"
  71. >课程管理</el-breadcrumb-item
  72. >
  73. <el-breadcrumb-item>
  74. <span style="color: rgb(15, 126, 255)">添加课程</span>
  75. </el-breadcrumb-item>
  76. </el-breadcrumb>
  77. </div>
  78. <div
  79. v-if="steps == 1 || steps == 2 || steps == 3"
  80. class="stepsWord"
  81. >
  82. {{
  83. steps == 1
  84. ? "第一步"
  85. : steps == 2
  86. ? "第二步"
  87. : steps == 3
  88. ? "第三步"
  89. : ""
  90. }}
  91. </div>
  92. </div>
  93. <div class="rightBox" v-if="this.steps == 1">
  94. <div class="whiteBg">
  95. <div class="right_title">课程基本信息</div>
  96. <div class="basic_box">
  97. <div class="big_box">
  98. <div class="left_first">
  99. <div>
  100. <div>
  101. <div class="bInfo_title" style="margin-bottom: 15px">
  102. <!-- <span style="color: red">*</span> -->
  103. 课程名称
  104. </div>
  105. <div style="display: flex; margin-right: 20px">
  106. <img
  107. src="../../assets/icon/projectName.png"
  108. alt
  109. style="margin-right: 8px"
  110. />
  111. <input
  112. type="text"
  113. placeholder="请输入课程名称"
  114. class="binfo_input"
  115. v-model="courseName"
  116. />
  117. </div>
  118. </div>
  119. <div class="both">
  120. <div class="choose">
  121. <div
  122. class="all_choose"
  123. v-for="(item, index) in CourseType[0]"
  124. :key="index"
  125. >
  126. <span>{{ item.name }}</span>
  127. <el-checkbox-group v-model="courseTypeId">
  128. <el-checkbox
  129. v-for="item1 in CourseTypeJson[item.id]"
  130. :key="item1.id"
  131. :label="item1.id"
  132. >{{ item1.name }}</el-checkbox
  133. >
  134. </el-checkbox-group>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="whiteBg" style="border-radius: 0">
  144. <div class="right_first">
  145. <div class="right_title">上传封面与成员</div>
  146. <div
  147. style="
  148. padding: 0 0 50px 20px;
  149. display: flex;
  150. align-items: baseline;
  151. justify-content: flex-start;
  152. margin: 0 auto;
  153. "
  154. >
  155. <div>
  156. <div class="bInfo_title" style="margin-top: 0 !important">
  157. 课程封面
  158. </div>
  159. <div
  160. class="uploadFm"
  161. @click="choosePicVisible = true"
  162. v-if="cover.length == 0"
  163. >
  164. <img src="../../assets/icon/addPoster.png" alt="" />
  165. </div>
  166. <el-upload
  167. :class="{ disUoloadSty: noneBtnImg }"
  168. class="upCss"
  169. action="#"
  170. list-type="picture"
  171. v-loading="uploadLoading1"
  172. :http-request="beforeUpload1"
  173. ref="upload1"
  174. :on-preview="handlePictureCardPreview"
  175. :on-remove="handle_remove1"
  176. :show-file-list="true"
  177. :file-list="cover"
  178. accept="image/*"
  179. :limit="1"
  180. :on-exceed="onExceed"
  181. v-else
  182. >
  183. <i class="el-icon-plus"></i>
  184. </el-upload>
  185. </div>
  186. <div
  187. style="
  188. display: flex;
  189. flex-flow: row nowrap;
  190. flex-direction: row;
  191. flex-wrap: wrap;
  192. align-items: baseline;
  193. margin: 0 30px;
  194. "
  195. >
  196. <!-- <div style="margin: 0 80px">
  197. <div class="bInfo_title">
  198. 选择项目成员
  199. </div>
  200. <div
  201. class="addPeople"
  202. @click="addPP"
  203. v-if="this.checkboxList.length == 0"
  204. >添加成员</div>
  205. <div class="addPeople" @click="addPP" v-else>已添加,点击查看</div>
  206. </div>-->
  207. <div style="margin: 0 30px 0 0">
  208. <div class="bInfo_title">添加权限</div>
  209. <div class="addPeople" @click="dialogVisibleClass = true">
  210. 添加权限
  211. </div>
  212. </div>
  213. <div
  214. style="flex: 0.5 1 0%; margin: 0"
  215. v-if="courseUserid != '' ? courseUserid == userid : true"
  216. >
  217. <div class="bInfo_title">协同编辑</div>
  218. <div
  219. class="addPeople"
  220. @click="dialogVisibleMember = true"
  221. style="background: #6b92c9"
  222. >
  223. 添加协同成员
  224. </div>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. </div>
  230. <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
  231. <div class="right_title">课程简要描述</div>
  232. <div style="width: 95%; margin: 15px auto">
  233. <div style="width: 55%">
  234. <textarea
  235. rows="8"
  236. class="binfo_input"
  237. cols
  238. v-model="courseText"
  239. ></textarea>
  240. </div>
  241. </div>
  242. <!-- <div style="width: 95%; margin: 15px auto">
  243. <el-switch
  244. v-model="isTeacherSee"
  245. active-text="允许给其他老师查看"
  246. style="padding-bottom: 30px"
  247. ></el-switch>
  248. </div>-->
  249. <div style="width: 95%; margin: 15px auto">
  250. <el-switch
  251. v-model="isTeacherSee"
  252. active-text="是否公开此课程"
  253. style="padding-bottom: 30px"
  254. ></el-switch>
  255. </div>
  256. </div>
  257. <div
  258. class="whiteBg"
  259. style="border-radius: 0; margin-top: 15px; padding-bottom: 20px"
  260. >
  261. <div class="right_title">目标管理</div>
  262. <div style="margin: 15px auto; padding: 0 0 0 20px">
  263. <div
  264. style="
  265. width: 100%%;
  266. display: flex;
  267. flex-direction: row;
  268. flex-wrap: nowrap;
  269. align-content: center;
  270. align-items: center;
  271. justify-content: space-between;
  272. "
  273. >
  274. <div
  275. style="
  276. display: flex;
  277. flex-flow: row nowrap;
  278. align-items: flex-start;
  279. width: 100%;
  280. flex-direction: column;
  281. flex-wrap: nowrap;
  282. position: relative;
  283. "
  284. >
  285. <!-- <div style="margin-right: 15px; min-width: 120px">
  286. 请选择评价指标
  287. </div>
  288. <div>
  289. <el-select
  290. v-model="evalua"
  291. placeholder="请选择体系"
  292. @change="checkEva"
  293. >
  294. <el-option
  295. v-for="(e, eIndex) in evaJuri"
  296. :key="eIndex"
  297. :label="e.title"
  298. :value="e.id"
  299. ></el-option>
  300. </el-select>
  301. </div> -->
  302. <!-- <div
  303. @click="openT"
  304. class="addPeople"
  305. style="
  306. background: #6b92c9;
  307. margin: 0 0 0 15px;
  308. position: absolute;
  309. right: 23%;
  310. "
  311. >
  312. 前往设置目标管理
  313. </div> -->
  314. <div class="e_box">
  315. <div
  316. class="e_card"
  317. v-for="(item, index) in evaJuri"
  318. :key="index"
  319. >
  320. <div class="e_card_picture">
  321. <img src="../../assets/e_picture.png" />
  322. </div>
  323. <div class="e_card_name">
  324. <span>{{ item.title }}</span>
  325. </div>
  326. <!-- <div class="e_card_time">
  327. <span>{{ item.time }}</span>
  328. </div> -->
  329. <div class="e_card_btn">
  330. <span @click="checkEva(item.id)">导入</span>
  331. <!-- <span @click="openT">前往设置</span> -->
  332. </div>
  333. </div>
  334. <div class="addEva" @click="openT">
  335. <img src="../../assets/icon/addEva.png" alt="" />
  336. </div>
  337. <div
  338. v-if="evaJuri.length === 0"
  339. style="margin: 0 auto; color: #6e6e6e"
  340. >
  341. 暂无数据
  342. </div>
  343. </div>
  344. </div>
  345. </div>
  346. <div
  347. v-if="evalua"
  348. style="
  349. border: 1px solid #e5e5e5;
  350. width: 95%;
  351. margin-top: 30px;
  352. box-shadow: 3px 1px 15px 3px #e0e0e0;
  353. "
  354. >
  355. <div class="e_add_top">
  356. <div class="e_add_title">
  357. <span>当前使用目标管理</span>
  358. <span>{{ eTitle }}</span>
  359. <img
  360. src="../../assets/line.png"
  361. class="cru_line"
  362. style="
  363. width: 125px;
  364. height: 20px;
  365. bottom: -10px;
  366. left: 155px;
  367. "
  368. />
  369. <!-- <el-input
  370. v-model="eTitle"
  371. placeholder="请输入名称"
  372. @change="setMindData"
  373. ></el-input>-->
  374. </div>
  375. </div>
  376. <div class="e_add_content">
  377. <div class="e_add_list_pbox">
  378. <div class="e_add_list_pbox_title">
  379. <span class="type_title">切换模式</span>
  380. <div class="type_content">
  381. <span
  382. :class="{ active: typeMode == 1 }"
  383. @click="OtherMb(1)"
  384. >目标树</span
  385. >
  386. <span
  387. :class="{ active: typeMode == 2 }"
  388. @click="OtherMb(2)"
  389. >目标罗盘</span
  390. >
  391. <span
  392. :class="{ active: typeMode == 3 }"
  393. @click="OtherMb(3)"
  394. >目标看板</span
  395. >
  396. </div>
  397. </div>
  398. <div class="e_add_list_pbox_content">
  399. <Mind
  400. :showBar="false"
  401. :mindData="data"
  402. v-show="typeMode == 1"
  403. ></Mind>
  404. <Sunburst
  405. :Josn="eJson"
  406. :num="eJSONNum"
  407. style="width: 100%"
  408. v-if="typeMode == 2"
  409. ></Sunburst>
  410. <SeeBoard
  411. :Josn="eJson"
  412. :num="eJSONNum"
  413. :ename="eTitle"
  414. style="width: 100%"
  415. v-if="typeMode == 3"
  416. ></SeeBoard>
  417. </div>
  418. </div>
  419. </div>
  420. </div>
  421. </div>
  422. </div>
  423. </div>
  424. <div class="rightBox" v-if="this.steps == 2">
  425. <div
  426. class="basic_box"
  427. style="padding: 20px 30px 0px !important; box-sizing: border-box"
  428. >
  429. <!-- <div
  430. style="
  431. color: #b8b8b8;
  432. background: #fff;
  433. width: 26%;
  434. height: 40px;
  435. border-radius: 15px;
  436. padding-left: 20px;
  437. line-height: 40px;
  438. font-size: 17px;
  439. box-shadow: 0px 1px 2px 2px #e0e0e0;
  440. "
  441. >-->
  442. <div
  443. class="right_title"
  444. style="border: none; margin: 0; padding: 0"
  445. >
  446. 请选择合适的课程模板
  447. </div>
  448. <div class="wordbox">
  449. <div
  450. class="wordTeacher"
  451. v-for="(aa, indexF) in templateArray"
  452. :key="indexF"
  453. @click="checkTemplate(aa)"
  454. >
  455. <div class="wordPic">
  456. <img src="../../assets/icon/wordMub.png" alt />
  457. </div>
  458. <div
  459. style="
  460. margin-top: 10px;
  461. line-height: 19px;
  462. overflow: hidden;
  463. text-overflow: ellipsis;
  464. white-space: nowrap;
  465. padding: 0 20px;
  466. "
  467. >
  468. {{ aa.title }}
  469. </div>
  470. </div>
  471. <div class="wordTeacher" @click="checkTemplate2()">
  472. <div class="wordPic">
  473. <img src="../../assets/icon/wordMub.png" alt />
  474. </div>
  475. <div
  476. style="
  477. margin-top: 10px;
  478. line-height: 19px;
  479. overflow: hidden;
  480. text-overflow: ellipsis;
  481. white-space: nowrap;
  482. padding: 0 20px;
  483. "
  484. >
  485. 新建课程
  486. </div>
  487. </div>
  488. <div class="wordTeacher" @click="checkTemplate1()">
  489. <div class="wordPic">
  490. <img src="../../assets/icon/wordMub.png" alt />
  491. </div>
  492. <div
  493. style="
  494. margin-top: 10px;
  495. line-height: 19px;
  496. overflow: hidden;
  497. text-overflow: ellipsis;
  498. white-space: nowrap;
  499. padding: 0 20px;
  500. "
  501. >
  502. 我的课程
  503. </div>
  504. </div>
  505. </div>
  506. </div>
  507. </div>
  508. <div class="rightBox" v-if="this.steps == 3" ref="rightboxR">
  509. <div class="basic_box">
  510. <div
  511. style="
  512. display: flex;
  513. flex-direction: row;
  514. align-items: center;
  515. position: sticky;
  516. top: 0;
  517. background: #fff;
  518. z-index: 99;
  519. width: 100%;
  520. padding: 0 20px 0 20px;
  521. box-sizing: border-box;
  522. "
  523. >
  524. <div class="cru_selectBox">
  525. <div
  526. v-for="(item, index) in unitJson"
  527. :key="index"
  528. class="cru_select"
  529. :class="unitIndex == index ? 'cru_selected' : ''"
  530. @click="unitSet(index)"
  531. >
  532. 第{{ index + 1 }}阶段
  533. </div>
  534. <img
  535. src="../../assets/line.png"
  536. class="cru_line"
  537. :style="{
  538. left: offsetLetfPx + 'px',
  539. }"
  540. />
  541. </div>
  542. <div class="addStageImg" @click="addunit()">
  543. <img src="../../assets/icon/add.png" alt />
  544. </div>
  545. </div>
  546. <div
  547. style="margin: 0 0 40px 0; padding: 0 20px 0 20px"
  548. v-for="(item, index) in unitJson[unitIndex].chapterInfo"
  549. :key="index"
  550. >
  551. <div>
  552. <div class="chapter_contentbox">
  553. <div>第{{ unitIndex + 1 }}阶段</div>
  554. <div>
  555. <input
  556. type="text"
  557. placeholder="阶段标题"
  558. class="binfo_input"
  559. v-model="unitJson[unitIndex].dyName"
  560. />
  561. </div>
  562. <div
  563. v-if="unitJson.length > 1"
  564. @click="deleteUnit(unitIndex)"
  565. ></div>
  566. </div>
  567. </div>
  568. <div
  569. style="
  570. margin: 50px 0px 10px;
  571. font-size: 1.5em;
  572. font-weight: 700;
  573. color: #0f7eff;
  574. "
  575. >
  576. 添加任务
  577. </div>
  578. <div
  579. class="taskBorder"
  580. v-for="(itemTask, itemTaskIndex) in item.taskJson"
  581. :key="itemTaskIndex"
  582. >
  583. <div>
  584. <div>
  585. <div style="font-size: 22px; color: #8e8e8e">
  586. 任务{{ itemTaskIndex + 1 }}
  587. </div>
  588. <div
  589. class="chapter_contentbox"
  590. style="
  591. flex-direction: row;
  592. justify-content: flex-start;
  593. align-items: center;
  594. "
  595. >
  596. <div
  597. style="
  598. border-left: 6px solid #5699e8;
  599. height: 20px;
  600. padding-left: 10px;
  601. line-height: 22px;
  602. "
  603. >
  604. 任务名称
  605. </div>
  606. <div>
  607. <input
  608. type="text"
  609. placeholder="输入任务名称"
  610. class="binfo_input"
  611. style="border-radius: 4px"
  612. v-model="
  613. unitJson[unitIndex].chapterInfo[0].taskJson[
  614. itemTaskIndex
  615. ].task
  616. "
  617. />
  618. </div>
  619. <div
  620. class="remove"
  621. v-if="item.taskJson.length > 1"
  622. @click="deleteTask(itemTaskIndex)"
  623. style="position: absolute; right: 55px"
  624. ></div>
  625. </div>
  626. <div
  627. style="
  628. display: flex;
  629. margin: 0 0 20px 0;
  630. flex-direction: row;
  631. justify-content: flex-start;
  632. align-items: center;
  633. width: 70.5% !important;
  634. padding-top: 30px;
  635. "
  636. >
  637. <div class="lineTitle">任务描述</div>
  638. <div class="line"></div>
  639. </div>
  640. <div>
  641. <editor-bar
  642. style="width: 90% !important; margin: 0"
  643. placeholder="请输入任务描述"
  644. v-model="
  645. unitJson[unitIndex].chapterInfo[0].taskJson[
  646. itemTaskIndex
  647. ].taskDetail
  648. "
  649. @change="change"
  650. ></editor-bar>
  651. <!-- <textarea
  652. rows="6"
  653. class="binfo_input"
  654. placeholder="请输入任务描述"
  655. cols
  656. style="width: 70.5% !important; height: 120px"
  657. v-model="
  658. unitJson[unitIndex].chapterInfo[0].taskJson[
  659. itemTaskIndex
  660. ].taskDetail
  661. "
  662. ></textarea>-->
  663. </div>
  664. </div>
  665. </div>
  666. <div
  667. class="basic_box"
  668. style="
  669. margin: 0;
  670. min-height: 0;
  671. width: 90% !important;
  672. paddint-top: 10px !important;
  673. "
  674. >
  675. <div
  676. style="
  677. display: flex;
  678. margin: 0 0 20px 0;
  679. flex-direction: row;
  680. justify-content: flex-start;
  681. align-items: center;
  682. "
  683. >
  684. <div class="lineTitle">学习内容</div>
  685. <div class="line"></div>
  686. </div>
  687. <div>
  688. <div
  689. class="add_chapters_box"
  690. v-if="
  691. itemTask.chapterData &&
  692. itemTask.chapterData.length == 0
  693. "
  694. style="height: 185px"
  695. ></div>
  696. <div
  697. v-else
  698. class="add_chapters_box"
  699. style="display: flex; flex-direction: column"
  700. >
  701. <div
  702. class="chapter_upload"
  703. v-for="(item1, index1) in itemTask.chapterData"
  704. :key="item1.id"
  705. @click="
  706. getChapterData(
  707. $event,
  708. unitIndex,
  709. index,
  710. index1,
  711. item1.type
  712. )
  713. "
  714. >
  715. <div
  716. class="chapter_upload_t"
  717. style="width: 100%"
  718. ></div>
  719. <div
  720. class="chapter_upload_o"
  721. style="
  722. position: relative;
  723. display: flex;
  724. align-items: center;
  725. "
  726. >
  727. <div
  728. class="chapter_upload_l"
  729. style="padding: 1px 0 0 10px"
  730. >
  731. <div
  732. v-if="item1.type == 2"
  733. class="chapter_upload_l_i1"
  734. ></div>
  735. <div
  736. v-if="
  737. item1.type == 3 ||
  738. item1.type == 6 ||
  739. item1.type == 7
  740. "
  741. class="chapter_upload_l_i5"
  742. style="margin-left: 1px"
  743. ></div>
  744. <div
  745. v-if="item1.type == 8"
  746. class="chapter_upload_l_i8"
  747. style="margin-left: 1px"
  748. ></div>
  749. </div>
  750. <div
  751. class="chapter_upload_ic"
  752. style="
  753. cursor: pointer;
  754. position: absolute;
  755. width: 45px;
  756. right: 0;
  757. top: 0;
  758. "
  759. >
  760. <div class="chapter_upload_ic_l"></div>
  761. <div
  762. class="chapter_upload_ic_r"
  763. style="position: absolute"
  764. @click.stop="
  765. deleteChapterData(
  766. $event,
  767. unitIndex,
  768. index,
  769. index1,
  770. itemTaskIndex
  771. )
  772. "
  773. >
  774. <div></div>
  775. </div>
  776. </div>
  777. <div class="chapter_upload_n">
  778. <input
  779. v-if="
  780. item1.type == 2 ||
  781. item1.type == 3 ||
  782. item1.type == 7
  783. "
  784. :placeholder="item1.name"
  785. @change="
  786. updataVideoT(
  787. $event,
  788. unitIndex,
  789. chapterIndex,
  790. index1
  791. )
  792. "
  793. style="
  794. border: none;
  795. outline: none;
  796. width: 80%;
  797. minwidth: 215px;
  798. z-index: 99;
  799. font-size: 14px;
  800. white-space: nowrap;
  801. overflow: hidden;
  802. text-overflow: ellipsis;
  803. "
  804. />
  805. <input
  806. :placeholder="item1.name"
  807. v-if="item1.type == 6"
  808. style="
  809. border: none;
  810. outline: none;
  811. width: 80%;
  812. white-space: nowrap;
  813. overflow: hidden;
  814. text-overflow: ellipsis;
  815. "
  816. readonly="true"
  817. @click="selectAttText(itemTaskIndex, index1)"
  818. />
  819. <input
  820. :placeholder="item1.name"
  821. v-if="item1.type == 8"
  822. style="
  823. border: none;
  824. outline: none;
  825. width: 80%;
  826. white-space: nowrap;
  827. overflow: hidden;
  828. text-overflow: ellipsis;
  829. "
  830. readonly="true"
  831. @click="selectLine(itemTaskIndex, index1)"
  832. />
  833. <div
  834. class="chapter_upload_ud"
  835. style="z-index: 99"
  836. >
  837. <div
  838. class="chapter_upload_up"
  839. @click="
  840. upCd($event, unitIndex, index, index1)
  841. "
  842. ></div>
  843. <div
  844. class="chapter_upload_down"
  845. @click="
  846. downCd($event, unitIndex, index, index1)
  847. "
  848. ></div>
  849. </div>
  850. </div>
  851. </div>
  852. </div>
  853. </div>
  854. </div>
  855. <div class="add_info_box">
  856. <button class="info_btn" @click="addImg($event)">
  857. 添加教学视频
  858. <input
  859. type="file"
  860. accept="video/mp4, video/quicktime, video/x-msvideo"
  861. style="display: none"
  862. capture="camera"
  863. v-if="inputShow"
  864. @change="
  865. beforeUpload2($event, unitIndex, 2, itemTaskIndex)
  866. "
  867. />
  868. </button>
  869. <button class="info_btn" @click="addImg($event)">
  870. 添加教学附件
  871. <input
  872. type="file"
  873. accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  874. style="display: none"
  875. v-if="inputShow"
  876. @change="
  877. beforeUpload2($event, unitIndex, 3, itemTaskIndex)
  878. "
  879. />
  880. </button>
  881. <button
  882. class="info_btn"
  883. @click="addAttText(itemTaskIndex)"
  884. >
  885. 添加图文
  886. </button>
  887. <button class="info_btn" @click="openLine(itemTaskIndex)">
  888. 添加链接
  889. </button>
  890. </div>
  891. </div>
  892. <div
  893. style="
  894. flex-direction: row;
  895. justify-content: flex-start;
  896. align-items: center;
  897. padding: 0 0 0 30px;
  898. paddint-top: 10px !important;
  899. "
  900. >
  901. <div
  902. style="
  903. display: flex;
  904. flex-direction: row;
  905. align-items: center;
  906. margin-bottom: 20px;
  907. "
  908. >
  909. <div class="lineTitle">练习内容</div>
  910. <div class="line" style="width: 90%"></div>
  911. </div>
  912. </div>
  913. <div class="toolChoose" style="padding: 0 0 0 30px">
  914. <div class="tools">
  915. <div
  916. class="leftTools"
  917. style="
  918. width: 95%;
  919. padding: 0 0 15px 0;
  920. border-bottom: 1px solid #efefef;
  921. margin-bottom: 15px;
  922. "
  923. v-for="(itemTool, toolIndex) in itemTask.toolChoose"
  924. :key="toolIndex"
  925. >
  926. <div>
  927. <textarea
  928. rows="3"
  929. type="text"
  930. placeholder="添加工具描述"
  931. class="binfo_input"
  932. style="margin: 0 0 20px 0; width: 71.5% !important"
  933. v-model="itemTool.toolDetail"
  934. ></textarea>
  935. </div>
  936. <div
  937. style="
  938. display: flex;
  939. flex-direction: row;
  940. align-items: baseline;
  941. flex-wrap: nowrap;
  942. justify-content: flex-start;
  943. position: relative;
  944. "
  945. >
  946. <div style="margin-right: 20px; font-weight: bold">
  947. 工具 {{ toolIndex + 1 }} :
  948. </div>
  949. <div class="chooseWho">
  950. <div
  951. :class="
  952. itemTool.toolType == 0 ? 'isChooseActive' : ''
  953. "
  954. @click="(itemTool.toolType = 0), $forceUpdate()"
  955. >
  956. 互动类
  957. </div>
  958. <div
  959. :class="
  960. itemTool.toolType == 1 ? 'isChooseActive' : ''
  961. "
  962. @click="(itemTool.toolType = 1), $forceUpdate()"
  963. >
  964. 思维类
  965. </div>
  966. <div
  967. :class="
  968. itemTool.toolType == 2 ? 'isChooseActive' : ''
  969. "
  970. @click="(itemTool.toolType = 2), $forceUpdate()"
  971. >
  972. 评价类
  973. </div>
  974. <div
  975. :class="
  976. itemTool.toolType == 3 ? 'isChooseActive' : ''
  977. "
  978. @click="(itemTool.toolType = 3), $forceUpdate()"
  979. >
  980. 编程类
  981. </div>
  982. <div
  983. :class="
  984. itemTool.toolType == 5 ? 'isChooseActive' : ''
  985. "
  986. @click="(itemTool.toolType = 5), $forceUpdate()"
  987. >
  988. 学科类
  989. </div>
  990. <div
  991. :class="
  992. itemTool.toolType == 4 ? 'isChooseActive' : ''
  993. "
  994. @click="(itemTool.toolType = 4), $forceUpdate()"
  995. >
  996. 其他
  997. </div>
  998. </div>
  999. <div
  1000. class="remove"
  1001. @click="deleteTool(itemTaskIndex, toolIndex)"
  1002. v-if="itemTask.toolChoose.length > 1"
  1003. style="position: absolute; right: 55px"
  1004. ></div>
  1005. </div>
  1006. <div style="min-height: 163px">
  1007. <div class="toolSort" v-if="itemTool.toolType == 0">
  1008. <!-- <div class="tool">
  1009. <div
  1010. class="whiteBIcon"
  1011. @click="addTools(8, itemTaskIndex, toolIndex)"
  1012. >
  1013. <img src="../../assets/icon/secondToolList/library.png" alt />
  1014. <div style="margin: 5px 0">素材库</div>
  1015. </div>
  1016. <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
  1017. <img
  1018. src="../../assets/icon/checkNo.png"
  1019. alt
  1020. v-if="itemTool.tool.indexOf(8) == -1"
  1021. />
  1022. <img src="../../assets/icon/checkedIs.png" alt v-else />
  1023. </div>
  1024. </div>-->
  1025. <!-- <div class="tool">
  1026. <div
  1027. class="whiteBIcon"
  1028. @click="addTools(17, itemTaskIndex, toolIndex)"
  1029. >
  1030. <img
  1031. src="../../assets/icon/secondToolList/library.png"
  1032. alt
  1033. />
  1034. <div style="margin: 5px 0">学习资料</div>
  1035. </div>
  1036. <div
  1037. class="check"
  1038. @click="addTools(17, itemTaskIndex, toolIndex)"
  1039. >
  1040. <img
  1041. src="../../assets/icon/checkNo.png"
  1042. alt
  1043. v-if="itemTool.tool.indexOf(17) == -1"
  1044. />
  1045. <img
  1046. src="../../assets/icon/checkedIs.png"
  1047. alt
  1048. v-else
  1049. />
  1050. </div>
  1051. </div> -->
  1052. <div class="tool">
  1053. <div
  1054. class="whiteBIcon"
  1055. @click="addTools(10, itemTaskIndex, toolIndex)"
  1056. >
  1057. <img
  1058. src="../../assets/icon/thirdToolList/time.png"
  1059. alt
  1060. />
  1061. <div style="margin: 5px 0">倒计时</div>
  1062. </div>
  1063. <div
  1064. class="check"
  1065. @click="addTools(10, itemTaskIndex, toolIndex)"
  1066. >
  1067. <img
  1068. src="../../assets/icon/checkNo.png"
  1069. alt
  1070. v-if="itemTool.tool.indexOf(10) == -1"
  1071. />
  1072. <img
  1073. src="../../assets/icon/checkedIs.png"
  1074. alt
  1075. v-else
  1076. />
  1077. </div>
  1078. </div>
  1079. </div>
  1080. <div class="toolSort" v-if="itemTool.toolType == 1">
  1081. <div class="tool">
  1082. <div
  1083. class="whiteBIcon"
  1084. @click="addTools(7, itemTaskIndex, toolIndex)"
  1085. >
  1086. <img
  1087. src="../../assets/icon/secondToolList/mindNetwork.png"
  1088. alt
  1089. />
  1090. <div style="margin: 5px 0">思维网格</div>
  1091. </div>
  1092. <div
  1093. class="check"
  1094. @click="addTools(7, itemTaskIndex, toolIndex)"
  1095. >
  1096. <img
  1097. src="../../assets/icon/checkNo.png"
  1098. alt
  1099. v-if="itemTool.tool.indexOf(7) == -1"
  1100. />
  1101. <img
  1102. src="../../assets/icon/checkedIs.png"
  1103. alt
  1104. v-else
  1105. />
  1106. </div>
  1107. </div>
  1108. <div class="tool">
  1109. <div
  1110. class="whiteBIcon"
  1111. @click="addTools(1, itemTaskIndex, toolIndex)"
  1112. >
  1113. <img
  1114. src="../../assets/icon/secondToolList/whiteBoard.png"
  1115. alt
  1116. />
  1117. <div style="margin: 5px 0">电子白板</div>
  1118. </div>
  1119. <div
  1120. class="check"
  1121. @click="addTools(1, itemTaskIndex, toolIndex)"
  1122. >
  1123. <img
  1124. src="../../assets/icon/checkNo.png"
  1125. alt
  1126. v-if="itemTool.tool.indexOf(1) == -1"
  1127. />
  1128. <img
  1129. src="../../assets/icon/checkedIs.png"
  1130. alt
  1131. v-else
  1132. />
  1133. </div>
  1134. </div>
  1135. <div class="tool">
  1136. <div
  1137. class="whiteBIcon"
  1138. @click="addTools(2, itemTaskIndex, toolIndex)"
  1139. >
  1140. <img
  1141. src="../../assets/icon/secondToolList/note.png"
  1142. alt
  1143. />
  1144. <div style="margin: 5px 0">便签</div>
  1145. </div>
  1146. <div
  1147. class="check"
  1148. @click="addTools(2, itemTaskIndex, toolIndex)"
  1149. >
  1150. <img
  1151. src="../../assets/icon/checkNo.png"
  1152. alt
  1153. v-if="itemTool.tool.indexOf(2) == -1"
  1154. />
  1155. <img
  1156. src="../../assets/icon/checkedIs.png"
  1157. alt
  1158. v-else
  1159. />
  1160. </div>
  1161. </div>
  1162. <div class="tool">
  1163. <div
  1164. class="whiteBIcon"
  1165. @click="addTools(6, itemTaskIndex, toolIndex)"
  1166. >
  1167. <img
  1168. src="../../assets/icon/secondToolList/doc.png"
  1169. alt
  1170. />
  1171. <div style="margin: 5px 0">协同文档</div>
  1172. </div>
  1173. <div
  1174. class="check"
  1175. @click="addTools(6, itemTaskIndex, toolIndex)"
  1176. >
  1177. <img
  1178. src="../../assets/icon/checkNo.png"
  1179. alt
  1180. v-if="itemTool.tool.indexOf(6) == -1"
  1181. />
  1182. <img
  1183. src="../../assets/icon/checkedIs.png"
  1184. alt
  1185. v-else
  1186. />
  1187. </div>
  1188. </div>
  1189. <div class="tool">
  1190. <div
  1191. class="whiteBIcon"
  1192. @click="addTools(3, itemTaskIndex, toolIndex)"
  1193. >
  1194. <img
  1195. src="../../assets/icon/secondToolList/mindMapping.png"
  1196. alt
  1197. />
  1198. <div style="margin: 5px 0">思维导图</div>
  1199. </div>
  1200. <div
  1201. class="check"
  1202. @click="addTools(3, itemTaskIndex, toolIndex)"
  1203. >
  1204. <img
  1205. src="../../assets/icon/checkNo.png"
  1206. alt
  1207. v-if="itemTool.tool.indexOf(3) == -1"
  1208. />
  1209. <img
  1210. src="../../assets/icon/checkedIs.png"
  1211. alt
  1212. v-else
  1213. />
  1214. </div>
  1215. </div>
  1216. </div>
  1217. <div class="toolSort" v-if="itemTool.toolType == 2">
  1218. <!-- <div class="tool">
  1219. <div
  1220. class="whiteBIcon"
  1221. @click="addTools(5, itemTaskIndex, toolIndex)"
  1222. >
  1223. <img
  1224. src="../../assets/icon/thirdToolList/score.png"
  1225. alt
  1226. />
  1227. <div style="margin: 5px 0">量规评分</div>
  1228. </div>
  1229. <div
  1230. class="check"
  1231. @click="addTools(5, itemTaskIndex, toolIndex)"
  1232. >
  1233. <img
  1234. src="../../assets/icon/checkNo.png"
  1235. alt
  1236. v-if="itemTool.tool.indexOf(5) == -1"
  1237. />
  1238. <img
  1239. src="../../assets/icon/checkedIs.png"
  1240. alt
  1241. v-else
  1242. />
  1243. </div>
  1244. </div>-->
  1245. <div class="tool">
  1246. <div
  1247. class="whiteBIcon"
  1248. @click="openTools(itemTaskIndex, 4, toolIndex)"
  1249. >
  1250. <img
  1251. src="../../assets/icon/thirdToolList/ask.png"
  1252. alt
  1253. />
  1254. <div style="margin: 5px 0">问卷调查</div>
  1255. </div>
  1256. <div
  1257. class="check"
  1258. @click="addTools(4, itemTaskIndex, toolIndex)"
  1259. >
  1260. <img
  1261. src="../../assets/icon/checkNo.png"
  1262. alt
  1263. v-if="itemTool.tool.indexOf(4) == -1"
  1264. />
  1265. <img
  1266. src="../../assets/icon/checkedIs.png"
  1267. alt
  1268. v-else
  1269. />
  1270. </div>
  1271. </div>
  1272. <div class="tool">
  1273. <div
  1274. class="whiteBIcon"
  1275. @click="openTools(itemTaskIndex, 15, toolIndex)"
  1276. >
  1277. <img
  1278. src="../../assets/icon/thirdToolList/answer.png"
  1279. alt
  1280. />
  1281. <div style="margin: 5px 0">问答工具</div>
  1282. </div>
  1283. <div
  1284. class="check"
  1285. @click="addTools(15, itemTaskIndex, toolIndex)"
  1286. >
  1287. <img
  1288. src="../../assets/icon/checkNo.png"
  1289. alt
  1290. v-if="itemTool.tool.indexOf(15) == -1"
  1291. />
  1292. <img
  1293. src="../../assets/icon/checkedIs.png"
  1294. alt
  1295. v-else
  1296. />
  1297. </div>
  1298. </div>
  1299. <div class="tool">
  1300. <div
  1301. class="whiteBIcon"
  1302. @click="addTools(16, itemTaskIndex, toolIndex)"
  1303. >
  1304. <img
  1305. src="../../assets/icon/thirdToolList/work.png"
  1306. alt
  1307. />
  1308. <div style="margin: 5px 0">作业提交</div>
  1309. </div>
  1310. <div
  1311. class="check"
  1312. @click="addTools(16, itemTaskIndex, toolIndex)"
  1313. >
  1314. <img
  1315. src="../../assets/icon/checkNo.png"
  1316. alt
  1317. v-if="itemTool.tool.indexOf(16) == -1"
  1318. />
  1319. <img
  1320. src="../../assets/icon/checkedIs.png"
  1321. alt
  1322. v-else
  1323. />
  1324. </div>
  1325. </div>
  1326. </div>
  1327. <div class="toolSort" v-if="itemTool.toolType == 3">
  1328. <div class="tool">
  1329. <div
  1330. class="whiteBIcon"
  1331. @click="addTools(18, itemTaskIndex, toolIndex)"
  1332. >
  1333. <img
  1334. src="../../assets/icon/thirdToolList/trainPlatform.png"
  1335. alt
  1336. />
  1337. <div style="margin: 5px 0">训练平台</div>
  1338. </div>
  1339. <div
  1340. class="check"
  1341. @click="addTools(18, itemTaskIndex, toolIndex)"
  1342. >
  1343. <img
  1344. src="../../assets/icon/checkNo.png"
  1345. alt
  1346. v-if="itemTool.tool.indexOf(18) == -1"
  1347. />
  1348. <img
  1349. src="../../assets/icon/checkedIs.png"
  1350. alt
  1351. v-else
  1352. />
  1353. </div>
  1354. </div>
  1355. <div class="tool">
  1356. <div
  1357. class="whiteBIcon"
  1358. @click="addTools(21, itemTaskIndex, toolIndex)"
  1359. >
  1360. <img
  1361. src="../../assets/icon/fourthToolList/program.png"
  1362. alt
  1363. />
  1364. <div style="margin: 5px 0">编程平台</div>
  1365. </div>
  1366. <div
  1367. class="check"
  1368. @click="addTools(21, itemTaskIndex, toolIndex)"
  1369. >
  1370. <img
  1371. src="../../assets/icon/checkNo.png"
  1372. alt
  1373. v-if="itemTool.tool.indexOf(21) == -1"
  1374. />
  1375. <img
  1376. src="../../assets/icon/checkedIs.png"
  1377. alt
  1378. v-else
  1379. />
  1380. </div>
  1381. </div>
  1382. <div class="tool">
  1383. <div
  1384. class="whiteBIcon"
  1385. @click="addTools(22, itemTaskIndex, toolIndex)"
  1386. >
  1387. <img
  1388. src="../../assets/icon/fourthToolList/AIprogram2.png"
  1389. alt
  1390. />
  1391. <div style="margin: 5px 0">AI体验</div>
  1392. </div>
  1393. <div
  1394. class="check"
  1395. @click="addTools(22, itemTaskIndex, toolIndex)"
  1396. >
  1397. <img
  1398. src="../../assets/icon/checkNo.png"
  1399. alt
  1400. v-if="itemTool.tool.indexOf(22) == -1"
  1401. />
  1402. <img
  1403. src="../../assets/icon/checkedIs.png"
  1404. alt
  1405. v-else
  1406. />
  1407. </div>
  1408. </div>
  1409. <div class="tool">
  1410. <div
  1411. class="whiteBIcon"
  1412. @click="addTools(23, itemTaskIndex, toolIndex)"
  1413. >
  1414. <img
  1415. src="../../assets/icon/fourthToolList/Pythonprogram.png"
  1416. alt
  1417. />
  1418. <div style="margin: 5px 0">Python</div>
  1419. </div>
  1420. <div
  1421. class="check"
  1422. @click="addTools(23, itemTaskIndex, toolIndex)"
  1423. >
  1424. <img
  1425. src="../../assets/icon/checkNo.png"
  1426. alt
  1427. v-if="itemTool.tool.indexOf(23) == -1"
  1428. />
  1429. <img
  1430. src="../../assets/icon/checkedIs.png"
  1431. alt
  1432. v-else
  1433. />
  1434. </div>
  1435. </div>
  1436. <div class="tool">
  1437. <div
  1438. class="whiteBIcon"
  1439. @click="addTools(24, itemTaskIndex, toolIndex)"
  1440. >
  1441. <img
  1442. src="../../assets/icon/fourthToolList/program.png"
  1443. alt
  1444. />
  1445. <div style="margin: 5px 0">AI平台</div>
  1446. </div>
  1447. <div
  1448. class="check"
  1449. @click="addTools(24, itemTaskIndex, toolIndex)"
  1450. >
  1451. <img
  1452. src="../../assets/icon/checkNo.png"
  1453. alt
  1454. v-if="itemTool.tool.indexOf(24) == -1"
  1455. />
  1456. <img
  1457. src="../../assets/icon/checkedIs.png"
  1458. alt
  1459. v-else
  1460. />
  1461. </div>
  1462. </div>
  1463. <div class="tool">
  1464. <div
  1465. class="whiteBIcon"
  1466. @click="addTools(32, itemTaskIndex, toolIndex)"
  1467. >
  1468. <img
  1469. src="../../assets/icon/thirdToolList/code.png"
  1470. alt
  1471. />
  1472. <div style="margin: 5px 0">源码编辑</div>
  1473. </div>
  1474. <div
  1475. class="check"
  1476. @click="addTools(32, itemTaskIndex, toolIndex)"
  1477. >
  1478. <img
  1479. src="../../assets/icon/checkNo.png"
  1480. alt
  1481. v-if="itemTool.tool.indexOf(32) == -1"
  1482. />
  1483. <img
  1484. src="../../assets/icon/checkedIs.png"
  1485. alt
  1486. v-else
  1487. />
  1488. </div>
  1489. </div>
  1490. </div>
  1491. <div class="toolSort" v-if="itemTool.toolType == 5">
  1492. <div class="tool">
  1493. <div
  1494. class="whiteBIcon"
  1495. @click="addTools(28, itemTaskIndex, toolIndex)"
  1496. >
  1497. <img
  1498. src="../../assets/icon/secondToolList/translation.png"
  1499. alt
  1500. />
  1501. <div style="margin: 5px 0">翻译</div>
  1502. </div>
  1503. <div
  1504. class="check"
  1505. @click="addTools(28, itemTaskIndex, toolIndex)"
  1506. >
  1507. <img
  1508. src="../../assets/icon/checkNo.png"
  1509. alt
  1510. v-if="itemTool.tool.indexOf(28) == -1"
  1511. />
  1512. <img
  1513. src="../../assets/icon/checkedIs.png"
  1514. alt
  1515. v-else
  1516. />
  1517. </div>
  1518. </div>
  1519. <div class="tool">
  1520. <div
  1521. class="whiteBIcon"
  1522. @click="addTools(37, itemTaskIndex, toolIndex)"
  1523. >
  1524. <img
  1525. src="../../assets/icon/secondToolList/mohe.png"
  1526. alt
  1527. />
  1528. <div style="margin: 5px 0">魔盒识字</div>
  1529. </div>
  1530. <div
  1531. class="check"
  1532. @click="addTools(37, itemTaskIndex, toolIndex)"
  1533. >
  1534. <img
  1535. src="../../assets/icon/checkNo.png"
  1536. alt
  1537. v-if="itemTool.tool.indexOf(37) == -1"
  1538. />
  1539. <img
  1540. src="../../assets/icon/checkedIs.png"
  1541. alt
  1542. v-else
  1543. />
  1544. </div>
  1545. </div>
  1546. <div class="tool">
  1547. <div
  1548. class="whiteBIcon"
  1549. @click="addTools(38, itemTaskIndex, toolIndex)"
  1550. >
  1551. <img
  1552. src="../../assets/icon/secondToolList/24game.png"
  1553. alt
  1554. />
  1555. <div style="margin: 5px 0">24点</div>
  1556. </div>
  1557. <div
  1558. class="check"
  1559. @click="addTools(38, itemTaskIndex, toolIndex)"
  1560. >
  1561. <img
  1562. src="../../assets/icon/checkNo.png"
  1563. alt
  1564. v-if="itemTool.tool.indexOf(38) == -1"
  1565. />
  1566. <img
  1567. src="../../assets/icon/checkedIs.png"
  1568. alt
  1569. v-else
  1570. />
  1571. </div>
  1572. </div>
  1573. <div class="tool">
  1574. <div
  1575. class="whiteBIcon"
  1576. @click="addTools(31, itemTaskIndex, toolIndex)"
  1577. >
  1578. <img
  1579. src="../../assets/icon/secondToolList/networkPanel.png"
  1580. alt
  1581. />
  1582. <div style="margin: 5px 0">数学画板</div>
  1583. </div>
  1584. <div
  1585. class="check"
  1586. @click="addTools(31, itemTaskIndex, toolIndex)"
  1587. >
  1588. <img
  1589. src="../../assets/icon/checkNo.png"
  1590. alt
  1591. v-if="itemTool.tool.indexOf(31) == -1"
  1592. />
  1593. <img
  1594. src="../../assets/icon/checkedIs.png"
  1595. alt
  1596. v-else
  1597. />
  1598. </div>
  1599. </div>
  1600. <div class="tool">
  1601. <div
  1602. class="whiteBIcon"
  1603. @click="addTools(39, itemTaskIndex, toolIndex)"
  1604. >
  1605. <img
  1606. src="../../assets/icon/secondToolList/GeoGebra.png"
  1607. alt
  1608. />
  1609. <div style="margin: 5px 0">GeoGebra</div>
  1610. </div>
  1611. <div
  1612. class="check"
  1613. @click="addTools(39, itemTaskIndex, toolIndex)"
  1614. >
  1615. <img
  1616. src="../../assets/icon/checkNo.png"
  1617. alt
  1618. v-if="itemTool.tool.indexOf(39) == -1"
  1619. />
  1620. <img
  1621. src="../../assets/icon/checkedIs.png"
  1622. alt
  1623. v-else
  1624. />
  1625. </div>
  1626. </div>
  1627. </div>
  1628. <div class="toolSort" v-if="itemTool.toolType == 4">
  1629. <div class="tool">
  1630. <div
  1631. class="whiteBIcon"
  1632. @click="addTools(26, itemTaskIndex, toolIndex)"
  1633. >
  1634. <img
  1635. src="../../assets/icon/thirdToolList/courseDesign.png"
  1636. alt
  1637. />
  1638. <div style="margin: 5px 0">课程设计</div>
  1639. </div>
  1640. <div
  1641. class="check"
  1642. @click="addTools(26, itemTaskIndex, toolIndex)"
  1643. >
  1644. <img
  1645. src="../../assets/icon/checkNo.png"
  1646. alt
  1647. v-if="itemTool.tool.indexOf(26) == -1"
  1648. />
  1649. <img
  1650. src="../../assets/icon/checkedIs.png"
  1651. alt
  1652. v-else
  1653. />
  1654. </div>
  1655. </div>
  1656. <div class="tool">
  1657. <div
  1658. class="whiteBIcon"
  1659. @click="addTools(25, itemTaskIndex, toolIndex)"
  1660. >
  1661. <img
  1662. src="../../assets/icon/thirdToolList/evalua.png"
  1663. alt
  1664. />
  1665. <div style="margin: 5px 0">目标管理</div>
  1666. </div>
  1667. <div
  1668. class="check"
  1669. @click="addTools(25, itemTaskIndex, toolIndex)"
  1670. >
  1671. <img
  1672. src="../../assets/icon/checkNo.png"
  1673. alt
  1674. v-if="itemTool.tool.indexOf(25) == -1"
  1675. />
  1676. <img
  1677. src="../../assets/icon/checkedIs.png"
  1678. alt
  1679. v-else
  1680. />
  1681. </div>
  1682. </div>
  1683. </div>
  1684. </div>
  1685. </div>
  1686. <div
  1687. class="addToolFun"
  1688. @click="addToolFun(itemTaskIndex)"
  1689. >
  1690. <div class="addToolImg">
  1691. <img src="../../assets/icon/add.png" alt />
  1692. </div>
  1693. <div>添加工具</div>
  1694. </div>
  1695. </div>
  1696. </div>
  1697. <div class="elist_css">
  1698. <div class="elist_title">
  1699. <div
  1700. style="
  1701. display: flex;
  1702. flex-direction: row;
  1703. align-items: center;
  1704. margin-bottom: 20px;
  1705. "
  1706. >
  1707. <div class="lineTitle">评价设置</div>
  1708. <div class="line" style="width: 90%"></div>
  1709. </div>
  1710. </div>
  1711. <div class="mbCss">
  1712. <div class="pjCss">
  1713. <div
  1714. v-if="itemTask.eList && itemTask.eList.length"
  1715. class="elist_input"
  1716. >
  1717. <div
  1718. v-for="(eItem, eIndex) in itemTask.eList"
  1719. :key="eIndex"
  1720. class="elist_input_box"
  1721. >
  1722. <span>评价名称:</span>
  1723. <input
  1724. type="input"
  1725. v-model="itemTask.eList[eIndex].value"
  1726. placeholder="填写评价名称"
  1727. />
  1728. <span>评星等级:</span>
  1729. <el-rate
  1730. v-model="itemTask.eList[eIndex].score"
  1731. @change="setEListStar()"
  1732. disabled
  1733. ></el-rate>
  1734. <div
  1735. class="remove"
  1736. @click="
  1737. deletEList(unitIndex, itemTaskIndex, eIndex)
  1738. "
  1739. ></div>
  1740. <div class="elist_inptu_text">
  1741. <span>评价描述:</span>
  1742. <input
  1743. type="input"
  1744. v-model="itemTask.eList[eIndex].detail"
  1745. placeholder="填写评价描述"
  1746. />
  1747. </div>
  1748. </div>
  1749. </div>
  1750. <div
  1751. class="addToolFun"
  1752. @click="addEList(unitIndex, itemTaskIndex)"
  1753. style="margin: 35px 35px 0 0"
  1754. >
  1755. <div class="addToolImg">
  1756. <img src="../../assets/icon/add.png" alt />
  1757. </div>
  1758. <div>添加</div>
  1759. </div>
  1760. </div>
  1761. <div
  1762. v-if="evalua"
  1763. style="
  1764. border: 1px solid #e5e5e5;
  1765. width: 55%;
  1766. margin-top: 20px;
  1767. box-shadow: 3px 1px 15px 3px #e0e0e0;
  1768. "
  1769. class="evaCss"
  1770. >
  1771. <div class="e_add_top">
  1772. <div class="e_add_title">
  1773. <span>当前使用目标管理</span>
  1774. <span>{{ eTitle }}</span>
  1775. <img
  1776. src="../../assets/line.png"
  1777. class="cru_line"
  1778. style="
  1779. width: 125px;
  1780. height: 20px;
  1781. bottom: -10px;
  1782. left: 155px;
  1783. "
  1784. />
  1785. <!-- <el-input
  1786. v-model="eTitle"
  1787. placeholder="请输入名称"
  1788. @change="setMindData"
  1789. ></el-input>-->
  1790. </div>
  1791. </div>
  1792. <div class="e_add_content" style="width: 100%">
  1793. <div class="e_add_list_pbox" style="width: 100%">
  1794. <div class="e_add_list_pbox_title">
  1795. <span class="type_title">切换模式</span>
  1796. <div class="type_content">
  1797. <span
  1798. :class="{ active: typeMode == 1 }"
  1799. @click="OtherMb(1)"
  1800. >目标树</span
  1801. >
  1802. <span
  1803. :class="{ active: typeMode == 2 }"
  1804. @click="OtherMb(2)"
  1805. >目标罗盘</span
  1806. >
  1807. <span
  1808. :class="{ active: typeMode == 3 }"
  1809. @click="OtherMb(3)"
  1810. >目标看板</span
  1811. >
  1812. </div>
  1813. </div>
  1814. <div class="e_add_list_pbox_content">
  1815. <Mind
  1816. :showBar="false"
  1817. :mindData="data"
  1818. style="width: 100%"
  1819. :jsmindId="
  1820. unitIndex + '-' + itemTaskIndex + 'mind'
  1821. "
  1822. v-if="typeMode == 1"
  1823. ></Mind>
  1824. <Sunburst
  1825. :Josn="eJson"
  1826. :num="eJSONNum"
  1827. style="width: 100%"
  1828. v-if="typeMode == 2"
  1829. ></Sunburst>
  1830. <SeeBoard
  1831. :Josn="eJson"
  1832. :num="eJSONNum"
  1833. :ename="eTitle"
  1834. style="width: 100%"
  1835. v-if="typeMode == 3"
  1836. ></SeeBoard>
  1837. </div>
  1838. </div>
  1839. </div>
  1840. </div>
  1841. </div>
  1842. </div>
  1843. <div class="funBlock" style="padding: 0">
  1844. <div class="fold">
  1845. <div @click="fold(itemTaskIndex, $event, 1)">折叠</div>
  1846. <div class="arrow">
  1847. <img src="../../assets/icon/fold.png" alt />
  1848. </div>
  1849. </div>
  1850. <div class="fold">
  1851. <div @click="fold(itemTaskIndex, $event, 0)">展开</div>
  1852. <div class="arrow">
  1853. <img src="../../assets/icon/expand.png" alt />
  1854. </div>
  1855. </div>
  1856. </div>
  1857. </div>
  1858. <div class="addTaskBorder" @click="addTaskBorder">
  1859. <div>
  1860. <img src="../../assets/icon/addHw.png" alt />
  1861. <span>添加任务</span>
  1862. </div>
  1863. </div>
  1864. </div>
  1865. </div>
  1866. </div>
  1867. <div
  1868. style="
  1869. width: calc(100% - 20px);
  1870. background: rgb(255, 255, 255);
  1871. border-radius: 10px;
  1872. "
  1873. v-if="this.steps == 4"
  1874. >
  1875. <div class="basic_box_success">
  1876. <div class="right_img">
  1877. <img src="../../assets/icon/right.png" alt />
  1878. </div>
  1879. <div style="font-weight: bold">成功</div>
  1880. <!-- <div>您的课程编号</div>
  1881. <div class="number">{{ number }}</div>-->
  1882. <!-- <div class="success_button">
  1883. <div class="look_course" @click="isNoFinsh">
  1884. 邀请老师协同编辑
  1885. </div>
  1886. <div class="attend_others" @click="goCourse">预览课程</div>
  1887. </div> -->
  1888. </div>
  1889. </div>
  1890. <div class="info_btnBox">
  1891. <button
  1892. class="info_btn"
  1893. v-if="steps == 1"
  1894. @click="goTo('/course?userid=' + userid + '&oid=' + oid)"
  1895. >
  1896. 返回课程
  1897. </button>
  1898. <button
  1899. class="info_btn"
  1900. v-if="steps > 1 && steps != 5"
  1901. @click="lastSteps"
  1902. >
  1903. {{ steps == 4 ? "返回首页" : "上一步" }}
  1904. </button>
  1905. <button class="info_btn" v-if="steps < 5" @click="nextSteps">
  1906. {{ steps == 3 ? "确认上传" : "下一步" }}
  1907. </button>
  1908. </div>
  1909. </div>
  1910. </div>
  1911. </div>
  1912. <el-dialog
  1913. title="提示"
  1914. :visible.sync="dialogVisible"
  1915. :append-to-body="true"
  1916. width="25%"
  1917. :before-close="handleClose"
  1918. class="dialog_diy2 customWidth"
  1919. >
  1920. <div>请复制该链接邀请协同编辑</div>
  1921. <div>http://www.boomyon.com/index-zhang.com</div>
  1922. <span slot="footer" class="dialog-footer">
  1923. <el-button type="primary">复制链接分享</el-button>
  1924. <el-button @click="dialogVisible = false">取消</el-button>
  1925. </span>
  1926. </el-dialog>
  1927. <el-dialog
  1928. :title="updateBoolean2 ? '查看文档' : '添加文档'"
  1929. :visible.sync="dialogVisible1"
  1930. :append-to-body="true"
  1931. width="25%"
  1932. :before-close="handleClose"
  1933. class="dialog_diy2 customWidth"
  1934. >
  1935. <el-form>
  1936. <el-form-item label="文档标题">
  1937. <el-input
  1938. v-model="tTitle"
  1939. auto-complete="off"
  1940. placeholder="请输入文档标题名..."
  1941. ></el-input>
  1942. </el-form-item>
  1943. <div>文档简介</div>
  1944. <editor-bar v-model="tdetail" @change="change"></editor-bar>
  1945. </el-form>
  1946. <span slot="footer" class="dialog-footer">
  1947. <el-button @click="dialogVisible1 = false">取 消</el-button>
  1948. <el-button type="primary" @click="addWord" v-if="!updateBoolean2"
  1949. >添加</el-button
  1950. >
  1951. <el-button type="primary" @click="upWord" v-else>修 改</el-button>
  1952. </span>
  1953. </el-dialog>
  1954. <el-dialog
  1955. title="添加文档"
  1956. :visible.sync="dialogVisible2"
  1957. :append-to-body="true"
  1958. width="500px"
  1959. :before-close="handleClose"
  1960. class="dialog_diy"
  1961. >
  1962. <el-form>
  1963. <el-form-item label="文档标题">
  1964. <el-input
  1965. v-model="templateC.title"
  1966. auto-complete="off"
  1967. placeholder="请输入文档标题名..."
  1968. ></el-input>
  1969. </el-form-item>
  1970. <div>文档内容</div>
  1971. <editor-bar v-model="cTemplate" @change="change"></editor-bar>
  1972. </el-form>
  1973. <span slot="footer" class="dialog-footer">
  1974. <el-button @click="clearChoose">取 消</el-button>
  1975. <el-button type="primary" @click="wordNext()">确定</el-button>
  1976. </span>
  1977. </el-dialog>
  1978. <el-dialog
  1979. title="添加富文本"
  1980. :visible.sync="dialogVisible6"
  1981. :append-to-body="true"
  1982. width="500px"
  1983. :before-close="handleClose"
  1984. class="dialog_diy"
  1985. >
  1986. <el-form>
  1987. <el-form-item label="文本标题">
  1988. <el-input
  1989. v-model="AttText.title"
  1990. auto-complete="off"
  1991. @input="change2"
  1992. placeholder="请输入文本标题..."
  1993. ></el-input>
  1994. </el-form-item>
  1995. <div>富文本内容</div>
  1996. <editor-bar v-model="AttText.text" @change="change"></editor-bar>
  1997. </el-form>
  1998. <span slot="footer" class="dialog-footer">
  1999. <el-button @click="clearAttText">取 消</el-button>
  2000. <el-button type="primary" @click="isAddOrUpdateAttText">确定</el-button>
  2001. </span>
  2002. </el-dialog>
  2003. <el-dialog
  2004. title="添加链接"
  2005. :visible.sync="dialogVisible7"
  2006. :append-to-body="true"
  2007. width="500px"
  2008. :before-close="handleClose"
  2009. class="dialog_diy lineCss"
  2010. >
  2011. <el-form>
  2012. <el-form-item label="链接" :label-width="formLabelWidth">
  2013. <span>
  2014. <el-input
  2015. placeholder="请输入链接"
  2016. clearable
  2017. v-model="line"
  2018. class="add_input"
  2019. ></el-input>
  2020. </span>
  2021. </el-form-item>
  2022. </el-form>
  2023. <span slot="footer" class="dialog-footer">
  2024. <el-button @click="clearLine">取 消</el-button>
  2025. <el-button type="primary" @click="isAddOrUpdateLine">确定</el-button>
  2026. </span>
  2027. </el-dialog>
  2028. <el-dialog
  2029. title="添加课程成员"
  2030. :visible.sync="dialogVisible3"
  2031. :append-to-body="true"
  2032. width="25%"
  2033. height="80%"
  2034. :before-close="handleClose"
  2035. class="addNewPP customWidth"
  2036. >
  2037. <div class="people">
  2038. <div class="people_top">
  2039. <div class="people_nav">选择成员</div>
  2040. <div class="people_top_right">
  2041. <div class="people_search">
  2042. <el-input
  2043. placeholder="搜索成员"
  2044. v-model="searchPeople"
  2045. ></el-input>
  2046. <div class="search_img" @click="searchStudent">
  2047. <img src="../../assets/icon/search.png" alt />
  2048. </div>
  2049. </div>
  2050. </div>
  2051. </div>
  2052. <el-checkbox-group v-model="checkboxList" class="people_name">
  2053. <el-checkbox
  2054. v-for="item in studentJuri"
  2055. :key="item.userid"
  2056. :label="item.userid"
  2057. >{{ item.name ? item.name : "暂无学生可选" }}</el-checkbox
  2058. >
  2059. </el-checkbox-group>
  2060. </div>
  2061. <span slot="footer" class="dialog-footer">
  2062. <el-button @click="dialogVisible3 = false">取 消</el-button>
  2063. <el-button type="primary" @click="isAddPP">确定</el-button>
  2064. </span>
  2065. </el-dialog>
  2066. <el-dialog
  2067. title="添加权限"
  2068. :visible.sync="dialogVisibleClass"
  2069. :append-to-body="true"
  2070. width="400px"
  2071. height="80%"
  2072. :before-close="handleClose"
  2073. class="addNewPP"
  2074. >
  2075. <div class="people" style="height: 300px">
  2076. <div class="people_top">
  2077. <div class="people_nav">选择班级</div>
  2078. </div>
  2079. <el-checkbox-group v-model="checkboxList2" class="people_name">
  2080. <div v-for="(item, index) in grade" :key="item.id">
  2081. <el-checkbox :label="item.id">
  2082. {{ item.name ? item.name : "暂无班级可选" }}
  2083. </el-checkbox>
  2084. <div>
  2085. <span>{{ index }}</span>
  2086. </div>
  2087. </div>
  2088. </el-checkbox-group>
  2089. </div>
  2090. <span slot="footer" class="dialog-footer">
  2091. <el-button @click="dialogVisibleClass = false">取 消</el-button>
  2092. <el-button type="primary" @click="isAddClass">确定</el-button>
  2093. </span>
  2094. </el-dialog>
  2095. <el-dialog
  2096. title="添加协同成员"
  2097. :visible.sync="dialogVisibleMember"
  2098. :append-to-body="true"
  2099. width="25%"
  2100. height="80%"
  2101. :before-close="handleClose"
  2102. class="addNewPP customWidth"
  2103. >
  2104. <div class="people">
  2105. <div class="people_top">
  2106. <div class="people_nav">选择成员</div>
  2107. <div class="people_top_right">
  2108. <div class="people_search">
  2109. <el-input
  2110. placeholder="搜索成员"
  2111. v-model="searchTN"
  2112. @keyup.enter.native="getTeacher"
  2113. ></el-input>
  2114. <div class="search_img" @click="getTeacher">
  2115. <img src="../../assets/icon/search.png" alt />
  2116. </div>
  2117. </div>
  2118. </div>
  2119. </div>
  2120. <el-checkbox-group
  2121. v-model="checkboxList3"
  2122. class="people_name"
  2123. v-if="teacherJuri.length"
  2124. >
  2125. <el-checkbox
  2126. v-for="item in teacherJuri"
  2127. :key="item.userid"
  2128. :label="item.userid"
  2129. >
  2130. {{ (item.name ? item.name : "暂无姓名") + " " + item.username }}
  2131. </el-checkbox>
  2132. </el-checkbox-group>
  2133. <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
  2134. </div>
  2135. <span slot="footer" class="dialog-footer">
  2136. <el-button @click="dialogVisibleMember = false">取 消</el-button>
  2137. <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
  2138. </span>
  2139. </el-dialog>
  2140. <el-dialog
  2141. title="创建问卷调查"
  2142. :visible.sync="dialogVisible5"
  2143. :append-to-body="true"
  2144. width="800px"
  2145. :before-close="handleClose"
  2146. class="dialog_diy"
  2147. >
  2148. <div>
  2149. <div
  2150. class="a_add_title"
  2151. style="
  2152. display: flex;
  2153. flex-direction: row;
  2154. align-items: center;
  2155. justify-content: center;
  2156. "
  2157. >
  2158. <div style="margin-right: 20px; font-size: 20px">问卷标题:</div>
  2159. <el-input
  2160. v-model="askJson.askTitle"
  2161. placeholder="请输入问卷标题"
  2162. style="width: 400px"
  2163. ></el-input>
  2164. </div>
  2165. <div class="a_addBox">
  2166. <div style="font-size: 16px; color: #c7c7c7">请输入问卷内容</div>
  2167. <div
  2168. class="a_add_box"
  2169. v-for="(item1, index1) in askJson.askCount"
  2170. :key="index1"
  2171. >
  2172. <div class="a_add_head">
  2173. <div>
  2174. {{ index1 + 1 + "、" }}
  2175. <el-input
  2176. class="a_add_head_input"
  2177. v-model="askJson.askJson[index1].askstitle"
  2178. placeholder="请输入问卷题目..."
  2179. ></el-input>
  2180. </div>
  2181. <div class="a_add_head_div">
  2182. <el-button type="primary" size="small" @click="addAskList()"
  2183. >添加</el-button
  2184. >
  2185. <el-button
  2186. type="primary"
  2187. size="small"
  2188. @click="deleteAskList()"
  2189. v-if="index1 != 0"
  2190. >删除</el-button
  2191. >
  2192. </div>
  2193. </div>
  2194. <div class="a_add_body">
  2195. <div class="a_add_input">
  2196. <el-input
  2197. v-for="(item2, checkIndex) in askJson.askJson[index1].askItem"
  2198. :key="checkIndex"
  2199. v-model="askJson.askJson[index1].checkList[checkIndex]"
  2200. placeholder="请输入选项..."
  2201. style="width: 150px; margin: 10px 10px 0 0"
  2202. ></el-input>
  2203. </div>
  2204. <div class="a_add_body_div">
  2205. <el-button
  2206. style="margin: 10px 0px 0 0"
  2207. type="primary"
  2208. size="small"
  2209. @click="addcheckList(askJson.askJson[index1])"
  2210. >添加</el-button
  2211. >
  2212. <el-button
  2213. type="primary"
  2214. size="small"
  2215. style="margin: 10px 0 0 0"
  2216. @click="deletecheckList(askJson.askJson[index1])"
  2217. v-if="askJson.askJson[index1].askItem != 1"
  2218. >删除</el-button
  2219. >
  2220. </div>
  2221. </div>
  2222. </div>
  2223. </div>
  2224. </div>
  2225. <span slot="footer" class="dialog-footer">
  2226. <el-button @click="dialogVisible5 = false">取 消</el-button>
  2227. <el-button type="primary" @click="addAsk">确 定</el-button>
  2228. </span>
  2229. </el-dialog>
  2230. <el-dialog
  2231. title="添加工具"
  2232. :visible.sync="dialogVisible4"
  2233. :append-to-body="true"
  2234. width="600px"
  2235. :before-close="handleClose"
  2236. class="dialog_diy addToolsDia"
  2237. >
  2238. <div class="toolChoose" style="padding: 0 0 0 30px">
  2239. <div class="tools">
  2240. <div
  2241. class="leftTools"
  2242. style="
  2243. width: 95%;
  2244. padding: 0 0 15px 0;
  2245. border-bottom: 1px solid #efefef;
  2246. margin-bottom: 15px;
  2247. "
  2248. v-for="(itemTools, itemToolsIndex) in chapTools"
  2249. :key="itemToolsIndex"
  2250. >
  2251. <div
  2252. style="
  2253. display: flex;
  2254. flex-direction: row;
  2255. align-items: baseline;
  2256. flex-wrap: nowrap;
  2257. justify-content: flex-start;
  2258. position: relative;
  2259. "
  2260. >
  2261. <div class="chooseWho">
  2262. <div
  2263. :class="chapToolsType == 0 ? 'isChooseActive' : ''"
  2264. @click="chapToolsType = 0"
  2265. >
  2266. 互动类
  2267. </div>
  2268. <div
  2269. :class="chapToolsType == 1 ? 'isChooseActive' : ''"
  2270. @click="chapToolsType = 1"
  2271. >
  2272. 思维类
  2273. </div>
  2274. <div
  2275. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  2276. @click="chapToolsType = 2"
  2277. >
  2278. 评价类
  2279. </div>
  2280. <div
  2281. :class="chapToolsType == 2 ? 'isChooseActive' : ''"
  2282. @click="chapToolsType = 2"
  2283. >
  2284. 其他
  2285. </div>
  2286. </div>
  2287. </div>
  2288. <div style="min-height: 163px">
  2289. <div class="toolSort" v-if="chapToolsType == 0">
  2290. <div class="tool">
  2291. <div class="whiteBIcon" @click="chapAddTools(8)">
  2292. <img
  2293. src="../../assets/icon/secondToolList/library.png"
  2294. alt
  2295. />
  2296. <div style="margin: 5px 0">素材库</div>
  2297. </div>
  2298. <div class="check" @click="chapAddTools(8)">
  2299. <img
  2300. src="../../assets/icon/checkNo.png"
  2301. alt
  2302. v-if="itemTools.tools.indexOf(8) == -1"
  2303. />
  2304. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2305. </div>
  2306. </div>
  2307. </div>
  2308. <div class="toolSort" v-if="chapToolsType == 1">
  2309. <div class="tool">
  2310. <div class="whiteBIcon" @click="chapAddTools(7)">
  2311. <img
  2312. src="../../assets/icon/secondToolList/mindNetwork.png"
  2313. alt
  2314. />
  2315. <div style="margin: 5px 0">思维网格</div>
  2316. </div>
  2317. <div class="check" @click="chapAddTools(7)">
  2318. <img
  2319. src="../../assets/icon/checkNo.png"
  2320. alt
  2321. v-if="itemTools.tools.indexOf(7) == -1"
  2322. />
  2323. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2324. </div>
  2325. </div>
  2326. <div class="tool">
  2327. <div class="whiteBIcon" @click="chapAddTools(1)">
  2328. <img
  2329. src="../../assets/icon/secondToolList/whiteBoard.png"
  2330. alt
  2331. />
  2332. <div style="margin: 5px 0">电子白板</div>
  2333. </div>
  2334. <div class="check" @click="chapAddTools(1)">
  2335. <img
  2336. src="../../assets/icon/checkNo.png"
  2337. alt
  2338. v-if="itemTools.tools.indexOf(1) == -1"
  2339. />
  2340. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2341. </div>
  2342. </div>
  2343. <div class="tool">
  2344. <div class="whiteBIcon" @click="chapAddTools(2)">
  2345. <img src="../../assets/icon/secondToolList/note.png" alt />
  2346. <div style="margin: 5px 0">便签</div>
  2347. </div>
  2348. <div class="check" @click="chapAddTools(2)">
  2349. <img
  2350. src="../../assets/icon/checkNo.png"
  2351. alt
  2352. v-if="itemTools.tools.indexOf(2) == -1"
  2353. />
  2354. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2355. </div>
  2356. </div>
  2357. <div class="tool">
  2358. <div class="whiteBIcon" @click="chapAddTools(6)">
  2359. <img src="../../assets/icon/secondToolList/doc.png" alt />
  2360. <div style="margin: 5px 0">协同文档</div>
  2361. </div>
  2362. <div class="check" @click="chapAddTools(6)">
  2363. <img
  2364. src="../../assets/icon/checkNo.png"
  2365. alt
  2366. v-if="itemTools.tools.indexOf(6) == -1"
  2367. />
  2368. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2369. </div>
  2370. </div>
  2371. <div class="tool">
  2372. <div class="whiteBIcon" @click="chapAddTools(3)">
  2373. <img
  2374. src="../../assets/icon/secondToolList/mindMapping.png"
  2375. alt
  2376. />
  2377. <div style="margin: 5px 0">思维导图</div>
  2378. </div>
  2379. <div class="check" @click="chapAddTools(3)">
  2380. <img
  2381. src="../../assets/icon/checkNo.png"
  2382. alt
  2383. v-if="itemTools.tools.indexOf(3) == -1"
  2384. />
  2385. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2386. </div>
  2387. </div>
  2388. <div class="tool">
  2389. <div class="whiteBIcon" @click="chapAddTools(31)">
  2390. <img
  2391. src="../../assets/icon/secondToolList/networkPanel.png"
  2392. alt
  2393. />
  2394. <div style="margin: 5px 0">数学画板</div>
  2395. </div>
  2396. <div class="check" @click="chapAddTools(31)">
  2397. <img
  2398. src="../../assets/icon/checkNo.png"
  2399. alt
  2400. v-if="itemTools.tools.indexOf(31) == -1"
  2401. />
  2402. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2403. </div>
  2404. </div>
  2405. </div>
  2406. <div class="toolSort" v-if="chapToolsType == 2">
  2407. <div class="tool">
  2408. <div class="whiteBIcon" @click="chapAddTools(5)">
  2409. <img src="../../assets/icon/thirdToolList/score.png" alt />
  2410. <div style="margin: 5px 0">量规评分</div>
  2411. </div>
  2412. <div class="check" @click="chapAddTools(5)">
  2413. <img
  2414. src="../../assets/icon/checkNo.png"
  2415. alt
  2416. v-if="itemTools.tools.indexOf(5) == -1"
  2417. />
  2418. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2419. </div>
  2420. </div>
  2421. <div class="tool">
  2422. <div
  2423. class="whiteBIcon"
  2424. @click="openTools(chapCount, 4, null)"
  2425. >
  2426. <img src="../../assets/icon/thirdToolList/ask.png" alt />
  2427. <div style="margin: 5px 0">问卷调查</div>
  2428. </div>
  2429. <div class="check" @click="chapAddTools(4)">
  2430. <img
  2431. src="../../assets/icon/checkNo.png"
  2432. alt
  2433. v-if="itemTools.tools.indexOf(4) == -1"
  2434. />
  2435. <img src="../../assets/icon/checkedIs.png" alt v-else />
  2436. </div>
  2437. </div>
  2438. </div>
  2439. </div>
  2440. <div>
  2441. <input
  2442. type="text"
  2443. placeholder="添加工具描述"
  2444. class="binfo_input"
  2445. style="margin: 20px 0; width: 71.5% !important"
  2446. v-model="itemTools.toolDetail"
  2447. />
  2448. </div>
  2449. </div>
  2450. </div>
  2451. </div>
  2452. <span slot="footer" class="dialog-footer">
  2453. <el-button @click="dialogVisible4 = false">取 消</el-button>
  2454. <el-button type="primary" @click="addChaptersDataTools">确定</el-button>
  2455. </span>
  2456. </el-dialog>
  2457. <el-dialog
  2458. title="添加问答"
  2459. :visible.sync="dialogVisible8"
  2460. :append-to-body="true"
  2461. width="500px"
  2462. :before-close="handleClose"
  2463. class="dialog_diy"
  2464. >
  2465. <div>
  2466. <div
  2467. class="a_add_title"
  2468. style="
  2469. display: flex;
  2470. flex-direction: column;
  2471. align-items: flex-start;
  2472. justify-content: center;
  2473. "
  2474. >
  2475. <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
  2476. <el-input
  2477. v-model="answerQ"
  2478. placeholder="请输入您要问的问题"
  2479. ></el-input>
  2480. </div>
  2481. </div>
  2482. <span slot="footer" class="dialog-footer">
  2483. <el-button @click="dialogVisible8 = false">取 消</el-button>
  2484. <el-button type="primary" @click="addAnswer">确 定</el-button>
  2485. </span>
  2486. </el-dialog>
  2487. <el-dialog
  2488. title="上传图片"
  2489. :visible.sync="choosePicVisible"
  2490. :append-to-body="true"
  2491. width="500px"
  2492. :before-close="handleClose"
  2493. class="dialog_diy"
  2494. >
  2495. <div>
  2496. <div class="fileCss">
  2497. <div>选择本地文件</div>
  2498. <div>选择系统文件</div>
  2499. </div>
  2500. <div class="fileCss" style="padding-top: 20px">
  2501. <div>
  2502. <button class="info_btn" @click="addImg($event)">
  2503. 选择本地文件
  2504. <input
  2505. type="file"
  2506. accept="image/*"
  2507. style="display: none"
  2508. @change="beforeUpload1"
  2509. />
  2510. </button>
  2511. </div>
  2512. <div>
  2513. <el-button
  2514. @click="getAllBanner"
  2515. v-if="isSysPic == false && cover.length == 0"
  2516. >选择系统文件</el-button
  2517. >
  2518. <div class="isSysPic" v-if="isSysPic == true && cover.length > 0">
  2519. <img :src="cover[0].url" alt="" />
  2520. <div class="deletePic" @click="deleteSysPic">
  2521. <img src="../../assets/icon/delete.png" alt="" />
  2522. </div>
  2523. </div>
  2524. </div>
  2525. </div>
  2526. </div>
  2527. <span slot="footer" class="dialog-footer">
  2528. <el-button @click="choosePicVisible = false">取 消</el-button>
  2529. <el-button type="primary" @click="choosePicVisible = false"
  2530. >确 定</el-button
  2531. >
  2532. </span>
  2533. </el-dialog>
  2534. <el-dialog
  2535. title="选择系统文件"
  2536. :visible.sync="sysPicVisible"
  2537. :append-to-body="true"
  2538. width="700px"
  2539. :before-close="handleClose"
  2540. class="dialog_diy"
  2541. >
  2542. <div class="cru_selectBox" style="margin:0;">
  2543. <div
  2544. @click="getChoosePic(1)"
  2545. class="cru_select"
  2546. :class="chooseType == 1 ? 'cru_selected' : ''"
  2547. >
  2548. 绘画
  2549. </div>
  2550. <div
  2551. @click="getChoosePic(2)"
  2552. class="cru_select"
  2553. :class="chooseType == 2 ? 'cru_selected' : ''"
  2554. >
  2555. 科技
  2556. </div>
  2557. <div
  2558. @click="getChoosePic(3)"
  2559. class="cru_select"
  2560. :class="chooseType == 3 ? 'cru_selected' : ''"
  2561. >
  2562. 人文
  2563. </div>
  2564. <div
  2565. @click="getChoosePic(4)"
  2566. class="cru_select"
  2567. :class="chooseType == 4 ? 'cru_selected' : ''"
  2568. >
  2569. 艺术
  2570. </div>
  2571. </div>
  2572. <div class="sysPicBox">
  2573. <div v-for="(sys, sysIndex) in sysPic" :key="sysIndex" class="sysPic">
  2574. <img :src="sys.poster" alt="" @click="chooseSysPic(sys.poster)" />
  2575. </div>
  2576. </div>
  2577. <span slot="footer" class="dialog-footer">
  2578. <el-button @click="sysPicVisible = false">取 消</el-button>
  2579. <el-button type="primary">确 定</el-button>
  2580. </span>
  2581. </el-dialog>
  2582. </div>
  2583. </template>
  2584. <script>
  2585. import "../../common/aws-sdk-2.235.1.min.js";
  2586. import $ from "jquery";
  2587. import EditorBar from "../../components/tools/wangEnduit";
  2588. import Mind from "../tools/jsmind2";
  2589. import Sunburst from "../tools/sunburst";
  2590. import SeeBoard from "../tools/seeBoard";
  2591. export default {
  2592. components: { EditorBar, Mind, Sunburst, SeeBoard },
  2593. data() {
  2594. return {
  2595. checkAll: false,
  2596. chooseType: 1,
  2597. checkedCities: [],
  2598. isIndeterminate: true,
  2599. isSysPic: false,
  2600. steps: 1,
  2601. nbOrder: 0,
  2602. courseId: "",
  2603. chapToolsType: 0,
  2604. chapTools: [
  2605. {
  2606. tools: [],
  2607. toolDetail: "",
  2608. },
  2609. ],
  2610. line: "",
  2611. sysPic: [],
  2612. lineCount: 0,
  2613. lineType: 0,
  2614. chapCount: 0,
  2615. courseName: "",
  2616. isTeacherSee: true,
  2617. courseText: "",
  2618. formLabelWidth: "100px",
  2619. choosePicVisible: false,
  2620. sysPicVisible: false,
  2621. uploadLoading1: false,
  2622. noneBtnImg: false,
  2623. updateBoolean2: false,
  2624. unitIndex: 0,
  2625. taskCount: 0,
  2626. dialogVisible: false,
  2627. dialogVisible1: false,
  2628. dialogVisible2: false,
  2629. dialogVisible3: false,
  2630. dialogVisible4: false,
  2631. dialogVisible5: false,
  2632. dialogVisible6: false,
  2633. dialogVisible7: false,
  2634. dialogVisible8: false,
  2635. dialogVisible9: false,
  2636. dialogVisibleClass: false,
  2637. dialogVisibleMember: false,
  2638. publicTool: 0,
  2639. searchPeople: "",
  2640. searchTN: "",
  2641. userid: this.$route.query.userid,
  2642. oid: this.$route.query.oid,
  2643. cid: this.$route.query.cid != undefined ? this.$route.query.cid : "",
  2644. cover: [], //课程封面
  2645. myWord: [],
  2646. evaJuri: [],
  2647. evalua: "",
  2648. eTitle: "",
  2649. eJson: {},
  2650. fid: "", //一级
  2651. sid: "", //二级
  2652. tid: "", //二级
  2653. typeMode: 1,
  2654. eJSONNum: 0,
  2655. data: {
  2656. meta: {
  2657. name: "example",
  2658. author: "dd@163.com",
  2659. version: "0.2",
  2660. },
  2661. format: "node_array",
  2662. data: [{ id: "root", isroot: true, topic: "" }],
  2663. },
  2664. askJson: {
  2665. askCount: 1,
  2666. askTitle: "",
  2667. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  2668. },
  2669. unitJson2: [],
  2670. unitJson: [
  2671. {
  2672. dyName: "", //单元标题
  2673. chapterInfo: [
  2674. {
  2675. isread: false,
  2676. chapterid: this.guid(),
  2677. title: "",
  2678. courseName: "",
  2679. taskJson: [
  2680. {
  2681. task: "",
  2682. taskDetail: "",
  2683. chapterData: [],
  2684. toolText: "",
  2685. toolChoose: [
  2686. {
  2687. tool: [],
  2688. toolDetail: "",
  2689. toolType: 0,
  2690. askCount: 1,
  2691. askTitle: "",
  2692. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  2693. },
  2694. ],
  2695. isShowTools: false,
  2696. askCount: 1,
  2697. isFold: 0,
  2698. askTitle: "",
  2699. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  2700. checkJson: [{ checkCount: [], checkPerent: [] }],
  2701. homeworkList: [],
  2702. },
  2703. ],
  2704. itemCount: 1,
  2705. fileList1: [],
  2706. video: [],
  2707. testData: [],
  2708. pData: [],
  2709. templateArray: [],
  2710. },
  2711. ],
  2712. },
  2713. ],
  2714. studentJuri: [],
  2715. teacherJuri: [],
  2716. checkboxList: [],
  2717. checkboxList2: [],
  2718. checkboxList3: [],
  2719. number: "",
  2720. tTitle: "",
  2721. tdetail: "",
  2722. templateC: {},
  2723. AttText: {},
  2724. AttTextType: 0,
  2725. AttTextIndex: 0,
  2726. cTemplate: "",
  2727. CourseType: [],
  2728. CourseTypeJson: {},
  2729. courseTypeId: [],
  2730. courseTypeSon: [],
  2731. clearArray: [],
  2732. loading: false,
  2733. toolType: 0,
  2734. inputShow: true,
  2735. toolIndex: 0,
  2736. cidType: 0,
  2737. answerQ: "",
  2738. grade: [],
  2739. courseUserid: "",
  2740. timer: null,
  2741. checkId: "",
  2742. isDelete: 1,
  2743. addindex: 0,
  2744. };
  2745. },
  2746. computed: {
  2747. offsetLetfPx: function () {
  2748. //addnum可以直接在模板语法里面用,相当于data内的值
  2749. return (
  2750. $(".cru_select")[this.unitIndex] &&
  2751. $(".cru_select")[this.unitIndex].offsetLeft
  2752. );
  2753. },
  2754. },
  2755. watch: {
  2756. unitIndex(newValue, oldValue) {
  2757. if (this.isDelete == 2) {
  2758. this.isDelete = 1;
  2759. return;
  2760. }
  2761. if (this.cid != "") {
  2762. let _unitIndex = oldValue;
  2763. if (
  2764. JSON.stringify(this.unitJson2[_unitIndex]) ==
  2765. JSON.stringify(this.unitJson[_unitIndex])
  2766. ) {
  2767. return;
  2768. }
  2769. let cPan = 1;
  2770. for (
  2771. var j = 0;
  2772. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  2773. j++
  2774. ) {
  2775. if (
  2776. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  2777. .length > 1
  2778. ) {
  2779. for (
  2780. var z = 0;
  2781. z <
  2782. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  2783. .length;
  2784. z++
  2785. ) {
  2786. if (
  2787. !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j]
  2788. .toolChoose[z].tool.length
  2789. ) {
  2790. this.$message.error("请把工具添加完整");
  2791. cPan = 2;
  2792. break;
  2793. }
  2794. }
  2795. }
  2796. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  2797. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  2798. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  2799. (ele) => {
  2800. return ele.value != "";
  2801. }
  2802. );
  2803. }
  2804. }
  2805. if (cPan == 2) {
  2806. this.unitIndex = oldValue;
  2807. return;
  2808. }
  2809. for (var i = 0; i < this.unitJson.length; i++) {
  2810. if (this.addindex != i) {
  2811. delete this.unitJson[i].isUpdate;
  2812. }
  2813. }
  2814. this.addindex = -1;
  2815. let params = [
  2816. {
  2817. cid: this.cid,
  2818. chapters: JSON.stringify(this.unitJson),
  2819. uid: this.userid,
  2820. unitIndex: _unitIndex,
  2821. },
  2822. ];
  2823. this.ajax
  2824. .post(this.$store.state.api + "updateWorkNew4", params)
  2825. .then((res) => {
  2826. // this.$message({
  2827. // message: "修改成功",
  2828. // type: "success",
  2829. // });
  2830. // this.courseId = this.cid;
  2831. })
  2832. .catch((err) => {
  2833. this.$message.error("网络不佳");
  2834. console.error(err);
  2835. });
  2836. }
  2837. },
  2838. },
  2839. methods: {
  2840. handleCheckAllChange(val) {
  2841. this.checkedCities = val ? cityOptions : [];
  2842. this.isIndeterminate = false;
  2843. },
  2844. handleCheckedCitiesChange(value) {
  2845. let checkedCount = value.length;
  2846. this.checkAll = checkedCount === this.cities.length;
  2847. this.isIndeterminate =
  2848. checkedCount > 0 && checkedCount < this.cities.length;
  2849. },
  2850. addHw(e) {
  2851. var el = e.currentTarget;
  2852. el.getElementsByTagName("input")[0].click();
  2853. },
  2854. change(val) {
  2855. console.log(val);
  2856. },
  2857. change2(val) {
  2858. console.log(val);
  2859. this.$forceUpdate();
  2860. },
  2861. handleClose(done) {
  2862. done();
  2863. },
  2864. imgChange1(file, fileList, type, itemTaskIndex) {
  2865. if (type == 1) {
  2866. var _tmp = this.cover;
  2867. } else if (
  2868. type == 2 ||
  2869. type == 3 ||
  2870. type == 6 ||
  2871. type == 7 ||
  2872. type == 8
  2873. ) {
  2874. var _tmp =
  2875. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  2876. .chapterData;
  2877. } else if (type == 4) {
  2878. var _tmp = this.unitJson[this.unitIndex].chapterInfo[0].fileList1;
  2879. } else {
  2880. var _tmp =
  2881. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  2882. .homeworkList;
  2883. }
  2884. this.noneBtnImg = _tmp.length >= 1;
  2885. },
  2886. goTo(path) {
  2887. this.$router.push(path);
  2888. },
  2889. guid() {
  2890. var _num,
  2891. i,
  2892. _guid = "";
  2893. for (i = 0; i < 32; i++) {
  2894. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  2895. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  2896. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  2897. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  2898. _guid += "-";
  2899. }
  2900. }
  2901. return _guid;
  2902. },
  2903. lastSteps() {
  2904. if (this.steps == 4) {
  2905. this.goTo("/course?userid=" + this.userid + "&oid=" + this.oid);
  2906. } else {
  2907. if (this.cidType == 0) {
  2908. this.steps--;
  2909. if (this.steps == 1) {
  2910. setTimeout(() => {
  2911. this.checkEva(this.checkId);
  2912. }, 0);
  2913. }
  2914. } else {
  2915. if (this.steps == 3) {
  2916. this.steps = 1;
  2917. setTimeout(() => {
  2918. this.checkEva(this.checkId);
  2919. }, 0);
  2920. }
  2921. }
  2922. }
  2923. },
  2924. navSteps(s) {
  2925. if (this.courseName == "") {
  2926. this.$message.error("请将信息填写完整");
  2927. return;
  2928. }
  2929. if (this.cidType == 0) {
  2930. if (this.steps == 1) {
  2931. if (this.cid == "" || this.cid == undefined) {
  2932. this.addWork();
  2933. } else {
  2934. if (this.userid != this.courseUserid) {
  2935. // this.updateWork2();
  2936. } else {
  2937. this.updateWork();
  2938. }
  2939. }
  2940. }
  2941. if (s == 1) {
  2942. this.steps = 1;
  2943. setTimeout(() => {
  2944. this.checkEva(this.checkId);
  2945. }, 0);
  2946. }
  2947. if (s == 2) {
  2948. this.steps = 2;
  2949. }
  2950. if (s == 3) {
  2951. this.cTemplate = this.templateC.content;
  2952. this.dialogVisible2 = false;
  2953. this.steps = 3;
  2954. setTimeout(() => {
  2955. this.checkEva(this.checkId);
  2956. }, 1000);
  2957. }
  2958. } else {
  2959. if (this.steps == 1) {
  2960. if (this.cid == "" || this.cid == undefined) {
  2961. this.addWork();
  2962. } else {
  2963. if (this.userid != this.courseUserid) {
  2964. // this.updateWork2();
  2965. } else {
  2966. this.updateWork();
  2967. }
  2968. }
  2969. }
  2970. if (s == 1) {
  2971. this.steps = 1;
  2972. setTimeout(() => {
  2973. this.checkEva(this.checkId);
  2974. }, 0);
  2975. }
  2976. if (s == 3) {
  2977. this.cTemplate = this.templateC.content;
  2978. this.dialogVisible2 = false;
  2979. this.steps = 3;
  2980. setTimeout(() => {
  2981. this.checkEva(this.checkId);
  2982. }, 1000);
  2983. }
  2984. }
  2985. this.$refs.stepBox.scrollTop = 0;
  2986. },
  2987. nextSteps() {
  2988. if (this.cidType == 1) {
  2989. if (this.steps == 1) {
  2990. if (this.courseName != "") {
  2991. this.steps = 3;
  2992. setTimeout(() => {
  2993. this.checkEva(this.checkId);
  2994. }, 1000);
  2995. if (this.cid == "" || this.cid == undefined) {
  2996. this.addWork();
  2997. } else {
  2998. if (this.userid != this.courseUserid) {
  2999. // this.updateWork2();
  3000. } else {
  3001. this.updateWork();
  3002. }
  3003. }
  3004. } else {
  3005. this.$message.error("请将信息填写完整");
  3006. return;
  3007. }
  3008. } else if (this.steps == 3) {
  3009. if (this.cid == "" || this.cid == undefined) {
  3010. if (this.courseName == "") {
  3011. this.$message.error("请将信息填写完整");
  3012. return;
  3013. } else {
  3014. this.addWork();
  3015. this.steps++;
  3016. }
  3017. } else {
  3018. if (this.courseName == "") {
  3019. this.$message.error("请将信息填写完整");
  3020. return;
  3021. } else {
  3022. if (this.userid != this.courseUserid) {
  3023. this.updateWork2();
  3024. } else {
  3025. this.updateWork();
  3026. }
  3027. this.steps++;
  3028. }
  3029. }
  3030. }
  3031. } else {
  3032. if (this.steps == 1) {
  3033. if (this.courseName != "") {
  3034. if (this.cid == "" || this.cid == undefined) {
  3035. this.addWork();
  3036. } else {
  3037. if (this.userid != this.courseUserid) {
  3038. // this.updateWork2();
  3039. } else {
  3040. this.updateWork();
  3041. }
  3042. }
  3043. this.steps++;
  3044. } else {
  3045. this.$message.error("请将信息填写完整");
  3046. return;
  3047. }
  3048. } else if (this.steps == 2) {
  3049. if (this.templateC.id != "" || this.templateC.id != undefined) {
  3050. this.cTemplate = this.templateC.content;
  3051. }
  3052. this.dialogVisible2 = false;
  3053. this.steps++;
  3054. setTimeout(() => {
  3055. this.checkEva(this.checkId);
  3056. }, 1000);
  3057. } else if (this.steps == 3) {
  3058. if (this.cid == "" || this.cid == undefined) {
  3059. if (this.courseName == "") {
  3060. this.$message.error("请将信息填写完整");
  3061. return;
  3062. } else {
  3063. this.addWork();
  3064. this.steps++;
  3065. }
  3066. } else {
  3067. if (this.courseName == "") {
  3068. this.$message.error("请将信息填写完整");
  3069. return;
  3070. } else {
  3071. if (this.userid != this.courseUserid) {
  3072. this.updateWork2();
  3073. } else {
  3074. this.updateWork();
  3075. }
  3076. this.steps++;
  3077. }
  3078. }
  3079. }
  3080. }
  3081. this.$refs.stepBox.scrollTop = 0;
  3082. },
  3083. unitSet(i) {
  3084. this.unitIndex = i;
  3085. this.$refs.rightboxR.scrollTop = 0;
  3086. },
  3087. time() {
  3088. if (!this.now) {
  3089. this.now = new Date().getTime();
  3090. return true;
  3091. } else {
  3092. let time = new Date().getTime();
  3093. if (time - this.now > 3000) {
  3094. this.now = time;
  3095. return true;
  3096. } else {
  3097. return false;
  3098. }
  3099. }
  3100. },
  3101. deleteUnit(i) {
  3102. var _this = this;
  3103. if (_this.time()) {
  3104. _this
  3105. .$confirm("确定删除此单元吗?", "提示", {
  3106. confirmButtonText: "确定",
  3107. cancelButtonText: "取消",
  3108. type: "warning",
  3109. })
  3110. .then(() => {
  3111. _this.isDelete = 2;
  3112. // _this.unitIndex = _this.unitIndex - 1;
  3113. _this.deleteWork(_this.unitJson[i].chapterInfo[0].chapterid);
  3114. // _this.$message.success("删除成功");
  3115. })
  3116. .catch(() => {
  3117. return;
  3118. });
  3119. }
  3120. },
  3121. deleteWork(chapid) {
  3122. let params = [
  3123. {
  3124. cid: this.cid,
  3125. chapters: JSON.stringify(this.unitJson),
  3126. uid: this.userid,
  3127. chapid: chapid,
  3128. },
  3129. ];
  3130. this.ajax
  3131. .post(this.$store.state.api + "deleteWork", params)
  3132. .then((res) => {
  3133. this.$message({
  3134. message: "删除成功",
  3135. type: "success",
  3136. });
  3137. this.unitJson.splice(this.unitIndex, 1);
  3138. this.unitIndex = this.unitIndex - 1;
  3139. })
  3140. .catch((err) => {
  3141. this.$message.error("网络不佳");
  3142. console.error(err);
  3143. });
  3144. },
  3145. deleteTool(itemTaskIndex, i) {
  3146. var _this = this;
  3147. if (_this.time()) {
  3148. _this
  3149. .$confirm("确定删除此工具吗?", "提示", {
  3150. confirmButtonText: "确定",
  3151. cancelButtonText: "取消",
  3152. type: "warning",
  3153. })
  3154. .then(() => {
  3155. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  3156. itemTaskIndex
  3157. ].toolChoose.splice(i, 1);
  3158. _this.$message.success("删除成功");
  3159. })
  3160. .catch(() => {
  3161. return;
  3162. });
  3163. }
  3164. },
  3165. openT() {
  3166. window.parent.postMessage({ tools: "25" }, "*");
  3167. },
  3168. deleteTask(i) {
  3169. var _this = this;
  3170. if (_this.time()) {
  3171. _this
  3172. .$confirm("确定删除此任务吗?", "提示", {
  3173. confirmButtonText: "确定",
  3174. cancelButtonText: "取消",
  3175. type: "warning",
  3176. })
  3177. .then(() => {
  3178. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
  3179. i,
  3180. 1
  3181. );
  3182. _this.$message.success("删除成功");
  3183. })
  3184. .catch(() => {
  3185. return;
  3186. });
  3187. }
  3188. },
  3189. handlePictureCardPreview(file) {
  3190. this.dialogImageUrl = file.url;
  3191. },
  3192. clean(i, c) {
  3193. this.unitJson[this.unitIndex].chapterInfo[i].fileList1.splice(c, 1);
  3194. },
  3195. handle_remove1(file, fileList, type) {
  3196. var _tmp = this.cover;
  3197. for (var i = 0, len = _tmp.length; i < len; i++) {
  3198. if (_tmp[i].uid == file.uid) {
  3199. _tmp.splice(i, 1);
  3200. break;
  3201. }
  3202. this.cover = _tmp;
  3203. }
  3204. this.noneBtnImg = _tmp.length >= 1;
  3205. this.isSysPic = false;
  3206. },
  3207. addImg(e) {
  3208. var el = e.currentTarget;
  3209. el.getElementsByTagName("input")[0].click();
  3210. },
  3211. addChaptersTools(i) {
  3212. this.chapTools = [
  3213. {
  3214. tools: [],
  3215. toolDetail: "",
  3216. },
  3217. ];
  3218. this.chapCount = i;
  3219. this.dialogVisible4 = true;
  3220. },
  3221. isNoFinsh() {
  3222. this.$message.warning("功能正在开发中");
  3223. },
  3224. addAttText(i) {
  3225. this.AttText = {
  3226. title: "",
  3227. text: "",
  3228. };
  3229. this.taskCount = i;
  3230. this.AttTextType = 0;
  3231. this.$forceUpdate();
  3232. this.dialogVisible6 = true;
  3233. },
  3234. openLine(i) {
  3235. this.line = "";
  3236. this.lineCount = i;
  3237. this.lineType = 0;
  3238. this.$forceUpdate();
  3239. this.dialogVisible7 = true;
  3240. },
  3241. beforeUpload1(event, type) {
  3242. const loading = this.openLoading();
  3243. var file = event.target.files[0];
  3244. var credentials = {
  3245. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  3246. secretAccessKey: "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",
  3247. }; //秘钥形式的登录上传
  3248. window.AWS.config.update(credentials);
  3249. window.AWS.config.region = "cn-northwest-1"; //设置区域
  3250. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  3251. var _this = this;
  3252. if (file) {
  3253. var params = {
  3254. Key:
  3255. file.name.split(".")[0] +
  3256. new Date().getTime() +
  3257. "." +
  3258. file.name.split(".")[file.name.split(".").length - 1],
  3259. ContentType: file.type,
  3260. Body: file,
  3261. "Access-Control-Allow-Credentials": "*",
  3262. ACL: "public-read",
  3263. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  3264. var options = {
  3265. partSize: 2048 * 1024 * 1024,
  3266. queueSize: 2,
  3267. leavePartsOnError: true,
  3268. };
  3269. bucket
  3270. .upload(params, options)
  3271. .on("httpUploadProgress", function (evt) {
  3272. //这里可以写进度条
  3273. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  3274. })
  3275. .send(function (err, data) {
  3276. loading.close();
  3277. if (err) {
  3278. var a = _this.$refs.upload1.uploadFiles;
  3279. a.splice(a.length - 1, a.length);
  3280. _this.$message.error("上传失败");
  3281. } else {
  3282. _this.cover.push({
  3283. name: file.name,
  3284. url: data.Location,
  3285. uid: file.uid,
  3286. });
  3287. _this.imgChange1(null, null, 1, null);
  3288. _this.choosePicVisible = false;
  3289. console.log(data.Location);
  3290. }
  3291. });
  3292. }
  3293. },
  3294. chooseSysPic(p) {
  3295. this.cover.push({
  3296. name: "系统图片.png",
  3297. url: p,
  3298. });
  3299. this.imgChange1(null, null, 1, null);
  3300. this.isSysPic = true;
  3301. this.sysPicVisible = false;
  3302. },
  3303. beforeUpload(data) {
  3304. this.$refs.upload1.uploadFiles;
  3305. this.uploadLoading1 = true;
  3306. var file = data.file;
  3307. var credentials = {
  3308. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  3309. secretAccessKey: "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",
  3310. }; //秘钥形式的登录上传
  3311. window.AWS.config.update(credentials);
  3312. window.AWS.config.region = "cn-northwest-1"; //设置区域
  3313. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  3314. var _this = this;
  3315. if (file) {
  3316. var params = {
  3317. Key:
  3318. file.name.split(".")[0] +
  3319. new Date().getTime() +
  3320. "." +
  3321. file.name.split(".")[file.name.split(".").length - 1],
  3322. ContentType: file.type,
  3323. Body: file,
  3324. "Access-Control-Allow-Credentials": "*",
  3325. ACL: "public-read",
  3326. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  3327. var options = {
  3328. partSize: 2048 * 1024 * 1024,
  3329. queueSize: 2,
  3330. leavePartsOnError: true,
  3331. };
  3332. bucket
  3333. .upload(params, options)
  3334. .on("httpUploadProgress", function (evt) {
  3335. //这里可以写进度条
  3336. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  3337. })
  3338. .send(function (err, data) {
  3339. _this.uploadLoading1 = false;
  3340. if (err) {
  3341. var a = _this.$refs.upload1.uploadFiles;
  3342. a.splice(a.length - 1, a.length);
  3343. _this.$message.error("上传失败");
  3344. } else {
  3345. //上传成功处理
  3346. _this.unitJson[_this.unitIndex].chapterInfo[0].fileList1.push({
  3347. name: file.name,
  3348. url: data.Location,
  3349. uid: file.uid,
  3350. });
  3351. _this.imgChange();
  3352. console.log(data.Location);
  3353. }
  3354. });
  3355. }
  3356. },
  3357. onExceed() {
  3358. this.$message.error("课程封面仅支持上传一张,请删除后再进行上传");
  3359. },
  3360. beforeUpload2(event, unitIndex, type, itemTaskIndex) {
  3361. const loading = this.openLoading();
  3362. var file = event.target.files[0];
  3363. this.inputShow = false;
  3364. var credentials = {
  3365. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  3366. secretAccessKey: "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",
  3367. }; //秘钥形式的登录上传
  3368. window.AWS.config.update(credentials);
  3369. window.AWS.config.region = "cn-northwest-1"; //设置区域
  3370. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  3371. var _this = this;
  3372. if (type == 3) {
  3373. var b = [
  3374. "DOC",
  3375. "DOCX",
  3376. "DOCM",
  3377. "DOTM",
  3378. "DOTX",
  3379. "PPTX",
  3380. "PPSX",
  3381. "PPT",
  3382. "PPS",
  3383. "PPTM",
  3384. "POTM",
  3385. "PPAM",
  3386. "POTX",
  3387. "PPSM",
  3388. ];
  3389. if (
  3390. b.indexOf(
  3391. file.name
  3392. .split(".")
  3393. [file.name.split(".").length - 1].toLocaleUpperCase()
  3394. ) != -1
  3395. ) {
  3396. if (file.size / 1024 / 1024 > 10) {
  3397. this.$message.error("上传文件大于10兆,请重新选择文件!");
  3398. loading.close();
  3399. return;
  3400. }
  3401. } else {
  3402. if (file.size / 1024 / 1024 > 5) {
  3403. this.$message.error("添加成上传文件大于5兆,请重新选择文件!");
  3404. loading.close();
  3405. return;
  3406. }
  3407. }
  3408. }
  3409. if (file) {
  3410. var params = {
  3411. Key:
  3412. file.name.split(".")[0] +
  3413. new Date().getTime() +
  3414. "." +
  3415. file.name.split(".")[file.name.split(".").length - 1],
  3416. ContentType: file.type,
  3417. Body: file,
  3418. "Access-Control-Allow-Credentials": "*",
  3419. ACL: "public-read",
  3420. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  3421. var options = {
  3422. partSize: 2048 * 1024 * 1024,
  3423. queueSize: 2,
  3424. leavePartsOnError: true,
  3425. };
  3426. bucket
  3427. .upload(params, options)
  3428. .on("httpUploadProgress", function (evt) {
  3429. //这里可以写进度条
  3430. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  3431. })
  3432. .send(function (err, data) {
  3433. loading.close();
  3434. _this.inputShow = true;
  3435. if (err) {
  3436. var a = _this.$refs.upload1.uploadFiles;
  3437. a.splice(a.length - 1, a.length);
  3438. _this.$message.error("上传失败");
  3439. } else {
  3440. if (type == 2 || type == 3) {
  3441. _this.unitJson[unitIndex].chapterInfo[0].taskJson[
  3442. itemTaskIndex
  3443. ].chapterData.push({
  3444. name: file.name,
  3445. url: data.Location,
  3446. uid: file.uid,
  3447. type: type,
  3448. });
  3449. _this.imgChange1(null, null, type, itemTaskIndex);
  3450. } else if (type == 4) {
  3451. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  3452. itemTaskIndex
  3453. ].fileList1.push({
  3454. name: file.name,
  3455. url: data.Location,
  3456. uid: file.uid,
  3457. });
  3458. _this.imgChange1(null, null, type, itemTaskIndex);
  3459. } else if (type == 5) {
  3460. _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
  3461. itemTaskIndex
  3462. ].homeworkList.push({
  3463. name: file.name,
  3464. url: data.Location,
  3465. uid: file.uid,
  3466. });
  3467. _this.imgChange1(null, null, type, itemTaskIndex);
  3468. }
  3469. console.log(data.Location);
  3470. }
  3471. });
  3472. }
  3473. },
  3474. addunit() {
  3475. this.unitJson.push({
  3476. dyName: "", //单元标题
  3477. isUpdate: 1,
  3478. chapterInfo: [
  3479. {
  3480. isread: false,
  3481. chapterid: this.guid(),
  3482. title: "",
  3483. courseName: "",
  3484. taskJson: [
  3485. {
  3486. task: "",
  3487. taskDetail: "",
  3488. chapterData: [],
  3489. toolText: "",
  3490. toolChoose: [
  3491. {
  3492. tool: [],
  3493. toolDetail: "",
  3494. toolType: 0,
  3495. askCount: 1,
  3496. askTitle: "",
  3497. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  3498. },
  3499. ],
  3500. isShowTools: false,
  3501. askCount: 1,
  3502. isFold: 0,
  3503. askTitle: "",
  3504. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  3505. checkJson: [{ checkCount: [], checkPerent: [] }],
  3506. homeworkList: [],
  3507. },
  3508. ],
  3509. itemCount: 1,
  3510. fileList1: [],
  3511. video: [],
  3512. testData: [],
  3513. pData: [],
  3514. templateArray: [],
  3515. },
  3516. ],
  3517. });
  3518. this.addindex = this.unitJson.length - 1;
  3519. setTimeout(() => {
  3520. this.unitIndex = this.unitJson.length - 1;
  3521. this.unitSet(this.unitIndex);
  3522. }, 0);
  3523. },
  3524. addToolFun(itemTaskIndex) {
  3525. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  3526. itemTaskIndex
  3527. ].toolChoose.push({
  3528. tool: [],
  3529. toolDetail: "",
  3530. toolType: 0,
  3531. askCount: 1,
  3532. askTitle: "",
  3533. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  3534. });
  3535. },
  3536. addTaskBorder() {
  3537. this.unitJson[this.unitIndex].chapterInfo[0].taskJson.push({
  3538. task: "",
  3539. taskDetail: "",
  3540. chapterData: [],
  3541. toolText: "",
  3542. toolChoose: [
  3543. {
  3544. tool: [],
  3545. toolDetail: "",
  3546. toolType: 0,
  3547. askCount: 1,
  3548. askTitle: "",
  3549. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  3550. },
  3551. ],
  3552. isShowTools: false,
  3553. askCount: 1,
  3554. isFold: 0,
  3555. askTitle: "",
  3556. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  3557. checkJson: [{ checkCount: [], checkPerent: [] }],
  3558. homeworkList: [],
  3559. });
  3560. },
  3561. add(e, i) {
  3562. var el = e.currentTarget;
  3563. el.getElementsByTagName("input")[0].click();
  3564. },
  3565. fold(i, e, type) {
  3566. var a = e.path[3];
  3567. var b = e.path[2];
  3568. if (type == 1) {
  3569. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
  3570. a.className += " smallTaskBorder";
  3571. b.className += " funBlockTop";
  3572. } else {
  3573. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
  3574. a.className = "taskBorder";
  3575. b.className = "funBlock";
  3576. }
  3577. console.log(e);
  3578. },
  3579. deleteHomeworkBox(unitIndex, index, i) {
  3580. this.unitJson[unitIndex].chapterInfo[index].taskJson[
  3581. this.taskCount
  3582. ].homeworkList.splice(i, 1);
  3583. },
  3584. getStudent() {
  3585. let params = {
  3586. oid: this.oid,
  3587. cu: "",
  3588. cn: this.searchPeople,
  3589. };
  3590. this.ajax
  3591. .get(this.$store.state.api + "selectStudentAdd", params)
  3592. .then((res) => {
  3593. this.studentJuri = res.data[0];
  3594. })
  3595. .catch((err) => {
  3596. this.isLoading = false;
  3597. console.error(err);
  3598. });
  3599. },
  3600. getTeacher() {
  3601. let params = {
  3602. oid: this.oid,
  3603. cu: "",
  3604. cn: this.searchTN,
  3605. };
  3606. this.ajax
  3607. .get(this.$store.state.api + "selectTeacherAdd", params)
  3608. .then((res) => {
  3609. let teacherJuri = res.data[0];
  3610. for (var i = 0; i < teacherJuri.length; i++) {
  3611. if (teacherJuri[i].userid == this.userid) {
  3612. teacherJuri.splice(i, 1);
  3613. break;
  3614. }
  3615. }
  3616. this.teacherJuri = teacherJuri;
  3617. })
  3618. .catch((err) => {
  3619. console.error(err);
  3620. });
  3621. },
  3622. searchStudent() {
  3623. this.getStudent();
  3624. },
  3625. //获取班级列表
  3626. getClass() {
  3627. let params = {
  3628. oid: this.oid,
  3629. };
  3630. this.ajax
  3631. .get(this.$store.state.api + "selectClassBySchool", params)
  3632. .then((res) => {
  3633. this.grade = res.data[0];
  3634. })
  3635. .catch((err) => {
  3636. this.isLoading = false;
  3637. console.error(err);
  3638. });
  3639. },
  3640. getChapterData(e, i, j, ic, type) {
  3641. e.stopPropagation();
  3642. this.updataC = true;
  3643. this.icc = ic;
  3644. if ((type == 2 || type == 3) && e.target.tagName !== "INPUT") {
  3645. console.log("还不能下载图片喔");
  3646. }
  3647. },
  3648. deleteChapterData(e, i, j, ic, taskI) {
  3649. e.stopPropagation();
  3650. this.unitJson[i].chapterInfo[j].taskJson[taskI].chapterData.splice(ic, 1);
  3651. },
  3652. updataVideoT(e, i, j, ic) {
  3653. e.stopPropagation();
  3654. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3655. ic
  3656. ].name = e.target.value;
  3657. },
  3658. upCd(e, i, j, ic) {
  3659. e.stopPropagation();
  3660. if (ic == 0) {
  3661. return;
  3662. }
  3663. var a =
  3664. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3665. ic - 1
  3666. ];
  3667. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3668. ic - 1
  3669. ] =
  3670. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3671. ic
  3672. ];
  3673. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[ic] =
  3674. a;
  3675. },
  3676. downCd(e, i, j, ic) {
  3677. e.stopPropagation();
  3678. if (ic == this.unitJson[i].chapterInfo[j].chapterData.length - 1) {
  3679. return;
  3680. }
  3681. var a =
  3682. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3683. ic + 1
  3684. ];
  3685. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3686. ic + 1
  3687. ] =
  3688. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[
  3689. ic
  3690. ];
  3691. this.unitJson[i].chapterInfo[j].taskJson[this.taskCount].chapterData[ic] =
  3692. a;
  3693. },
  3694. addWork() {
  3695. let cPan = 1;
  3696. for (var i = 0; i < this.unitJson.length; i++) {
  3697. for (
  3698. var j = 0;
  3699. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  3700. j++
  3701. ) {
  3702. if (
  3703. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  3704. ) {
  3705. for (
  3706. var z = 0;
  3707. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  3708. z++
  3709. ) {
  3710. if (
  3711. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  3712. .length
  3713. ) {
  3714. this.$message.error("请把工具添加完整");
  3715. cPan = 2;
  3716. break;
  3717. }
  3718. }
  3719. }
  3720. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  3721. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  3722. i
  3723. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  3724. return ele.value != "";
  3725. });
  3726. }
  3727. }
  3728. }
  3729. if (cPan == 2) {
  3730. this.steps--;
  3731. return;
  3732. }
  3733. for (var i = 0; i < this.unitJson.length; i++) {
  3734. delete this.unitJson[i].isUpdate;
  3735. }
  3736. let params = [
  3737. {
  3738. uid: this.userid,
  3739. title: this.courseName,
  3740. brief: this.courseText.replace(/%/g, "%25"),
  3741. cover:
  3742. this.cover.length > 0
  3743. ? JSON.stringify(this.cover)
  3744. : JSON.stringify([
  3745. {
  3746. name: "noBanner.jpg",
  3747. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/noBanner1656409780264.jpg",
  3748. uid: 1656409780264,
  3749. status: "success",
  3750. },
  3751. ]),
  3752. evaId: this.evalua,
  3753. astudent:
  3754. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  3755. see: this.isTeacherSee == true ? 1 : 0,
  3756. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  3757. template: this.cTemplate != "undefined" ? this.cTemplate : "",
  3758. courseType: JSON.stringify(this.courseTypeId),
  3759. ateacher:
  3760. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  3761. },
  3762. ];
  3763. this.ajax
  3764. .post(this.$store.state.api + "addWorkNew2", params)
  3765. .then((res) => {
  3766. console.log(this.steps);
  3767. if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  3768. this.$message({
  3769. message: "新增成功",
  3770. type: "success",
  3771. });
  3772. }
  3773. this.number = res.data.ordernumber;
  3774. this.courseId = res.data.courseId;
  3775. this.cid = res.data.courseId;
  3776. this.courseUserid = this.userid;
  3777. this.islogin = true;
  3778. })
  3779. .catch((err) => {
  3780. this.$message.error("网络不佳");
  3781. console.error(err);
  3782. });
  3783. },
  3784. goCourse() {
  3785. window.parent.postMessage({ cid: this.courseId, type: "1" }, "*");
  3786. },
  3787. updateWork2() {
  3788. let _unitIndex = this.unitIndex;
  3789. let cPan = 1;
  3790. for (
  3791. var j = 0;
  3792. j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
  3793. j++
  3794. ) {
  3795. if (
  3796. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  3797. .length > 1
  3798. ) {
  3799. for (
  3800. var z = 0;
  3801. z <
  3802. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
  3803. .length;
  3804. z++
  3805. ) {
  3806. if (
  3807. !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
  3808. z
  3809. ].tool.length
  3810. ) {
  3811. this.$message.error("请把工具添加完整");
  3812. cPan = 2;
  3813. break;
  3814. }
  3815. }
  3816. }
  3817. if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
  3818. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
  3819. this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
  3820. (ele) => {
  3821. return ele.value != "";
  3822. }
  3823. );
  3824. }
  3825. }
  3826. if (cPan == 2) {
  3827. this.steps--;
  3828. return;
  3829. }
  3830. let params = [
  3831. {
  3832. cid: this.cid,
  3833. chapters: JSON.stringify(this.unitJson),
  3834. uid: this.userid,
  3835. unitIndex: _unitIndex,
  3836. },
  3837. ];
  3838. this.ajax
  3839. .post(this.$store.state.api + "updateWorkNew4", params)
  3840. .then((res) => {
  3841. this.$message({
  3842. message: "修改成功",
  3843. type: "success",
  3844. });
  3845. this.courseId = this.cid;
  3846. })
  3847. .catch((err) => {
  3848. this.$message.error("网络不佳");
  3849. console.error(err);
  3850. });
  3851. },
  3852. updateWork() {
  3853. let cPan = 1;
  3854. for (var i = 0; i < this.unitJson.length; i++) {
  3855. for (
  3856. var j = 0;
  3857. j < this.unitJson[i].chapterInfo[0].taskJson.length;
  3858. j++
  3859. ) {
  3860. if (
  3861. this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
  3862. ) {
  3863. for (
  3864. var z = 0;
  3865. z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
  3866. z++
  3867. ) {
  3868. if (
  3869. !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
  3870. .length
  3871. ) {
  3872. this.$message.error("请把工具添加完整");
  3873. cPan = 2;
  3874. break;
  3875. }
  3876. }
  3877. }
  3878. if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
  3879. this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
  3880. i
  3881. ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
  3882. return ele.value != "";
  3883. });
  3884. }
  3885. }
  3886. }
  3887. if (cPan == 2) {
  3888. this.steps--;
  3889. return;
  3890. }
  3891. for (var i = 0; i < this.unitJson.length; i++) {
  3892. delete this.unitJson[i].isUpdate;
  3893. }
  3894. let params = [
  3895. {
  3896. cid: this.cid,
  3897. title: this.courseName,
  3898. brief: this.courseText.replace(/%/g, "%25"),
  3899. cover:
  3900. this.cover.length > 0
  3901. ? JSON.stringify(this.cover)
  3902. : JSON.stringify([
  3903. {
  3904. name: "noBanner.jpg",
  3905. url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/noBanner1656409780264.jpg",
  3906. uid: 1656409780264,
  3907. status: "success",
  3908. },
  3909. ]),
  3910. evaId: this.evalua,
  3911. astudent:
  3912. this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
  3913. see: this.isTeacherSee == true ? 1 : 0,
  3914. chapters: JSON.stringify(this.unitJson).replaceAll(/%/g, "%25"),
  3915. template: this.myWord != "undefined" ? this.myWord : [],
  3916. uid: this.userid,
  3917. courseType: JSON.stringify(this.courseTypeId),
  3918. ateacher:
  3919. this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
  3920. },
  3921. ];
  3922. this.ajax
  3923. .post(this.$store.state.api + "updateWorkNew2", params)
  3924. .then((res) => {
  3925. if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
  3926. if (this.cidType == 1) {
  3927. this.$message({
  3928. message: "修改成功",
  3929. type: "success",
  3930. });
  3931. } else {
  3932. this.$message({
  3933. message: "新增成功",
  3934. type: "success",
  3935. });
  3936. }
  3937. }
  3938. this.number = this.nbOrder;
  3939. this.courseId = this.cid;
  3940. })
  3941. .catch((err) => {
  3942. this.$message.error("网络不佳");
  3943. console.error(err);
  3944. });
  3945. },
  3946. guid() {
  3947. var _num,
  3948. i,
  3949. _guid = "";
  3950. for (i = 0; i < 32; i++) {
  3951. _guid += Math.floor(Math.random() * 16).toString(16); //随机0 - 16 的数字 转变为16进制的字符串
  3952. _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
  3953. if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
  3954. //会使guid中间加 "-" 形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  3955. _guid += "-";
  3956. }
  3957. }
  3958. return _guid;
  3959. },
  3960. insertWord() {
  3961. this.dialogVisible1 = true;
  3962. this.updateBoolean2 = false;
  3963. this.tTitle = "";
  3964. this.tdetail = "";
  3965. },
  3966. addWord() {
  3967. this.unitJson[this.unitIndex].chapterInfo[0].fileList1.push({
  3968. name: this.tTitle,
  3969. content: this.tdetail,
  3970. uid: this.guid(),
  3971. });
  3972. this.dialogVisible1 = false;
  3973. },
  3974. upWord() {},
  3975. selectWord(uid, i, c) {
  3976. this.dialogVisible1 = true;
  3977. this.updateBoolean2 = true;
  3978. if (
  3979. uid == this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].uid
  3980. ) {
  3981. this.tTitle =
  3982. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].name;
  3983. this.tdetail =
  3984. this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].content;
  3985. }
  3986. },
  3987. isAddPP() {
  3988. if (this.checkboxList.length > 0) {
  3989. this.$message({
  3990. message: "添加成功",
  3991. type: "success",
  3992. });
  3993. this.dialogVisible3 = false;
  3994. } else {
  3995. this.$message({
  3996. message: "请添加课程成员",
  3997. type: "error",
  3998. });
  3999. }
  4000. },
  4001. isAddClass() {
  4002. this.dialogVisibleClass = false;
  4003. },
  4004. isAddPPTeacher() {
  4005. this.dialogVisibleMember = false;
  4006. },
  4007. getTemplate() {
  4008. this.ajax
  4009. .get(this.$store.state.api + "getCourseTemplateT", "")
  4010. .then((res) => {
  4011. this.templateArray = res.data[0];
  4012. })
  4013. .catch((err) => {});
  4014. },
  4015. clearChoose() {
  4016. this.clearArray.splice(this.templateC.id, 1);
  4017. this.dialogVisible2 = false;
  4018. },
  4019. clearAttText() {
  4020. this.AttText = {
  4021. title: "",
  4022. text: "",
  4023. };
  4024. this.dialogVisible6 = false;
  4025. },
  4026. clearLine() {
  4027. this.line = "";
  4028. this.dialogVisible7 = false;
  4029. },
  4030. checkTemplate(res) {
  4031. let _this = this;
  4032. _this
  4033. .$confirm("确定选择此模板吗?", "提示", {
  4034. confirmButtonText: "确定",
  4035. cancelButtonText: "取消",
  4036. type: "warning",
  4037. })
  4038. .then(() => {
  4039. _this.unitJson = JSON.parse(res.chapters);
  4040. _this.steps++;
  4041. setTimeout(() => {
  4042. this.checkEva(this.checkId);
  4043. }, 1000);
  4044. })
  4045. .catch(() => {
  4046. return;
  4047. });
  4048. },
  4049. checkTemplate1(w) {
  4050. this.steps++;
  4051. },
  4052. checkTemplate2() {
  4053. let _this = this;
  4054. _this
  4055. .$confirm("确定选择空模板吗?", "提示", {
  4056. confirmButtonText: "确定",
  4057. cancelButtonText: "取消",
  4058. type: "warning",
  4059. })
  4060. .then(() => {
  4061. _this.unitJson = [
  4062. {
  4063. dyName: "", //单元标题
  4064. chapterInfo: [
  4065. {
  4066. isread: false,
  4067. chapterid: this.guid(),
  4068. title: "",
  4069. courseName: "",
  4070. taskJson: [
  4071. {
  4072. task: "",
  4073. taskDetail: "",
  4074. chapterData: [],
  4075. toolText: "",
  4076. toolChoose: [
  4077. {
  4078. tool: [],
  4079. toolDetail: "",
  4080. toolType: 0,
  4081. askCount: 1,
  4082. askTitle: "",
  4083. askJson: [
  4084. { askstitle: "", askItem: 1, checkList: [] },
  4085. ],
  4086. },
  4087. ],
  4088. isShowTools: false,
  4089. askCount: 1,
  4090. isFold: 0,
  4091. askTitle: "",
  4092. askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
  4093. checkJson: [{ checkCount: [], checkPerent: [] }],
  4094. homeworkList: [],
  4095. },
  4096. ],
  4097. itemCount: 1,
  4098. fileList1: [],
  4099. video: [],
  4100. testData: [],
  4101. pData: [],
  4102. templateArray: [],
  4103. },
  4104. ],
  4105. },
  4106. ];
  4107. this.steps++;
  4108. })
  4109. .catch(() => {
  4110. return;
  4111. });
  4112. },
  4113. wordNext() {
  4114. this.dialogVisible2 = false;
  4115. },
  4116. isAddOrUpdateAttText() {
  4117. if (this.AttTextType == 0) {
  4118. this.addAttTextMessage();
  4119. } else {
  4120. this.updateAttText();
  4121. }
  4122. },
  4123. isAddOrUpdateLine() {
  4124. if (this.lineType == 0) {
  4125. this.addLine();
  4126. } else {
  4127. this.updateLine();
  4128. }
  4129. },
  4130. addAttTextMessage() {
  4131. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4132. this.taskCount
  4133. ].chapterData.push({
  4134. name: this.AttText.title,
  4135. url: this.AttText.text,
  4136. type: 6,
  4137. });
  4138. this.imgChange1(null, null, 6, this.taskCount);
  4139. this.dialogVisible6 = false;
  4140. },
  4141. selectAttText(itemTaskIndex, i) {
  4142. this.AttText.title =
  4143. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4144. itemTaskIndex
  4145. ].chapterData[i].name;
  4146. this.AttText.text =
  4147. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4148. itemTaskIndex
  4149. ].chapterData[i].url;
  4150. this.taskCount = itemTaskIndex;
  4151. this.AttTextIndex = i;
  4152. this.AttTextType = 1;
  4153. this.dialogVisible6 = true;
  4154. },
  4155. updateAttText() {
  4156. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4157. this.taskCount
  4158. ].chapterData[this.AttTextIndex].name = this.AttText.title;
  4159. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4160. this.taskCount
  4161. ].chapterData[this.AttTextIndex].url = this.AttText.text;
  4162. this.dialogVisible6 = false;
  4163. },
  4164. addLine() {
  4165. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4166. this.lineCount
  4167. ].chapterData.push({
  4168. name: "链接",
  4169. url: this.line,
  4170. type: 8,
  4171. });
  4172. this.imgChange1(null, null, 8, this.lineCount);
  4173. this.dialogVisible7 = false;
  4174. },
  4175. selectLine(itemTaskIndex, i) {
  4176. this.line =
  4177. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4178. itemTaskIndex
  4179. ].chapterData[i].url;
  4180. this.taskCount = itemTaskIndex;
  4181. this.lineCount = i;
  4182. this.lineType = 1;
  4183. this.dialogVisible7 = true;
  4184. },
  4185. updateLine() {
  4186. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4187. this.taskCount
  4188. ].chapterData[this.lineCount].url = this.line;
  4189. this.dialogVisible7 = false;
  4190. },
  4191. addPP() {
  4192. this.dialogVisible3 = true;
  4193. },
  4194. goTo(path) {
  4195. this.$router.push(path);
  4196. },
  4197. openTools(itemTaskIndex, i, toolIndex) {
  4198. this.toolIndex = toolIndex;
  4199. this.taskCount = itemTaskIndex;
  4200. if (i == 4) {
  4201. if (toolIndex == null) {
  4202. var a =
  4203. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4204. .chapterData;
  4205. for (var i = 0; i < a.length; i++) {
  4206. if (a[i].url == 4 && a[i].askJson.askTitle != "") {
  4207. this.askJson =
  4208. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4209. itemTaskIndex
  4210. ].chapterData[i].askJson;
  4211. }
  4212. }
  4213. } else {
  4214. this.askJson = JSON.parse(
  4215. JSON.stringify(
  4216. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4217. itemTaskIndex
  4218. ].toolChoose[toolIndex]
  4219. )
  4220. );
  4221. }
  4222. this.dialogVisible5 = true;
  4223. } else if (i == 15) {
  4224. this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4225. itemTaskIndex
  4226. ].toolChoose[toolIndex].answerQ
  4227. ? JSON.parse(
  4228. JSON.stringify(
  4229. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4230. itemTaskIndex
  4231. ].toolChoose[toolIndex].answerQ
  4232. )
  4233. )
  4234. : "";
  4235. this.dialogVisible8 = true;
  4236. }
  4237. },
  4238. chapAddTools(i) {
  4239. if (this.chapTools[0].tools.length == 0) {
  4240. this.chapTools[0].tools.push(i);
  4241. } else {
  4242. if (this.chapTools[0].tools.indexOf(i) != -1) {
  4243. this.chapTools[0].tools.splice(this.chapTools[0].tools.indexOf(i), 1);
  4244. } else {
  4245. this.chapTools[0].tools.push(i);
  4246. }
  4247. }
  4248. this.$forceUpdate();
  4249. },
  4250. addChaptersDataTools() {
  4251. if (this.chapTools[0].tools.indexOf(4) != -1) {
  4252. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4253. this.chapCount
  4254. ].chapterData.push({
  4255. name: this.chapTools[0].toolDetail,
  4256. url: this.chapTools[0].tools,
  4257. type: 7,
  4258. askJson: this.askJson,
  4259. });
  4260. } else {
  4261. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4262. this.chapCount
  4263. ].chapterData.push({
  4264. name: this.chapTools[0].toolDetail,
  4265. url: this.chapTools[0].tools,
  4266. type: 7,
  4267. });
  4268. }
  4269. this.imgChange1(null, null, 7, this.chapCount);
  4270. this.dialogVisible4 = false;
  4271. },
  4272. addTools(i, itemTaskIndex, toolIndex) {
  4273. // if (
  4274. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4275. // .toolChoose[toolIndex].tool.length == 0
  4276. // ) {
  4277. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4278. // itemTaskIndex
  4279. // ].toolChoose[toolIndex].tool.push(i);
  4280. // } else {
  4281. // if (
  4282. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4283. // itemTaskIndex
  4284. // ].toolChoose[toolIndex].tool.indexOf(i) != -1
  4285. // ) {
  4286. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4287. // itemTaskIndex
  4288. // ].toolChoose[toolIndex].tool.splice(
  4289. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4290. // itemTaskIndex
  4291. // ].toolChoose[toolIndex].tool.indexOf(i),
  4292. // 1
  4293. // );
  4294. // } else {
  4295. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4296. // itemTaskIndex
  4297. // ].toolChoose[toolIndex].tool.push(i);
  4298. // }
  4299. // console.log(
  4300. // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4301. // .toolChoose[toolIndex].tool
  4302. // );
  4303. // }
  4304. if (i == 4) {
  4305. if (
  4306. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4307. .toolChoose[toolIndex].askJson.askTitle == "" ||
  4308. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4309. .toolChoose[toolIndex].askJson[0].askstitle == "" ||
  4310. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4311. .toolChoose[toolIndex].askJson[0].checkList < 2
  4312. ) {
  4313. this.openTools(itemTaskIndex, 4, toolIndex);
  4314. // this.$message({
  4315. // message: "请填写完整问卷内容",
  4316. // type: "error",
  4317. // });
  4318. return;
  4319. }
  4320. }
  4321. if (i == 15) {
  4322. if (
  4323. !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4324. .toolChoose[toolIndex].answerQ ||
  4325. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4326. .toolChoose[toolIndex].answerQ == ""
  4327. ) {
  4328. this.openTools(itemTaskIndex, 15, toolIndex);
  4329. // this.$message({
  4330. // message: "请填写问答内容",
  4331. // type: "error",
  4332. // });
  4333. return;
  4334. }
  4335. }
  4336. if (
  4337. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
  4338. .toolChoose[toolIndex].tool.length > 0
  4339. ) {
  4340. if (
  4341. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4342. itemTaskIndex
  4343. ].toolChoose[toolIndex].tool.indexOf(i) != -1
  4344. ) {
  4345. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4346. itemTaskIndex
  4347. ].toolChoose[toolIndex].tool.splice(
  4348. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4349. itemTaskIndex
  4350. ].toolChoose[toolIndex].tool.indexOf(i),
  4351. 1
  4352. );
  4353. } else {
  4354. // this.$message({
  4355. // message: "每个工具只能添加一个",
  4356. // type: "error",
  4357. // });
  4358. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4359. itemTaskIndex
  4360. ].toolChoose[toolIndex].tool = [];
  4361. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4362. itemTaskIndex
  4363. ].toolChoose[toolIndex].tool.push(i);
  4364. }
  4365. } else {
  4366. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4367. itemTaskIndex
  4368. ].toolChoose[toolIndex].tool.push(i);
  4369. }
  4370. this.$forceUpdate();
  4371. },
  4372. addAskList() {
  4373. this.askJson.askJson.push({
  4374. askstitle: "",
  4375. askItem: 1,
  4376. checkList: [],
  4377. });
  4378. this.askJson.askCount++;
  4379. },
  4380. deleteAskList() {
  4381. this.askJson.askJson.splice(-1);
  4382. this.askJson.askCount--;
  4383. },
  4384. addcheckList(json) {
  4385. json.checkList.length++;
  4386. json.askItem++;
  4387. },
  4388. deletecheckList(json) {
  4389. json.checkList.length--;
  4390. json.askItem--;
  4391. },
  4392. addAsk() {
  4393. if (this.askJson.askTitle === "") {
  4394. this.$message.error("问卷调查标题不能为空!");
  4395. return;
  4396. }
  4397. var aj = this.askJson.askJson;
  4398. var b = 1;
  4399. for (var i = 0; i < aj.length; i++) {
  4400. if (aj[i].askstitle === "") {
  4401. var a = 1;
  4402. for (let index = 0; index < aj[i].askItem; index++) {
  4403. const element = aj[i].checkList[index]
  4404. ? aj[i].checkList[index]
  4405. : "";
  4406. if (element != "") {
  4407. b++;
  4408. this.$message.error("填写了问卷调查选项,问卷调查题目不能为空!");
  4409. return;
  4410. } else {
  4411. a++;
  4412. }
  4413. }
  4414. if (b == 1) {
  4415. this.$message.error("至少填写一个问题");
  4416. return;
  4417. }
  4418. } else if (aj[i].askstitle != "") {
  4419. for (let index = 0; index < aj[i].askItem; index++) {
  4420. const element = aj[i].checkList[index]
  4421. ? aj[i].checkList[index]
  4422. : "";
  4423. var index = 0;
  4424. for (var z = 0; z < aj[i].checkList.length; z++) {
  4425. var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
  4426. if (checkC != "") {
  4427. index++;
  4428. } else {
  4429. this.$message.error("问卷调查选项不能为空!");
  4430. return;
  4431. }
  4432. }
  4433. b++;
  4434. if (index < 2) {
  4435. this.$message.error(
  4436. "填写了问卷调查的题目,问卷调查选项至少要有两项!"
  4437. );
  4438. return;
  4439. }
  4440. }
  4441. }
  4442. }
  4443. this.askJson.askJson = this.askJson.askJson.filter((el) => {
  4444. var elc = el.checkList.filter((element) => {
  4445. return element != "";
  4446. });
  4447. return el.askstitle != "" && elc.length != 0;
  4448. });
  4449. if (!this.dialogVisible4) {
  4450. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4451. this.taskCount
  4452. ].toolChoose[this.toolIndex] = this.askJson;
  4453. }
  4454. this.dialogVisible5 = false;
  4455. },
  4456. addAnswer() {
  4457. if (this.answerQ == "") {
  4458. this.$message.error("请输入您想要问的问题");
  4459. return;
  4460. }
  4461. this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
  4462. this.taskCount
  4463. ].toolChoose[this.toolIndex].answerQ = this.answerQ;
  4464. this.dialogVisible8 = false;
  4465. },
  4466. selectCourseDetail() {
  4467. if (this.cid == "" || this.cid == undefined) {
  4468. console.log("这是新增课程");
  4469. } else {
  4470. this.cidType = 1;
  4471. let params = {
  4472. cid: this.cid,
  4473. };
  4474. this.ajax
  4475. .get(this.$store.state.api + "select_course_detail", params)
  4476. .then((res) => {
  4477. this.loading = true;
  4478. this.unitJson = JSON.parse(res.data[0][0].chapters);
  4479. for (var j in this.unitJson) {
  4480. for (var i in this.unitJson[j].chapterInfo) {
  4481. this.unitJson[j].chapterInfo[i].taskJson[
  4482. this.taskCount
  4483. ].toolChoose = this.unitJson[j].chapterInfo[i].taskJson[
  4484. this.taskCount
  4485. ].toolChoose
  4486. ? this.unitJson[j].chapterInfo[i].taskJson[this.taskCount]
  4487. .toolChoose
  4488. : [];
  4489. }
  4490. }
  4491. this.courseName = res.data[0][0].title;
  4492. this.courseText = res.data[0][0].brief;
  4493. this.evalua = res.data[0][0].evaId;
  4494. this.cover = JSON.parse(res.data[0][0].cover);
  4495. this.noneBtnImg = this.cover.length >= 1;
  4496. // this.checkboxList =
  4497. // res.data[0][0].course_student.length > 0
  4498. // ? JSON.parse(res.data[0][0].course_student)
  4499. // : [];
  4500. this.checkboxList2 = res.data[0][0].juri
  4501. ? res.data[0][0].juri.split(",")
  4502. : [];
  4503. this.checkboxList3 = res.data[0][0].course_teacher
  4504. ? res.data[0][0].course_teacher.split(",")
  4505. : [];
  4506. // this.isTeacherSee =
  4507. // res.data[0][0].is_teacher_look == 0 ? true : false;
  4508. this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
  4509. this.myWord = res.data[0][0].template;
  4510. this.templateC.id = "123";
  4511. this.courseUserid = res.data[0][0].userid;
  4512. this.nbOrder = res.data[0][0].ordernumber;
  4513. for (var i = 0; i < res.data[1].length; i++) {
  4514. this.courseTypeId.push(res.data[1][i].typeid);
  4515. }
  4516. console.log(this.courseTypeId);
  4517. // if (this.timer) clearInterval(this.timer);
  4518. if (this.timer) clearTimeout(this.timer);
  4519. this.timer = null;
  4520. // this.timer = setInterval(() => {
  4521. this.seleteCourseUpdate();
  4522. // }, 5000);
  4523. this.$forceUpdate();
  4524. setTimeout(() => {
  4525. this.checkEva(this.evalua);
  4526. }, 0);
  4527. })
  4528. .catch((err) => {
  4529. console.error(err);
  4530. });
  4531. }
  4532. },
  4533. seleteCourseUpdate() {
  4534. let params = {
  4535. cid: this.cid,
  4536. };
  4537. this.ajax
  4538. .get(this.$store.state.api + "select_course_detail", params)
  4539. .then((res) => {
  4540. // console.log(this.unitJson);
  4541. let unitJson = JSON.parse(res.data[0][0].chapters);
  4542. this.unitJson2 = JSON.parse(res.data[0][0].chapters);
  4543. let _unitJson2 = JSON.parse(JSON.stringify(this.unitJson));
  4544. let _unitJson = [];
  4545. let _chapAarry = [];
  4546. let _unitIndex = JSON.parse(JSON.stringify(this.unitIndex));
  4547. let _unitIndex2 = JSON.parse(JSON.stringify(this.unitIndex));
  4548. let index = 1;
  4549. let chapindex;
  4550. if (_unitJson2.length > unitJson.length) {
  4551. for (let c = 0; c < _unitJson2.length; c++) {
  4552. _chapAarry.push(_unitJson2[c].chapterInfo[0].chapterid);
  4553. }
  4554. for (let j = 0; j < unitJson.length; j++) {
  4555. let count = 0;
  4556. for (let k = 0; k < _unitJson2.length; k++) {
  4557. if (
  4558. unitJson[j].chapterInfo[0].chapterid ==
  4559. _unitJson2[k].chapterInfo[0].chapterid
  4560. ) {
  4561. count++;
  4562. _chapAarry.splice(
  4563. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  4564. 1
  4565. );
  4566. _unitJson.push(unitJson[j]);
  4567. break;
  4568. }
  4569. }
  4570. // if(count === 0){
  4571. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  4572. // }
  4573. }
  4574. for (let k = 0; k < _unitJson2.length; k++) {
  4575. if (_unitJson2[k].isUpdate == 1) {
  4576. _chapAarry.splice(
  4577. _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
  4578. 1
  4579. );
  4580. _unitJson.push(_unitJson2[k]);
  4581. }
  4582. }
  4583. console.log(_chapAarry);
  4584. for (let d = 0; d < _unitJson2.length; d++) {
  4585. if (
  4586. _chapAarry.indexOf(_unitJson2[d].chapterInfo[0].chapterid) != -1
  4587. ) {
  4588. if (_unitIndex == d) {
  4589. index = 2;
  4590. }
  4591. chapindex = d;
  4592. // this.$message.error("您所修改的阶段已经被其他老师删除了");
  4593. }
  4594. }
  4595. } else {
  4596. _unitJson = JSON.parse(JSON.stringify(_unitJson2));
  4597. }
  4598. for (let i = 0; i < unitJson.length; i++) {
  4599. if (
  4600. (i < _unitJson.length - 1 || i == _unitJson.length - 1) &&
  4601. _unitJson[i].chapterInfo[0].chapterid !=
  4602. unitJson[i].chapterInfo[0].chapterid
  4603. ) {
  4604. if (i == _unitJson.length - 1) {
  4605. // this.unitIndex++
  4606. _unitIndex2++;
  4607. }
  4608. _unitJson.splice(i, 0, unitJson[i]);
  4609. } else if (i > _unitJson.length - 1) {
  4610. _unitJson.push(unitJson[i]);
  4611. } else if (
  4612. _unitJson[i].chapterInfo[0].chapterid ==
  4613. unitJson[i].chapterInfo[0].chapterid
  4614. ) {
  4615. _unitJson[i] = unitJson[i];
  4616. }
  4617. // if (i == _unitIndex) {
  4618. // continue;
  4619. // } else
  4620. }
  4621. if (_chapAarry.length && index != 2) {
  4622. if (chapindex < _unitIndex) {
  4623. this.isDelete = 2;
  4624. // this.unitIndex--;
  4625. _unitIndex2--;
  4626. } else if (
  4627. _unitJson2[_unitIndex].chapterInfo[0].chapterid !=
  4628. _unitJson[_unitIndex].chapterInfo[0].chapterid
  4629. ) {
  4630. this.isDelete = 2;
  4631. for (let n = 0; n < _unitJson.length; n++) {
  4632. if (
  4633. _unitJson2[_unitIndex].chapterInfo[0].chapterid ==
  4634. _unitJson[n].chapterInfo[0].chapterid
  4635. ) {
  4636. // this.unitIndex = n;
  4637. _unitIndex2 = n;
  4638. _unitJson[n] = _unitJson2[_unitIndex];
  4639. break;
  4640. }
  4641. }
  4642. }
  4643. } else if (index != 2) {
  4644. // _unitJson[this.unitIndex] = _unitJson2[_unitIndex];
  4645. _unitJson[_unitIndex2] = _unitJson2[_unitIndex];
  4646. }
  4647. if (index == 1) {
  4648. this.unitJson = _unitJson;
  4649. this.$forceUpdate();
  4650. setTimeout(() => {
  4651. if (this.unitIndex != _unitIndex2) {
  4652. this.isDelete = 2;
  4653. this.unitIndex = _unitIndex2;
  4654. }
  4655. }, 0);
  4656. this.timer = setTimeout(() => {
  4657. this.seleteCourseUpdate();
  4658. }, 1000);
  4659. } else if (index == 2) {
  4660. let _this = this;
  4661. _this
  4662. .$confirm(
  4663. "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
  4664. "提示",
  4665. {
  4666. confirmButtonText: "需要",
  4667. cancelButtonText: "取消",
  4668. type: "warning",
  4669. }
  4670. )
  4671. .then(() => {
  4672. if (_this.time()) {
  4673. _this.restoreWork(
  4674. _chapAarry[0],
  4675. _unitJson,
  4676. chapindex,
  4677. _unitJson2,
  4678. _unitIndex2
  4679. );
  4680. }
  4681. })
  4682. .catch(() => {
  4683. _this.unitJson = _unitJson;
  4684. _this.$forceUpdate();
  4685. setTimeout(() => {
  4686. if (this.unitIndex != _unitIndex2) {
  4687. this.isDelete = 2;
  4688. this.unitIndex = _unitIndex2;
  4689. }
  4690. }, 0);
  4691. _this.timer = setTimeout(() => {
  4692. _this.seleteCourseUpdate();
  4693. }, 1000);
  4694. });
  4695. }
  4696. })
  4697. .catch((err) => {
  4698. console.error(err);
  4699. });
  4700. },
  4701. restoreWork(chapid, unitJson, chapindex, unitJson2, unitIndex2) {
  4702. let params = [
  4703. {
  4704. cid: this.cid,
  4705. chapters: JSON.stringify(this.unitJson),
  4706. uid: this.userid,
  4707. chapid: chapid,
  4708. },
  4709. ];
  4710. this.ajax
  4711. .post(this.$store.state.api + "restoreWork", params)
  4712. .then((res) => {
  4713. this.$message({
  4714. message: "恢复成功",
  4715. type: "success",
  4716. });
  4717. unitJson.splice(chapindex, 0, unitJson2[chapindex]);
  4718. this.unitJson = unitJson;
  4719. this.$forceUpdate();
  4720. setTimeout(() => {
  4721. if (this.unitIndex != unitIndex2) {
  4722. this.isDelete = 2;
  4723. this.unitIndex = unitIndex2;
  4724. }
  4725. }, 0);
  4726. this.timer = setTimeout(() => {
  4727. this.seleteCourseUpdate();
  4728. }, 1000);
  4729. })
  4730. .catch((err) => {
  4731. this.$message.error("网络不佳");
  4732. console.error(err);
  4733. });
  4734. },
  4735. getTypeName() {
  4736. console.log(this.courseTypeId);
  4737. this.$forceUpdate();
  4738. },
  4739. selectType() {
  4740. this.ajax
  4741. .get(this.$store.state.api + "selectType")
  4742. .then((res) => {
  4743. this.CourseType = res.data;
  4744. for (var i = 0; i < res.data[0].length; i++) {
  4745. if (!this.cid) {
  4746. this.courseTypeId[res.data[0][i].id] = "";
  4747. }
  4748. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  4749. if (res.data[0][i].name == "栏目") {
  4750. this.CourseType[0][i].name = "主题";
  4751. }
  4752. }
  4753. for (var j = 0; j < res.data[1].length; j++) {
  4754. if (res.data[0][i].id == res.data[1][j].pid) {
  4755. if (!this.CourseTypeJson[res.data[0][i].id]) {
  4756. this.CourseTypeJson[res.data[0][i].id] = [];
  4757. }
  4758. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  4759. }
  4760. }
  4761. }
  4762. this.selectTypeByOid();
  4763. })
  4764. .catch((err) => {
  4765. console.error(err);
  4766. });
  4767. },
  4768. selectTypeByOid() {
  4769. let params = {
  4770. oid: this.oid,
  4771. };
  4772. this.ajax
  4773. .get(this.$store.state.api + "selectTypeByOid", params)
  4774. .then((res) => {
  4775. for (var i = 0; i < res.data[0].length; i++) {
  4776. for (var j = 0; j < res.data[1].length; j++) {
  4777. if (res.data[0][i].id == res.data[1][j].pid) {
  4778. if (!this.CourseTypeJson[res.data[0][i].id]) {
  4779. this.CourseTypeJson[res.data[0][i].id] = [];
  4780. }
  4781. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  4782. }
  4783. }
  4784. }
  4785. })
  4786. .catch((err) => {
  4787. console.error(err);
  4788. });
  4789. },
  4790. OtherMb(type) {
  4791. this.typeMode = type;
  4792. setTimeout(() => {
  4793. this.checkEva(this.checkId);
  4794. }, 0);
  4795. },
  4796. checkEva(id) {
  4797. this.selectEva();
  4798. this.evalua = id;
  4799. this.checkId = id;
  4800. if (this.evalua != "") {
  4801. for (var i = 0; i < this.evaJuri.length; i++) {
  4802. if (this.evalua == this.evaJuri[i].id) {
  4803. this.eTitle = this.evaJuri[i].title;
  4804. this.eJson = JSON.parse(this.evaJuri[i].content);
  4805. }
  4806. }
  4807. this.data.data = [];
  4808. this.$forceUpdate();
  4809. setTimeout(() => {
  4810. this.setMindData();
  4811. }, 500);
  4812. }
  4813. },
  4814. selectEva() {
  4815. let params = {
  4816. oid: this.oid,
  4817. };
  4818. this.ajax
  4819. .get(this.$store.state.api + "selectAllEvaluation", params)
  4820. .then((res) => {
  4821. this.evaJuri = res.data[0];
  4822. })
  4823. .catch((err) => {
  4824. console.error(err);
  4825. });
  4826. },
  4827. setMindData() {
  4828. this.data.data = [];
  4829. this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
  4830. let _eJson = Object.keys(this.eJson);
  4831. let _e = this.eJson;
  4832. for (let i = 0; i < _eJson.length; i++) {
  4833. let element = _e[_eJson[i]];
  4834. this.data.data.push({
  4835. id: element.id,
  4836. parentid: "root",
  4837. topic: element.name,
  4838. });
  4839. let _eJsonc = Object.keys(element.child);
  4840. let _e2 = element.child;
  4841. for (let j = 0; j < _eJsonc.length; j++) {
  4842. let _ec = _e2[_eJsonc[j]];
  4843. this.data.data.push({
  4844. id: _ec.id,
  4845. parentid: element.id,
  4846. topic: _ec.name,
  4847. });
  4848. let _eJsonz = Object.keys(_ec.child);
  4849. let _e3 = _ec.child;
  4850. for (let z = 0; z < _eJsonz.length; z++) {
  4851. let _ez = _e3[_eJsonz[z]];
  4852. this.data.data.push({
  4853. id: _ez.id,
  4854. parentid: _ec.id,
  4855. topic: _ez.name,
  4856. });
  4857. }
  4858. }
  4859. }
  4860. this.$forceUpdate();
  4861. },
  4862. /*添加评价 */
  4863. addEList(index, tIndex) {
  4864. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList
  4865. ? this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.push({
  4866. value: "",
  4867. detail: "",
  4868. score: 5,
  4869. })
  4870. : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
  4871. { value: "", detail: "", score: 5 },
  4872. ]);
  4873. this.$forceUpdate();
  4874. },
  4875. deletEList(index, tIndex, eIndex) {
  4876. this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.splice(
  4877. eIndex,
  4878. 1
  4879. );
  4880. this.$forceUpdate();
  4881. },
  4882. getChoosePic(t) {
  4883. this.chooseType = t;
  4884. this.getAllBanner();
  4885. },
  4886. getAllBanner() {
  4887. this.sysPicVisible = true;
  4888. let params = {
  4889. t: this.chooseType,
  4890. };
  4891. this.ajax
  4892. .get(this.$store.state.api + "selectAllBanner", params)
  4893. .then((res) => {
  4894. this.sysPic = res.data[0];
  4895. })
  4896. .catch((err) => {
  4897. console.error(err);
  4898. });
  4899. },
  4900. deleteSysPic() {
  4901. this.cover = [];
  4902. this.isSysPic = false;
  4903. },
  4904. setEListStar() {
  4905. this.$forceUpdate();
  4906. },
  4907. },
  4908. beforeDestroy() {
  4909. clearTimeout(this.timer);
  4910. this.timer = null;
  4911. },
  4912. beforeRouteLeave(to, from, next) {
  4913. clearTimeout(this.timer);
  4914. this.timer = null;
  4915. next();
  4916. },
  4917. created() {
  4918. this.getStudent();
  4919. this.getTeacher();
  4920. this.getClass();
  4921. this.getTemplate();
  4922. this.selectType();
  4923. this.selectEva();
  4924. this.loading = false;
  4925. setTimeout(() => {
  4926. this.selectCourseDetail();
  4927. this.selectEva();
  4928. }, 500);
  4929. },
  4930. };
  4931. </script>
  4932. <style scoped>
  4933. @media screen and (max-width: 1024px) {
  4934. .mbCss {
  4935. flex-direction: column !important;
  4936. }
  4937. .pjCss {
  4938. width: 100% !important;
  4939. }
  4940. .evaCss {
  4941. width: 100% !important;
  4942. }
  4943. }
  4944. .dialog_diy >>> .el-dialog__header {
  4945. background: #3d67bc !important;
  4946. padding: 15px 20px;
  4947. }
  4948. .dialog_diy >>> .el-dialog__title {
  4949. color: #fff;
  4950. }
  4951. .dialog_diy >>> .el-dialog__headerbtn {
  4952. top: 19px;
  4953. }
  4954. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  4955. color: #fff;
  4956. }
  4957. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  4958. color: #fff;
  4959. }
  4960. .dialog_diy >>> .el-dialog__body,
  4961. .dialog_diy >>> .el-dialog__footer {
  4962. background: #fafafa;
  4963. }
  4964. .left {
  4965. border-right: 1px solid rgb(60, 94, 143);
  4966. display: flex;
  4967. flex-direction: column;
  4968. align-items: center;
  4969. min-height: 600px;
  4970. width: 385px;
  4971. height: 80%;
  4972. }
  4973. .tips {
  4974. color: rgb(128, 128, 128);
  4975. font-size: 12px;
  4976. width: 270px;
  4977. margin: 40px;
  4978. }
  4979. .pb_content {
  4980. height: 100% !important;
  4981. /* margin: 0 20px 0 20px; */
  4982. }
  4983. .pb_content_body {
  4984. width: 100% !important;
  4985. height: 100%;
  4986. }
  4987. .info_solid {
  4988. width: 270px;
  4989. height: 30px;
  4990. border-left: 1px solid #bdbdbd;
  4991. margin: 10px 0px 10px 30px;
  4992. }
  4993. .info_steps {
  4994. width: 270px;
  4995. font-size: 0.875rem;
  4996. display: flex;
  4997. align-items: center;
  4998. }
  4999. .info_steps span:nth-child(1) {
  5000. width: 30px;
  5001. height: 30px;
  5002. background: rgba(0, 0, 0, 0.38);
  5003. display: block;
  5004. color: #fff;
  5005. border-radius: 40px;
  5006. text-align: center;
  5007. line-height: 30px;
  5008. }
  5009. .steps_active {
  5010. background: #3d67bc !important;
  5011. }
  5012. .info_steps span:nth-child(2) {
  5013. margin-left: 5px;
  5014. }
  5015. .right {
  5016. height: 100%;
  5017. width: 100%;
  5018. display: flex;
  5019. overflow: hidden;
  5020. }
  5021. .basic_box {
  5022. margin: 0 auto;
  5023. position: relative;
  5024. padding: 0 20px 0 20px;
  5025. }
  5026. .basic_box_success {
  5027. width: 100%;
  5028. min-height: 455px;
  5029. padding: 50px 0;
  5030. position: relative;
  5031. text-align: center;
  5032. border-bottom: 1px solid #bfbfbf;
  5033. box-sizing: border-box;
  5034. display: flex;
  5035. align-items: center;
  5036. flex-direction: column;
  5037. justify-content: center;
  5038. }
  5039. .info_title {
  5040. font-size: 1.5em;
  5041. margin-right: 25px;
  5042. /* margin: 20px 30px 20px 30px; */
  5043. }
  5044. .bInfo_title {
  5045. text-align: left;
  5046. margin: 10px 0;
  5047. }
  5048. .small_title {
  5049. font-size: 14px;
  5050. line-height: 40px;
  5051. }
  5052. .chapter_beizhu {
  5053. font-size: 12px;
  5054. font-weight: bold;
  5055. float: right;
  5056. color: rgb(128, 128, 128);
  5057. margin-top: 5px;
  5058. }
  5059. .chapter_uploadBox1 {
  5060. text-align: left;
  5061. background-color: rgb(242, 242, 242);
  5062. width: 100%;
  5063. height: 67px;
  5064. padding: 0px 15px;
  5065. border-radius: 8px;
  5066. overflow: hidden;
  5067. font-size: 16px;
  5068. box-sizing: border-box;
  5069. position: relative;
  5070. }
  5071. .chapter_add {
  5072. width: 100%;
  5073. height: 32px;
  5074. margin-top: 15px;
  5075. cursor: pointer;
  5076. }
  5077. .chapter_add_l {
  5078. margin-left: 5px;
  5079. width: 30px;
  5080. height: 30px;
  5081. float: left;
  5082. border: 1px solid #aaa;
  5083. color: #aaa;
  5084. border-radius: 50%;
  5085. font-size: 25px;
  5086. text-align: center;
  5087. }
  5088. .chapter_add_r {
  5089. font-size: 18px;
  5090. height: 40px;
  5091. line-height: 30px;
  5092. text-indent: 10px;
  5093. color: #aaa;
  5094. }
  5095. .chapter_add_r span {
  5096. font-size: 12px;
  5097. color: rgb(204, 204, 204);
  5098. }
  5099. .chapter_add_input {
  5100. display: none;
  5101. }
  5102. .line {
  5103. width: 85%;
  5104. margin: 0 auto;
  5105. border-top: 1px solid #e5e5e5;
  5106. margin-top: 20px;
  5107. }
  5108. .info_btnBox {
  5109. width: 100%;
  5110. display: flex;
  5111. justify-content: space-evenly;
  5112. margin: 10px 0 10px 0;
  5113. }
  5114. .info_btn,
  5115. .teacherWord {
  5116. color: #fff;
  5117. background-color: #0f7eff;
  5118. padding: 8px 24px;
  5119. font-size: 0.9375rem;
  5120. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%),
  5121. 0px 3px 1px -2px rgb(0 0 0 / 12%);
  5122. min-width: 64px;
  5123. font-weight: 500;
  5124. border-radius: 4px;
  5125. box-sizing: border-box;
  5126. border: none;
  5127. cursor: pointer;
  5128. }
  5129. .teacherWord {
  5130. width: 105px !important;
  5131. text-align: center !important;
  5132. line-height: 36px !important;
  5133. padding: 0 !important;
  5134. font-size: 14px !important;
  5135. margin: 10px 0 !important;
  5136. }
  5137. .wordTeacher {
  5138. display: flex;
  5139. flex-direction: column;
  5140. width: 20%;
  5141. text-align: center;
  5142. font-size: 14px;
  5143. margin: 30px 30px 0 10px;
  5144. background: #fff;
  5145. position: relative;
  5146. border-radius: 5px;
  5147. padding: 25px 0px;
  5148. }
  5149. .wordPic {
  5150. margin: 0 auto;
  5151. width: 60px;
  5152. height: 60px;
  5153. cursor: pointer;
  5154. }
  5155. .deleteWord {
  5156. width: 22px;
  5157. height: 22px;
  5158. position: absolute;
  5159. right: 20px;
  5160. top: -10px;
  5161. cursor: pointer;
  5162. }
  5163. .wordPic > img,
  5164. .deleteWord > img,
  5165. .addToolImg > img {
  5166. width: 100%;
  5167. height: 100%;
  5168. }
  5169. .info_btn:hover {
  5170. background-color: #4f7cd5 !important;
  5171. }
  5172. .cru_selectBox {
  5173. display: flex;
  5174. margin: 24px 0 10px;
  5175. flex-wrap: nowrap;
  5176. white-space: nowrap;
  5177. overflow: auto;
  5178. position: relative;
  5179. height: 47px;
  5180. }
  5181. .cru_selectBox::-webkit-scrollbar {
  5182. /*滚动条整体样式*/
  5183. width: 6px;
  5184. /*高宽分别对应横竖滚动条的尺寸*/
  5185. height: 6px;
  5186. }
  5187. /*定义滚动条轨道 内阴影+圆角*/
  5188. .cru_selectBox::-webkit-scrollbar-track {
  5189. border-radius: 10px;
  5190. background-color: #eee;
  5191. }
  5192. /*定义滑块 内阴影+圆角*/
  5193. .cru_selectBox::-webkit-scrollbar-thumb {
  5194. border-radius: 10px;
  5195. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  5196. background-color: rgba(0, 0, 0, 0.1);
  5197. }
  5198. .cru_line {
  5199. position: absolute;
  5200. bottom: 0px;
  5201. transition: all 0.5s;
  5202. left: 0px;
  5203. width: 125px;
  5204. margin-left: -25px;
  5205. }
  5206. .cru_select {
  5207. font-size: 21px;
  5208. margin-right: 37px;
  5209. margin-left: 5px;
  5210. cursor: pointer;
  5211. color: #a6a6a6;
  5212. }
  5213. .cru_selected {
  5214. color: #0b7fc2 !important;
  5215. }
  5216. .chapter_contentbox {
  5217. display: flex;
  5218. align-items: center;
  5219. margin-top: 15px;
  5220. }
  5221. .chapter_contentbox div:nth-child(1) {
  5222. /* width: 150px; */
  5223. margin: 0px;
  5224. /* font-size: 2em; */
  5225. color: black;
  5226. display: block;
  5227. white-space: nowrap;
  5228. overflow: hidden;
  5229. text-overflow: ellipsis;
  5230. /* font-weight: 600; */
  5231. margin-right: 20px;
  5232. font-size: 18px;
  5233. }
  5234. .chapter_contentbox div:nth-child(2) {
  5235. width: 380px;
  5236. }
  5237. .chapter_contentbox div:nth-child(3),
  5238. .remove {
  5239. background-image: url(../../assets/remove.png);
  5240. cursor: pointer;
  5241. opacity: 0.5;
  5242. width: 40px;
  5243. height: 50px;
  5244. background-repeat: no-repeat;
  5245. background-position: 5px 10px;
  5246. }
  5247. .binfo_input {
  5248. font: inherit;
  5249. color: currentColor;
  5250. width: 100%;
  5251. margin: 0;
  5252. /* padding: 15px 14px; */
  5253. padding: 8px 14px;
  5254. display: block;
  5255. min-width: 0;
  5256. outline: none;
  5257. box-sizing: content-box;
  5258. background: none;
  5259. border: 1px solid rgba(0, 0, 0, 0.23);
  5260. border-radius: 4px;
  5261. box-sizing: border-box;
  5262. background: #fff;
  5263. font-size: 18px;
  5264. }
  5265. .binfo_input:focus-visible {
  5266. border: 1px solid rgba(61, 103, 188);
  5267. }
  5268. .time {
  5269. display: flex;
  5270. margin: 35px 0 80px 0;
  5271. }
  5272. .chapter_btnbox {
  5273. width: 160px;
  5274. border-radius: 5px;
  5275. border: 2px dashed gray;
  5276. display: flex;
  5277. padding: 8px 50px;
  5278. align-items: center;
  5279. justify-content: center;
  5280. margin: 30px auto 0;
  5281. cursor: pointer;
  5282. }
  5283. .icon_add {
  5284. position: relative;
  5285. width: 24px;
  5286. padding-top: 20px;
  5287. border-radius: 100%;
  5288. border-width: 2px;
  5289. border-style: solid;
  5290. border-color: gray;
  5291. }
  5292. .icon_add i:nth-child(1) {
  5293. position: absolute;
  5294. left: 50%;
  5295. top: 50%;
  5296. height: 60%;
  5297. transform: translate(-50%, -50%);
  5298. border-width: 1px;
  5299. border-style: solid;
  5300. border-color: inherit;
  5301. }
  5302. .icon_add i:nth-child(2) {
  5303. position: absolute;
  5304. top: 50%;
  5305. left: 50%;
  5306. width: 60%;
  5307. transform: translate(-50%, -50%);
  5308. border-width: 1px;
  5309. border-style: solid;
  5310. border-color: inherit;
  5311. }
  5312. .chapter_btn_w {
  5313. font-size: 0.9375rem;
  5314. font-weight: bold;
  5315. color: gray;
  5316. margin-left: 20px;
  5317. }
  5318. .disUoloadSty >>> .el-icon-plus {
  5319. display: none !important; /* 上传按钮隐藏 */
  5320. }
  5321. .imgLeft {
  5322. margin: 15px 0;
  5323. }
  5324. .add_info_box {
  5325. margin: 20px 0;
  5326. }
  5327. .add_info_box button {
  5328. margin: 0 10px 10px 0;
  5329. }
  5330. .add_chapters_box {
  5331. text-align: left;
  5332. background-color: rgb(232 234 237);
  5333. width: 100%;
  5334. padding: 0px 15px;
  5335. border-radius: 15px;
  5336. font-size: 16px;
  5337. box-sizing: border-box;
  5338. position: relative;
  5339. padding: 0 10px 5px 10px;
  5340. height: 185px;
  5341. overflow-y: auto;
  5342. overflow-x: hidden;
  5343. }
  5344. .homework_box {
  5345. display: flex;
  5346. align-items: flex-start;
  5347. flex-wrap: wrap;
  5348. margin: 15px 0 0 0;
  5349. flex-direction: column;
  5350. align-content: flex-start;
  5351. }
  5352. .course_homework {
  5353. display: flex;
  5354. justify-content: center;
  5355. flex-direction: row;
  5356. align-items: center;
  5357. margin: 0 10px 0 0;
  5358. }
  5359. .course_homework >>> .el-input__inner {
  5360. width: 140px;
  5361. margin-left: 15px;
  5362. }
  5363. .chapter_upload_move {
  5364. position: relative;
  5365. background-color: #fff;
  5366. position: absolute;
  5367. width: 100%;
  5368. top: 0px;
  5369. left: 0px;
  5370. border: 1px solid #eee;
  5371. border-radius: 5px;
  5372. transition: width 2s;
  5373. -moz-transition: width 2s;
  5374. -webkit-transition: width 2s;
  5375. -o-transition: width 2s;
  5376. }
  5377. .chapter_upload_l_i {
  5378. background-image: url("../../assets/icon.png");
  5379. background-position: 3px -165px;
  5380. width: 30px;
  5381. height: 30px;
  5382. margin: 10px auto 0 auto;
  5383. }
  5384. .left_first {
  5385. display: flex;
  5386. flex-direction: column;
  5387. flex-wrap: nowrap;
  5388. }
  5389. .right_first {
  5390. width: 100%;
  5391. height: 100%;
  5392. margin-top: 15px;
  5393. }
  5394. .right_title {
  5395. height: 30px;
  5396. padding: 15px 0 15px 20px;
  5397. border-bottom: 1px solid #f2f2f2;
  5398. font-size: 1.5em;
  5399. font-weight: bold;
  5400. color: #0f7eff;
  5401. margin: 0 auto;
  5402. }
  5403. .people {
  5404. border: 1px solid rgb(229 229 229);
  5405. height: 495px;
  5406. border-radius: 5px;
  5407. width: 100%;
  5408. overflow: auto;
  5409. }
  5410. .people_top {
  5411. display: flex;
  5412. width: 100%;
  5413. justify-content: space-between;
  5414. align-items: center;
  5415. }
  5416. .people_nav,
  5417. .people_top_right {
  5418. padding: 20px 0 0 20px;
  5419. }
  5420. .people_search {
  5421. display: flex;
  5422. position: relative;
  5423. }
  5424. .people_search >>> .el-input__inner {
  5425. height: 25px;
  5426. width: 95%;
  5427. }
  5428. .search_img {
  5429. width: 20px;
  5430. height: 20px;
  5431. position: absolute;
  5432. right: 15px;
  5433. top: 3px;
  5434. }
  5435. .search_img > img {
  5436. width: 100%;
  5437. height: 100%;
  5438. }
  5439. .people_name {
  5440. display: flex;
  5441. justify-content: flex-start;
  5442. padding: 20px 0 0 25px;
  5443. flex-direction: column;
  5444. flex-wrap: wrap;
  5445. }
  5446. .people_name >>> .el-checkbox {
  5447. width: 100%;
  5448. display: flex;
  5449. align-items: center;
  5450. margin-bottom: 10px;
  5451. }
  5452. .people_name >>> .el-checkbox__label {
  5453. text-overflow: ellipsis;
  5454. overflow: hidden;
  5455. width: 100%;
  5456. }
  5457. .right_img {
  5458. width: 150px;
  5459. height: 150px;
  5460. margin: 0 auto;
  5461. }
  5462. .right_img > img {
  5463. width: 100%;
  5464. height: 100%;
  5465. }
  5466. .number {
  5467. margin-top: 20px;
  5468. color: #4aa6ff;
  5469. text-decoration: underline;
  5470. }
  5471. .success_button {
  5472. display: flex;
  5473. text-align: center;
  5474. margin: 5% 0 auto;
  5475. flex-direction: row;
  5476. justify-content: center;
  5477. }
  5478. .look_course {
  5479. margin-right: 40px;
  5480. background: #3d67bc;
  5481. width: 200px;
  5482. height: 35px;
  5483. line-height: 35px;
  5484. color: #fff;
  5485. text-align: center;
  5486. font-size: 14px;
  5487. border-radius: 5px;
  5488. cursor: pointer;
  5489. }
  5490. .attend_others {
  5491. width: 250px;
  5492. background: #4fb13c;
  5493. height: 35px;
  5494. line-height: 35px;
  5495. color: #fff;
  5496. text-align: center;
  5497. font-size: 14px;
  5498. border-radius: 5px;
  5499. cursor: pointer;
  5500. }
  5501. .dialog_diy2 >>> .el-dialog__body {
  5502. text-align: center;
  5503. }
  5504. .write_togother {
  5505. position: absolute;
  5506. right: 45px;
  5507. display: flex;
  5508. top: 5%;
  5509. }
  5510. .write_people {
  5511. font-size: 14px;
  5512. line-height: 50px;
  5513. padding-right: 10px;
  5514. }
  5515. .end_write {
  5516. background: #3d67bc;
  5517. color: #fff;
  5518. width: 100px;
  5519. height: 35px;
  5520. line-height: 35px;
  5521. text-align: center;
  5522. font-size: 14px;
  5523. border-radius: 5px;
  5524. cursor: pointer;
  5525. }
  5526. .chapter_upload {
  5527. height: 50px;
  5528. margin-top: 12px;
  5529. position: relative;
  5530. display: flex;
  5531. align-items: center;
  5532. width: 100%;
  5533. min-height: 50px;
  5534. }
  5535. .chapter_upload_t {
  5536. background-color: #fff;
  5537. position: absolute;
  5538. height: 100%;
  5539. top: 0px;
  5540. left: 0px;
  5541. border-radius: 40px;
  5542. box-sizing: border-box;
  5543. box-shadow: 0 0 3px 3px #dfdfdf;
  5544. }
  5545. .chapter_upload_o {
  5546. width: 100%;
  5547. height: 100%;
  5548. position: relative;
  5549. z-index: 1;
  5550. }
  5551. .chapter_upload_ic {
  5552. height: 30px;
  5553. float: right;
  5554. }
  5555. .chapter_upload_ic_l {
  5556. width: 50px;
  5557. height: 50px;
  5558. float: left;
  5559. }
  5560. .chapter_upload_ic_l div {
  5561. width: 30px;
  5562. height: 35px;
  5563. background: url("../../assets/icon/icon.png");
  5564. }
  5565. .chapter_upload_ic_r {
  5566. width: 50px;
  5567. height: 50px;
  5568. float: left;
  5569. margin-left: 0px;
  5570. display: flex;
  5571. align-items: center;
  5572. }
  5573. .chapter_upload_ic_r div {
  5574. width: 25px;
  5575. height: 25px;
  5576. background-image: url("../../assets/delete.png");
  5577. background-size: 100% 100%;
  5578. }
  5579. .chapter_upload_n {
  5580. display: flex;
  5581. text-indent: 10px;
  5582. text-decoration: none;
  5583. text-overflow: ellipsis;
  5584. white-space: nowrap;
  5585. overflow: hidden;
  5586. width: 55%;
  5587. margin-left: 10px;
  5588. cursor: pointer;
  5589. margin-top: 2px;
  5590. }
  5591. .chapter_upload_l_i1 {
  5592. background-image: url("../../assets/icon/video.png");
  5593. width: 28px;
  5594. height: 28px;
  5595. background-size: 100% 100%;
  5596. }
  5597. .chapter_upload_l_i5 {
  5598. background-image: url("../../assets/icon/word.png");
  5599. width: 24px;
  5600. height: 24px;
  5601. background-size: 100% 100%;
  5602. }
  5603. .chapter_upload_l_i8 {
  5604. background-image: url("../../assets/icon/line.png");
  5605. width: 24px;
  5606. height: 24px;
  5607. background-size: 100% 100%;
  5608. }
  5609. .chapter_upload_ud {
  5610. display: flex;
  5611. flex-direction: column;
  5612. margin-left: 5px;
  5613. justify-content: center;
  5614. }
  5615. .chapter_upload_up {
  5616. background-image: url("../../assets/icon/up.png");
  5617. width: 17px;
  5618. height: 15px;
  5619. background-size: 100% 100%;
  5620. cursor: pointer;
  5621. }
  5622. .chapter_upload_down {
  5623. background-image: url("../../assets/icon/down.png");
  5624. width: 17px;
  5625. height: 15px;
  5626. margin: 2px auto 0 auto;
  5627. background-size: 100% 100%;
  5628. cursor: pointer;
  5629. }
  5630. .addWordStyle {
  5631. display: flex;
  5632. flex-direction: row;
  5633. justify-content: flex-start;
  5634. overflow-x: auto;
  5635. white-space: nowrap;
  5636. flex-wrap: wrap;
  5637. }
  5638. /* table 样式 */
  5639. .cont >>> table {
  5640. border-top: 1px solid #ccc;
  5641. border-left: 1px solid #ccc;
  5642. }
  5643. .cont >>> table td,
  5644. .cont >>> table th {
  5645. border-bottom: 1px solid #ccc;
  5646. border-right: 1px solid #ccc;
  5647. padding: 3px 5px;
  5648. }
  5649. .cont >>> table th {
  5650. border-bottom: 2px solid #ccc;
  5651. text-align: center;
  5652. }
  5653. /* blockquote 样式 */
  5654. .cont >>> blockquote {
  5655. display: block;
  5656. border-left: 8px solid #d0e5f2;
  5657. padding: 5px 10px;
  5658. margin: 10px 0;
  5659. line-height: 1.4;
  5660. font-size: 100%;
  5661. background-color: #f1f1f1;
  5662. }
  5663. /* code 样式 */
  5664. .cont >>> code {
  5665. display: inline-block;
  5666. *display: inline;
  5667. *zoom: 1;
  5668. background-color: #f1f1f1;
  5669. border-radius: 3px;
  5670. padding: 3px 5px;
  5671. margin: 0 3px;
  5672. }
  5673. .cont >>> pre code {
  5674. display: block;
  5675. }
  5676. /* ul ol 样式 */
  5677. .cont >>> ul,
  5678. ol {
  5679. margin: 10px 0 10px 20px;
  5680. }
  5681. .wordbox {
  5682. display: flex;
  5683. flex-wrap: wrap;
  5684. cursor: pointer;
  5685. width: 100%;
  5686. }
  5687. .checkword {
  5688. width: 22px;
  5689. height: 22px;
  5690. margin: 10px auto 0;
  5691. cursor: pointer;
  5692. }
  5693. .checkword img {
  5694. width: 100%;
  5695. }
  5696. .stepBg {
  5697. margin: 0 25px 0 0;
  5698. /* width: 17%; */
  5699. min-width: 300px;
  5700. width: 300px;
  5701. /* border-radius: 10px; */
  5702. display: flex;
  5703. flex-direction: column;
  5704. justify-content: flex-start;
  5705. align-items: center;
  5706. flex-wrap: nowrap;
  5707. background: #fff;
  5708. min-height: 700px;
  5709. height: 100%;
  5710. /* top: 18%; */
  5711. }
  5712. .stepBg > div {
  5713. height: 80px;
  5714. width: 85%;
  5715. cursor: pointer;
  5716. margin: 10px 0;
  5717. border-radius: 10px;
  5718. }
  5719. .first,
  5720. .second,
  5721. .third,
  5722. .four {
  5723. background: #4a83d0;
  5724. height: 90px;
  5725. color: #fff;
  5726. display: flex;
  5727. flex-direction: row;
  5728. align-items: center;
  5729. justify-content: center;
  5730. }
  5731. .first > div:nth-child(1),
  5732. .second > div:nth-child(1),
  5733. .third > div:nth-child(1),
  5734. .four > div:nth-child(1) {
  5735. margin: 5px 10px 0 0;
  5736. width: 2rem;
  5737. }
  5738. .firstNo,
  5739. .secondNo,
  5740. .thirdNo,
  5741. .fourNo {
  5742. background: #e7e7e7;
  5743. color: #adadad;
  5744. display: flex;
  5745. flex-direction: row;
  5746. align-items: center;
  5747. justify-content: center;
  5748. }
  5749. .firstNo > div:nth-child(1),
  5750. .secondNo > div:nth-child(1),
  5751. .thirdNo > div:nth-child(1),
  5752. .fourNo > div:nth-child(1) {
  5753. margin: 5px 10px 0 0;
  5754. width: 2rem;
  5755. }
  5756. .uploadWidth >>> .el-upload {
  5757. width: 60px;
  5758. height: 60px;
  5759. position: relative;
  5760. }
  5761. .addPeople {
  5762. background: #fa6060;
  5763. width: 150px;
  5764. height: 40px;
  5765. color: #fff;
  5766. border-radius: 5px;
  5767. text-align: center;
  5768. line-height: 40px;
  5769. font-size: 14px;
  5770. cursor: pointer;
  5771. margin-top: 20px;
  5772. }
  5773. .kcImg {
  5774. width: 60px;
  5775. margin-left: 10px;
  5776. }
  5777. .zyImg {
  5778. width: 55px;
  5779. margin: 0 10px;
  5780. }
  5781. .deleteZy {
  5782. width: 20px;
  5783. position: absolute;
  5784. top: 5px;
  5785. right: 5px;
  5786. cursor: pointer;
  5787. }
  5788. .kcImg > img,
  5789. .zyImg > img,
  5790. .deleteZy > img {
  5791. width: 100%;
  5792. height: 100%;
  5793. }
  5794. .zyBox {
  5795. display: flex;
  5796. flex-direction: row;
  5797. align-items: center;
  5798. background: #67d37d;
  5799. color: #fff;
  5800. width: 210px;
  5801. margin: 20px 20px 0 0;
  5802. border-radius: 10px;
  5803. height: 70px;
  5804. position: relative;
  5805. }
  5806. .upCss {
  5807. display: flex;
  5808. flex-direction: row;
  5809. justify-content: flex-start;
  5810. }
  5811. .upCss >>> .el-icon-plus {
  5812. position: none !important;
  5813. width: 200px;
  5814. height: 100px;
  5815. display: flex;
  5816. flex-wrap: nowrap;
  5817. flex-direction: column;
  5818. align-items: center;
  5819. justify-content: center;
  5820. border: 1px dashed #ccc;
  5821. min-width: 78px;
  5822. min-height: 100px;
  5823. z-index: 999;
  5824. }
  5825. .upCss >>> .el-upload-list__item-name {
  5826. width: 100px;
  5827. white-space: nowrap;
  5828. overflow: hidden;
  5829. text-overflow: ellipsis;
  5830. }
  5831. .addStageImg {
  5832. min-width: 25px;
  5833. min-height: 25px;
  5834. width: 25px;
  5835. height: 25px;
  5836. cursor: pointer;
  5837. }
  5838. .addHW {
  5839. width: 28px;
  5840. height: 28px;
  5841. cursor: pointer;
  5842. }
  5843. .addStageImg > img,
  5844. .addHW > img {
  5845. width: 100%;
  5846. height: 100%;
  5847. }
  5848. .addNewPP >>> .el-dialog__body {
  5849. padding: 5px 20px;
  5850. }
  5851. .isHeight {
  5852. height: 680px;
  5853. }
  5854. .toolChoose {
  5855. display: flex;
  5856. /* width: 100%; */
  5857. flex-direction: row;
  5858. flex-wrap: wrap;
  5859. }
  5860. .tool {
  5861. display: flex;
  5862. flex-direction: column;
  5863. flex-wrap: nowrap;
  5864. width: fit-content;
  5865. margin: 10px 0 10px 0;
  5866. align-items: center;
  5867. }
  5868. .tool + .tool {
  5869. margin-right: 45px;
  5870. }
  5871. .whiteBIcon {
  5872. width: 80px;
  5873. cursor: pointer;
  5874. display: flex;
  5875. flex-direction: column;
  5876. flex-wrap: nowrap;
  5877. align-items: center;
  5878. }
  5879. .whiteBIcon > img,
  5880. .check > img,
  5881. .toolIcon > img,
  5882. .arrow > img {
  5883. width: 100%;
  5884. height: 100%;
  5885. }
  5886. .whiteBIcon > img {
  5887. box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
  5888. border-radius: 15px;
  5889. }
  5890. .check {
  5891. width: 20px;
  5892. height: 20px;
  5893. cursor: pointer;
  5894. margin: 10px 0;
  5895. }
  5896. .customWidth >>> .el-dialog {
  5897. min-width: 500px !important;
  5898. }
  5899. .a_addBox {
  5900. margin: 10px 0;
  5901. background: #fff;
  5902. padding: 15px;
  5903. max-height: 400px;
  5904. overflow: auto;
  5905. }
  5906. .a_add_box {
  5907. border-bottom: 2px solid #eee;
  5908. padding-bottom: 10px;
  5909. }
  5910. .a_add_head {
  5911. display: flex;
  5912. align-items: center;
  5913. justify-content: space-between;
  5914. margin: 10px 0;
  5915. font-size: 18px;
  5916. }
  5917. .a_add_head .a_add_head_input {
  5918. width: 300px;
  5919. }
  5920. .a_add_head .a_add_head_div {
  5921. display: flex;
  5922. align-items: center;
  5923. justify-content: space-between;
  5924. }
  5925. .a_add_body {
  5926. display: flex;
  5927. align-items: center;
  5928. }
  5929. .a_add_input {
  5930. display: flex;
  5931. align-items: center;
  5932. flex-wrap: wrap;
  5933. }
  5934. .width100 {
  5935. width: 100%;
  5936. }
  5937. .a_add_input .a_add_persent {
  5938. width: 100%;
  5939. }
  5940. .a_add_persent_div {
  5941. width: 100%;
  5942. display: flex;
  5943. align-items: center;
  5944. }
  5945. .a_add_persent_div span {
  5946. margin: 5px 0;
  5947. }
  5948. .a_add_persent_div span:nth-child(1) {
  5949. width: 30%;
  5950. }
  5951. .a_add_persent_div span:nth-child(2) {
  5952. width: 7%;
  5953. }
  5954. .a_add_persent_div span:nth-child(3) {
  5955. width: 40%;
  5956. }
  5957. .a_add_body_div {
  5958. display: flex;
  5959. align-items: center;
  5960. justify-content: center;
  5961. flex-direction: column;
  5962. }
  5963. .all_choose {
  5964. display: flex;
  5965. flex-direction: row;
  5966. align-items: flex-start;
  5967. width: 100%;
  5968. }
  5969. .all_choose > span {
  5970. width: 100px;
  5971. display: block;
  5972. letter-spacing: 14px;
  5973. white-space: nowrap;
  5974. overflow: hidden;
  5975. text-overflow: ellipsis;
  5976. }
  5977. .all_choose >>> .el-checkbox-group {
  5978. display: flex;
  5979. flex-direction: row;
  5980. width: 100%;
  5981. flex-wrap: wrap;
  5982. align-content: center;
  5983. justify-content: flex-start;
  5984. align-items: center;
  5985. margin-top: 3px;
  5986. }
  5987. .all_choose > .el-checkbox-group >>> .el-checkbox {
  5988. margin-bottom: 10px;
  5989. display: flex;
  5990. flex-direction: row;
  5991. align-items: center;
  5992. }
  5993. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label {
  5994. min-width: 80px;
  5995. overflow: hidden;
  5996. width: 80px;
  5997. text-overflow: ellipsis;
  5998. white-space: nowrap;
  5999. }
  6000. .all_choose > .el-checkbox-group > .el-checkbox >>> .el-checkbox__label:hover {
  6001. width: auto;
  6002. }
  6003. .choose > div:nth-child(3) > span {
  6004. letter-spacing: 0 !important;
  6005. }
  6006. .choose {
  6007. display: flex;
  6008. flex-direction: column;
  6009. flex-wrap: nowrap;
  6010. height: 100%;
  6011. justify-content: space-evenly;
  6012. align-items: flex-start;
  6013. }
  6014. .both {
  6015. display: flex;
  6016. flex-direction: row;
  6017. flex-wrap: wrap;
  6018. width: 100%;
  6019. align-items: center;
  6020. justify-content: flex-start;
  6021. margin: 30px 0;
  6022. }
  6023. .notice >>> .el-dialog {
  6024. width: 500px !important;
  6025. text-align: center;
  6026. }
  6027. .notice >>> .el-button {
  6028. margin-top: 20px;
  6029. }
  6030. .whiteBg {
  6031. background: #fff;
  6032. border-radius: 10px;
  6033. }
  6034. .chooseWho {
  6035. display: flex;
  6036. width: 380px;
  6037. flex-direction: row;
  6038. flex-wrap: nowrap;
  6039. justify-content: space-between;
  6040. padding-bottom: 10px;
  6041. }
  6042. .chooseWho > div {
  6043. cursor: pointer;
  6044. padding-bottom: 10px;
  6045. font-weight: bold;
  6046. }
  6047. .isChooseActive {
  6048. color: #3e88f4;
  6049. border-bottom: 2px solid #2f80f3;
  6050. }
  6051. .toolSort {
  6052. display: flex;
  6053. flex-direction: row;
  6054. flex-wrap: wrap;
  6055. justify-content: flex-start;
  6056. align-items: flex-start;
  6057. }
  6058. .toolSort > div {
  6059. margin-right: 45px;
  6060. }
  6061. .tools {
  6062. width: 100%;
  6063. display: flex;
  6064. flex-direction: column;
  6065. flex-wrap: nowrap;
  6066. align-items: flex-start;
  6067. }
  6068. .leftTools,
  6069. .rightTools {
  6070. width: 50%;
  6071. }
  6072. .rightTools {
  6073. display: flex;
  6074. flex-direction: row;
  6075. flex-wrap: nowrap;
  6076. justify-content: space-around;
  6077. }
  6078. .firstToolList {
  6079. display: flex;
  6080. flex-direction: column;
  6081. flex-wrap: nowrap;
  6082. align-items: center;
  6083. }
  6084. .iconList {
  6085. display: flex;
  6086. flex-direction: row;
  6087. flex-wrap: wrap;
  6088. justify-content: flex-start;
  6089. align-items: center;
  6090. margin: 20px 0 5px 0;
  6091. width: 240px;
  6092. min-width: 240px;
  6093. }
  6094. .iconTool {
  6095. display: flex;
  6096. flex-direction: column;
  6097. flex-wrap: nowrap;
  6098. align-items: center;
  6099. justify-content: flex-start;
  6100. margin: 15px 10px;
  6101. }
  6102. .toolIcon {
  6103. width: 50px;
  6104. }
  6105. .taskBorder {
  6106. border: 1px solid #e1e1e1;
  6107. border-radius: 10px;
  6108. margin-top: 20px;
  6109. min-height: 1160px;
  6110. position: relative;
  6111. background: #fbfbfb;
  6112. }
  6113. .smallTaskBorder {
  6114. height: 170px;
  6115. min-height: 170px !important;
  6116. overflow: hidden;
  6117. }
  6118. .taskBorder > div {
  6119. padding: 30px 0 10px 30px;
  6120. }
  6121. .addTaskBorder {
  6122. border: 2px solid #e1e1e1;
  6123. border-radius: 10px;
  6124. margin-top: 25px;
  6125. cursor: pointer;
  6126. }
  6127. .addTaskBorder > div {
  6128. margin: 0 auto;
  6129. display: flex;
  6130. align-items: center;
  6131. justify-content: center;
  6132. }
  6133. .addTaskBorder > div > img {
  6134. width: 100px;
  6135. }
  6136. .addTaskBorder > div > span {
  6137. font-size: 23px;
  6138. color: #dbdbdb;
  6139. }
  6140. .funBlock {
  6141. display: flex;
  6142. padding: 15px 0;
  6143. flex-direction: row;
  6144. justify-content: flex-end;
  6145. align-items: center;
  6146. position: absolute;
  6147. right: 15px;
  6148. bottom: 35px;
  6149. }
  6150. .fold {
  6151. display: flex;
  6152. margin: 0 10px;
  6153. flex-direction: row;
  6154. align-items: center;
  6155. cursor: pointer;
  6156. }
  6157. .arrow {
  6158. width: 15px;
  6159. height: 15px;
  6160. margin-left: 10px;
  6161. }
  6162. .addToolFun {
  6163. display: flex;
  6164. width: 150px;
  6165. flex-direction: row;
  6166. align-items: center;
  6167. justify-content: center;
  6168. border: 1px dashed;
  6169. border-radius: 5px;
  6170. height: 50px;
  6171. margin: 35px auto 0;
  6172. cursor: pointer;
  6173. }
  6174. .addToolImg {
  6175. width: 30px;
  6176. height: 30px;
  6177. margin-right: 20px;
  6178. }
  6179. .addToolsDia >>> .el-dialog__body {
  6180. padding: 20px;
  6181. }
  6182. .addToolsDia >>> .el-dialog__body > .toolChoose {
  6183. padding: 0;
  6184. }
  6185. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools {
  6186. padding: 0;
  6187. border-bottom: none;
  6188. margin-bottom: 0;
  6189. }
  6190. .addToolsDia >>> .el-dialog__body > .toolChoose > .leftTools > .chooseWho {
  6191. width: 100%;
  6192. }
  6193. .lineCss >>> .el-form-item__label {
  6194. width: auto !important;
  6195. }
  6196. .lineCss >>> .el-form-item__content {
  6197. margin-left: 50px !important;
  6198. }
  6199. .newSteps {
  6200. display: flex;
  6201. width: 100% !important;
  6202. height: 80px;
  6203. cursor: pointer;
  6204. margin: 10px 0;
  6205. border-radius: 10px;
  6206. flex-direction: row;
  6207. align-content: center;
  6208. justify-content: center;
  6209. align-items: center;
  6210. margin: 0 !important;
  6211. }
  6212. /* 评价样式 */
  6213. .elist_css {
  6214. padding-bottom: 60px !important;
  6215. }
  6216. .elist_title {
  6217. margin-bottom: 10px;
  6218. }
  6219. .elist_input {
  6220. }
  6221. .elist_input_box {
  6222. display: flex;
  6223. align-items: center;
  6224. flex-wrap: wrap;
  6225. }
  6226. .elist_input_box + .elist_input_box {
  6227. margin-top: 30px;
  6228. }
  6229. .elist_input .elist_input_box input {
  6230. font: inherit;
  6231. color: currentColor;
  6232. /* width: 200px; */
  6233. max-width: 200px;
  6234. padding: 8px 14px;
  6235. display: block;
  6236. min-width: 0;
  6237. outline: none;
  6238. border: 1px solid rgba(0, 0, 0, 0.23);
  6239. border-radius: 4px;
  6240. box-sizing: border-box;
  6241. background: #fff;
  6242. margin: 0 20px 0 0;
  6243. }
  6244. .elist_input .elist_input_box span {
  6245. height: 36px;
  6246. line-height: 36px;
  6247. color: rgb(82, 82, 82);
  6248. min-width: 80px;
  6249. }
  6250. .elist_input .elist_input_box .remove {
  6251. height: 20px;
  6252. width: 20px;
  6253. background-size: 100% 100%;
  6254. background-position: unset;
  6255. margin-left: 5px;
  6256. }
  6257. .elist_input_box >>> .el-rate {
  6258. display: flex;
  6259. height: 36px;
  6260. align-items: center;
  6261. }
  6262. .elist_input_box .elist_inptu_text {
  6263. width: 100%;
  6264. display: flex;
  6265. align-items: center;
  6266. margin-top: 10px;
  6267. }
  6268. .elist_input_box .elist_inptu_text input {
  6269. /* width: 500px; */
  6270. width: 100%;
  6271. max-width: unset;
  6272. }
  6273. .elist_input_box >>> .el-rate__icon {
  6274. font-size: 24px;
  6275. }
  6276. .elist_btn {
  6277. margin-top: 10px;
  6278. }
  6279. .lineTitle {
  6280. margin-top: 15px;
  6281. width: 110px;
  6282. }
  6283. .courseTop {
  6284. display: flex;
  6285. flex-direction: row;
  6286. justify-content: flex-start;
  6287. align-items: center;
  6288. /* width: 100%; */
  6289. width: calc(100% - 20px);
  6290. /* background: rgb(255, 255, 255); */
  6291. /* border-radius: 10px; */
  6292. padding: 20px 0;
  6293. }
  6294. .stepsNav {
  6295. display: flex;
  6296. flex-direction: row;
  6297. justify-content: flex-start;
  6298. align-items: center;
  6299. }
  6300. .stepsWord {
  6301. font-size: 18px;
  6302. color: #fff;
  6303. font-weight: bold;
  6304. margin-left: auto;
  6305. background: rgb(15, 126, 255);
  6306. border-radius: 5px;
  6307. padding: 3px 25px;
  6308. box-sizing: border-box;
  6309. }
  6310. .rightBox {
  6311. width: calc(100% - 20px);
  6312. background: rgb(255, 255, 255);
  6313. border-radius: 10px;
  6314. overflow: auto;
  6315. height: calc(100% - 130px);
  6316. }
  6317. .e_add_top {
  6318. display: flex;
  6319. justify-content: space-between;
  6320. padding: 20px 20px 0 20px;
  6321. border-radius: 3px;
  6322. background: #fff;
  6323. }
  6324. .e_add_title2 {
  6325. display: flex;
  6326. align-items: center;
  6327. }
  6328. .e_add_title2 span {
  6329. width: 40px;
  6330. }
  6331. .e_add_title {
  6332. display: flex;
  6333. align-items: center;
  6334. color: #b8b8b8;
  6335. font-size: 18px;
  6336. position: relative;
  6337. height: 40px;
  6338. }
  6339. .e_add_title span {
  6340. margin-right: 10px;
  6341. }
  6342. .e_add_title .el_input {
  6343. width: 300px;
  6344. }
  6345. .e_add_title >>> .el-input__inner {
  6346. width: 400px;
  6347. }
  6348. .e_add_btn {
  6349. }
  6350. .e_add_content {
  6351. display: flex;
  6352. width: 100%;
  6353. }
  6354. .e_add_list {
  6355. background: #fff;
  6356. height: 500px;
  6357. width: 210px;
  6358. position: relative;
  6359. margin: 15px 5px 0 0;
  6360. flex-shrink: 0;
  6361. display: flex;
  6362. flex-direction: column;
  6363. }
  6364. .e_add_list_title {
  6365. font-size: 20px;
  6366. width: 100%;
  6367. box-sizing: border-box;
  6368. padding: 15px 40px;
  6369. text-align: center;
  6370. border-bottom: 1px solid #eaeaea;
  6371. position: relative;
  6372. display: flex;
  6373. align-items: center;
  6374. justify-content: center;
  6375. height: 57px;
  6376. background: #f6f6f6;
  6377. }
  6378. .e_add_list_title span {
  6379. overflow: hidden;
  6380. white-space: nowrap;
  6381. text-overflow: ellipsis;
  6382. }
  6383. .e_add_list_title img {
  6384. position: absolute;
  6385. right: 15px;
  6386. width: 25px;
  6387. cursor: pointer;
  6388. top: 50%;
  6389. transform: translateY(-50%);
  6390. }
  6391. .e_add_list_body {
  6392. height: calc(100% - 187px);
  6393. overflow: auto;
  6394. }
  6395. .e_add_list_child {
  6396. width: 100%;
  6397. display: flex;
  6398. align-items: center;
  6399. justify-content: center;
  6400. position: relative;
  6401. box-sizing: border-box;
  6402. padding: 15px 40px;
  6403. text-align: center;
  6404. }
  6405. .e_add_list_child span {
  6406. overflow: hidden;
  6407. white-space: nowrap;
  6408. text-overflow: ellipsis;
  6409. cursor: pointer;
  6410. }
  6411. .e_add_list_child img {
  6412. position: absolute;
  6413. right: 10px;
  6414. width: 21px;
  6415. cursor: pointer;
  6416. top: 50%;
  6417. transform: translateY(-50%);
  6418. }
  6419. .e_add_list_child + .e_add_list_child {
  6420. border-top: 1px solid #eaeaea;
  6421. }
  6422. .e_add_list_child .active {
  6423. color: #409eff;
  6424. }
  6425. .e_add_list_btn {
  6426. position: absolute;
  6427. bottom: 0;
  6428. height: 50px;
  6429. background: rgb(120, 120, 254);
  6430. width: 100%;
  6431. color: #fff;
  6432. font-size: 16px;
  6433. text-align: center;
  6434. line-height: 50px;
  6435. cursor: pointer;
  6436. }
  6437. .e_add_list_detail {
  6438. position: absolute;
  6439. bottom: 0;
  6440. height: 130px;
  6441. background: rgb(120, 120, 254);
  6442. width: 100%;
  6443. color: #fff;
  6444. font-size: 16px;
  6445. display: flex;
  6446. align-items: center;
  6447. justify-content: center;
  6448. }
  6449. .e_add_list_detail textarea {
  6450. height: 90%;
  6451. width: 95%;
  6452. border: none;
  6453. resize: none;
  6454. outline: none;
  6455. padding: 5px;
  6456. box-sizing: border-box;
  6457. }
  6458. .e_add_list_pbox {
  6459. width: 100%;
  6460. }
  6461. .e_add_list_pbox_title {
  6462. height: 50px;
  6463. background: #fff;
  6464. display: flex;
  6465. align-items: center;
  6466. width: 100%;
  6467. box-sizing: border-box;
  6468. padding: 0 20px;
  6469. flex-direction: row;
  6470. flex-wrap: wrap;
  6471. }
  6472. .type_title {
  6473. font-size: 18px;
  6474. font-weight: 700;
  6475. }
  6476. .type_content {
  6477. font-size: 16px;
  6478. margin-left: 30px;
  6479. }
  6480. .type_content span + span {
  6481. margin-left: 20px;
  6482. }
  6483. .type_content span {
  6484. cursor: pointer;
  6485. padding-bottom: 5px;
  6486. box-sizing: border-box;
  6487. }
  6488. .type_content .active {
  6489. color: #409eff;
  6490. border-bottom: 2px solid #409eff;
  6491. }
  6492. .e_add_list_pbox_content {
  6493. height: calc(100% - 50px);
  6494. display: flex;
  6495. align-items: center;
  6496. width: 100%;
  6497. background: #fff;
  6498. }
  6499. .mbCss {
  6500. width: 100%;
  6501. display: flex;
  6502. flex-direction: row;
  6503. flex-wrap: nowrap;
  6504. align-content: center;
  6505. align-items: flex-start;
  6506. justify-content: flex-start;
  6507. }
  6508. .pjCss {
  6509. /* width: 42%; */
  6510. width: calc(100% - 55%);
  6511. display: flex;
  6512. flex-direction: column;
  6513. flex-wrap: nowrap;
  6514. align-items: flex-start;
  6515. margin-top: 1.5%;
  6516. }
  6517. .e_box {
  6518. display: flex;
  6519. flex-wrap: wrap;
  6520. max-height: 500px;
  6521. align-items: flex-start;
  6522. overflow: auto;
  6523. }
  6524. .e_card {
  6525. border: 1px solid #ccc;
  6526. background: #fff;
  6527. margin-right: 20px;
  6528. width: 270px;
  6529. display: flex;
  6530. flex-direction: column;
  6531. align-items: center;
  6532. border-radius: 5px;
  6533. margin-top: 10px;
  6534. text-align: center;
  6535. }
  6536. .e_card_picture {
  6537. margin: 10px 0;
  6538. }
  6539. .e_card_picture > img {
  6540. width: 50px;
  6541. }
  6542. .e_card_name {
  6543. width: 100%;
  6544. padding: 0 10px;
  6545. box-sizing: border-box;
  6546. margin-bottom: 10px;
  6547. overflow: hidden;
  6548. text-overflow: ellipsis;
  6549. white-space: nowrap;
  6550. }
  6551. .e_card_time {
  6552. width: 100%;
  6553. padding: 0 10px;
  6554. box-sizing: border-box;
  6555. font-size: 15px;
  6556. color: #c3c3c3;
  6557. margin-bottom: 10px;
  6558. }
  6559. .e_card_btn {
  6560. height: 40px;
  6561. display: flex;
  6562. align-items: center;
  6563. width: 100%;
  6564. background: rgb(244, 244, 244);
  6565. }
  6566. .e_card_btn:hover {
  6567. background: rgb(221 221 221);
  6568. }
  6569. .e_card_btn span {
  6570. flex: 1 1 auto;
  6571. text-align: center;
  6572. cursor: pointer;
  6573. }
  6574. .addEva {
  6575. border: 1px solid #ccc;
  6576. background: #fff;
  6577. margin-right: 20px;
  6578. width: 270px;
  6579. height: 149px;
  6580. display: flex;
  6581. flex-direction: column;
  6582. align-items: center;
  6583. border-radius: 5px;
  6584. margin-top: 10px;
  6585. text-align: center;
  6586. cursor: pointer;
  6587. justify-content: center;
  6588. }
  6589. .addEva > img {
  6590. width: 50px;
  6591. object-fit: cover;
  6592. }
  6593. .uploadFm {
  6594. border: 1px dashed #ccc;
  6595. width: 202px;
  6596. height: 102px;
  6597. position: relative;
  6598. cursor: pointer;
  6599. }
  6600. .uploadFm > img {
  6601. position: absolute;
  6602. top: 25px;
  6603. left: 35%;
  6604. width: 50px;
  6605. }
  6606. .fileCss {
  6607. width: 100%;
  6608. display: flex;
  6609. flex-direction: row;
  6610. flex-wrap: nowrap;
  6611. justify-content: space-around;
  6612. align-items: center;
  6613. }
  6614. .sysPicBox {
  6615. display: flex;
  6616. flex-direction: row;
  6617. flex-wrap: wrap;
  6618. align-items: center;
  6619. height: 435px;
  6620. overflow: auto;
  6621. }
  6622. .sysPic {
  6623. width: 200px;
  6624. height: 115px;
  6625. margin: 0 20px 20px 0;
  6626. cursor: pointer;
  6627. }
  6628. .sysPic > img,
  6629. .isSysPic > img,
  6630. .deletePic > img {
  6631. width: 100%;
  6632. height: 100%;
  6633. object-fit: cover;
  6634. }
  6635. .isSysPic {
  6636. width: 200px;
  6637. height: 115px;
  6638. position: relative;
  6639. }
  6640. .deletePic {
  6641. width: 20px;
  6642. height: 20px;
  6643. position: absolute;
  6644. top: 0;
  6645. right: 0;
  6646. cursor: pointer;
  6647. }
  6648. </style>