Cost.vue 285 KB

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