Cost.vue 302 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877
  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: 'tdc',
  1248. childList: [
  1249. {
  1250. childLabel: '头等舱单人成本(CNY)',
  1251. prop: 'tdccb',
  1252. title: '头等舱报批费用:',
  1253. tips: '0',
  1254. },
  1255. {
  1256. childLabel: '人数',
  1257. prop: 'tdcrs'
  1258. },
  1259. {
  1260. childLabel: '头等舱系数',
  1261. prop: 'tdcxs'
  1262. },
  1263. {
  1264. childLabel: '头等舱总成本(CNY)',
  1265. prop: 'ZCB'
  1266. },
  1267. {
  1268. childLabel: '头等舱单人报价(CNY)',
  1269. prop: 'DRBJ'
  1270. },
  1271. {
  1272. childLabel: '头等舱总报价(CNY)',
  1273. prop: 'ZBJ'
  1274. },
  1275. {
  1276. childLabel: '头等舱单人利润(CNY)',
  1277. prop: 'DRLR'
  1278. },
  1279. {
  1280. childLabel: '头等舱总利润(CNY)',
  1281. prop: 'ZLR'
  1282. },
  1283. ],
  1284. },
  1285. {
  1286. label: '船票',
  1287. EnLabel: 'cp',
  1288. childList: [
  1289. {
  1290. childLabel: '船票单人成本(CNY)',
  1291. prop: 'cpcb'
  1292. },
  1293. {
  1294. childLabel: '人数',
  1295. prop: 'cprs'
  1296. },
  1297. {
  1298. childLabel: '船票系数',
  1299. prop: 'cpxs'
  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. label: '核酸检测',
  1325. EnLabel: 'hs',
  1326. childList: [
  1327. {
  1328. childLabel: '核酸检测单人成本(CNY)',
  1329. prop: 'hscb',
  1330. title: '核酸检测报批费用:',
  1331. tips: '这是一个tips',
  1332. },
  1333. {
  1334. childLabel: '人数',
  1335. prop: 'hsrs'
  1336. },
  1337. {
  1338. childLabel: '核酸检测系数',
  1339. prop: 'hsxs'
  1340. },
  1341. {
  1342. childLabel: '核酸检测总成本(CNY)',
  1343. prop: 'ZCB'
  1344. },
  1345. {
  1346. childLabel: '核酸检测单人报价(CNY)',
  1347. prop: 'DRBJ'
  1348. },
  1349. {
  1350. childLabel: '核酸检测总报价(CNY)',
  1351. prop: 'ZBJ'
  1352. },
  1353. {
  1354. childLabel: '核酸检测单人利润(CNY)',
  1355. prop: 'DRLR'
  1356. },
  1357. {
  1358. childLabel: '核酸检测总利润(CNY)',
  1359. prop: 'ZLR'
  1360. },
  1361. ],
  1362. },
  1363. //---
  1364. {
  1365. label: '酒店TBR',
  1366. EnLabel: 'tbr',
  1367. childList: [
  1368. {
  1369. childLabel: '酒店TBR单间成本(CNY)',
  1370. prop: 'tbrcb',
  1371. isBind: true
  1372. },
  1373. {
  1374. childLabel: '间数',
  1375. prop: 'tbrNumber'
  1376. },
  1377. {
  1378. childLabel: '酒店TBR系数',
  1379. prop: 'tbrxs'
  1380. },
  1381. {
  1382. childLabel: '酒店TBR总成本(CNY)',
  1383. prop: 'ZCB'
  1384. },
  1385. {
  1386. childLabel: '酒店TBR单间报价(CNY)',
  1387. prop: 'DRBJ'
  1388. },
  1389. {
  1390. childLabel: '酒店TBR总报价(CNY)',
  1391. prop: 'ZBJ'
  1392. },
  1393. {
  1394. childLabel: '酒店TBR单间利润(CNY)',
  1395. prop: 'DRLR'
  1396. },
  1397. {
  1398. childLabel: '酒店TBR总利润(CNY)',
  1399. prop: 'ZLR'
  1400. },
  1401. ],
  1402. },
  1403. {
  1404. label: '酒店SGR',
  1405. EnLabel: 'sgr',
  1406. childList: [
  1407. {
  1408. childLabel: '酒店SGR单间成本(CNY)',
  1409. prop: 'sgrcb',
  1410. isBind: true
  1411. },
  1412. {
  1413. childLabel: '间数',
  1414. prop: 'sgrNumber'
  1415. },
  1416. {
  1417. childLabel: '酒店SGR系数',
  1418. prop: 'sgrxs'
  1419. },
  1420. {
  1421. childLabel: '酒店SGR总成本(CNY)',
  1422. prop: 'ZCB'
  1423. },
  1424. {
  1425. childLabel: '酒店SGR单间报价(CNY)',
  1426. prop: 'DRBJ'
  1427. },
  1428. {
  1429. childLabel: '酒店SGR总报价(CNY)',
  1430. prop: 'ZBJ'
  1431. },
  1432. {
  1433. childLabel: '酒店SGR单间利润(CNY)',
  1434. prop: 'DRLR'
  1435. },
  1436. {
  1437. childLabel: '酒店SGR总利润(CNY)',
  1438. prop: 'ZLR'
  1439. },
  1440. ],
  1441. },
  1442. {
  1443. label: '酒店JSES',
  1444. EnLabel: 'jses',
  1445. childList: [
  1446. {
  1447. childLabel: '酒店JSES单间成本(CNY)',
  1448. prop: 'jsescb',
  1449. isBind: true
  1450. },
  1451. {
  1452. childLabel: '间数',
  1453. prop: 'jsesNumber'
  1454. },
  1455. {
  1456. childLabel: '酒店JSES系数',
  1457. prop: 'jsesxs'
  1458. },
  1459. {
  1460. childLabel: '酒店JSES总成本(CNY)',
  1461. prop: 'ZCB'
  1462. },
  1463. {
  1464. childLabel: '酒店JSES单间报价(CNY)',
  1465. prop: 'DRBJ'
  1466. },
  1467. {
  1468. childLabel: '酒店JSES总报价(CNY)',
  1469. prop: 'ZBJ'
  1470. },
  1471. {
  1472. childLabel: '酒店JSES单间利润(CNY)',
  1473. prop: 'DRLR'
  1474. },
  1475. {
  1476. childLabel: '酒店JSES总利润(CNY)',
  1477. prop: 'ZLR'
  1478. },
  1479. ],
  1480. },
  1481. {
  1482. label: '酒店SUITE',
  1483. EnLabel: 'suite',
  1484. childList: [
  1485. {
  1486. childLabel: '酒店SUITE单间成本(CNY)',
  1487. prop: 'suitecb',
  1488. isBind: true
  1489. },
  1490. {
  1491. childLabel: '间数',
  1492. prop: 'suiteNumber'
  1493. },
  1494. {
  1495. childLabel: '酒店SUITE系数',
  1496. prop: 'suitexs'
  1497. },
  1498. {
  1499. childLabel: '酒店SUITE总成本(CNY)',
  1500. prop: 'ZCB'
  1501. },
  1502. {
  1503. childLabel: '酒店SUITE单间报价(CNY)',
  1504. prop: 'DRBJ'
  1505. },
  1506. {
  1507. childLabel: '酒店SUITE总报价(CNY)',
  1508. prop: 'ZBJ'
  1509. },
  1510. {
  1511. childLabel: '酒店SUITE单间利润(CNY)',
  1512. prop: 'DRLR'
  1513. },
  1514. {
  1515. childLabel: '酒店SUITE总利润(CNY)',
  1516. prop: 'ZLR'
  1517. },
  1518. ],
  1519. },
  1520. {
  1521. label: '地接',
  1522. EnLabel: 'dj',
  1523. childList: [
  1524. {
  1525. childLabel: '地接单人成本(CNY)',
  1526. prop: 'djcb',
  1527. isBind: true
  1528. },
  1529. {
  1530. childLabel: '人数', //实体类无地接人数
  1531. prop: 'djrs'
  1532. },
  1533. {
  1534. childLabel: '地接系数',
  1535. prop: 'djxs'
  1536. },
  1537. {
  1538. childLabel: '地接总成本(CNY)',
  1539. prop: 'ZCB'
  1540. },
  1541. {
  1542. childLabel: '地接单人报价(CNY)',
  1543. prop: 'DRBJ'
  1544. },
  1545. {
  1546. childLabel: '地接总报价(CNY)',
  1547. prop: 'ZBJ'
  1548. },
  1549. {
  1550. childLabel: '地接单人利润(CNY)',
  1551. prop: 'DRLR'
  1552. },
  1553. {
  1554. childLabel: '地接总利润(CNY)',
  1555. prop: 'ZLR'
  1556. },
  1557. ],
  1558. },
  1559. {
  1560. label: '公务',
  1561. EnLabel: 'gw',
  1562. childList: [
  1563. {
  1564. childLabel: '公务单人成本(CNY)',
  1565. prop: 'gwcb',
  1566. isBind: true
  1567. },
  1568. {
  1569. childLabel: '人数',
  1570. prop: 'gwrs'
  1571. },
  1572. {
  1573. childLabel: '公务系数',
  1574. prop: 'gwxs'
  1575. },
  1576. {
  1577. childLabel: '公务总成本(CNY)',
  1578. prop: 'ZCB'
  1579. },
  1580. {
  1581. childLabel: '公务单人报价(CNY)',
  1582. prop: 'DRBJ'
  1583. },
  1584. {
  1585. childLabel: '公务总报价(CNY)',
  1586. prop: 'ZBJ'
  1587. },
  1588. {
  1589. childLabel: '公务单人利润(CNY)',
  1590. prop: 'DRLR'
  1591. },
  1592. {
  1593. childLabel: '公务总利润(CNY)',
  1594. prop: 'ZLR'
  1595. },
  1596. ],
  1597. },
  1598. {
  1599. label: '零用金',
  1600. EnLabel: 'lyj',
  1601. childList: [
  1602. {
  1603. childLabel: '零用金单人成本(CNY)',
  1604. prop: 'lyjcb',
  1605. isBind: true
  1606. },
  1607. {
  1608. childLabel: '人数',
  1609. prop: 'lyjrs'
  1610. },
  1611. {
  1612. childLabel: '零用金系数',
  1613. prop: 'lyjxs'
  1614. },
  1615. {
  1616. childLabel: '零用金总成本(CNY)',
  1617. prop: 'ZCB'
  1618. },
  1619. {
  1620. childLabel: '零用金单人报价(CNY)',
  1621. prop: 'DRBJ'
  1622. },
  1623. {
  1624. childLabel: '零用金总报价(CNY)',
  1625. prop: 'ZBJ'
  1626. },
  1627. {
  1628. childLabel: '零用金单人利润(CNY)',
  1629. prop: 'DRLR'
  1630. },
  1631. {
  1632. childLabel: '零用金总利润(CNY)',
  1633. prop: 'ZLR'
  1634. },
  1635. ],
  1636. },
  1637. ],
  1638. //cabinoneList: ['经济舱 TBR', '经济舱 SGR', '核酸检测', '团组预算明细'],
  1639. cabinoneOptions: ['经济舱 TBR', '经济舱 SGR', '公务舱 SGR', '公务舱 JS/ES', '公务舱 SUITE', '经济舱 SUITE', '头等舱 JS/ES', '头等舱 SUITE', '经济舱 JS/ES'],
  1640. cabinDatal: [
  1641. {
  1642. label: '经济舱 TBR',
  1643. childList: [
  1644. {
  1645. childLabel: '单人成本(CNY)',
  1646. prop: 'costPerson'
  1647. },
  1648. {
  1649. childLabel: '人数',
  1650. prop: 'toll'
  1651. },
  1652. {
  1653. childLabel: '总成本(CNY)',
  1654. prop: 'totalCost'
  1655. },
  1656. {
  1657. childLabel: '单人报价(CNY)',
  1658. prop: 'singleQuote',
  1659. title: '报批(单人经济舱总报价):',
  1660. tips: '这是一个tips',
  1661. },
  1662. {
  1663. childLabel: '总报价(CNY)',
  1664. prop: 'totalQuote'
  1665. },
  1666. {
  1667. childLabel: '单人利润(CNY)',
  1668. prop: 'singleProfit'
  1669. },
  1670. {
  1671. childLabel: '总利润(CNY)',
  1672. prop: 'totalProfit'
  1673. },
  1674. ],
  1675. sheetInfo: [
  1676. {
  1677. costPerson: 1,
  1678. toll: 11,
  1679. totalCost: 137597.76,
  1680. singleQuote: 102203.71,
  1681. totalQuote: 35394.05,
  1682. singleProfit: 35394.05,
  1683. totalProfit: 35394.05
  1684. },
  1685. ]
  1686. },
  1687. {
  1688. label: '经济舱 SGR',
  1689. childList: [
  1690. {
  1691. childLabel: '单人成本(CNY)',
  1692. prop: 'costPerson'
  1693. },
  1694. {
  1695. childLabel: '人数',
  1696. prop: 'toll'
  1697. },
  1698. {
  1699. childLabel: '总成本(CNY)',
  1700. prop: 'totalCost'
  1701. },
  1702. {
  1703. childLabel: '单人报价(CNY)',
  1704. prop: 'singleQuote',
  1705. title: '报批(单人经济舱总报价):',
  1706. tips: '这是一个tips',
  1707. },
  1708. {
  1709. childLabel: '总报价(CNY)',
  1710. prop: 'totalQuote'
  1711. },
  1712. {
  1713. childLabel: '单人利润(CNY)',
  1714. prop: 'singleProfit'
  1715. },
  1716. {
  1717. childLabel: '总利润(CNY)',
  1718. prop: 'totalProfit'
  1719. },
  1720. ],
  1721. sheetInfo: [
  1722. {
  1723. costPerson: 1,
  1724. toll: 11,
  1725. totalCost: 137597.76,
  1726. singleQuote: 102203.71,
  1727. totalQuote: 35394.05,
  1728. singleProfit: 35394.05,
  1729. totalProfit: 35394.05
  1730. },
  1731. ]
  1732. },
  1733. {
  1734. label: '公务舱 SGR',
  1735. childList: [
  1736. {
  1737. childLabel: '单人成本(CNY)',
  1738. prop: 'costPerson'
  1739. },
  1740. {
  1741. childLabel: '人数',
  1742. prop: 'toll'
  1743. },
  1744. {
  1745. childLabel: '总成本(CNY)',
  1746. prop: 'totalCost'
  1747. },
  1748. {
  1749. childLabel: '单人报价(CNY)',
  1750. prop: 'singleQuote',
  1751. title: '报批(单人公务舱总报价):',
  1752. tips: '这是一个tips',
  1753. },
  1754. {
  1755. childLabel: '总报价(CNY)',
  1756. prop: 'totalQuote'
  1757. },
  1758. {
  1759. childLabel: '单人利润(CNY)',
  1760. prop: 'singleProfit'
  1761. },
  1762. {
  1763. childLabel: '总利润(CNY)',
  1764. prop: 'totalProfit'
  1765. },
  1766. ],
  1767. sheetInfo: [
  1768. {
  1769. costPerson: 1,
  1770. toll: 11,
  1771. totalCost: 137597.76,
  1772. singleQuote: 102203.71,
  1773. totalQuote: 35394.05,
  1774. singleProfit: 35394.05,
  1775. totalProfit: 35394.05
  1776. },
  1777. ]
  1778. },
  1779. {
  1780. label: '公务舱 JS/ES',
  1781. childList: [
  1782. {
  1783. childLabel: '单人成本(CNY)',
  1784. prop: 'costPerson'
  1785. },
  1786. {
  1787. childLabel: '人数',
  1788. prop: 'toll'
  1789. },
  1790. {
  1791. childLabel: '总成本(CNY)',
  1792. prop: 'totalCost'
  1793. },
  1794. {
  1795. childLabel: '单人报价(CNY)',
  1796. prop: 'singleQuote',
  1797. title: '报批(单人公务舱总报价):',
  1798. tips: '这是一个tips',
  1799. },
  1800. {
  1801. childLabel: '总报价(CNY)',
  1802. prop: 'totalQuote'
  1803. },
  1804. {
  1805. childLabel: '单人利润(CNY)',
  1806. prop: 'singleProfit'
  1807. },
  1808. {
  1809. childLabel: '总利润(CNY)',
  1810. prop: 'totalProfit'
  1811. },
  1812. ],
  1813. sheetInfo: [
  1814. {
  1815. costPerson: 1,
  1816. toll: 11,
  1817. totalCost: 137597.76,
  1818. singleQuote: 102203.71,
  1819. totalQuote: 35394.05,
  1820. singleProfit: 35394.05,
  1821. totalProfit: 35394.05
  1822. },
  1823. ]
  1824. },
  1825. {
  1826. label: '公务舱 SUITE',
  1827. childList: [
  1828. {
  1829. childLabel: '单人成本(CNY)',
  1830. prop: 'costPerson'
  1831. },
  1832. {
  1833. childLabel: '人数',
  1834. prop: 'toll'
  1835. },
  1836. {
  1837. childLabel: '总成本(CNY)',
  1838. prop: 'totalCost'
  1839. },
  1840. {
  1841. childLabel: '单人报价(CNY)',
  1842. prop: 'singleQuote',
  1843. title: '报批(单人公务舱总报价):',
  1844. tips: '这是一个tips',
  1845. },
  1846. {
  1847. childLabel: '总报价(CNY)',
  1848. prop: 'totalQuote'
  1849. },
  1850. {
  1851. childLabel: '单人利润(CNY)',
  1852. prop: 'singleProfit'
  1853. },
  1854. {
  1855. childLabel: '总利润(CNY)',
  1856. prop: 'totalProfit'
  1857. },
  1858. ],
  1859. sheetInfo: [
  1860. {
  1861. costPerson: 1,
  1862. toll: 11,
  1863. totalCost: 137597.76,
  1864. singleQuote: 102203.71,
  1865. totalQuote: 35394.05,
  1866. singleProfit: 35394.05,
  1867. totalProfit: 35394.05
  1868. },
  1869. ]
  1870. }
  1871. ,
  1872. {
  1873. label: '经济舱 SUITE',
  1874. childList: [
  1875. {
  1876. childLabel: '单人成本(CNY)',
  1877. prop: 'costPerson'
  1878. },
  1879. {
  1880. childLabel: '人数',
  1881. prop: 'toll'
  1882. },
  1883. {
  1884. childLabel: '总成本(CNY)',
  1885. prop: 'totalCost'
  1886. },
  1887. {
  1888. childLabel: '单人报价(CNY)',
  1889. prop: 'singleQuote',
  1890. title: '报批(单人经济舱总报价):',
  1891. tips: '这是一个tips',
  1892. },
  1893. {
  1894. childLabel: '总报价(CNY)',
  1895. prop: 'totalQuote'
  1896. },
  1897. {
  1898. childLabel: '单人利润(CNY)',
  1899. prop: 'singleProfit'
  1900. },
  1901. {
  1902. childLabel: '总利润(CNY)',
  1903. prop: 'totalProfit'
  1904. },
  1905. ],
  1906. sheetInfo: [
  1907. {
  1908. costPerson: 1,
  1909. toll: 11,
  1910. totalCost: 137597.76,
  1911. singleQuote: 102203.71,
  1912. totalQuote: 35394.05,
  1913. singleProfit: 35394.05,
  1914. totalProfit: 35394.05
  1915. },
  1916. ]
  1917. },
  1918. {
  1919. label: '头等舱 JS/ES',
  1920. childList: [
  1921. {
  1922. childLabel: '单人成本(CNY)',
  1923. prop: 'costPerson'
  1924. },
  1925. {
  1926. childLabel: '人数',
  1927. prop: 'toll'
  1928. },
  1929. {
  1930. childLabel: '总成本(CNY)',
  1931. prop: 'totalCost'
  1932. },
  1933. {
  1934. childLabel: '单人报价(CNY)',
  1935. prop: 'singleQuote',
  1936. title: '报批(单人头等舱总报价):',
  1937. tips: '这是一个tips',
  1938. },
  1939. {
  1940. childLabel: '总报价(CNY)',
  1941. prop: 'totalQuote'
  1942. },
  1943. {
  1944. childLabel: '单人利润(CNY)',
  1945. prop: 'singleProfit'
  1946. },
  1947. {
  1948. childLabel: '总利润(CNY)',
  1949. prop: 'totalProfit'
  1950. },
  1951. ],
  1952. sheetInfo: [
  1953. {
  1954. costPerson: 1,
  1955. toll: 11,
  1956. totalCost: 137597.76,
  1957. singleQuote: 102203.71,
  1958. totalQuote: 35394.05,
  1959. singleProfit: 35394.05,
  1960. totalProfit: 35394.05
  1961. },
  1962. ]
  1963. },
  1964. {
  1965. label: '头等舱 SUITE',
  1966. childList: [
  1967. {
  1968. childLabel: '单人成本(CNY)',
  1969. prop: 'costPerson'
  1970. },
  1971. {
  1972. childLabel: '人数',
  1973. prop: 'toll'
  1974. },
  1975. {
  1976. childLabel: '总成本(CNY)',
  1977. prop: 'totalCost'
  1978. },
  1979. {
  1980. childLabel: '单人报价(CNY)',
  1981. prop: 'singleQuote',
  1982. title: '报批(单人头等舱总报价):',
  1983. tips: '这是一个tips',
  1984. },
  1985. {
  1986. childLabel: '总报价(CNY)',
  1987. prop: 'totalQuote'
  1988. },
  1989. {
  1990. childLabel: '单人利润(CNY)',
  1991. prop: 'singleProfit'
  1992. },
  1993. {
  1994. childLabel: '总利润(CNY)',
  1995. prop: 'totalProfit'
  1996. },
  1997. ],
  1998. sheetInfo: [
  1999. {
  2000. costPerson: 1,
  2001. toll: 11,
  2002. totalCost: 137597.76,
  2003. singleQuote: 102203.71,
  2004. totalQuote: 35394.05,
  2005. singleProfit: 35394.05,
  2006. totalProfit: 35394.05
  2007. },
  2008. ]
  2009. },
  2010. {
  2011. label: '经济舱 JS/ES',
  2012. childList: [
  2013. {
  2014. childLabel: '单人成本(CNY)',
  2015. prop: 'costPerson'
  2016. },
  2017. {
  2018. childLabel: '人数',
  2019. prop: 'toll'
  2020. },
  2021. {
  2022. childLabel: '总成本(CNY)',
  2023. prop: 'totalCost'
  2024. },
  2025. {
  2026. childLabel: '单人报价(CNY)',
  2027. prop: 'singleQuote',
  2028. title: '报批(单人经济舱总报价):',
  2029. tips: '0',
  2030. },
  2031. {
  2032. childLabel: '总报价(CNY)',
  2033. prop: 'totalQuote'
  2034. },
  2035. {
  2036. childLabel: '单人利润(CNY)',
  2037. prop: 'singleProfit'
  2038. },
  2039. {
  2040. childLabel: '总利润(CNY)',
  2041. prop: 'totalProfit'
  2042. },
  2043. ],
  2044. sheetInfo: [
  2045. {
  2046. costPerson: 1,
  2047. toll: 11,
  2048. totalCost: 137597.76,
  2049. singleQuote: 102203.71,
  2050. totalQuote: 35394.05,
  2051. singleProfit: 35394.05,
  2052. totalProfit: 35394.05
  2053. },
  2054. ]
  2055. },
  2056. {
  2057. label: '团组预算明细',
  2058. childList: [
  2059. {
  2060. childLabel: '团组成本(CNY)',
  2061. prop: 'groupCosts'
  2062. },
  2063. {
  2064. childLabel: '团组报价(CNY)',
  2065. prop: 'gtroupQuotes'
  2066. },
  2067. {
  2068. childLabel: '团组利润(CNY)',
  2069. prop: 'groupProfit'
  2070. }
  2071. ],
  2072. sheetInfo: [
  2073. {
  2074. groupCosts: 1,
  2075. gtroupQuotes: 11,
  2076. groupProfit: 137597.76,
  2077. },
  2078. ]
  2079. }
  2080. ],
  2081. BcabinDatal: [
  2082. {
  2083. label: '经济舱 TBR',
  2084. childList: [
  2085. {
  2086. childLabel: '单人成本(CNY)',
  2087. prop: 'costPerson'
  2088. },
  2089. {
  2090. childLabel: '人数',
  2091. prop: 'toll'
  2092. },
  2093. {
  2094. childLabel: '总成本(CNY)',
  2095. prop: 'totalCost'
  2096. },
  2097. {
  2098. childLabel: '单人报价(CNY)',
  2099. prop: 'singleQuote',
  2100. title: '报批(单人经济舱总报价):',
  2101. tips: '这是一个tips',
  2102. },
  2103. {
  2104. childLabel: '总报价(CNY)',
  2105. prop: 'totalQuote'
  2106. },
  2107. {
  2108. childLabel: '单人利润(CNY)',
  2109. prop: 'singleProfit'
  2110. },
  2111. {
  2112. childLabel: '总利润(CNY)',
  2113. prop: 'totalProfit'
  2114. },
  2115. ],
  2116. sheetInfo: [
  2117. {
  2118. costPerson: 0,
  2119. toll: 0,
  2120. totalCost: 137597.76,
  2121. singleQuote: 102203.71,
  2122. totalQuote: 35394.05,
  2123. singleProfit: 35394.05,
  2124. totalProfit: 35394.05
  2125. },
  2126. ]
  2127. },
  2128. {
  2129. label: '经济舱 SGR',
  2130. childList: [
  2131. {
  2132. childLabel: '单人成本(CNY)',
  2133. prop: 'costPerson'
  2134. },
  2135. {
  2136. childLabel: '人数',
  2137. prop: 'toll'
  2138. },
  2139. {
  2140. childLabel: '总成本(CNY)',
  2141. prop: 'totalCost'
  2142. },
  2143. {
  2144. childLabel: '单人报价(CNY)',
  2145. prop: 'singleQuote',
  2146. title: '报批(单人经济舱总报价):',
  2147. tips: '这是一个tips',
  2148. },
  2149. {
  2150. childLabel: '总报价(CNY)',
  2151. prop: 'totalQuote'
  2152. },
  2153. {
  2154. childLabel: '单人利润(CNY)',
  2155. prop: 'singleProfit'
  2156. },
  2157. {
  2158. childLabel: '总利润(CNY)',
  2159. prop: 'totalProfit'
  2160. },
  2161. ],
  2162. sheetInfo: [
  2163. {
  2164. costPerson: 1,
  2165. toll: 11,
  2166. totalCost: 137597.76,
  2167. singleQuote: 102203.71,
  2168. totalQuote: 35394.05,
  2169. singleProfit: 35394.05,
  2170. totalProfit: 35394.05
  2171. },
  2172. ]
  2173. },
  2174. {
  2175. label: '公务舱 SGR',
  2176. childList: [
  2177. {
  2178. childLabel: '单人成本(CNY)',
  2179. prop: 'costPerson'
  2180. },
  2181. {
  2182. childLabel: '人数',
  2183. prop: 'toll'
  2184. },
  2185. {
  2186. childLabel: '总成本(CNY)',
  2187. prop: 'totalCost'
  2188. },
  2189. {
  2190. childLabel: '单人报价(CNY)',
  2191. prop: 'singleQuote',
  2192. title: '报批(单人公务舱总报价):',
  2193. tips: '这是一个tips',
  2194. },
  2195. {
  2196. childLabel: '总报价(CNY)',
  2197. prop: 'totalQuote'
  2198. },
  2199. {
  2200. childLabel: '单人利润(CNY)',
  2201. prop: 'singleProfit'
  2202. },
  2203. {
  2204. childLabel: '总利润(CNY)',
  2205. prop: 'totalProfit'
  2206. },
  2207. ],
  2208. sheetInfo: [
  2209. {
  2210. costPerson: 1,
  2211. toll: 11,
  2212. totalCost: 137597.76,
  2213. singleQuote: 102203.71,
  2214. totalQuote: 35394.05,
  2215. singleProfit: 35394.05,
  2216. totalProfit: 35394.05
  2217. },
  2218. ]
  2219. },
  2220. {
  2221. label: '公务舱 JS/ES',
  2222. childList: [
  2223. {
  2224. childLabel: '单人成本(CNY)',
  2225. prop: 'costPerson'
  2226. },
  2227. {
  2228. childLabel: '人数',
  2229. prop: 'toll'
  2230. },
  2231. {
  2232. childLabel: '总成本(CNY)',
  2233. prop: 'totalCost'
  2234. },
  2235. {
  2236. childLabel: '单人报价(CNY)',
  2237. prop: 'singleQuote',
  2238. title: '报批(单人公务舱总报价):',
  2239. tips: '这是一个tips',
  2240. },
  2241. {
  2242. childLabel: '总报价(CNY)',
  2243. prop: 'totalQuote'
  2244. },
  2245. {
  2246. childLabel: '单人利润(CNY)',
  2247. prop: 'singleProfit'
  2248. },
  2249. {
  2250. childLabel: '总利润(CNY)',
  2251. prop: 'totalProfit'
  2252. },
  2253. ],
  2254. sheetInfo: [
  2255. {
  2256. costPerson: 1,
  2257. toll: 11,
  2258. totalCost: 137597.76,
  2259. singleQuote: 102203.71,
  2260. totalQuote: 35394.05,
  2261. singleProfit: 35394.05,
  2262. totalProfit: 35394.05
  2263. },
  2264. ]
  2265. },
  2266. {
  2267. label: '公务舱 SUITE',
  2268. childList: [
  2269. {
  2270. childLabel: '单人成本(CNY)',
  2271. prop: 'costPerson'
  2272. },
  2273. {
  2274. childLabel: '人数',
  2275. prop: 'toll'
  2276. },
  2277. {
  2278. childLabel: '总成本(CNY)',
  2279. prop: 'totalCost'
  2280. },
  2281. {
  2282. childLabel: '单人报价(CNY)',
  2283. prop: 'singleQuote',
  2284. title: '报批(单人公务舱总报价):',
  2285. tips: '这是一个tips',
  2286. },
  2287. {
  2288. childLabel: '总报价(CNY)',
  2289. prop: 'totalQuote'
  2290. },
  2291. {
  2292. childLabel: '单人利润(CNY)',
  2293. prop: 'singleProfit'
  2294. },
  2295. {
  2296. childLabel: '总利润(CNY)',
  2297. prop: 'totalProfit'
  2298. },
  2299. ],
  2300. sheetInfo: [
  2301. {
  2302. costPerson: 1,
  2303. toll: 11,
  2304. totalCost: 137597.76,
  2305. singleQuote: 102203.71,
  2306. totalQuote: 35394.05,
  2307. singleProfit: 35394.05,
  2308. totalProfit: 35394.05
  2309. },
  2310. ]
  2311. }
  2312. ,
  2313. {
  2314. label: '经济舱 SUITE',
  2315. childList: [
  2316. {
  2317. childLabel: '单人成本(CNY)',
  2318. prop: 'costPerson'
  2319. },
  2320. {
  2321. childLabel: '人数',
  2322. prop: 'toll'
  2323. },
  2324. {
  2325. childLabel: '总成本(CNY)',
  2326. prop: 'totalCost'
  2327. },
  2328. {
  2329. childLabel: '单人报价(CNY)',
  2330. prop: 'singleQuote',
  2331. title: '报批(单人经济舱总报价):',
  2332. tips: '这是一个tips',
  2333. },
  2334. {
  2335. childLabel: '总报价(CNY)',
  2336. prop: 'totalQuote'
  2337. },
  2338. {
  2339. childLabel: '单人利润(CNY)',
  2340. prop: 'singleProfit'
  2341. },
  2342. {
  2343. childLabel: '总利润(CNY)',
  2344. prop: 'totalProfit'
  2345. },
  2346. ],
  2347. sheetInfo: [
  2348. {
  2349. costPerson: 1,
  2350. toll: 11,
  2351. totalCost: 137597.76,
  2352. singleQuote: 102203.71,
  2353. totalQuote: 35394.05,
  2354. singleProfit: 35394.05,
  2355. totalProfit: 35394.05
  2356. },
  2357. ]
  2358. },
  2359. {
  2360. label: '头等舱 JS/ES',
  2361. childList: [
  2362. {
  2363. childLabel: '单人成本(CNY)',
  2364. prop: 'costPerson'
  2365. },
  2366. {
  2367. childLabel: '人数',
  2368. prop: 'toll'
  2369. },
  2370. {
  2371. childLabel: '总成本(CNY)',
  2372. prop: 'totalCost'
  2373. },
  2374. {
  2375. childLabel: '单人报价(CNY)',
  2376. prop: 'singleQuote',
  2377. title: '报批(单人头等舱总报价):',
  2378. tips: '这是一个tips',
  2379. },
  2380. {
  2381. childLabel: '总报价(CNY)',
  2382. prop: 'totalQuote'
  2383. },
  2384. {
  2385. childLabel: '单人利润(CNY)',
  2386. prop: 'singleProfit'
  2387. },
  2388. {
  2389. childLabel: '总利润(CNY)',
  2390. prop: 'totalProfit'
  2391. },
  2392. ],
  2393. sheetInfo: [
  2394. {
  2395. costPerson: 1,
  2396. toll: 11,
  2397. totalCost: 137597.76,
  2398. singleQuote: 102203.71,
  2399. totalQuote: 35394.05,
  2400. singleProfit: 35394.05,
  2401. totalProfit: 35394.05
  2402. },
  2403. ]
  2404. },
  2405. {
  2406. label: '头等舱 SUITE',
  2407. childList: [
  2408. {
  2409. childLabel: '单人成本(CNY)',
  2410. prop: 'costPerson'
  2411. },
  2412. {
  2413. childLabel: '人数',
  2414. prop: 'toll'
  2415. },
  2416. {
  2417. childLabel: '总成本(CNY)',
  2418. prop: 'totalCost'
  2419. },
  2420. {
  2421. childLabel: '单人报价(CNY)',
  2422. prop: 'singleQuote',
  2423. title: '报批(单人头等舱总报价):',
  2424. tips: '这是一个tips',
  2425. },
  2426. {
  2427. childLabel: '总报价(CNY)',
  2428. prop: 'totalQuote'
  2429. },
  2430. {
  2431. childLabel: '单人利润(CNY)',
  2432. prop: 'singleProfit'
  2433. },
  2434. {
  2435. childLabel: '总利润(CNY)',
  2436. prop: 'totalProfit'
  2437. },
  2438. ],
  2439. sheetInfo: [
  2440. {
  2441. costPerson: 1,
  2442. toll: 11,
  2443. totalCost: 137597.76,
  2444. singleQuote: 102203.71,
  2445. totalQuote: 35394.05,
  2446. singleProfit: 35394.05,
  2447. totalProfit: 35394.05
  2448. },
  2449. ]
  2450. },
  2451. {
  2452. label: '经济舱 JS/ES',
  2453. childList: [
  2454. {
  2455. childLabel: '单人成本(CNY)',
  2456. prop: 'costPerson'
  2457. },
  2458. {
  2459. childLabel: '人数',
  2460. prop: 'toll'
  2461. },
  2462. {
  2463. childLabel: '总成本(CNY)',
  2464. prop: 'totalCost'
  2465. },
  2466. {
  2467. childLabel: '单人报价(CNY)',
  2468. prop: 'singleQuote',
  2469. title: '报批(单人经济舱总报价):',
  2470. tips: '0',
  2471. },
  2472. {
  2473. childLabel: '总报价(CNY)',
  2474. prop: 'totalQuote'
  2475. },
  2476. {
  2477. childLabel: '单人利润(CNY)',
  2478. prop: 'singleProfit'
  2479. },
  2480. {
  2481. childLabel: '总利润(CNY)',
  2482. prop: 'totalProfit'
  2483. },
  2484. ],
  2485. sheetInfo: [
  2486. {
  2487. costPerson: 1,
  2488. toll: 11,
  2489. totalCost: 137597.76,
  2490. singleQuote: 102203.71,
  2491. totalQuote: 35394.05,
  2492. singleProfit: 35394.05,
  2493. totalProfit: 35394.05
  2494. },
  2495. ]
  2496. },
  2497. ],
  2498. costType: [
  2499. {
  2500. value: 'A',
  2501. label: '单段模式'
  2502. },
  2503. {
  2504. value: 'B',
  2505. label: '双段模式'
  2506. }
  2507. ],
  2508. userId: 0,
  2509. token: '',
  2510. costTypevalue: 'A',
  2511. grouptitleinfo: {},
  2512. costTypeHotelNumbers: [{
  2513. "sgr": 0,
  2514. "tbr": 0,
  2515. "jses": 0,
  2516. "suite": 0,
  2517. "type": "Default",
  2518. "diid": 0,
  2519. id: 0,
  2520. },
  2521. {
  2522. "sgr": 0,
  2523. "tbr": 0,
  2524. "jses": 0,
  2525. "suite": 0,
  2526. "type": "A",
  2527. "diid": 0,
  2528. id: 0,
  2529. },
  2530. {
  2531. "sgr": 0,
  2532. "tbr": 0,
  2533. "jses": 0,
  2534. "suite": 0,
  2535. "type": "B",
  2536. "diid": 0,
  2537. id: 0,
  2538. }],
  2539. CheckBoxListSelect: [
  2540. {
  2541. "diid": 0,
  2542. "cbType": "Top",
  2543. "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"
  2544. },
  2545. {
  2546. "diid": 0,
  2547. "cbType": "Left",
  2548. "cbValues": ['签证', '机票', '保险', '火车票', '地接', '公务', '零用金'] //"string"
  2549. },
  2550. {
  2551. "diid": 0,
  2552. "cbType": "Right",
  2553. "cbValues": ['公务舱 SGR', '经济舱 SGR', '团组预算明细'] //"string"
  2554. }
  2555. ],
  2556. AGroupCostParameter: {
  2557. "id": 0,
  2558. "diId": 0,
  2559. "currency": "CNY",
  2560. "rate": 0,
  2561. "tax": 0,
  2562. "ffys": 0,
  2563. "hotelXS": 0,
  2564. "jjccb": 0,
  2565. "jjcxs": 0,
  2566. "jjcrs": 0,
  2567. "gwccb": 0,
  2568. "gwcxs": 0,
  2569. "gwcrs": 0,
  2570. "hcpcb": 0,
  2571. "hcpxs": 0,
  2572. "hcprs": 0,
  2573. "cpcb": 0,
  2574. "cpxs": 0,
  2575. "cprs": 0,
  2576. "bxcb": 0,
  2577. "bxxs": 25,
  2578. "bxrs": 0,
  2579. "hscb": 0,
  2580. "hsxs": 0,
  2581. "hsrs": 0,
  2582. "visaCB": 0,
  2583. "visaXS": 0,
  2584. "visaRS": 0,
  2585. "gwcb": 0,
  2586. "gwxs": 0,
  2587. "gwrs": 0,
  2588. "djcb": 0,
  2589. "djrs": 0,
  2590. "djxs": 0,
  2591. "sgrcb": 0,
  2592. "sgrNumber": 0,
  2593. "sgrxs": 0,
  2594. "tbrcb": 0,
  2595. "tbrNumber": 0,
  2596. "tbrxs": 0,
  2597. "jsescb": 0,
  2598. "jsesNumber": 0,
  2599. "jsesxs": 0,
  2600. "suitecb": 0,
  2601. "suiteNumber": 0,
  2602. "suitexs": 0,
  2603. "lyjcb": 0,
  2604. "lyjxs": 0,
  2605. "lyjrs": 0,
  2606. "isShare": 0,
  2607. "costType": "A",
  2608. "costTypeStartTime": "",
  2609. "costTypeendTime": "",
  2610. "costTypenumber": 0,
  2611. "tdccb": 0,
  2612. "tdcxs": 0,
  2613. "tdcrs": 0
  2614. },
  2615. BGroupCostParameter: {
  2616. "id": 0,
  2617. "diId": 0,
  2618. "currency": "",
  2619. "rate": 0,
  2620. "tax": 0,
  2621. "ffys": 0,
  2622. "hotelXS": 0,
  2623. "jjccb": 0,
  2624. "jjcxs": 0,
  2625. "jjcrs": 0,
  2626. "gwccb": 0,
  2627. "gwcxs": 0,
  2628. "gwcrs": 0,
  2629. "hcpcb": 0,
  2630. "hcpxs": 0,
  2631. "hcprs": 0,
  2632. "cpcb": 0,
  2633. "cpxs": 0,
  2634. "cprs": 0,
  2635. "bxcb": 0,
  2636. "bxxs": 25,
  2637. "bxrs": 0,
  2638. "hscb": 0,
  2639. "hsxs": 0,
  2640. "hsrs": 0,
  2641. "visaCB": 0,
  2642. "visaXS": 0,
  2643. "visaRS": 0,
  2644. "gwcb": 0,
  2645. "gwxs": 0,
  2646. "gwrs": 0,
  2647. "djcb": 0,
  2648. "djxs": 0,
  2649. "djrs": 0,
  2650. "sgrcb": 0,
  2651. "sgrNumber": 0,
  2652. "sgrxs": 0,
  2653. "tbrcb": 0,
  2654. "tbrNumber": 0,
  2655. "tbrxs": 0,
  2656. "jsescb": 0,
  2657. "jsesNumber": 0,
  2658. "jsesxs": 0,
  2659. "suitecb": 0,
  2660. "suiteNumber": 0,
  2661. "suitexs": 0,
  2662. "lyjcb": 0,
  2663. "lyjxs": 0,
  2664. "lyjrs": 0,
  2665. "isShare": 0,
  2666. "costType": "B",
  2667. "costTypeStartTime": "",
  2668. "costTypeendTime": "",
  2669. "costTypenumber": 0,
  2670. "tdccb": 0,
  2671. "tdcxs": 0,
  2672. "tdcrs": 0
  2673. },
  2674. dialogColumn: [
  2675. {
  2676. index: 1, data: [
  2677. { title: "国家", prop: "country" },
  2678. { title: "城市", prop: "city" },
  2679. { title: "服务类型", prop: "serviceType" },
  2680. { title: "用车类型", prop: "carType" },
  2681. { title: "用车报价", prop: "offer" },
  2682. { title: "车兼导费用", prop: "cgCost" },
  2683. { title: "用车时长", prop: "runingTime" },
  2684. { title: "车超时费用/时", prop: "overtimeFee" },
  2685. { title: "司兼导超时费/时", prop: "cgOvertimeFee" },
  2686. { title: "币种", prop: "currency" },
  2687. { title: "备注", prop: "remark" }
  2688. ]
  2689. },
  2690. {
  2691. index: 2, data: [
  2692. { title: "国家", prop: "country" },
  2693. { title: "城市", prop: "city" },
  2694. { title: "导游服务类型", prop: "serviceType" },
  2695. { title: "导游工资", prop: "price" },
  2696. { title: "翻译工资", prop: "translationPrice" },
  2697. { title: "超时费用", prop: "overtimeFee" },
  2698. { title: "币种", prop: "currency" },
  2699. { title: "备注", prop: "remark" }
  2700. ]
  2701. },
  2702. {
  2703. index: 3, data: [
  2704. { title: "国家", prop: "country" },
  2705. { title: "城市", prop: "city" },
  2706. { title: "车类型", prop: "carType" },
  2707. { title: "服务类型", prop: "serviceType" },
  2708. { title: "用车时间", prop: "when" },
  2709. { title: "工资", prop: "price" },
  2710. { title: "超时费用", prop: "overtimeFee" },
  2711. { title: "币种", prop: "currency" },
  2712. { title: "备注", prop: "remark" }
  2713. ]
  2714. },
  2715. {
  2716. index: 4, data: [
  2717. { title: "国家", prop: "country" },
  2718. { title: "城市", prop: "city" },
  2719. { title: "景点", prop: "scenicSpot" },
  2720. { title: "景点项目描述", prop: "scenicSpotDetail" },
  2721. { title: "景点价格", prop: "price" },
  2722. { title: "币种", prop: "currency" },
  2723. { title: "景点地址", prop: "address" }
  2724. ]
  2725. }
  2726. // 司兼导
  2727. // 导游
  2728. // 车数据
  2729. // 景点
  2730. ],
  2731. dialogTableData: [],
  2732. SeldialogColumn: [],
  2733. DialogTitle: '',
  2734. pageSize: 5,
  2735. currentPage: 1,
  2736. dialogSearchInput: '',
  2737. selectRow: {},
  2738. rowIndex: 0,
  2739. sumTopPrice: [],
  2740. 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'],
  2741. GwLables: ['T/V', 'E/C T', 'I/F', '1/L'],
  2742. OtherCostProperty: ['visaCB', 'hcpcb', 'cpcb', 'bxcb', 'hscb', 'djcb', 'gwcb', 'lyjcb'],
  2743. OtherCostPropertyBJ: ['visa', 'hcp', 'cp', 'bx', 'hs', 'dj', 'gw', 'lyj'],
  2744. peopleNumber: 1,
  2745. centerheight: 700,
  2746. defaultheight: 50,
  2747. rules: {
  2748. rate: [
  2749. { pattern: /^-?\d+\.?\d*$/, message: '请输入正确数据', trigger: 'blur', required: true, }
  2750. ],
  2751. tax: [
  2752. { pattern: /^-?\d+\.?\d*$/, message: '请输入正确数据', trigger: 'blur', required: true, }
  2753. ],
  2754. },
  2755. HotelRules: {
  2756. sgr: [
  2757. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2758. ],
  2759. tbr: [
  2760. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2761. ],
  2762. suite: [
  2763. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2764. ],
  2765. jses: [
  2766. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2767. ],
  2768. },
  2769. CostTimeRules: {
  2770. costTypeendTime: [
  2771. { message: '请输入结束时间', trigger: 'blur', required: true, },
  2772. ],
  2773. costTypenumber: [
  2774. { type: 'number', min: 0, message: '请输入整数', trigger: 'blur', required: true, },
  2775. ],
  2776. costTypeStartTime: [
  2777. { message: '请输入开始时间', trigger: 'blur', required: true, },
  2778. ],
  2779. },
  2780. titleText: [],
  2781. vehicleLables: ['VF', 'T/G OF', 'T/G S', 'T/G TF', 'C/F OF'],
  2782. DJMeal: ['B', 'L', 'D'],
  2783. SubsidizedMeals: ['T/G M', 'C/F M'],
  2784. NightRepair: ['T/G A'],
  2785. AttractionsTickets: ['T/G EF', 'EF'],
  2786. MiscellaneousFees: ['B/R/F', 'TE', 'T/L F'],
  2787. ATip: ['T/G T', 'DRV T'],
  2788. visaCountryInfoArr: [],
  2789. equalWhere: [
  2790. { "Visa": "visa" },
  2791. { "HeSuan": "hs" },
  2792. { "Insurance": "bx" },
  2793. { "JJC": "jjc" },
  2794. { "GWC": "gwc" },
  2795. { "TDC": "tdc" }
  2796. ],
  2797. ShowBaoPi: [
  2798. ],
  2799. dialogSelectObject: {
  2800. },
  2801. columnTotalData: [
  2802. {
  2803. "label": "DAY",
  2804. "tips": "",
  2805. "totalPrice": 0,
  2806. "singlePrice": 0,
  2807. "singleTips": "",
  2808. "width": 50,
  2809. },
  2810. {
  2811. "label": "DATE",
  2812. "tips": "",
  2813. "totalPrice": 0,
  2814. "singlePrice": 0,
  2815. "singleTips": "",
  2816. "width": 100,
  2817. },
  2818. {
  2819. "label": "ITIN",
  2820. "tips": "",
  2821. "totalPrice": 0,
  2822. "singlePrice": 0,
  2823. "singleTips": "",
  2824. "width": 100,
  2825. },
  2826. {
  2827. "label": "VA",
  2828. "tips": "",
  2829. "totalPrice": 0,
  2830. "singlePrice": 0,
  2831. "singleTips": "",
  2832. "width": 100,
  2833. },
  2834. {
  2835. "label": "VT",
  2836. "tips": "",
  2837. "totalPrice": 0,
  2838. "singlePrice": 0,
  2839. "singleTips": "",
  2840. "width": 100,
  2841. },
  2842. {
  2843. "label": "VF",
  2844. "tips": "车费用\n",
  2845. "totalPrice": 0,
  2846. "singlePrice": 0,
  2847. "singleTips": "车费用人均\n",
  2848. "width": 60,
  2849. },
  2850. {
  2851. "label": "VN",
  2852. "tips": "",
  2853. "totalPrice": 0,
  2854. "singlePrice": 0,
  2855. "singleTips": "",
  2856. "width": 60,
  2857. },
  2858. {
  2859. "label": "VRD",
  2860. "tips": "",
  2861. "totalPrice": 0,
  2862. "singlePrice": 0,
  2863. "singleTips": "",
  2864. "width": 60,
  2865. },
  2866. {
  2867. "label": "T/G S",
  2868. "tips": "导游工资\n",
  2869. "totalPrice": 0,
  2870. "singlePrice": 0,
  2871. "singleTips": "导游工资人均\n",
  2872. "width": 60,
  2873. },
  2874. {
  2875. "label": "T/G N",
  2876. "tips": "",
  2877. "totalPrice": 0,
  2878. "singlePrice": 0,
  2879. "singleTips": "",
  2880. "width": 60,
  2881. },
  2882. {
  2883. "label": "T/G WH",
  2884. "tips": "",
  2885. "totalPrice": 0,
  2886. "singlePrice": 0,
  2887. "singleTips": "",
  2888. "width": 60,
  2889. },
  2890. {
  2891. "label": "T/G OF",
  2892. "tips": "导游超时费用\n",
  2893. "totalPrice": 0,
  2894. "singlePrice": 0,
  2895. "singleTips": "导游超时费用人均\n",
  2896. "width": 60,
  2897. },
  2898. {
  2899. "label": "T/G M",
  2900. "tips": "导游餐补\n",
  2901. "totalPrice": 0,
  2902. "singlePrice": 0,
  2903. "singleTips": "导游餐补人均\n",
  2904. "width": 60,
  2905. },
  2906. {
  2907. "label": "T/G A",
  2908. "tips": "导游房补\n",
  2909. "totalPrice": 0,
  2910. "singlePrice": 0,
  2911. "singleTips": "导游房补人均\n",
  2912. "width": 60,
  2913. },
  2914. {
  2915. "label": "T/G TF",
  2916. "tips": "导游交通费\n",
  2917. "totalPrice": 0,
  2918. "singlePrice": 0,
  2919. "singleTips": "导游交通费人均\n",
  2920. "width": 60,
  2921. },
  2922. {
  2923. "label": "T/G EF",
  2924. "tips": "导游景点费\n",
  2925. "totalPrice": 0,
  2926. "singlePrice": 0,
  2927. "singleTips": "导游景点费人均\n",
  2928. "width": 60,
  2929. },
  2930. {
  2931. "label": "C/F M",
  2932. "tips": "司机餐补\n",
  2933. "totalPrice": 0,
  2934. "singlePrice": 0,
  2935. "singleTips": "司机餐补人均\n",
  2936. "width": 60,
  2937. },
  2938. {
  2939. "label": "C/F OF",
  2940. "tips": "司机超时费用\n",
  2941. "totalPrice": 0,
  2942. "singlePrice": 0,
  2943. "singleTips": "司机超时费用人均\n",
  2944. "width": 60,
  2945. },
  2946. {
  2947. "label": "B",
  2948. "tips": "早餐费用\n",
  2949. "totalPrice": 0,
  2950. "singlePrice": 0,
  2951. "singleTips": "早餐费用人均\n",
  2952. "width": 60,
  2953. },
  2954. {
  2955. "label": "L",
  2956. "tips": "午餐费用\n",
  2957. "totalPrice": 0,
  2958. "singlePrice": 0,
  2959. "singleTips": "午餐费用人均\n",
  2960. "width": 60,
  2961. },
  2962. {
  2963. "label": "D",
  2964. "tips": "晚餐费用\n",
  2965. "totalPrice": 0,
  2966. "singlePrice": 0,
  2967. "singleTips": "晚餐费用人均\n",
  2968. "width": 60,
  2969. },
  2970. {
  2971. "label": "TBR",
  2972. "tips": "双人间费用\n",
  2973. "totalPrice": 0,
  2974. "singlePrice": 0,
  2975. "singleTips": "双人间费用人均\n",
  2976. "width": 60,
  2977. },
  2978. {
  2979. "label": "SGR",
  2980. "tips": "单间费用\n",
  2981. "totalPrice": 0,
  2982. "singlePrice": 0,
  2983. "singleTips": "单间费用人均\n",
  2984. "width": 60,
  2985. },
  2986. {
  2987. "label": "JS/ES",
  2988. "tips": "小套房/豪华套房费用\n",
  2989. "totalPrice": 0,
  2990. "singlePrice": 0,
  2991. "singleTips": "小套房/豪华套房费用人均\n",
  2992. "width": 60,
  2993. },
  2994. {
  2995. "label": "SUITE",
  2996. "tips": "套房费用\n",
  2997. "totalPrice": 0,
  2998. "singlePrice": 0,
  2999. "singleTips": "套房费用人均\n",
  3000. "width": 60,
  3001. },
  3002. {
  3003. "label": "ACCO N",
  3004. "tips": "",
  3005. "totalPrice": 0,
  3006. "singlePrice": 0,
  3007. "singleTips": "",
  3008. "width": 100,
  3009. },
  3010. {
  3011. "label": "TV/N",
  3012. "tips": "",
  3013. "totalPrice": 0,
  3014. "singlePrice": 0,
  3015. "singleTips": "",
  3016. "width": 60,
  3017. },
  3018. {
  3019. "label": "IF/N",
  3020. "tips": "",
  3021. "totalPrice": 0,
  3022. "singlePrice": 0,
  3023. "singleTips": "",
  3024. "width": 60,
  3025. },
  3026. {
  3027. "label": "T/V",
  3028. "tips": "公务活动费用\n",
  3029. "totalPrice": 0,
  3030. "singlePrice": 0,
  3031. "singleTips": "公务活动费用人均\n",
  3032. "width": 60,
  3033. },
  3034. {
  3035. "label": "1/L",
  3036. "tips": "公务活动费用\n",
  3037. "totalPrice": 0,
  3038. "singlePrice": 0,
  3039. "singleTips": "公务活动费用人均\n",
  3040. "width": 60,
  3041. },
  3042. {
  3043. "label": "I/F",
  3044. "tips": "公务翻译费用\n",
  3045. "totalPrice": 0,
  3046. "singlePrice": 0,
  3047. "singleTips": "公务翻译费用人均\n",
  3048. "width": 60,
  3049. },
  3050. {
  3051. "label": "EF",
  3052. "tips": "景点门票\n",
  3053. "totalPrice": 0,
  3054. "singlePrice": 0,
  3055. "singleTips": "景点门票人均\n",
  3056. "width": 60,
  3057. },
  3058. {
  3059. "label": "EFR",
  3060. "tips": "",
  3061. "totalPrice": 0,
  3062. "singlePrice": 0,
  3063. "singleTips": "",
  3064. "width": 100,
  3065. },
  3066. {
  3067. "label": "B/R/F",
  3068. "tips": "饮料零食水果\n",
  3069. "totalPrice": 0,
  3070. "singlePrice": 0,
  3071. "singleTips": "饮料零食水果人均\n",
  3072. "width": 60,
  3073. },
  3074. {
  3075. "label": "TE",
  3076. "tips": "出行物资\n",
  3077. "totalPrice": 0,
  3078. "singlePrice": 0,
  3079. "singleTips": "出行物资人均\n",
  3080. "width": 60,
  3081. },
  3082. {
  3083. "label": "T/G T",
  3084. "tips": "导游小费\n",
  3085. "totalPrice": 0,
  3086. "singlePrice": 0,
  3087. "singleTips": "导游小费人均\n",
  3088. "width": 60,
  3089. },
  3090. {
  3091. "label": "DRV T",
  3092. "tips": "司机小费\n",
  3093. "totalPrice": 0,
  3094. "singlePrice": 0,
  3095. "singleTips": "司机小费人均\n",
  3096. "width": 60,
  3097. },
  3098. {
  3099. "label": "P/C",
  3100. "tips": "零用金\n",
  3101. "totalPrice": 0,
  3102. "singlePrice": 0,
  3103. "singleTips": "零用金人均\n",
  3104. "width": 60,
  3105. },
  3106. {
  3107. "label": "T/L F",
  3108. "tips": "领队费\n",
  3109. "totalPrice": 0,
  3110. "singlePrice": 0,
  3111. "singleTips": "领队费人均\n",
  3112. "width": 60,
  3113. },
  3114. {
  3115. "label": "E/C T",
  3116. "tips": "会务费\n",
  3117. "totalPrice": 0,
  3118. "singlePrice": 0,
  3119. "singleTips": "会务费人均\n",
  3120. "width": 60,
  3121. }
  3122. ],
  3123. autoSave: null,
  3124. acconarr: [],
  3125. acconarrs: [],
  3126. isShare: 0,
  3127. blackCodeIsTrue: false,
  3128. dialogTableVisible: false,
  3129. gridData: [],
  3130. //监听变量
  3131. //count: 0,
  3132. x: 0,
  3133. y: 0,
  3134. tableDatas: [],
  3135. dialogTableVisibleXJ: false,
  3136. checkboxsXJ: [],
  3137. historyCarInput: '',
  3138. historyCarDialog: false,
  3139. historyCarData: [],
  3140. // {
  3141. // "value": "id",
  3142. // "label": ""
  3143. // },
  3144. historyCarCloumns: [
  3145. {
  3146. "value": "teamName",
  3147. "label": "团组名称"
  3148. },
  3149. {
  3150. "value": "start",
  3151. "label": "开始时间"
  3152. },
  3153. {
  3154. "value": "end",
  3155. "label": "结束时间"
  3156. },
  3157. {
  3158. "value": "area",
  3159. "label": "地区"
  3160. },
  3161. {
  3162. "value": "price",
  3163. "label": "总价格"
  3164. },
  3165. {
  3166. "value": "dayPrice",
  3167. "label": "单日价格"
  3168. },
  3169. {
  3170. "value": "priceName",
  3171. "label": "费用名称"
  3172. },
  3173. {
  3174. "value": "priceContent",
  3175. "label": "费用明细"
  3176. },
  3177. {
  3178. "value": "datePrice",
  3179. "label": "费用准确日期"
  3180. }
  3181. ],
  3182. historyCarSelectObject: {},
  3183. historyCarIndex: -1,
  3184. hotelIsTrue: false,
  3185. rollcallarr: []
  3186. };
  3187. },
  3188. watch: {
  3189. costTypeHotelNumbers: {
  3190. handler(val) {
  3191. for (var i = 0; i < val.length; i++) {
  3192. //console.log(val[i]);
  3193. if (val[i].tbr == '') {
  3194. val[i].tbr = 0
  3195. }
  3196. if (val[i].sgr == '') {
  3197. val[i].sgr = 0
  3198. }
  3199. if (val[i].jses == '') {
  3200. val[i].jses = 0
  3201. }
  3202. if (val[i].suite == '') {
  3203. val[i].suite = 0
  3204. }
  3205. }
  3206. },
  3207. deep: true
  3208. },
  3209. 'tableData.length': {
  3210. handler(newValue, oldValue) {
  3211. if (newValue !== oldValue) {
  3212. if (this.tableData.length > 3) {
  3213. this.centerheight = 700;
  3214. } else {
  3215. this.centerheight = this.defaultheight + (this.tableData.length * 230) - ((this.tableData.length - 1) * 50);
  3216. }
  3217. //////console.log('高度' + this.centerheight);
  3218. }
  3219. }
  3220. }
  3221. },
  3222. methods: {
  3223. capslk(val, index) {
  3224. this.tableData[index].itin = val.toUpperCase()
  3225. },
  3226. acconblur(index) {
  3227. setTimeout(() => {
  3228. document.querySelectorAll('.accon-ul')[index].classList.remove('accons-ul')
  3229. }, 150)
  3230. },
  3231. acconinput(val, index) {
  3232. this.acconarr = [];
  3233. this.acconarrs = [];
  3234. //console.log(val);
  3235. //console.log(index);
  3236. for (var i = 0; i < this.tableData.length; i++) {
  3237. this.acconarr.push(this.tableData[i].accon)
  3238. }
  3239. for (var j = 0; j < this.acconarr.length; j++) {
  3240. if (this.acconarr[j].includes(val)) {
  3241. this.acconarrs.push(this.acconarr[j])
  3242. }
  3243. }
  3244. this.acconarrs = Array.from(new Set(this.acconarrs));
  3245. //console.log(this.acconarrs)
  3246. document.querySelectorAll('.accon-ul')[index].classList.add('accons-ul')
  3247. },
  3248. acconclick(val, index) {
  3249. this.tableData[index].accon = val;
  3250. },
  3251. getSummaries(param) {
  3252. var that = this;
  3253. ////console.log(param)
  3254. const { columns, data } = param;
  3255. const sums = [];
  3256. const sums1 = [];
  3257. const texts = [];
  3258. var prices = [];
  3259. var BUpdate = []
  3260. var thisData = data;
  3261. var ATime = { start: that.addOneDay(that.AGroupCostParameter.costTypeStartTime, 0), end: that.addOneDay(that.AGroupCostParameter.costTypeendTime, 0) };
  3262. var BTime = { start: that.addOneDay(that.BGroupCostParameter.costTypeStartTime, 0), end: that.addOneDay(that.BGroupCostParameter.costTypeendTime, 0) };
  3263. //////console.log('ATime,BTime', ATime, BTime);
  3264. var data1 = [];
  3265. var data2 = [];
  3266. //////console.log('datas', data);
  3267. if (that.costTypevalue == 'B') {
  3268. for (var i = 0; i < thisData.length; i++) {
  3269. var forTime = thisData[i].date;
  3270. if (forTime == '' && i != 0) {
  3271. forTime = thisData[i - 1].date;
  3272. }
  3273. if (forTime) {
  3274. forTime = new Date(forTime).getTime();
  3275. }
  3276. if (forTime >= new Date(ATime.start).getTime() && forTime <= new Date(ATime.end).getTime()) {
  3277. data1.push(thisData[i])
  3278. }
  3279. if (forTime >= new Date(BTime.start).getTime() && forTime <= new Date(BTime.end).getTime()) {
  3280. data2.push(thisData[i])
  3281. }
  3282. }
  3283. thisData = data1;
  3284. if (isNaN(Number(that.AGroupCostParameter.costTypenumber)) || Number(that.AGroupCostParameter.costTypenumber) < 1) {
  3285. that.peopleNumber = 1;
  3286. } else {
  3287. that.peopleNumber = Number(that.AGroupCostParameter.costTypenumber);
  3288. }
  3289. }
  3290. ////console.log('3data', thisData, data1, data2);
  3291. columns.forEach((column, index) => {
  3292. if (index === 0) {
  3293. prices[index] = "总计:";
  3294. that.lableSetPrice(column.label, '', '');
  3295. return;
  3296. }
  3297. 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') {
  3298. prices[index] = "——";
  3299. that.lableSetPrice(column.label, '', '');
  3300. return;
  3301. }
  3302. const values = thisData.map(item => Number(item[column.property]));
  3303. if (!values.every(value => isNaN(value))) {
  3304. sums[index] = values.reduce((prev, curr) => {
  3305. const value = Number(curr);
  3306. if (!isNaN(value)) {
  3307. return prev + curr;
  3308. } else {
  3309. return prev;
  3310. }
  3311. }, 0);
  3312. 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') {
  3313. that.lableSetPrice(column.label, (sums[index] * that.peopleNumber).toFixed(2), (sums[index]).toFixed(2));
  3314. prices[index] = '共' + (sums[index] * that.peopleNumber).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index]).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3315. }
  3316. else if (column.label == 'SGR' || column.label == 'JS/ES' || column.label == 'SUITE' || column.label == 'TBR') {
  3317. if (column.label == 'TBR') {
  3318. that.lableSetPrice(column.label, (sums[index]).toFixed(2), (sums[index] / 2).toFixed(2));
  3319. prices[index] = '共' + (sums[index]).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index] / 2).toFixed(2) + " " + this.getCurr
  3320. } else {
  3321. that.lableSetPrice(column.label, (sums[index]).toFixed(2), (sums[index]).toFixed(2));
  3322. prices[index] = '共' + (sums[index]).toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index]).toFixed(2) + " " + this.getCurr
  3323. }
  3324. }
  3325. else {
  3326. that.lableSetPrice(column.label, sums[index].toFixed(2), (sums[index] / that.peopleNumber).toFixed(2));
  3327. prices[index] = '共' + sums[index].toFixed(2) + ' ' + this.getCurr + '\r\n人均' + (sums[index] / that.peopleNumber).toFixed(2) + " " + this.getCurr //sums[index] + '(' + this.getCurr + ')' + ' 人均(' + sums[index] + ')';
  3328. sums[index] = parseFloat((sums[index] / that.peopleNumber).toFixed(2));
  3329. }
  3330. } else {
  3331. prices[index] = 'N/A';
  3332. }
  3333. if (that.costTypevalue == 'B') {
  3334. const values1 = data2.map(item => Number(item[column.property]));
  3335. if (!values1.every(value => isNaN(value))) {
  3336. sums1[index] = values1.reduce((prev, curr) => {
  3337. const value = Number(curr);
  3338. if (!isNaN(value)) {
  3339. return prev + curr;
  3340. } else {
  3341. return prev;
  3342. }
  3343. }, 0);
  3344. 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') {
  3345. BUpdate.push({ label: column.label, total: (sums1[index] * that.BGroupCostParameter.costTypenumber).toFixed(2), single: (sums1[index]).toFixed(2) });
  3346. 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] + ')';
  3347. }
  3348. else if (column.label == 'SGR' || column.label == 'JS/ES' || column.label == 'SUITE' || column.label == 'TBR') {
  3349. if (column.label == 'TBR') {
  3350. BUpdate.push({ label: column.label, total: (sums1[index]).toFixed(2), single: (sums1[index] / 2).toFixed(2) });
  3351. 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] + ')';
  3352. } else {
  3353. BUpdate.push({ label: column.label, total: (sums1[index]).toFixed(2), single: (sums1[index]).toFixed(2) });
  3354. 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] + ')';
  3355. }
  3356. }
  3357. else {
  3358. BUpdate.push({ label: column.label, total: sums1[index].toFixed(2), single: (sums1[index] / that.BGroupCostParameter.costTypenumber).toFixed(2) });
  3359. 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] + ')';
  3360. sums1[index] = ((sums1[index] / that.BGroupCostParameter.costTypenumber).toFixed(2));
  3361. }
  3362. } else {
  3363. prices[index] = 'A段费用' + prices[index] + ' B段费用' + 'N/A';
  3364. }
  3365. }
  3366. var fliterList = that.sumTopPrice.filter(function (x) {
  3367. return x.name == column.property;
  3368. })
  3369. if (fliterList.length == 0) {
  3370. that.sumTopPrice.push({ name: column.property, label: column.label, Aprice: sums[index], Bprice: sums1[index] == undefined ? 0 : sums1[index] });
  3371. } else {
  3372. fliterList[0].Aprice = sums[index];
  3373. fliterList[0].Bprice = sums1[index] == undefined ? 0 : sums1[index];
  3374. }
  3375. var TextfliterList = texts.filter(function (x) {
  3376. return x.label == column.label;
  3377. })
  3378. var text = prices[index];
  3379. if (TextfliterList.length == 0) {
  3380. texts.push({ label: column.label, text: text });
  3381. } else {
  3382. TextfliterList[0].text = text;
  3383. }
  3384. });
  3385. this.titleText = texts;
  3386. //////console.log(that.sumTopPrice, 'sumTopPrice---------------');
  3387. this.CalculatedPrice();
  3388. ////////console.log(that.sumTopPrice, '------------');
  3389. setTimeout(() => {
  3390. this.setLastTitle(prices);
  3391. if (that.costTypevalue == 'B') {
  3392. //遍历bupdate
  3393. BUpdate.forEach(function (item) {
  3394. that.BlableSetPrice(item.label, item.total, item.single);
  3395. })
  3396. }
  3397. }, 600);
  3398. return prices;
  3399. },
  3400. handleEdit(index, row, buttonIndex) {
  3401. ////////console.log(index, row, buttonIndex);
  3402. this.rowIndex = index; // 行的索引
  3403. var api = '';
  3404. switch (buttonIndex) {
  3405. case 1:
  3406. api = 'GetCarGuides';
  3407. this.DialogTitle = '选择车导数据';
  3408. break;
  3409. case 2:
  3410. api = 'GetGuidesInfo';
  3411. this.DialogTitle = '导游信息';
  3412. break;
  3413. case 3:
  3414. api = 'GetCarInfo';
  3415. this.DialogTitle = '选择车数据';
  3416. break;
  3417. case 4:
  3418. api = 'GetScenicSpotInfo';
  3419. this.DialogTitle = '景点信息';
  3420. break;
  3421. }
  3422. if (api == '') {
  3423. this.$message.error('程序异常!');
  3424. return;
  3425. }
  3426. this.dialogSearchInput = this.grouptitleinfo.visitCountry;
  3427. var dataC = this.dialogColumn.filter(x => x.index == buttonIndex);
  3428. if (dataC.length == 0) {
  3429. this.SeldialogColumn = [];
  3430. } else {
  3431. this.SeldialogColumn = dataC[0].data;
  3432. }
  3433. var that = this;
  3434. this.$axios.post('/api/Groups/' + api, {}, {
  3435. headers: {
  3436. 'Authorization': that.token,
  3437. }
  3438. }).then(resp => {
  3439. //////console.log(resp.data.data, '------------------------------------');
  3440. that.outerVisible = true;
  3441. if (resp.data.code == 200) {
  3442. that.dialogTableData = resp.data.data;
  3443. } else {
  3444. that.$message.error('获取数据失败!' + resp.data.msg);
  3445. }
  3446. })
  3447. },
  3448. handleDelete(index, row, rows) {
  3449. //////console.log(index, row, rows);
  3450. this.$confirm('此操作将删除该条信息, 是否继续?', '提示', {
  3451. confirmButtonText: '确定',
  3452. cancelButtonText: '取消',
  3453. type: 'warning'
  3454. }).then(() => {
  3455. this.$message({
  3456. message: '已删除',
  3457. type: 'success',
  3458. offset: 50
  3459. });
  3460. rows.splice(index, 1);
  3461. }).catch(() => {
  3462. this.$message({
  3463. type: 'info',
  3464. message: '已取消删除'
  3465. });
  3466. });
  3467. },
  3468. //减
  3469. increase(val) {
  3470. //console.log(this.tableData[val]);
  3471. if (this.tableData[val].day == "-") {
  3472. this.tableData[val].day = 0
  3473. }
  3474. if (this.tableData[val].day <= 1) {
  3475. return
  3476. }
  3477. this.tableData[val].day--
  3478. this.NumberSetTime(this.tableData[val].day, val)
  3479. },
  3480. //加
  3481. decrease(val) {
  3482. if (this.tableData[val].day == "-") {
  3483. this.tableData[val].day = 0
  3484. }
  3485. this.tableData[val].day++
  3486. this.NumberSetTime(this.tableData[val].day, val)
  3487. },
  3488. addStrip() {
  3489. var souerLength = this.tableData.length - 1;
  3490. var dataStr = "";
  3491. var day = '-';
  3492. if (souerLength >= 0) {
  3493. dataStr = this.tableData[souerLength].date;
  3494. dataStr = this.addOneDay(dataStr, 1);
  3495. var getDay = this.tableData[souerLength].day;
  3496. if (getDay) {
  3497. day = parseInt(getDay) + 1;
  3498. } else {
  3499. try {
  3500. day = parseInt(this.tableData[souerLength - 1].day) + 1;
  3501. dataStr = this.addOneDay(this.tableData[souerLength - 1].date, 1)
  3502. } catch (e) {
  3503. dataStr = "";
  3504. day = '-';
  3505. }
  3506. }
  3507. }
  3508. this.tableData.push(
  3509. {
  3510. "diid": this.diid,
  3511. "day": day,
  3512. "date": dataStr,
  3513. "itin": "",
  3514. "carType": "",
  3515. "carCost": "",
  3516. "carNumber": "",
  3517. "carTiming": "",
  3518. "tgs": "",
  3519. "tgwh": "",
  3520. "tgn": "",
  3521. "tgof": "",
  3522. "tgm": "",
  3523. "tga": "",
  3524. "tgtf": "",
  3525. "tgef": "",
  3526. "cfs": "",
  3527. "cfm": "",
  3528. "cfof": "",
  3529. "b": "",
  3530. "l": "",
  3531. "d": "",
  3532. "tbr": "",
  3533. "sgr": "",
  3534. "jS_ES": "",
  3535. "suite": "",
  3536. "accon": "",
  3537. "tv": "",
  3538. "iL": "",
  3539. "if": "",
  3540. "ef": "",
  3541. "b_R_F": "",
  3542. "te": "",
  3543. "tgTips": "",
  3544. "drvTips": "",
  3545. "pc": "",
  3546. "tlf": "",
  3547. "ect": "",
  3548. "id": 1,
  3549. "gwCount": "",
  3550. "fyCount": "",
  3551. "efr": "",
  3552. }
  3553. )
  3554. },
  3555. loadData(id) {
  3556. this.costloading = true;
  3557. this.tableData = [];
  3558. var that = this;
  3559. this.$axios.post('/api/Groups/GroupCostInit', {
  3560. Diid: id
  3561. }, {
  3562. headers: {
  3563. 'Authorization': that.token,
  3564. }
  3565. }).then(resp => {
  3566. setTimeout(() => {
  3567. that.PostTourClientListByDiId(id);
  3568. }, 1000)
  3569. //////console.log(resp.data.data, '------------------------------------');
  3570. if (resp.data.code == 200) {
  3571. that.options = resp.data.data.groupList;
  3572. that.grouptitleinfo = resp.data.data.groupInfo.data;
  3573. that.diid = that.grouptitleinfo.id;
  3574. localStorage.setItem('costLoadData', JSON.stringify({
  3575. diid: that.diid
  3576. }))
  3577. setTimeout(() => {
  3578. that.QueryRate();
  3579. }, 500)
  3580. for (var i = 0; i < that.CheckBoxListSelect.length; i++) {
  3581. that.CheckBoxListSelect[i].diid = that.diid;
  3582. }
  3583. if (resp.data.data.groupChecks.length > 0) {
  3584. resp.data.data.groupChecks.forEach(item => {
  3585. for (var i = 0; i < that.CheckBoxListSelect.length; i++) {
  3586. if (item.cbType == that.CheckBoxListSelect[i].cbType) {
  3587. that.CheckBoxListSelect[i].cbValues = item.cbValues.split(',');
  3588. //////console.log(item.cbValues.split(','));
  3589. break;
  3590. }
  3591. if (that.CheckBoxListSelect[i].diid == 0) {
  3592. that.CheckBoxListSelect[i].diid = that.diid;
  3593. }
  3594. }
  3595. })
  3596. } else {
  3597. that.CheckBoxListSelect = [
  3598. {
  3599. "diid": that.diid,
  3600. "cbType": "Top",
  3601. "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"
  3602. },
  3603. {
  3604. "diid": that.diid,
  3605. "cbType": "Left",
  3606. "cbValues": ['签证', '机票', '保险', '火车票', '地接', '公务', '零用金'] //"string"
  3607. },
  3608. {
  3609. "diid": that.diid,
  3610. "cbType": "Right",
  3611. "cbValues": ['公务舱 SGR', '经济舱 SGR', '团组预算明细'] //"string"
  3612. }
  3613. ]
  3614. }
  3615. that.CheckBoxListSelect.forEach(x => {
  3616. if (x.cbType == 'Top') {
  3617. if (x.cbValues.includes("EF") && !x.cbValues.includes("EFR")) {
  3618. x.cbValues.push("EFR");
  3619. }
  3620. }
  3621. });
  3622. that.grouptitleinfo.visitStartDate = that.grouptitleinfo.visitStartDate.split(' ')[0];
  3623. that.grouptitleinfo.visitEndDate = that.grouptitleinfo.visitEndDate.split(' ')[0];
  3624. that.peopleNumber = that.grouptitleinfo.visitPNumber > 0 ? that.grouptitleinfo.visitPNumber : 1;
  3625. if (resp.data.data.groupCost.length > 0) {
  3626. that.tableData = resp.data.data.groupCost;
  3627. //console.log(that.tableData);
  3628. for (var i = 0; i < that.tableData.length; i++) {
  3629. for (var prop in that.tableData[i]) {
  3630. //console.log(that.tableData[i][prop]);
  3631. if (that.tableData[i][prop] == 0) {
  3632. that.tableData[i][prop] = ''
  3633. }
  3634. }
  3635. }
  3636. } else {
  3637. that.tableData = [
  3638. {
  3639. "diid": that.diid,
  3640. "day": "-",
  3641. "date": "",
  3642. "itin": "",
  3643. "carType": "",
  3644. "carCost": "",
  3645. "carNumber": "",
  3646. "carTiming": "",
  3647. "tgs": "",
  3648. "tgwh": "",
  3649. "tgn": "",
  3650. "tgof": "",
  3651. "tgm": "",
  3652. "tga": "",
  3653. "tgtf": "",
  3654. "tgef": "",
  3655. "cfs": "",
  3656. "cfm": "",
  3657. "cfof": "",
  3658. "b": "",
  3659. "l": "",
  3660. "d": "",
  3661. "tbr": "",
  3662. "sgr": "",
  3663. "jS_ES": "",
  3664. "suite": "",
  3665. "accon": "",
  3666. "tv": "",
  3667. "iL": "",
  3668. "if": "",
  3669. "ef": "",
  3670. "b_R_F": "",
  3671. "te": "",
  3672. "tgTips": "",
  3673. "drvTips": "",
  3674. "pc": "",
  3675. "tlf": "",
  3676. "ect": "",
  3677. "id": 1,
  3678. "gwCount": "",
  3679. "fyCount": "",
  3680. "efr": "",
  3681. }
  3682. ]
  3683. }
  3684. if (resp.data.data.groupCostParameter.length > 0) {
  3685. var acostvalue = resp.data.data.groupCostParameter.filter(x => x.costType == 'A')[0];
  3686. if (acostvalue != undefined) {
  3687. that.AGroupCostParameter = acostvalue;
  3688. that.isShare = that.AGroupCostParameter.isShare;//是否通知
  3689. //console.log(that.AGroupCostParameter)
  3690. var result = Number(that.AGroupCostParameter.currency);
  3691. if (isNaN(result)) {
  3692. } else {
  3693. that.AGroupCostParameter.currency = result;
  3694. }
  3695. } else {
  3696. that.AGroupCostParameter = {
  3697. "id": 0,
  3698. "diId": 0,
  3699. "currency": "CNY",
  3700. "rate": 0,
  3701. "tax": 0,
  3702. "ffys": 0,
  3703. "hotelXS": 0,
  3704. "jjccb": 0,
  3705. "jjcxs": 0,
  3706. "jjcrs": 0,
  3707. "gwccb": 0,
  3708. "gwcxs": 0,
  3709. "gwcrs": 0,
  3710. "hcpcb": 0,
  3711. "hcpxs": 0,
  3712. "hcprs": 0,
  3713. "cpcb": 0,
  3714. "cpxs": 0,
  3715. "cprs": 0,
  3716. "bxcb": 0,
  3717. "bxxs": 25,
  3718. "bxrs": 0,
  3719. "hscb": 0,
  3720. "hsxs": 0,
  3721. "hsrs": 0,
  3722. "visaCB": 0,
  3723. "visaXS": 0,
  3724. "visaRS": 0,
  3725. "gwcb": 0,
  3726. "gwxs": 0,
  3727. "gwrs": 0,
  3728. "djcb": 0,
  3729. "djrs": 0,
  3730. "djxs": 0,
  3731. "sgrcb": 0,
  3732. "sgrNumber": 0,
  3733. "sgrxs": 0,
  3734. "tbrcb": 0,
  3735. "tbrNumber": 0,
  3736. "tbrxs": 0,
  3737. "jsescb": 0,
  3738. "jsesNumber": 0,
  3739. "jsesxs": 0,
  3740. "suitecb": 0,
  3741. "suiteNumber": 0,
  3742. "suitexs": 0,
  3743. "lyjcb": 0,
  3744. "lyjxs": 0,
  3745. "lyjrs": 0,
  3746. "isShare": 0,
  3747. "costType": "A",
  3748. "costTypeStartTime": "",
  3749. "costTypeendTime": "",
  3750. "costTypenumber": 0,
  3751. "tdccb": 0,
  3752. "tdcxs": 0,
  3753. "tdcrs": 0
  3754. };
  3755. }
  3756. var bcostvalue = resp.data.data.groupCostParameter.filter(x => x.costType == 'B')[0];
  3757. if (bcostvalue != undefined) {
  3758. that.BGroupCostParameter = bcostvalue;
  3759. } else {
  3760. that.BGroupCostParameter = {
  3761. "id": 0,
  3762. "diId": 0,
  3763. "currency": "",
  3764. "rate": 0,
  3765. "tax": 0,
  3766. "ffys": 0,
  3767. "hotelXS": 0,
  3768. "jjccb": 0,
  3769. "jjcxs": 0,
  3770. "jjcrs": 0,
  3771. "gwccb": 0,
  3772. "gwcxs": 0,
  3773. "gwcrs": 0,
  3774. "hcpcb": 0,
  3775. "hcpxs": 0,
  3776. "hcprs": 0,
  3777. "cpcb": 0,
  3778. "cpxs": 0,
  3779. "cprs": 0,
  3780. "bxcb": 0,
  3781. "bxxs": 25,
  3782. "bxrs": 0,
  3783. "hscb": 0,
  3784. "hsxs": 0,
  3785. "hsrs": 0,
  3786. "visaCB": 0,
  3787. "visaXS": 0,
  3788. "visaRS": 0,
  3789. "gwcb": 0,
  3790. "gwxs": 0,
  3791. "gwrs": 0,
  3792. "djcb": 0,
  3793. "djxs": 0,
  3794. "djrs": 0,
  3795. "sgrcb": 0,
  3796. "sgrNumber": 0,
  3797. "sgrxs": 0,
  3798. "tbrcb": 0,
  3799. "tbrNumber": 0,
  3800. "tbrxs": 0,
  3801. "jsescb": 0,
  3802. "jsesNumber": 0,
  3803. "jsesxs": 0,
  3804. "suitecb": 0,
  3805. "suiteNumber": 0,
  3806. "suitexs": 0,
  3807. "lyjcb": 0,
  3808. "lyjxs": 0,
  3809. "lyjrs": 0,
  3810. "isShare": 0,
  3811. "costType": "B",
  3812. "costTypeStartTime": "",
  3813. "costTypeendTime": "",
  3814. "costTypenumber": 0,
  3815. "tdccb": 0,
  3816. "tdcxs": 0,
  3817. "tdcrs": 0
  3818. };
  3819. }
  3820. if (resp.data.data.groupCostParameter.length > 1) {
  3821. that.costTypevalue = "B";
  3822. } else {
  3823. that.costTypevalue = "A";
  3824. }
  3825. if (that.AGroupCostParameter.costTypeStartTime) {
  3826. that.AGroupCostParameter.costTypeStartTime = new Date(that.AGroupCostParameter.costTypeStartTime);
  3827. }
  3828. if (that.AGroupCostParameter.costTypeendTime) {
  3829. that.AGroupCostParameter.costTypeendTime = new Date(that.AGroupCostParameter.costTypeendTime);
  3830. }
  3831. if (that.BGroupCostParameter.costTypeStartTime) {
  3832. that.BGroupCostParameter.costTypeStartTime = new Date(that.BGroupCostParameter.costTypeStartTime);
  3833. }
  3834. if (that.BGroupCostParameter.costTypeendTime) {
  3835. that.BGroupCostParameter.costTypeendTime = new Date(that.BGroupCostParameter.costTypeendTime);
  3836. }
  3837. } else {
  3838. that.AGroupCostParameter = {
  3839. "id": 0,
  3840. "diId": 0,
  3841. "currency": "CNY",
  3842. "rate": 0,
  3843. "tax": 0,
  3844. "ffys": 0,
  3845. "hotelXS": 0,
  3846. "jjccb": 0,
  3847. "jjcxs": 0,
  3848. "jjcrs": 0,
  3849. "gwccb": 0,
  3850. "gwcxs": 0,
  3851. "gwcrs": 0,
  3852. "hcpcb": 0,
  3853. "hcpxs": 0,
  3854. "hcprs": 0,
  3855. "cpcb": 0,
  3856. "cpxs": 0,
  3857. "cprs": 0,
  3858. "bxcb": 0,
  3859. "bxxs": 25,
  3860. "bxrs": 0,
  3861. "hscb": 0,
  3862. "hsxs": 0,
  3863. "hsrs": 0,
  3864. "visaCB": 0,
  3865. "visaXS": 0,
  3866. "visaRS": 0,
  3867. "gwcb": 0,
  3868. "gwxs": 0,
  3869. "gwrs": 0,
  3870. "djcb": 0,
  3871. "djrs": 0,
  3872. "djxs": 0,
  3873. "sgrcb": 0,
  3874. "sgrNumber": 0,
  3875. "sgrxs": 0,
  3876. "tbrcb": 0,
  3877. "tbrNumber": 0,
  3878. "tbrxs": 0,
  3879. "jsescb": 0,
  3880. "jsesNumber": 0,
  3881. "jsesxs": 0,
  3882. "suitecb": 0,
  3883. "suiteNumber": 0,
  3884. "suitexs": 0,
  3885. "lyjcb": 0,
  3886. "lyjxs": 0,
  3887. "lyjrs": 0,
  3888. "isShare": 0,
  3889. "costType": "A",
  3890. "costTypeStartTime": "",
  3891. "costTypeendTime": "",
  3892. "costTypenumber": 0,
  3893. "tdccb": 0,
  3894. "tdcxs": 0,
  3895. "tdcrs": 0
  3896. };
  3897. that.BGroupCostParameter = {
  3898. "id": 0,
  3899. "diId": 0,
  3900. "currency": "",
  3901. "rate": 0,
  3902. "tax": 0,
  3903. "ffys": 0,
  3904. "hotelXS": 0,
  3905. "jjccb": 0,
  3906. "jjcxs": 0,
  3907. "jjcrs": 0,
  3908. "gwccb": 0,
  3909. "gwcxs": 0,
  3910. "gwcrs": 0,
  3911. "hcpcb": 0,
  3912. "hcpxs": 0,
  3913. "hcprs": 0,
  3914. "cpcb": 0,
  3915. "cpxs": 0,
  3916. "cprs": 0,
  3917. "bxcb": 0,
  3918. "bxxs": 25,
  3919. "bxrs": 0,
  3920. "hscb": 0,
  3921. "hsxs": 0,
  3922. "hsrs": 0,
  3923. "visaCB": 0,
  3924. "visaXS": 0,
  3925. "visaRS": 0,
  3926. "gwcb": 0,
  3927. "gwxs": 0,
  3928. "gwrs": 0,
  3929. "djcb": 0,
  3930. "djxs": 0,
  3931. "djrs": 0,
  3932. "sgrcb": 0,
  3933. "sgrNumber": 0,
  3934. "sgrxs": 0,
  3935. "tbrcb": 0,
  3936. "tbrNumber": 0,
  3937. "tbrxs": 0,
  3938. "jsescb": 0,
  3939. "jsesNumber": 0,
  3940. "jsesxs": 0,
  3941. "suitecb": 0,
  3942. "suiteNumber": 0,
  3943. "suitexs": 0,
  3944. "lyjcb": 0,
  3945. "lyjxs": 0,
  3946. "lyjrs": 0,
  3947. "isShare": 0,
  3948. "costType": "B",
  3949. "costTypeStartTime": "",
  3950. "costTypeendTime": "",
  3951. "costTypenumber": 0,
  3952. "tdccb": 0,
  3953. "tdcxs": 0,
  3954. "tdcrs": 0
  3955. };
  3956. that.AGroupCostParameter.diId = that.diid;
  3957. that.BGroupCostParameter.diId = that.diid;
  3958. that.costTypevalue = 'A';
  3959. }
  3960. let hotelNumber = resp.data.data.hotelNumber;
  3961. if (hotelNumber.length > 0) {
  3962. for (var i = 0; i < hotelNumber.length; i++) {
  3963. //替换costTypeHotelNumbers ;
  3964. Array.forEach(that.costTypeHotelNumbers, (item, index) => {
  3965. if (hotelNumber[i]['type'] == item.type) {
  3966. that.$set(that.costTypeHotelNumbers, index, hotelNumber[i]);
  3967. }
  3968. })
  3969. }
  3970. } else {
  3971. that.costTypeHotelNumbers = [{
  3972. "sgr": 0,
  3973. "tbr": 0,
  3974. "jses": 0,
  3975. "suite": 0,
  3976. "type": "Default",
  3977. "diid": 0,
  3978. id: 0,
  3979. },
  3980. {
  3981. "sgr": 0,
  3982. "tbr": 0,
  3983. "jses": 0,
  3984. "suite": 0,
  3985. "type": "A",
  3986. "diid": 0,
  3987. id: 0,
  3988. },
  3989. {
  3990. "sgr": 0,
  3991. "tbr": 0,
  3992. "jses": 0,
  3993. "suite": 0,
  3994. "type": "B",
  3995. "diid": 0,
  3996. id: 0,
  3997. }]
  3998. }
  3999. if (resp.data.data.visaCountryInfoArr.length > 0) {
  4000. that.visaCountryInfoArr = resp.data.data.visaCountryInfoArr;
  4001. } else {
  4002. that.visaCountryInfoArr = [];
  4003. }
  4004. that.ShowBaoPi = [];
  4005. const rightBaoPiShow = [
  4006. { apiType: "SumAirJJC", containValue: "经济舱" },
  4007. { apiType: "SumAirGWC", containValue: "公务舱" },
  4008. { apiType: "SumAirTDC", containValue: "头等舱" }];
  4009. if (resp.data.data.baoPi.length > 0) {
  4010. const baoPi = resp.data.data.baoPi;
  4011. //left 报批
  4012. for (var i = 0; i < baoPi.length; i++) {
  4013. for (var j = 0; j < that.equalWhere.length; j++) {
  4014. let item = that.equalWhere[j];
  4015. for (var p in item) {
  4016. if (baoPi[i].type == p) {
  4017. //////console.log("key:" + p + "已经匹配 value:" + item[p]);
  4018. for (var m = 0; m < that.sheetDatal.length; m++) {
  4019. if (that.sheetDatal[m].EnLabel == item[p]) {
  4020. //////console.log(" 1 key:" + that.sheetDatal[m].EnLabel + "已经匹配 1 value:" + baoPi[i].price);
  4021. that.sheetDatal[m].childList[0].tips = baoPi[i].price;
  4022. }
  4023. }
  4024. }
  4025. }
  4026. }
  4027. }
  4028. for (var i = 0; i < rightBaoPiShow.length; i++) {
  4029. var val = baoPi.filter(x => {
  4030. return x.type == rightBaoPiShow[i].apiType
  4031. })
  4032. if (val.length > 0) {
  4033. for (var j = 0; j < that.cabinDatal.length; j++) {
  4034. if (that.cabinDatal[j].label.indexOf(rightBaoPiShow[i].containValue) != -1) {
  4035. that.cabinDatal[j].childList[3].tips = val[0].price;
  4036. }
  4037. }
  4038. }
  4039. }
  4040. const centerBaoPiShow = [
  4041. "Meals", "Hotel", "GongZa"
  4042. ]
  4043. for (var i = 0; i < centerBaoPiShow.length; i++) {
  4044. var val = baoPi.filter(x => {
  4045. return x.type == centerBaoPiShow[i]
  4046. })
  4047. if (val.length > 0) {
  4048. that.ShowBaoPi.push(val[0]);
  4049. }
  4050. }
  4051. } else {
  4052. for (var m = 0; m < that.sheetDatal.length; m++) {
  4053. if (that.sheetDatal[m].childList[0].tips) {
  4054. that.sheetDatal[m].childList[0].tips = "暂无!";
  4055. }
  4056. }
  4057. for (var j = 0; j < rightBaoPiShow.length; j++) {
  4058. for (var i = 0; i < that.cabinDatal.length; i++) {
  4059. if (that.cabinDatal[i].label.indexOf(rightBaoPiShow[j].containValue) != -1) {
  4060. that.cabinDatal[i].childList[3].tips = '暂无!';
  4061. }
  4062. }
  4063. }
  4064. }
  4065. that.hotelIsTrue = resp.data.data.hotelIsTrue;
  4066. that.blackCodeIsTrue = resp.data.data.blackCodeIsTrue;
  4067. that.GivePeopleNumber();
  4068. }
  4069. that.inSelectChangeCheck();
  4070. that.costloading = false;
  4071. }).catch(err => {
  4072. that.costloading = false;
  4073. this.$message({
  4074. message: '网络异常!',
  4075. type: 'error'
  4076. });
  4077. })
  4078. },
  4079. groupChange() {
  4080. this.clearFormVerify();
  4081. this.loadData(this.diid);
  4082. },
  4083. save() {
  4084. return new Promise(async (resolve, reject) => {
  4085. if (this.costTypevalue == 'A') {
  4086. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4087. return x.type == 'Default'
  4088. })[0];
  4089. var pNumber = 0;
  4090. //遍历 sgrfilter对象
  4091. for (var key in sgrfilter) {
  4092. var parNumber = Number(sgrfilter[key]);
  4093. if (isNaN(parNumber)) {
  4094. parNumber = 0;
  4095. } else {
  4096. if (key == 'tbr') {
  4097. pNumber += parNumber * 2;
  4098. }
  4099. if (key == 'sgr') {
  4100. pNumber += parNumber;
  4101. }
  4102. if (key == 'jses') {
  4103. pNumber += parNumber;
  4104. }
  4105. if (key == 'suite') {
  4106. pNumber += parNumber;
  4107. }
  4108. }
  4109. }
  4110. //console.log(pNumber, 'pNumber-------------');
  4111. if (this.grouptitleinfo.visitPNumber != pNumber) {
  4112. this.$message.error('团组人数与房间人数不一致!')
  4113. return resolve(false);
  4114. }
  4115. }
  4116. var that = this;
  4117. var Data = { diid: this.diid, userid: this.userId };
  4118. var isTrue = await this.formVerify();
  4119. if (isTrue) {
  4120. Data.checkBoxs = this.CheckBoxListSelect.map(x => {
  4121. return {
  4122. diid: x.diid,
  4123. cbType: x.cbType,
  4124. cbValues: x.cbValues.join(',')
  4125. };
  4126. });
  4127. Data.groupCosts = this.tableData;
  4128. Data.costTypeHotelNumbers = this.costTypeHotelNumbers.map(x => {
  4129. return {
  4130. id: x.id,
  4131. sgr: x.sgr,
  4132. tbr: x.tbr,
  4133. jses: x.jses,
  4134. suite: x.suite,
  4135. type: x.type,
  4136. diid: that.diid
  4137. };
  4138. });
  4139. this.AGroupCostParameter.currency = this.AGroupCostParameter.currency.toString();
  4140. this.AGroupCostParameter.diId = this.diid;
  4141. this.BGroupCostParameter.diId = this.diid;
  4142. var Aparam = Object.assign({}, this.AGroupCostParameter);
  4143. var Bparam = Object.assign({}, this.BGroupCostParameter);
  4144. if (that.AGroupCostParameter.costTypeStartTime) {
  4145. Aparam.costTypeStartTime = this.addOneDay(that.AGroupCostParameter.costTypeStartTime, 0);
  4146. }
  4147. if (that.AGroupCostParameter.costTypeendTime) {
  4148. Aparam.costTypeendTime = this.addOneDay(that.AGroupCostParameter.costTypeendTime, 0);
  4149. }
  4150. if (that.BGroupCostParameter.costTypeStartTime) {
  4151. Bparam.costTypeStartTime = this.addOneDay(that.BGroupCostParameter.costTypeStartTime, 0);
  4152. }
  4153. if (that.BGroupCostParameter.costTypeendTime) {
  4154. Bparam.costTypeendTime = this.addOneDay(that.BGroupCostParameter.costTypeendTime, 0);
  4155. }
  4156. if (this.costTypevalue == "A") {
  4157. Data.groupCostParameters = [Aparam];
  4158. } else {
  4159. Data.groupCostParameters = [Aparam, Bparam];
  4160. }
  4161. var ResultCostArr = this.Dataformat();
  4162. Data.groupCosts = ResultCostArr;
  4163. //////console.log(Data, "save-------Data");
  4164. var that = this;
  4165. this.$axios.post('/api/Groups/SaveGroupCost', Data, {
  4166. headers: {
  4167. 'Authorization': that.token,
  4168. }
  4169. }).then(resp => {
  4170. //////console.log(resp.data.data, '------------------------------------');
  4171. if (resp.data.code == 200) {
  4172. this.$message({
  4173. message: '保存成功!',
  4174. type: 'success'
  4175. });
  4176. resolve(true);
  4177. } else {
  4178. this.$message.error('保存失败!' + resp.data.msg);
  4179. resolve(false);
  4180. }
  4181. var result = Number(that.AGroupCostParameter.currency);
  4182. if (isNaN(result)) {
  4183. } else {
  4184. that.AGroupCostParameter.currency = result;
  4185. }
  4186. })
  4187. } else {
  4188. this.$message.error('请输入完整!');
  4189. }
  4190. })
  4191. },
  4192. TopChange() {
  4193. },
  4194. calculateZCB(EnLabelParam) {
  4195. if (EnLabelParam == undefined) {
  4196. return 0.00;
  4197. }
  4198. var sum = 0.00;
  4199. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4200. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']) * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']));
  4201. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4202. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']) * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined ? this.AGroupCostParameter[EnLabelParam + 'rs'] : this.AGroupCostParameter[EnLabelParam + 'Number']));
  4203. }
  4204. if (isNaN(sum)) {
  4205. sum = 0.00;
  4206. }
  4207. return sum.toFixed(2);
  4208. },
  4209. calculateDRBJ(EnLabelParam) {
  4210. if (EnLabelParam == undefined) {
  4211. return 0.00;
  4212. }
  4213. var sum = 0.00;
  4214. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4215. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']) * parseFloat(this.AGroupCostParameter[EnLabelParam + 'XS']));
  4216. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4217. sum = (parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']) * parseFloat(this.AGroupCostParameter[EnLabelParam + 'xs']));
  4218. }
  4219. if (isNaN(sum)) {
  4220. sum = 0.00;
  4221. }
  4222. return sum.toFixed(2);
  4223. },
  4224. calculateZBJ(EnLabelParam) {
  4225. if (EnLabelParam == undefined) {
  4226. return 0.00;
  4227. }
  4228. var sum = 0.00;
  4229. var drbj = this.calculateDRBJ(EnLabelParam);
  4230. if (this.AGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4231. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']);
  4232. } else if (this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4233. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs']);
  4234. } else if (this.AGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4235. sum = drbj * parseInt(this.AGroupCostParameter[EnLabelParam + 'Number']);
  4236. }
  4237. if (isNaN(sum)) {
  4238. sum = 0.00;
  4239. }
  4240. return sum.toFixed(2);
  4241. },
  4242. calculateDRLR(EnLabelParam) {
  4243. if (EnLabelParam == undefined) {
  4244. return 0.00;
  4245. }
  4246. var sum = 0.00;
  4247. var drbj = this.calculateDRBJ(EnLabelParam);
  4248. if (this.AGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4249. sum = (drbj - parseFloat(this.AGroupCostParameter[EnLabelParam + 'CB']));
  4250. } else if (this.AGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4251. sum = (drbj - parseFloat(this.AGroupCostParameter[EnLabelParam + 'cb']));
  4252. }
  4253. if (isNaN(sum)) {
  4254. sum = 0.00;
  4255. }
  4256. return sum.toFixed(2);
  4257. },
  4258. calculateZLR(EnLabelParam) {
  4259. if (EnLabelParam == undefined) {
  4260. return 0.00;
  4261. }
  4262. var sum = 0.00;
  4263. var drlr = this.calculateDRLR(EnLabelParam);
  4264. if (this.AGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4265. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'RS']);
  4266. } else if (this.AGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4267. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'rs']);
  4268. } else if (this.AGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4269. sum = drlr * parseInt(this.AGroupCostParameter[EnLabelParam + 'Number']);
  4270. }
  4271. if (isNaN(sum)) {
  4272. sum = 0.00;
  4273. }
  4274. return sum.toFixed(2);
  4275. },
  4276. BcalculateZCB(EnLabelParam) {
  4277. if (EnLabelParam == undefined) {
  4278. return 0.00;
  4279. }
  4280. var sum = 0.00;
  4281. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4282. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']) * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']));
  4283. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4284. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']) * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined ? this.BGroupCostParameter[EnLabelParam + 'rs'] : this.BGroupCostParameter[EnLabelParam + 'Number']));
  4285. }
  4286. if (isNaN(sum)) {
  4287. sum = 0.00;
  4288. }
  4289. return sum.toFixed(2);;
  4290. },
  4291. BcalculateDRBJ(EnLabelParam) {
  4292. if (EnLabelParam == undefined) {
  4293. return 0.00;
  4294. }
  4295. var sum = 0.00;
  4296. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4297. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']) * parseFloat(this.BGroupCostParameter[EnLabelParam + 'XS']));
  4298. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4299. sum = (parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']) * parseFloat(this.BGroupCostParameter[EnLabelParam + 'xs']));
  4300. }
  4301. if (isNaN(sum)) {
  4302. sum = 0.00;
  4303. }
  4304. return sum.toFixed(2);;
  4305. },
  4306. BcalculateZBJ(EnLabelParam) {
  4307. if (EnLabelParam == undefined) {
  4308. return 0.00;
  4309. }
  4310. var sum = 0.00;
  4311. var drbj = this.BcalculateDRBJ(EnLabelParam);
  4312. if (this.BGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4313. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']);
  4314. } else if (this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4315. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs']);
  4316. } else if (this.BGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4317. sum = drbj * parseInt(this.BGroupCostParameter[EnLabelParam + 'Number']);
  4318. }
  4319. if (isNaN(sum)) {
  4320. sum = 0.00;
  4321. }
  4322. return sum.toFixed(2);
  4323. },
  4324. BcalculateDRLR(EnLabelParam) {
  4325. if (EnLabelParam == undefined) {
  4326. return 0.00;
  4327. }
  4328. var sum = 0.00;
  4329. var drbj = this.BcalculateDRBJ(EnLabelParam);
  4330. if (this.BGroupCostParameter[EnLabelParam + 'CB'] != undefined) {
  4331. sum = drbj - parseFloat(this.BGroupCostParameter[EnLabelParam + 'CB']);
  4332. } else if (this.BGroupCostParameter[EnLabelParam + 'cb'] != undefined) {
  4333. sum = drbj - parseFloat(this.BGroupCostParameter[EnLabelParam + 'cb']);
  4334. }
  4335. if (isNaN(sum)) {
  4336. sum = 0.00;
  4337. }
  4338. return sum.toFixed(2);;
  4339. },
  4340. BcalculateZLR(EnLabelParam) {
  4341. if (EnLabelParam == undefined) {
  4342. return 0.00;
  4343. }
  4344. var sum = 0.00;
  4345. var drlr = this.BcalculateDRLR(EnLabelParam);
  4346. if (this.BGroupCostParameter[EnLabelParam + 'RS'] != undefined) {
  4347. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'RS']);
  4348. } else if (this.BGroupCostParameter[EnLabelParam + 'rs'] != undefined) {
  4349. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'rs']);
  4350. } else if (this.BGroupCostParameter[EnLabelParam + 'Number'] != undefined) {
  4351. sum = drlr * parseInt(this.BGroupCostParameter[EnLabelParam + 'Number']);
  4352. }
  4353. if (isNaN(sum)) {
  4354. sum = 0.00;
  4355. }
  4356. return sum.toFixed(2);;
  4357. },
  4358. handleCurrentChange(val) {
  4359. this.currentPage = val;
  4360. },
  4361. SelChange(row, oldrow) {
  4362. //////console.log(row, oldrow);
  4363. this.dialogSelectObject = row;
  4364. },
  4365. handleSizeChange(val) {
  4366. this.currentPage = 1;
  4367. this.pageSize = val;
  4368. },
  4369. CalculatedPrice() {
  4370. let rate = Number(this.AGroupCostParameter.rate);
  4371. let Djsum = 0;
  4372. let BDjsum = 0;
  4373. var that = this;
  4374. this.DJLables.forEach(function (item) {
  4375. that.sumTopPrice.forEach(function (item1) {
  4376. if (item == item1.label) {
  4377. var Aprice = Number(item1.Aprice);
  4378. if (!isNaN(Aprice)) {
  4379. Djsum += Aprice;
  4380. }
  4381. var Bprice = Number(item1.Bprice);
  4382. if (!isNaN(Bprice)) {
  4383. BDjsum += Bprice;
  4384. }
  4385. }
  4386. })
  4387. })
  4388. Djsum = Number((Djsum * rate).toFixed(2));
  4389. BDjsum = Number((BDjsum * rate).toFixed(2));
  4390. let GWsum = 0;
  4391. let BGWsum = 0;
  4392. this.GwLables.forEach(function (item) {
  4393. that.sumTopPrice.forEach(function (item1) {
  4394. if (item == item1.label) {
  4395. var Aprice = Number(item1.Aprice);
  4396. if (!isNaN(Aprice)) {
  4397. GWsum += Aprice;
  4398. }
  4399. var Bprice = Number(item1.Bprice);
  4400. if (!isNaN(Bprice)) {
  4401. BGWsum += Bprice;
  4402. }
  4403. }
  4404. })
  4405. })
  4406. GWsum = Number((GWsum * rate).toFixed(2));
  4407. BGWsum = Number((BGWsum * rate).toFixed(2));
  4408. let LYJsum = 0;
  4409. let BLYJsum = 0;
  4410. var lyjList = that.sumTopPrice.filter((x) => {
  4411. return x.label == 'P/C';
  4412. })
  4413. if (lyjList.length > 0) {
  4414. LYJsum = lyjList[0].Aprice;
  4415. BLYJsum = lyjList[0].Bprice;
  4416. }
  4417. LYJsum = isNaN(LYJsum) ? 0 : LYJsum;
  4418. BLYJsum = isNaN(BLYJsum) ? 0 : BLYJsum;
  4419. LYJsum = Number((LYJsum * rate).toFixed(2));
  4420. BLYJsum = Number((BLYJsum * rate).toFixed(2));
  4421. let SGRsum = 0;
  4422. let BSGRsum = 0;
  4423. var SGRList = that.sumTopPrice.filter((x) => {
  4424. return x.label == 'SGR';
  4425. })
  4426. if (SGRList.length > 0) {
  4427. SGRsum = SGRList[0].Aprice;
  4428. BSGRsum = SGRList[0].Bprice;
  4429. }
  4430. SGRsum = isNaN(SGRsum) ? 0 : SGRsum;
  4431. BSGRsum = isNaN(BSGRsum) ? 0 : BSGRsum;
  4432. SGRsum = (SGRsum * rate).toFixed(2);
  4433. BSGRsum = (BSGRsum * rate).toFixed(2);
  4434. let TBRsum = 0;
  4435. let BTBRsum = 0;
  4436. var TBRList = that.sumTopPrice.filter((x) => {
  4437. return x.label == 'TBR';
  4438. })
  4439. if (TBRList.length > 0) {
  4440. TBRsum = TBRList[0].Aprice;
  4441. BTBRsum = TBRList[0].Bprice;
  4442. }
  4443. TBRsum = isNaN(TBRsum) ? 0 : TBRsum;
  4444. BTBRsum = isNaN(BTBRsum) ? 0 : BTBRsum;
  4445. TBRsum = (TBRsum * rate).toFixed(2);
  4446. BTBRsum = (BTBRsum * rate).toFixed(2);
  4447. let JSESsum = 0;
  4448. let BJSESsum = 0;
  4449. var JSESList = that.sumTopPrice.filter((x) => {
  4450. return x.label == 'JS/ES';
  4451. })
  4452. if (JSESList.length > 0) {
  4453. JSESsum = JSESList[0].Aprice;
  4454. BJSESsum = JSESList[0].Bprice;
  4455. }
  4456. JSESsum = isNaN(JSESsum) ? 0 : JSESsum;
  4457. BJSESsum = isNaN(BJSESsum) ? 0 : BJSESsum;
  4458. JSESsum = JSESsum * rate;
  4459. BJSESsum = BJSESsum * rate;
  4460. let SUITEsum = 0;
  4461. let BSUITEsum = 0;
  4462. var SUITEList = that.sumTopPrice.filter((x) => {
  4463. return x.label == 'SUITE';
  4464. })
  4465. if (SUITEList.length > 0) {
  4466. SUITEsum = SUITEList[0].Aprice;
  4467. BSUITEsum = SUITEList[0].Bprice;
  4468. }
  4469. SUITEsum = isNaN(SUITEsum) ? 0 : SUITEsum;
  4470. BSUITEsum = isNaN(BSUITEsum) ? 0 : BSUITEsum;
  4471. SUITEsum = (SUITEsum * rate).toFixed(2);
  4472. BSUITEsum = (BSUITEsum * rate).toFixed(2);
  4473. // //////console.log(Djsum, GWsum, LYJsum, 'Djsum,GWsum,LYJsum');
  4474. // //////console.log(SGRsum, TBRsum, JSESsum, SUITEsum, 'SGRsum,TBRsum,JSESsum,SUITEsum');
  4475. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4476. return x.type == 'Default'
  4477. })
  4478. let Bsgrfilter = {};
  4479. if (this.costTypevalue == 'B') {
  4480. sgrfilter = this.costTypeHotelNumbers.filter(x => {
  4481. return x.type == 'A'
  4482. })
  4483. Bsgrfilter = this.costTypeHotelNumbers.filter(x => {
  4484. return x.type == 'B'
  4485. })
  4486. Bsgrfilter = Bsgrfilter[0];
  4487. }
  4488. sgrfilter = sgrfilter[0];
  4489. let hotelRooms = {
  4490. "SGR": sgrfilter.sgr,
  4491. "TBR": sgrfilter.tbr,
  4492. "JSES": sgrfilter.jses,
  4493. "SUITE": sgrfilter.suite
  4494. };
  4495. let flights = {
  4496. "经济舱": this.AGroupCostParameter.jjcrs,
  4497. "公务舱": this.AGroupCostParameter.gwcrs,
  4498. "头等舱": this.AGroupCostParameter.tdcrs,
  4499. };
  4500. let result = {};
  4501. for (let flight of ["经济舱", "头等舱", "公务舱"]) {
  4502. if (flight === "经济舱") {
  4503. this.matchRooms(hotelRooms, flights, ["TBR", "SGR", "JSES", "SUITE"], flight, result);
  4504. } else if (flight === "公务舱") {
  4505. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES", "SGR",], flight, result);
  4506. } else if (flight === "头等舱") {
  4507. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES",], flight, result);
  4508. }
  4509. }
  4510. var rightCheckArr = [];
  4511. const airByHotelType = [
  4512. { name: "经济舱TBR", index: 0, lable: "经济舱 TBR" },
  4513. { name: "经济舱SGR", index: 1, lable: "经济舱 SGR" },
  4514. { name: "公务舱SGR", index: 2, lable: "公务舱 SGR" },
  4515. { name: "公务舱JSES", index: 3, lable: "公务舱 JS/ES" },
  4516. { name: "公务舱SUITE", index: 4, lable: "公务舱 SUITE" },
  4517. { name: "经济舱SUITE", index: 5, lable: "经济舱 SUITE" },
  4518. { name: "头等舱JSES", index: 6, lable: "头等舱 JS/ES" },
  4519. { name: "头等舱SUITE", index: 7, lable: "头等舱 SUITE" },
  4520. { name: "经济舱JSES", index: 8, lable: "经济舱 JS/ES" }
  4521. ];
  4522. if (this.costTypevalue == 'B') {
  4523. let BhotelRooms = {
  4524. "SGR": Bsgrfilter.sgr,
  4525. "TBR": Bsgrfilter.tbr,
  4526. "JSES": Bsgrfilter.jses,
  4527. "SUITE": Bsgrfilter.suite
  4528. };
  4529. let Bflights = {
  4530. "经济舱": this.BGroupCostParameter.jjcrs,
  4531. "公务舱": this.BGroupCostParameter.gwcrs,
  4532. "头等舱": this.BGroupCostParameter.tdcrs,
  4533. };
  4534. let Bresult = {};
  4535. for (let flight of ["经济舱", "头等舱", "公务舱"]) {
  4536. if (flight === "经济舱") {
  4537. this.matchRooms(BhotelRooms, Bflights, ["SGR", "TBR", "JSES", "SUITE"], flight, Bresult);
  4538. } else if (flight === "公务舱") {
  4539. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES", "SGR",], flight, Bresult);
  4540. } else if (flight === "头等舱") {
  4541. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES",], flight, Bresult);
  4542. }
  4543. }
  4544. for (var i = 0; i < airByHotelType.length; i++) {
  4545. if (Bresult.hasOwnProperty(airByHotelType[i].name)) {
  4546. let count = Bresult[airByHotelType[i].name];
  4547. if (airByHotelType[i].name.indexOf("TBR") != -1) {
  4548. count = count * 2;
  4549. }
  4550. if (count > 0) {
  4551. rightCheckArr.push(airByHotelType[i].lable);
  4552. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = count;
  4553. }
  4554. else {
  4555. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4556. }
  4557. } else {
  4558. that.BcabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4559. }
  4560. }
  4561. this.BGroupCostParameter.djcb = BDjsum;
  4562. this.BGroupCostParameter.gwcb = BGWsum;
  4563. this.BGroupCostParameter.lyjcb = BLYJsum;
  4564. this.BGroupCostParameter.sgrcb = BSGRsum;
  4565. this.BGroupCostParameter.tbrcb = BTBRsum;
  4566. this.BGroupCostParameter.jsescb = BJSESsum;
  4567. this.BGroupCostParameter.suitecb = BSUITEsum;
  4568. var BleftSum = this.BOtherCost();
  4569. let BJJCSGR = (BleftSum + Number(this.BGroupCostParameter.sgrcb) + Number(this.BGroupCostParameter.jjccb));
  4570. let BJJCTBR = BleftSum + (Number(this.BGroupCostParameter.tbrcb) / 2) + Number(this.BGroupCostParameter.jjccb);
  4571. let BJJCSUITE = BleftSum + Number(this.BGroupCostParameter.suitecb) + Number(this.BGroupCostParameter.jjccb);
  4572. let BGWCSUITE = (BleftSum + Number(this.BGroupCostParameter.suitecb) + Number(this.BGroupCostParameter.gwccb)).toFixed(2);
  4573. let BGWCSGR = BleftSum + Number(this.BGroupCostParameter.sgrcb) + Number(this.BGroupCostParameter.gwccb);
  4574. let BGWCJSES = BleftSum + Number(this.BGroupCostParameter.jsescb) + Number(this.BGroupCostParameter.gwccb);
  4575. //头等舱金额计算
  4576. let BTDCJSES = (BleftSum + Number(this.BGroupCostParameter.jsescb) + Number(this.BGroupCostParameter.tdccb)).toFixed(2);
  4577. let BTDCSUITES = (BleftSum + Number(this.BGroupCostParameter.suitecb) + Number(this.BGroupCostParameter.tdccb)).toFixed(2);
  4578. let BJJCJSES = (BleftSum + Number(this.BGroupCostParameter.jsescb) + Number(this.BGroupCostParameter.jjccb)).toFixed(2);
  4579. BJJCSGR = BJJCSGR.toFixed(2);
  4580. var BrightSum = 0;
  4581. this.OtherCostPropertyBJ.forEach((x) => {
  4582. BrightSum += Number(that.BcalculateDRBJ(x));
  4583. })
  4584. let BJJCSGRDRBJ = (BrightSum + Number(that.BcalculateDRBJ('jjc')) + Number(that.BcalculateDRBJ('sgr'))).toFixed(2);
  4585. let BJJCTBRDRBJ = BrightSum + (Number(that.BcalculateDRBJ('tbr')) / 2) + Number(that.BcalculateDRBJ('jjc'));
  4586. let BJJCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('jjc'));
  4587. let BGWCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('gwc'));
  4588. let BGWCSGRDRBJ = BrightSum + Number(that.BcalculateDRBJ('sgr')) + Number(that.BcalculateDRBJ('gwc'));
  4589. let BGWCJSESDRBJ = BrightSum + Number(that.BcalculateDRBJ('jses')) + Number(that.BcalculateDRBJ('gwc'));
  4590. //头等舱单人报价
  4591. let BTDCJSESDRBJ = (BrightSum + Number(that.BcalculateDRBJ('jses')) + Number(that.BcalculateDRBJ('tdc'))).toFixed(2);
  4592. let BTDCSUITEDRBJ = (BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('tdc'))).toFixed(2);
  4593. let BJJCJSESDRBJ = (BrightSum + Number(that.BcalculateDRBJ('jses')) + Number(that.BcalculateDRBJ('jjc'))).toFixed(2);
  4594. this.BcabinDatal[0].sheetInfo[0].costPerson = BJJCTBR;
  4595. this.BcabinDatal[0].sheetInfo[0].singleQuote = BJJCTBRDRBJ;
  4596. this.BcabinDatal[1].sheetInfo[0].costPerson = BJJCSGR;
  4597. this.BcabinDatal[1].sheetInfo[0].singleQuote = BJJCSGRDRBJ;
  4598. this.BcabinDatal[2].sheetInfo[0].costPerson = BGWCSGR;
  4599. this.BcabinDatal[2].sheetInfo[0].singleQuote = BGWCSGRDRBJ;
  4600. this.BcabinDatal[3].sheetInfo[0].costPerson = BGWCJSES;
  4601. this.BcabinDatal[3].sheetInfo[0].singleQuote = BGWCJSESDRBJ;
  4602. this.BcabinDatal[4].sheetInfo[0].costPerson = BGWCSUITE;
  4603. this.BcabinDatal[4].sheetInfo[0].singleQuote = BGWCSUITEDRBJ;
  4604. this.BcabinDatal[5].sheetInfo[0].costPerson = BJJCSUITE;
  4605. this.BcabinDatal[5].sheetInfo[0].singleQuote = BJJCSUITEDRBJ;
  4606. this.BcabinDatal[6].sheetInfo[0].costPerson = BTDCJSES;
  4607. this.BcabinDatal[6].sheetInfo[0].singleQuote = BTDCJSESDRBJ;
  4608. this.BcabinDatal[7].sheetInfo[0].costPerson = BTDCSUITES;
  4609. this.BcabinDatal[7].sheetInfo[0].singleQuote = BTDCSUITEDRBJ;
  4610. this.BcabinDatal[8].sheetInfo[0].costPerson = BJJCJSES;
  4611. this.BcabinDatal[8].sheetInfo[0].singleQuote = BJJCJSESDRBJ;
  4612. }
  4613. for (var i = 0; i < airByHotelType.length; i++) {
  4614. if (result.hasOwnProperty(airByHotelType[i].name)) {
  4615. let count = result[airByHotelType[i].name];
  4616. if (airByHotelType[i].name.indexOf("TBR") != -1) {
  4617. count = count * 2;
  4618. }
  4619. if (count > 0) {
  4620. rightCheckArr.push(airByHotelType[i].lable);
  4621. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = count;
  4622. }
  4623. else {
  4624. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4625. }
  4626. } else {
  4627. that.cabinDatal[airByHotelType[i].index].sheetInfo[0].toll = 0;
  4628. }
  4629. }
  4630. // var txtJJCSGRRS = (result.hasOwnProperty("经济舱SGR") ? result["经济舱SGR"] : 0)
  4631. // var lblGWCSGRRS = (result.hasOwnProperty("公务舱SGR") ? result["公务舱SGR"] : 0)
  4632. // var txtJJCTBRRS = (result.hasOwnProperty("经济舱TBR") ? result["经济舱TBR"] * 2 : 0)
  4633. // var txtGWCJSESRS = (result.hasOwnProperty("公务舱JSES") ? result["公务舱JSES"] : 0)
  4634. // var JJCSUITERS = (result.hasOwnProperty("经济舱SUITE") ? result["经济舱SUITE"] : 0)
  4635. // var txtGWCSUITERS = (result.hasOwnProperty("公务舱SUITE") ? result["公务舱SUITE"] : 0)
  4636. // //头等舱人数判断
  4637. // var txtTDCJSESRS = (result.hasOwnProperty("头等舱JSES") ? result["头等舱JSES"] : 0)
  4638. // var txtTDCSUITERS = (result.hasOwnProperty("头等舱SUITE") ? result["头等舱SUITE"] : 0)
  4639. // var txtJJCJSESRS = (result.hasOwnProperty("经济舱JSES") ? result["经济舱JSES"] : 0)
  4640. // //console.log(txtJJCSGRRS, lblGWCSGRRS, txtJJCTBRRS, txtGWCJSESRS, JJCSUITERS, txtGWCSUITERS, 'test');
  4641. // if (txtJJCSGRRS > 0) {
  4642. // rightCheckArr.push('经济舱 SGR');
  4643. // }
  4644. // if (lblGWCSGRRS > 0) {
  4645. // rightCheckArr.push('公务舱 SGR');
  4646. // }
  4647. // if (txtJJCTBRRS > 0) {
  4648. // rightCheckArr.push('经济舱 TBR');
  4649. // }
  4650. // if (txtGWCJSESRS > 0) {
  4651. // rightCheckArr.push('公务舱 JS/ES');
  4652. // }
  4653. // if (JJCSUITERS > 0) {
  4654. // rightCheckArr.push('经济舱 SUITE');
  4655. // }
  4656. // if (txtGWCSUITERS > 0) {
  4657. // rightCheckArr.push('公务舱 SUITE');
  4658. // }
  4659. // //头等舱人数判断
  4660. // if (txtTDCJSESRS > 0) {
  4661. // rightCheckArr.push('头等舱 JS/ES');
  4662. // }
  4663. // if (txtTDCSUITERS > 0) {
  4664. // rightCheckArr.push('头等舱 SUITE');
  4665. // }
  4666. // if (txtJJCJSESRS > 0) {
  4667. // rightCheckArr.push('经济舱 JS/ES');
  4668. // }
  4669. rightCheckArr.push('团组预算明细');
  4670. rightCheckArr = [...new Set(rightCheckArr)];
  4671. try {
  4672. //console.log('rightCheckArr', rightCheckArr);
  4673. this.CheckBoxListSelect.filter(item => item.cbType == 'Right')[0].cbValues = rightCheckArr;
  4674. } catch (e) { }
  4675. // this.cabinDatal[0].sheetInfo[0].toll = txtJJCTBRRS;
  4676. // this.cabinDatal[1].sheetInfo[0].toll = txtJJCSGRRS;
  4677. // this.cabinDatal[2].sheetInfo[0].toll = lblGWCSGRRS;
  4678. // this.cabinDatal[3].sheetInfo[0].toll = txtGWCJSESRS;
  4679. // this.cabinDatal[4].sheetInfo[0].toll = txtGWCSUITERS;
  4680. // this.cabinDatal[5].sheetInfo[0].toll = JJCSUITERS;
  4681. // //头等舱人数
  4682. // this.cabinDatal[6].sheetInfo[0].toll = txtTDCJSESRS;
  4683. // this.cabinDatal[7].sheetInfo[0].toll = txtTDCSUITERS;
  4684. // this.cabinDatal[8].sheetInfo[0].toll = txtJJCJSESRS;
  4685. this.AGroupCostParameter.djcb = Djsum;
  4686. this.AGroupCostParameter.gwcb = GWsum;
  4687. this.AGroupCostParameter.lyjcb = LYJsum;
  4688. this.AGroupCostParameter.sgrcb = SGRsum;
  4689. this.AGroupCostParameter.tbrcb = TBRsum;
  4690. this.AGroupCostParameter.jsescb = JSESsum;
  4691. this.AGroupCostParameter.suitecb = SUITEsum;
  4692. var leftSum = this.OtherCost();
  4693. let JJCSGR = (leftSum + Number(this.AGroupCostParameter.sgrcb) + Number(this.AGroupCostParameter.jjccb)).toFixed(2);
  4694. let JJCTBR = (leftSum + (Number(this.AGroupCostParameter.tbrcb) / 2) + Number(this.AGroupCostParameter.jjccb)).toFixed(2);
  4695. let JJCSUITE = (leftSum + Number(this.AGroupCostParameter.suitecb) + Number(this.AGroupCostParameter.jjccb)).toFixed(2);
  4696. let GWCSUITE = (leftSum + Number(this.AGroupCostParameter.suitecb) + Number(this.AGroupCostParameter.gwccb)).toFixed(2);
  4697. let GWCSGR = (leftSum + Number(this.AGroupCostParameter.sgrcb) + Number(this.AGroupCostParameter.gwccb)).toFixed(2);
  4698. let GWCJSES = (leftSum + Number(this.AGroupCostParameter.jsescb) + Number(this.AGroupCostParameter.gwccb)).toFixed(2);
  4699. //头等舱金额计算
  4700. let TDCJSES = (leftSum + Number(this.AGroupCostParameter.jsescb) + Number(this.AGroupCostParameter.tdccb)).toFixed(2);
  4701. let TDCSUITES = (leftSum + Number(this.AGroupCostParameter.suitecb) + Number(this.AGroupCostParameter.tdccb)).toFixed(2);
  4702. let JJCJSES = (leftSum + Number(this.AGroupCostParameter.jsescb) + Number(this.AGroupCostParameter.jjccb)).toFixed(2);
  4703. ////////console.log(JJCSGR, JJCTBR, JJCSUITE, GWCSUITE, GWCSGR, GWCJSES, '666--------------------------');
  4704. var rightSum = 0;
  4705. this.OtherCostPropertyBJ.forEach((x) => {
  4706. rightSum += Number(that.calculateDRBJ(x));
  4707. })
  4708. let JJCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('jjc')) + Number(that.calculateDRBJ('sgr'))).toFixed(2);
  4709. let JJCTBRDRBJ = (rightSum + (Number(that.calculateDRBJ('tbr')) / 2) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  4710. let JJCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  4711. let GWCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  4712. let GWCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('sgr')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  4713. let GWCJSESDRBJ = (rightSum + Number(that.calculateDRBJ('jses')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  4714. //头等舱单人报价
  4715. let TDCJSESDRBJ = (rightSum + Number(that.calculateDRBJ('jses')) + Number(that.calculateDRBJ('tdc'))).toFixed(2);
  4716. let TDCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('tdc'))).toFixed(2);
  4717. let JJCJSESDRBJ = (rightSum + Number(that.calculateDRBJ('jses')) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  4718. this.cabinDatal[0].sheetInfo[0].costPerson = JJCTBR;
  4719. this.cabinDatal[0].sheetInfo[0].singleQuote = JJCTBRDRBJ;
  4720. this.cabinDatal[1].sheetInfo[0].costPerson = JJCSGR;
  4721. this.cabinDatal[1].sheetInfo[0].singleQuote = JJCSGRDRBJ;
  4722. this.cabinDatal[2].sheetInfo[0].costPerson = GWCSGR;
  4723. this.cabinDatal[2].sheetInfo[0].singleQuote = GWCSGRDRBJ;
  4724. this.cabinDatal[3].sheetInfo[0].costPerson = GWCJSES;
  4725. this.cabinDatal[3].sheetInfo[0].singleQuote = GWCJSESDRBJ;
  4726. this.cabinDatal[4].sheetInfo[0].costPerson = GWCSUITE;
  4727. this.cabinDatal[4].sheetInfo[0].singleQuote = GWCSUITEDRBJ;
  4728. this.cabinDatal[5].sheetInfo[0].costPerson = JJCSUITE;
  4729. this.cabinDatal[5].sheetInfo[0].singleQuote = JJCSUITEDRBJ;
  4730. //头等舱费用信息
  4731. this.cabinDatal[6].sheetInfo[0].costPerson = TDCJSES;
  4732. this.cabinDatal[6].sheetInfo[0].singleQuote = TDCJSESDRBJ;
  4733. this.cabinDatal[7].sheetInfo[0].costPerson = TDCSUITES;
  4734. this.cabinDatal[7].sheetInfo[0].singleQuote = TDCSUITEDRBJ;
  4735. this.cabinDatal[8].sheetInfo[0].costPerson = JJCJSES;
  4736. this.cabinDatal[8].sheetInfo[0].singleQuote = JJCJSESDRBJ;
  4737. let groupCosts = 0;
  4738. let gtroupQuotes = 0;
  4739. for (var i = 0; i < this.cabinDatal.length; i++) {
  4740. var forNumber = Number(this.cabinDatal[i].sheetInfo[0]['toll']);
  4741. if (!isNaN(forNumber) && forNumber > 0) {
  4742. groupCosts += (Number(this.cabinDatal[i].sheetInfo[0]['costPerson']) * forNumber);
  4743. gtroupQuotes += (Number(this.cabinDatal[i].sheetInfo[0]['singleQuote']) * forNumber);
  4744. }
  4745. }
  4746. if (this.costTypevalue == 'B') {
  4747. for (var i = 0; i < this.BcabinDatal.length; i++) {
  4748. var forNumber = Number(this.BcabinDatal[i].sheetInfo[0]['toll']);
  4749. if (!isNaN(forNumber) && forNumber > 0) {
  4750. groupCosts += (Number(this.BcabinDatal[i].sheetInfo[0]['costPerson']) * forNumber);
  4751. gtroupQuotes += (Number(this.BcabinDatal[i].sheetInfo[0]['singleQuote']) * forNumber);
  4752. }
  4753. }
  4754. }
  4755. let groupProfit = gtroupQuotes - groupCosts;
  4756. var cabinDatalLast = this.cabinDatal.filter(function (x) {
  4757. return x.label == '团组预算明细'
  4758. })
  4759. groupCosts = groupCosts.toFixed(2);
  4760. gtroupQuotes = gtroupQuotes.toFixed(2);
  4761. groupProfit = groupProfit.toFixed(2);
  4762. cabinDatalLast[0].sheetInfo[0]['groupCosts'] = groupCosts;
  4763. cabinDatalLast[0].sheetInfo[0]['gtroupQuotes'] = gtroupQuotes;
  4764. cabinDatalLast[0].sheetInfo[0]['groupProfit'] = groupProfit;
  4765. //costTypeHotelNumbers{
  4766. // "sgr": 0,
  4767. // "tbr": 0,
  4768. // "jses": 0,
  4769. // "suite": 0,
  4770. // "type": "Default",
  4771. // "diid": 0,
  4772. // id: 0,
  4773. // }
  4774. ////////console.log(groupCosts, gtroupQuotes, groupProfit, 'groupCosts, gtroupQuotes, groupProfit');
  4775. },
  4776. OtherCost() {
  4777. // txtVisaCost.Text +txtHCPCB.Text + txtCPCB.Text
  4778. // txtBXCB.Text +txtHSCB.Text) +lblDJDRCB.Text + lblGWDRCD.Text + lblLYJDRCB.Text
  4779. var that = this;
  4780. let sum = 0;
  4781. this.OtherCostProperty.forEach((x) => {
  4782. var param = that.AGroupCostParameter[x];
  4783. if (param != undefined) {
  4784. sum += Number(param);
  4785. }
  4786. })
  4787. return sum;
  4788. },
  4789. BOtherCost() {
  4790. // txtVisaCost.Text +txtHCPCB.Text + txtCPCB.Text
  4791. // txtBXCB.Text +txtHSCB.Text) +lblDJDRCB.Text + lblGWDRCD.Text + lblLYJDRCB.Text
  4792. var that = this;
  4793. let sum = 0;
  4794. this.OtherCostProperty.forEach((x) => {
  4795. var param;
  4796. if (x == 'visaCB' || x == 'bxcb') {
  4797. param = that.AGroupCostParameter[x];
  4798. } else {
  4799. param = that.BGroupCostParameter[x];
  4800. }
  4801. if (param != undefined) {
  4802. sum += Number(param);
  4803. }
  4804. })
  4805. return sum;
  4806. },
  4807. matchRooms(hotelRooms, flights, roomTypes, flightType, result) {
  4808. for (let roomType of roomTypes) {
  4809. while (hotelRooms[roomType] > 0 && flights[flightType] > 0) {
  4810. hotelRooms[roomType]--;
  4811. flights[flightType]--;
  4812. if (roomType === "TBR") {
  4813. flights[flightType]--; //双人间在减少1
  4814. }
  4815. if (result.hasOwnProperty(flightType + roomType)) {
  4816. result[flightType + roomType]++;
  4817. } else {
  4818. result[flightType + roomType] = 1;
  4819. }
  4820. }
  4821. }
  4822. },
  4823. NumberSetTime(number, index) {
  4824. //console.log(number, index, this.grouptitleinfo.visitStartDate);
  4825. number = parseInt(number);
  4826. if (!isNaN(number)) {
  4827. var time = this.addOneDay(this.grouptitleinfo.visitStartDate, number - 1)
  4828. this.tableData[index].date = time;
  4829. } else {
  4830. this.tableData[index].date = '';
  4831. this.tableData[index].day = '';
  4832. }
  4833. },
  4834. addOneDay(dateString, number) {
  4835. if (!dateString) {
  4836. return "";
  4837. }
  4838. let date = new Date(dateString);
  4839. date.setDate(date.getDate() + number);
  4840. let year = date.getFullYear();
  4841. let month = date.getMonth() + 1;
  4842. let day = date.getDate();
  4843. month = month < 10 ? '0' + month : month;
  4844. day = day < 10 ? '0' + day : day;
  4845. return `${year}-${month}-${day}`;
  4846. },
  4847. costTypeSelect(val) {
  4848. //////console.log('costTypeSelect--------------------------------------------------------', val);
  4849. },
  4850. async formVerify() {
  4851. return new Promise((resolve, reject) => {
  4852. var forFormList = [];
  4853. if (this.costTypevalue == 'A') {
  4854. forFormList = ['inputs', 'DHotel'];
  4855. } else {
  4856. forFormList = ['inputs', 'AHotel', 'Asection', 'BHotel', 'Bsection'];
  4857. }
  4858. var that = this;
  4859. for (var i = 0; i < forFormList.length; i++) {
  4860. that.$refs[forFormList[i]].validate((valid) => {
  4861. if (valid) {
  4862. } else {
  4863. resolve(valid);
  4864. }
  4865. });
  4866. }
  4867. resolve(true);
  4868. })
  4869. },
  4870. clearFormVerify() {
  4871. var forFormList = ['inputs', 'AHotel', 'Asection', 'BHotel', 'Bsection', 'DHotel'];
  4872. this.$nextTick(() => {
  4873. for (var i = 0; i < forFormList.length; i++) {
  4874. this.$refs[forFormList[i]].resetFields();
  4875. }
  4876. })
  4877. },
  4878. topcheckboxChange(val, label) {
  4879. // //console.log(val, label, 'topcheckboxChangeval');
  4880. var that = this;
  4881. if (!val) {
  4882. this.$confirm('此操作将清空整列数据, 是否继续?', '提示', {
  4883. confirmButtonText: '确定',
  4884. cancelButtonText: '取消',
  4885. type: 'warning'
  4886. }).then(() => {
  4887. if (label == 'SGR') {
  4888. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].sgr = 0
  4889. }
  4890. if (label == 'TBR') {
  4891. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].tbr = 0
  4892. }
  4893. if (label == 'JS/ES') {
  4894. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].jses = 0
  4895. }
  4896. if (label == 'SUITE') {
  4897. this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0].suite = 0
  4898. }
  4899. if (label == 'EF') {
  4900. that.CheckBoxListSelect.forEach(x => {
  4901. if (x.cbType == 'Top') {
  4902. if (x.cbValues.includes("EFR")) {
  4903. var index = x.cbValues.indexOf("EFR");
  4904. if (index > -1) {
  4905. x.cbValues.splice(index, 1);
  4906. }
  4907. }
  4908. }
  4909. });
  4910. var fliterList = that.tableLabel.filter(x => x.label == "EFR");
  4911. if (fliterList.length != 0) {
  4912. var obj = {
  4913. "diid": that.diid,
  4914. "day": "-",
  4915. "date": "",
  4916. "itin": "",
  4917. "carType": "",
  4918. "carCost": "",
  4919. "carNumber": "",
  4920. "carTiming": "",
  4921. "tgs": "",
  4922. "tgwh": "",
  4923. "tgn": "",
  4924. "tgof": "",
  4925. "tgm": "",
  4926. "tga": "",
  4927. "tgtf": "",
  4928. "tgef": "",
  4929. "cfs": "",
  4930. "cfm": "",
  4931. "cfof": "",
  4932. "b": "",
  4933. "l": "",
  4934. "d": "",
  4935. "tbr": "",
  4936. "sgr": "",
  4937. "jS_ES": "",
  4938. "suite": "",
  4939. "accon": "",
  4940. "tv": "",
  4941. "iL": "",
  4942. "if": "",
  4943. "ef": "",
  4944. "b_R_F": "",
  4945. "te": "",
  4946. "tgTips": "",
  4947. "drvTips": "",
  4948. "pc": "",
  4949. "tlf": "",
  4950. "ect": "",
  4951. "id": 1,
  4952. "gwCount": "",
  4953. "fyCount": "",
  4954. "efr": "",
  4955. };
  4956. var prop = fliterList[0].prop;
  4957. var initval = obj[prop];
  4958. for (var i = 0; i < that.tableData.length; i++) {
  4959. that.tableData[i][prop] = initval;
  4960. }
  4961. //////console.log(that.tableData, 'that.tableData数据');
  4962. }
  4963. }
  4964. //////console.log('确定清空数据');
  4965. var fliterList = this.sumTopPrice.filter(x => x.label == label);
  4966. if (fliterList.length != 0) {
  4967. fliterList[0].Aprice = 0;
  4968. fliterList[0].Bprice = 0;
  4969. }
  4970. fliterList = that.tableLabel.filter(x => x.label == label);
  4971. if (fliterList.length != 0) {
  4972. var obj = {
  4973. "diid": that.diid,
  4974. "day": "-",
  4975. "date": "",
  4976. "itin": "",
  4977. "carType": "",
  4978. "carCost": "",
  4979. "carNumber": "",
  4980. "carTiming": "",
  4981. "tgs": "",
  4982. "tgwh": "",
  4983. "tgn": "",
  4984. "tgof": "",
  4985. "tgm": "",
  4986. "tga": "",
  4987. "tgtf": "",
  4988. "tgef": "",
  4989. "cfs": "",
  4990. "cfm": "",
  4991. "cfof": "",
  4992. "b": "",
  4993. "l": "",
  4994. "d": "",
  4995. "tbr": "",
  4996. "sgr": "",
  4997. "jS_ES": "",
  4998. "suite": "",
  4999. "accon": "",
  5000. "tv": "",
  5001. "iL": "",
  5002. "if": "",
  5003. "ef": "",
  5004. "b_R_F": "",
  5005. "te": "",
  5006. "tgTips": "",
  5007. "drvTips": "",
  5008. "pc": "",
  5009. "tlf": "",
  5010. "ect": "",
  5011. "id": 1,
  5012. "gwCount": "",
  5013. "fyCount": "",
  5014. "efr": "",
  5015. };
  5016. var prop = fliterList[0].prop;
  5017. var initval = obj[prop];
  5018. for (var i = 0; i < that.tableData.length; i++) {
  5019. that.tableData[i][prop] = initval;
  5020. }
  5021. //////console.log(that.tableData, 'that.tableData数据');
  5022. }
  5023. this.$message({
  5024. message: '已清除!',
  5025. type: 'success',
  5026. offset: 50
  5027. });
  5028. }).catch(() => {
  5029. this.$message({
  5030. type: 'info',
  5031. message: '已取消操作'
  5032. });
  5033. if (!that.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.includes(label)) {
  5034. that.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.push(label);
  5035. }
  5036. });
  5037. } else {
  5038. if (label == 'EF') {
  5039. that.CheckBoxListSelect.forEach(x => {
  5040. if (x.cbType == 'Top') {
  5041. if (!x.cbValues.includes("EFR")) {
  5042. x.cbValues.push("EFR");
  5043. }
  5044. }
  5045. });
  5046. }
  5047. }
  5048. },
  5049. GroupIsShare() {
  5050. this.$axios.post('/api/Groups/GroupIsShare', { diid: this.diid }, {
  5051. headers: {
  5052. 'Authorization': this.token,
  5053. }
  5054. }).then(resp => {
  5055. //////console.log(resp.data.data, '------------------------------------');
  5056. if (resp.data.code == 200) {
  5057. this.isShare = resp.data.data.isShare;
  5058. this.$message({
  5059. message: '操作成功!' + resp.data.msg,
  5060. type: 'success'
  5061. });
  5062. } else {
  5063. this.$message.error('操作失败!' + resp.data.msg);
  5064. }
  5065. })
  5066. },
  5067. GetPriceCheckWord() {
  5068. var that = this;
  5069. var airs = [
  5070. ];
  5071. var sgrfilter = this.costTypeHotelNumbers.filter(x => {
  5072. return x.type == 'Default'
  5073. })
  5074. let Bsgrfilter = {};
  5075. if (this.costTypevalue == 'B') {
  5076. sgrfilter = this.costTypeHotelNumbers.filter(x => {
  5077. return x.type == 'A'
  5078. })
  5079. Bsgrfilter = this.costTypeHotelNumbers.filter(x => {
  5080. return x.type == 'B'
  5081. })
  5082. Bsgrfilter = Bsgrfilter[0];
  5083. }
  5084. sgrfilter = sgrfilter[0];
  5085. let hotelRooms = {
  5086. "SGR": sgrfilter.sgr,
  5087. "TBR": sgrfilter.tbr,
  5088. "JSES": sgrfilter.jses,
  5089. "SUITE": sgrfilter.suite
  5090. };
  5091. let flights = {
  5092. "经济舱": this.AGroupCostParameter.jjcrs,
  5093. "公务舱": this.AGroupCostParameter.gwcrs
  5094. };
  5095. let result = {};
  5096. for (let flight of ["经济舱", "公务舱"]) {
  5097. if (flight === "经济舱") {
  5098. this.matchRooms(hotelRooms, flights, ["SGR", "TBR", "JSES", "SUITE"], flight, result);
  5099. } else if (flight === "公务舱") {
  5100. this.matchRooms(hotelRooms, flights, ["SUITE", "JSES", "SGR", "TBR"], flight, result);
  5101. }
  5102. }
  5103. if (this.costTypevalue == 'B') {
  5104. let BhotelRooms = {
  5105. "SGR": Bsgrfilter.sgr,
  5106. "TBR": Bsgrfilter.tbr,
  5107. "JSES": Bsgrfilter.jses,
  5108. "SUITE": Bsgrfilter.suite
  5109. };
  5110. let Bflights = {
  5111. "经济舱": this.BGroupCostParameter.jjcrs,
  5112. "公务舱": this.BGroupCostParameter.gwcrs
  5113. };
  5114. let Bresult = {};
  5115. for (let flight of ["经济舱", "公务舱"]) {
  5116. if (flight === "经济舱") {
  5117. this.matchRooms(BhotelRooms, Bflights, ["SGR", "TBR", "JSES", "SUITE"], flight, Bresult);
  5118. } else if (flight === "公务舱") {
  5119. this.matchRooms(BhotelRooms, Bflights, ["SUITE", "JSES", "SGR", "TBR"], flight, Bresult);
  5120. }
  5121. }
  5122. var BtxtJJCSGRRS = (Bresult.hasOwnProperty("经济舱SGR") ? Bresult["经济舱SGR"] : 0)
  5123. var BlblGWCSGRRS = (Bresult.hasOwnProperty("公务舱SGR") ? Bresult["公务舱SGR"] : 0)
  5124. var BtxtJJCTBRRS = (Bresult.hasOwnProperty("经济舱TBR") ? Bresult["经济舱TBR"] * 2 : 0)
  5125. var BtxtGWCJSESRS = (Bresult.hasOwnProperty("公务舱JSES") ? Bresult["公务舱JSES"] : 0)
  5126. var BJJCSUITERS = (Bresult.hasOwnProperty("经济舱SUITE") ? Bresult["经济舱SUITE"] : 0)
  5127. var BtxtGWCSUITERS = (Bresult.hasOwnProperty("公务舱SUITE") ? Bresult["公务舱SUITE"] : 0)
  5128. var BrightSum = 0;
  5129. this.OtherCostPropertyBJ.forEach((x) => {
  5130. BrightSum += Number(that.BcalculateDRBJ(x));
  5131. })
  5132. let BJJCSGRDRBJ = BrightSum + Number(that.BcalculateDRBJ('jjc')) + Number(that.BcalculateDRBJ('sgr'));
  5133. let BJJCTBRDRBJ = BrightSum + (Number(that.BcalculateDRBJ('tbr')) / 2) + Number(that.BcalculateDRBJ('jjc'));
  5134. let BJJCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('jjc'));
  5135. let BGWCSUITEDRBJ = BrightSum + Number(that.BcalculateDRBJ('suite')) + Number(that.BcalculateDRBJ('gwc'));
  5136. let BGWCSGRDRBJ = BrightSum + Number(that.BcalculateDRBJ('sgr')) + Number(that.BcalculateDRBJ('gwc'));
  5137. let BGWCJSESDRBJ = BrightSum + Number(that.BcalculateDRBJ('jses')) + Number(that.BcalculateDRBJ('gwc'));
  5138. airs.push({
  5139. "code": "JJCTBR",
  5140. "number": BtxtJJCTBRRS,
  5141. "price": BJJCTBRDRBJ,
  5142. "costType": "B"
  5143. });
  5144. airs.push({
  5145. "code": "JJCSGR",
  5146. "number": BtxtJJCSGRRS,
  5147. "price": BJJCSGRDRBJ,
  5148. "costType": "B"
  5149. });
  5150. airs.push({
  5151. "code": "GWCSGR",
  5152. "number": BlblGWCSGRRS,
  5153. "price": BGWCSGRDRBJ,
  5154. "costType": "B"
  5155. });
  5156. airs.push({
  5157. "code": "GWCJSES",
  5158. "number": BtxtGWCJSESRS,
  5159. "price": BGWCJSESDRBJ,
  5160. "costType": "B"
  5161. });
  5162. airs.push({
  5163. "code": "GWCSUITE",
  5164. "number": BtxtGWCSUITERS,
  5165. "price": BGWCSUITEDRBJ,
  5166. "costType": "B"
  5167. });
  5168. airs.push({
  5169. "code": "JJCSUITE",
  5170. "number": BJJCSUITERS,
  5171. "price": BJJCSUITEDRBJ,
  5172. "costType": "B"
  5173. });
  5174. }
  5175. var txtJJCSGRRS = (result.hasOwnProperty("经济舱SGR") ? result["经济舱SGR"] : 0)
  5176. var lblGWCSGRRS = (result.hasOwnProperty("公务舱SGR") ? result["公务舱SGR"] : 0)
  5177. var txtJJCTBRRS = (result.hasOwnProperty("经济舱TBR") ? result["经济舱TBR"] * 2 : 0)
  5178. var txtGWCJSESRS = (result.hasOwnProperty("公务舱JSES") ? result["公务舱JSES"] : 0)
  5179. var JJCSUITERS = (result.hasOwnProperty("经济舱SUITE") ? result["经济舱SUITE"] : 0)
  5180. var txtGWCSUITERS = (result.hasOwnProperty("公务舱SUITE") ? result["公务舱SUITE"] : 0)
  5181. var rightSum = 0;
  5182. this.OtherCostPropertyBJ.forEach((x) => {
  5183. rightSum += Number(that.calculateDRBJ(x));
  5184. })
  5185. let JJCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('jjc')) + Number(that.calculateDRBJ('sgr'))).toFixed(2);
  5186. let JJCTBRDRBJ = (rightSum + (Number(that.calculateDRBJ('tbr')) / 2) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  5187. let JJCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('jjc'))).toFixed(2);
  5188. let GWCSUITEDRBJ = (rightSum + Number(that.calculateDRBJ('suite')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5189. let GWCSGRDRBJ = (rightSum + Number(that.calculateDRBJ('sgr')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5190. let GWCJSESDRBJ = (rightSum + Number(that.calculateDRBJ('jses')) + Number(that.calculateDRBJ('gwc'))).toFixed(2);
  5191. airs.push({
  5192. "code": "JJCTBR",
  5193. "number": txtJJCTBRRS,
  5194. "price": JJCTBRDRBJ,
  5195. "costType": "A"
  5196. });
  5197. airs.push({
  5198. "code": "JJCSGR",
  5199. "number": txtJJCSGRRS,
  5200. "price": JJCSGRDRBJ,
  5201. "costType": "A"
  5202. });
  5203. airs.push({
  5204. "code": "GWCSGR",
  5205. "number": lblGWCSGRRS,
  5206. "price": GWCSGRDRBJ,
  5207. "costType": "A"
  5208. });
  5209. airs.push({
  5210. "code": "GWCJSES",
  5211. "number": txtGWCJSESRS,
  5212. "price": GWCJSESDRBJ,
  5213. "costType": "A"
  5214. });
  5215. airs.push({
  5216. "code": "GWCSUITE",
  5217. "number": txtGWCSUITERS,
  5218. "price": GWCSUITEDRBJ,
  5219. "costType": "A"
  5220. });
  5221. airs.push({
  5222. "code": "JJCSUITE",
  5223. "number": JJCSUITERS,
  5224. "price": JJCSUITEDRBJ,
  5225. "costType": "A"
  5226. });
  5227. var that = this;
  5228. this.$axios.post('/api/Groups/ExportPriceCheckWordFile', { diid: this.diid, airs: airs }, {
  5229. headers: {
  5230. 'Authorization': this.token,
  5231. }
  5232. }).then(resp => {
  5233. //////console.log(resp, '------------------------------------');
  5234. try {
  5235. if (resp.data.code != 200) {
  5236. throw resp.data.msg;
  5237. }
  5238. var file = resp.data.data;
  5239. that.fileDownload(file.data, file.strFileName);
  5240. } catch (error) {
  5241. this.$message.error('操作失败!' + error.message);
  5242. }
  5243. })
  5244. },
  5245. fileDownload(data, filename) {
  5246. let blob = this.base64toBlob(data);
  5247. let link = document.createElement('a');
  5248. link.href = window.URL.createObjectURL(blob);
  5249. link.download = filename;
  5250. link.click();
  5251. },
  5252. base64toBlob(base64, type = 'application/octet-stream') {
  5253. const bstr = atob(base64);
  5254. let n = bstr.length;
  5255. const u8arr = new Uint8Array(n);
  5256. while (n--) {
  5257. u8arr[n] = bstr.charCodeAt(n);
  5258. }
  5259. return new Blob([u8arr], { type });
  5260. },
  5261. async GetGroupCostExcel() {
  5262. //////console.log(this.titleText, 'this.titleText');
  5263. var isTrue = await this.save();
  5264. if (!isTrue) {
  5265. this.$message.error('请检查数据!');
  5266. return;
  5267. }
  5268. var that = this;
  5269. var group = this.options.filter(function (x) {
  5270. return x.id == that.diid
  5271. })
  5272. if (group.length == 0) {
  5273. this.$message.error('请选择团组!' + resp.data.msg);
  5274. return;
  5275. }
  5276. var resultCurr = Number(this.AGroupCostParameter.currency);
  5277. if (isNaN(resultCurr)) {
  5278. resultCurr = this.AGroupCostParameter.currency;
  5279. } else {
  5280. for (let index = 0; index < this.currencyOption.length; index++) {
  5281. if (this.currencyOption[index].currencyId == resultCurr) {
  5282. resultCurr = this.currencyOption[index].currencyCode;
  5283. }
  5284. }
  5285. }
  5286. var data = {
  5287. diid: this.diid,
  5288. costType: this.costTypevalue,
  5289. title: {
  5290. groupNumber: Number(this.grouptitleinfo.visitPNumber),
  5291. teamName: group[0].groupName,
  5292. tax: this.AGroupCostParameter.tax,
  5293. currency: resultCurr,
  5294. rate: this.AGroupCostParameter.rate
  5295. },
  5296. leftInfo: {
  5297. },
  5298. rightInfo: {
  5299. },
  5300. titleModel: {
  5301. }
  5302. };
  5303. var leftObject = this.GetDomLeftValue();
  5304. var rightObject = this.GetDomRightValue();
  5305. data.leftInfo = leftObject;
  5306. data.rightInfo = rightObject;
  5307. data.titleModel = this.titleText;
  5308. //////console.log(data);
  5309. this.$axios.post('/api/Groups/ExportGroupCostExcelFile', data, {
  5310. headers: {
  5311. 'Authorization': this.token,
  5312. }
  5313. }).then(resp => {
  5314. //////console.log(resp, '------------------------------------');
  5315. if (resp.data.code == 200) {
  5316. var file = resp.data.data;
  5317. that.fileDownload(file.data, file.strFileName);
  5318. } else {
  5319. that.$message.error('操作失败!' + resp.data.msg);
  5320. }
  5321. })
  5322. },
  5323. GetDomLeftValue() {
  5324. var AllResult = [];
  5325. var boxDoms = document.querySelectorAll(".sheet-box .biaoge");
  5326. var titleClassName = 'el-table__header-wrapper';
  5327. var bodyClassName = 'el-table__body-wrapper';
  5328. var result = [];
  5329. for (var i = 0; i < boxDoms.length; i++) {
  5330. var chiBoxs = boxDoms[i].children[0].children;
  5331. var info = {};
  5332. info.index = i;
  5333. for (var j = 0; j < chiBoxs.length; j++) {
  5334. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5335. info.title = chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5336. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5337. var title = info.title;
  5338. if (title.indexOf('酒店') != -1 || title.indexOf('地接') != -1 || title.indexOf('公务单人') != -1 || title.indexOf('零用金') != -1) {
  5339. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5340. } else {
  5341. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input').value : '0';
  5342. }
  5343. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5344. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input').value : '0';
  5345. }
  5346. }
  5347. result.push(info)
  5348. }
  5349. AllResult.push({ type: "A", leftinfoNumber: result })
  5350. if (this.costTypevalue == 'B') {
  5351. var boxDoms = document.querySelectorAll(".sheet-box .biaogeB");
  5352. var result = [];
  5353. for (var i = 0; i < boxDoms.length; i++) {
  5354. var chiBoxs = boxDoms[i].children[0].children;
  5355. var info = {};
  5356. info.index = i;
  5357. for (var j = 0; j < chiBoxs.length; j++) {
  5358. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5359. info.title = chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5360. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5361. var title = info.title;
  5362. if (title.indexOf('酒店') != -1 || title.indexOf('地接') != -1 || title.indexOf('公务单人') != -1 || title.indexOf('零用金') != -1) {
  5363. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5364. } else {
  5365. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('input').value : '0';
  5366. }
  5367. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5368. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('input').value : '0';
  5369. }
  5370. }
  5371. result.push(info)
  5372. }
  5373. AllResult.push({ type: "B", leftinfoNumber: result })
  5374. }
  5375. return AllResult;
  5376. },
  5377. GetDomRightValue() {
  5378. var AllResult = [];
  5379. var boxDoms = document.querySelectorAll(".cabin-li .biaoge");
  5380. var titleClassName = 'el-table__header-wrapper';
  5381. var bodyClassName = 'el-table__body-wrapper';
  5382. var result = [];
  5383. for (var i = 0; i < boxDoms.length - 1; i++) {
  5384. var chiBoxs = boxDoms[i].children[1].children;
  5385. var info = {};
  5386. info.index = i;
  5387. for (var j = 0; j < chiBoxs.length; j++) {
  5388. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5389. info.title = boxDoms[i].children[0].innerText + chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5390. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5391. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5392. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5393. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span').innerText : '0';
  5394. info.bj = chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span').innerText : '0';
  5395. }
  5396. }
  5397. result.push(info)
  5398. }
  5399. AllResult.push({ type: "A", rightInfoNumber: result })
  5400. if (this.costTypevalue == 'B') {
  5401. var boxDoms = document.querySelectorAll(".cabin-li .biaogeB");
  5402. var result = [];
  5403. for (var i = 0; i < boxDoms.length; i++) {
  5404. var chiBoxs = boxDoms[i].children[1].children;
  5405. var info = {};
  5406. info.index = i;
  5407. for (var j = 0; j < chiBoxs.length; j++) {
  5408. if (chiBoxs[j].className.indexOf(titleClassName) != -1) {
  5409. info.title = boxDoms[i].children[0].innerText + chiBoxs[j].querySelectorAll('thead tr th')[0].innerText;
  5410. } else if (chiBoxs[j].className.indexOf(bodyClassName) != -1) {
  5411. info.cb = chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[0].querySelector('span').innerText : '0';
  5412. info.rs = chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input') ? chiBoxs[j].querySelectorAll('tbody tr td')[1].querySelector('input').value : '0';
  5413. info.xs = chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[2].querySelector('span').innerText : '0';
  5414. info.bj = chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span') ? chiBoxs[j].querySelectorAll('tbody tr td')[3].querySelector('span').innerText : '0';
  5415. }
  5416. }
  5417. result.push(info)
  5418. }
  5419. AllResult.push({ type: "B", rightInfoNumber: result })
  5420. }
  5421. return AllResult;
  5422. },
  5423. setLastTitle(list) {
  5424. let summaryRow = document.querySelectorAll('.el-table__footer-wrapper .cell');
  5425. for (var i = 0; i < summaryRow.length; i++) {
  5426. let summaryRowOne = summaryRow[i];
  5427. if (summaryRowOne.innerHTML == '总计:' || summaryRowOne.innerHTML == '——') {
  5428. } else {
  5429. summaryRowOne.setAttribute('title', list[i]);
  5430. }
  5431. }
  5432. },
  5433. GetClientWord() {
  5434. var that = this;
  5435. var data = {
  5436. "diid": this.diid,
  5437. "costType": this.costTypevalue,
  5438. "rate": this.AGroupCostParameter.rate,
  5439. "carGuides1": "",
  5440. "meal": "",
  5441. "subsidizedMeals": "",
  5442. "nightRepair": "",
  5443. "attractionsTickets": "",
  5444. "miscellaneousFees": "",
  5445. "aTip": "",
  5446. "tzZCost": "",
  5447. "leftInfo": '',
  5448. };
  5449. var vehicleResult = this.GetDJLableBJ(this.vehicleLables);
  5450. var DJMealResult = this.GetDJLableBJ(this.DJMeal);
  5451. var SubsidizedMealsResult = this.GetDJLableBJ(this.SubsidizedMeals);
  5452. var NightRepairResult = this.GetDJLableBJ(this.NightRepair);
  5453. var AttractionsTicketsResult = this.GetDJLableBJ(this.AttractionsTickets);
  5454. var DJMealResult = this.GetDJLableBJ(this.DJMeal);
  5455. var ATipResult = this.GetDJLableBJ(this.ATipResult);
  5456. data.leftInfo = this.GetDomLeftValue();
  5457. // vehicleLables: ['VF', 'T/G OF', 'T/G S', 'T/G TF', 'C/F OF'],
  5458. // DJMeal: ['B', 'L', 'D'],
  5459. // SubsidizedMeals: ['T/G M', 'C/F M'],
  5460. // NightRepair: ['T/G A'],
  5461. // AttractionsTickets: ['T/G EF', 'EF'],
  5462. // MiscellaneousFees: ['B/R/F', 'TE', 'T/L F'],
  5463. // ATip: ['T/G T', 'DRV T'],
  5464. if (this.costTypevalue === "B") {
  5465. data.carGuides1 = "RMB A段费用 " + vehicleResult.sum + " B段费用 RMB" + vehicleResult.Bsum;
  5466. data.meal = "RMB A段费用 " + DJMealResult.sum + " B段费用 RMB" + DJMealResult.Bsum;
  5467. data.subsidizedMeals = "RMB A段费用 " + SubsidizedMealsResult.sum + " B段费用 RMB" + SubsidizedMealsResult.Bsum;
  5468. data.nightRepair = "RMB A段费用 " + NightRepairResult.sum + " B段费用 RMB" + NightRepairResult.Bsum;
  5469. data.attractionsTickets = "RMB A段费用 " + AttractionsTicketsResult.sum + " B段费用 RMB" + AttractionsTicketsResult.Bsum;
  5470. data.miscellaneousFees = "RMB A段费用 " + DJMealResult.sum + " B段费用 RMB" + DJMealResult.Bsum;
  5471. data.aTip = "RMB A段费用 " + ATipResult.sum + " B段费用 RMB" + ATipResult.Bsum;
  5472. } else {
  5473. data.carGuides1 = "RMB " + vehicleResult.sum;
  5474. data.meal = "RMB " + DJMealResult.sum;
  5475. data.subsidizedMeals = "RMB " + SubsidizedMealsResult.sum;
  5476. data.nightRepair = "RMB " + NightRepairResult.sum;
  5477. data.attractionsTickets = "RMB " + AttractionsTicketsResult.sum;
  5478. data.miscellaneousFees = "RMB " + DJMealResult.sum;
  5479. data.aTip = "RMB " + ATipResult.sum;
  5480. }
  5481. var cabinDatalLast = this.cabinDatal.filter(function (x) {
  5482. return x.label == '团组预算明细'
  5483. })
  5484. data.tzZCost = cabinDatalLast[0].sheetInfo[0].gtroupQuotes;
  5485. this.$axios.post('/api/Groups/ExportClientWordFile', data, {
  5486. headers: {
  5487. 'Authorization': this.token,
  5488. }
  5489. }).then(resp => {
  5490. //////console.log(resp, '------------------------------------');
  5491. if (resp.data.code == 200) {
  5492. var file = resp.data.data;
  5493. that.fileDownload(file.data, file.strFileName);
  5494. } else {
  5495. that.$message.error('操作失败!' + resp.data.msg);
  5496. }
  5497. })
  5498. },
  5499. insertRow(index, rowParam, oper) {
  5500. var that = this;
  5501. var row = {
  5502. "diid": this.diid,
  5503. "day": rowParam.day,
  5504. "date": "",
  5505. "itin": "",
  5506. "carType": "",
  5507. "carCost": "",
  5508. "carNumber": "",
  5509. "carTiming": "",
  5510. "tgs": "",
  5511. "tgwh": "",
  5512. "tgn": "",
  5513. "tgof": "",
  5514. "tgm": "",
  5515. "tga": "",
  5516. "tgtf": "",
  5517. "tgef": "",
  5518. "cfs": "",
  5519. "cfm": "",
  5520. "cfof": "",
  5521. "b": "",
  5522. "l": "",
  5523. "d": "",
  5524. "tbr": "",
  5525. "sgr": "",
  5526. "jS_ES": "",
  5527. "suite": "",
  5528. "accon": "",
  5529. "tv": "",
  5530. "iL": "",
  5531. "if": "",
  5532. "ef": "",
  5533. "b_R_F": "",
  5534. "te": "",
  5535. "tgTips": "",
  5536. "drvTips": "",
  5537. "pc": "",
  5538. "tlf": "",
  5539. "ect": "",
  5540. "id": 1,
  5541. "gwCount": "",
  5542. "fyCount": "",
  5543. "efr": "",
  5544. };
  5545. if (oper == 'UP') {
  5546. if (rowParam.date) {
  5547. row.date = this.addOneDay(rowParam.date, -1);
  5548. }
  5549. that.tableData.splice(index, 0, row)
  5550. } else {
  5551. if (rowParam.date) {
  5552. row.date = this.addOneDay(rowParam.date, 1);
  5553. }
  5554. that.tableData.splice(index + 1, 0, row)
  5555. }
  5556. //////console.log('that.tableData', that.tableData)
  5557. var thisDay = 1;
  5558. for (var i = 0; i < that.tableData.length; i++) {
  5559. //////console.log("iiiiiiiiiiiiiiii", i, Number(that.tableData.day))
  5560. if (Number(that.tableData[i].day) > 0) {
  5561. that.tableData[i].day = thisDay;
  5562. thisDay++;
  5563. }
  5564. }
  5565. },
  5566. Dataformat() {
  5567. var that = this;
  5568. var oldSoure = JSON.stringify(that.tableData);
  5569. var souer = {
  5570. "diid": this.diid,
  5571. "day": "-",
  5572. "date": "",
  5573. "itin": "",
  5574. "carType": "",
  5575. "carCost": 0,
  5576. "carNumber": 0,
  5577. "carTiming": 0,
  5578. "tgs": 0,
  5579. "tgwh": 0,
  5580. "tgn": 0,
  5581. "tgof": 0,
  5582. "tgm": 0,
  5583. "tga": 0,
  5584. "tgtf": 0,
  5585. "tgef": 0,
  5586. "cfs": 0,
  5587. "cfm": 0,
  5588. "cfof": 0,
  5589. "b": 0,
  5590. "l": 0,
  5591. "d": 0,
  5592. "tbr": 0,
  5593. "sgr": 0,
  5594. "jS_ES": 0,
  5595. "suite": 0,
  5596. "accon": "",
  5597. "tv": 0,
  5598. "iL": 0,
  5599. "if": 0,
  5600. "ef": 0,
  5601. "b_R_F": 0,
  5602. "te": 0,
  5603. "tgTips": 0,
  5604. "drvTips": 0,
  5605. "pc": 0,
  5606. "tlf": 0,
  5607. "ect": 0,
  5608. "id": 1,
  5609. "gwCount": "",
  5610. "fyCount": "",
  5611. "efr": "",
  5612. };
  5613. var numberList = [];
  5614. for (var key in souer) {
  5615. if (typeof souer[key] == 'number') {
  5616. numberList.push(key);
  5617. }
  5618. }
  5619. //////console.log(numberList, "numberList!");
  5620. //////console.log(that.tableData, "that.tableData!");
  5621. for (var i = 0; i < that.tableData.length; i++) {
  5622. that.tableData[i].day = that.tableData[i].day.toString();
  5623. for (var j = 0; j < numberList.length; j++) {
  5624. if (that.tableData[i][numberList[j]] === "") {
  5625. //////console.log(i + "行数据异常!", numberList[j]);
  5626. that.tableData[i][numberList[j]] = 0;
  5627. }
  5628. }
  5629. }
  5630. var NewSoure = [...that.tableData];
  5631. that.tableData = JSON.parse(oldSoure);
  5632. return NewSoure;
  5633. },
  5634. dateChange(val, index) {
  5635. const regex = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
  5636. if (!regex.test(val)) {
  5637. this.$message.error('日期格式不正确!应该为YYYY-MM-DD格式!');
  5638. this.tableData[index].date = "";
  5639. }
  5640. },
  5641. GetDJLableBJ(lableList) {
  5642. var that = this;
  5643. var result = { sum: 0, Bsum: 0 };
  5644. if (typeof lableList != "object" || lableList['length'] == undefined) {
  5645. return result
  5646. }
  5647. let Djsum = 0;
  5648. let BDjsum = 0;
  5649. for (var i = 0; i < lableList.length; i++) {
  5650. that.sumTopPrice.forEach(function (item1) {
  5651. if (lableList[i] == item1.label) {
  5652. var Aprice = Number(item1.Aprice);
  5653. if (!isNaN(Aprice)) {
  5654. Djsum += Aprice;
  5655. }
  5656. var Bprice = Number(item1.Bprice);
  5657. if (!isNaN(Bprice)) {
  5658. BDjsum += Bprice;
  5659. }
  5660. }
  5661. })
  5662. }
  5663. Djsum = Djsum * this.AGroupCostParameter.rate * this.AGroupCostParameter.djxs;
  5664. BDjsum = BDjsum * this.AGroupCostParameter.rate * this.BGroupCostParameter.djxs;
  5665. if (isNaN(Djsum)) {
  5666. Djsum = 0;
  5667. }
  5668. if (isNaN(BDjsum)) {
  5669. BDjsum = 0;
  5670. }
  5671. result.sum = Djsum.toFixed(2);
  5672. result.Bsum = BDjsum.toFixed(2);
  5673. return result;
  5674. },
  5675. handleChange(currentValue, oldValue) {
  5676. //////console.log(currentValue, oldValue);
  5677. if (currentValue == undefined) {
  5678. }
  5679. },
  5680. GetWeek(date) {
  5681. if (date) {
  5682. try {
  5683. var myDate = new Date(date);
  5684. var myDay = myDate.getDay();//获取存储当前日期
  5685. var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
  5686. return weekday[myDay];
  5687. } catch (e) {
  5688. //////console.log("时间格式不正确!")
  5689. return "时间格式不正确!";
  5690. }
  5691. }
  5692. return '';
  5693. },
  5694. confirm() {
  5695. debugger;
  5696. this.outerVisible = false;
  5697. if (this.dialogSelectObject == null) {
  5698. this.dialogSelectObject = {};
  5699. }
  5700. if (Object.keys(this.dialogSelectObject).length != 0) {
  5701. const possibleDialogTitles = ['选择车导数据', '导游信息', '选择车数据', '景点信息'];
  5702. const indexBtn = possibleDialogTitles.indexOf(this.DialogTitle);
  5703. if (indexBtn != -1) {
  5704. if (indexBtn == 0) {
  5705. this.bindCD();
  5706. } else if (indexBtn == 1) {
  5707. this.bindDY();
  5708. } else if (indexBtn == 2) {
  5709. this.bindCSJ();
  5710. } else if (indexBtn == 3) {
  5711. this.bindJD();
  5712. }
  5713. }
  5714. }
  5715. this.dialogSelectObject = {};
  5716. },
  5717. bindCD() {
  5718. debugger;
  5719. var offer = this.dialogSelectObject.offer.match(/\d+/g) != null ? Number(this.dialogSelectObject.offer.match(/\d+/g)[0]) : 0;
  5720. var cgCost = this.dialogSelectObject.cgCost.match(/\d+/g) != null ? Number(this.dialogSelectObject.cgCost.match(/\d+/g)[0]) : 0;
  5721. var cgOvertimeFee = this.dialogSelectObject.cgOvertimeFee.match(/\d+/g) != null ? Number(this.dialogSelectObject.cgOvertimeFee.match(/\d+/g)[0]) : 0;
  5722. var overtimeFee = this.dialogSelectObject.overtimeFee.match(/\d+/g) != null ? Number(this.dialogSelectObject.overtimeFee.match(/\d+/g)[0]) : 0;
  5723. var runingTime = this.dialogSelectObject.runingTime.match(/\d+/g) != null ? Number(this.dialogSelectObject.runingTime.match(/\d+/g)[0]) : 0;
  5724. var row = this.tableData[this.rowIndex];
  5725. var carNumber = row.carNumber;
  5726. row['carCost'] = (carNumber * offer).toFixed(2);
  5727. row['tgs'] = cgCost.toFixed(2);
  5728. row['carTiming'] = runingTime.toFixed(2);
  5729. var carType = this.dialogSelectObject.city + "/" + this.dialogSelectObject.carType + "/" + this.dialogSelectObject.serviceType + "\n";
  5730. row['carType'] = carType;
  5731. },
  5732. bindDY() {
  5733. debugger;
  5734. var row = this.tableData[this.rowIndex];
  5735. var tgn = row.tgn;
  5736. var price = this.dialogSelectObject.price.match(/\d+/g) != null ? Number(this.dialogSelectObject.price.match(/\d+/g)[0]) : 0;
  5737. var translationPrice = this.dialogSelectObject.translationPrice.match(/\d+/g) != null ? Number(this.dialogSelectObject.translationPrice.match(/\d+/g)[0]) : 0;
  5738. var when = this.dialogSelectObject.when.match(/\d+/g) != null ? Number(this.dialogSelectObject.when.match(/\d+/g)[0]) : 0;
  5739. row['tgs'] = (tgn * price).toFixed(2);
  5740. row['if'] = translationPrice.toFixed(2);
  5741. row['tgwh'] = when.toFixed(2);
  5742. },
  5743. bindCSJ() {
  5744. debugger;
  5745. var row = this.tableData[this.rowIndex];
  5746. var carType = this.dialogSelectObject.city + "/" + this.dialogSelectObject.carType + "/" + this.dialogSelectObject.serviceType + "\n";
  5747. var toPrice = this.dialogSelectObject.price.match(/\d+/g) != null ? Number(this.dialogSelectObject.price.match(/\d+/g)[0]) : 0;
  5748. var when = this.dialogSelectObject.when.match(/\d+/g) != null ? Number(this.dialogSelectObject.when.match(/\d+/g)[0]) : 0;
  5749. row['carType'] = carType;
  5750. row['carCost'] = toPrice.toFixed(2);
  5751. row['carTiming'] = when.toFixed(2);
  5752. },
  5753. bindJD() {
  5754. debugger;
  5755. var row = this.tableData[this.rowIndex];
  5756. var Price = this.dialogSelectObject.price;
  5757. row['ef'] = Price.toFixed(2);
  5758. },
  5759. QueryRate() {
  5760. var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
  5761. var that = this
  5762. this.$axios({
  5763. method: 'post',
  5764. url: url,
  5765. headers: {
  5766. Authorization: 'Bearer ' + that.token
  5767. },
  5768. data: {
  5769. "portType": 1,
  5770. "diId": this.diid,
  5771. "cTable": 85
  5772. }
  5773. }).then(function (res) {
  5774. if (res.data.code == 200) {
  5775. //汇率
  5776. ////console.log("汇率--", res.data.data);
  5777. that.currencyOption = res.data.data.teamRates;
  5778. }
  5779. })
  5780. },
  5781. changeCurrency(data) {
  5782. ////console.log('data', data);
  5783. for (let index = 0; index < this.currencyOption.length; index++) {
  5784. if (this.currencyOption[index].currencyId == data) {
  5785. this.AGroupCostParameter.rate = this.currencyOption[index].rate;
  5786. break;
  5787. }
  5788. }
  5789. },
  5790. inSelectChangeCheck() {
  5791. ////console.log('inSelectChangeCheck');
  5792. var arr = [];
  5793. var pusharr = [];
  5794. var topArr = [];
  5795. var topPushArr = [];
  5796. if (this.costTypevalue == 'A') {
  5797. var defaultP = this.costTypeHotelNumbers.filter(item => item.type == 'Default')[0];
  5798. if (defaultP.sgr == 0) {
  5799. arr.push('酒店SGR');
  5800. topArr.push('SGR')
  5801. } else {
  5802. pusharr.push('酒店SGR');
  5803. topPushArr.push('SGR')
  5804. }
  5805. if (defaultP.tbr == 0) {
  5806. arr.push('酒店TBR');
  5807. topArr.push('TBR')
  5808. } else {
  5809. pusharr.push('酒店TBR');
  5810. topPushArr.push('TBR')
  5811. }
  5812. if (defaultP.jses == 0) {
  5813. arr.push('酒店JSES');
  5814. topArr.push('JS/ES')
  5815. } else {
  5816. pusharr.push('酒店JSES');
  5817. topPushArr.push('JS/ES')
  5818. }
  5819. if (defaultP.suite == 0) {
  5820. topArr.push('SUITE')
  5821. arr.push('酒店SUITE');
  5822. }
  5823. else {
  5824. pusharr.push('酒店SUITE');
  5825. topPushArr.push('SUITE')
  5826. }
  5827. } else {
  5828. var HotelA = this.costTypeHotelNumbers.filter(item => item.type == 'A')[0];
  5829. var HotelB = this.costTypeHotelNumbers.filter(item => item.type == 'B')[0];
  5830. if (HotelA.sgr == 0 && HotelB.sgr == 0) { arr.push('酒店SGR'); } else {
  5831. pusharr.push('酒店SGR');
  5832. }
  5833. if (HotelA.tbr == 0 && HotelB.tbr == 0) { arr.push('酒店TBR'); } else {
  5834. pusharr.push('酒店TBR');
  5835. }
  5836. if (HotelA.jses == 0 && HotelB.jses == 0) { arr.push('酒店JSES'); } else {
  5837. pusharr.push('酒店JSES');
  5838. }
  5839. if (HotelA.suite == 0 && HotelB.suite == 0) { arr.push('酒店SUITE'); } else {
  5840. pusharr.push('酒店SUITE');
  5841. }
  5842. }
  5843. var leftCheck = this.CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues;
  5844. var topCheck = this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues;
  5845. var resultArr = leftCheck.filter(item => !arr.includes(item));
  5846. var topResultArr = topCheck.filter(item => !topArr.includes(item));
  5847. resultArr = [...resultArr, ...pusharr];
  5848. resultArr = [...new Set(resultArr)];
  5849. ////console.log('resultArr', resultArr);
  5850. topResultArr = [...topResultArr, ...topPushArr];
  5851. topResultArr = [...new Set(topResultArr)];
  5852. this.CheckBoxListSelect.filter(item => item.cbType == 'Left')[0].cbValues = resultArr;
  5853. this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues = topResultArr;
  5854. },
  5855. GivePeopleNumber() {
  5856. var number = this.grouptitleinfo.visitPNumber;
  5857. if (this.AGroupCostParameter.visaRS == 0) {
  5858. this.AGroupCostParameter.visaRS = number;
  5859. }
  5860. if (this.AGroupCostParameter.bxrs == 0) {
  5861. this.AGroupCostParameter.bxrs = number;
  5862. }
  5863. if (this.AGroupCostParameter.djrs == 0) {
  5864. this.AGroupCostParameter.djrs = number;
  5865. }
  5866. if (this.AGroupCostParameter.lyjrs == 0) {
  5867. this.AGroupCostParameter.lyjrs = number;
  5868. }
  5869. if (this.AGroupCostParameter.gwrs == 0) {
  5870. this.AGroupCostParameter.gwrs = number;
  5871. }
  5872. },
  5873. lableSetPrice(lable, total, single) {
  5874. //遍历this.columnTotalData
  5875. for (var i = 0; i < this.columnTotalData.length; i++) {
  5876. if (this.columnTotalData[i].label == lable) {
  5877. this.columnTotalData[i].totalPrice = total;
  5878. this.columnTotalData[i].singlePrice = single;
  5879. break
  5880. }
  5881. }
  5882. },
  5883. BlableSetPrice(lable, total, single) {
  5884. for (var i = 0; i < this.columnTotalData.length; i++) {
  5885. if (this.columnTotalData[i].label == lable) {
  5886. var aT = Number(this.columnTotalData[i].totalPrice).toFixed(2);
  5887. var aS = Number(this.columnTotalData[i].singlePrice).toFixed(2);
  5888. if (!isNaN(aT)) {
  5889. this.columnTotalData[i].totalPrice = 'A段费用' + aT + '\r\n B段费用' + total;
  5890. }
  5891. if (!isNaN(aS)) {
  5892. this.columnTotalData[i].singlePrice = 'A段费用' + aS + '\r\n B段费用' + single;
  5893. }
  5894. break
  5895. }
  5896. }
  5897. },
  5898. importBlackCode() {
  5899. this.gridData = [];
  5900. var url = "/api/Groups/CraeteGroupCostTravel"
  5901. var that = this
  5902. this.$axios({
  5903. method: 'post',
  5904. url: url,
  5905. headers: {
  5906. Authorization: 'Bearer ' + that.token
  5907. },
  5908. data: {
  5909. "diid": that.diid,
  5910. }
  5911. }).then(function (resp) {
  5912. if (resp.data.code == 200) {
  5913. //console.log('CraeteGroupCostTravelResponse', resp.data.data);
  5914. that.gridData = resp.data.data.groupCost;
  5915. that.blackCodeIsTrue = resp.data.data.blackCodeIsTrue;
  5916. if (that.blackCodeIsTrue) {
  5917. that.dialogTableVisible = true;
  5918. } else {
  5919. that.$message.error("机票数据未录入!");
  5920. }
  5921. // that.tableData = resp.data.data.groupCost;
  5922. // for (var i = 0; i < that.tableData.length; i++) {
  5923. // for (var prop in that.tableData[i]) {
  5924. // if (that.tableData[i][prop] == 0) {
  5925. // that.tableData[i][prop] = ''
  5926. // }
  5927. // }
  5928. // }
  5929. } else {
  5930. that.$message.error("黑屏代码有误!" + resp.data.msg);
  5931. }
  5932. })
  5933. },
  5934. //机票行程确认赋值
  5935. confirmationTP() {
  5936. this.tableData = this.gridData;
  5937. for (var i = 0; i < this.tableData.length; i++) {
  5938. for (var prop in this.tableData[i]) {
  5939. if (this.tableData[i][prop] == 0) {
  5940. this.tableData[i][prop] = ''
  5941. }
  5942. }
  5943. }
  5944. this.dialogTableVisible = false;
  5945. },
  5946. //监听鼠标
  5947. MonitorMouse() {
  5948. document.onmousemove = (event) => {
  5949. let x1 = event.clientX
  5950. let y1 = event.clientY
  5951. if (this.x !== x1 || this.y !== y1) {
  5952. this.setTimer();
  5953. }
  5954. this.x = x1
  5955. this.y = y1
  5956. }
  5957. },
  5958. //监听键盘
  5959. MonitorKeyboard() {
  5960. document.onkeydown = () => {
  5961. this.setTimer();
  5962. }
  5963. },
  5964. //取消定时器
  5965. clearTimer() {
  5966. clearTimeout(window.myTimer)
  5967. window.myTimer = null
  5968. //取消监听
  5969. document.onmousemove = null;
  5970. document.onkeydown = null;
  5971. },
  5972. //定时调用函数
  5973. setTimer() {
  5974. this.count = 0
  5975. const mm = 1000 * 60;
  5976. if (window.myTimer) {
  5977. try {
  5978. clearTimeout(window.myTimer);
  5979. } catch (e) {
  5980. //console.log("setTimerMessage", e.message);
  5981. }
  5982. }
  5983. window.myTimer = setInterval(this.SaveAndLogOut, mm * 30);
  5984. },
  5985. SaveAndLogOut() {
  5986. this.save().then(() => {
  5987. this.$router.push({ name: 'Login' })
  5988. localStorage.removeItem("userinif");
  5989. this.$message({
  5990. type: 'success',
  5991. message: '已退出!'
  5992. });
  5993. //console.log("保存成功,已退出!");
  5994. }).catch(e => {
  5995. //console.log(e);
  5996. //console.log("保存失败,仅停止自动保存!");
  5997. clearInterval(this.autoSave);
  5998. })
  5999. },
  6000. TimeUpdateAnewOrderby(index) {
  6001. if (index == 0 && this.tableData.length > 0) {
  6002. var start = this.tableData[0].date;
  6003. for (var i = 0; i < this.tableData.length; i++) {
  6004. if (this.tableData[i].date) {
  6005. this.tableData[i].date = start;
  6006. start = this.addOneDay(start, 1)
  6007. }
  6008. }
  6009. }
  6010. },
  6011. //团组询价列表
  6012. PostHotelInquiryPageItem() {
  6013. var url = "/api/Groups/PostHotelInquiryPageItem"
  6014. var that = this
  6015. this.$axios({
  6016. method: 'post',
  6017. url: url,
  6018. headers: {
  6019. Authorization: 'Bearer ' + this.token
  6020. },
  6021. data: {
  6022. portType: 1,
  6023. pageIndex: 1,
  6024. pageSize: 100,
  6025. diId: that.diid,
  6026. }
  6027. }).then(function (res) {
  6028. that.tableDatas = [];
  6029. if (res.data.code == 200) {
  6030. that.dialogTableVisibleXJ = true;
  6031. that.tableDatas = res.data.data;
  6032. that.checkboxsXJ = [];
  6033. that.hotelIsTrue = res.data.data.length > 0 ? true : false;
  6034. //console.log(res);
  6035. } else {
  6036. that.$message.error(res.data.msg);
  6037. }
  6038. })
  6039. },
  6040. CheckboxChangeXJ(val) {
  6041. var isFind = this.checkboxsXJ.includes(val);
  6042. if (isFind) {
  6043. this.checkboxsXJ.splice(this.checkboxsXJ.indexOf(val), 1);
  6044. } else {
  6045. this.checkboxsXJ.push(val);
  6046. }
  6047. },
  6048. adoptHotelData() {
  6049. var selectArr = this.tableDatas.filter((x) => {
  6050. return this.checkboxsXJ.includes(x.id);
  6051. });
  6052. ////console.log(selectArr,'selectArr-----------------------');
  6053. if (selectArr.length != 0) {
  6054. for (var i = 0; i < selectArr.length; i++) {
  6055. var startTime = this.addOneDay(selectArr[i].checkInDate, 0);
  6056. var endTime = this.addOneDay(selectArr[i].checkOutDate, 0);
  6057. if (startTime) {
  6058. var flitertabs = this.tableData.filter((x) => {
  6059. var cuo = new Date(x.date).getTime();
  6060. return cuo >= new Date(startTime).getTime() && cuo < new Date(endTime).getTime();
  6061. })
  6062. for (var j = 0; j < flitertabs.length; j++) {
  6063. flitertabs[j].accon = selectArr[i].name;
  6064. flitertabs[j].sgr = selectArr[i].singlePrice * selectArr[i].singleQuantity;
  6065. flitertabs[j].tbr = selectArr[i].doublePrice * selectArr[i].doubleQuantity;
  6066. flitertabs[j].jS_ES = selectArr[i].suitePrice * selectArr[i].suiteQuantity;
  6067. flitertabs[j].suite = selectArr[i].otherPrice * selectArr[i].otherQuantity;
  6068. }
  6069. //console.log('flitertabs',flitertabs);
  6070. }
  6071. }
  6072. this.dialogTableVisibleXJ = false;
  6073. } else {
  6074. this.$message.error("请选择数据!");
  6075. }
  6076. },
  6077. GetHistoryCarData(index) {
  6078. this.historyCarInput = this.grouptitleinfo.visitCountry;
  6079. this.historyCarDialog = true;
  6080. this.pageSize = 7;
  6081. this.historyCarIndex = index;
  6082. this.historyCarSearch();
  6083. },
  6084. historyCarSearch() {
  6085. var url = "/api/Groups/GetHistoryCarData";
  6086. var that = this;
  6087. this.$axios({
  6088. method: 'post',
  6089. url: url,
  6090. headers: {
  6091. Authorization: 'Bearer ' + this.token
  6092. },
  6093. data: {
  6094. param: this.historyCarInput
  6095. }
  6096. }).then(function (res) {
  6097. that.historyCarData = [];
  6098. if (res.data.code == 200) {
  6099. console.log(res.data.data)
  6100. that.historyCarData = res.data.data;
  6101. } else {
  6102. that.$message.error(res.data.msg);
  6103. }
  6104. })
  6105. },
  6106. dialogClose() {
  6107. this.pageSize = 5;
  6108. this.currentPage = 1;
  6109. },
  6110. historyCarChange(row, oldrow) {
  6111. //console.log(row, oldrow);
  6112. this.historyCarSelectObject = row;
  6113. },
  6114. historyCarYes() {
  6115. //console.log(this.historyCarSelectObject,'historyCarSelectObject');
  6116. if (this.historyCarIndex != -1) {
  6117. this.tableData[this.historyCarIndex].carCost = this.historyCarSelectObject.dayPrice;
  6118. }
  6119. this.historyCarDialog = false;
  6120. },
  6121. //获取客户名单info
  6122. PostTourClientListByDiId(id) {
  6123. var that = this
  6124. var url = "/api/Groups/PostTourClientListByDiId"
  6125. this.$axios({
  6126. method: 'post',
  6127. url: url,
  6128. headers: {
  6129. Authorization: 'Bearer ' + that.token
  6130. },
  6131. data: {
  6132. portType: 1,
  6133. diid: id,
  6134. pageId: 104,
  6135. userId: that.userId
  6136. }
  6137. }).then(function (res) {
  6138. if (res.data.code == 200) {
  6139. that.rollcallarr = res.data.data;
  6140. } else {
  6141. that.$message.error(res.data.smg);
  6142. }
  6143. })
  6144. },
  6145. //fenge
  6146. fgarr(val) {
  6147. val = val + ""
  6148. return val.split(' ')[0]
  6149. },
  6150. //拼音
  6151. pinyingxing(val) {
  6152. return pinyin(val, { toneType: 'none' }).toUpperCase();
  6153. },
  6154. },
  6155. updated() {
  6156. this.$emit('transfer', true)
  6157. },
  6158. destroyed() {
  6159. this.$emit('transfer', false)
  6160. clearInterval(this.autoSave);
  6161. },
  6162. mounted() {
  6163. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  6164. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
  6165. var costLoadData = localStorage.getItem('costLoadData');
  6166. const mm = 1000 * 60;
  6167. if (this.userId == 21) {
  6168. this.autoSave = setInterval(() => {
  6169. this.$message.success('自动保存中...');
  6170. setTimeout(() => {
  6171. this.save();
  6172. }, 100);
  6173. }, mm * 10);
  6174. this.MonitorMouse();
  6175. this.MonitorKeyboard();
  6176. this.setTimer();
  6177. }
  6178. document.querySelectorAll('.el-table__footer')[0].style.display = "none";
  6179. if (costLoadData) {
  6180. var JSONP = JSON.parse(costLoadData);
  6181. var diidP = Number(JSONP.diid);
  6182. this.loadData(isNaN(diidP) ? -1 : diidP);
  6183. } else {
  6184. this.loadData(-1);
  6185. }
  6186. window.Vue = this;
  6187. },
  6188. beforeDestroy() {
  6189. this.clearTimer()
  6190. },
  6191. computed: {
  6192. defaultCostTypeHotelNumber() {
  6193. const defaultItems = this.costTypeHotelNumbers.filter(item => item.type == 'Default');
  6194. return defaultItems[0];
  6195. },
  6196. filterdialogSearchInput() {
  6197. var that = this;
  6198. return this.dialogTableData.filter(function (x) {
  6199. var fliterWhere = [];
  6200. if (that.dialogSearchInput.split('、') != -1) {
  6201. fliterWhere = that.dialogSearchInput.split('、');
  6202. } else {
  6203. fliterWhere = [that.dialogSearchInput];
  6204. }
  6205. for (var i = 0; i < fliterWhere.length; i++) {
  6206. if (x.city.indexOf(fliterWhere[i]) != -1 || x.country.indexOf(fliterWhere[i]) != -1) {
  6207. return x;
  6208. }
  6209. }
  6210. })
  6211. },
  6212. columnWidth() {
  6213. //console.log(this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length);
  6214. if (this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length < 22) {
  6215. return 74
  6216. }
  6217. else if (22 <= this.CheckBoxListSelect.filter(item => item.cbType == 'Top')[0].cbValues.length < 26) {
  6218. return 59
  6219. }
  6220. else {
  6221. return 55
  6222. }
  6223. },
  6224. ShowMeals() {
  6225. if (this.ShowBaoPi.length > 0) {
  6226. var result = this.ShowBaoPi.filter(x => x.type == 'Meals')[0];
  6227. if (result) {
  6228. return result.content;
  6229. } else {
  6230. return [];
  6231. }
  6232. }
  6233. return [];
  6234. },
  6235. ShowHotel() {
  6236. if (this.ShowBaoPi.length > 0) {
  6237. var result = this.ShowBaoPi.filter(x => x.type == 'Hotel')[0];
  6238. if (result) {
  6239. return result.content;
  6240. } else {
  6241. return [];
  6242. }
  6243. }
  6244. return [];
  6245. },
  6246. ShowGongZa() {
  6247. if (this.ShowBaoPi.length > 0) {
  6248. var result = this.ShowBaoPi.filter(x => x.type == 'GongZa')[0];
  6249. if (result) {
  6250. return result.content;
  6251. } else {
  6252. return [];
  6253. }
  6254. }
  6255. return [];
  6256. },
  6257. getCurr() {
  6258. var currStr = '';
  6259. var curr = this.AGroupCostParameter.currency;
  6260. var currResult = Number(curr);
  6261. if (isNaN(currResult)) {
  6262. currStr = curr;
  6263. } else {
  6264. for (let index = 0; index < this.currencyOption.length; index++) {
  6265. if (this.currencyOption[index].currencyId == currResult) {
  6266. currStr = this.currencyOption[index].currencyCode;
  6267. break;
  6268. }
  6269. }
  6270. }
  6271. return currStr;
  6272. },
  6273. },
  6274. filters: {
  6275. filter_time(value) {
  6276. if (value) {
  6277. return value.split(" ")[0]
  6278. }
  6279. },
  6280. townum(val) {
  6281. return val.toFixed(2)
  6282. },
  6283. }
  6284. }
  6285. </script>
  6286. <style lang="less" scoped>
  6287. /deep/ .el-table th.el-table__cell>.cell {
  6288. white-space: pre-wrap;
  6289. }
  6290. /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
  6291. background: #F0F9FF;
  6292. }
  6293. </style>
  6294. <style>
  6295. .cost-box {
  6296. background-color: #fff;
  6297. padding: 10px;
  6298. box-shadow: 0 0 5px #0005;
  6299. border-radius: 10px;
  6300. }
  6301. .cost-box .el-button+.el-button {
  6302. margin-left: 0;
  6303. }
  6304. .fade-enter-active,
  6305. .fade-leave-active {
  6306. transition: opacity 1;
  6307. }
  6308. .fade-enter,
  6309. .fade-leave-to {
  6310. opacity: 0;
  6311. }
  6312. .cost-haed {
  6313. margin-bottom: 10px;
  6314. }
  6315. .ser-btn {
  6316. display: flex;
  6317. justify-content: space-between;
  6318. margin-bottom: 5px;
  6319. }
  6320. .cost-info {
  6321. display: flex;
  6322. }
  6323. .cost-info-li {
  6324. margin-right: 30px;
  6325. }
  6326. .cost-info-li label {
  6327. color: #606266;
  6328. font-size: 15px;
  6329. font-weight: 600;
  6330. }
  6331. .cost-info-li span {
  6332. color: #606266;
  6333. font-size: 14px;
  6334. }
  6335. .cost-box .el-checkbox-group {
  6336. margin: 5px 0;
  6337. }
  6338. .form-ss .el-checkbox {
  6339. width: 100px;
  6340. margin: 5px 0;
  6341. }
  6342. .sheet-box {
  6343. margin-top: 30px;
  6344. }
  6345. .cabin-box {
  6346. margin-top: 30px;
  6347. }
  6348. .biaoge,
  6349. .biaogeB {
  6350. margin-bottom: 30px;
  6351. }
  6352. .rapAddress {
  6353. overflow: hidden;
  6354. white-space: nowrap;
  6355. text-overflow: ellipsis;
  6356. }
  6357. .cost-box .cabin-box .cost-box .el-checkbox {
  6358. margin-right: 20px;
  6359. }
  6360. .cost-box .el-table .cell {
  6361. text-align: center;
  6362. padding-left: 5px;
  6363. padding-right: 5px;
  6364. font-size: 12px;
  6365. }
  6366. .figures-btn {
  6367. display: flex;
  6368. flex-direction: column;
  6369. align-items: center;
  6370. }
  6371. .figures-btn .el-button--mini {
  6372. width: 67px;
  6373. margin: 2px 0;
  6374. margin-left: 0;
  6375. }
  6376. .CostBShow .el-col-3 .el-form-item__content {
  6377. width: 60%;
  6378. }
  6379. .CostBShow .el-form-item__content {
  6380. width: 65%;
  6381. }
  6382. .CostBShow .el-date-editor--date {
  6383. width: 100%;
  6384. }
  6385. .Cost_topFlex .el-select {
  6386. width: 400px;
  6387. }
  6388. .hiddenElement {
  6389. visibility: hidden;
  6390. }
  6391. .cost-all .el-table__footer-wrapper .cell {
  6392. white-space: pre;
  6393. }
  6394. .cost-all .el-date-editor.el-input,
  6395. .el-date-editor.el-input__inner {
  6396. width: 100%;
  6397. }
  6398. .biaogeB .el-table .el-input--small {
  6399. width: 60%;
  6400. }
  6401. .biaogeKz .el-table .el-input--small {
  6402. width: 60%;
  6403. }
  6404. .czbtn {
  6405. width: 70px;
  6406. }
  6407. .tables .el-textarea {
  6408. font-size: 12px;
  6409. }
  6410. .tables .el-button--mini {
  6411. font-size: 12px;
  6412. }
  6413. .tables .el-textarea__inner {
  6414. padding: 0;
  6415. }
  6416. .tables .el-input--suffix .el-input__inner {
  6417. padding-right: 0px;
  6418. padding-left: 0px;
  6419. }
  6420. .tables .el-date-editor .el-icon-date {
  6421. display: none;
  6422. }
  6423. .form-ss .el-checkbox__label {
  6424. font-size: 12px;
  6425. }
  6426. .tables .el-input--mini {
  6427. font-size: 12px;
  6428. }
  6429. .tables .el-input__inner {
  6430. padding: 0;
  6431. text-align: center;
  6432. }
  6433. .sheet-box .el-table th.el-table__cell>.cell {
  6434. font-size: 12px;
  6435. }
  6436. .sheet-box .el-input__inner {
  6437. font-size: 12px;
  6438. }
  6439. .cost-all .el-form-item {
  6440. margin-bottom: 5px;
  6441. }
  6442. .cost-all input::-webkit-inner-spin-button {
  6443. -webkit-appearance: none !important;
  6444. }
  6445. .cost-all input::-webkit-outer-spin-button {
  6446. -webkit-appearance: none !important;
  6447. }
  6448. .cost-all input[type="number"] {
  6449. -moz-appearance: textfield;
  6450. }
  6451. .btntop:hover {
  6452. cursor: pointer;
  6453. color: #000;
  6454. }
  6455. .btnbottom:hover {
  6456. cursor: pointer;
  6457. color: #000;
  6458. }
  6459. .accon-ul {
  6460. position: absolute;
  6461. box-shadow: #0005 0 0 10px;
  6462. width: 200px;
  6463. z-index: 444;
  6464. background-color: #fff;
  6465. border-radius: 5px;
  6466. display: none;
  6467. }
  6468. .accon-box .accons-ul {
  6469. display: inline-block;
  6470. }
  6471. .accon-li {
  6472. padding: 10px 5px;
  6473. text-align: left;
  6474. }
  6475. .accon-li:hover {
  6476. background-color: #0001;
  6477. }
  6478. .accon-ul:last-child {
  6479. bottom: 15px;
  6480. }
  6481. .btn-dialog-cost {
  6482. margin-top: 20px;
  6483. text-align: right;
  6484. }
  6485. .history-btn {
  6486. display: flex;
  6487. justify-content: center;
  6488. }
  6489. .cost-all .el-table th.el-table__cell>.cell {
  6490. text-align: center;
  6491. }
  6492. </style>