Cost.vue 332 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612
  1. <template>
  2. <div class="cost-all" v-loading.fullscreen.lock="costloading">
  3. <div class="cost-box">
  4. <el-dialog width="400px" title="团组信息修改" :visible.sync="showEditGroupInfoDialog">
  5. <div>
  6. <el-form :model="groupInfoEditData" :rules="groupInfoRules" ref="groupInfoEditData"
  7. label-width="100px">
  8. <el-form-item label="出访时间:" prop="visitDate">
  9. <el-date-picker style="width: 180px;" v-model="groupInfoEditData.visitDate"
  10. placeholder="选择出访时间" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
  11. </el-form-item>
  12. <br />
  13. <el-form-item label="出访人数:" prop="visitPNumber">
  14. <el-input-number :controls="false" v-model="groupInfoEditData.visitPNumber" :min="0"
  15. :step="1" placeholder="请输入出访人数"></el-input-number>
  16. </el-form-item>
  17. <br />
  18. <el-form-item label="出访天数:" prop="visitDays">
  19. <el-input-number :controls="false" v-model="groupInfoEditData.visitDays" :min="0" :step="1"
  20. placeholder="请输入出访天数"></el-input-number>
  21. </el-form-item>
  22. </el-form>
  23. </div>
  24. <br />
  25. <div class="btn-dialog-cost">
  26. <el-button size="small" type="primary" @click='EditGroupInfoEv'>保存</el-button>
  27. &nbsp;&nbsp;&nbsp;
  28. <el-button @click="showEditGroupInfoDialog = false" size="small">取消</el-button>
  29. </div>
  30. </el-dialog>
  31. <el-dialog width="400px" title="成本数据复制" :visible.sync="dialogCopyVisible">
  32. <div>
  33. <label class="el-form-item__label">将此成本数据复制至:</label>
  34. <el-select @focus="GroupSelectFocus" remote :loading="selectLoading" :remote-method="remoteMethod"
  35. size="small" v-model="dialogCopySelect" filterable placeholder="请选择">
  36. <el-option v-for="item in options" :key="item.id" :label="item.groupName" :value="item.id">
  37. <span v-if="item.isTrue == 'True'" style="color:#409EFF">{{ item.groupName }}</span>
  38. <span v-else style="color:gray">{{ item.groupName }}</span>
  39. </el-option>
  40. </el-select>
  41. </div>
  42. <br />
  43. <div class="btn-dialog-cost">
  44. <el-button size="small" type="primary" @click='CopyGroupCost'>确定</el-button>
  45. &nbsp;&nbsp;&nbsp;
  46. <el-button @click="dialogCopyVisible = false" size="small">取消</el-button>
  47. </div>
  48. </el-dialog>
  49. <el-dialog width="400px" title="系数推测" :visible.sync="groupcostXSVisible">
  50. <div>
  51. <el-table border :data="groupcostXSList">
  52. <el-table-column property="label" label="系数板块"></el-table-column>
  53. <el-table-column property="value" label="系数值"></el-table-column>
  54. </el-table>
  55. </div>
  56. <br />
  57. <div class="btn-dialog-cost">
  58. <el-button size="small" type="primary" @click='groupcostXSSet'>采用推测系数</el-button>
  59. &nbsp;&nbsp;&nbsp;
  60. <el-button @click="groupcostXSVisible = false" size="small">取消操作</el-button>
  61. </div>
  62. </el-dialog>
  63. <el-dialog width="85%" title="地接历史费用" :visible.sync="historyCarDialog" @close="dialogClose">
  64. <div style="display: flex;">
  65. <div style="width: 30%;">
  66. <el-input v-model="historyCarInput" placeholder="请输入城市名称"></el-input>
  67. </div>
  68. <div style="width: 2%;"></div>
  69. <div><el-button type="primary" @click="historyCarSearch">搜索</el-button></div>
  70. </div>
  71. <br />
  72. <!-- @current-change="" -->
  73. <el-table @current-change="historyCarChange" highlight-current-row border
  74. :data="historyCarData.slice((currentPage - 1) * pageSize, currentPage * pageSize)">
  75. <template slot-scope="scope">
  76. <el-table-column v-for="(item, index) in historyCarCloumns" :property="item.value"
  77. :label="item.label" :key="item.value"></el-table-column>
  78. </template>
  79. </el-table>
  80. <div class="btn-dialog-cost">
  81. <el-button size="small" @click="historyCarYes" type="primary">采用历史的行程数据</el-button>
  82. &nbsp;&nbsp;&nbsp;
  83. <el-button @click="historyCarDialog = false; historyCarSelectObject = {}"
  84. size="small">采用现有的自定义数据</el-button>
  85. </div>
  86. <div class="block">
  87. <el-pagination align='center' @current-change="handleCurrentChange" :current-page="currentPage"
  88. :page-sizes="[5, 7, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next"
  89. @size-change="handleSizeChange" :total="historyCarData.length">
  90. </el-pagination>
  91. </div>
  92. </el-dialog>
  93. <el-dialog width="500" title="机票行程数据" :visible.sync="dialogTableVisible">
  94. <div>
  95. <el-select @change="blackCodeSelectChange" v-model="blackCodeSelect" clearable
  96. placeholder="请选择机票方案">
  97. <el-option v-for="blackCode in blackCodeListSeLect" :key="blackCode.id" :label="blackCode.title"
  98. :value="blackCode.id">
  99. </el-option>
  100. </el-select>
  101. </div>
  102. <br />
  103. <el-table border :data="gridData">
  104. <el-table-column property="day" label="DAY" width="150"></el-table-column>
  105. <el-table-column property="date" label="DATE" width="200"></el-table-column>
  106. <el-table-column property="itin" label="ITIN"></el-table-column>
  107. </el-table>
  108. <div class="btn-dialog-cost">
  109. <el-button @click="confirmationTP" size="small" type="primary">采用机票同事的行程数据</el-button>
  110. &nbsp;&nbsp;&nbsp;
  111. <el-button @click="dialogTableVisible = false" size="small">采用现有的自定义数据</el-button>
  112. </div>
  113. </el-dialog>
  114. <el-dialog width="80%" title="酒店询价数据" :visible.sync="dialogTableVisibleXJ">
  115. <el-table :data="tableDatas" border>
  116. <el-table-column type="index" label="选中" width="55">
  117. <template slot-scope="scope">
  118. <el-checkbox :value='checkboxsXJ.includes(scope.row.id)'
  119. @change='CheckboxChangeXJ(scope.row.id)'></el-checkbox>
  120. </template>
  121. </el-table-column>
  122. <el-table-column prop="city" label="城市" width="120">
  123. </el-table-column>
  124. <el-table-column prop="name" label="酒店名称">
  125. </el-table-column>
  126. <el-table-column prop="checkInDate" label="入住日期" width="100">
  127. <template slot-scope="scope">
  128. {{ scope.row.checkInDate | filter_time }}
  129. </template>
  130. </el-table-column>
  131. <el-table-column prop="checkOutDate" label="退房日期" width="100">
  132. <template slot-scope="scope">
  133. {{ scope.row.checkOutDate | filter_time }}
  134. </template>
  135. </el-table-column>
  136. <el-table-column prop="selectDt" label="查询时间" width="150">
  137. </el-table-column>
  138. <el-table-column prop="createTime" label="SGR(价格/币种/数量)" width="120">
  139. <template slot-scope="scope">
  140. {{ scope.row.singlePrice | townum }}&nbsp;/&nbsp;{{ scope.row.singleCurrency
  141. }}&nbsp;/&nbsp;{{
  142. scope.row.singleQuantity }}
  143. </template>
  144. </el-table-column>
  145. <el-table-column prop="createTime" label="TBR(价格/币种/数量)" width="120">
  146. <template slot-scope="scope">
  147. {{ scope.row.doublePrice | townum }}&nbsp;/&nbsp;{{ scope.row.doubleCurrency
  148. }}&nbsp;/&nbsp;{{
  149. scope.row.doubleQuantity }}
  150. </template>
  151. </el-table-column>
  152. <el-table-column prop="createTime" label="JS/ES(价格/币种/数量)" width="120">
  153. <template slot-scope="scope">
  154. {{ scope.row.suitePrice | townum }}&nbsp;/&nbsp;{{ scope.row.suiteCurrency }}&nbsp;/&nbsp;{{
  155. scope.row.suiteQuantity }}
  156. </template>
  157. </el-table-column>
  158. <el-table-column prop="createTime" label="SUITE(价格/币种/数量)" width="120">
  159. <template slot-scope="scope">
  160. {{ scope.row.otherPrice | townum }}&nbsp;/&nbsp;{{ scope.row.otherCurrency }}&nbsp;/&nbsp;{{
  161. scope.row.otherQuantity }}
  162. </template>
  163. </el-table-column>
  164. <el-table-column prop="createUserName" label="查询人" width="80">
  165. </el-table-column>
  166. <!-- <el-table-column prop="remark" label="备注">
  167. </el-table-column> -->
  168. <!-- <el-table-column prop="name" label="操 作" width="140">
  169. <template slot-scope="scope">
  170. @click="PostHotelReservationsDetails(scope.$index, scope.row)"
  171. <el-button @click="PostHotelInquiryInfo(scope.row)" type="primary" size="mini" icon="el-icon-edit"></el-button>
  172. <el-button @click="PostHotelInquiryDel(scope.row)" type="danger" size="mini" icon="el-icon-delete"></el-button>
  173. </template>
  174. </el-table-column> -->
  175. </el-table>
  176. <div class="btn-dialog-cost">
  177. <el-button size="small" type="primary" @click='adoptHotelData'>采用酒店同事的询价数据</el-button>
  178. &nbsp;&nbsp;&nbsp;
  179. <el-button @click="dialogTableVisibleXJ = false" size="small">采用现有的自定义数据</el-button>
  180. </div>
  181. </el-dialog>
  182. <div class="cost-haed">
  183. <div class="ser-btn">
  184. <div class="ser-btn-li Cost_topFlex" style="display: flex;">
  185. <el-select @focus="GroupSelectFocus" remote :loading="selectLoading"
  186. :remote-method="remoteMethod" size="small" v-model="diid" filterable placeholder="请选择"
  187. @change="groupChange">
  188. <el-option v-for="item in options" :key="item.id" :label="item.groupName" :value="item.id">
  189. <span v-if="item.isTrue == 'True'" style="color:#409EFF">{{ item.groupName }}</span>
  190. <span v-else style="color:gray">{{ item.groupName }}</span>
  191. </el-option>
  192. </el-select>
  193. <div
  194. style="line-height: 28px;font-size: 14px;width: 90px;color: #555;text-align: right;padding-right: 12px;">
  195. 分段类型:
  196. </div>
  197. <el-select style="width:200px" size="small" v-model="costTypevalue" placeholder="请选择"
  198. @change="costTypeSelect">
  199. <el-option v-for="item in costType" :key="item.value" :label="item.label"
  200. :value="item.value">
  201. </el-option>
  202. </el-select>
  203. </div>
  204. <div class="ser-btn-li">
  205. <el-button size="small" type="primary"
  206. @click="dialogCopyVisible = true; dialogCopySelect = '';">成本复制</el-button>
  207. <el-button size="small" type="primary"
  208. @click="() => { groupcostXSVisible = true; QueryGroupCostXS(); }">系数推测</el-button>
  209. <el-button size="small" :type="blackCodeIsTrue ? 'primary' : 'danger'"
  210. @click="importBlackCode">导入机票行程数据</el-button>
  211. <el-button size="small" :type="hotelIsTrue ? 'primary' : 'danger'"
  212. @click="PostHotelInquiryPageItem">查看酒店询价价格</el-button>
  213. <!-- <el-button size="small" type="primary">导入收款账单</el-button> -->
  214. <el-button size="small" type="primary" @click="GetPriceCheckWord">生成报价单</el-button>
  215. <el-button size="small" type="primary" @click="GetClientWord">导出客户报价</el-button>
  216. <el-button size="small" type="primary" @click="GetGroupCostExcel">导出成本</el-button>
  217. <!-- <el-button type="primary">一键复制</el-button> -->
  218. <el-button v-if="isShare == 1" size="small" type="info" @click="GroupIsShare">取消成本通知</el-button>
  219. <el-button v-if="isShare == 0" size="small" type="primary"
  220. @click="GroupIsShare">成本通知</el-button>
  221. <el-button size="small" type="primary" @click="save">保存设置</el-button>
  222. </div>
  223. </div>
  224. <div class="cost-input">
  225. <el-form :inline="true" class="demo-form-inline" :model='AGroupCostParameter' ref="inputs"
  226. :rules="rules">
  227. <el-form-item label="税率:" prop="tax">
  228. <el-input size="small" v-model="AGroupCostParameter.tax" placeholder="税率"></el-input>
  229. </el-form-item>
  230. <el-form-item label="货币:">
  231. <el-select size="small" v-model="AGroupCostParameter.currency" @change="changeCurrency"
  232. placeholder="请选择">
  233. <el-option v-for="item in currencyOption" :key="item.currencyId"
  234. :label="item.currencyCode" :value="item.currencyId">
  235. </el-option>
  236. </el-select>
  237. </el-form-item>
  238. <el-form-item label="汇率:" prop="rate">
  239. <el-input size="small" v-model="AGroupCostParameter.rate" placeholder="汇率"></el-input>
  240. </el-form-item>
  241. </el-form>
  242. <div v-show="costTypevalue == 'A'">
  243. <el-form :inline="true" class="demo-form-inline" :rules="HotelRules" ref="DHotel"
  244. :model="costTypeHotelNumbers.filter(item => item.type == 'Default')[0]">
  245. <el-form-item label="TBR:" prop="tbr">
  246. <el-input size="small" @blur='inSelectChangeCheck'
  247. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'Default')[0].tbr"
  248. placeholder="TBR"><i slot="suffix"
  249. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  250. </el-form-item>
  251. <el-form-item label="SGR:" prop="sgr">
  252. <el-input size="small" @blur='inSelectChangeCheck'
  253. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'Default')[0].sgr"
  254. placeholder="SGR"><i slot="suffix"
  255. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  256. </el-form-item>
  257. <el-form-item label="JS/ES:" prop="jses">
  258. <el-input size="small" @blur='inSelectChangeCheck'
  259. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'Default')[0].jses"
  260. placeholder="JS/ES"><i slot="suffix"
  261. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  262. </el-form-item>
  263. <el-form-item label="SUITE:" prop="suite">
  264. <el-input size="small" @blur='inSelectChangeCheck'
  265. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'Default')[0].suite"
  266. placeholder="SUITE"><i slot="suffix"
  267. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  268. </el-form-item>
  269. </el-form>
  270. </div>
  271. <div v-show="costTypevalue == 'B'" class="CostBShow">
  272. <el-row>
  273. <el-form ref="Asection" :inline="true" class="demo-form-inline" :rules="CostTimeRules"
  274. :model="AGroupCostParameter">
  275. <el-col :span="5">
  276. <div> <el-form-item label="第一段开始:" prop="costTypeStartTime">
  277. <el-date-picker size="small" v-model="AGroupCostParameter.costTypeStartTime"
  278. type="date" placeholder="第一段开始" format="yyyy-MM-dd"
  279. value-format="yyyy-MM-dd">
  280. </el-date-picker>
  281. </el-form-item>
  282. </div>
  283. </el-col>
  284. <el-col :span="4">
  285. <div> <el-form-item label="结束:" prop="costTypeendTime"><el-date-picker size="small"
  286. v-model="AGroupCostParameter.costTypeendTime" type="date"
  287. placeholder="结束" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
  288. </el-date-picker>
  289. </el-form-item>
  290. </div>
  291. </el-col>
  292. <el-col :span="3">
  293. <div>
  294. <el-form-item label="人数:" prop="costTypenumber"><el-input size="small"
  295. placeholder="人数" v-model.number="AGroupCostParameter.costTypenumber"
  296. clearable>
  297. </el-input>
  298. </el-form-item>
  299. </div>
  300. </el-col>
  301. </el-form>
  302. <el-form ref="AHotel" :inline="true" class="demo-form-inline" :rules="HotelRules"
  303. :model="costTypeHotelNumbers.filter(item => item.type == 'A')[0]">
  304. <el-col :span="3">
  305. <div><el-form-item label="TBR:" prop="tbr">
  306. <el-input size="small" @blur='inSelectChangeCheck'
  307. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'A')[0].tbr"
  308. placeholder="TBR"><i slot="suffix"
  309. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  310. </el-form-item></div>
  311. </el-col>
  312. <el-col :span="3">
  313. <div> <el-form-item label="SGR:" prop="sgr">
  314. <el-input size="small" @blur='inSelectChangeCheck'
  315. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'A')[0].sgr"
  316. placeholder="SGR"><i slot="suffix"
  317. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  318. </el-form-item></div>
  319. </el-col>
  320. <el-col :span="3">
  321. <div><el-form-item label="JS/ES:" prop="jses">
  322. <el-input size="small" @blur='inSelectChangeCheck'
  323. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'A')[0].jses"
  324. placeholder="JS/ES"><i slot="suffix"
  325. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  326. </el-form-item></div>
  327. </el-col>
  328. <el-col :span="3">
  329. <div><el-form-item label="SUITE:" prop="suite">
  330. <el-input size="small" @blur='inSelectChangeCheck'
  331. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'A')[0].suite"
  332. placeholder="SUITE"><i slot="suffix"
  333. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  334. </el-form-item></div>
  335. </el-col>
  336. </el-form>
  337. </el-row>
  338. <el-row>
  339. <el-form ref="Bsection" :inline="true" class="demo-form-inline" :rules="CostTimeRules"
  340. :model="BGroupCostParameter">
  341. <el-col :span="5">
  342. <div> <el-form-item label="第二段开始:" prop="costTypeStartTime">
  343. <el-date-picker size="small" v-model="BGroupCostParameter.costTypeStartTime"
  344. type="date" placeholder="第二段开始" format="yyyy-MM-dd"
  345. value-format="yyyy-MM-dd">
  346. </el-date-picker>
  347. </el-form-item>
  348. </div>
  349. </el-col>
  350. <el-col :span="4">
  351. <div> <el-form-item label="结束:" prop="costTypeendTime"><el-date-picker size="small"
  352. v-model="BGroupCostParameter.costTypeendTime" type="date"
  353. placeholder="结束" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
  354. </el-date-picker>
  355. </el-form-item>
  356. </div>
  357. </el-col>
  358. <el-col :span="3">
  359. <div>
  360. <el-form-item label="人数:" prop="costTypenumber"><el-input size="small"
  361. placeholder="人数" v-model.number="BGroupCostParameter.costTypenumber"
  362. clearable>
  363. </el-input>
  364. </el-form-item>
  365. </div>
  366. </el-col>
  367. </el-form>
  368. <el-form ref="BHotel" :inline="true" class="demo-form-inline" :rules="HotelRules"
  369. :model="costTypeHotelNumbers.filter(item => item.type == 'B')[0]">
  370. <el-col :span="3">
  371. <div>
  372. <el-form-item label="TBR:" prop="tbr">
  373. <el-input size="small" @blur='inSelectChangeCheck'
  374. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'B')[0].tbr"
  375. placeholder="TBR"><i slot="suffix"
  376. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  377. </el-form-item>
  378. </div>
  379. </el-col>
  380. <el-col :span="3">
  381. <div> <el-form-item label="SGR:" prop="sgr">
  382. <el-input size="small" @blur='inSelectChangeCheck'
  383. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'B')[0].sgr"
  384. placeholder="SGR"><i slot="suffix"
  385. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  386. </el-form-item></div>
  387. </el-col>
  388. <el-col :span="3">
  389. <div><el-form-item label="JS/ES:" prop="jses">
  390. <el-input size="small" @blur='inSelectChangeCheck'
  391. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'B')[0].jses"
  392. placeholder="JS/ES"><i slot="suffix"
  393. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  394. </el-form-item></div>
  395. </el-col>
  396. <el-col :span="3">
  397. <div><el-form-item label="SUITE:" prop="suite">
  398. <el-input size="small" @blur='inSelectChangeCheck'
  399. v-model.number="costTypeHotelNumbers.filter(item => item.type == 'B')[0].suite"
  400. placeholder="SUITE"><i slot="suffix"
  401. style="font-style:normal;margin-right: 10px;">间</i></el-input>
  402. </el-form-item></div>
  403. </el-col>
  404. </el-form>
  405. </el-row>
  406. </div>
  407. </div>
  408. <div class="cost-info">
  409. <div class="cost-info-li">
  410. <label>团 号:</label>
  411. <span>{{ grouptitleinfo.tourCode }}</span>
  412. </div>
  413. <div class="cost-info-li">
  414. <label>客 户:</label>
  415. <span>{{ grouptitleinfo.clientName }}</span>
  416. </div>
  417. <div class="cost-info-li">
  418. <label>出访国家:</label>
  419. <span>{{ grouptitleinfo.visitCountry }}</span>
  420. </div>
  421. <div class="cost-info-li">
  422. <label>起止日期:</label>
  423. <span>{{ grouptitleinfo.visitStartDate }} -
  424. {{ grouptitleinfo.visitEndDate
  425. }}</span>
  426. </div>
  427. <div class="cost-info-li">
  428. <label>天数/人数:</label>
  429. <span>{{ grouptitleinfo.visitDays }}天/{{ grouptitleinfo.visitPNumber }}人</span>
  430. </div>
  431. <div @click='showEditGroupInfoDialog = true; getGroupInfo();'
  432. style=" font-size: 15px;color: rgb(70, 161, 255);margin-left: -15px;cursor: pointer;">
  433. <i class="el-icon-edit"></i>
  434. 编辑
  435. </div>
  436. <div class="cost-info-li">
  437. <!-- 客户名单 -->
  438. <el-popover class="clientinfo" placement="bottom" width="1052" trigger="hover">
  439. <el-table :cell-style="{ 'text-align': 'center' }"
  440. :header-cell-style="{ 'text-align': 'center' }" max-height="600" border
  441. :data="rollcallarr">
  442. <el-table-column width="100" property="date" label="姓名" align="center">
  443. <template slot-scope="scope">
  444. {{ scope.row.lastName }}{{ scope.row.firstName }}
  445. </template>
  446. </el-table-column>
  447. <el-table-column width="200" property="lastName" label="拼音" align="center">
  448. <template slot-scope="scope">
  449. {{ pinyingxing(scope.row.lastName) }}/{{ pinyingxing(scope.row.firstName) }}
  450. </template>
  451. </el-table-column>
  452. <el-table-column width="50" property="sex" label="性别" align="center">
  453. <template slot-scope="scope">
  454. {{ scope.row.sex == 0 ? '男' : '女' }}
  455. </template>
  456. </el-table-column>
  457. <el-table-column width="200" property="companyFullName" label="单位" align="center">
  458. <template slot-scope="scope">
  459. {{ scope.row.companyFullName }}
  460. </template>
  461. </el-table-column>
  462. <el-table-column width="200" property="job" label="职位" align="center">
  463. <template slot-scope="scope">
  464. {{ scope.row.job }}
  465. </template>
  466. </el-table-column>
  467. <el-table-column width="200" property="idCardNo" label="身份证号码" align="center">
  468. <template slot-scope="scope">
  469. {{ scope.row.idCardNo }}
  470. </template>
  471. </el-table-column>
  472. <el-table-column width="100" property="shippingSpaceType" label="舱位类型" align="center">
  473. <template slot-scope="scope">
  474. {{ scope.row.shippingSpaceType }}
  475. </template>
  476. </el-table-column>
  477. <!-- <el-table-column width="110" property="birthDay" label="生日">
  478. <template slot-scope="scope">
  479. {{ fgarr(scope.row.birthDay) }}
  480. </template>
  481. </el-table-column> -->
  482. </el-table>
  483. <span slot="reference"
  484. style="cursor: pointer;margin-left: 20px;color:red;font-size:14px">"移上查看客户名单"</span>
  485. </el-popover>
  486. <!-- 各部门操作人 -->
  487. <el-popover class="clientinfo" placement="bottom" width="300" trigger="hover">
  488. <div v-for="(item, index) in groupModuleOperators" :key="index">
  489. <div>
  490. <span>{{ item.cTableName }}:</span>
  491. <!-- <span v-for="(itemsChi, indexChi) in item.operationUsers" :key="indexChi">
  492. {{ itemsChi.userName }}
  493. </span> -->
  494. <span v-if="item.operationUsers.length == 0" style="color: red;">
  495. 暂未指定
  496. </span>
  497. <span v-else style="color: green;">
  498. {{item.operationUsers.map(user => user.userName).join('、')}}
  499. </span>
  500. </div>
  501. <div v-if="index != groupModuleOperators.length - 1">
  502. <br />
  503. </div>
  504. </div>
  505. <span slot="reference"
  506. style="cursor: pointer;margin-left: 20px;color:red;font-size:14px">"移上查看各版块操作人"</span>
  507. </el-popover>
  508. </div>
  509. </div>
  510. </div>
  511. <div style="color: #606266;font-size: 15px;font-weight: 600;">请选择要显示的项:</div>
  512. <el-checkbox-group class="form-ss"
  513. v-model="CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues" @change="TopChange">
  514. <el-checkbox v-for="(item, index) in checkOptions" :key="index" :title="item.tips" :label="item.label"
  515. @change="(val) => { topcheckboxChange(val, item.label) }"></el-checkbox>
  516. </el-checkbox-group>
  517. <el-table :stripe='true' class="tables" style="font-size:10px" :summary-method="getSummaries" show-summary
  518. show-overflow-tooltip :data="tableData" :border="true" size="small" row-class-name="row"
  519. cell-class-name="column" :highlight-current-row="true" :fit="true">
  520. <!-- :height="centerheight" -->
  521. <template v-for="(item, index) in tableLabel">
  522. <el-table-column :key="index" :prop="item.prop"
  523. :width="item.width != '100' ? columnWidth : item.width" :label="item.label"
  524. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.includes(item.label)">
  525. <!-- eslint-disable-next-line -->
  526. <template slot="header" slot-scope="scope">
  527. <el-tooltip effect="dark" :content="item.describe" placement="top">
  528. <div>
  529. <span class="rapAddress">{{ item.label }}</span>
  530. <span v-show="item.describe.indexOf('个人成本') != -1" style=" color:red">*</span>
  531. </div>
  532. </el-tooltip>
  533. </template>
  534. <template slot-scope="scope">
  535. <div v-if="item.prop === 'sales'">
  536. <el-input size="mini" :ref="'el-input-' + index" v-model="scope.row[item.prop]"
  537. show-word-limit />
  538. </div>
  539. <div v-else-if="item.prop === 'day'">
  540. <el-input size="mini" :ref="'el-input-' + index" v-model="scope.row[item.prop]"
  541. type="number" controls-position="right" min="0"
  542. @change="NumberSetTime(scope.row[item.prop], scope.$index)">
  543. <div style="display: flex;flex-direction: column;height: 28px;justify-content: center;margin-right: -5px;font-size: 14px;"
  544. slot="suffix" class="number-input-icon">
  545. <i class="el-icon-caret-top btntop" @click="increase(scope.$index)"></i>
  546. <i class="el-icon-caret-bottom btnbottom" @click="decrease(scope.$index)"></i>
  547. </div>
  548. </el-input>
  549. </div>
  550. <div v-else-if="item.prop === 'date'">
  551. <span :title="scope.row[item.prop]">
  552. <!-- <el-input placeholder="请输入日期"
  553. v-model="scope.row[item.prop]"
  554. @change="dateChange(scope.row[item.prop], scope.$index)">
  555. </el-input> -->
  556. <el-date-picker @change="TimeUpdateAnewOrderby(scope.$index)" :clearable="false"
  557. size="mini" v-model="scope.row[item.prop]" type="date" value-format="yyyy-MM-dd"
  558. placeholder="选择日期">
  559. </el-date-picker>
  560. </span>
  561. <div style="position: absolute;left: 36%;">
  562. {{ GetWeek(scope.row[item.prop]) }}
  563. </div>
  564. </div>
  565. <div v-else-if="item.prop === 'sale'">
  566. <el-row class="figures-btn">
  567. <el-button @click="handleEdit(scope.$index, scope.row, 1)" size="mini"
  568. type="primary">司兼导</el-button>
  569. <el-button @click="handleEdit(scope.$index, scope.row, 2)" size="mini"
  570. type="primary">导
  571. 游</el-button>
  572. <el-button @click="handleEdit(scope.$index, scope.row, 3)" size="mini"
  573. type="primary">车数据</el-button>
  574. <el-button @click="handleEdit(scope.$index, scope.row, 4)" size="mini"
  575. type="primary">景
  576. 点</el-button>
  577. <el-button style='display:flex' class="history-btn"
  578. @click="GetHistoryCarData(scope.$index)" size="mini" type="primary">历史数据
  579. </el-button>
  580. </el-row>
  581. </div>
  582. <div v-else-if="item.width == 100">
  583. <div v-if="item.label == 'ITIN'">
  584. <el-popover placement="top" width="120" trigger="hover">
  585. <div>
  586. <div style="color:red;font-size:16px">
  587. 行程描述格式:
  588. </div>
  589. <div>
  590. 1.三字码信息:<br />
  591. <span style="color: green;">例:</span> PEK/WAW
  592. </div>
  593. <div>
  594. 2.航班号:<br />
  595. <span style="color: green;">例:</span> CA737
  596. </div>
  597. <div>
  598. 3.航班起止时间:<br />
  599. <span style="color: green;">例:</span> 0230/0640
  600. </div>
  601. </div>
  602. <div slot="reference">
  603. <el-input type="textarea"
  604. @input="capslk(scope.row[item.prop], scope.$index)" :rows="6"
  605. placeholder="请输入内容" v-model="scope.row[item.prop]"></el-input>
  606. </div>
  607. </el-popover>
  608. </div>
  609. <div class="accon-box" v-else-if="item.label == 'ACCO N'">
  610. <el-input @focus="acconinput(scope.row[item.prop], scope.$index)"
  611. @blur="acconblur(scope.$index)"
  612. @input="acconinput(scope.row[item.prop], scope.$index)"
  613. style="position: relative;" type="textarea" :rows="6" placeholder="请输入内容"
  614. v-model="scope.row[item.prop]"></el-input>
  615. <div class="accon-ul">
  616. <div @click="acconclick(item, scope.$index)" v-for="(item, index) in acconarrs"
  617. :key="index" class="accon-li">{{ item }}</div>
  618. </div>
  619. </div>
  620. <div v-else>
  621. <el-input type="textarea" :rows="6" placeholder="请输入内容"
  622. v-model="scope.row[item.prop]"></el-input>
  623. </div>
  624. </div>
  625. <div v-else-if="item.prop == 'b' || item.prop == 'l' || item.prop == 'd'">
  626. <el-popover placement="top-start" title="餐食报批费用:" trigger="hover">
  627. <div>
  628. <span style="color:red;">*具体价格以当前货币汇率为准!</span><br />
  629. <div v-if="ShowMeals.length == 0">
  630. <br />
  631. <span style="color:red">暂无数据!</span>
  632. </div>
  633. <div v-else>
  634. <div v-for="(item, index) in ShowMeals" :key="index">
  635. {{ item.countryOrCity }} &nbsp;&nbsp; <span style="color:green;">{{
  636. item.price }}</span>元/人
  637. <span v-if="item.currPrice">(<span style="color:green;">{{
  638. item.currPrice }}</span> </span>
  639. <span v-if="item.currStr">{{
  640. item.currStr }})</span>
  641. <br>
  642. </div>
  643. </div>
  644. <div>
  645. <div>
  646. <div v-if="ShowOther.length == 0">
  647. </div>
  648. <div v-else>
  649. <div style="margin-top: 10px;"></div>
  650. <div class="el-popover__title">三公经费-其它:</div>
  651. <div v-for="(item, index) in ShowOther" :key="index">
  652. {{ item.setDataType }} &nbsp;&nbsp; <span
  653. style="color:green;">{{
  654. item.subTotal }}</span>元/人
  655. <span v-if="item.cost">(<span style="color:green;">{{
  656. item.cost }}</span> </span>
  657. <span v-if="item.currencyStr">{{
  658. item.currencyStr }})</span>
  659. <br>
  660. </div>
  661. </div>
  662. </div>
  663. </div>
  664. </div>
  665. <el-input size="mini" slot="reference" v-model="scope.row[item.prop]">
  666. </el-input>
  667. </el-popover>
  668. </div>
  669. <div
  670. v-else-if="item.prop == 'suite' || item.prop == 'jS_ES' || item.prop == 'sgr' || item.prop == 'tbr'">
  671. <el-popover placement="top-start" title="酒店报批费用:" trigger="hover">
  672. <div>
  673. <span style="color:red;">*具体价格以当前货币汇率为准!</span><br />
  674. <div v-if="ShowHotel.length == 0">
  675. <br />
  676. <span style="color:red">暂无数据!</span>
  677. </div>
  678. <div v-else>
  679. <div v-for="(item, index) in ShowHotel" :key="index">
  680. {{ item.countryOrCity }} &nbsp;&nbsp; <span style="color:green;">{{
  681. item.price }}</span>元/人
  682. <span v-if="item.currPrice">(<span style="color:green;">{{
  683. item.currPrice }}</span> </span>
  684. <span v-if="item.currStr">{{
  685. item.currStr }})</span>
  686. <br>
  687. </div>
  688. </div>
  689. <div>
  690. <div>
  691. <div v-if="ShowOther.length == 0">
  692. </div>
  693. <div v-else>
  694. <div style="margin-top: 10px;"></div>
  695. <div class="el-popover__title">三公经费-其它:</div>
  696. <div v-for="(item, index) in ShowOther" :key="index">
  697. {{ item.setDataType }} &nbsp;&nbsp; <span
  698. style="color:green;">{{
  699. item.subTotal }}</span>元/人
  700. <span v-if="item.cost">(<span style="color:green;">{{
  701. item.cost }}</span> </span>
  702. <span v-if="item.currencyStr">{{
  703. item.currencyStr }})</span>
  704. <br>
  705. </div>
  706. </div>
  707. </div>
  708. </div>
  709. </div>
  710. <el-input size="mini" slot="reference" v-model="scope.row[item.prop]">
  711. </el-input>
  712. </el-popover>
  713. </div>
  714. <span v-else :title="scope.row[item.prop]">
  715. <el-input size="mini" v-model="scope.row[item.prop]">
  716. </el-input></span>
  717. </template>
  718. </el-table-column>
  719. </template>
  720. <el-table-column class="czbtn" label="操作">
  721. <!-- eslint-disable-next-line -->
  722. <template slot-scope="scope">
  723. <el-button class="czbtn" size="mini" @click="insertRow(scope.$index, scope.row, 'UP')"
  724. type="primary">
  725. 插入行↑
  726. </el-button>
  727. <br />
  728. <el-button class="czbtn" style="margin: 10px 0;" size="mini"
  729. @click="handleDelete(scope.$index, scope.row, tableData)" type="danger">
  730. 删除<i class="el-icon-delete"></i>
  731. </el-button>
  732. <br />
  733. <el-button class="czbtn" size="mini" @click="insertRow(scope.$index, scope.row, 'DOWN')"
  734. type="primary">插入行↓
  735. </el-button>
  736. </template>
  737. </el-table-column>
  738. </el-table>
  739. <div style="text-align: center;padding: 10px 0;"><el-button @click="addStrip" type="primary">添 加 <i
  740. class="el-icon-plus"></i></el-button></div>
  741. <div>
  742. <el-table :data="[{ a: 1 }]" border style="width: 100%;font-size:12px">
  743. <el-table-column v-for="item in columnTotalData" :key="item.label"
  744. :width="item.width != '100' ? columnWidth : item.width"
  745. :label="item.tips ? item.tips + getCurr : ''"
  746. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.includes(item.label)">
  747. {{ item.totalPrice }}
  748. </el-table-column>
  749. <el-table-column class="czbtn">
  750. </el-table-column>
  751. </el-table>
  752. </div>
  753. <div>
  754. <el-table :data="[{ a: 1 }]" border style="width: 100%;font-size:12px">
  755. <el-table-column v-for="item in columnTotalData" :key="item.label"
  756. :width="item.width != '100' ? columnWidth : item.width"
  757. :label="item.singleTips ? item.singleTips + getCurr : ''"
  758. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.includes(item.label)">
  759. {{ item.singlePrice }}
  760. <!-- <template slot="header">
  761. <div>{{item.singleTips ? item.singleTips:''}}</div>
  762. <div v-bind="getCurr">{{getCurr().toString}}</div>
  763. </template> -->
  764. </el-table-column>
  765. <el-table-column class="czbtn">
  766. </el-table-column>
  767. </el-table>
  768. </div>
  769. <div class="sheet-box">
  770. <div class="sheet-li">
  771. <div style="color: #606266;font-size: 15px;font-weight: 600;">请选择要显示的项:</div>
  772. <el-checkbox-group v-model="CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues">
  773. <el-checkbox v-for="(item, index) in sheetoneOptions" :key="index" :label="item"></el-checkbox>
  774. </el-checkbox-group>
  775. <div style="display: flex;font-size: 12px">
  776. <div :style="{ 'width': costTypevalue == 'A' ? '100%' : '49%' }">
  777. <div :style="{ 'width': costTypevalue == 'A' ? '50%' : '100%' }"
  778. style="margin-bottom:0px;margin-top: 20px;"
  779. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues.includes('签证') && visaCountryInfoArr.length > 0">
  780. <el-table :data="visaCountryInfoArr" border style="width: 100%">
  781. <el-table-column prop="visaCountry" label="签证国家">
  782. </el-table-column>
  783. <el-table-column prop="visaPrice" label="签证费用(元)">
  784. </el-table-column>
  785. <el-table-column prop="grandBusinessAgencyFee" label="大公务代办费(元)">
  786. </el-table-column>
  787. <el-table-column prop="pettyBusinessAgencyFee" label="小公务代办费(元)">
  788. </el-table-column>
  789. <el-table-column prop="isVisaExemption" label="是否免签">
  790. </el-table-column>
  791. <el-table-column prop="isVisaOnArrival" label="是否落地签">
  792. </el-table-column>
  793. <el-table-column prop="isElectronicSignature" label="是否电子签">
  794. </el-table-column>
  795. <el-table-column prop="visaTime" label="一般签证时间(天)">
  796. </el-table-column>
  797. </el-table>
  798. </div>
  799. <div v-for="(sheetitem, index) in sheetDatal" :key="index">
  800. <div class="biaoge" :class="{ 'biaogeKz': costTypevalue == 'B' }"
  801. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues.includes(sheetitem.label)">
  802. <el-table :data="[{ a: 1 }]" border style="width: 100%">
  803. <el-table-column v-for="(itemsheetone, index) in sheetitem.childList"
  804. :key="index" :prop="itemsheetone.prop" :label="itemsheetone.childLabel">
  805. <!-- eslint-disable-next-line -->
  806. <template slot-scope="scope">
  807. <div v-if="itemsheetone.prop.indexOf(sheetitem.EnLabel) != -1">
  808. <div v-if="itemsheetone.isBind">
  809. <span>{{ AGroupCostParameter[itemsheetone.prop] }}</span>
  810. </div>
  811. <div v-else>
  812. <!-- <el-input v-model="AGroupCostParameter[itemsheetone.prop]"
  813. show-word-limit /> -->
  814. <!-- <el-input-number
  815. v-model="AGroupCostParameter[itemsheetone.prop]"
  816. @change="handleChange" :min="0" size="small"
  817. :controls="false"></el-input-number> -->
  818. <div v-if="itemsheetone.tips">
  819. <el-popover placement="top-start"
  820. :title="itemsheetone.title" width="200" trigger="hover">
  821. <!-- :content="itemsheetone.tips" -->
  822. <div v-if="itemsheetone.tips != '暂无!'">
  823. <span style="color:green">{{ itemsheetone.tips
  824. }}</span>
  825. 元/人
  826. </div>
  827. <div v-else>
  828. <span style="color:red">{{ itemsheetone.tips
  829. }}</span>
  830. </div>
  831. <el-input-number slot="reference"
  832. v-model="AGroupCostParameter[itemsheetone.prop]"
  833. @change="handleChange" :min="0" size="small"
  834. :controls="false"></el-input-number>
  835. </el-popover>
  836. </div>
  837. <div
  838. v-else-if="(typeof itemsheetone.title).toString() != 'undefined'">
  839. <el-popover placement="top-start"
  840. :title="itemsheetone.title" width="200" trigger="hover">
  841. <span style="color:red">暂无数据!</span>
  842. <el-input-number slot="reference"
  843. v-model="AGroupCostParameter[itemsheetone.prop]"
  844. @change="handleChange" :min="0" size="small"
  845. :controls="false"></el-input-number>
  846. </el-popover>
  847. </div>
  848. <div v-else>
  849. <el-input-number
  850. v-model="AGroupCostParameter[itemsheetone.prop]"
  851. @change="handleChange" :min="0" size="small"
  852. :controls="false"></el-input-number>
  853. </div>
  854. </div>
  855. </div>
  856. <div v-else-if="itemsheetone.prop === 'ZCB'">
  857. {{ calculateZCB(sheetitem.EnLabel) }}
  858. </div>
  859. <div v-else-if="itemsheetone.prop === 'DRBJ'">
  860. {{ calculateDRBJ(sheetitem.EnLabel) }}
  861. </div>
  862. <div v-else-if="itemsheetone.prop === 'ZBJ'">
  863. {{ calculateZBJ(sheetitem.EnLabel) }}
  864. </div>
  865. <div v-else-if="itemsheetone.prop === 'DRLR'">
  866. {{ calculateDRLR(sheetitem.EnLabel) }}
  867. </div>
  868. <div v-else-if="itemsheetone.prop === 'ZLR'">
  869. {{ calculateZLR(sheetitem.EnLabel) }}
  870. </div>
  871. <!-- 绑定对象属性的值 -->
  872. </template>
  873. </el-table-column>
  874. </el-table>
  875. </div>
  876. </div>
  877. </div>
  878. <div style="width: 2%;" v-show="costTypevalue != 'A'"></div>
  879. <div style="width: 49%;" v-show="costTypevalue != 'A'">
  880. <div class="" style="width: 800px;margin-bottom:0px;margin-top: 20px;visibility: hidden;"
  881. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues.includes('签证') && visaCountryInfoArr.length > 0">
  882. <el-table :data="visaCountryInfoArr" border style="width: 100%">
  883. <el-table-column prop="visaCountry" label="签证国家">
  884. </el-table-column>
  885. <el-table-column prop="visaPrice" label="签证费用(元)">
  886. </el-table-column>
  887. <el-table-column prop="grandBusinessAgencyFee" label="大公务代办费(元)">
  888. </el-table-column>
  889. <el-table-column prop="pettyBusinessAgencyFee" label="小公务代办费(元)">
  890. </el-table-column>
  891. <el-table-column prop="isVisaExemption" label="是否免签">
  892. </el-table-column>
  893. <el-table-column prop="isVisaOnArrival" label="是否落地签">
  894. </el-table-column>
  895. <el-table-column prop="isElectronicSignature" label="是否电子签">
  896. </el-table-column>
  897. <el-table-column prop="visaTime" label="一般签证时间(天)">
  898. </el-table-column>
  899. </el-table>
  900. </div>
  901. <div v-for="(sheetitem, index) in sheetDatal" :key="index">
  902. <div class="biaogeB"
  903. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues.includes(sheetitem.label)">
  904. <el-table :data="[{ a: 1 }]" border style="width: 100%"
  905. :class="{ 'hiddenElement': (sheetitem.EnLabel == 'visa' || sheetitem.EnLabel == 'bx') ? true : false }">
  906. <el-table-column v-for="(itemsheetone, index) in sheetitem.childList"
  907. :key="index" :prop="itemsheetone.prop" :label="itemsheetone.childLabel">
  908. <!-- eslint-disable-next-line -->
  909. <template slot-scope="scope">
  910. <div v-if="itemsheetone.prop.indexOf(sheetitem.EnLabel) != -1">
  911. <div v-if="itemsheetone.isBind">
  912. <span>{{ BGroupCostParameter[itemsheetone.prop] }}</span>
  913. </div>
  914. <div v-else>
  915. <!-- <el-input v-model="BGroupCostParameter[itemsheetone.prop]"
  916. show-word-limit /> -->
  917. <el-input-number
  918. v-model="BGroupCostParameter[itemsheetone.prop]"
  919. @change="handleChange" :min="0" size="small"
  920. :controls="false"></el-input-number>
  921. </div>
  922. </div>
  923. <div v-else-if="itemsheetone.prop === 'ZCB'">
  924. {{ BcalculateZCB(sheetitem.EnLabel) }}
  925. </div>
  926. <div v-else-if="itemsheetone.prop === 'DRBJ'">
  927. {{ BcalculateDRBJ(sheetitem.EnLabel) }}
  928. </div>
  929. <div v-else-if="itemsheetone.prop === 'ZBJ'">
  930. {{ BcalculateZBJ(sheetitem.EnLabel) }}
  931. </div>
  932. <div v-else-if="itemsheetone.prop === 'DRLR'">
  933. {{ BcalculateDRLR(sheetitem.EnLabel) }}
  934. </div>
  935. <div v-else-if="itemsheetone.prop === 'ZLR'">
  936. {{ BcalculateZLR(sheetitem.EnLabel) }}
  937. </div>
  938. <!-- 绑定对象属性的值 -->
  939. </template>
  940. </el-table-column>
  941. </el-table>
  942. </div>
  943. </div>
  944. </div>
  945. </div>
  946. </div>
  947. </div>
  948. <div class="cabin-box">
  949. <div class="cabin-li">
  950. <div style="color: #606266;font-size: 15px;font-weight: 600;">请选择要显示的项:</div>
  951. <el-checkbox-group v-model="CheckBoxListSelect.filter(item => item.cbType == 'Right')[0].cbValues">
  952. <el-checkbox v-for="(item, index) in cabinoneOptions" :key="index" :label="item"></el-checkbox>
  953. </el-checkbox-group>
  954. <div style="display: flex;">
  955. <div :style="{ 'width': costTypevalue == 'A' ? '100%' : '49%' }">
  956. <div v-for="(cabinitem, index) in cabinDatal" :key="index">
  957. <div class="biaoge"
  958. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Right')[0].cbValues.includes(cabinitem.label)">
  959. <div style=" color: rgb(96, 98, 102);font-size: 15px;font-weight: 600;">{{
  960. cabinitem.label }}
  961. </div>
  962. <el-table :data="cabinitem.sheetInfo" border style="width: 100%">
  963. <el-table-column v-for="(itemcabinone, index) in cabinitem.childList"
  964. :key="index" :prop="itemcabinone.prop" :label="itemcabinone.childLabel">
  965. <template slot-scope="scope">
  966. <div v-if="itemcabinone.prop === 'toll'">
  967. <el-input size="small" :ref="'el-input-' + index"
  968. v-model="scope.row[itemcabinone.prop]" show-word-limit
  969. disabled />
  970. </div>
  971. <span
  972. v-else-if="itemcabinone.prop === 'costPerson' || itemcabinone.prop === 'singleQuote'"
  973. :title="scope.row[itemcabinone.prop]">
  974. <span v-if="itemcabinone.prop === 'singleQuote'">
  975. <span v-if="itemcabinone.tips">
  976. <el-popover placement="top-start"
  977. :title="itemcabinone.title" width="200" trigger="hover">
  978. <span v-if="itemcabinone.tips != '暂无!'"
  979. style="color:green">{{ itemcabinone.tips
  980. }}元/人</span>
  981. <span v-else style="color: red">暂无!</span>
  982. <span slot="reference">{{ scope.row[itemcabinone.prop]
  983. }}</span>
  984. </el-popover>
  985. </span>
  986. <span v-else>
  987. <el-popover placement="top-start"
  988. :title="itemcabinone.title" width="200" trigger="hover">
  989. <span style="color: red">暂无!</span>
  990. <span slot="reference">{{ scope.row[itemcabinone.prop]
  991. }}</span>
  992. </el-popover>
  993. </span>
  994. </span>
  995. <span v-else>{{ scope.row[itemcabinone.prop] }}</span>
  996. </span>
  997. <span v-else-if="itemcabinone.prop === 'totalCost'"
  998. :title="scope.row[itemcabinone.prop]">{{
  999. (scope.row['toll'] * scope.row['costPerson']).toFixed(2)
  1000. }}</span>
  1001. <span v-else-if="itemcabinone.prop === 'totalQuote'"
  1002. :title="scope.row[itemcabinone.prop]">{{
  1003. (scope.row['toll'] * scope.row['singleQuote']).toFixed(2)
  1004. }}</span>
  1005. <span v-else-if="itemcabinone.prop === 'singleProfit'"
  1006. :title="scope.row[itemcabinone.prop]">{{
  1007. ((scope.row['singleQuote'] - scope.row['costPerson'])).toFixed(2)
  1008. }}</span>
  1009. <span v-else-if="itemcabinone.prop === 'totalProfit'"
  1010. :title="scope.row[itemcabinone.prop]">{{
  1011. ((scope.row['singleQuote'] - scope.row['costPerson']) *
  1012. scope.row['toll']).toFixed(2)
  1013. }}</span>
  1014. <span v-else :title="scope.row[itemcabinone.prop]">{{
  1015. scope.row[itemcabinone.prop]
  1016. }}</span>
  1017. </template>
  1018. </el-table-column>
  1019. </el-table>
  1020. </div>
  1021. </div>
  1022. </div>
  1023. <div style="width: 2%;" v-show="costTypevalue != 'A'"></div>
  1024. <div style="width: 49%;" v-show="costTypevalue != 'A'">
  1025. <div v-for="(cabinitem, index) in BcabinDatal" :key="index">
  1026. <div class="biaogeB"
  1027. v-if="CheckBoxListSelect.filter(item => item.cbType == 'Right')[0].cbValues.includes(cabinitem.label)">
  1028. <div style="color: rgb(96, 98, 102);font-size: 15px;font-weight: 600;">{{
  1029. cabinitem.label }}
  1030. </div>
  1031. <el-table :data="cabinitem.sheetInfo" border style="width: 100%">
  1032. <el-table-column v-for="(itemcabinone, index) in cabinitem.childList"
  1033. :key="index" :prop="itemcabinone.prop" :label="itemcabinone.childLabel">
  1034. <template slot-scope="scope">
  1035. <div v-if="itemcabinone.prop === 'toll'">
  1036. <el-input size="small" :ref="'el-input-' + index"
  1037. v-model="scope.row[itemcabinone.prop]" show-word-limit
  1038. disabled />
  1039. </div>
  1040. <span
  1041. v-else-if="itemcabinone.prop === 'costPerson' || itemcabinone.prop === 'singleQuote'"
  1042. :title="scope.row[itemcabinone.prop]">{{
  1043. scope.row[itemcabinone.prop]
  1044. }}</span>
  1045. <span v-else-if="itemcabinone.prop === 'totalCost'"
  1046. :title="scope.row[itemcabinone.prop]">{{
  1047. (scope.row['toll'] * scope.row['costPerson']).toFixed(2)
  1048. }}</span>
  1049. <span v-else-if="itemcabinone.prop === 'totalQuote'"
  1050. :title="scope.row[itemcabinone.prop]">{{
  1051. (scope.row['toll'] * scope.row['singleQuote']).toFixed(2)
  1052. }}</span>
  1053. <span v-else-if="itemcabinone.prop === 'singleProfit'"
  1054. :title="scope.row[itemcabinone.prop]">{{
  1055. (scope.row['singleQuote'] - scope.row['costPerson']).toFixed(2)
  1056. }}</span>
  1057. <span v-else-if="itemcabinone.prop === 'totalProfit'"
  1058. :title="scope.row[itemcabinone.prop]">{{
  1059. ((scope.row['singleQuote'] - scope.row['costPerson']) *
  1060. scope.row['toll']).toFixed(2)
  1061. }}</span>
  1062. <span v-else :title="scope.row[itemcabinone.prop]">{{
  1063. scope.row[itemcabinone.prop]
  1064. }}</span>
  1065. </template>
  1066. </el-table-column>
  1067. </el-table>
  1068. </div>
  1069. </div>
  1070. </div>
  1071. </div>
  1072. </div>
  1073. </div>
  1074. </div>
  1075. <el-dialog :title="DialogTitle" :visible.sync="outerVisible" :width="'60%'" :close-on-click-modal="false"
  1076. @close="dialogClose">
  1077. <div>
  1078. <div style="display: flex;">
  1079. <div style="width: 30%;">
  1080. <el-input v-model="dialogSearchInput" placeholder="请输入城市名称"></el-input>
  1081. </div>
  1082. <div style="width: 2%;"></div>
  1083. <!-- <div><el-button type="primary" @click="dialogSearchMethon">搜索</el-button></div> -->
  1084. </div>
  1085. <br />
  1086. <el-table ref="singleTable" border @current-change="SelChange"
  1087. :data="filterdialogSearchInput.slice((currentPage - 1) * pageSize, currentPage * pageSize)"
  1088. highlight-current-row style="width: 100%">
  1089. <el-table-column v-for="item, index in SeldialogColumn" :key="index" :prop="item.prop"
  1090. :label="item.title">
  1091. <template slot-scope="scope">
  1092. <div>
  1093. {{ scope.row[item.prop] }}
  1094. </div>
  1095. </template>
  1096. </el-table-column>
  1097. </el-table>
  1098. <div class="block">
  1099. <el-pagination align='center' @current-change="handleCurrentChange" :current-page="currentPage"
  1100. :page-sizes="[5, 10]" :page-size="pageSize" layout="total, sizes, prev, pager, next"
  1101. @size-change="handleSizeChange" :total="filterdialogSearchInput.length">
  1102. </el-pagination>
  1103. </div>
  1104. </div>
  1105. <!-- <el-dialog width="30%" title="内层 Dialog" :visible.sync="innerVisible" append-to-body>
  1106. </el-dialog> -->
  1107. <!-- <div slot="footer" class="dialog-footer">
  1108. <el-button @click="outerVisible = false">取 消</el-button>
  1109. <el-button type="primary" @click="innerVisible = true">打开内层 Dialog</el-button>
  1110. </div> -->
  1111. <div slot="footer" class="dialog-footer">
  1112. <el-button @click="outerVisible = false; dialogSelectObject = {}">取 消</el-button>
  1113. <el-button type="primary" @click="confirm">确定</el-button>
  1114. </div>
  1115. </el-dialog>
  1116. </div>
  1117. </template>
  1118. <script>
  1119. import { pinyin } from 'pinyin-pro';
  1120. export default {
  1121. data() {
  1122. return {
  1123. costloading: true,
  1124. outerVisible: false,
  1125. innerVisible: false,
  1126. //checkList: ['DAY', 'ITIN', 'VA', 'VF', 'VRD', 'T/G S', 'DATE'], //列表默认选中
  1127. checkOptions: [
  1128. { label: 'DAY', tips: '时间(DATE)' },
  1129. { label: 'DATE', tips: '行程描述(ITINERARY)' },
  1130. { label: 'ITIN', tips: '行程描述(ITINERARY)' },
  1131. { label: 'VA', tips: '车服务区域(Vehicle Area)' },
  1132. { label: 'VT', tips: '车型(VEHICLE TYPE)' },
  1133. { label: 'VF', tips: '车费用(VEHICLE FEES)' },
  1134. { label: 'VN', tips: '车数量(VEHICLE Number)' },
  1135. { label: 'VRD', tips: '用车时间(VEHICLE RENTAL DURATION)' },
  1136. { label: 'T/G S', tips: '导游工资(TOUR GUIDE SALARY)' },
  1137. { label: 'T/G N', tips: '导游数量(TOUR GUIDE Number)' },
  1138. { label: 'T/G WH', tips: '导游工作时间(导游工作时间)' },
  1139. { label: 'T/G OF', tips: '导游超时费用(TOUR GUIDE OVERTIME FEES)' },
  1140. { label: 'T/G M', tips: '导游餐补(TOUR GUIDE MEALS)' },
  1141. { label: 'T/G A', tips: '导游房补(TOUR GUIDE ACCOMMODATION)' },
  1142. { label: 'T/G TF', tips: '导游交通费(TOUR GUIDE TRANSPORATION FEES)' },
  1143. { label: 'T/G EF', tips: '导游景点费(TOUR GUIDE ENTRANCE FEES)' },
  1144. { label: 'C/F M', tips: '司机餐补(CHAUFFEUR MEALS)' },
  1145. { label: 'C/F OF', tips: '司机超时费用(CHAUFFEUR OVERTIME FEES)' },
  1146. { label: 'B', tips: '早餐(BREAKFAST) #个人成本' },
  1147. { label: 'L', tips: '午餐(LUNCH) #个人成本' },
  1148. { label: 'D', tips: '晚餐(DINNER) #个人成本' },
  1149. { label: 'TBR', tips: '双人间(TWIN BED ROOM) #个人成本' },
  1150. { label: 'SGR', tips: '单间(SINGLE ROOM) #个人成本' },
  1151. { label: 'JS/ES', tips: '小套房/豪华套房(JUNIOR SUITE/EXECUTIVE SUITE) #个人成本' },
  1152. { label: 'SUITE', tips: '套房(SUITE) #个人成本' },
  1153. { label: 'ACCO N', tips: '住宿地名称(ACCOMMODATION NAME)' },
  1154. //--------------------------------------------------
  1155. { label: 'TV/N', tips: '公务场次' },
  1156. { label: 'IF/N', tips: '翻译场次' },
  1157. //-----------------------------------------------------
  1158. { label: 'T/V', tips: '公务活动费用(T/V)' },
  1159. { label: '1/L', tips: '公务活动费用(1/L)' },
  1160. { label: 'I/F', tips: '公务翻译费用(INTERPRETER FEES)' },
  1161. { label: 'EF', tips: '景点门票(ENTRANCE FEE) #个人成本' },
  1162. { label: 'B/R/F', tips: '饮料零食水果(BEVERAGE/RRESHMENT/FRUIT)' },
  1163. { label: 'TE', tips: '出行物资(TRAVELLLING ESSENTIALS) #个人成本' },
  1164. { label: 'T/G T', tips: '导游小费(T/G TIPS) #个人成本' },
  1165. { label: 'DRV T', tips: '司机小费(DRIVER TIPS #个人成本)' },
  1166. { label: 'P/C', tips: '零用金(PETTY CASH) #个人成本' },
  1167. { label: 'T/L F', tips: '领队费(TOUR LEADER FEES)' },
  1168. { label: 'E/C T', tips: '会务费(EXPO/CONFERENCE TICKET)' }
  1169. ],
  1170. tableLabel: [
  1171. { label: 'DAY', width: '50', prop: 'day', describe: '天数(DAY)' },
  1172. { label: 'DATE', width: '100', prop: 'date', describe: '时间(DATE)' },
  1173. { label: 'ITIN', width: '100', prop: 'itin', describe: '行程描述(ITINERARY)' },
  1174. { label: 'VA', width: '100', prop: 'sale', describe: '车服务区域(Vehicle Area)' }, // ??????????????
  1175. { label: 'VT', width: '100', prop: 'carType', describe: '车型(VEHICLE TYPE)' },
  1176. { label: 'VF', width: '60', prop: 'carCost', describe: '车费用(VEHICLE FEES)' },
  1177. { label: 'VN', width: '60', prop: 'carNumber', describe: '车数量(VEHICLE Number)' },
  1178. { label: 'VRD', width: '60', prop: 'carTiming', describe: '用车时间(VEHICLE RENTAL DURATION)' },
  1179. { label: 'T/G S', width: '60', prop: 'tgs', describe: '导游工资(TOUR GUIDE SALARY)' },
  1180. { label: 'T/G N', width: '60', prop: 'tgn', describe: '导游数量(TOUR GUIDE Number' },
  1181. { label: 'T/G WH', width: '60', prop: 'tgwh', describe: '导游工作时间(导游工作时间)' },
  1182. { label: 'T/G OF', width: '60', prop: 'tgof', describe: '导游超时费用(TOUR GUIDE OVERTIME FEES)' },
  1183. { label: 'T/G M', width: '60', prop: 'tgm', describe: '导游餐补(TOUR GUIDE MEALS)' },
  1184. { label: 'T/G A', width: '60', prop: 'tga', describe: '导游房补(TOUR GUIDE ACCOMMODATION)' },
  1185. { label: 'T/G TF', width: '60', prop: 'tgtf', describe: '导游交通费(TOUR GUIDE TRANSPORATION FEES)' },
  1186. { label: 'T/G EF', width: '60', prop: 'tgef', describe: '导游景点费(TOUR GUIDE ENTRANCE FEES)' },
  1187. { label: 'C/F M', width: '60', prop: 'cfm', describe: '司机餐补(CHAUFFEUR MEALS)' },
  1188. { label: 'C/F OF', width: '60', prop: 'cfof', describe: '司机超时费用(CHAUFFEUR OVERTIME FEES)' },
  1189. { label: 'B', width: '60', prop: 'b', describe: '早餐(BREAKFAST) #个人成本' },
  1190. { label: 'L', width: '60', prop: 'l', describe: '午餐(LUNCH) #个人成本' },
  1191. { label: 'D', width: '60', prop: 'd', describe: '晚餐(DINNER) #个人成本' },
  1192. { label: 'TBR', width: '60', prop: 'tbr', describe: '双人间(TWIN BED ROOM) #个人成本' },
  1193. { label: 'SGR', width: '60', prop: 'sgr', describe: '单间(SINGLE ROOM) #个人成本' },
  1194. { label: 'JS/ES', width: '60', prop: 'jS_ES', describe: '小套房/豪华套房(JUNIOR SUITE/EXECUTIVE SUITE) #个人成本' },
  1195. { label: 'SUITE', width: '60', prop: 'suite', describe: '套房(SUITE) #个人成本' },
  1196. { label: 'ACCO N', width: '100', prop: 'accon', describe: '住宿地名称(ACCOMMODATION NAME)' },
  1197. //--------------------------------------------------
  1198. { label: 'TV/N', width: '60', prop: 'gwCount', describe: '公务场次' },
  1199. { label: 'IF/N', width: '60', prop: 'fyCount', describe: '翻译场次' },
  1200. //-----------------------------------------------------
  1201. { label: 'T/V', width: '60', prop: 'tv', describe: '公务活动费用(T/V)' },
  1202. { label: '1/L', width: '60', prop: 'iL', describe: '邀请函相关费用(1/L)' },
  1203. { label: 'I/F', width: '60', prop: 'if', describe: '公务翻译费用(INTERPRETER FEES)' },
  1204. { label: 'EF', width: '60', prop: 'ef', describe: '景点门票(ENTRANCE FEE) #个人成本' },
  1205. //--------------------------------------------------
  1206. { label: 'EFR', width: '100', prop: 'efr', describe: '景点门票详细信息 (ENTRANCE FEE REMARK)' },
  1207. //-----------------------------------------------------
  1208. { label: 'B/R/F', width: '60', prop: 'b_R_F', describe: '饮料零食水果(BEVERAGE/RRESHMENT/FRUIT)' },
  1209. { label: 'TE', width: '60', prop: 'te', describe: '出行物资(TRAVELLLING ESSENTIALS) #个人成本' },
  1210. { label: 'T/G T', width: '60', prop: 'tgTips', describe: '导游小费(T/G TIPS) #个人成本' },
  1211. { label: 'DRV T', width: '60', prop: 'drvTips', describe: '司机小费(DRIVER TIPS #个人成本)' },
  1212. { label: 'P/C', width: '60', prop: 'pc', describe: '零用金(PETTY CASH) #个人成本' },
  1213. { label: 'T/L F', width: '60', prop: 'tlf', describe: '领队费(TOUR LEADER FEES)' },
  1214. { label: 'E/C T', width: '60', prop: 'ect', describe: '会务费(EXPO/CONFERENCE TICKET)' }
  1215. ],
  1216. statisticsArr: [
  1217. { label: 'DAY', total: '', individual: '' },
  1218. { label: 'DATE', total: '', individual: '' },
  1219. { label: 'ITIN', total: '', individual: '' },
  1220. { label: 'VA', total: '', individual: '' },
  1221. { label: 'VT', total: '', individual: '' },
  1222. { label: 'VF', total: '车费', individual: '车费人均' },
  1223. { label: 'VN', total: '', individual: '' },
  1224. { label: 'VRD', total: '', individual: '' },
  1225. { label: 'T/G S', total: '导游工资', individual: '导游工资人均' },
  1226. { label: 'T/G N', total: '', individual: '' },
  1227. { label: 'T/G WH', total: '', individual: '' },
  1228. { label: 'T/G OF', total: '', individual: '' },
  1229. { label: 'T/G M', total: '', individual: '' },
  1230. { label: 'T/G A', total: '', individual: '' },
  1231. { label: 'T/G TF', total: '', individual: '' }
  1232. ],
  1233. tableData: [], //列表数据
  1234. options: [],
  1235. diid: '',
  1236. currencyOption: [],
  1237. currencyValueL: 'CNY',
  1238. formInline: {
  1239. user: '',
  1240. region: ''
  1241. },
  1242. //sheetoneList: ['签证', '机票', '核酸检测',],
  1243. sheetoneOptions: ['签证', '保险', '机票', '火车票', '船票', '核酸检测', '酒店TBR', '酒店SGR', '酒店JSES', '酒店SUITE', '地接', '公务', '零用金'],
  1244. sheetDatal: [
  1245. {
  1246. label: '签证',
  1247. EnLabel: 'visa',
  1248. childList: [
  1249. {
  1250. childLabel: '签证单人成本(CNY)',
  1251. prop: 'visaCB',
  1252. tips: '这是一个tips',
  1253. title: '签证报批费用:'
  1254. },
  1255. {
  1256. childLabel: '人数',
  1257. prop: 'visaRS'
  1258. },
  1259. {
  1260. childLabel: '签证系数',
  1261. prop: 'visaXS'
  1262. },
  1263. {
  1264. childLabel: '签证总成本(CNY)',
  1265. prop: 'ZCB'
  1266. },
  1267. {
  1268. childLabel: '签证单人报价(CNY)',
  1269. prop: 'DRBJ' // 系数 * 单价
  1270. },
  1271. {
  1272. childLabel: '签证总报价(CNY)',
  1273. prop: 'ZBJ' // 系数 * 单价 * 人数
  1274. },
  1275. {
  1276. childLabel: '签证单人利润(CNY)',
  1277. prop: 'DRLR' //系数 * 单价 - 单价
  1278. },
  1279. {
  1280. childLabel: '签证总利润(CNY)',
  1281. prop: 'ZLR' //(系数 * 单价 - 单价) * 人数
  1282. },
  1283. ],
  1284. },
  1285. {
  1286. label: '保险',
  1287. EnLabel: 'bx',
  1288. childList: [
  1289. {
  1290. childLabel: '保险单人成本(CNY)',
  1291. prop: 'bxcb',
  1292. title: '保险报批费用:',
  1293. tips: '这是一个tips',
  1294. },
  1295. {
  1296. childLabel: '人数',
  1297. prop: 'bxrs'
  1298. },
  1299. {
  1300. childLabel: '保险系数',
  1301. prop: 'bxxs'
  1302. },
  1303. {
  1304. childLabel: '保险总成本(CNY)',
  1305. prop: 'ZCB'
  1306. },
  1307. {
  1308. childLabel: '保险单人报价(CNY)',
  1309. prop: 'DRBJ'
  1310. },
  1311. {
  1312. childLabel: '保险总报价(CNY)',
  1313. prop: 'ZBJ'
  1314. },
  1315. {
  1316. childLabel: '保险单人利润(CNY)',
  1317. prop: 'DRLR'
  1318. },
  1319. {
  1320. childLabel: '保险总利润(CNY)',
  1321. prop: 'ZLR'
  1322. },
  1323. ],
  1324. },
  1325. {
  1326. label: '火车票',
  1327. EnLabel: 'hcp',
  1328. childList: [
  1329. {
  1330. childLabel: '火车票单人成本(CNY)',
  1331. prop: 'hcpcb'
  1332. },
  1333. {
  1334. childLabel: '人数',
  1335. prop: 'hcprs'
  1336. },
  1337. {
  1338. childLabel: '火车票系数',
  1339. prop: 'hcpxs'
  1340. },
  1341. {
  1342. childLabel: '火车票总成本(CNY)',
  1343. prop: 'ZCB'
  1344. },
  1345. {
  1346. childLabel: '火车票单人报价(CNY)',
  1347. prop: 'DRBJ'
  1348. },
  1349. {
  1350. childLabel: '火车票总报价(CNY)',
  1351. prop: 'ZBJ'
  1352. },
  1353. {
  1354. childLabel: '火车票单人利润(CNY)',
  1355. prop: 'DRLR'
  1356. },
  1357. {
  1358. childLabel: '火车票总利润(CNY)',
  1359. prop: 'ZLR'
  1360. },
  1361. ],
  1362. },
  1363. {
  1364. label: '机票',
  1365. EnLabel: 'jjc',
  1366. childList: [
  1367. {
  1368. childLabel: '经济舱单人成本(CNY)',
  1369. prop: 'jjccb',
  1370. title: '经济舱报批费用:',
  1371. tips: '这是一个tips',
  1372. },
  1373. {
  1374. childLabel: '人数',
  1375. prop: 'jjcrs'
  1376. },
  1377. {
  1378. childLabel: '经济舱系数',
  1379. prop: 'jjcxs'
  1380. },
  1381. {
  1382. childLabel: '经济舱总成本(CNY)',
  1383. prop: 'ZCB'
  1384. },
  1385. {
  1386. childLabel: '经济舱单人报价(CNY)',
  1387. prop: 'DRBJ'
  1388. },
  1389. {
  1390. childLabel: '经济舱总报价(CNY)',
  1391. prop: 'ZBJ'
  1392. },
  1393. {
  1394. childLabel: '经济舱单人利润(CNY)',
  1395. prop: 'DRLR'
  1396. },
  1397. {
  1398. childLabel: '经济舱总利润(CNY)',
  1399. prop: 'ZLR'
  1400. },
  1401. ],
  1402. },
  1403. {
  1404. label: '机票',
  1405. EnLabel: 'gwc',
  1406. childList: [
  1407. {
  1408. childLabel: '公务舱单人成本(CNY)',
  1409. prop: 'gwccb',
  1410. title: '公务舱报批费用:',
  1411. tips: '这是一个tips',
  1412. },
  1413. {
  1414. childLabel: '人数',
  1415. prop: 'gwcrs'
  1416. },
  1417. {
  1418. childLabel: '公务舱系数',
  1419. prop: 'gwcxs'
  1420. },
  1421. {
  1422. childLabel: '公务舱总成本(CNY)',
  1423. prop: 'ZCB'
  1424. },
  1425. {
  1426. childLabel: '公务舱单人报价(CNY)',
  1427. prop: 'DRBJ'
  1428. },
  1429. {
  1430. childLabel: '公务舱总报价(CNY)',
  1431. prop: 'ZBJ'
  1432. },
  1433. {
  1434. childLabel: '公务舱单人利润(CNY)',
  1435. prop: 'DRLR'
  1436. },
  1437. {
  1438. childLabel: '公务舱总利润(CNY)',
  1439. prop: 'ZLR'
  1440. },
  1441. ],
  1442. },
  1443. {
  1444. label: '机票',
  1445. EnLabel: 'tdc',
  1446. childList: [
  1447. {
  1448. childLabel: '头等舱单人成本(CNY)',
  1449. prop: 'tdccb',
  1450. title: '头等舱报批费用:',
  1451. tips: '0',
  1452. },
  1453. {
  1454. childLabel: '人数',
  1455. prop: 'tdcrs'
  1456. },
  1457. {
  1458. childLabel: '头等舱系数',
  1459. prop: 'tdcxs'
  1460. },
  1461. {
  1462. childLabel: '头等舱总成本(CNY)',
  1463. prop: 'ZCB'
  1464. },
  1465. {
  1466. childLabel: '头等舱单人报价(CNY)',
  1467. prop: 'DRBJ'
  1468. },
  1469. {
  1470. childLabel: '头等舱总报价(CNY)',
  1471. prop: 'ZBJ'
  1472. },
  1473. {
  1474. childLabel: '头等舱单人利润(CNY)',
  1475. prop: 'DRLR'
  1476. },
  1477. {
  1478. childLabel: '头等舱总利润(CNY)',
  1479. prop: 'ZLR'
  1480. },
  1481. ],
  1482. },
  1483. {
  1484. label: '船票',
  1485. EnLabel: 'cp',
  1486. childList: [
  1487. {
  1488. childLabel: '船票单人成本(CNY)',
  1489. prop: 'cpcb'
  1490. },
  1491. {
  1492. childLabel: '人数',
  1493. prop: 'cprs'
  1494. },
  1495. {
  1496. childLabel: '船票系数',
  1497. prop: 'cpxs'
  1498. },
  1499. {
  1500. childLabel: '船票总成本(CNY)',
  1501. prop: 'ZCB'
  1502. },
  1503. {
  1504. childLabel: '船票单人报价(CNY)',
  1505. prop: 'DRBJ'
  1506. },
  1507. {
  1508. childLabel: '船票总报价(CNY)',
  1509. prop: 'ZBJ'
  1510. },
  1511. {
  1512. childLabel: '船票单人利润(CNY)',
  1513. prop: 'DRLR'
  1514. },
  1515. {
  1516. childLabel: '船票总利润(CNY)',
  1517. prop: 'ZLR'
  1518. },
  1519. ],
  1520. },
  1521. {
  1522. label: '核酸检测',
  1523. EnLabel: 'hs',
  1524. childList: [
  1525. {
  1526. childLabel: '核酸检测单人成本(CNY)',
  1527. prop: 'hscb',
  1528. title: '核酸检测报批费用:',
  1529. tips: '这是一个tips',
  1530. },
  1531. {
  1532. childLabel: '人数',
  1533. prop: 'hsrs'
  1534. },
  1535. {
  1536. childLabel: '核酸检测系数',
  1537. prop: 'hsxs'
  1538. },
  1539. {
  1540. childLabel: '核酸检测总成本(CNY)',
  1541. prop: 'ZCB'
  1542. },
  1543. {
  1544. childLabel: '核酸检测单人报价(CNY)',
  1545. prop: 'DRBJ'
  1546. },
  1547. {
  1548. childLabel: '核酸检测总报价(CNY)',
  1549. prop: 'ZBJ'
  1550. },
  1551. {
  1552. childLabel: '核酸检测单人利润(CNY)',
  1553. prop: 'DRLR'
  1554. },
  1555. {
  1556. childLabel: '核酸检测总利润(CNY)',
  1557. prop: 'ZLR'
  1558. },
  1559. ],
  1560. },
  1561. //---
  1562. {
  1563. label: '酒店TBR',
  1564. EnLabel: 'tbr',
  1565. childList: [
  1566. {
  1567. childLabel: '酒店TBR单间成本(CNY)',
  1568. prop: 'tbrcb',
  1569. isBind: true
  1570. },
  1571. {
  1572. childLabel: '间数',
  1573. prop: 'tbrNumber'
  1574. },
  1575. {
  1576. childLabel: '酒店TBR系数',
  1577. prop: 'tbrxs'
  1578. },
  1579. {
  1580. childLabel: '酒店TBR总成本(CNY)',
  1581. prop: 'ZCB'
  1582. },
  1583. {
  1584. childLabel: '酒店TBR单间报价(CNY)',
  1585. prop: 'DRBJ'
  1586. },
  1587. {
  1588. childLabel: '酒店TBR总报价(CNY)',
  1589. prop: 'ZBJ'
  1590. },
  1591. {
  1592. childLabel: '酒店TBR单间利润(CNY)',
  1593. prop: 'DRLR'
  1594. },
  1595. {
  1596. childLabel: '酒店TBR总利润(CNY)',
  1597. prop: 'ZLR'
  1598. },
  1599. ],
  1600. },
  1601. {
  1602. label: '酒店SGR',
  1603. EnLabel: 'sgr',
  1604. childList: [
  1605. {
  1606. childLabel: '酒店SGR单间成本(CNY)',
  1607. prop: 'sgrcb',
  1608. isBind: true
  1609. },
  1610. {
  1611. childLabel: '间数',
  1612. prop: 'sgrNumber'
  1613. },
  1614. {
  1615. childLabel: '酒店SGR系数',
  1616. prop: 'sgrxs'
  1617. },
  1618. {
  1619. childLabel: '酒店SGR总成本(CNY)',
  1620. prop: 'ZCB'
  1621. },
  1622. {
  1623. childLabel: '酒店SGR单间报价(CNY)',
  1624. prop: 'DRBJ'
  1625. },
  1626. {
  1627. childLabel: '酒店SGR总报价(CNY)',
  1628. prop: 'ZBJ'
  1629. },
  1630. {
  1631. childLabel: '酒店SGR单间利润(CNY)',
  1632. prop: 'DRLR'
  1633. },
  1634. {
  1635. childLabel: '酒店SGR总利润(CNY)',
  1636. prop: 'ZLR'
  1637. },
  1638. ],
  1639. },
  1640. {
  1641. label: '酒店JSES',
  1642. EnLabel: 'jses',
  1643. childList: [
  1644. {
  1645. childLabel: '酒店JSES单间成本(CNY)',
  1646. prop: 'jsescb',
  1647. isBind: true
  1648. },
  1649. {
  1650. childLabel: '间数',
  1651. prop: 'jsesNumber'
  1652. },
  1653. {
  1654. childLabel: '酒店JSES系数',
  1655. prop: 'jsesxs'
  1656. },
  1657. {
  1658. childLabel: '酒店JSES总成本(CNY)',
  1659. prop: 'ZCB'
  1660. },
  1661. {
  1662. childLabel: '酒店JSES单间报价(CNY)',
  1663. prop: 'DRBJ'
  1664. },
  1665. {
  1666. childLabel: '酒店JSES总报价(CNY)',
  1667. prop: 'ZBJ'
  1668. },
  1669. {
  1670. childLabel: '酒店JSES单间利润(CNY)',
  1671. prop: 'DRLR'
  1672. },
  1673. {
  1674. childLabel: '酒店JSES总利润(CNY)',
  1675. prop: 'ZLR'
  1676. },
  1677. ],
  1678. },
  1679. {
  1680. label: '酒店SUITE',
  1681. EnLabel: 'suite',
  1682. childList: [
  1683. {
  1684. childLabel: '酒店SUITE单间成本(CNY)',
  1685. prop: 'suitecb',
  1686. isBind: true
  1687. },
  1688. {
  1689. childLabel: '间数',
  1690. prop: 'suiteNumber'
  1691. },
  1692. {
  1693. childLabel: '酒店SUITE系数',
  1694. prop: 'suitexs'
  1695. },
  1696. {
  1697. childLabel: '酒店SUITE总成本(CNY)',
  1698. prop: 'ZCB'
  1699. },
  1700. {
  1701. childLabel: '酒店SUITE单间报价(CNY)',
  1702. prop: 'DRBJ'
  1703. },
  1704. {
  1705. childLabel: '酒店SUITE总报价(CNY)',
  1706. prop: 'ZBJ'
  1707. },
  1708. {
  1709. childLabel: '酒店SUITE单间利润(CNY)',
  1710. prop: 'DRLR'
  1711. },
  1712. {
  1713. childLabel: '酒店SUITE总利润(CNY)',
  1714. prop: 'ZLR'
  1715. },
  1716. ],
  1717. },
  1718. {
  1719. label: '地接',
  1720. EnLabel: 'dj',
  1721. childList: [
  1722. {
  1723. childLabel: '地接单人成本(CNY)',
  1724. prop: 'djcb',
  1725. isBind: true
  1726. },
  1727. {
  1728. childLabel: '人数', //实体类无地接人数
  1729. prop: 'djrs'
  1730. },
  1731. {
  1732. childLabel: '地接系数',
  1733. prop: 'djxs'
  1734. },
  1735. {
  1736. childLabel: '地接总成本(CNY)',
  1737. prop: 'ZCB'
  1738. },
  1739. {
  1740. childLabel: '地接单人报价(CNY)',
  1741. prop: 'DRBJ'
  1742. },
  1743. {
  1744. childLabel: '地接总报价(CNY)',
  1745. prop: 'ZBJ'
  1746. },
  1747. {
  1748. childLabel: '地接单人利润(CNY)',
  1749. prop: 'DRLR'
  1750. },
  1751. {
  1752. childLabel: '地接总利润(CNY)',
  1753. prop: 'ZLR'
  1754. },
  1755. ],
  1756. },
  1757. {
  1758. label: '公务',
  1759. EnLabel: 'gw',
  1760. childList: [
  1761. {
  1762. childLabel: '公务单人成本(CNY)',
  1763. prop: 'gwcb',
  1764. isBind: true
  1765. },
  1766. {
  1767. childLabel: '人数',
  1768. prop: 'gwrs'
  1769. },
  1770. {
  1771. childLabel: '公务系数',
  1772. prop: 'gwxs'
  1773. },
  1774. {
  1775. childLabel: '公务总成本(CNY)',
  1776. prop: 'ZCB'
  1777. },
  1778. {
  1779. childLabel: '公务单人报价(CNY)',
  1780. prop: 'DRBJ'
  1781. },
  1782. {
  1783. childLabel: '公务总报价(CNY)',
  1784. prop: 'ZBJ'
  1785. },
  1786. {
  1787. childLabel: '公务单人利润(CNY)',
  1788. prop: 'DRLR'
  1789. },
  1790. {
  1791. childLabel: '公务总利润(CNY)',
  1792. prop: 'ZLR'
  1793. },
  1794. ],
  1795. },
  1796. {
  1797. label: '零用金',
  1798. EnLabel: 'lyj',
  1799. childList: [
  1800. {
  1801. childLabel: '零用金单人成本(CNY)',
  1802. prop: 'lyjcb',
  1803. isBind: true
  1804. },
  1805. {
  1806. childLabel: '人数',
  1807. prop: 'lyjrs'
  1808. },
  1809. {
  1810. childLabel: '零用金系数',
  1811. prop: 'lyjxs'
  1812. },
  1813. {
  1814. childLabel: '零用金总成本(CNY)',
  1815. prop: 'ZCB'
  1816. },
  1817. {
  1818. childLabel: '零用金单人报价(CNY)',
  1819. prop: 'DRBJ'
  1820. },
  1821. {
  1822. childLabel: '零用金总报价(CNY)',
  1823. prop: 'ZBJ'
  1824. },
  1825. {
  1826. childLabel: '零用金单人利润(CNY)',
  1827. prop: 'DRLR'
  1828. },
  1829. {
  1830. childLabel: '零用金总利润(CNY)',
  1831. prop: 'ZLR'
  1832. },
  1833. ],
  1834. },
  1835. ],
  1836. //cabinoneList: ['经济舱 TBR', '经济舱 SGR', '核酸检测', '团组预算明细'],
  1837. cabinoneOptions: ['经济舱 TBR', '经济舱 SGR', '公务舱 SGR', '公务舱 JS/ES', '公务舱 SUITE', '经济舱 SUITE', '头等舱 JS/ES', '头等舱 SUITE', '经济舱 JS/ES'],
  1838. cabinDatal: [
  1839. {
  1840. label: '经济舱 TBR',
  1841. childList: [
  1842. {
  1843. childLabel: '单人成本(CNY)',
  1844. prop: 'costPerson'
  1845. },
  1846. {
  1847. childLabel: '人数',
  1848. prop: 'toll'
  1849. },
  1850. {
  1851. childLabel: '总成本(CNY)',
  1852. prop: 'totalCost'
  1853. },
  1854. {
  1855. childLabel: '单人报价(CNY)',
  1856. prop: 'singleQuote',
  1857. title: '报批(单人经济舱总报价):',
  1858. tips: '这是一个tips',
  1859. },
  1860. {
  1861. childLabel: '总报价(CNY)',
  1862. prop: 'totalQuote'
  1863. },
  1864. {
  1865. childLabel: '单人利润(CNY)',
  1866. prop: 'singleProfit'
  1867. },
  1868. {
  1869. childLabel: '总利润(CNY)',
  1870. prop: 'totalProfit'
  1871. },
  1872. ],
  1873. sheetInfo: [
  1874. {
  1875. costPerson: 1,
  1876. toll: 11,
  1877. totalCost: 137597.76,
  1878. singleQuote: 102203.71,
  1879. totalQuote: 35394.05,
  1880. singleProfit: 35394.05,
  1881. totalProfit: 35394.05
  1882. },
  1883. ]
  1884. },
  1885. {
  1886. label: '经济舱 SGR',
  1887. childList: [
  1888. {
  1889. childLabel: '单人成本(CNY)',
  1890. prop: 'costPerson'
  1891. },
  1892. {
  1893. childLabel: '人数',
  1894. prop: 'toll'
  1895. },
  1896. {
  1897. childLabel: '总成本(CNY)',
  1898. prop: 'totalCost'
  1899. },
  1900. {
  1901. childLabel: '单人报价(CNY)',
  1902. prop: 'singleQuote',
  1903. title: '报批(单人经济舱总报价):',
  1904. tips: '这是一个tips',
  1905. },
  1906. {
  1907. childLabel: '总报价(CNY)',
  1908. prop: 'totalQuote'
  1909. },
  1910. {
  1911. childLabel: '单人利润(CNY)',
  1912. prop: 'singleProfit'
  1913. },
  1914. {
  1915. childLabel: '总利润(CNY)',
  1916. prop: 'totalProfit'
  1917. },
  1918. ],
  1919. sheetInfo: [
  1920. {
  1921. costPerson: 1,
  1922. toll: 11,
  1923. totalCost: 137597.76,
  1924. singleQuote: 102203.71,
  1925. totalQuote: 35394.05,
  1926. singleProfit: 35394.05,
  1927. totalProfit: 35394.05
  1928. },
  1929. ]
  1930. },
  1931. {
  1932. label: '公务舱 SGR',
  1933. childList: [
  1934. {
  1935. childLabel: '单人成本(CNY)',
  1936. prop: 'costPerson'
  1937. },
  1938. {
  1939. childLabel: '人数',
  1940. prop: 'toll'
  1941. },
  1942. {
  1943. childLabel: '总成本(CNY)',
  1944. prop: 'totalCost'
  1945. },
  1946. {
  1947. childLabel: '单人报价(CNY)',
  1948. prop: 'singleQuote',
  1949. title: '报批(单人公务舱总报价):',
  1950. tips: '这是一个tips',
  1951. },
  1952. {
  1953. childLabel: '总报价(CNY)',
  1954. prop: 'totalQuote'
  1955. },
  1956. {
  1957. childLabel: '单人利润(CNY)',
  1958. prop: 'singleProfit'
  1959. },
  1960. {
  1961. childLabel: '总利润(CNY)',
  1962. prop: 'totalProfit'
  1963. },
  1964. ],
  1965. sheetInfo: [
  1966. {
  1967. costPerson: 1,
  1968. toll: 11,
  1969. totalCost: 137597.76,
  1970. singleQuote: 102203.71,
  1971. totalQuote: 35394.05,
  1972. singleProfit: 35394.05,
  1973. totalProfit: 35394.05
  1974. },
  1975. ]
  1976. },
  1977. {
  1978. label: '公务舱 JS/ES',
  1979. childList: [
  1980. {
  1981. childLabel: '单人成本(CNY)',
  1982. prop: 'costPerson'
  1983. },
  1984. {
  1985. childLabel: '人数',
  1986. prop: 'toll'
  1987. },
  1988. {
  1989. childLabel: '总成本(CNY)',
  1990. prop: 'totalCost'
  1991. },
  1992. {
  1993. childLabel: '单人报价(CNY)',
  1994. prop: 'singleQuote',
  1995. title: '报批(单人公务舱总报价):',
  1996. tips: '这是一个tips',
  1997. },
  1998. {
  1999. childLabel: '总报价(CNY)',
  2000. prop: 'totalQuote'
  2001. },
  2002. {
  2003. childLabel: '单人利润(CNY)',
  2004. prop: 'singleProfit'
  2005. },
  2006. {
  2007. childLabel: '总利润(CNY)',
  2008. prop: 'totalProfit'
  2009. },
  2010. ],
  2011. sheetInfo: [
  2012. {
  2013. costPerson: 1,
  2014. toll: 11,
  2015. totalCost: 137597.76,
  2016. singleQuote: 102203.71,
  2017. totalQuote: 35394.05,
  2018. singleProfit: 35394.05,
  2019. totalProfit: 35394.05
  2020. },
  2021. ]
  2022. },
  2023. {
  2024. label: '公务舱 SUITE',
  2025. childList: [
  2026. {
  2027. childLabel: '单人成本(CNY)',
  2028. prop: 'costPerson'
  2029. },
  2030. {
  2031. childLabel: '人数',
  2032. prop: 'toll'
  2033. },
  2034. {
  2035. childLabel: '总成本(CNY)',
  2036. prop: 'totalCost'
  2037. },
  2038. {
  2039. childLabel: '单人报价(CNY)',
  2040. prop: 'singleQuote',
  2041. title: '报批(单人公务舱总报价):',
  2042. tips: '这是一个tips',
  2043. },
  2044. {
  2045. childLabel: '总报价(CNY)',
  2046. prop: 'totalQuote'
  2047. },
  2048. {
  2049. childLabel: '单人利润(CNY)',
  2050. prop: 'singleProfit'
  2051. },
  2052. {
  2053. childLabel: '总利润(CNY)',
  2054. prop: 'totalProfit'
  2055. },
  2056. ],
  2057. sheetInfo: [
  2058. {
  2059. costPerson: 1,
  2060. toll: 11,
  2061. totalCost: 137597.76,
  2062. singleQuote: 102203.71,
  2063. totalQuote: 35394.05,
  2064. singleProfit: 35394.05,
  2065. totalProfit: 35394.05
  2066. },
  2067. ]
  2068. }
  2069. ,
  2070. {
  2071. label: '经济舱 SUITE',
  2072. childList: [
  2073. {
  2074. childLabel: '单人成本(CNY)',
  2075. prop: 'costPerson'
  2076. },
  2077. {
  2078. childLabel: '人数',
  2079. prop: 'toll'
  2080. },
  2081. {
  2082. childLabel: '总成本(CNY)',
  2083. prop: 'totalCost'
  2084. },
  2085. {
  2086. childLabel: '单人报价(CNY)',
  2087. prop: 'singleQuote',
  2088. title: '报批(单人经济舱总报价):',
  2089. tips: '这是一个tips',
  2090. },
  2091. {
  2092. childLabel: '总报价(CNY)',
  2093. prop: 'totalQuote'
  2094. },
  2095. {
  2096. childLabel: '单人利润(CNY)',
  2097. prop: 'singleProfit'
  2098. },
  2099. {
  2100. childLabel: '总利润(CNY)',
  2101. prop: 'totalProfit'
  2102. },
  2103. ],
  2104. sheetInfo: [
  2105. {
  2106. costPerson: 1,
  2107. toll: 11,
  2108. totalCost: 137597.76,
  2109. singleQuote: 102203.71,
  2110. totalQuote: 35394.05,
  2111. singleProfit: 35394.05,
  2112. totalProfit: 35394.05
  2113. },
  2114. ]
  2115. },
  2116. {
  2117. label: '头等舱 JS/ES',
  2118. childList: [
  2119. {
  2120. childLabel: '单人成本(CNY)',
  2121. prop: 'costPerson'
  2122. },
  2123. {
  2124. childLabel: '人数',
  2125. prop: 'toll'
  2126. },
  2127. {
  2128. childLabel: '总成本(CNY)',
  2129. prop: 'totalCost'
  2130. },
  2131. {
  2132. childLabel: '单人报价(CNY)',
  2133. prop: 'singleQuote',
  2134. title: '报批(单人头等舱总报价):',
  2135. tips: '这是一个tips',
  2136. },
  2137. {
  2138. childLabel: '总报价(CNY)',
  2139. prop: 'totalQuote'
  2140. },
  2141. {
  2142. childLabel: '单人利润(CNY)',
  2143. prop: 'singleProfit'
  2144. },
  2145. {
  2146. childLabel: '总利润(CNY)',
  2147. prop: 'totalProfit'
  2148. },
  2149. ],
  2150. sheetInfo: [
  2151. {
  2152. costPerson: 1,
  2153. toll: 11,
  2154. totalCost: 137597.76,
  2155. singleQuote: 102203.71,
  2156. totalQuote: 35394.05,
  2157. singleProfit: 35394.05,
  2158. totalProfit: 35394.05
  2159. },
  2160. ]
  2161. },
  2162. {
  2163. label: '头等舱 SUITE',
  2164. childList: [
  2165. {
  2166. childLabel: '单人成本(CNY)',
  2167. prop: 'costPerson'
  2168. },
  2169. {
  2170. childLabel: '人数',
  2171. prop: 'toll'
  2172. },
  2173. {
  2174. childLabel: '总成本(CNY)',
  2175. prop: 'totalCost'
  2176. },
  2177. {
  2178. childLabel: '单人报价(CNY)',
  2179. prop: 'singleQuote',
  2180. title: '报批(单人头等舱总报价):',
  2181. tips: '这是一个tips',
  2182. },
  2183. {
  2184. childLabel: '总报价(CNY)',
  2185. prop: 'totalQuote'
  2186. },
  2187. {
  2188. childLabel: '单人利润(CNY)',
  2189. prop: 'singleProfit'
  2190. },
  2191. {
  2192. childLabel: '总利润(CNY)',
  2193. prop: 'totalProfit'
  2194. },
  2195. ],
  2196. sheetInfo: [
  2197. {
  2198. costPerson: 1,
  2199. toll: 11,
  2200. totalCost: 137597.76,
  2201. singleQuote: 102203.71,
  2202. totalQuote: 35394.05,
  2203. singleProfit: 35394.05,
  2204. totalProfit: 35394.05
  2205. },
  2206. ]
  2207. },
  2208. {
  2209. label: '经济舱 JS/ES',
  2210. childList: [
  2211. {
  2212. childLabel: '单人成本(CNY)',
  2213. prop: 'costPerson'
  2214. },
  2215. {
  2216. childLabel: '人数',
  2217. prop: 'toll'
  2218. },
  2219. {
  2220. childLabel: '总成本(CNY)',
  2221. prop: 'totalCost'
  2222. },
  2223. {
  2224. childLabel: '单人报价(CNY)',
  2225. prop: 'singleQuote',
  2226. title: '报批(单人经济舱总报价):',
  2227. tips: '0',
  2228. },
  2229. {
  2230. childLabel: '总报价(CNY)',
  2231. prop: 'totalQuote'
  2232. },
  2233. {
  2234. childLabel: '单人利润(CNY)',
  2235. prop: 'singleProfit'
  2236. },
  2237. {
  2238. childLabel: '总利润(CNY)',
  2239. prop: 'totalProfit'
  2240. },
  2241. ],
  2242. sheetInfo: [
  2243. {
  2244. costPerson: 1,
  2245. toll: 11,
  2246. totalCost: 137597.76,
  2247. singleQuote: 102203.71,
  2248. totalQuote: 35394.05,
  2249. singleProfit: 35394.05,
  2250. totalProfit: 35394.05
  2251. },
  2252. ]
  2253. },
  2254. {
  2255. label: '团组预算明细',
  2256. childList: [
  2257. {
  2258. childLabel: '团组成本(CNY)',
  2259. prop: 'groupCosts'
  2260. },
  2261. {
  2262. childLabel: '团组报价(CNY)',
  2263. prop: 'gtroupQuotes'
  2264. },
  2265. {
  2266. childLabel: '团组利润(CNY)',
  2267. prop: 'groupProfit'
  2268. }
  2269. ],
  2270. sheetInfo: [
  2271. {
  2272. groupCosts: 1,
  2273. gtroupQuotes: 11,
  2274. groupProfit: 137597.76,
  2275. },
  2276. ]
  2277. }
  2278. ],
  2279. BcabinDatal: [
  2280. {
  2281. label: '经济舱 TBR',
  2282. childList: [
  2283. {
  2284. childLabel: '单人成本(CNY)',
  2285. prop: 'costPerson'
  2286. },
  2287. {
  2288. childLabel: '人数',
  2289. prop: 'toll'
  2290. },
  2291. {
  2292. childLabel: '总成本(CNY)',
  2293. prop: 'totalCost'
  2294. },
  2295. {
  2296. childLabel: '单人报价(CNY)',
  2297. prop: 'singleQuote',
  2298. title: '报批(单人经济舱总报价):',
  2299. tips: '这是一个tips',
  2300. },
  2301. {
  2302. childLabel: '总报价(CNY)',
  2303. prop: 'totalQuote'
  2304. },
  2305. {
  2306. childLabel: '单人利润(CNY)',
  2307. prop: 'singleProfit'
  2308. },
  2309. {
  2310. childLabel: '总利润(CNY)',
  2311. prop: 'totalProfit'
  2312. },
  2313. ],
  2314. sheetInfo: [
  2315. {
  2316. costPerson: 0,
  2317. toll: 0,
  2318. totalCost: 137597.76,
  2319. singleQuote: 102203.71,
  2320. totalQuote: 35394.05,
  2321. singleProfit: 35394.05,
  2322. totalProfit: 35394.05
  2323. },
  2324. ]
  2325. },
  2326. {
  2327. label: '经济舱 SGR',
  2328. childList: [
  2329. {
  2330. childLabel: '单人成本(CNY)',
  2331. prop: 'costPerson'
  2332. },
  2333. {
  2334. childLabel: '人数',
  2335. prop: 'toll'
  2336. },
  2337. {
  2338. childLabel: '总成本(CNY)',
  2339. prop: 'totalCost'
  2340. },
  2341. {
  2342. childLabel: '单人报价(CNY)',
  2343. prop: 'singleQuote',
  2344. title: '报批(单人经济舱总报价):',
  2345. tips: '这是一个tips',
  2346. },
  2347. {
  2348. childLabel: '总报价(CNY)',
  2349. prop: 'totalQuote'
  2350. },
  2351. {
  2352. childLabel: '单人利润(CNY)',
  2353. prop: 'singleProfit'
  2354. },
  2355. {
  2356. childLabel: '总利润(CNY)',
  2357. prop: 'totalProfit'
  2358. },
  2359. ],
  2360. sheetInfo: [
  2361. {
  2362. costPerson: 1,
  2363. toll: 11,
  2364. totalCost: 137597.76,
  2365. singleQuote: 102203.71,
  2366. totalQuote: 35394.05,
  2367. singleProfit: 35394.05,
  2368. totalProfit: 35394.05
  2369. },
  2370. ]
  2371. },
  2372. {
  2373. label: '公务舱 SGR',
  2374. childList: [
  2375. {
  2376. childLabel: '单人成本(CNY)',
  2377. prop: 'costPerson'
  2378. },
  2379. {
  2380. childLabel: '人数',
  2381. prop: 'toll'
  2382. },
  2383. {
  2384. childLabel: '总成本(CNY)',
  2385. prop: 'totalCost'
  2386. },
  2387. {
  2388. childLabel: '单人报价(CNY)',
  2389. prop: 'singleQuote',
  2390. title: '报批(单人公务舱总报价):',
  2391. tips: '这是一个tips',
  2392. },
  2393. {
  2394. childLabel: '总报价(CNY)',
  2395. prop: 'totalQuote'
  2396. },
  2397. {
  2398. childLabel: '单人利润(CNY)',
  2399. prop: 'singleProfit'
  2400. },
  2401. {
  2402. childLabel: '总利润(CNY)',
  2403. prop: 'totalProfit'
  2404. },
  2405. ],
  2406. sheetInfo: [
  2407. {
  2408. costPerson: 1,
  2409. toll: 11,
  2410. totalCost: 137597.76,
  2411. singleQuote: 102203.71,
  2412. totalQuote: 35394.05,
  2413. singleProfit: 35394.05,
  2414. totalProfit: 35394.05
  2415. },
  2416. ]
  2417. },
  2418. {
  2419. label: '公务舱 JS/ES',
  2420. childList: [
  2421. {
  2422. childLabel: '单人成本(CNY)',
  2423. prop: 'costPerson'
  2424. },
  2425. {
  2426. childLabel: '人数',
  2427. prop: 'toll'
  2428. },
  2429. {
  2430. childLabel: '总成本(CNY)',
  2431. prop: 'totalCost'
  2432. },
  2433. {
  2434. childLabel: '单人报价(CNY)',
  2435. prop: 'singleQuote',
  2436. title: '报批(单人公务舱总报价):',
  2437. tips: '这是一个tips',
  2438. },
  2439. {
  2440. childLabel: '总报价(CNY)',
  2441. prop: 'totalQuote'
  2442. },
  2443. {
  2444. childLabel: '单人利润(CNY)',
  2445. prop: 'singleProfit'
  2446. },
  2447. {
  2448. childLabel: '总利润(CNY)',
  2449. prop: 'totalProfit'
  2450. },
  2451. ],
  2452. sheetInfo: [
  2453. {
  2454. costPerson: 1,
  2455. toll: 11,
  2456. totalCost: 137597.76,
  2457. singleQuote: 102203.71,
  2458. totalQuote: 35394.05,
  2459. singleProfit: 35394.05,
  2460. totalProfit: 35394.05
  2461. },
  2462. ]
  2463. },
  2464. {
  2465. label: '公务舱 SUITE',
  2466. childList: [
  2467. {
  2468. childLabel: '单人成本(CNY)',
  2469. prop: 'costPerson'
  2470. },
  2471. {
  2472. childLabel: '人数',
  2473. prop: 'toll'
  2474. },
  2475. {
  2476. childLabel: '总成本(CNY)',
  2477. prop: 'totalCost'
  2478. },
  2479. {
  2480. childLabel: '单人报价(CNY)',
  2481. prop: 'singleQuote',
  2482. title: '报批(单人公务舱总报价):',
  2483. tips: '这是一个tips',
  2484. },
  2485. {
  2486. childLabel: '总报价(CNY)',
  2487. prop: 'totalQuote'
  2488. },
  2489. {
  2490. childLabel: '单人利润(CNY)',
  2491. prop: 'singleProfit'
  2492. },
  2493. {
  2494. childLabel: '总利润(CNY)',
  2495. prop: 'totalProfit'
  2496. },
  2497. ],
  2498. sheetInfo: [
  2499. {
  2500. costPerson: 1,
  2501. toll: 11,
  2502. totalCost: 137597.76,
  2503. singleQuote: 102203.71,
  2504. totalQuote: 35394.05,
  2505. singleProfit: 35394.05,
  2506. totalProfit: 35394.05
  2507. },
  2508. ]
  2509. }
  2510. ,
  2511. {
  2512. label: '经济舱 SUITE',
  2513. childList: [
  2514. {
  2515. childLabel: '单人成本(CNY)',
  2516. prop: 'costPerson'
  2517. },
  2518. {
  2519. childLabel: '人数',
  2520. prop: 'toll'
  2521. },
  2522. {
  2523. childLabel: '总成本(CNY)',
  2524. prop: 'totalCost'
  2525. },
  2526. {
  2527. childLabel: '单人报价(CNY)',
  2528. prop: 'singleQuote',
  2529. title: '报批(单人经济舱总报价):',
  2530. tips: '这是一个tips',
  2531. },
  2532. {
  2533. childLabel: '总报价(CNY)',
  2534. prop: 'totalQuote'
  2535. },
  2536. {
  2537. childLabel: '单人利润(CNY)',
  2538. prop: 'singleProfit'
  2539. },
  2540. {
  2541. childLabel: '总利润(CNY)',
  2542. prop: 'totalProfit'
  2543. },
  2544. ],
  2545. sheetInfo: [
  2546. {
  2547. costPerson: 1,
  2548. toll: 11,
  2549. totalCost: 137597.76,
  2550. singleQuote: 102203.71,
  2551. totalQuote: 35394.05,
  2552. singleProfit: 35394.05,
  2553. totalProfit: 35394.05
  2554. },
  2555. ]
  2556. },
  2557. {
  2558. label: '头等舱 JS/ES',
  2559. childList: [
  2560. {
  2561. childLabel: '单人成本(CNY)',
  2562. prop: 'costPerson'
  2563. },
  2564. {
  2565. childLabel: '人数',
  2566. prop: 'toll'
  2567. },
  2568. {
  2569. childLabel: '总成本(CNY)',
  2570. prop: 'totalCost'
  2571. },
  2572. {
  2573. childLabel: '单人报价(CNY)',
  2574. prop: 'singleQuote',
  2575. title: '报批(单人头等舱总报价):',
  2576. tips: '这是一个tips',
  2577. },
  2578. {
  2579. childLabel: '总报价(CNY)',
  2580. prop: 'totalQuote'
  2581. },
  2582. {
  2583. childLabel: '单人利润(CNY)',
  2584. prop: 'singleProfit'
  2585. },
  2586. {
  2587. childLabel: '总利润(CNY)',
  2588. prop: 'totalProfit'
  2589. },
  2590. ],
  2591. sheetInfo: [
  2592. {
  2593. costPerson: 1,
  2594. toll: 11,
  2595. totalCost: 137597.76,
  2596. singleQuote: 102203.71,
  2597. totalQuote: 35394.05,
  2598. singleProfit: 35394.05,
  2599. totalProfit: 35394.05
  2600. },
  2601. ]
  2602. },
  2603. {
  2604. label: '头等舱 SUITE',
  2605. childList: [
  2606. {
  2607. childLabel: '单人成本(CNY)',
  2608. prop: 'costPerson'
  2609. },
  2610. {
  2611. childLabel: '人数',
  2612. prop: 'toll'
  2613. },
  2614. {
  2615. childLabel: '总成本(CNY)',
  2616. prop: 'totalCost'
  2617. },
  2618. {
  2619. childLabel: '单人报价(CNY)',
  2620. prop: 'singleQuote',
  2621. title: '报批(单人头等舱总报价):',
  2622. tips: '这是一个tips',
  2623. },
  2624. {
  2625. childLabel: '总报价(CNY)',
  2626. prop: 'totalQuote'
  2627. },
  2628. {
  2629. childLabel: '单人利润(CNY)',
  2630. prop: 'singleProfit'
  2631. },
  2632. {
  2633. childLabel: '总利润(CNY)',
  2634. prop: 'totalProfit'
  2635. },
  2636. ],
  2637. sheetInfo: [
  2638. {
  2639. costPerson: 1,
  2640. toll: 11,
  2641. totalCost: 137597.76,
  2642. singleQuote: 102203.71,
  2643. totalQuote: 35394.05,
  2644. singleProfit: 35394.05,
  2645. totalProfit: 35394.05
  2646. },
  2647. ]
  2648. },
  2649. {
  2650. label: '经济舱 JS/ES',
  2651. childList: [
  2652. {
  2653. childLabel: '单人成本(CNY)',
  2654. prop: 'costPerson'
  2655. },
  2656. {
  2657. childLabel: '人数',
  2658. prop: 'toll'
  2659. },
  2660. {
  2661. childLabel: '总成本(CNY)',
  2662. prop: 'totalCost'
  2663. },
  2664. {
  2665. childLabel: '单人报价(CNY)',
  2666. prop: 'singleQuote',
  2667. title: '报批(单人经济舱总报价):',
  2668. tips: '0',
  2669. },
  2670. {
  2671. childLabel: '总报价(CNY)',
  2672. prop: 'totalQuote'
  2673. },
  2674. {
  2675. childLabel: '单人利润(CNY)',
  2676. prop: 'singleProfit'
  2677. },
  2678. {
  2679. childLabel: '总利润(CNY)',
  2680. prop: 'totalProfit'
  2681. },
  2682. ],
  2683. sheetInfo: [
  2684. {
  2685. costPerson: 1,
  2686. toll: 11,
  2687. totalCost: 137597.76,
  2688. singleQuote: 102203.71,
  2689. totalQuote: 35394.05,
  2690. singleProfit: 35394.05,
  2691. totalProfit: 35394.05
  2692. },
  2693. ]
  2694. },
  2695. ],
  2696. costType: [
  2697. {
  2698. value: 'A',
  2699. label: '单段模式'
  2700. },
  2701. {
  2702. value: 'B',
  2703. label: '双段模式'
  2704. }
  2705. ],
  2706. userId: 0,
  2707. token: '',
  2708. costTypevalue: 'A',
  2709. grouptitleinfo: {},
  2710. costTypeHotelNumbers: [{
  2711. "sgr": 0,
  2712. "tbr": 0,
  2713. "jses": 0,
  2714. "suite": 0,
  2715. "type": "Default",
  2716. "diid": 0,
  2717. id: 0,
  2718. },
  2719. {
  2720. "sgr": 0,
  2721. "tbr": 0,
  2722. "jses": 0,
  2723. "suite": 0,
  2724. "type": "A",
  2725. "diid": 0,
  2726. id: 0,
  2727. },
  2728. {
  2729. "sgr": 0,
  2730. "tbr": 0,
  2731. "jses": 0,
  2732. "suite": 0,
  2733. "type": "B",
  2734. "diid": 0,
  2735. id: 0,
  2736. }],
  2737. CheckBoxListSelect: [
  2738. {
  2739. "diid": 0,
  2740. "cbType": "Top",
  2741. "cbValues": ['DAY', 'DATE', 'ITIN', 'VA', 'VT', 'VF', 'VRD', 'T/G S', 'T/G WH', 'C/F M', 'L', 'D', 'SGR', 'SUITE', 'ACCO N', 'T/V', 'EF', 'B/R/F', 'TE', 'DRV T', 'P/C'] //"string"
  2742. },
  2743. {
  2744. "diid": 0,
  2745. "cbType": "Left",
  2746. "cbValues": ['签证', '机票', '保险', '地接', '公务', '零用金'] //"string"
  2747. },
  2748. {
  2749. "diid": 0,
  2750. "cbType": "Right",
  2751. "cbValues": ['公务舱 SGR', '经济舱 SGR', '团组预算明细'] //"string"
  2752. }
  2753. ],
  2754. AGroupCostParameter: {
  2755. "id": 0,
  2756. "diId": 0,
  2757. "currency": "CNY",
  2758. "rate": 0,
  2759. "tax": 0,
  2760. "ffys": 0,
  2761. "hotelXS": 0,
  2762. "jjccb": 0,
  2763. "jjcxs": 0,
  2764. "jjcrs": 0,
  2765. "gwccb": 0,
  2766. "gwcxs": 0,
  2767. "gwcrs": 0,
  2768. "hcpcb": 0,
  2769. "hcpxs": 0,
  2770. "hcprs": 0,
  2771. "cpcb": 0,
  2772. "cpxs": 0,
  2773. "cprs": 0,
  2774. "bxcb": 0,
  2775. "bxxs": 25,
  2776. "bxrs": 0,
  2777. "hscb": 0,
  2778. "hsxs": 0,
  2779. "hsrs": 0,
  2780. "visaCB": 0,
  2781. "visaXS": 0,
  2782. "visaRS": 0,
  2783. "gwcb": 0,
  2784. "gwxs": 0,
  2785. "gwrs": 0,
  2786. "djcb": 0,
  2787. "djrs": 0,
  2788. "djxs": 0,
  2789. "sgrcb": 0,
  2790. "sgrNumber": 0,
  2791. "sgrxs": 0,
  2792. "tbrcb": 0,
  2793. "tbrNumber": 0,
  2794. "tbrxs": 0,
  2795. "jsescb": 0,
  2796. "jsesNumber": 0,
  2797. "jsesxs": 0,
  2798. "suitecb": 0,
  2799. "suiteNumber": 0,
  2800. "suitexs": 0,
  2801. "lyjcb": 0,
  2802. "lyjxs": 0,
  2803. "lyjrs": 0,
  2804. "isShare": 0,
  2805. "costType": "A",
  2806. "costTypeStartTime": "",
  2807. "costTypeendTime": "",
  2808. "costTypenumber": 0,
  2809. "tdccb": 0,
  2810. "tdcxs": 0,
  2811. "tdcrs": 0
  2812. },
  2813. BGroupCostParameter: {
  2814. "id": 0,
  2815. "diId": 0,
  2816. "currency": "",
  2817. "rate": 0,
  2818. "tax": 0,
  2819. "ffys": 0,
  2820. "hotelXS": 0,
  2821. "jjccb": 0,
  2822. "jjcxs": 0,
  2823. "jjcrs": 0,
  2824. "gwccb": 0,
  2825. "gwcxs": 0,
  2826. "gwcrs": 0,
  2827. "hcpcb": 0,
  2828. "hcpxs": 0,
  2829. "hcprs": 0,
  2830. "cpcb": 0,
  2831. "cpxs": 0,
  2832. "cprs": 0,
  2833. "bxcb": 0,
  2834. "bxxs": 25,
  2835. "bxrs": 0,
  2836. "hscb": 0,
  2837. "hsxs": 0,
  2838. "hsrs": 0,
  2839. "visaCB": 0,
  2840. "visaXS": 0,
  2841. "visaRS": 0,
  2842. "gwcb": 0,
  2843. "gwxs": 0,
  2844. "gwrs": 0,
  2845. "djcb": 0,
  2846. "djxs": 0,
  2847. "djrs": 0,
  2848. "sgrcb": 0,
  2849. "sgrNumber": 0,
  2850. "sgrxs": 0,
  2851. "tbrcb": 0,
  2852. "tbrNumber": 0,
  2853. "tbrxs": 0,
  2854. "jsescb": 0,
  2855. "jsesNumber": 0,
  2856. "jsesxs": 0,
  2857. "suitecb": 0,
  2858. "suiteNumber": 0,
  2859. "suitexs": 0,
  2860. "lyjcb": 0,
  2861. "lyjxs": 0,
  2862. "lyjrs": 0,
  2863. "isShare": 0,
  2864. "costType": "B",
  2865. "costTypeStartTime": "",
  2866. "costTypeendTime": "",
  2867. "costTypenumber": 0,
  2868. "tdccb": 0,
  2869. "tdcxs": 0,
  2870. "tdcrs": 0
  2871. },
  2872. dialogColumn: [
  2873. {
  2874. index: 1, data: [
  2875. { title: "国家", prop: "country" },
  2876. { title: "城市", prop: "city" },
  2877. { title: "服务类型", prop: "serviceType" },
  2878. { title: "用车类型", prop: "carType" },
  2879. { title: "用车报价", prop: "offer" },
  2880. { title: "车兼导费用", prop: "cgCost" },
  2881. { title: "用车时长", prop: "runingTime" },
  2882. { title: "车超时费用/时", prop: "overtimeFee" },
  2883. { title: "司兼导超时费/时", prop: "cgOvertimeFee" },
  2884. { title: "币种", prop: "currency" },
  2885. { title: "备注", prop: "remark" }
  2886. ]
  2887. },
  2888. {
  2889. index: 2, data: [
  2890. { title: "国家", prop: "country" },
  2891. { title: "城市", prop: "city" },
  2892. { title: "导游服务类型", prop: "serviceType" },
  2893. { title: "导游工资", prop: "price" },
  2894. { title: "翻译工资", prop: "translationPrice" },
  2895. { title: "超时费用", prop: "overtimeFee" },
  2896. { title: "币种", prop: "currency" },
  2897. { title: "备注", prop: "remark" }
  2898. ]
  2899. },
  2900. {
  2901. index: 3, data: [
  2902. { title: "国家", prop: "country" },
  2903. { title: "城市", prop: "city" },
  2904. { title: "车类型", prop: "carType" },
  2905. { title: "服务类型", prop: "serviceType" },
  2906. { title: "用车时间", prop: "when" },
  2907. { title: "工资", prop: "price" },
  2908. { title: "超时费用", prop: "overtimeFee" },
  2909. { title: "币种", prop: "currency" },
  2910. { title: "备注", prop: "remark" }
  2911. ]
  2912. },
  2913. {
  2914. index: 4, data: [
  2915. { title: "国家", prop: "country" },
  2916. { title: "城市", prop: "city" },
  2917. { title: "景点", prop: "scenicSpot" },
  2918. { title: "景点项目描述", prop: "scenicSpotDetail" },
  2919. { title: "景点价格", prop: "price" },
  2920. { title: "币种", prop: "currency" },
  2921. { title: "景点地址", prop: "address" }
  2922. ]
  2923. }
  2924. // 司兼导
  2925. // 导游
  2926. // 车数据
  2927. // 景点
  2928. ],
  2929. dialogTableData: [],
  2930. SeldialogColumn: [],
  2931. DialogTitle: '',
  2932. pageSize: 5,
  2933. currentPage: 1,
  2934. dialogSearchInput: '',
  2935. selectRow: {},
  2936. rowIndex: 0,
  2937. sumTopPrice: [],
  2938. DJLables: ['VF', 'T/G S', 'T/G OF', 'T/G M', 'T/G A', 'T/G TF', 'T/G EF', 'C/F M', 'C/F OF', 'B', 'L', 'D', 'EF', 'B/R/F', 'TE', 'T/G T', 'DRV T', 'T/L F'],
  2939. GwLables: ['T/V', 'E/C T', 'I/F', '1/L'],
  2940. OtherCostProperty: ['visaCB', 'hcpcb', 'cpcb', 'bxcb', 'hscb', 'djcb', 'gwcb', 'lyjcb'],
  2941. OtherCostPropertyBJ: ['visa', 'hcp', 'cp', 'bx', 'hs', 'dj', 'gw', 'lyj'],
  2942. peopleNumber: 1,
  2943. centerheight: 700,
  2944. defaultheight: 50,
  2945. rules: {
  2946. rate: [
  2947. { pattern: /^-?\d+\.?\d*$/, message: '请输入正确数据', trigger: 'blur', required: true, }
  2948. ],
  2949. tax: [
  2950. { pattern: /^-?\d+\.?\d*$/, message: '请输入正确数据', trigger: 'blur', required: true, }
  2951. ],
  2952. },
  2953. HotelRules: {
  2954. sgr: [
  2955. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2956. ],
  2957. tbr: [
  2958. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2959. ],
  2960. suite: [
  2961. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2962. ],
  2963. jses: [
  2964. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2965. ],
  2966. },
  2967. CostTimeRules: {
  2968. costTypeendTime: [
  2969. { message: '请输入结束时间', trigger: 'blur', required: true, },
  2970. ],
  2971. costTypenumber: [
  2972. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2973. ],
  2974. costTypeStartTime: [
  2975. { message: '请输入开始时间', trigger: 'blur', required: true, },
  2976. ],
  2977. },
  2978. titleText: [],
  2979. vehicleLables: ['VF', 'T/G OF', 'T/G S', 'T/G TF', 'C/F OF'],
  2980. DJMeal: ['B', 'L', 'D'],
  2981. SubsidizedMeals: ['T/G M', 'C/F M'],
  2982. NightRepair: ['T/G A'],
  2983. AttractionsTickets: ['T/G EF', 'EF'],
  2984. MiscellaneousFees: ['B/R/F', 'TE', 'T/L F'],
  2985. ATip: ['T/G T', 'DRV T'],
  2986. visaCountryInfoArr: [],
  2987. equalWhere: [
  2988. { "Visa": "visa" },
  2989. { "HeSuan": "hs" },
  2990. { "Insurance": "bx" },
  2991. { "JJC": "jjc" },
  2992. { "GWC": "gwc" },
  2993. { "TDC": "tdc" }
  2994. ],
  2995. ShowBaoPi: [
  2996. ],
  2997. dialogSelectObject: {
  2998. },
  2999. columnTotalData: [
  3000. {
  3001. "label": "DAY",
  3002. "tips": "",
  3003. "totalPrice": 0,
  3004. "singlePrice": 0,
  3005. "singleTips": "",
  3006. "width": 50,
  3007. },
  3008. {
  3009. "label": "DATE",
  3010. "tips": "",
  3011. "totalPrice": 0,
  3012. "singlePrice": 0,
  3013. "singleTips": "",
  3014. "width": 100,
  3015. },
  3016. {
  3017. "label": "ITIN",
  3018. "tips": "",
  3019. "totalPrice": 0,
  3020. "singlePrice": 0,
  3021. "singleTips": "",
  3022. "width": 100,
  3023. },
  3024. {
  3025. "label": "VA",
  3026. "tips": "",
  3027. "totalPrice": 0,
  3028. "singlePrice": 0,
  3029. "singleTips": "",
  3030. "width": 100,
  3031. },
  3032. {
  3033. "label": "VT",
  3034. "tips": "",
  3035. "totalPrice": 0,
  3036. "singlePrice": 0,
  3037. "singleTips": "",
  3038. "width": 100,
  3039. },
  3040. {
  3041. "label": "VF",
  3042. "tips": "车费用\n",
  3043. "totalPrice": 0,
  3044. "singlePrice": 0,
  3045. "singleTips": "车费用人均\n",
  3046. "width": 60,
  3047. },
  3048. {
  3049. "label": "VN",
  3050. "tips": "",
  3051. "totalPrice": 0,
  3052. "singlePrice": 0,
  3053. "singleTips": "",
  3054. "width": 60,
  3055. },
  3056. {
  3057. "label": "VRD",
  3058. "tips": "",
  3059. "totalPrice": 0,
  3060. "singlePrice": 0,
  3061. "singleTips": "",
  3062. "width": 60,
  3063. },
  3064. {
  3065. "label": "T/G S",
  3066. "tips": "导游工资\n",
  3067. "totalPrice": 0,
  3068. "singlePrice": 0,
  3069. "singleTips": "导游工资人均\n",
  3070. "width": 60,
  3071. },
  3072. {
  3073. "label": "T/G N",
  3074. "tips": "",
  3075. "totalPrice": 0,
  3076. "singlePrice": 0,
  3077. "singleTips": "",
  3078. "width": 60,
  3079. },
  3080. {
  3081. "label": "T/G WH",
  3082. "tips": "",
  3083. "totalPrice": 0,
  3084. "singlePrice": 0,
  3085. "singleTips": "",
  3086. "width": 60,
  3087. },
  3088. {
  3089. "label": "T/G OF",
  3090. "tips": "导游超时费用\n",
  3091. "totalPrice": 0,
  3092. "singlePrice": 0,
  3093. "singleTips": "导游超时费用人均\n",
  3094. "width": 60,
  3095. },
  3096. {
  3097. "label": "T/G M",
  3098. "tips": "导游餐补\n",
  3099. "totalPrice": 0,
  3100. "singlePrice": 0,
  3101. "singleTips": "导游餐补人均\n",
  3102. "width": 60,
  3103. },
  3104. {
  3105. "label": "T/G A",
  3106. "tips": "导游房补\n",
  3107. "totalPrice": 0,
  3108. "singlePrice": 0,
  3109. "singleTips": "导游房补人均\n",
  3110. "width": 60,
  3111. },
  3112. {
  3113. "label": "T/G TF",
  3114. "tips": "导游交通费\n",
  3115. "totalPrice": 0,
  3116. "singlePrice": 0,
  3117. "singleTips": "导游交通费人均\n",
  3118. "width": 60,
  3119. },
  3120. {
  3121. "label": "T/G EF",
  3122. "tips": "导游景点费\n",
  3123. "totalPrice": 0,
  3124. "singlePrice": 0,
  3125. "singleTips": "导游景点费人均\n",
  3126. "width": 60,
  3127. },
  3128. {
  3129. "label": "C/F M",
  3130. "tips": "司机餐补\n",
  3131. "totalPrice": 0,
  3132. "singlePrice": 0,
  3133. "singleTips": "司机餐补人均\n",
  3134. "width": 60,
  3135. },
  3136. {
  3137. "label": "C/F OF",
  3138. "tips": "司机超时费用\n",
  3139. "totalPrice": 0,
  3140. "singlePrice": 0,
  3141. "singleTips": "司机超时费用人均\n",
  3142. "width": 60,
  3143. },
  3144. {
  3145. "label": "B",
  3146. "tips": "早餐费用\n",
  3147. "totalPrice": 0,
  3148. "singlePrice": 0,
  3149. "singleTips": "早餐费用人均\n",
  3150. "width": 60,
  3151. },
  3152. {
  3153. "label": "L",
  3154. "tips": "午餐费用\n",
  3155. "totalPrice": 0,
  3156. "singlePrice": 0,
  3157. "singleTips": "午餐费用人均\n",
  3158. "width": 60,
  3159. },
  3160. {
  3161. "label": "D",
  3162. "tips": "晚餐费用\n",
  3163. "totalPrice": 0,
  3164. "singlePrice": 0,
  3165. "singleTips": "晚餐费用人均\n",
  3166. "width": 60,
  3167. },
  3168. {
  3169. "label": "TBR",
  3170. "tips": "双人间费用\n",
  3171. "totalPrice": 0,
  3172. "singlePrice": 0,
  3173. "singleTips": "双人间费用人均\n",
  3174. "width": 60,
  3175. },
  3176. {
  3177. "label": "SGR",
  3178. "tips": "单间费用\n",
  3179. "totalPrice": 0,
  3180. "singlePrice": 0,
  3181. "singleTips": "单间费用人均\n",
  3182. "width": 60,
  3183. },
  3184. {
  3185. "label": "JS/ES",
  3186. "tips": "小套房/豪华套房费用\n",
  3187. "totalPrice": 0,
  3188. "singlePrice": 0,
  3189. "singleTips": "小套房/豪华套房费用人均\n",
  3190. "width": 60,
  3191. },
  3192. {
  3193. "label": "SUITE",
  3194. "tips": "套房费用\n",
  3195. "totalPrice": 0,
  3196. "singlePrice": 0,
  3197. "singleTips": "套房费用人均\n",
  3198. "width": 60,
  3199. },
  3200. {
  3201. "label": "ACCO N",
  3202. "tips": "",
  3203. "totalPrice": 0,
  3204. "singlePrice": 0,
  3205. "singleTips": "",
  3206. "width": 100,
  3207. },
  3208. {
  3209. "label": "TV/N",
  3210. "tips": "",
  3211. "totalPrice": 0,
  3212. "singlePrice": 0,
  3213. "singleTips": "",
  3214. "width": 60,
  3215. },
  3216. {
  3217. "label": "IF/N",
  3218. "tips": "",
  3219. "totalPrice": 0,
  3220. "singlePrice": 0,
  3221. "singleTips": "",
  3222. "width": 60,
  3223. },
  3224. {
  3225. "label": "T/V",
  3226. "tips": "公务活动费用\n",
  3227. "totalPrice": 0,
  3228. "singlePrice": 0,
  3229. "singleTips": "公务活动费用人均\n",
  3230. "width": 60,
  3231. },
  3232. {
  3233. "label": "1/L",
  3234. "tips": "公务活动费用\n",
  3235. "totalPrice": 0,
  3236. "singlePrice": 0,
  3237. "singleTips": "公务活动费用人均\n",
  3238. "width": 60,
  3239. },
  3240. {
  3241. "label": "I/F",
  3242. "tips": "公务翻译费用\n",
  3243. "totalPrice": 0,
  3244. "singlePrice": 0,
  3245. "singleTips": "公务翻译费用人均\n",
  3246. "width": 60,
  3247. },
  3248. {
  3249. "label": "EF",
  3250. "tips": "景点门票\n",
  3251. "totalPrice": 0,
  3252. "singlePrice": 0,
  3253. "singleTips": "景点门票人均\n",
  3254. "width": 60,
  3255. },
  3256. {
  3257. "label": "EFR",
  3258. "tips": "",
  3259. "totalPrice": 0,
  3260. "singlePrice": 0,
  3261. "singleTips": "",
  3262. "width": 100,
  3263. },
  3264. {
  3265. "label": "B/R/F",
  3266. "tips": "饮料零食水果\n",
  3267. "totalPrice": 0,
  3268. "singlePrice": 0,
  3269. "singleTips": "饮料零食水果人均\n",
  3270. "width": 60,
  3271. },
  3272. {
  3273. "label": "TE",
  3274. "tips": "出行物资\n",
  3275. "totalPrice": 0,
  3276. "singlePrice": 0,
  3277. "singleTips": "出行物资人均\n",
  3278. "width": 60,
  3279. },
  3280. {
  3281. "label": "T/G T",
  3282. "tips": "导游小费\n",
  3283. "totalPrice": 0,
  3284. "singlePrice": 0,
  3285. "singleTips": "导游小费人均\n",
  3286. "width": 60,
  3287. },
  3288. {
  3289. "label": "DRV T",
  3290. "tips": "司机小费\n",
  3291. "totalPrice": 0,
  3292. "singlePrice": 0,
  3293. "singleTips": "司机小费人均\n",
  3294. "width": 60,
  3295. },
  3296. {
  3297. "label": "P/C",
  3298. "tips": "零用金\n",
  3299. "totalPrice": 0,
  3300. "singlePrice": 0,
  3301. "singleTips": "零用金人均\n",
  3302. "width": 60,
  3303. },
  3304. {
  3305. "label": "T/L F",
  3306. "tips": "领队费\n",
  3307. "totalPrice": 0,
  3308. "singlePrice": 0,
  3309. "singleTips": "领队费人均\n",
  3310. "width": 60,
  3311. },
  3312. {
  3313. "label": "E/C T",
  3314. "tips": "会务费\n",
  3315. "totalPrice": 0,
  3316. "singlePrice": 0,
  3317. "singleTips": "会务费人均\n",
  3318. "width": 60,
  3319. }
  3320. ],
  3321. autoSave: null,
  3322. acconarr: [],
  3323. acconarrs: [],
  3324. isShare: 0,
  3325. blackCodeIsTrue: false,
  3326. dialogTableVisible: false,
  3327. gridData: [],
  3328. //监听变量
  3329. //count: 0,
  3330. x: 0,
  3331. y: 0,
  3332. tableDatas: [],
  3333. dialogTableVisibleXJ: false,
  3334. checkboxsXJ: [],
  3335. historyCarInput: '',
  3336. historyCarDialog: false,
  3337. historyCarData: [],
  3338. // {
  3339. // "value": "id",
  3340. // "label": ""
  3341. // },
  3342. historyCarCloumns: [
  3343. {
  3344. "value": "teamName",
  3345. "label": "团组名称"
  3346. },
  3347. {
  3348. "value": "start",
  3349. "label": "开始时间"
  3350. },
  3351. {
  3352. "value": "end",
  3353. "label": "结束时间"
  3354. },
  3355. {
  3356. "value": "area",
  3357. "label": "地区"
  3358. },
  3359. {
  3360. "value": "price",
  3361. "label": "总价格"
  3362. },
  3363. {
  3364. "value": "dayPrice",
  3365. "label": "单日价格"
  3366. },
  3367. {
  3368. "value": "priceName",
  3369. "label": "费用名称"
  3370. },
  3371. {
  3372. "value": "priceContent",
  3373. "label": "费用明细"
  3374. },
  3375. {
  3376. "value": "datePrice",
  3377. "label": "费用准确日期"
  3378. }
  3379. ],
  3380. historyCarSelectObject: {},
  3381. historyCarIndex: -1,
  3382. hotelIsTrue: false,
  3383. rollcallarr: [],
  3384. blackCodeListSeLect: [],
  3385. blackCodeSelect: '',
  3386. selectLoading: false,
  3387. dialogCopyVisible: false,
  3388. dialogCopySelect: '',
  3389. showEditGroupInfoDialog: false,
  3390. groupInfoRules: {
  3391. visitDate: [
  3392. { required: true, message: '请选择日期', trigger: 'blur' }
  3393. ],
  3394. visitPNumber: [
  3395. { required: true, message: '请输入人数', trigger: 'blur' },
  3396. { type: 'integer', message: '人数必须为整数', trigger: 'blur' },
  3397. ],
  3398. visitDays: [
  3399. { required: true, message: '请输入天数', trigger: 'blur' },
  3400. { type: 'integer', message: '访问天数必须为整数', trigger: 'blur' },
  3401. ]
  3402. },
  3403. groupInfoEditData: {
  3404. visitDate: '',
  3405. visitPNumber: 0,
  3406. visitDays: 0
  3407. },
  3408. excludeGroupList: [2836],
  3409. groupModuleOperators: [],
  3410. hideGroupModuleId: [98],
  3411. groupcostXSVisible: false,
  3412. groupcostXSList: [],
  3413. };
  3414. },
  3415. watch: {
  3416. costTypeHotelNumbers: {
  3417. handler(val) {
  3418. for (var i = 0; i < val.length; i++) {
  3419. ////console.log(val[i]);
  3420. if (val[i].tbr == '') {
  3421. val[i].tbr = 0
  3422. }
  3423. if (val[i].sgr == '') {
  3424. val[i].sgr = 0
  3425. }
  3426. if (val[i].jses == '') {
  3427. val[i].jses = 0
  3428. }
  3429. if (val[i].suite == '') {
  3430. val[i].suite = 0
  3431. }
  3432. }
  3433. },
  3434. deep: true
  3435. },
  3436. 'tableData.length': {
  3437. handler(newValue, oldValue) {
  3438. if (newValue !== oldValue) {
  3439. if (this.tableData.length > 3) {
  3440. this.centerheight = 700;
  3441. } else {
  3442. this.centerheight = this.defaultheight + (this.tableData.length * 230) - ((this.tableData.length - 1) * 50);
  3443. }
  3444. ////////console.log('高度' + this.centerheight);
  3445. }
  3446. }
  3447. }
  3448. },
  3449. methods: {
  3450. capslk(val, index) {
  3451. this.tableData[index].itin = val.toUpperCase()
  3452. },
  3453. acconblur(index) {
  3454. setTimeout(() => {
  3455. document.querySelectorAll('.accon-ul')[index].classList.remove('accons-ul')
  3456. }, 150)
  3457. },
  3458. acconinput(val, index) {
  3459. this.acconarr = [];
  3460. this.acconarrs = [];
  3461. ////console.log(val);
  3462. ////console.log(index);
  3463. for (var i = 0; i < this.tableData.length; i++) {
  3464. this.acconarr.push(this.tableData[i].accon)
  3465. }
  3466. for (var j = 0; j < this.acconarr.length; j++) {
  3467. if (this.acconarr[j].includes(val)) {
  3468. this.acconarrs.push(this.acconarr[j])
  3469. }
  3470. }
  3471. this.acconarrs = Array.from(new Set(this.acconarrs));
  3472. ////console.log(this.acconarrs)
  3473. document.querySelectorAll('.accon-ul')[index].classList.add('accons-ul')
  3474. },
  3475. acconclick(val, index) {
  3476. this.tableData[index].accon = val;
  3477. },
  3478. getSummaries(param) {
  3479. var that = this;
  3480. //////console.log(param)
  3481. const { columns, data } = param;
  3482. const sums = [];
  3483. const sums1 = [];
  3484. const texts = [];
  3485. var prices = [];
  3486. var BUpdate = []
  3487. var thisData = data;
  3488. var ATime = { start: that.addOneDay(that.AGroupCostParameter.costTypeStartTime, 0), end: that.addOneDay(that.AGroupCostParameter.costTypeendTime, 0) };
  3489. var BTime = { start: that.addOneDay(that.BGroupCostParameter.costTypeStartTime, 0), end: that.addOneDay(that.BGroupCostParameter.costTypeendTime, 0) };
  3490. ////////console.log('ATime,BTime', ATime, BTime);
  3491. var data1 = [];
  3492. var data2 = [];
  3493. ////////console.log('datas', data);
  3494. if (that.costTypevalue == 'B') {
  3495. for (var i = 0; i < thisData.length; i++) {
  3496. var forTime = thisData[i].date;
  3497. if (forTime == '' && i != 0) {
  3498. forTime = thisData[i - 1].date;
  3499. }
  3500. if (forTime) {
  3501. forTime = new Date(forTime).getTime();
  3502. }
  3503. if (forTime >= new Date(ATime.start).getTime() && forTime <= new Date(ATime.end).getTime()) {
  3504. data1.push(thisData[i])
  3505. }
  3506. if (forTime >= new Date(BTime.start).getTime() && forTime <= new Date(BTime.end).getTime()) {
  3507. data2.push(thisData[i])
  3508. }
  3509. }
  3510. thisData = data1;
  3511. if (isNaN(Number(that.AGroupCostParameter.costTypenumber)) || Number(that.AGroupCostParameter.costTypenumber) < 1) {
  3512. that.peopleNumber = 1;
  3513. } else {
  3514. that.peopleNumber = Number(that.AGroupCostParameter.costTypenumber);
  3515. }
  3516. }
  3517. //////console.log('3data', thisData, data1, data2);
  3518. columns.forEach((column, index) => {
  3519. if (index === 0) {
  3520. prices[index] = "总计:";
  3521. that.lableSetPrice(column.label, '', '');
  3522. return;
  3523. }
  3524. if (column.label == 'DATE' || column.label == 'ITIN' || column.label == 'VT' || column.label == 'VN' || column.label == 'ACCO N' || column.label == 'VA' || column.label == 'VRD' || column.label == 'T/G N' || column.label == 'T/G WH' || column.label == '操作' || column.label == 'TV/N' || column.label == 'IF/N' || column.label == 'EFR') {
  3525. prices[index] = "——";
  3526. that.lableSetPrice(column.label, '', '');
  3527. return;
  3528. }
  3529. const values = thisData.map(item => Number(item[column.property]));
  3530. if (!values.every(value => isNaN(value))) {
  3531. sums[index] = values.reduce((prev, curr) => {
  3532. const value = Number(curr);
  3533. if (!isNaN(value)) {
  3534. return prev + curr;
  3535. } else {
  3536. return prev;
  3537. }
  3538. }, 0);
  3539. if (column.label == 'B' || column.label == 'L' || column.label == 'D' || column.label == 'EF' || column.label == 'TE' || column.label == 'T/G T' || column.label == 'P/C' || column.label == 'DRV T' || column.label == 'DRV T') {
  3540. that.lableSetPrice(column.label, (sums[index] * that.peopleNumber).toFixed(2), (sums[index]).toFixed(2));
  3541. prices[index] = '共' + (sums[index] * that.peopleNumber).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index]).toFixed(2) + " " + this.getCurr; //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3542. }
  3543. else if (column.label == 'SGR' || column.label == 'JS/ES' || column.label == 'SUITE' || column.label == 'TBR') {
  3544. if (column.label == 'TBR') {
  3545. that.lableSetPrice(column.label, (sums[index]).toFixed(2), (sums[index] / 2).toFixed(2));
  3546. prices[index] = '共' + (sums[index]).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index] / 2).toFixed(2) + " " + this.getCurr;
  3547. } else {
  3548. that.lableSetPrice(column.label, (sums[index]).toFixed(2), (sums[index]).toFixed(2));
  3549. prices[index] = '共' + (sums[index]).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index]).toFixed(2) + " " + this.getCurr;
  3550. }
  3551. }
  3552. else {
  3553. that.lableSetPrice(column.label, sums[index].toFixed(2), (sums[index] / that.peopleNumber).toFixed(2));
  3554. prices[index] = '共' + sums[index].toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index] / that.peopleNumber).toFixed(2) + " " + this.getCurr;//sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3555. sums[index] = parseFloat((sums[index] / that.peopleNumber).toFixed(2));
  3556. }
  3557. } else {
  3558. prices[index] = 'N/A';
  3559. }
  3560. if (that.costTypevalue == 'B') {
  3561. const values1 = data2.map(item => Number(item[column.property]));
  3562. if (!values1.every(value => isNaN(value))) {
  3563. sums1[index] = values1.reduce((prev, curr) => {
  3564. const value = Number(curr);
  3565. if (!isNaN(value)) {
  3566. return prev + curr;
  3567. } else {
  3568. return prev;
  3569. }
  3570. }, 0);
  3571. if (column.label == 'B' || column.label == 'L' || column.label == 'D' || column.label == 'EF' || column.label == 'TE' || column.label == 'T/G T' || column.label == 'P/C' || column.label == 'DRV T' || column.label == 'DRV T') {
  3572. BUpdate.push({ label: column.label, total: (sums1[index] * that.BGroupCostParameter.costTypenumber).toFixed(2), single: (sums1[index]).toFixed(2) });
  3573. prices[index] = 'A段费用' + prices[index] + '\r\nB段费用共' + (sums1[index] * that.BGroupCostParameter.costTypenumber).toFixed(2) + " " + this.getCurr + '\r\n人均' + (sums1[index]).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3574. }
  3575. else if (column.label == 'SGR' || column.label == 'JS/ES' || column.label == 'SUITE' || column.label == 'TBR') {
  3576. if (column.label == 'TBR') {
  3577. BUpdate.push({ label: column.label, total: (sums1[index]).toFixed(2), single: (sums1[index] / 2).toFixed(2) });
  3578. prices[index] = 'A段费用' + prices[index] + '\r\nB段费用共' + (sums1[index]).toFixed(2) + " " + this.getCurr + '\r\n人均' + (sums1[index] / 2).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3579. } else {
  3580. BUpdate.push({ label: column.label, total: (sums1[index]).toFixed(2), single: (sums1[index]).toFixed(2) });
  3581. prices[index] = 'A段费用' + prices[index] + '\r\nB段费用共' + (sums1[index]).toFixed(2) + " " + this.getCurr + '\r\n人均' + (sums1[index]).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3582. }
  3583. }
  3584. else {
  3585. BUpdate.push({ label: column.label, total: sums1[index].toFixed(2), single: (sums1[index] / that.BGroupCostParameter.costTypenumber).toFixed(2) });
  3586. prices[index] = 'A段费用' + prices[index] + '\r\nB段费用共' + sums1[index].toFixed(2) + " " + this.getCurr + '\r\n人均' + (sums1[index] / that.BGroupCostParameter.costTypenumber).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3587. sums1[index] = ((sums1[index] / that.BGroupCostParameter.costTypenumber).toFixed(2));
  3588. }
  3589. } else {
  3590. prices[index] = 'A段费用' + prices[index] + ' B段费用' + 'N/A';
  3591. }
  3592. }
  3593. var fliterList = that.sumTopPrice.filter(function (x) {
  3594. return x.name == column.property;
  3595. })
  3596. if (fliterList.length == 0) {
  3597. that.sumTopPrice.push({ name: column.property, label: column.label, Aprice: sums[index], Bprice: sums1[index] == undefined ? 0 : sums1[index] });
  3598. } else {
  3599. fliterList[0].Aprice = sums[index];
  3600. fliterList[0].Bprice = sums1[index] == undefined ? 0 : sums1[index];
  3601. }
  3602. var TextfliterList = texts.filter(function (x) {
  3603. return x.label == column.label;
  3604. })
  3605. var text = prices[index];
  3606. if (TextfliterList.length == 0) {
  3607. texts.push({ label: column.label, text: text });
  3608. } else {
  3609. TextfliterList[0].text = text;
  3610. }
  3611. });
  3612. this.titleText = texts;
  3613. ////////console.log(that.sumTopPrice, 'sumTopPrice---------------');
  3614. this.CalculatedPrice();
  3615. //////////console.log(that.sumTopPrice, '------------');
  3616. setTimeout(() => {
  3617. this.setLastTitle(prices);
  3618. if (that.costTypevalue == 'B') {
  3619. //遍历bupdate
  3620. BUpdate.forEach(function (item) {
  3621. that.BlableSetPrice(item.label, item.total, item.single);
  3622. })
  3623. }
  3624. }, 600);
  3625. return prices;
  3626. },
  3627. handleEdit(index, row, buttonIndex) {
  3628. //////////console.log(index, row, buttonIndex);
  3629. this.rowIndex = index; // 行的索引
  3630. var api = '';
  3631. switch (buttonIndex) {
  3632. case 1:
  3633. api = 'GetCarGuides';
  3634. this.DialogTitle = '选择车导数据';
  3635. break;
  3636. case 2:
  3637. api = 'GetGuidesInfo';
  3638. this.DialogTitle = '导游信息';
  3639. break;
  3640. case 3:
  3641. api = 'GetCarInfo';
  3642. this.DialogTitle = '选择车数据';
  3643. break;
  3644. case 4:
  3645. api = 'GetScenicSpotInfo';
  3646. this.DialogTitle = '景点信息';
  3647. break;
  3648. }
  3649. if (api == '') {
  3650. this.$message.error('程序异常!');
  3651. return;
  3652. }
  3653. this.dialogSearchInput = this.grouptitleinfo.visitCountry;
  3654. var dataC = this.dialogColumn.filter(x => x.index == buttonIndex);
  3655. if (dataC.length == 0) {
  3656. this.SeldialogColumn = [];
  3657. } else {
  3658. this.SeldialogColumn = dataC[0].data;
  3659. }
  3660. var that = this;
  3661. this.$axios.post('/api/Groups/' + api, {}, {
  3662. headers: {
  3663. 'Authorization': that.token,
  3664. }
  3665. }).then(resp => {
  3666. ////////console.log(resp.data.data, '------------------------------------');
  3667. that.outerVisible = true;
  3668. if (resp.data.code == 200) {
  3669. that.dialogTableData = resp.data.data;
  3670. } else {
  3671. that.$message.error('获取数据失败!' + resp.data.msg);
  3672. }
  3673. })
  3674. },
  3675. handleDelete(index, row, rows) {
  3676. ////////console.log(index, row, rows);
  3677. this.$confirm('此操作将删除该条信息, 是否继续?', '提示', {
  3678. confirmButtonText: '确定',
  3679. cancelButtonText: '取消',
  3680. type: 'warning'
  3681. }).then(() => {
  3682. this.$message({
  3683. message: '已删除',
  3684. type: 'success',
  3685. offset: 50
  3686. });
  3687. rows.splice(index, 1);
  3688. }).catch(() => {
  3689. this.$message({
  3690. type: 'info',
  3691. message: '已取消删除'
  3692. });
  3693. });
  3694. },
  3695. //减
  3696. increase(val) {
  3697. ////console.log(this.tableData[val]);
  3698. if (this.tableData[val].day == "-") {
  3699. this.tableData[val].day = 0
  3700. }
  3701. if (this.tableData[val].day <= 1) {
  3702. return
  3703. }
  3704. this.tableData[val].day--
  3705. this.NumberSetTime(this.tableData[val].day, val)
  3706. },
  3707. //加
  3708. decrease(val) {
  3709. if (this.tableData[val].day == "-") {
  3710. this.tableData[val].day = 0
  3711. }
  3712. this.tableData[val].day++
  3713. this.NumberSetTime(this.tableData[val].day, val)
  3714. },
  3715. addStrip() {
  3716. var souerLength = this.tableData.length - 1;
  3717. var dataStr = "";
  3718. var day = '-';
  3719. if (souerLength >= 0) {
  3720. dataStr = this.tableData[souerLength].date;
  3721. dataStr = this.addOneDay(dataStr, 1);
  3722. var getDay = this.tableData[souerLength].day;
  3723. if (getDay) {
  3724. day = parseInt(getDay) + 1;
  3725. } else {
  3726. try {
  3727. day = parseInt(this.tableData[souerLength - 1].day) + 1;
  3728. dataStr = this.addOneDay(this.tableData[souerLength - 1].date, 1)
  3729. } catch (e) {
  3730. dataStr = "";
  3731. day = '-';
  3732. }
  3733. }
  3734. }
  3735. this.tableData.push(
  3736. {
  3737. "diid": this.diid,
  3738. "day": day,
  3739. "date": dataStr,
  3740. "itin": "",
  3741. "carType": "",
  3742. "carCost": "",
  3743. "carNumber": "",
  3744. "carTiming": "",
  3745. "tgs": "",
  3746. "tgwh": "",
  3747. "tgn": "",
  3748. "tgof": "",
  3749. "tgm": "",
  3750. "tga": "",
  3751. "tgtf": "",
  3752. "tgef": "",
  3753. "cfs": "",
  3754. "cfm": "",
  3755. "cfof": "",
  3756. "b": "",
  3757. "l": "",
  3758. "d": "",
  3759. "tbr": "",
  3760. "sgr": "",
  3761. "jS_ES": "",
  3762. "suite": "",
  3763. "accon": "",
  3764. "tv": "",
  3765. "iL": "",
  3766. "if": "",
  3767. "ef": "",
  3768. "b_R_F": "",
  3769. "te": "",
  3770. "tgTips": "",
  3771. "drvTips": "",
  3772. "pc": "",
  3773. "tlf": "",
  3774. "ect": "",
  3775. "id": 1,
  3776. "gwCount": "",
  3777. "fyCount": "",
  3778. "efr": "",
  3779. }
  3780. )
  3781. },
  3782. loadData(id) {
  3783. this.costloading = true;
  3784. this.tableData = [];
  3785. var that = this;
  3786. this.$axios.post('/api/Groups/GroupCostInit', {
  3787. Diid: id
  3788. }, {
  3789. headers: {
  3790. 'Authorization': that.token,
  3791. }
  3792. }).then(resp => {
  3793. setTimeout(() => {
  3794. that.PostTourClientListByDiId(id);
  3795. }, 1000)
  3796. ////////console.log(resp.data.data, '------------------------------------');
  3797. if (resp.data.code == 200) {
  3798. that.options = resp.data.data.groupList;
  3799. that.grouptitleinfo = resp.data.data.groupInfo.data;
  3800. that.diid = that.grouptitleinfo.id;
  3801. localStorage.setItem('costLoadData', JSON.stringify({
  3802. diid: that.diid
  3803. }))
  3804. setTimeout(() => {
  3805. that.QueryRate();
  3806. }, 500)
  3807. for (var i = 0; i < that.CheckBoxListSelect.length; i++) {
  3808. that.CheckBoxListSelect[i].diid = that.diid;
  3809. }
  3810. if (resp.data.data.groupChecks.length > 0) {
  3811. resp.data.data.groupChecks.forEach(item => {
  3812. for (var i = 0; i < that.CheckBoxListSelect.length; i++) {
  3813. if (item.cbType == that.CheckBoxListSelect[i].cbType) {
  3814. that.CheckBoxListSelect[i].cbValues = item.cbValues.split(',');
  3815. ////////console.log(item.cbValues.split(','));
  3816. break;
  3817. }
  3818. if (that.CheckBoxListSelect[i].diid == 0) {
  3819. that.CheckBoxListSelect[i].diid = that.diid;
  3820. }
  3821. }
  3822. })
  3823. } else {
  3824. that.CheckBoxListSelect = [
  3825. {
  3826. "diid": that.diid,
  3827. "cbType": "Top",
  3828. "cbValues": ['DAY', 'DATE', 'ITIN', 'VA', 'VT', 'VF', 'VRD', 'T/G S', 'T/G WH', 'C/F M', 'L', 'D', 'SGR', 'SUITE', 'ACCO N', 'T/V', 'EF', 'EFR', 'B/R/F', 'TE', 'DRV T', 'P/C'] //"string"
  3829. },
  3830. {
  3831. "diid": that.diid,
  3832. "cbType": "Left",
  3833. "cbValues": ['签证', '机票', '保险', '地接', '公务', '零用金'] //"string"
  3834. },
  3835. {
  3836. "diid": that.diid,
  3837. "cbType": "Right",
  3838. "cbValues": ['公务舱 SGR', '经济舱 SGR', '团组预算明细'] //"string"
  3839. }
  3840. ]
  3841. }
  3842. that.CheckBoxListSelect.forEach(x => {
  3843. if (x.cbType == 'Top') {
  3844. if (x.cbValues.includes("EF") && !x.cbValues.includes("EFR")) {
  3845. x.cbValues.push("EFR");
  3846. }
  3847. }
  3848. });
  3849. that.grouptitleinfo.visitStartDate = that.grouptitleinfo.visitStartDate.split(' ')[0];
  3850. that.grouptitleinfo.visitEndDate = that.grouptitleinfo.visitEndDate.split(' ')[0];
  3851. that.peopleNumber = that.grouptitleinfo.visitPNumber > 0 ? that.grouptitleinfo.visitPNumber : 1;
  3852. if (resp.data.data.groupCost.length > 0) {
  3853. that.tableData = resp.data.data.groupCost;
  3854. ////console.log(that.tableData);
  3855. for (var i = 0; i < that.tableData.length; i++) {
  3856. for (var prop in that.tableData[i]) {
  3857. ////console.log(that.tableData[i][prop]);
  3858. if (that.tableData[i][prop] == 0) {
  3859. that.tableData[i][prop] = ''
  3860. }
  3861. }
  3862. }
  3863. } else {
  3864. that.tableData = [
  3865. {
  3866. "diid": that.diid,
  3867. "day": "-",
  3868. "date": "",
  3869. "itin": "",
  3870. "carType": "",
  3871. "carCost": "",
  3872. "carNumber": "",
  3873. "carTiming": "",
  3874. "tgs": "",
  3875. "tgwh": "",
  3876. "tgn": "",
  3877. "tgof": "",
  3878. "tgm": "",
  3879. "tga": "",
  3880. "tgtf": "",
  3881. "tgef": "",
  3882. "cfs": "",
  3883. "cfm": "",
  3884. "cfof": "",
  3885. "b": "",
  3886. "l": "",
  3887. "d": "",
  3888. "tbr": "",
  3889. "sgr": "",
  3890. "jS_ES": "",
  3891. "suite": "",
  3892. "accon": "",
  3893. "tv": "",
  3894. "iL": "",
  3895. "if": "",
  3896. "ef": "",
  3897. "b_R_F": "",
  3898. "te": "",
  3899. "tgTips": "",
  3900. "drvTips": "",
  3901. "pc": "",
  3902. "tlf": "",
  3903. "ect": "",
  3904. "id": 1,
  3905. "gwCount": "",
  3906. "fyCount": "",
  3907. "efr": "",
  3908. }
  3909. ]
  3910. }
  3911. if (resp.data.data.groupCostParameter.length > 0) {
  3912. var acostvalue = resp.data.data.groupCostParameter.filter(x => x.costType == 'A')[0];
  3913. if (acostvalue != undefined) {
  3914. that.AGroupCostParameter = acostvalue;
  3915. that.isShare = that.AGroupCostParameter.isShare;//是否通知
  3916. ////console.log(that.AGroupCostParameter)
  3917. var result = Number(that.AGroupCostParameter.currency);
  3918. if (isNaN(result)) {
  3919. } else {
  3920. that.AGroupCostParameter.currency = result;
  3921. }
  3922. } else {
  3923. that.AGroupCostParameter = {
  3924. "id": 0,
  3925. "diId": 0,
  3926. "currency": "CNY",
  3927. "rate": 0,
  3928. "tax": 0,
  3929. "ffys": 0,
  3930. "hotelXS": 0,
  3931. "jjccb": 0,
  3932. "jjcxs": 0,
  3933. "jjcrs": 0,
  3934. "gwccb": 0,
  3935. "gwcxs": 0,
  3936. "gwcrs": 0,
  3937. "hcpcb": 0,
  3938. "hcpxs": 0,
  3939. "hcprs": 0,
  3940. "cpcb": 0,
  3941. "cpxs": 0,
  3942. "cprs": 0,
  3943. "bxcb": 0,
  3944. "bxxs": 25,
  3945. "bxrs": 0,
  3946. "hscb": 0,
  3947. "hsxs": 0,
  3948. "hsrs": 0,
  3949. "visaCB": 0,
  3950. "visaXS": 0,
  3951. "visaRS": 0,
  3952. "gwcb": 0,
  3953. "gwxs": 0,
  3954. "gwrs": 0,
  3955. "djcb": 0,
  3956. "djrs": 0,
  3957. "djxs": 0,
  3958. "sgrcb": 0,
  3959. "sgrNumber": 0,
  3960. "sgrxs": 0,
  3961. "tbrcb": 0,
  3962. "tbrNumber": 0,
  3963. "tbrxs": 0,
  3964. "jsescb": 0,
  3965. "jsesNumber": 0,
  3966. "jsesxs": 0,
  3967. "suitecb": 0,
  3968. "suiteNumber": 0,
  3969. "suitexs": 0,
  3970. "lyjcb": 0,
  3971. "lyjxs": 0,
  3972. "lyjrs": 0,
  3973. "isShare": 0,
  3974. "costType": "A",
  3975. "costTypeStartTime": "",
  3976. "costTypeendTime": "",
  3977. "costTypenumber": 0,
  3978. "tdccb": 0,
  3979. "tdcxs": 0,
  3980. "tdcrs": 0
  3981. };
  3982. }
  3983. var bcostvalue = resp.data.data.groupCostParameter.filter(x => x.costType == 'B')[0];
  3984. if (bcostvalue != undefined) {
  3985. that.BGroupCostParameter = bcostvalue;
  3986. } else {
  3987. that.BGroupCostParameter = {
  3988. "id": 0,
  3989. "diId": 0,
  3990. "currency": "",
  3991. "rate": 0,
  3992. "tax": 0,
  3993. "ffys": 0,
  3994. "hotelXS": 0,
  3995. "jjccb": 0,
  3996. "jjcxs": 0,
  3997. "jjcrs": 0,
  3998. "gwccb": 0,
  3999. "gwcxs": 0,
  4000. "gwcrs": 0,
  4001. "hcpcb": 0,
  4002. "hcpxs": 0,
  4003. "hcprs": 0,
  4004. "cpcb": 0,
  4005. "cpxs": 0,
  4006. "cprs": 0,
  4007. "bxcb": 0,
  4008. "bxxs": 25,
  4009. "bxrs": 0,
  4010. "hscb": 0,
  4011. "hsxs": 0,
  4012. "hsrs": 0,
  4013. "visaCB": 0,
  4014. "visaXS": 0,
  4015. "visaRS": 0,
  4016. "gwcb": 0,
  4017. "gwxs": 0,
  4018. "gwrs": 0,
  4019. "djcb": 0,
  4020. "djxs": 0,
  4021. "djrs": 0,
  4022. "sgrcb": 0,
  4023. "sgrNumber": 0,
  4024. "sgrxs": 0,
  4025. "tbrcb": 0,
  4026. "tbrNumber": 0,
  4027. "tbrxs": 0,
  4028. "jsescb": 0,
  4029. "jsesNumber": 0,
  4030. "jsesxs": 0,
  4031. "suitecb": 0,
  4032. "suiteNumber": 0,
  4033. "suitexs": 0,
  4034. "lyjcb": 0,
  4035. "lyjxs": 0,
  4036. "lyjrs": 0,
  4037. "isShare": 0,
  4038. "costType": "B",
  4039. "costTypeStartTime": "",
  4040. "costTypeendTime": "",
  4041. "costTypenumber": 0,
  4042. "tdccb": 0,
  4043. "tdcxs": 0,
  4044. "tdcrs": 0
  4045. };
  4046. }
  4047. if (resp.data.data.groupCostParameter.length > 1) {
  4048. that.costTypevalue = "B";
  4049. } else {
  4050. that.costTypevalue = "A";
  4051. }
  4052. if (that.AGroupCostParameter.costTypeStartTime) {
  4053. that.AGroupCostParameter.costTypeStartTime = new Date(that.AGroupCostParameter.costTypeStartTime);
  4054. }
  4055. if (that.AGroupCostParameter.costTypeendTime) {
  4056. that.AGroupCostParameter.costTypeendTime = new Date(that.AGroupCostParameter.costTypeendTime);
  4057. }
  4058. if (that.BGroupCostParameter.costTypeStartTime) {
  4059. that.BGroupCostParameter.costTypeStartTime = new Date(that.BGroupCostParameter.costTypeStartTime);
  4060. }
  4061. if (that.BGroupCostParameter.costTypeendTime) {
  4062. that.BGroupCostParameter.costTypeendTime = new Date(that.BGroupCostParameter.costTypeendTime);
  4063. }
  4064. } else {
  4065. that.AGroupCostParameter = {
  4066. "id": 0,
  4067. "diId": 0,
  4068. "currency": "CNY",
  4069. "rate": 0,
  4070. "tax": 0,
  4071. "ffys": 0,
  4072. "hotelXS": 0,
  4073. "jjccb": 0,
  4074. "jjcxs": 0,
  4075. "jjcrs": 0,
  4076. "gwccb": 0,
  4077. "gwcxs": 0,
  4078. "gwcrs": 0,
  4079. "hcpcb": 0,
  4080. "hcpxs": 0,
  4081. "hcprs": 0,
  4082. "cpcb": 0,
  4083. "cpxs": 0,
  4084. "cprs": 0,
  4085. "bxcb": 0,
  4086. "bxxs": 25,
  4087. "bxrs": 0,
  4088. "hscb": 0,
  4089. "hsxs": 0,
  4090. "hsrs": 0,
  4091. "visaCB": 0,
  4092. "visaXS": 0,
  4093. "visaRS": 0,
  4094. "gwcb": 0,
  4095. "gwxs": 0,
  4096. "gwrs": 0,
  4097. "djcb": 0,
  4098. "djrs": 0,
  4099. "djxs": 0,
  4100. "sgrcb": 0,
  4101. "sgrNumber": 0,
  4102. "sgrxs": 0,
  4103. "tbrcb": 0,
  4104. "tbrNumber": 0,
  4105. "tbrxs": 0,
  4106. "jsescb": 0,
  4107. "jsesNumber": 0,
  4108. "jsesxs": 0,
  4109. "suitecb": 0,
  4110. "suiteNumber": 0,
  4111. "suitexs": 0,
  4112. "lyjcb": 0,
  4113. "lyjxs": 0,
  4114. "lyjrs": 0,
  4115. "isShare": 0,
  4116. "costType": "A",
  4117. "costTypeStartTime": "",
  4118. "costTypeendTime": "",
  4119. "costTypenumber": 0,
  4120. "tdccb": 0,
  4121. "tdcxs": 0,
  4122. "tdcrs": 0
  4123. };
  4124. that.BGroupCostParameter = {
  4125. "id": 0,
  4126. "diId": 0,
  4127. "currency": "",
  4128. "rate": 0,
  4129. "tax": 0,
  4130. "ffys": 0,
  4131. "hotelXS": 0,
  4132. "jjccb": 0,
  4133. "jjcxs": 0,
  4134. "jjcrs": 0,
  4135. "gwccb": 0,
  4136. "gwcxs": 0,
  4137. "gwcrs": 0,
  4138. "hcpcb": 0,
  4139. "hcpxs": 0,
  4140. "hcprs": 0,
  4141. "cpcb": 0,
  4142. "cpxs": 0,
  4143. "cprs": 0,
  4144. "bxcb": 0,
  4145. "bxxs": 25,
  4146. "bxrs": 0,
  4147. "hscb": 0,
  4148. "hsxs": 0,
  4149. "hsrs": 0,
  4150. "visaCB": 0,
  4151. "visaXS": 0,
  4152. "visaRS": 0,
  4153. "gwcb": 0,
  4154. "gwxs": 0,
  4155. "gwrs": 0,
  4156. "djcb": 0,
  4157. "djxs": 0,
  4158. "djrs": 0,
  4159. "sgrcb": 0,
  4160. "sgrNumber": 0,
  4161. "sgrxs": 0,
  4162. "tbrcb": 0,
  4163. "tbrNumber": 0,
  4164. "tbrxs": 0,
  4165. "jsescb": 0,
  4166. "jsesNumber": 0,
  4167. "jsesxs": 0,
  4168. "suitecb": 0,
  4169. "suiteNumber": 0,
  4170. "suitexs": 0,
  4171. "lyjcb": 0,
  4172. "lyjxs": 0,
  4173. "lyjrs": 0,
  4174. "isShare": 0,
  4175. "costType": "B",
  4176. "costTypeStartTime": "",
  4177. "costTypeendTime": "",
  4178. "costTypenumber": 0,
  4179. "tdccb": 0,
  4180. "tdcxs": 0,
  4181. "tdcrs": 0
  4182. };
  4183. that.AGroupCostParameter.diId = that.diid;
  4184. that.BGroupCostParameter.diId = that.diid;
  4185. that.costTypevalue = 'A';
  4186. }
  4187. let hotelNumber = resp.data.data.hotelNumber;
  4188. if (hotelNumber.length > 0) {
  4189. for (var i = 0; i < hotelNumber.length; i++) {
  4190. //替换costTypeHotelNumbers ;
  4191. Array.forEach(that.costTypeHotelNumbers, (item, index) => {
  4192. if (hotelNumber[i]['type'] == item.type) {
  4193. that.$set(that.costTypeHotelNumbers, index, hotelNumber[i]);
  4194. }
  4195. })
  4196. }
  4197. } else {
  4198. that.costTypeHotelNumbers = [{
  4199. "sgr": 0,
  4200. "tbr": 0,
  4201. "jses": 0,
  4202. "suite": 0,
  4203. "type": "Default",
  4204. "diid": 0,
  4205. id: 0,
  4206. },
  4207. {
  4208. "sgr": 0,
  4209. "tbr": 0,
  4210. "jses": 0,
  4211. "suite": 0,
  4212. "type": "A",
  4213. "diid": 0,
  4214. id: 0,
  4215. },
  4216. {
  4217. "sgr": 0,
  4218. "tbr": 0,
  4219. "jses": 0,
  4220. "suite": 0,
  4221. "type": "B",
  4222. "diid": 0,
  4223. id: 0,
  4224. }]
  4225. }
  4226. if (resp.data.data.visaCountryInfoArr.length > 0) {
  4227. that.visaCountryInfoArr = resp.data.data.visaCountryInfoArr;
  4228. } else {
  4229. that.visaCountryInfoArr = [];
  4230. }
  4231. that.ShowBaoPi = [];
  4232. const rightBaoPiShow = [
  4233. { apiType: "SumAirJJC", containValue: "经济舱" },
  4234. { apiType: "SumAirGWC", containValue: "公务舱" },
  4235. { apiType: "SumAirTDC", containValue: "头等舱" }];
  4236. if (resp.data.data.baoPi.length > 0) {
  4237. const baoPi = resp.data.data.baoPi;
  4238. //left 报批
  4239. for (var i = 0; i < baoPi.length; i++) {
  4240. for (var j = 0; j < that.equalWhere.length; j++) {
  4241. let item = that.equalWhere[j];
  4242. for (var p in item) {
  4243. if (baoPi[i].type == p) {
  4244. ////////console.log("key:" + p + "已经匹配 value:" + item[p]);
  4245. for (var m = 0; m < that.sheetDatal.length; m++) {
  4246. if (that.sheetDatal[m].EnLabel == item[p]) {
  4247. ////////console.log(" 1 key:" + that.sheetDatal[m].EnLabel + "已经匹配 1 value:" + baoPi[i].price);
  4248. that.sheetDatal[m].childList[0].tips = baoPi[i].price;
  4249. }
  4250. }
  4251. }
  4252. }
  4253. }
  4254. }
  4255. for (var i = 0; i < rightBaoPiShow.length; i++) {
  4256. var val = baoPi.filter(x => {
  4257. return x.type == rightBaoPiShow[i].apiType
  4258. })
  4259. if (val.length > 0) {
  4260. for (var j = 0; j < that.cabinDatal.length; j++) {
  4261. if (that.cabinDatal[j].label.indexOf(rightBaoPiShow[i].containValue) != -1) {
  4262. that.cabinDatal[j].childList[3].tips = val[0].price;
  4263. }
  4264. }
  4265. }
  4266. }
  4267. const centerBaoPiShow = [
  4268. "Meals", "Hotel", "GongZa", "Other"
  4269. ];
  4270. for (var i = 0; i < centerBaoPiShow.length; i++) {
  4271. var val = baoPi.filter(x => {
  4272. return x.type == centerBaoPiShow[i]
  4273. })
  4274. if (val.length > 0) {
  4275. that.ShowBaoPi.push(val[0]);
  4276. }
  4277. }
  4278. } else {
  4279. for (var m = 0; m < that.sheetDatal.length; m++) {
  4280. if (that.sheetDatal[m].childList[0].tips) {
  4281. that.sheetDatal[m].childList[0].tips = "暂无!";
  4282. }
  4283. }
  4284. for (var j = 0; j < rightBaoPiShow.length; j++) {
  4285. for (var i = 0; i < that.cabinDatal.length; i++) {
  4286. if (that.cabinDatal[i].label.indexOf(rightBaoPiShow[j].containValue) != -1) {
  4287. that.cabinDatal[i].childList[3].tips = '暂无!';
  4288. }
  4289. }
  4290. }
  4291. }
  4292. that.hotelIsTrue = resp.data.data.hotelIsTrue;
  4293. that.blackCodeIsTrue = resp.data.data.blackCodeIsTrue;
  4294. that.GivePeopleNumber();
  4295. //处理各部门操作人员
  4296. var groupModuleOperators = resp.data.data.groupModuleOperators;
  4297. that.groupModuleOperators = groupModuleOperators.filter(x => {
  4298. return !that.hideGroupModuleId.includes(x.cTableId);
  4299. })
  4300. }
  4301. that.inSelectChangeCheck();
  4302. that.costloading = false;
  4303. }).catch(err => {
  4304. that.costloading = false;
  4305. this.$message({
  4306. message: '网络异常!',
  4307. type: 'error'
  4308. });
  4309. })
  4310. },
  4311. groupChange() {
  4312. this.clearFormVerify();
  4313. this.loadData(this.diid);
  4314. },
  4315. save() {
  4316. return new Promise(async (resolve, reject) => {
  4317. if (this.costTypevalue == 'A') {
  4318. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4319. return x.type == 'Default'
  4320. })[0];
  4321. var pNumber = 0;
  4322. //遍历 sgrfilter对象
  4323. for (var key in sgrfilter) {
  4324. var parNumber = Number(sgrfilter[key]);
  4325. if (isNaN(parNumber)) {
  4326. parNumber = 0;
  4327. } else {
  4328. if (key == 'tbr') {
  4329. pNumber += parNumber * 2;
  4330. }
  4331. if (key == 'sgr') {
  4332. pNumber += parNumber;
  4333. }
  4334. if (key == 'jses') {
  4335. pNumber += parNumber;
  4336. }
  4337. if (key == 'suite') {
  4338. pNumber += parNumber;
  4339. }
  4340. }
  4341. }
  4342. var isChange = await this.getGroupInfo();
  4343. if (isChange) {
  4344. var number = this.grouptitleinfo.visitPNumber;
  4345. this.AGroupCostParameter.visaRS = number;
  4346. this.AGroupCostParameter.bxrs = number;
  4347. this.AGroupCostParameter.djrs = number;
  4348. this.AGroupCostParameter.gwrs = number;
  4349. this.AGroupCostParameter.lyjrs = number;
  4350. }
  4351. ////console.log(pNumber, 'pNumber-------------');
  4352. if (this.grouptitleinfo.visitPNumber != pNumber && !this.excludeGroupList.includes(this.diid)) {
  4353. this.$message.error('团组人数与房间人数不一致!')
  4354. return resolve(false);
  4355. }
  4356. }
  4357. var that = this;
  4358. var Data = { diid: this.diid, userid: this.userId };
  4359. var isTrue = await this.formVerify();
  4360. if (isTrue) {
  4361. Data.checkBoxs = this.CheckBoxListSelect.map(x => {
  4362. return {
  4363. diid: x.diid,
  4364. cbType: x.cbType,
  4365. cbValues: x.cbValues.join(',')
  4366. };
  4367. });
  4368. Data.groupCosts = this.tableData;
  4369. Data.costTypeHotelNumbers = this.costTypeHotelNumbers.map(x => {
  4370. return {
  4371. id: x.id,
  4372. sgr: x.sgr,
  4373. tbr: x.tbr,
  4374. jses: x.jses,
  4375. suite: x.suite,
  4376. type: x.type,
  4377. diid: that.diid
  4378. };
  4379. });
  4380. this.AGroupCostParameter.currency = this.AGroupCostParameter.currency.toString();
  4381. this.AGroupCostParameter.diId = this.diid;
  4382. this.BGroupCostParameter.diId = this.diid;
  4383. var Aparam = Object.assign({}, this.AGroupCostParameter);
  4384. var Bparam = Object.assign({}, this.BGroupCostParameter);
  4385. if (that.AGroupCostParameter.costTypeStartTime) {
  4386. Aparam.costTypeStartTime = this.addOneDay(that.AGroupCostParameter.costTypeStartTime, 0);
  4387. }
  4388. if (that.AGroupCostParameter.costTypeendTime) {
  4389. Aparam.costTypeendTime = this.addOneDay(that.AGroupCostParameter.costTypeendTime, 0);
  4390. }
  4391. if (that.BGroupCostParameter.costTypeStartTime) {
  4392. Bparam.costTypeStartTime = this.addOneDay(that.BGroupCostParameter.costTypeStartTime, 0);
  4393. }
  4394. if (that.BGroupCostParameter.costTypeendTime) {
  4395. Bparam.costTypeendTime = this.addOneDay(that.BGroupCostParameter.costTypeendTime, 0);
  4396. }
  4397. if (this.costTypevalue == "A") {
  4398. Data.groupCostParameters = [Aparam];
  4399. } else {
  4400. Data.groupCostParameters = [Aparam, Bparam];
  4401. }
  4402. var ResultCostArr = this.Dataformat();
  4403. Data.groupCosts = ResultCostArr;
  4404. ////////console.log(Data, "save-------Data");
  4405. var that = this;
  4406. this.$axios.post('/api/Groups/SaveGroupCost', Data, {
  4407. headers: {
  4408. 'Authorization': that.token,
  4409. }
  4410. }).then(resp => {
  4411. ////////console.log(resp.data.data, '------------------------------------');
  4412. if (resp.data.code == 200) {
  4413. this.$message({
  4414. message: '保存成功!',
  4415. type: 'success'
  4416. });
  4417. resolve(true);
  4418. } else {
  4419. this.$message.error('保存失败!' + resp.data.msg);
  4420. resolve(false);
  4421. }
  4422. var result = Number(that.AGroupCostParameter.currency);
  4423. if (isNaN(result)) {
  4424. } else {
  4425. that.AGroupCostParameter.currency = result;
  4426. }
  4427. })
  4428. } else {
  4429. this.$message.error('请输入完整!');
  4430. }
  4431. })
  4432. },
  4433. TopChange() {
  4434. },
  4435. calculateZCB(EnLabelParam) {
  4436. if (EnLabelParam == undefined) {
  4437. return 0.00;
  4438. }
  4439. var sum = 0.00;
  4440. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4441. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']) * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']));
  4442. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4443. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']) * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined ? this.AGroupCostParameter[EnLabelParam + 'rs'] : this.AGroupCostParameter[EnLabelParam + 'Number']));
  4444. }
  4445. if (isNaN(sum)) {
  4446. sum = 0.00;
  4447. }
  4448. return sum.toFixed(2);
  4449. },
  4450. calculateDRBJ(EnLabelParam) {
  4451. if (EnLabelParam == undefined) {
  4452. return 0.00;
  4453. }
  4454. var sum = 0.00;
  4455. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4456. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']) * parseFloat(this.AGroupCostParameter[EnLabelParam + 'XS']));
  4457. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4458. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']) * parseFloat(this.AGroupCostParameter[EnLabelParam + 'xs']));
  4459. }
  4460. if (isNaN(sum)) {
  4461. sum = 0.00;
  4462. }
  4463. return sum.toFixed(2);
  4464. },
  4465. calculateZBJ(EnLabelParam) {
  4466. if (EnLabelParam == undefined) {
  4467. return 0.00;
  4468. }
  4469. var sum = 0.00;
  4470. var drbj = this.calculateDRBJ(EnLabelParam);
  4471. if (this.AGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4472. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']);
  4473. } else if (this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4474. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs']);
  4475. } else if (this.AGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4476. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'Number']);
  4477. }
  4478. if (isNaN(sum)) {
  4479. sum = 0.00;
  4480. }
  4481. return sum.toFixed(2);
  4482. },
  4483. calculateDRLR(EnLabelParam) {
  4484. if (EnLabelParam == undefined) {
  4485. return 0.00;
  4486. }
  4487. var sum = 0.00;
  4488. var drbj = this.calculateDRBJ(EnLabelParam);
  4489. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4490. sum = (drbj - parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']));
  4491. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4492. sum = (drbj - parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']));
  4493. }
  4494. if (isNaN(sum)) {
  4495. sum = 0.00;
  4496. }
  4497. return sum.toFixed(2);
  4498. },
  4499. calculateZLR(EnLabelParam) {
  4500. if (EnLabelParam == undefined) {
  4501. return 0.00;
  4502. }
  4503. var sum = 0.00;
  4504. var drlr = this.calculateDRLR(EnLabelParam);
  4505. if (this.AGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4506. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']);
  4507. } else if (this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4508. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs']);
  4509. } else if (this.AGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4510. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'Number']);
  4511. }
  4512. if (isNaN(sum)) {
  4513. sum = 0.00;
  4514. }
  4515. return sum.toFixed(2);
  4516. },
  4517. BcalculateZCB(EnLabelParam) {
  4518. if (EnLabelParam == undefined) {
  4519. return 0.00;
  4520. }
  4521. var sum = 0.00;
  4522. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4523. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']) * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']));
  4524. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4525. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']) * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined ? this.BGroupCostParameter[EnLabelParam + 'rs'] : this.BGroupCostParameter[EnLabelParam + 'Number']));
  4526. }
  4527. if (isNaN(sum)) {
  4528. sum = 0.00;
  4529. }
  4530. return sum.toFixed(2);;
  4531. },
  4532. BcalculateDRBJ(EnLabelParam) {
  4533. if (EnLabelParam == undefined) {
  4534. return 0.00;
  4535. }
  4536. var sum = 0.00;
  4537. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4538. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']) * parseFloat(this.BGroupCostParameter[EnLabelParam + 'XS']));
  4539. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4540. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']) * parseFloat(this.BGroupCostParameter[EnLabelParam + 'xs']));
  4541. }
  4542. if (isNaN(sum)) {
  4543. sum = 0.00;
  4544. }
  4545. return sum.toFixed(2);
  4546. },
  4547. BcalculateZBJ(EnLabelParam) {
  4548. if (EnLabelParam == undefined) {
  4549. return 0.00;
  4550. }
  4551. var sum = 0.00;
  4552. var drbj = this.BcalculateDRBJ(EnLabelParam);
  4553. if (this.BGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4554. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']);
  4555. } else if (this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4556. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs']);
  4557. } else if (this.BGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4558. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'Number']);
  4559. }
  4560. if (isNaN(sum)) {
  4561. sum = 0.00;
  4562. }
  4563. return sum.toFixed(2);
  4564. },
  4565. BcalculateDRLR(EnLabelParam) {
  4566. if (EnLabelParam == undefined) {
  4567. return 0.00;
  4568. }
  4569. var sum = 0.00;
  4570. var drbj = this.BcalculateDRBJ(EnLabelParam);
  4571. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4572. sum = drbj - parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']);
  4573. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4574. sum = drbj - parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']);
  4575. }
  4576. if (isNaN(sum)) {
  4577. sum = 0.00;
  4578. }
  4579. return sum.toFixed(2);;
  4580. },
  4581. BcalculateZLR(EnLabelParam) {
  4582. if (EnLabelParam == undefined) {
  4583. return 0.00;
  4584. }
  4585. var sum = 0.00;
  4586. var drlr = this.BcalculateDRLR(EnLabelParam);
  4587. if (this.BGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4588. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']);
  4589. } else if (this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4590. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs']);
  4591. } else if (this.BGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4592. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'Number']);
  4593. }
  4594. if (isNaN(sum)) {
  4595. sum = 0.00;
  4596. }
  4597. return sum.toFixed(2);;
  4598. },
  4599. handleCurrentChange(val) {
  4600. this.currentPage = val;
  4601. },
  4602. SelChange(row, oldrow) {
  4603. ////////console.log(row, oldrow);
  4604. this.dialogSelectObject = row;
  4605. },
  4606. handleSizeChange(val) {
  4607. this.currentPage = 1;
  4608. this.pageSize = val;
  4609. },
  4610. CalculatedPrice() {
  4611. let rate = Number(this.AGroupCostParameter.rate);
  4612. let Djsum = 0;
  4613. let BDjsum = 0;
  4614. var that = this;
  4615. this.DJLables.forEach(function (item) {
  4616. that.sumTopPrice.forEach(function (item1) {
  4617. if (item == item1.label) {
  4618. var Aprice = Number(item1.Aprice);
  4619. if (!isNaN(Aprice)) {
  4620. Djsum += Aprice;
  4621. }
  4622. var Bprice = Number(item1.Bprice);
  4623. if (!isNaN(Bprice)) {
  4624. BDjsum += Bprice;
  4625. }
  4626. }
  4627. })
  4628. })
  4629. Djsum = Number((Djsum * rate).toFixed(2));
  4630. BDjsum = Number((BDjsum * rate).toFixed(2));
  4631. let GWsum = 0;
  4632. let BGWsum = 0;
  4633. this.GwLables.forEach(function (item) {
  4634. that.sumTopPrice.forEach(function (item1) {
  4635. if (item == item1.label) {
  4636. var Aprice = Number(item1.Aprice);
  4637. if (!isNaN(Aprice)) {
  4638. GWsum += Aprice;
  4639. }
  4640. var Bprice = Number(item1.Bprice);
  4641. if (!isNaN(Bprice)) {
  4642. BGWsum += Bprice;
  4643. }
  4644. }
  4645. })
  4646. })
  4647. GWsum = Number((GWsum * rate).toFixed(2));
  4648. BGWsum = Number((BGWsum * rate).toFixed(2));
  4649. let LYJsum = 0;
  4650. let BLYJsum = 0;
  4651. var lyjList = that.sumTopPrice.filter((x) => {
  4652. return x.label == 'P/C';
  4653. })
  4654. if (lyjList.length > 0) {
  4655. LYJsum = lyjList[0].Aprice;
  4656. BLYJsum = lyjList[0].Bprice;
  4657. }
  4658. LYJsum = isNaN(LYJsum) ? 0 : LYJsum;
  4659. BLYJsum = isNaN(BLYJsum) ? 0 : BLYJsum;
  4660. LYJsum = Number((LYJsum * rate).toFixed(2));
  4661. BLYJsum = Number((BLYJsum * rate).toFixed(2));
  4662. let SGRsum = 0;
  4663. let BSGRsum = 0;
  4664. var SGRList = that.sumTopPrice.filter((x) => {
  4665. return x.label == 'SGR';
  4666. })
  4667. if (SGRList.length > 0) {
  4668. SGRsum = SGRList[0].Aprice;
  4669. BSGRsum = SGRList[0].Bprice;
  4670. }
  4671. SGRsum = isNaN(SGRsum) ? 0 : SGRsum;
  4672. BSGRsum = isNaN(BSGRsum) ? 0 : BSGRsum;
  4673. SGRsum = (SGRsum * rate).toFixed(2);
  4674. BSGRsum = (BSGRsum * rate).toFixed(2);
  4675. let TBRsum = 0;
  4676. let BTBRsum = 0;
  4677. var TBRList = that.sumTopPrice.filter((x) => {
  4678. return x.label == 'TBR';
  4679. })
  4680. if (TBRList.length > 0) {
  4681. TBRsum = TBRList[0].Aprice;
  4682. BTBRsum = TBRList[0].Bprice;
  4683. }
  4684. TBRsum = isNaN(TBRsum) ? 0 : TBRsum;
  4685. BTBRsum = isNaN(BTBRsum) ? 0 : BTBRsum;
  4686. TBRsum = (TBRsum * rate).toFixed(2);
  4687. BTBRsum = (BTBRsum * rate).toFixed(2);
  4688. let JSESsum = 0;
  4689. let BJSESsum = 0;
  4690. var JSESList = that.sumTopPrice.filter((x) => {
  4691. return x.label == 'JS/ES';
  4692. })
  4693. if (JSESList.length > 0) {
  4694. JSESsum = JSESList[0].Aprice;
  4695. BJSESsum = JSESList[0].Bprice;
  4696. }
  4697. JSESsum = isNaN(JSESsum) ? 0 : JSESsum;
  4698. BJSESsum = isNaN(BJSESsum) ? 0 : BJSESsum;
  4699. JSESsum = (JSESsum * rate).toFixed(2);
  4700. BJSESsum = BJSESsum * rate;
  4701. let SUITEsum = 0;
  4702. let BSUITEsum = 0;
  4703. var SUITEList = that.sumTopPrice.filter((x) => {
  4704. return x.label == 'SUITE';
  4705. })
  4706. if (SUITEList.length > 0) {
  4707. SUITEsum = SUITEList[0].Aprice;
  4708. BSUITEsum = SUITEList[0].Bprice;
  4709. }
  4710. SUITEsum = isNaN(SUITEsum) ? 0 : SUITEsum;
  4711. BSUITEsum = isNaN(BSUITEsum) ? 0 : BSUITEsum;
  4712. SUITEsum = (SUITEsum * rate).toFixed(2);
  4713. BSUITEsum = (BSUITEsum * rate).toFixed(2);
  4714. // ////////console.log(Djsum, GWsum, LYJsum, 'Djsum,GWsum,LYJsum');
  4715. // ////////console.log(SGRsum, TBRsum, JSESsum, SUITEsum, 'SGRsum,TBRsum,JSESsum,SUITEsum');
  4716. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4717. return x.type == 'Default'
  4718. })
  4719. let Bsgrfilter = {};
  4720. if (this.costTypevalue == 'B') {
  4721. sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4722. return x.type == 'A'
  4723. })
  4724. Bsgrfilter = this.costTypeHotelNumbers.filter(x => {
  4725. return x.type == 'B'
  4726. })
  4727. Bsgrfilter = Bsgrfilter[0];
  4728. }
  4729. sgrfilter = sgrfilter[0];
  4730. let hotelRooms = {
  4731. "SGR": sgrfilter.sgr,
  4732. "TBR": sgrfilter.tbr,
  4733. "JSES": sgrfilter.jses,
  4734. "SUITE": sgrfilter.suite
  4735. };
  4736. let flights = {
  4737. "经济舱": this.AGroupCostParameter.jjcrs,
  4738. "公务舱": this.AGroupCostParameter.gwcrs,
  4739. "头等舱": this.AGroupCostParameter.tdcrs,
  4740. };
  4741. let result = {};
  4742. if (this.diid == 2616) {
  4743. result['经济舱SGR'] = 4;
  4744. result['经济舱JSES'] = 1;
  4745. result['公务舱SGR'] = 1;
  4746. } else {
  4747. for (let flight of ["经济舱", "头等舱", "公务舱"]) {
  4748. if (flight === "经济舱") {
  4749. this.matchRooms(hotelRooms, flights, ["TBR", "SGR", "JSES", "SUITE"], flight, result);
  4750. } else if (flight === "公务舱") {
  4751. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES", "SGR",], flight, result);
  4752. } else if (flight === "头等舱") {
  4753. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES",], flight, result);
  4754. }
  4755. }
  4756. }
  4757. var rightCheckArr = [];
  4758. const airByHotelType = [
  4759. { name: "经济舱TBR", index: 0, lable: "经济舱 TBR" },
  4760. { name: "经济舱SGR", index: 1, lable: "经济舱 SGR" },
  4761. { name: "公务舱SGR", index: 2, lable: "公务舱 SGR" },
  4762. { name: "公务舱JSES", index: 3, lable: "公务舱 JS/ES" },
  4763. { name: "公务舱SUITE", index: 4, lable: "公务舱 SUITE" },
  4764. { name: "经济舱SUITE", index: 5, lable: "经济舱 SUITE" },
  4765. { name: "头等舱JSES", index: 6, lable: "头等舱 JS/ES" },
  4766. { name: "头等舱SUITE", index: 7, lable: "头等舱 SUITE" },
  4767. { name: "经济舱JSES", index: 8, lable: "经济舱 JS/ES" }
  4768. ];
  4769. const paramArr = [
  4770. {
  4771. costPerson: ['sgrcb', 'jjccb'],
  4772. singleQuote: ['jjc', 'sgr'],
  4773. index: 1,
  4774. },
  4775. {
  4776. costPerson: ['tbrcb', 'jjccb'],
  4777. singleQuote: ['jjc', 'tbr'],
  4778. index: 0,
  4779. },
  4780. {
  4781. costPerson: ['suitecb', 'jjccb'],
  4782. singleQuote: ['jjc', 'suite'],
  4783. index: 5,
  4784. },
  4785. {
  4786. costPerson: ['suitecb', 'gwccb'],
  4787. singleQuote: ['gwc', 'suite'],
  4788. index: 4,
  4789. },
  4790. {
  4791. costPerson: ['sgrcb', 'gwccb'],
  4792. singleQuote: ['gwc', 'sgr'],
  4793. index: 2,
  4794. },
  4795. {
  4796. costPerson: ['jsescb', 'gwccb'],
  4797. singleQuote: ['gwc', 'jses'],
  4798. index: 3,
  4799. },
  4800. {
  4801. costPerson: ['jsescb', 'tdccb'],
  4802. singleQuote: ['tdc', 'jses'],
  4803. index: 6,
  4804. },
  4805. {
  4806. costPerson: ['suitecb', 'tdccb'],
  4807. singleQuote: ['tdc', 'suite'],
  4808. index: 7,
  4809. },
  4810. {
  4811. costPerson: ['jsescb', 'jjccb'],
  4812. singleQuote: ['jjc', 'jses'],
  4813. index: 8,
  4814. },
  4815. ];
  4816. if (this.costTypevalue == 'B') {
  4817. let BhotelRooms = {
  4818. "SGR": Bsgrfilter.sgr,
  4819. "TBR": Bsgrfilter.tbr,
  4820. "JSES": Bsgrfilter.jses,
  4821. "SUITE": Bsgrfilter.suite
  4822. };
  4823. let Bflights = {
  4824. "经济舱": this.BGroupCostParameter.jjcrs,
  4825. "公务舱": this.BGroupCostParameter.gwcrs,
  4826. "头等舱": this.BGroupCostParameter.tdcrs,
  4827. };
  4828. let Bresult = {};
  4829. for (let flight of ["经济舱", "头等舱", "公务舱"]) {
  4830. if (flight === "经济舱") {
  4831. this.matchRooms(BhotelRooms, Bflights, ["SGR", "TBR", "JSES", "SUITE"], flight, Bresult);
  4832. } else if (flight === "公务舱") {
  4833. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES", "SGR",], flight, Bresult);
  4834. } else if (flight === "头等舱") {
  4835. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES",], flight, Bresult);
  4836. }
  4837. }
  4838. for (var i = 0; i < airByHotelType.length; i++) {
  4839. if (Bresult.hasOwnProperty(airByHotelType[i].name)) {
  4840. let count = Bresult[airByHotelType[i].name];
  4841. if (airByHotelType[i].name.indexOf("TBR") != -1) {
  4842. count = count * 2;
  4843. }
  4844. if (count > 0) {
  4845. rightCheckArr.push(airByHotelType[i].lable);
  4846. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = count;
  4847. }
  4848. else {
  4849. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4850. }
  4851. } else {
  4852. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4853. }
  4854. }
  4855. this.BGroupCostParameter.djcb = BDjsum;
  4856. this.BGroupCostParameter.gwcb = BGWsum;
  4857. this.BGroupCostParameter.lyjcb = BLYJsum;
  4858. this.BGroupCostParameter.sgrcb = BSGRsum;
  4859. this.BGroupCostParameter.tbrcb = BTBRsum;
  4860. this.BGroupCostParameter.jsescb = BJSESsum;
  4861. this.BGroupCostParameter.suitecb = BSUITEsum;
  4862. var BleftSum = this.BOtherCost();
  4863. var BrightSum = 0;
  4864. this.OtherCostPropertyBJ.forEach((x) => {
  4865. BrightSum += Number(that.BcalculateDRBJ(x));
  4866. })
  4867. for (var i = 0; i < paramArr.length; i++) {
  4868. var costPersonPrice = 0;
  4869. var singleQuotePrice = 0;
  4870. for (var j = 0; j < paramArr[i].costPerson.length; j++) {
  4871. var costPersonKey = paramArr[i].costPerson[j];
  4872. var price = Number(that.BGroupCostParameter[costPersonKey]);
  4873. if (costPersonKey.indexOf('tbr') != -1) {
  4874. price = price / 2;
  4875. }
  4876. costPersonPrice += price;
  4877. }
  4878. for (var k = 0; k < paramArr[i].singleQuote.length; k++) {
  4879. var singleQuoteKey = paramArr[i].singleQuote[k];
  4880. var price = Number(that.BcalculateDRBJ(singleQuoteKey));
  4881. if (singleQuoteKey.indexOf('tbr') != -1) {
  4882. price = price / 2;
  4883. }
  4884. singleQuotePrice += price;
  4885. }
  4886. that.BcabinDatal[paramArr[i].index].sheetInfo[0].costPerson = (BleftSum + costPersonPrice).toFixed(2);
  4887. that.BcabinDatal[paramArr[i].index].sheetInfo[0].singleQuote = (BrightSum + singleQuotePrice).toFixed(2);
  4888. }
  4889. }
  4890. for (var i = 0; i < airByHotelType.length; i++) {
  4891. if (result.hasOwnProperty(airByHotelType[i].name)) {
  4892. let count = result[airByHotelType[i].name];
  4893. if (airByHotelType[i].name.indexOf("TBR") != -1) {
  4894. count = count * 2;
  4895. }
  4896. if (count > 0) {
  4897. rightCheckArr.push(airByHotelType[i].lable);
  4898. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = count;
  4899. }
  4900. else {
  4901. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4902. }
  4903. } else {
  4904. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4905. }
  4906. }
  4907. rightCheckArr.push('团组预算明细');
  4908. rightCheckArr = [...new Set(rightCheckArr)];
  4909. try {
  4910. ////console.log('rightCheckArr', rightCheckArr);
  4911. this.CheckBoxListSelect.filter(item => item.cbType == 'Right')[0].cbValues = rightCheckArr;
  4912. } catch (e) { }
  4913. this.AGroupCostParameter.djcb = Djsum;
  4914. this.AGroupCostParameter.gwcb = GWsum;
  4915. this.AGroupCostParameter.lyjcb = LYJsum;
  4916. this.AGroupCostParameter.sgrcb = SGRsum;
  4917. this.AGroupCostParameter.tbrcb = TBRsum;
  4918. this.AGroupCostParameter.jsescb = JSESsum;
  4919. this.AGroupCostParameter.suitecb = SUITEsum;
  4920. var leftSum = this.OtherCost();
  4921. var rightSum = 0;
  4922. this.OtherCostPropertyBJ.forEach((x) => {
  4923. rightSum += Number(that.calculateDRBJ(x));
  4924. })
  4925. //总人数价格
  4926. if (this.excludeGroupList.includes(this.diid)) {
  4927. leftSum = leftSum * this.grouptitleinfo.visitPNumber;
  4928. rightSum = rightSum * this.grouptitleinfo.visitPNumber;
  4929. }
  4930. for (var i = 0; i < paramArr.length; i++) {
  4931. var costPersonPrice = 0;
  4932. var singleQuotePrice = 0;
  4933. for (var j = 0; j < paramArr[i].costPerson.length; j++) {
  4934. var costPersonKey = paramArr[i].costPerson[j];
  4935. var price = Number(that.AGroupCostParameter[costPersonKey]);
  4936. if (this.excludeGroupList.includes(this.diid) && costPersonKey.indexOf('gwc') != -1) {
  4937. price = price * this.grouptitleinfo.visitPNumber;
  4938. }
  4939. if (costPersonKey.indexOf('tbr') != -1) {
  4940. price = price / 2;
  4941. }
  4942. costPersonPrice += price;
  4943. }
  4944. for (var k = 0; k < paramArr[i].singleQuote.length; k++) {
  4945. var singleQuoteKey = paramArr[i].singleQuote[k];
  4946. var price = Number(that.calculateDRBJ(singleQuoteKey));
  4947. if (this.excludeGroupList.includes(this.diid) && singleQuoteKey.indexOf('gwc') != -1) {
  4948. price = price * this.grouptitleinfo.visitPNumber;
  4949. }
  4950. if (singleQuoteKey.indexOf('tbr') != -1) {
  4951. price = price / 2;
  4952. }
  4953. singleQuotePrice += price;
  4954. }
  4955. that.cabinDatal[paramArr[i].index].sheetInfo[0].costPerson = (leftSum + costPersonPrice).toFixed(2);
  4956. that.cabinDatal[paramArr[i].index].sheetInfo[0].singleQuote = (rightSum + singleQuotePrice).toFixed(2);
  4957. }
  4958. let groupCosts = 0;
  4959. let gtroupQuotes = 0;
  4960. for (var i = 0; i < this.cabinDatal.length; i++) {
  4961. var forNumber = Number(this.cabinDatal[i].sheetInfo[0]['toll']);
  4962. if (!isNaN(forNumber) && forNumber > 0) {
  4963. groupCosts += (Number(this.cabinDatal[i].sheetInfo[0]['costPerson']) * forNumber);
  4964. gtroupQuotes += (Number(this.cabinDatal[i].sheetInfo[0]['singleQuote']) * forNumber);
  4965. }
  4966. }
  4967. if (this.costTypevalue == 'B') {
  4968. for (var i = 0; i < this.BcabinDatal.length; i++) {
  4969. var forNumber = Number(this.BcabinDatal[i].sheetInfo[0]['toll']);
  4970. if (!isNaN(forNumber) && forNumber > 0) {
  4971. groupCosts += (Number(this.BcabinDatal[i].sheetInfo[0]['costPerson']) * forNumber);
  4972. gtroupQuotes += (Number(this.BcabinDatal[i].sheetInfo[0]['singleQuote']) * forNumber);
  4973. }
  4974. }
  4975. }
  4976. let groupProfit = gtroupQuotes - groupCosts;
  4977. var cabinDatalLast = this.cabinDatal.filter(function (x) {
  4978. return x.label == '团组预算明细'
  4979. })
  4980. groupCosts = groupCosts.toFixed(2);
  4981. gtroupQuotes = gtroupQuotes.toFixed(2);
  4982. groupProfit = groupProfit.toFixed(2);
  4983. cabinDatalLast[0].sheetInfo[0]['groupCosts'] = groupCosts;
  4984. cabinDatalLast[0].sheetInfo[0]['gtroupQuotes'] = gtroupQuotes;
  4985. cabinDatalLast[0].sheetInfo[0]['groupProfit'] = groupProfit;
  4986. },
  4987. OtherCost() {
  4988. // txtVisaCost.Text +txtHCPCB.Text + txtCPCB.Text
  4989. // txtBXCB.Text +txtHSCB.Text) +lblDJDRCB.Text + lblGWDRCD.Text + lblLYJDRCB.Text
  4990. var that = this;
  4991. let sum = 0;
  4992. this.OtherCostProperty.forEach((x) => {
  4993. var param = that.AGroupCostParameter[x];
  4994. if (param != undefined) {
  4995. sum += Number(param);
  4996. }
  4997. })
  4998. return sum;
  4999. },
  5000. BOtherCost() {
  5001. // txtVisaCost.Text +txtHCPCB.Text + txtCPCB.Text
  5002. // txtBXCB.Text +txtHSCB.Text) +lblDJDRCB.Text + lblGWDRCD.Text + lblLYJDRCB.Text
  5003. var that = this;
  5004. let sum = 0;
  5005. this.OtherCostProperty.forEach((x) => {
  5006. var param;
  5007. if (x == 'visaCB' || x == 'bxcb') {
  5008. param = that.AGroupCostParameter[x];
  5009. } else {
  5010. param = that.BGroupCostParameter[x];
  5011. }
  5012. if (param != undefined) {
  5013. sum += Number(param);
  5014. }
  5015. })
  5016. return sum;
  5017. },
  5018. matchRooms(hotelRooms, flights, roomTypes, flightType, result) {
  5019. for (let roomType of roomTypes) {
  5020. while (hotelRooms[roomType] > 0 && flights[flightType] > 0) {
  5021. hotelRooms[roomType]--;
  5022. flights[flightType]--;
  5023. if (roomType === "TBR") {
  5024. flights[flightType]--; //双人间在减少1
  5025. }
  5026. if (result.hasOwnProperty(flightType + roomType)) {
  5027. result[flightType + roomType]++;
  5028. } else {
  5029. result[flightType + roomType] = 1;
  5030. }
  5031. }
  5032. }
  5033. },
  5034. NumberSetTime(number, index) {
  5035. ////console.log(number, index, this.grouptitleinfo.visitStartDate);
  5036. number = parseInt(number);
  5037. if (!isNaN(number)) {
  5038. var time = this.addOneDay(this.grouptitleinfo.visitStartDate, number - 1)
  5039. this.tableData[index].date = time;
  5040. } else {
  5041. this.tableData[index].date = '';
  5042. this.tableData[index].day = '';
  5043. }
  5044. },
  5045. addOneDay(dateString, number) {
  5046. if (!dateString) {
  5047. return "";
  5048. }
  5049. let date = new Date(dateString);
  5050. date.setDate(date.getDate() + number);
  5051. let year = date.getFullYear();
  5052. let month = date.getMonth() + 1;
  5053. let day = date.getDate();
  5054. month = month < 10 ? '0' + month : month;
  5055. day = day < 10 ? '0' + day : day;
  5056. return `${year}-${month}-${day}`;
  5057. },
  5058. costTypeSelect(val) {
  5059. ////////console.log('costTypeSelect--------------------------------------------------------', val);
  5060. setTimeout(() => {
  5061. this.hideAirInfo();
  5062. }, 300);
  5063. },
  5064. async formVerify() {
  5065. return new Promise((resolve, reject) => {
  5066. var forFormList = [];
  5067. if (this.costTypevalue == 'A') {
  5068. forFormList = ['inputs', 'DHotel'];
  5069. } else {
  5070. forFormList = ['inputs', 'AHotel', 'Asection', 'BHotel', 'Bsection'];
  5071. }
  5072. var that = this;
  5073. for (var i = 0; i < forFormList.length; i++) {
  5074. that.$refs[forFormList[i]].validate((valid) => {
  5075. if (valid) {
  5076. } else {
  5077. resolve(valid);
  5078. }
  5079. });
  5080. }
  5081. resolve(true);
  5082. })
  5083. },
  5084. clearFormVerify() {
  5085. var forFormList = ['inputs', 'AHotel', 'Asection', 'BHotel', 'Bsection', 'DHotel'];
  5086. this.$nextTick(() => {
  5087. for (var i = 0; i < forFormList.length; i++) {
  5088. this.$refs[forFormList[i]].resetFields();
  5089. }
  5090. })
  5091. },
  5092. topcheckboxChange(val, label) {
  5093. // ////console.log(val, label, 'topcheckboxChangeval');
  5094. var that = this;
  5095. if (!val) {
  5096. this.$confirm('此操作将清空整列数据, 是否继续?', '提示', {
  5097. confirmButtonText: '确定',
  5098. cancelButtonText: '取消',
  5099. type: 'warning'
  5100. }).then(() => {
  5101. if (label == 'SGR') {
  5102. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].sgr = 0
  5103. }
  5104. if (label == 'TBR') {
  5105. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].tbr = 0
  5106. }
  5107. if (label == 'JS/ES') {
  5108. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].jses = 0
  5109. }
  5110. if (label == 'SUITE') {
  5111. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].suite = 0
  5112. }
  5113. if (label == 'EF') {
  5114. that.CheckBoxListSelect.forEach(x => {
  5115. if (x.cbType == 'Top') {
  5116. if (x.cbValues.includes("EFR")) {
  5117. var index = x.cbValues.indexOf("EFR");
  5118. if (index > -1) {
  5119. x.cbValues.splice(index, 1);
  5120. }
  5121. }
  5122. }
  5123. });
  5124. var fliterList = that.tableLabel.filter(x => x.label == "EFR");
  5125. if (fliterList.length != 0) {
  5126. var obj = {
  5127. "diid": that.diid,
  5128. "day": "-",
  5129. "date": "",
  5130. "itin": "",
  5131. "carType": "",
  5132. "carCost": "",
  5133. "carNumber": "",
  5134. "carTiming": "",
  5135. "tgs": "",
  5136. "tgwh": "",
  5137. "tgn": "",
  5138. "tgof": "",
  5139. "tgm": "",
  5140. "tga": "",
  5141. "tgtf": "",
  5142. "tgef": "",
  5143. "cfs": "",
  5144. "cfm": "",
  5145. "cfof": "",
  5146. "b": "",
  5147. "l": "",
  5148. "d": "",
  5149. "tbr": "",
  5150. "sgr": "",
  5151. "jS_ES": "",
  5152. "suite": "",
  5153. "accon": "",
  5154. "tv": "",
  5155. "iL": "",
  5156. "if": "",
  5157. "ef": "",
  5158. "b_R_F": "",
  5159. "te": "",
  5160. "tgTips": "",
  5161. "drvTips": "",
  5162. "pc": "",
  5163. "tlf": "",
  5164. "ect": "",
  5165. "id": 1,
  5166. "gwCount": "",
  5167. "fyCount": "",
  5168. "efr": "",
  5169. };
  5170. var prop = fliterList[0].prop;
  5171. var initval = obj[prop];
  5172. for (var i = 0; i < that.tableData.length; i++) {
  5173. that.tableData[i][prop] = initval;
  5174. }
  5175. ////////console.log(that.tableData, 'that.tableData数据');
  5176. }
  5177. }
  5178. ////////console.log('确定清空数据');
  5179. var fliterList = this.sumTopPrice.filter(x => x.label == label);
  5180. if (fliterList.length != 0) {
  5181. fliterList[0].Aprice = 0;
  5182. fliterList[0].Bprice = 0;
  5183. }
  5184. fliterList = that.tableLabel.filter(x => x.label == label);
  5185. if (fliterList.length != 0) {
  5186. var obj = {
  5187. "diid": that.diid,
  5188. "day": "-",
  5189. "date": "",
  5190. "itin": "",
  5191. "carType": "",
  5192. "carCost": "",
  5193. "carNumber": "",
  5194. "carTiming": "",
  5195. "tgs": "",
  5196. "tgwh": "",
  5197. "tgn": "",
  5198. "tgof": "",
  5199. "tgm": "",
  5200. "tga": "",
  5201. "tgtf": "",
  5202. "tgef": "",
  5203. "cfs": "",
  5204. "cfm": "",
  5205. "cfof": "",
  5206. "b": "",
  5207. "l": "",
  5208. "d": "",
  5209. "tbr": "",
  5210. "sgr": "",
  5211. "jS_ES": "",
  5212. "suite": "",
  5213. "accon": "",
  5214. "tv": "",
  5215. "iL": "",
  5216. "if": "",
  5217. "ef": "",
  5218. "b_R_F": "",
  5219. "te": "",
  5220. "tgTips": "",
  5221. "drvTips": "",
  5222. "pc": "",
  5223. "tlf": "",
  5224. "ect": "",
  5225. "id": 1,
  5226. "gwCount": "",
  5227. "fyCount": "",
  5228. "efr": "",
  5229. };
  5230. var prop = fliterList[0].prop;
  5231. var initval = obj[prop];
  5232. for (var i = 0; i < that.tableData.length; i++) {
  5233. that.tableData[i][prop] = initval;
  5234. }
  5235. ////////console.log(that.tableData, 'that.tableData数据');
  5236. }
  5237. this.$message({
  5238. message: '已清除!',
  5239. type: 'success',
  5240. offset: 50
  5241. });
  5242. }).catch(() => {
  5243. this.$message({
  5244. type: 'info',
  5245. message: '已取消操作'
  5246. });
  5247. if (!that.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.includes(label)) {
  5248. that.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.push(label);
  5249. }
  5250. });
  5251. } else {
  5252. if (label == 'EF') {
  5253. that.CheckBoxListSelect.forEach(x => {
  5254. if (x.cbType == 'Top') {
  5255. if (!x.cbValues.includes("EFR")) {
  5256. x.cbValues.push("EFR");
  5257. }
  5258. }
  5259. });
  5260. }
  5261. }
  5262. },
  5263. GroupIsShare() {
  5264. this.$axios.post('/api/Groups/GroupIsShare', { diid: this.diid }, {
  5265. headers: {
  5266. 'Authorization': this.token,
  5267. }
  5268. }).then(resp => {
  5269. ////////console.log(resp.data.data, '------------------------------------');
  5270. if (resp.data.code == 200) {
  5271. this.isShare = resp.data.data.isShare;
  5272. this.$message({
  5273. message: '操作成功!' + resp.data.msg,
  5274. type: 'success'
  5275. });
  5276. } else {
  5277. this.$message.error('操作失败!' + resp.data.msg);
  5278. }
  5279. })
  5280. },
  5281. GetPriceCheckWord() {
  5282. var that = this;
  5283. var airs = [
  5284. ];
  5285. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  5286. return x.type == 'Default'
  5287. })
  5288. let Bsgrfilter = {};
  5289. if (this.costTypevalue == 'B') {
  5290. sgrfilter = this.costTypeHotelNumbers.filter(x => {
  5291. return x.type == 'A'
  5292. })
  5293. Bsgrfilter = this.costTypeHotelNumbers.filter(x => {
  5294. return x.type == 'B'
  5295. })
  5296. Bsgrfilter = Bsgrfilter[0];
  5297. }
  5298. sgrfilter = sgrfilter[0];
  5299. let hotelRooms = {
  5300. "SGR": sgrfilter.sgr,
  5301. "TBR": sgrfilter.tbr,
  5302. "JSES": sgrfilter.jses,
  5303. "SUITE": sgrfilter.suite
  5304. };
  5305. let flights = {
  5306. "经济舱": this.AGroupCostParameter.jjcrs,
  5307. "公务舱": this.AGroupCostParameter.gwcrs
  5308. };
  5309. let result = {};
  5310. for (let flight of ["经济舱", "公务舱"]) {
  5311. if (flight === "经济舱") {
  5312. this.matchRooms(hotelRooms, flights, ["SGR", "TBR", "JSES", "SUITE"], flight, result);
  5313. } else if (flight === "公务舱") {
  5314. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES", "SGR", "TBR"], flight, result);
  5315. }
  5316. }
  5317. if (this.costTypevalue == 'B') {
  5318. let BhotelRooms = {
  5319. "SGR": Bsgrfilter.sgr,
  5320. "TBR": Bsgrfilter.tbr,
  5321. "JSES": Bsgrfilter.jses,
  5322. "SUITE": Bsgrfilter.suite
  5323. };
  5324. let Bflights = {
  5325. "经济舱": this.BGroupCostParameter.jjcrs,
  5326. "公务舱": this.BGroupCostParameter.gwcrs
  5327. };
  5328. let Bresult = {};
  5329. for (let flight of ["经济舱", "公务舱"]) {
  5330. if (flight === "经济舱") {
  5331. this.matchRooms(BhotelRooms, Bflights, ["SGR", "TBR", "JSES", "SUITE"], flight, Bresult);
  5332. } else if (flight === "公务舱") {
  5333. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES", "SGR", "TBR"], flight, Bresult);
  5334. }
  5335. }
  5336. var BtxtJJCSGRRS = (Bresult.hasOwnProperty("经济舱SGR") ? Bresult["经济舱SGR"] : 0)
  5337. var BlblGWCSGRRS = (Bresult.hasOwnProperty("公务舱SGR") ? Bresult["公务舱SGR"] : 0)
  5338. var BtxtJJCTBRRS = (Bresult.hasOwnProperty("经济舱TBR") ? Bresult["经济舱TBR"] * 2 : 0)
  5339. var BtxtGWCJSESRS = (Bresult.hasOwnProperty("公务舱JSES") ? Bresult["公务舱JSES"] : 0)
  5340. var BJJCSUITERS = (Bresult.hasOwnProperty("经济舱SUITE") ? Bresult["经济舱SUITE"] : 0)
  5341. var BtxtGWCSUITERS = (Bresult.hasOwnProperty("公务舱SUITE") ? Bresult["公务舱SUITE"] : 0)
  5342. var BrightSum = 0;
  5343. this.OtherCostPropertyBJ.forEach((x) => {
  5344. BrightSum += Number(that.BcalculateDRBJ(x));
  5345. })
  5346. let BJJCSGRDRBJ = BrightSum + Number(that.BcalculateDRBJ('jjc')) + Number(that.BcalculateDRBJ('sgr'));
  5347. let BJJCTBRDRBJ = BrightSum + (Number(that.BcalculateDRBJ('tbr')) / 2) + Number(that.BcalculateDRBJ('jjc'));
  5348. let BJJCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('jjc'));
  5349. let BGWCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('gwc'));
  5350. let BGWCSGRDRBJ = BrightSum + Number(that.BcalculateDRBJ('sgr')) + Number(that.BcalculateDRBJ('gwc'));
  5351. let BGWCJSESDRBJ = BrightSum + Number(that.BcalculateDRBJ('jses')) + Number(that.BcalculateDRBJ('gwc'));
  5352. airs.push({
  5353. "code": "JJCTBR",
  5354. "number": BtxtJJCTBRRS,
  5355. "price": BJJCTBRDRBJ,
  5356. "costType": "B"
  5357. });
  5358. airs.push({
  5359. "code": "JJCSGR",
  5360. "number": BtxtJJCSGRRS,
  5361. "price": BJJCSGRDRBJ,
  5362. "costType": "B"
  5363. });
  5364. airs.push({
  5365. "code": "GWCSGR",
  5366. "number": BlblGWCSGRRS,
  5367. "price": BGWCSGRDRBJ,
  5368. "costType": "B"
  5369. });
  5370. airs.push({
  5371. "code": "GWCJSES",
  5372. "number": BtxtGWCJSESRS,
  5373. "price": BGWCJSESDRBJ,
  5374. "costType": "B"
  5375. });
  5376. airs.push({
  5377. "code": "GWCSUITE",
  5378. "number": BtxtGWCSUITERS,
  5379. "price": BGWCSUITEDRBJ,
  5380. "costType": "B"
  5381. });
  5382. airs.push({
  5383. "code": "JJCSUITE",
  5384. "number": BJJCSUITERS,
  5385. "price": BJJCSUITEDRBJ,
  5386. "costType": "B"
  5387. });
  5388. }
  5389. var txtJJCSGRRS = (result.hasOwnProperty("经济舱SGR") ? result["经济舱SGR"] : 0)
  5390. var lblGWCSGRRS = (result.hasOwnProperty("公务舱SGR") ? result["公务舱SGR"] : 0)
  5391. var txtJJCTBRRS = (result.hasOwnProperty("经济舱TBR") ? result["经济舱TBR"] * 2 : 0)
  5392. var txtGWCJSESRS = (result.hasOwnProperty("公务舱JSES") ? result["公务舱JSES"] : 0)
  5393. var JJCSUITERS = (result.hasOwnProperty("经济舱SUITE") ? result["经济舱SUITE"] : 0)
  5394. var txtGWCSUITERS = (result.hasOwnProperty("公务舱SUITE") ? result["公务舱SUITE"] : 0)
  5395. var rightSum = 0;
  5396. this.OtherCostPropertyBJ.forEach((x) => {
  5397. rightSum += Number(that.calculateDRBJ(x));
  5398. })
  5399. let JJCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('jjc')) + Number(that.calculateDRBJ('sgr'))).toFixed(2);
  5400. let JJCTBRDRBJ = (rightSum + (Number(that.calculateDRBJ('tbr')) / 2) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  5401. let JJCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  5402. let GWCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5403. let GWCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('sgr')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5404. let GWCJSESDRBJ = (rightSum + Number(that.calculateDRBJ('jses')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5405. airs.push({
  5406. "code": "JJCTBR",
  5407. "number": txtJJCTBRRS,
  5408. "price": JJCTBRDRBJ,
  5409. "costType": "A"
  5410. });
  5411. airs.push({
  5412. "code": "JJCSGR",
  5413. "number": txtJJCSGRRS,
  5414. "price": JJCSGRDRBJ,
  5415. "costType": "A"
  5416. });
  5417. airs.push({
  5418. "code": "GWCSGR",
  5419. "number": lblGWCSGRRS,
  5420. "price": GWCSGRDRBJ,
  5421. "costType": "A"
  5422. });
  5423. airs.push({
  5424. "code": "GWCJSES",
  5425. "number": txtGWCJSESRS,
  5426. "price": GWCJSESDRBJ,
  5427. "costType": "A"
  5428. });
  5429. airs.push({
  5430. "code": "GWCSUITE",
  5431. "number": txtGWCSUITERS,
  5432. "price": GWCSUITEDRBJ,
  5433. "costType": "A"
  5434. });
  5435. airs.push({
  5436. "code": "JJCSUITE",
  5437. "number": JJCSUITERS,
  5438. "price": JJCSUITEDRBJ,
  5439. "costType": "A"
  5440. });
  5441. var that = this;
  5442. this.$axios.post('/api/Groups/ExportPriceCheckWordFile', { diid: this.diid, airs: airs }, {
  5443. headers: {
  5444. 'Authorization': this.token,
  5445. }
  5446. }).then(resp => {
  5447. ////////console.log(resp, '------------------------------------');
  5448. try {
  5449. if (resp.data.code != 200) {
  5450. throw resp.data.msg;
  5451. }
  5452. var file = resp.data.data;
  5453. that.fileDownload(file.data, file.strFileName);
  5454. } catch (error) {
  5455. this.$message.error('操作失败!' + error.message);
  5456. }
  5457. })
  5458. },
  5459. fileDownload(data, filename) {
  5460. let blob = this.base64toBlob(data);
  5461. let link = document.createElement('a');
  5462. link.href = window.URL.createObjectURL(blob);
  5463. link.download = filename;
  5464. link.click();
  5465. },
  5466. base64toBlob(base64, type = 'application/octet-stream') {
  5467. const bstr = atob(base64);
  5468. let n = bstr.length;
  5469. const u8arr = new Uint8Array(n);
  5470. while (n--) {
  5471. u8arr[n] = bstr.charCodeAt(n);
  5472. }
  5473. return new Blob([u8arr], { type });
  5474. },
  5475. async GetGroupCostExcel() {
  5476. ////////console.log(this.titleText, 'this.titleText');
  5477. var isTrue = await this.save();
  5478. if (!isTrue) {
  5479. this.$message.error('请检查数据!');
  5480. return;
  5481. }
  5482. var that = this;
  5483. var group = this.options.filter(function (x) {
  5484. return x.id == that.diid
  5485. })
  5486. if (group.length == 0) {
  5487. this.$message.error('请选择团组!' + resp.data.msg);
  5488. return;
  5489. }
  5490. var resultCurr = Number(this.AGroupCostParameter.currency);
  5491. if (isNaN(resultCurr)) {
  5492. resultCurr = this.AGroupCostParameter.currency;
  5493. } else {
  5494. for (let index = 0; index < this.currencyOption.length; index++) {
  5495. if (this.currencyOption[index].currencyId == resultCurr) {
  5496. resultCurr = this.currencyOption[index].currencyCode;
  5497. }
  5498. }
  5499. }
  5500. var data = {
  5501. diid: this.diid,
  5502. costType: this.costTypevalue,
  5503. title: {
  5504. groupNumber: Number(this.grouptitleinfo.visitPNumber),
  5505. teamName: group[0].groupName,
  5506. tax: this.AGroupCostParameter.tax,
  5507. currency: resultCurr,
  5508. rate: this.AGroupCostParameter.rate
  5509. },
  5510. leftInfo: {
  5511. },
  5512. rightInfo: {
  5513. },
  5514. titleModel: {
  5515. }
  5516. };
  5517. var leftObject = this.GetDomLeftValue();
  5518. var rightObject = this.GetDomRightValue();
  5519. data.leftInfo = leftObject;
  5520. data.rightInfo = rightObject;
  5521. data.titleModel = this.titleText;
  5522. ////////console.log(data);
  5523. this.$axios.post('/api/Groups/ExportGroupCostExcelFile', data, {
  5524. headers: {
  5525. 'Authorization': this.token,
  5526. }
  5527. }).then(resp => {
  5528. ////////console.log(resp, '------------------------------------');
  5529. if (resp.data.code == 200) {
  5530. var file = resp.data.data;
  5531. that.fileDownload(file.data, file.strFileName);
  5532. } else {
  5533. that.$message.error('操作失败!' + resp.data.msg);
  5534. }
  5535. })
  5536. },
  5537. GetDomLeftValue() {
  5538. var AllResult = [];
  5539. var boxDoms = document.querySelectorAll(".sheet-box .biaoge");
  5540. var titleClassName = 'el-table__header-wrapper';
  5541. var bodyClassName = 'el-table__body-wrapper';
  5542. var result = [];
  5543. for (var i = 0; i < boxDoms.length; i++) {
  5544. var chiBoxs = boxDoms[i].children[0].children;
  5545. var info = {};
  5546. info.index = i;
  5547. for (var j = 0; j < chiBoxs.length; j++) {
  5548. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5549. info.title = chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5550. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5551. var title = info.title;
  5552. if (title.indexOf('酒店') != -1 || title.indexOf('地接') != -1 || title.indexOf('公务单人') != -1 || title.indexOf('零用金') != -1) {
  5553. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5554. } else {
  5555. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input').value : '0';
  5556. }
  5557. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5558. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input').value : '0';
  5559. }
  5560. }
  5561. result.push(info)
  5562. }
  5563. AllResult.push({ type: "A", leftinfoNumber: result })
  5564. if (this.costTypevalue == 'B') {
  5565. var boxDoms = document.querySelectorAll(".sheet-box .biaogeB");
  5566. var result = [];
  5567. for (var i = 0; i < boxDoms.length; i++) {
  5568. var chiBoxs = boxDoms[i].children[0].children;
  5569. var info = {};
  5570. info.index = i;
  5571. for (var j = 0; j < chiBoxs.length; j++) {
  5572. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5573. info.title = chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5574. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5575. var title = info.title;
  5576. if (title.indexOf('酒店') != -1 || title.indexOf('地接') != -1 || title.indexOf('公务单人') != -1 || title.indexOf('零用金') != -1) {
  5577. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5578. } else {
  5579. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input').value : '0';
  5580. }
  5581. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5582. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input').value : '0';
  5583. }
  5584. }
  5585. result.push(info)
  5586. }
  5587. AllResult.push({ type: "B", leftinfoNumber: result })
  5588. }
  5589. return AllResult;
  5590. },
  5591. GetDomRightValue() {
  5592. var AllResult = [];
  5593. var boxDoms = document.querySelectorAll(".cabin-li .biaoge");
  5594. var titleClassName = 'el-table__header-wrapper';
  5595. var bodyClassName = 'el-table__body-wrapper';
  5596. var result = [];
  5597. for (var i = 0; i < boxDoms.length - 1; i++) {
  5598. var chiBoxs = boxDoms[i].children[1].children;
  5599. var info = {};
  5600. info.index = i;
  5601. for (var j = 0; j < chiBoxs.length; j++) {
  5602. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5603. info.title = boxDoms[i].children[0].innerText + chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5604. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5605. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5606. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5607. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span').innerText : '0';
  5608. info.bj = chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span').innerText : '0';
  5609. }
  5610. }
  5611. result.push(info)
  5612. }
  5613. AllResult.push({ type: "A", rightInfoNumber: result })
  5614. if (this.costTypevalue == 'B') {
  5615. var boxDoms = document.querySelectorAll(".cabin-li .biaogeB");
  5616. var result = [];
  5617. for (var i = 0; i < boxDoms.length; i++) {
  5618. var chiBoxs = boxDoms[i].children[1].children;
  5619. var info = {};
  5620. info.index = i;
  5621. for (var j = 0; j < chiBoxs.length; j++) {
  5622. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5623. info.title = boxDoms[i].children[0].innerText + chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5624. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5625. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5626. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5627. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span').innerText : '0';
  5628. info.bj = chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span').innerText : '0';
  5629. }
  5630. }
  5631. result.push(info)
  5632. }
  5633. AllResult.push({ type: "B", rightInfoNumber: result })
  5634. }
  5635. return AllResult;
  5636. },
  5637. setLastTitle(list) {
  5638. let summaryRow = document.querySelectorAll('.el-table__footer-wrapper .cell');
  5639. for (var i = 0; i < summaryRow.length; i++) {
  5640. let summaryRowOne = summaryRow[i];
  5641. if (summaryRowOne.innerHTML == '总计:' || summaryRowOne.innerHTML == '——') {
  5642. } else {
  5643. summaryRowOne.setAttribute('title', list[i]);
  5644. }
  5645. }
  5646. },
  5647. GetClientWord() {
  5648. var that = this;
  5649. var data = {
  5650. "diid": this.diid,
  5651. "costType": this.costTypevalue,
  5652. "rate": this.AGroupCostParameter.rate,
  5653. "carGuides1": "",
  5654. "meal": "",
  5655. "subsidizedMeals": "",
  5656. "nightRepair": "",
  5657. "attractionsTickets": "",
  5658. "miscellaneousFees": "",
  5659. "aTip": "",
  5660. "tzZCost": "",
  5661. "leftInfo": '',
  5662. };
  5663. var vehicleResult = this.GetDJLableBJ(this.vehicleLables);
  5664. var DJMealResult = this.GetDJLableBJ(this.DJMeal);
  5665. var SubsidizedMealsResult = this.GetDJLableBJ(this.SubsidizedMeals);
  5666. var NightRepairResult = this.GetDJLableBJ(this.NightRepair);
  5667. var AttractionsTicketsResult = this.GetDJLableBJ(this.AttractionsTickets);
  5668. var DJMealResult = this.GetDJLableBJ(this.DJMeal);
  5669. var ATipResult = this.GetDJLableBJ(this.ATipResult);
  5670. data.leftInfo = this.GetDomLeftValue();
  5671. // vehicleLables: ['VF', 'T/G OF', 'T/G S', 'T/G TF', 'C/F OF'],
  5672. // DJMeal: ['B', 'L', 'D'],
  5673. // SubsidizedMeals: ['T/G M', 'C/F M'],
  5674. // NightRepair: ['T/G A'],
  5675. // AttractionsTickets: ['T/G EF', 'EF'],
  5676. // MiscellaneousFees: ['B/R/F', 'TE', 'T/L F'],
  5677. // ATip: ['T/G T', 'DRV T'],
  5678. if (this.costTypevalue === "B") {
  5679. data.carGuides1 = "RMB A段费用 " + vehicleResult.sum + " B段费用 RMB" + vehicleResult.Bsum;
  5680. data.meal = "RMB A段费用 " + DJMealResult.sum + " B段费用 RMB" + DJMealResult.Bsum;
  5681. data.subsidizedMeals = "RMB A段费用 " + SubsidizedMealsResult.sum + " B段费用 RMB" + SubsidizedMealsResult.Bsum;
  5682. data.nightRepair = "RMB A段费用 " + NightRepairResult.sum + " B段费用 RMB" + NightRepairResult.Bsum;
  5683. data.attractionsTickets = "RMB A段费用 " + AttractionsTicketsResult.sum + " B段费用 RMB" + AttractionsTicketsResult.Bsum;
  5684. data.miscellaneousFees = "RMB A段费用 " + DJMealResult.sum + " B段费用 RMB" + DJMealResult.Bsum;
  5685. data.aTip = "RMB A段费用 " + ATipResult.sum + " B段费用 RMB" + ATipResult.Bsum;
  5686. } else {
  5687. data.carGuides1 = "RMB " + vehicleResult.sum;
  5688. data.meal = "RMB " + DJMealResult.sum;
  5689. data.subsidizedMeals = "RMB " + SubsidizedMealsResult.sum;
  5690. data.nightRepair = "RMB " + NightRepairResult.sum;
  5691. data.attractionsTickets = "RMB " + AttractionsTicketsResult.sum;
  5692. data.miscellaneousFees = "RMB " + DJMealResult.sum;
  5693. data.aTip = "RMB " + ATipResult.sum;
  5694. }
  5695. var cabinDatalLast = this.cabinDatal.filter(function (x) {
  5696. return x.label == '团组预算明细'
  5697. })
  5698. data.tzZCost = cabinDatalLast[0].sheetInfo[0].gtroupQuotes;
  5699. this.$axios.post('/api/Groups/ExportClientWordFile', data, {
  5700. headers: {
  5701. 'Authorization': this.token,
  5702. }
  5703. }).then(resp => {
  5704. ////////console.log(resp, '------------------------------------');
  5705. if (resp.data.code == 200) {
  5706. var file = resp.data.data;
  5707. that.fileDownload(file.data, file.strFileName);
  5708. } else {
  5709. that.$message.error('操作失败!' + resp.data.msg);
  5710. }
  5711. })
  5712. },
  5713. insertRow(index, rowParam, oper) {
  5714. var that = this;
  5715. var row = {
  5716. "diid": this.diid,
  5717. "day": rowParam.day,
  5718. "date": "",
  5719. "itin": "",
  5720. "carType": "",
  5721. "carCost": "",
  5722. "carNumber": "",
  5723. "carTiming": "",
  5724. "tgs": "",
  5725. "tgwh": "",
  5726. "tgn": "",
  5727. "tgof": "",
  5728. "tgm": "",
  5729. "tga": "",
  5730. "tgtf": "",
  5731. "tgef": "",
  5732. "cfs": "",
  5733. "cfm": "",
  5734. "cfof": "",
  5735. "b": "",
  5736. "l": "",
  5737. "d": "",
  5738. "tbr": "",
  5739. "sgr": "",
  5740. "jS_ES": "",
  5741. "suite": "",
  5742. "accon": "",
  5743. "tv": "",
  5744. "iL": "",
  5745. "if": "",
  5746. "ef": "",
  5747. "b_R_F": "",
  5748. "te": "",
  5749. "tgTips": "",
  5750. "drvTips": "",
  5751. "pc": "",
  5752. "tlf": "",
  5753. "ect": "",
  5754. "id": 1,
  5755. "gwCount": "",
  5756. "fyCount": "",
  5757. "efr": "",
  5758. };
  5759. if (oper == 'UP') {
  5760. if (rowParam.date) {
  5761. row.date = this.addOneDay(rowParam.date, -1);
  5762. }
  5763. that.tableData.splice(index, 0, row)
  5764. } else {
  5765. if (rowParam.date) {
  5766. row.date = this.addOneDay(rowParam.date, 1);
  5767. }
  5768. that.tableData.splice(index + 1, 0, row)
  5769. }
  5770. ////////console.log('that.tableData', that.tableData)
  5771. var thisDay = 1;
  5772. for (var i = 0; i < that.tableData.length; i++) {
  5773. ////////console.log("iiiiiiiiiiiiiiii", i, Number(that.tableData.day))
  5774. if (Number(that.tableData[i].day) > 0) {
  5775. that.tableData[i].day = thisDay;
  5776. thisDay++;
  5777. }
  5778. }
  5779. },
  5780. Dataformat() {
  5781. var that = this;
  5782. var oldSoure = JSON.stringify(that.tableData);
  5783. var souer = {
  5784. "diid": this.diid,
  5785. "day": "-",
  5786. "date": "",
  5787. "itin": "",
  5788. "carType": "",
  5789. "carCost": 0,
  5790. "carNumber": 0,
  5791. "carTiming": 0,
  5792. "tgs": 0,
  5793. "tgwh": 0,
  5794. "tgn": 0,
  5795. "tgof": 0,
  5796. "tgm": 0,
  5797. "tga": 0,
  5798. "tgtf": 0,
  5799. "tgef": 0,
  5800. "cfs": 0,
  5801. "cfm": 0,
  5802. "cfof": 0,
  5803. "b": 0,
  5804. "l": 0,
  5805. "d": 0,
  5806. "tbr": 0,
  5807. "sgr": 0,
  5808. "jS_ES": 0,
  5809. "suite": 0,
  5810. "accon": "",
  5811. "tv": 0,
  5812. "iL": 0,
  5813. "if": 0,
  5814. "ef": 0,
  5815. "b_R_F": 0,
  5816. "te": 0,
  5817. "tgTips": 0,
  5818. "drvTips": 0,
  5819. "pc": 0,
  5820. "tlf": 0,
  5821. "ect": 0,
  5822. "id": 1,
  5823. "gwCount": "",
  5824. "fyCount": "",
  5825. "efr": "",
  5826. };
  5827. var numberList = [];
  5828. for (var key in souer) {
  5829. if (typeof souer[key] == 'number') {
  5830. numberList.push(key);
  5831. }
  5832. }
  5833. ////////console.log(numberList, "numberList!");
  5834. ////////console.log(that.tableData, "that.tableData!");
  5835. for (var i = 0; i < that.tableData.length; i++) {
  5836. that.tableData[i].day = that.tableData[i].day.toString();
  5837. for (var j = 0; j < numberList.length; j++) {
  5838. if (that.tableData[i][numberList[j]] === "") {
  5839. ////////console.log(i + "行数据异常!", numberList[j]);
  5840. that.tableData[i][numberList[j]] = 0;
  5841. }
  5842. }
  5843. }
  5844. var NewSoure = [...that.tableData];
  5845. that.tableData = JSON.parse(oldSoure);
  5846. return NewSoure;
  5847. },
  5848. dateChange(val, index) {
  5849. const regex = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
  5850. if (!regex.test(val)) {
  5851. this.$message.error('日期格式不正确!应该为YYYY-MM-DD格式!');
  5852. this.tableData[index].date = "";
  5853. }
  5854. },
  5855. GetDJLableBJ(lableList) {
  5856. var that = this;
  5857. var result = { sum: 0, Bsum: 0 };
  5858. if (typeof lableList != "object" || lableList['length'] == undefined) {
  5859. return result
  5860. }
  5861. let Djsum = 0;
  5862. let BDjsum = 0;
  5863. for (var i = 0; i < lableList.length; i++) {
  5864. that.sumTopPrice.forEach(function (item1) {
  5865. if (lableList[i] == item1.label) {
  5866. var Aprice = Number(item1.Aprice);
  5867. if (!isNaN(Aprice)) {
  5868. Djsum += Aprice;
  5869. }
  5870. var Bprice = Number(item1.Bprice);
  5871. if (!isNaN(Bprice)) {
  5872. BDjsum += Bprice;
  5873. }
  5874. }
  5875. })
  5876. }
  5877. Djsum = Djsum * this.AGroupCostParameter.rate * this.AGroupCostParameter.djxs;
  5878. BDjsum = BDjsum * this.AGroupCostParameter.rate * this.BGroupCostParameter.djxs;
  5879. if (isNaN(Djsum)) {
  5880. Djsum = 0;
  5881. }
  5882. if (isNaN(BDjsum)) {
  5883. BDjsum = 0;
  5884. }
  5885. result.sum = Djsum.toFixed(2);
  5886. result.Bsum = BDjsum.toFixed(2);
  5887. return result;
  5888. },
  5889. handleChange(currentValue, oldValue) {
  5890. ////////console.log(currentValue, oldValue);
  5891. if (currentValue == undefined) {
  5892. }
  5893. },
  5894. GetWeek(date) {
  5895. if (date) {
  5896. try {
  5897. var myDate = new Date(date);
  5898. var myDay = myDate.getDay();//获取存储当前日期
  5899. var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
  5900. return weekday[myDay];
  5901. } catch (e) {
  5902. ////////console.log("时间格式不正确!")
  5903. return "时间格式不正确!";
  5904. }
  5905. }
  5906. return '';
  5907. },
  5908. confirm() {
  5909. debugger;
  5910. this.outerVisible = false;
  5911. if (this.dialogSelectObject == null) {
  5912. this.dialogSelectObject = {};
  5913. }
  5914. if (Object.keys(this.dialogSelectObject).length != 0) {
  5915. const possibleDialogTitles = ['选择车导数据', '导游信息', '选择车数据', '景点信息'];
  5916. const indexBtn = possibleDialogTitles.indexOf(this.DialogTitle);
  5917. if (indexBtn != -1) {
  5918. if (indexBtn == 0) {
  5919. this.bindCD();
  5920. } else if (indexBtn == 1) {
  5921. this.bindDY();
  5922. } else if (indexBtn == 2) {
  5923. this.bindCSJ();
  5924. } else if (indexBtn == 3) {
  5925. this.bindJD();
  5926. }
  5927. }
  5928. }
  5929. this.dialogSelectObject = {};
  5930. },
  5931. bindCD() {
  5932. debugger;
  5933. var offer = this.dialogSelectObject.offer.match(/\d+/g) != null ? Number(this.dialogSelectObject.offer.match(/\d+/g)[0]) : 0;
  5934. var cgCost = this.dialogSelectObject.cgCost.match(/\d+/g) != null ? Number(this.dialogSelectObject.cgCost.match(/\d+/g)[0]) : 0;
  5935. var cgOvertimeFee = this.dialogSelectObject.cgOvertimeFee.match(/\d+/g) != null ? Number(this.dialogSelectObject.cgOvertimeFee.match(/\d+/g)[0]) : 0;
  5936. var overtimeFee = this.dialogSelectObject.overtimeFee.match(/\d+/g) != null ? Number(this.dialogSelectObject.overtimeFee.match(/\d+/g)[0]) : 0;
  5937. var runingTime = this.dialogSelectObject.runingTime.match(/\d+/g) != null ? Number(this.dialogSelectObject.runingTime.match(/\d+/g)[0]) : 0;
  5938. var row = this.tableData[this.rowIndex];
  5939. var carNumber = row.carNumber;
  5940. row['carCost'] = (carNumber * offer).toFixed(2);
  5941. row['tgs'] = cgCost.toFixed(2);
  5942. row['carTiming'] = runingTime.toFixed(2);
  5943. var carType = this.dialogSelectObject.city + "/" + this.dialogSelectObject.carType + "/" + this.dialogSelectObject.serviceType + "\n";
  5944. row['carType'] = carType;
  5945. },
  5946. bindDY() {
  5947. debugger;
  5948. var row = this.tableData[this.rowIndex];
  5949. var tgn = row.tgn;
  5950. var price = this.dialogSelectObject.price.match(/\d+/g) != null ? Number(this.dialogSelectObject.price.match(/\d+/g)[0]) : 0;
  5951. var translationPrice = this.dialogSelectObject.translationPrice.match(/\d+/g) != null ? Number(this.dialogSelectObject.translationPrice.match(/\d+/g)[0]) : 0;
  5952. var when = this.dialogSelectObject.when.match(/\d+/g) != null ? Number(this.dialogSelectObject.when.match(/\d+/g)[0]) : 0;
  5953. row['tgs'] = (tgn * price).toFixed(2);
  5954. row['if'] = translationPrice.toFixed(2);
  5955. row['tgwh'] = when.toFixed(2);
  5956. },
  5957. bindCSJ() {
  5958. debugger;
  5959. var row = this.tableData[this.rowIndex];
  5960. var carType = this.dialogSelectObject.city + "/" + this.dialogSelectObject.carType + "/" + this.dialogSelectObject.serviceType + "\n";
  5961. var toPrice = this.dialogSelectObject.price.match(/\d+/g) != null ? Number(this.dialogSelectObject.price.match(/\d+/g)[0]) : 0;
  5962. var when = this.dialogSelectObject.when.match(/\d+/g) != null ? Number(this.dialogSelectObject.when.match(/\d+/g)[0]) : 0;
  5963. row['carType'] = carType;
  5964. row['carCost'] = toPrice.toFixed(2);
  5965. row['carTiming'] = when.toFixed(2);
  5966. },
  5967. bindJD() {
  5968. debugger;
  5969. var row = this.tableData[this.rowIndex];
  5970. var Price = this.dialogSelectObject.price;
  5971. row['ef'] = Price.toFixed(2);
  5972. },
  5973. QueryRate() {
  5974. var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
  5975. var that = this
  5976. this.$axios({
  5977. method: 'post',
  5978. url: url,
  5979. headers: {
  5980. Authorization: 'Bearer ' + that.token
  5981. },
  5982. data: {
  5983. "portType": 1,
  5984. "diId": this.diid,
  5985. "cTable": 85
  5986. }
  5987. }).then(function (res) {
  5988. if (res.data.code == 200) {
  5989. //汇率
  5990. //////console.log("汇率--", res.data.data);
  5991. that.currencyOption = res.data.data.teamRates;
  5992. }
  5993. })
  5994. },
  5995. changeCurrency(data) {
  5996. //////console.log('data', data);
  5997. for (let index = 0; index < this.currencyOption.length; index++) {
  5998. if (this.currencyOption[index].currencyId == data) {
  5999. this.AGroupCostParameter.rate = this.currencyOption[index].rate;
  6000. break;
  6001. }
  6002. }
  6003. },
  6004. inSelectChangeCheck() {
  6005. //////console.log('inSelectChangeCheck');
  6006. var arr = [];
  6007. var pusharr = [];
  6008. var topArr = [];
  6009. var topPushArr = [];
  6010. if (this.costTypevalue == 'A') {
  6011. var defaultP = this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0];
  6012. if (defaultP.sgr == 0) {
  6013. arr.push('酒店SGR');
  6014. topArr.push('SGR')
  6015. } else {
  6016. pusharr.push('酒店SGR');
  6017. topPushArr.push('SGR')
  6018. }
  6019. if (defaultP.tbr == 0) {
  6020. arr.push('酒店TBR');
  6021. topArr.push('TBR')
  6022. } else {
  6023. pusharr.push('酒店TBR');
  6024. topPushArr.push('TBR')
  6025. }
  6026. if (defaultP.jses == 0) {
  6027. arr.push('酒店JSES');
  6028. topArr.push('JS/ES')
  6029. } else {
  6030. pusharr.push('酒店JSES');
  6031. topPushArr.push('JS/ES')
  6032. }
  6033. if (defaultP.suite == 0) {
  6034. topArr.push('SUITE')
  6035. arr.push('酒店SUITE');
  6036. }
  6037. else {
  6038. pusharr.push('酒店SUITE');
  6039. topPushArr.push('SUITE')
  6040. }
  6041. } else {
  6042. var HotelA = this.costTypeHotelNumbers.filter(item => item.type == 'A')[0];
  6043. var HotelB = this.costTypeHotelNumbers.filter(item => item.type == 'B')[0];
  6044. if (HotelA.sgr == 0 && HotelB.sgr == 0) { arr.push('酒店SGR'); } else {
  6045. pusharr.push('酒店SGR');
  6046. }
  6047. if (HotelA.tbr == 0 && HotelB.tbr == 0) { arr.push('酒店TBR'); } else {
  6048. pusharr.push('酒店TBR');
  6049. }
  6050. if (HotelA.jses == 0 && HotelB.jses == 0) { arr.push('酒店JSES'); } else {
  6051. pusharr.push('酒店JSES');
  6052. }
  6053. if (HotelA.suite == 0 && HotelB.suite == 0) { arr.push('酒店SUITE'); } else {
  6054. pusharr.push('酒店SUITE');
  6055. }
  6056. }
  6057. var leftCheck = this.CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues;
  6058. var topCheck = this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues;
  6059. var resultArr = leftCheck.filter(item => !arr.includes(item));
  6060. var topResultArr = topCheck.filter(item => !topArr.includes(item));
  6061. resultArr = [...resultArr, ...pusharr];
  6062. resultArr = [...new Set(resultArr)];
  6063. //////console.log('resultArr', resultArr);
  6064. topResultArr = [...topResultArr, ...topPushArr];
  6065. topResultArr = [...new Set(topResultArr)];
  6066. this.CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues = resultArr;
  6067. this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues = topResultArr;
  6068. },
  6069. GivePeopleNumber() {
  6070. var number = this.grouptitleinfo.visitPNumber;
  6071. if (this.AGroupCostParameter.visaRS == 0) {
  6072. this.AGroupCostParameter.visaRS = number;
  6073. }
  6074. if (this.AGroupCostParameter.bxrs == 0) {
  6075. this.AGroupCostParameter.bxrs = number;
  6076. }
  6077. if (this.AGroupCostParameter.djrs == 0) {
  6078. this.AGroupCostParameter.djrs = number;
  6079. }
  6080. if (this.AGroupCostParameter.lyjrs == 0) {
  6081. this.AGroupCostParameter.lyjrs = number;
  6082. }
  6083. if (this.AGroupCostParameter.gwrs == 0) {
  6084. this.AGroupCostParameter.gwrs = number;
  6085. }
  6086. },
  6087. lableSetPrice(lable, total, single) {
  6088. //遍历this.columnTotalData
  6089. for (var i = 0; i < this.columnTotalData.length; i++) {
  6090. if (this.columnTotalData[i].label == lable) {
  6091. this.columnTotalData[i].totalPrice = total;
  6092. this.columnTotalData[i].singlePrice = single;
  6093. break
  6094. }
  6095. }
  6096. },
  6097. BlableSetPrice(lable, total, single) {
  6098. for (var i = 0; i < this.columnTotalData.length; i++) {
  6099. if (this.columnTotalData[i].label == lable) {
  6100. var aT = Number(this.columnTotalData[i].totalPrice).toFixed(2);
  6101. var aS = Number(this.columnTotalData[i].singlePrice).toFixed(2);
  6102. if (!isNaN(aT)) {
  6103. this.columnTotalData[i].totalPrice = 'A段费用' + aT + '\r\n B段费用' + total;
  6104. }
  6105. if (!isNaN(aS)) {
  6106. this.columnTotalData[i].singlePrice = 'A段费用' + aS + '\r\n B段费用' + single;
  6107. }
  6108. break
  6109. }
  6110. }
  6111. },
  6112. importBlackCode() {
  6113. this.blackCodeSelect = '';
  6114. this.gridData = [];
  6115. var url = "/api/Groups/CraeteGroupCostTravel"
  6116. var that = this
  6117. this.$axios({
  6118. method: 'post',
  6119. url: url,
  6120. headers: {
  6121. Authorization: 'Bearer ' + that.token
  6122. },
  6123. data: {
  6124. "diid": that.diid,
  6125. }
  6126. }).then(function (resp) {
  6127. if (resp.data.code == 200) {
  6128. ////console.log('CraeteGroupCostTravelResponse', resp.data.data);
  6129. //that.gridData = resp.data.data.groupCost;
  6130. that.blackCodeIsTrue = resp.data.data.blackCodeIsTrue;
  6131. if (that.blackCodeIsTrue) {
  6132. that.dialogTableVisible = true;
  6133. that.blackCodeListSeLect = resp.data.data.blackCodeListSelect;
  6134. //console.log('that.blackCodeListSeLect', that.blackCodeListSeLect);
  6135. } else {
  6136. that.$message.error("机票数据未录入!");
  6137. }
  6138. // that.tableData = resp.data.data.groupCost;
  6139. // for (var i = 0; i < that.tableData.length; i++) {
  6140. // for (var prop in that.tableData[i]) {
  6141. // if (that.tableData[i][prop] == 0) {
  6142. // that.tableData[i][prop] = ''
  6143. // }
  6144. // }
  6145. // }
  6146. } else {
  6147. that.$message.error("黑屏代码有误!" + resp.data.msg);
  6148. }
  6149. })
  6150. },
  6151. //机票行程确认赋值
  6152. confirmationTP() {
  6153. if (this.gridData.length == 0) {
  6154. this.$message.error("此机票代码无行程!");
  6155. return
  6156. }
  6157. this.tableData = this.gridData;
  6158. for (var i = 0; i < this.tableData.length; i++) {
  6159. for (var prop in this.tableData[i]) {
  6160. if (this.tableData[i][prop] == 0) {
  6161. this.tableData[i][prop] = ''
  6162. }
  6163. }
  6164. }
  6165. this.dialogTableVisible = false;
  6166. },
  6167. //监听鼠标
  6168. MonitorMouse() {
  6169. document.onmousemove = (event) => {
  6170. let x1 = event.clientX
  6171. let y1 = event.clientY
  6172. if (this.x !== x1 || this.y !== y1) {
  6173. this.setTimer();
  6174. }
  6175. this.x = x1
  6176. this.y = y1
  6177. }
  6178. },
  6179. //监听键盘
  6180. MonitorKeyboard() {
  6181. document.onkeydown = () => {
  6182. this.setTimer();
  6183. }
  6184. },
  6185. //取消定时器
  6186. clearTimer() {
  6187. clearTimeout(window.myTimer)
  6188. window.myTimer = null
  6189. //取消监听
  6190. document.onmousemove = null;
  6191. document.onkeydown = null;
  6192. },
  6193. //定时调用函数
  6194. setTimer() {
  6195. this.count = 0
  6196. const mm = 1000 * 60;
  6197. if (window.myTimer) {
  6198. try {
  6199. clearTimeout(window.myTimer);
  6200. } catch (e) {
  6201. ////console.log("setTimerMessage", e.message);
  6202. }
  6203. }
  6204. window.myTimer = setInterval(this.SaveAndLogOut, mm * 30);
  6205. },
  6206. SaveAndLogOut() {
  6207. this.save().then(() => {
  6208. this.$router.push({ name: 'Login' })
  6209. localStorage.removeItem("userinif");
  6210. this.$message({
  6211. type: 'success',
  6212. message: '已退出!'
  6213. });
  6214. ////console.log("保存成功,已退出!");
  6215. }).catch(e => {
  6216. ////console.log(e);
  6217. //console.log("保存失败,仅停止自动保存!");
  6218. clearInterval(this.autoSave);
  6219. })
  6220. },
  6221. TimeUpdateAnewOrderby(index) {
  6222. if (index == 0 && this.tableData.length > 0) {
  6223. var start = this.tableData[0].date;
  6224. for (var i = 0; i < this.tableData.length; i++) {
  6225. if (this.tableData[i].date) {
  6226. this.tableData[i].date = start;
  6227. start = this.addOneDay(start, 1)
  6228. }
  6229. }
  6230. }
  6231. },
  6232. //团组询价列表
  6233. PostHotelInquiryPageItem() {
  6234. var url = "/api/Groups/PostHotelInquiryPageItem"
  6235. var that = this
  6236. this.$axios({
  6237. method: 'post',
  6238. url: url,
  6239. headers: {
  6240. Authorization: 'Bearer ' + this.token
  6241. },
  6242. data: {
  6243. portType: 1,
  6244. pageIndex: 1,
  6245. pageSize: 100,
  6246. diId: that.diid,
  6247. }
  6248. }).then(function (res) {
  6249. that.tableDatas = [];
  6250. if (res.data.code == 200) {
  6251. that.dialogTableVisibleXJ = true;
  6252. that.tableDatas = res.data.data;
  6253. that.checkboxsXJ = [];
  6254. that.hotelIsTrue = res.data.data.length > 0 ? true : false;
  6255. ////console.log(res);
  6256. } else {
  6257. that.$message.error(res.data.msg);
  6258. }
  6259. })
  6260. },
  6261. CheckboxChangeXJ(val) {
  6262. var isFind = this.checkboxsXJ.includes(val);
  6263. if (isFind) {
  6264. this.checkboxsXJ.splice(this.checkboxsXJ.indexOf(val), 1);
  6265. } else {
  6266. this.checkboxsXJ.push(val);
  6267. }
  6268. },
  6269. adoptHotelData() {
  6270. var selectArr = this.tableDatas.filter((x) => {
  6271. return this.checkboxsXJ.includes(x.id);
  6272. });
  6273. //////console.log(selectArr,'selectArr-----------------------');
  6274. if (selectArr.length != 0) {
  6275. for (var i = 0; i < selectArr.length; i++) {
  6276. var startTime = this.addOneDay(selectArr[i].checkInDate, 0);
  6277. var endTime = this.addOneDay(selectArr[i].checkOutDate, 0);
  6278. if (startTime) {
  6279. var flitertabs = this.tableData.filter((x) => {
  6280. var cuo = new Date(x.date).getTime();
  6281. return cuo >= new Date(startTime).getTime() && cuo < new Date(endTime).getTime();
  6282. })
  6283. for (var j = 0; j < flitertabs.length; j++) {
  6284. flitertabs[j].accon = selectArr[i].name;
  6285. flitertabs[j].sgr = selectArr[i].singlePrice * selectArr[i].singleQuantity;
  6286. flitertabs[j].tbr = selectArr[i].doublePrice * selectArr[i].doubleQuantity;
  6287. flitertabs[j].jS_ES = selectArr[i].suitePrice * selectArr[i].suiteQuantity;
  6288. flitertabs[j].suite = selectArr[i].otherPrice * selectArr[i].otherQuantity;
  6289. }
  6290. ////console.log('flitertabs',flitertabs);
  6291. }
  6292. }
  6293. this.dialogTableVisibleXJ = false;
  6294. } else {
  6295. this.$message.error("请选择数据!");
  6296. }
  6297. },
  6298. GetHistoryCarData(index) {
  6299. this.historyCarInput = this.grouptitleinfo.visitCountry;
  6300. this.historyCarDialog = true;
  6301. this.pageSize = 7;
  6302. this.historyCarIndex = index;
  6303. this.historyCarSearch();
  6304. },
  6305. historyCarSearch() {
  6306. var url = "/api/Groups/GetHistoryCarData";
  6307. var that = this;
  6308. this.$axios({
  6309. method: 'post',
  6310. url: url,
  6311. headers: {
  6312. Authorization: 'Bearer ' + this.token
  6313. },
  6314. data: {
  6315. param: this.historyCarInput
  6316. }
  6317. }).then(function (res) {
  6318. that.historyCarData = [];
  6319. if (res.data.code == 200) {
  6320. //console.log(res.data.data)
  6321. that.historyCarData = res.data.data;
  6322. } else {
  6323. that.$message.error(res.data.msg);
  6324. }
  6325. })
  6326. },
  6327. dialogClose() {
  6328. this.pageSize = 5;
  6329. this.currentPage = 1;
  6330. },
  6331. historyCarChange(row, oldrow) {
  6332. ////console.log(row, oldrow);
  6333. this.historyCarSelectObject = row;
  6334. },
  6335. historyCarYes() {
  6336. ////console.log(this.historyCarSelectObject,'historyCarSelectObject');
  6337. if (this.historyCarIndex != -1) {
  6338. this.tableData[this.historyCarIndex].carCost = this.historyCarSelectObject.dayPrice;
  6339. }
  6340. this.historyCarDialog = false;
  6341. },
  6342. //获取客户名单info
  6343. PostTourClientListByDiId(id) {
  6344. var that = this
  6345. var url = "/api/Groups/PostTourClientListByDiId"
  6346. this.$axios({
  6347. method: 'post',
  6348. url: url,
  6349. headers: {
  6350. Authorization: 'Bearer ' + that.token
  6351. },
  6352. data: {
  6353. portType: 1,
  6354. diid: id,
  6355. pageId: 104,
  6356. userId: that.userId
  6357. }
  6358. }).then(function (res) {
  6359. if (res.data.code == 200) {
  6360. that.rollcallarr = res.data.data;
  6361. that.hideAirInfo();
  6362. }
  6363. })
  6364. },
  6365. //fenge
  6366. fgarr(val) {
  6367. val = val + ""
  6368. return val.split(' ')[0]
  6369. },
  6370. //拼音
  6371. pinyingxing(val) {
  6372. return pinyin(val, { toneType: 'none' }).toUpperCase();
  6373. },
  6374. UserMount() {
  6375. Array.prototype.whereToList = function (callback) {
  6376. if (!callback) return this;
  6377. if (typeof callback !== 'function') return this;
  6378. var list = [];
  6379. for (let index = 0; index < this.length; index++) {
  6380. if (callback(this[index])) {
  6381. list.push(this[index])
  6382. }
  6383. }
  6384. return list;
  6385. };
  6386. Array.prototype.firstWhere = function (callback) {
  6387. if (!callback) return this;
  6388. if (typeof callback !== 'function') return this;
  6389. for (let index = 0; index < this.length; index++) {
  6390. if (callback(this[index])) {
  6391. return this[index]
  6392. }
  6393. }
  6394. return null;
  6395. };
  6396. },
  6397. //重新获取人数
  6398. getGroupInfo() {
  6399. return new Promise((resolve, reject) => {
  6400. var url = "/api/Groups/GetGroupInfo"
  6401. if (this.diid != undefined) {
  6402. this.$axios({
  6403. method: 'post',
  6404. url: url,
  6405. headers: {
  6406. Authorization: 'Bearer ' + this.token
  6407. },
  6408. data: {
  6409. portType: 1,
  6410. id: this.diid
  6411. }
  6412. }).then((res) => {
  6413. ////console.log(res);
  6414. if (res.data.code == 200) {
  6415. this.groupInfoEditData = {
  6416. visitDate: res.data.data.visitDate,
  6417. visitPNumber: res.data.data.visitPNumber,
  6418. visitDays: res.data.data.visitDays,
  6419. }
  6420. if (this.grouptitleinfo.visitPNumber != res.data.data.visitPNumber) {
  6421. this.grouptitleinfo.visitPNumber = res.data.data.visitPNumber;
  6422. resolve(true);
  6423. } else {
  6424. resolve(false);
  6425. }
  6426. } else {
  6427. resolve(false);
  6428. }
  6429. })
  6430. }
  6431. })
  6432. },
  6433. blackCodeSelectChange(val) {
  6434. //获取行程
  6435. var that = this
  6436. var url = "/api/Groups/CraeteGroupCostTravelById"
  6437. this.$axios({
  6438. method: 'post',
  6439. url: url,
  6440. headers: {
  6441. Authorization: 'Bearer ' + that.token
  6442. },
  6443. data: {
  6444. diid: this.diid,
  6445. BlackCodeId: val
  6446. }
  6447. }).then(function (res) {
  6448. //console.log(res, "res");
  6449. if (res.data.code == 200) {
  6450. that.gridData = res.data.data.groupCost;
  6451. //console.log('that.gridData', that.gridData);
  6452. } else {
  6453. that.gridData = [];
  6454. that.$message.error("此行程代码有误!");
  6455. }
  6456. })
  6457. },
  6458. remoteMethod(query) {
  6459. if (true) {
  6460. this.selectLoading = true;
  6461. this.$axios.post('/api/Groups/SearchGroupByKeyword', {
  6462. Keyword: query,
  6463. }, {
  6464. headers: {
  6465. 'Authorization': this.token,
  6466. },
  6467. }).then(resp => {
  6468. if (resp.data.code == 200) {
  6469. this.options = resp.data.data;
  6470. } else if (resp.data.code == 201) {
  6471. this.options = [];
  6472. } else {
  6473. //js抛异常
  6474. throw new Error(resp.data.msg);
  6475. }
  6476. }).catch(err => {
  6477. this.$message.error('网络异常!');
  6478. }).finally(() => {
  6479. this.selectLoading = false;
  6480. })
  6481. }
  6482. },
  6483. GroupSelectFocus() {
  6484. if (this.options.length == 0) {
  6485. this.remoteMethod("")
  6486. }
  6487. },
  6488. async CopyGroupCost() {
  6489. if (this.costTypevalue == 'A') {
  6490. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  6491. return x.type == 'Default'
  6492. })[0];
  6493. var pNumber = 0;
  6494. //遍历 sgrfilter对象
  6495. for (var key in sgrfilter) {
  6496. var parNumber = Number(sgrfilter[key]);
  6497. if (isNaN(parNumber)) {
  6498. parNumber = 0;
  6499. } else {
  6500. if (key == 'tbr') {
  6501. pNumber += parNumber * 2;
  6502. }
  6503. if (key == 'sgr') {
  6504. pNumber += parNumber;
  6505. }
  6506. if (key == 'jses') {
  6507. pNumber += parNumber;
  6508. }
  6509. if (key == 'suite') {
  6510. pNumber += parNumber;
  6511. }
  6512. }
  6513. }
  6514. var isChange = await this.getGroupInfo();
  6515. if (isChange) {
  6516. var number = this.grouptitleinfo.visitPNumber;
  6517. this.AGroupCostParameter.visaRS = number;
  6518. this.AGroupCostParameter.bxrs = number;
  6519. this.AGroupCostParameter.djrs = number;
  6520. this.AGroupCostParameter.gwrs = number;
  6521. this.AGroupCostParameter.lyjrs = number;
  6522. }
  6523. ////console.log(pNumber, 'pNumber-------------');
  6524. if (this.grouptitleinfo.visitPNumber != pNumber) {
  6525. this.$message.error('团组人数与房间人数不一致!')
  6526. return resolve(false);
  6527. }
  6528. }
  6529. var that = this;
  6530. var Data = { diid: this.diid, userid: this.userId };
  6531. var isTrue = await this.formVerify();
  6532. if (isTrue) {
  6533. Data.checkBoxs = this.CheckBoxListSelect.map(x => {
  6534. return {
  6535. diid: x.diid,
  6536. cbType: x.cbType,
  6537. cbValues: x.cbValues.join(',')
  6538. };
  6539. });
  6540. Data.groupCosts = this.tableData;
  6541. Data.costTypeHotelNumbers = this.costTypeHotelNumbers.map(x => {
  6542. return {
  6543. id: x.id,
  6544. sgr: x.sgr,
  6545. tbr: x.tbr,
  6546. jses: x.jses,
  6547. suite: x.suite,
  6548. type: x.type,
  6549. diid: that.diid
  6550. };
  6551. });
  6552. this.AGroupCostParameter.currency = this.AGroupCostParameter.currency.toString();
  6553. this.AGroupCostParameter.diId = this.diid;
  6554. this.BGroupCostParameter.diId = this.diid;
  6555. var Aparam = Object.assign({}, this.AGroupCostParameter);
  6556. var Bparam = Object.assign({}, this.BGroupCostParameter);
  6557. if (that.AGroupCostParameter.costTypeStartTime) {
  6558. Aparam.costTypeStartTime = this.addOneDay(that.AGroupCostParameter.costTypeStartTime, 0);
  6559. }
  6560. if (that.AGroupCostParameter.costTypeendTime) {
  6561. Aparam.costTypeendTime = this.addOneDay(that.AGroupCostParameter.costTypeendTime, 0);
  6562. }
  6563. if (that.BGroupCostParameter.costTypeStartTime) {
  6564. Bparam.costTypeStartTime = this.addOneDay(that.BGroupCostParameter.costTypeStartTime, 0);
  6565. }
  6566. if (that.BGroupCostParameter.costTypeendTime) {
  6567. Bparam.costTypeendTime = this.addOneDay(that.BGroupCostParameter.costTypeendTime, 0);
  6568. }
  6569. if (this.costTypevalue == "A") {
  6570. Data.groupCostParameters = [Aparam];
  6571. } else {
  6572. Data.groupCostParameters = [Aparam, Bparam];
  6573. }
  6574. var ResultCostArr = this.Dataformat();
  6575. Data.groupCosts = ResultCostArr;
  6576. Data.ToGroupId = this.dialogCopySelect;
  6577. ////////console.log(Data, "save-------Data");
  6578. var that = this;
  6579. this.$axios.post('/api/Groups/CopyGroupCost', Data, {
  6580. headers: {
  6581. 'Authorization': that.token,
  6582. }
  6583. }).then(resp => {
  6584. if (resp.data.code == 200) {
  6585. this.$message({
  6586. message: '复制成功!',
  6587. type: 'success'
  6588. });
  6589. } else {
  6590. this.$message.error('复制失败!' + resp.data.msg);
  6591. }
  6592. var result = Number(that.AGroupCostParameter.currency);
  6593. if (isNaN(result)) {
  6594. } else {
  6595. that.AGroupCostParameter.currency = result;
  6596. }
  6597. }).finally(() => {
  6598. this.dialogCopyVisible = false;
  6599. })
  6600. } else {
  6601. this.dialogCopyVisible = false;
  6602. this.$message.error('请将本团组完善!');
  6603. }
  6604. },
  6605. EditGroupInfoEv() {
  6606. //表单校验
  6607. var globalValid = false;
  6608. this.$refs.groupInfoEditData.validate((valid) => {
  6609. globalValid = valid;
  6610. });
  6611. if (!globalValid) {
  6612. this.$message.error('请将数据完善!');
  6613. return;
  6614. }
  6615. var that = this;
  6616. this.groupInfoEditData.diid = this.diid;
  6617. this.$axios.post('/api/Groups/GroupCostEditGroupInfo', this.groupInfoEditData, {
  6618. headers: {
  6619. 'Authorization': that.token,
  6620. }
  6621. }).then(async (res) => {
  6622. if (res.data.code == 200) {
  6623. this.showEditGroupInfoDialog = false;
  6624. // this.$message({
  6625. // message: '保存成功!',
  6626. // type: 'success'
  6627. // })
  6628. var Data = { diid: this.diid, userid: this.userId };
  6629. var isTrue = await this.formVerify();
  6630. if (isTrue) {
  6631. Data.checkBoxs = this.CheckBoxListSelect.map(x => {
  6632. return {
  6633. diid: x.diid,
  6634. cbType: x.cbType,
  6635. cbValues: x.cbValues.join(',')
  6636. };
  6637. });
  6638. Data.groupCosts = this.tableData;
  6639. Data.costTypeHotelNumbers = this.costTypeHotelNumbers.map(x => {
  6640. return {
  6641. id: x.id,
  6642. sgr: x.sgr,
  6643. tbr: x.tbr,
  6644. jses: x.jses,
  6645. suite: x.suite,
  6646. type: x.type,
  6647. diid: this.diid
  6648. };
  6649. });
  6650. this.AGroupCostParameter.currency = this.AGroupCostParameter.currency.toString();
  6651. this.AGroupCostParameter.diId = this.diid;
  6652. this.BGroupCostParameter.diId = this.diid;
  6653. var Aparam = Object.assign({}, this.AGroupCostParameter);
  6654. var Bparam = Object.assign({}, this.BGroupCostParameter);
  6655. if (this.AGroupCostParameter.costTypeStartTime) {
  6656. Aparam.costTypeStartTime = this.addOneDay(this.AGroupCostParameter.costTypeStartTime, 0);
  6657. }
  6658. if (this.AGroupCostParameter.costTypeendTime) {
  6659. Aparam.costTypeendTime = this.addOneDay(this.AGroupCostParameter.costTypeendTime, 0);
  6660. }
  6661. if (this.BGroupCostParameter.costTypeStartTime) {
  6662. Bparam.costTypeStartTime = this.addOneDay(this.BGroupCostParameter.costTypeStartTime, 0);
  6663. }
  6664. if (this.BGroupCostParameter.costTypeendTime) {
  6665. Bparam.costTypeendTime = this.addOneDay(this.BGroupCostParameter.costTypeendTime, 0);
  6666. }
  6667. if (this.costTypevalue == "A") {
  6668. Data.groupCostParameters = [Aparam];
  6669. } else {
  6670. Data.groupCostParameters = [Aparam, Bparam];
  6671. }
  6672. var ResultCostArr = this.Dataformat();
  6673. Data.groupCosts = ResultCostArr;
  6674. ////////console.log(Data, "save-------Data");
  6675. this.$axios.post('/api/Groups/SaveGroupCost', Data, {
  6676. headers: {
  6677. 'Authorization': this.token,
  6678. }
  6679. }).then(resp => {
  6680. ////////console.log(resp.data.data, '------------------------------------');
  6681. if (resp.data.code == 200) {
  6682. this.$message({
  6683. message: '保存成功!',
  6684. type: 'success'
  6685. });
  6686. //刷新页面
  6687. var costLoadData = localStorage.getItem('costLoadData');
  6688. if (costLoadData) {
  6689. var JSONP = JSON.parse(costLoadData);
  6690. var diidP = Number(JSONP.diid);
  6691. this.loadData(isNaN(diidP) ? -1 : diidP);
  6692. } else {
  6693. this.loadData(-1);
  6694. }
  6695. } else {
  6696. this.$message.error('保存失败!' + resp.data.msg);
  6697. }
  6698. var result = Number(this.AGroupCostParameter.currency);
  6699. if (isNaN(result)) {
  6700. } else {
  6701. this.AGroupCostParameter.currency = result;
  6702. }
  6703. })
  6704. } else {
  6705. this.$message.error('请输入完整!');
  6706. }
  6707. } else {
  6708. this.$message.error("操作失败" + res.data.msg);
  6709. }
  6710. }).catch((error) => {
  6711. this.$message.error("操作失败" + error);
  6712. })
  6713. },
  6714. hideAirInfo() {
  6715. var settomgAir = [
  6716. //{ key: "经济舱", text: "经济舱单人成本(CNY)" },
  6717. { key: "公务舱", text: "公务舱单人成本(CNY)" },
  6718. { key: "头等舱", text: "头等舱单人成本(CNY)" }
  6719. ];
  6720. var hideAirInfoArr = [];
  6721. for (var j = 0; j < settomgAir.length; j++) {
  6722. var first = this.rollcallarr.firstWhere(x => x.shippingSpaceType == settomgAir[j].key);
  6723. if (!first) {
  6724. hideAirInfoArr.push(settomgAir[j].text)
  6725. }
  6726. }
  6727. const container = document.getElementsByClassName('sheet-box')[0];
  6728. if (container) {
  6729. container.querySelectorAll('.biaoge').forEach((item) => {
  6730. item.style.display = 'block';
  6731. })
  6732. console.log(this.rollcallarr.length, 'this.rollcallarr.length');
  6733. if (this.rollcallarr.length == 0) {
  6734. return;
  6735. }
  6736. if (this.costTypevalue == 'B') {
  6737. container.querySelectorAll('.biaogeB').forEach((item) => {
  6738. item.style.display = 'block';
  6739. })
  6740. hideAirInfoArr = [...hideAirInfoArr, ...hideAirInfoArr];
  6741. }
  6742. hideAirInfoArr.forEach((item) => {
  6743. var elem = null;
  6744. const elementsInContainer = container.querySelectorAll('*');
  6745. elementsInContainer.forEach((element) => {
  6746. if (element.textContent == item && element.textContent) {
  6747. if (!this.isElementHidden(element)) {
  6748. //console.log('找到包含内容且未隐藏的元素:', element);
  6749. if (elem == null) {
  6750. elem = element;
  6751. return
  6752. }
  6753. }
  6754. }
  6755. });
  6756. if (elem && elem.tagName == 'TH') {
  6757. const targetClassName = 'biaoge';
  6758. let parent = elem;
  6759. let hasParentWithClass = false;
  6760. while (parent) {
  6761. var isBool = parent.classList && parent.classList.contains(targetClassName);
  6762. if (this.costTypevalue == 'B' && !isBool) {
  6763. isBool = parent.classList && parent.classList.contains('biaogeB');
  6764. }
  6765. if (isBool) {
  6766. hasParentWithClass = true;
  6767. parent.style.display = 'none';
  6768. break;
  6769. }
  6770. parent = parent.parentElement; // 移动到上一级父容器
  6771. }
  6772. }
  6773. })
  6774. } else {
  6775. console.log('未找到指定的容器');
  6776. }
  6777. },
  6778. isElementHidden(element) {
  6779. if (element.style.display === 'none') {
  6780. return true;
  6781. }
  6782. if (element.hidden) {
  6783. return true;
  6784. }
  6785. if (element.style.visibility === 'hidden') {
  6786. return true;
  6787. }
  6788. if (element.offsetParent === null) {
  6789. return true;
  6790. }
  6791. return false;
  6792. },
  6793. QueryGroupCostXS() {
  6794. this.groupcostXSList = [];
  6795. var Data = {
  6796. diid: this.diid,
  6797. VisaCB: this.AGroupCostParameter.visaCB,
  6798. VisaRS: this.AGroupCostParameter.visaRS,
  6799. HCPCB: this.AGroupCostParameter.hcpcb,
  6800. JJCCB: this.AGroupCostParameter.jjccb,
  6801. GWCCB: this.AGroupCostParameter.gwccb,
  6802. TDCCB: this.AGroupCostParameter.tdccb,
  6803. DJRS: this.AGroupCostParameter.djrs,
  6804. LYJRS: this.AGroupCostParameter.lyjrs
  6805. }
  6806. this.$axios.post('/api/Groups/QueryGroupCostCoefficient', Data, {
  6807. headers: {
  6808. 'Authorization': this.token,
  6809. }
  6810. }).then(resp => {
  6811. this.groupcostXSList = resp.data.data.filter(item => item.value !== 0);
  6812. })
  6813. },
  6814. groupcostXSSet() {
  6815. for (let index = 0; index < this.groupcostXSList.length; index++) {
  6816. if (this.AGroupCostParameter[this.groupcostXSList[index].key.toLowerCase()] != undefined) {
  6817. this.AGroupCostParameter[this.groupcostXSList[index].key.toLowerCase()] = this.groupcostXSList[index].value;
  6818. } else {
  6819. console.log(this.groupcostXSList[index].key.toLowerCase() + "属性未找到");
  6820. }
  6821. }
  6822. this.groupcostXSVisible = false;
  6823. }
  6824. },
  6825. updated() {
  6826. this.$emit('transfer', true)
  6827. },
  6828. destroyed() {
  6829. this.$emit('transfer', false)
  6830. clearInterval(this.autoSave);
  6831. },
  6832. mounted() {
  6833. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  6834. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
  6835. var costLoadData = localStorage.getItem('costLoadData');
  6836. const mm = 1000 * 60;
  6837. if (this.userId == 21) {
  6838. this.autoSave = setInterval(() => {
  6839. this.$message.success('自动保存中...');
  6840. setTimeout(() => {
  6841. this.save();
  6842. }, 100);
  6843. }, mm * 10);
  6844. this.MonitorMouse();
  6845. this.MonitorKeyboard();
  6846. this.setTimer();
  6847. }
  6848. document.querySelectorAll('.el-table__footer')[0].style.display = "none";
  6849. if (costLoadData) {
  6850. var JSONP = JSON.parse(costLoadData);
  6851. var diidP = Number(JSONP.diid);
  6852. this.loadData(isNaN(diidP) ? -1 : diidP);
  6853. } else {
  6854. this.loadData(-1);
  6855. }
  6856. this.UserMount();
  6857. window.Vue = this;
  6858. },
  6859. beforeDestroy() {
  6860. this.clearTimer()
  6861. },
  6862. computed: {
  6863. filterdialogSearchInput() {
  6864. var that = this;
  6865. return this.dialogTableData.filter(function (x) {
  6866. var fliterWhere = [];
  6867. if (that.dialogSearchInput.split('、') != -1) {
  6868. fliterWhere = that.dialogSearchInput.split('、');
  6869. } else {
  6870. fliterWhere = [that.dialogSearchInput];
  6871. }
  6872. for (var i = 0; i < fliterWhere.length; i++) {
  6873. if (x.city.indexOf(fliterWhere[i]) != -1 || x.country.indexOf(fliterWhere[i]) != -1) {
  6874. return x;
  6875. }
  6876. }
  6877. })
  6878. },
  6879. columnWidth() {
  6880. ////console.log(this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length);
  6881. if (this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length < 22) {
  6882. return 74
  6883. }
  6884. else if (22 <= this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length < 26) {
  6885. return 59
  6886. }
  6887. else {
  6888. return 55
  6889. }
  6890. },
  6891. ShowMeals() {
  6892. if (this.ShowBaoPi.length > 0) {
  6893. var result = this.ShowBaoPi.filter(x => x.type == 'Meals')[0];
  6894. if (result) {
  6895. return result.content;
  6896. } else {
  6897. return [];
  6898. }
  6899. }
  6900. return [];
  6901. },
  6902. ShowHotel() {
  6903. if (this.ShowBaoPi.length > 0) {
  6904. var result = this.ShowBaoPi.filter(x => x.type == 'Hotel')[0];
  6905. if (result) {
  6906. return result.content;
  6907. } else {
  6908. return [];
  6909. }
  6910. }
  6911. return [];
  6912. },
  6913. ShowGongZa() {
  6914. if (this.ShowBaoPi.length > 0) {
  6915. var result = this.ShowBaoPi.filter(x => x.type == 'GongZa')[0];
  6916. if (result) {
  6917. return result.content;
  6918. } else {
  6919. return [];
  6920. }
  6921. }
  6922. return [];
  6923. },
  6924. getCurr() {
  6925. var currStr = '';
  6926. var curr = this.AGroupCostParameter.currency;
  6927. var currResult = Number(curr);
  6928. if (isNaN(currResult)) {
  6929. currStr = curr;
  6930. } else {
  6931. for (let index = 0; index < this.currencyOption.length; index++) {
  6932. if (this.currencyOption[index].currencyId == currResult) {
  6933. currStr = this.currencyOption[index].currencyCode;
  6934. break;
  6935. }
  6936. }
  6937. }
  6938. return currStr;
  6939. },
  6940. ShowOther() {
  6941. if (this.ShowBaoPi.length > 0) {
  6942. var result = this.ShowBaoPi.filter(x => x.type == 'Other')[0];
  6943. if (result) {
  6944. return result.content;
  6945. } else {
  6946. return [];
  6947. }
  6948. }
  6949. return [];
  6950. }
  6951. },
  6952. filters: {
  6953. filter_time(value) {
  6954. if (value) {
  6955. return value.split(" ")[0]
  6956. }
  6957. },
  6958. townum(val) {
  6959. return val.toFixed(2)
  6960. },
  6961. }
  6962. }
  6963. </script>
  6964. <style lang="less" scoped>
  6965. /deep/ .el-table th.el-table__cell>.cell {
  6966. white-space: pre-wrap;
  6967. }
  6968. /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
  6969. background: #F0F9FF;
  6970. }
  6971. </style>
  6972. <style>
  6973. .cost-all {
  6974. font-size: 12px;
  6975. }
  6976. .cost-box {
  6977. background-color: #fff;
  6978. padding: 10px;
  6979. box-shadow: 0 0 5px #0005;
  6980. border-radius: 10px;
  6981. }
  6982. .cost-box .el-button+.el-button {
  6983. margin-left: 0;
  6984. }
  6985. .fade-enter-active,
  6986. .fade-leave-active {
  6987. transition: opacity 1;
  6988. }
  6989. .fade-enter,
  6990. .fade-leave-to {
  6991. opacity: 0;
  6992. }
  6993. .cost-haed {
  6994. margin-bottom: 10px;
  6995. }
  6996. .ser-btn {
  6997. display: flex;
  6998. justify-content: space-between;
  6999. margin-bottom: 5px;
  7000. }
  7001. .cost-info {
  7002. display: flex;
  7003. }
  7004. .cost-info-li {
  7005. margin-right: 30px;
  7006. }
  7007. .cost-info-li label {
  7008. color: #606266;
  7009. font-size: 15px;
  7010. font-weight: 600;
  7011. }
  7012. .cost-info-li span {
  7013. color: #606266;
  7014. font-size: 14px;
  7015. }
  7016. .cost-box .el-checkbox-group {
  7017. margin: 5px 0;
  7018. }
  7019. .form-ss .el-checkbox {
  7020. width: 100px;
  7021. margin: 5px 0;
  7022. }
  7023. .sheet-box {
  7024. margin-top: 30px;
  7025. }
  7026. .cabin-box {
  7027. margin-top: 30px;
  7028. }
  7029. .biaoge,
  7030. .biaogeB {
  7031. margin-bottom: 30px;
  7032. }
  7033. .rapAddress {
  7034. overflow: hidden;
  7035. white-space: nowrap;
  7036. text-overflow: ellipsis;
  7037. }
  7038. .cost-box .cabin-box .cost-box .el-checkbox {
  7039. margin-right: 20px;
  7040. }
  7041. .cost-box .el-table .cell {
  7042. text-align: center;
  7043. padding-left: 5px;
  7044. padding-right: 5px;
  7045. font-size: 12px;
  7046. }
  7047. .figures-btn {
  7048. display: flex;
  7049. flex-direction: column;
  7050. align-items: center;
  7051. }
  7052. .figures-btn .el-button--mini {
  7053. width: 67px;
  7054. margin: 2px 0;
  7055. margin-left: 0;
  7056. }
  7057. .CostBShow .el-col-3 .el-form-item__content {
  7058. width: 60%;
  7059. }
  7060. .CostBShow .el-form-item__content {
  7061. width: 65%;
  7062. }
  7063. .CostBShow .el-date-editor--date {
  7064. width: 100%;
  7065. }
  7066. .Cost_topFlex .el-select {
  7067. width: 400px;
  7068. }
  7069. .hiddenElement {
  7070. visibility: hidden;
  7071. }
  7072. .cost-all .el-table__footer-wrapper .cell {
  7073. white-space: pre;
  7074. }
  7075. .cost-all .el-date-editor.el-input,
  7076. .el-date-editor.el-input__inner {
  7077. width: 100%;
  7078. }
  7079. .biaogeB .el-table .el-input--small {
  7080. width: 60%;
  7081. }
  7082. .biaogeKz .el-table .el-input--small {
  7083. width: 60%;
  7084. }
  7085. .czbtn {
  7086. width: 70px;
  7087. }
  7088. .tables .el-textarea {
  7089. font-size: 12px;
  7090. }
  7091. .tables .el-button--mini {
  7092. font-size: 12px;
  7093. }
  7094. .tables .el-textarea__inner {
  7095. padding: 0;
  7096. }
  7097. .tables .el-input--suffix .el-input__inner {
  7098. padding-right: 0px;
  7099. padding-left: 0px;
  7100. }
  7101. .tables .el-date-editor .el-icon-date {
  7102. display: none;
  7103. }
  7104. .form-ss .el-checkbox__label {
  7105. font-size: 12px;
  7106. }
  7107. .tables .el-input--mini {
  7108. font-size: 12px;
  7109. }
  7110. .tables .el-input__inner {
  7111. padding: 0;
  7112. text-align: center;
  7113. }
  7114. .sheet-box .el-table th.el-table__cell>.cell {
  7115. font-size: 12px;
  7116. }
  7117. .sheet-box .el-input__inner {
  7118. font-size: 12px;
  7119. }
  7120. .cost-all .el-form-item {
  7121. margin-bottom: 5px;
  7122. }
  7123. .cost-all input::-webkit-inner-spin-button {
  7124. -webkit-appearance: none !important;
  7125. }
  7126. .cost-all input::-webkit-outer-spin-button {
  7127. -webkit-appearance: none !important;
  7128. }
  7129. .cost-all input[type="number"] {
  7130. -moz-appearance: textfield;
  7131. }
  7132. .btntop:hover {
  7133. cursor: pointer;
  7134. color: #000;
  7135. }
  7136. .btnbottom:hover {
  7137. cursor: pointer;
  7138. color: #000;
  7139. }
  7140. .accon-ul {
  7141. position: absolute;
  7142. box-shadow: #0005 0 0 10px;
  7143. width: 200px;
  7144. z-index: 444;
  7145. background-color: #fff;
  7146. border-radius: 5px;
  7147. display: none;
  7148. }
  7149. .accon-box .accons-ul {
  7150. display: inline-block;
  7151. }
  7152. .accon-li {
  7153. padding: 10px 5px;
  7154. text-align: left;
  7155. }
  7156. .accon-li:hover {
  7157. background-color: #0001;
  7158. }
  7159. .accon-ul:last-child {
  7160. bottom: 15px;
  7161. }
  7162. .btn-dialog-cost {
  7163. margin-top: 20px;
  7164. text-align: right;
  7165. }
  7166. .history-btn {
  7167. display: flex;
  7168. justify-content: center;
  7169. }
  7170. .cost-all .el-table th.el-table__cell>.cell {
  7171. text-align: center;
  7172. font-size: 12px;
  7173. }
  7174. </style>