EntryDetails.vue 169 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737
  1. <template>
  2. <div v-loading.fullscreen.lock="fullscreenLoading">
  3. <div class="Entry-all">
  4. <el-dialog :close-on-click-modal="false" title="实时汇率提示" :visible.sync="SSHLVisible">
  5. <el-table border :data="currencyss">
  6. <el-table-column property="currName" label="币种" width="150"></el-table-column>
  7. <el-table-column property="rate" label="汇率" width="200"></el-table-column>
  8. <el-table-column property="lastUpdateDt" label="更新时间"></el-table-column>
  9. </el-table>
  10. <div style="margin-top: 15px;text-align: right;">
  11. <el-button type="primary" @click="SSHLVisible=false">已知晓</el-button>
  12. </div>
  13. </el-dialog>
  14. <el-dialog width="400px" title="设置查看权限" class="permissionsbox" :visible.sync="setpermissions" :close-on-click-modal="false">
  15. <el-checkbox-group v-model="viewUsers" @change="handleCheckAllChange">
  16. <el-checkbox v-for="item in viewUsersarr" :label="item.id" :key="item.id">{{item.name}}</el-checkbox>
  17. </el-checkbox-group>
  18. <div style="text-align: right;margin-top: 15px;">
  19. <el-button size="mini" @click="EnterExitCostSetViewPermissiion" type="primary">分配</el-button>
  20. <el-button size="mini" @click="setpermissions=false">取消</el-button>
  21. </div>
  22. </el-dialog>
  23. <el-dialog width="1600px" title="交通费详细" :visible.sync="TransportationVisible" :close-on-click-modal="false">
  24. <div style="display: flex;justify-content: space-between;align-items: center;margin: 5px 0;">
  25. <div>接送机(合计):{{ numFilters(Transportationdatatotal) }}&nbsp;CNY</div>
  26. <el-button size="mini" @click="addTransportationdata" type="primary">添加一行</el-button>
  27. </div>
  28. <el-table border :data="Transportationdata">
  29. <el-table-column property="no" label="序号" width="50"></el-table-column>
  30. <el-table-column property="ovId" label="城市" width="150">
  31. <template slot-scope="scope">
  32. <el-select size="mini"
  33. @change="UrbanSelect(scope.row, $event, scope.$index)"
  34. v-model="scope.row.ovId" filterable placeholder="请选择">
  35. <el-option v-for="item in fulecao" :key="item.id" :label="item.area"
  36. :value="item.id">
  37. <span style="float: left">{{ item.area }}</span>
  38. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  39. </el-option>
  40. </el-select>
  41. <!-- <el-input disabled size="mini" v-model="scope.row.b"></el-input> -->
  42. </template>
  43. </el-table-column>
  44. <el-table-column property="cost" label="成本价(要除以团组人数)" width="180">
  45. <template slot-scope="scope">
  46. <div>{{reservetwo(scope.row.cost/Basicdata.groupSize)}}&nbsp;{{scope.row.currencyName}}&nbsp;({{scope.row.cost+'/'+Basicdata.groupSize}})</div>
  47. <!-- <el-input disabled size="mini" v-model="scope.row.c"></el-input> -->
  48. </template>
  49. </el-table-column>
  50. <el-table-column property="guideCost" label="接送机导游" width="140">
  51. <template slot-scope="scope">
  52. <el-input-number disabled style="width:100%" size="mini" :class-unit="scope.row.currencyName" :precision="2" class="inputNumberClass"
  53. :controls="false" v-model="scope.row.guideCost"></el-input-number>
  54. <!-- <el-input disabled size="mini" v-model="scope.row.guideCost">
  55. <i slot="suffix" style="font-style:normal;margin-right: 10px;line-height: 27px;color: #606266;">{{ scope.row.currencyName }}</i>
  56. </el-input> -->
  57. </template>
  58. </el-table-column>
  59. <el-table-column property="otherCost" label="其他费用(只有澳大利亚有这个数据)" width="150">
  60. <template slot-scope="scope">
  61. <el-input-number @blur="UrbanModify(scope.row,scope.row.currencyName)" style="width:100%" size="mini" :class-unit="scope.row.currencyName" :precision="2" class="inputNumberClass"
  62. :controls="false" v-model="scope.row.otherCost"></el-input-number>
  63. <!-- <el-input size="mini" v-model="scope.row.otherCost">
  64. <i slot="suffix" style="font-style:normal;margin-right: 10px;line-height: 27px;color: #606266;">{{ scope.row.currencyName }}</i>
  65. </el-input> -->
  66. </template>
  67. </el-table-column>
  68. <el-table-column property="serviceCount" label="服务次数(默认为1)" width="150">
  69. <template slot-scope="scope">
  70. <el-input-number @blur="UrbanModify(scope.row,scope.row.currencyName)" style="width:100%" size="mini" :precision="2" class="inputNumberClass"
  71. :controls="false" v-model="scope.row.serviceCount"></el-input-number>
  72. <!-- <el-input size="mini" v-model="scope.row.serviceCount"></el-input> -->
  73. </template>
  74. </el-table-column>
  75. <el-table-column property="coefficient" label="系数(默认2.5)" width="110">
  76. <template slot-scope="scope">
  77. <el-input-number @blur="UrbanModify(scope.row,scope.row.currencyName)" style="width:100%" size="mini" :precision="2" class="inputNumberClass"
  78. :controls="false" v-model="scope.row.coefficient"></el-input-number>
  79. <!-- <el-input size="mini" v-model="scope.row.coefficient"></el-input> -->
  80. </template>
  81. </el-table-column>
  82. <el-table-column property="quote" label="报价" width="200">
  83. <template slot-scope="scope">
  84. <el-input-number disabled style="width:100%" size="mini" class-unit="CNY" :precision="2" class="inputNumberClass"
  85. :controls="false" v-model="scope.row.quote"></el-input-number>
  86. <!-- <el-input size="mini" v-model="scope.row.quote">
  87. <i slot="suffix" style="font-style:normal;margin-right: 10px;line-height: 27px;color: #606266;">CNY</i>
  88. </el-input> -->
  89. </template>
  90. </el-table-column>
  91. <el-table-column property="remark" label="备注">
  92. <template slot-scope="scope">
  93. <el-input size="mini" v-model="scope.row.remark"></el-input>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="操作" width="100">
  97. <template slot-scope="scope">
  98. <el-button size="mini" @click.native.prevent="deleteRowJSJ(scope.$index, Transportationdata,scope.row)" type="danger">移除</el-button>
  99. </template>
  100. </el-table-column>
  101. </el-table>
  102. <div class="jiaotongfei-ul">
  103. <div class="jiaotongfei-li">
  104. <div style="display: flex;justify-content: space-between;align-items: center;margin: 5px 0;">
  105. <div>拉车(合计):{{ numFilters(pullCartFeeTotal) }}&nbsp;CNY</div>
  106. <el-button @click="addpullCartFeeDetails" size="mini" type="primary">添加一行</el-button>
  107. </div>
  108. <!-- <div>拉车(合计)</div> -->
  109. <el-table border :data="pullCartFeeDetails">
  110. <el-table-column property="cost" label="成本价" width="150">
  111. <template slot-scope="scope">
  112. <el-input-number @blur="UrbanModifyLC(scope.row)" style="width:100%" size="mini" :class-unit="scope.row.currencyName" :precision="2" class="inputNumberClass"
  113. :controls="false" v-model="scope.row.cost"></el-input-number>
  114. </template>
  115. </el-table-column>
  116. <el-table-column property="coefficient" label="系数" width="150">
  117. <template slot-scope="scope">
  118. <el-input-number @blur="UrbanModifyLC(scope.row)" style="width:100%" size="mini" :precision="2"
  119. :controls="false" v-model="scope.row.coefficient"></el-input-number>
  120. </template>
  121. </el-table-column>
  122. <el-table-column property="remark" label="备注">
  123. <template slot-scope="scope">
  124. <el-input size="mini" v-model="scope.row.remark"></el-input>
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="操作" width="100">
  128. <template slot-scope="scope">
  129. <el-button size="mini"
  130. @click.native.prevent="deleteRowLC(scope.$index, pullCartFeeDetails, scope.row)"
  131. type="danger">移除</el-button>
  132. </template>
  133. </el-table-column>
  134. </el-table>
  135. </div>
  136. <div class="jiaotongfei-li">
  137. <div style="display: flex;justify-content: space-between;align-items: center;margin: 5px 0;">
  138. <div>火车(合计):{{ numFilters(trainFeeTotal) }}&nbsp;CNY</div>
  139. <el-button @click="addtrainFeeDetails" size="mini" type="primary">添加一行</el-button>
  140. </div>
  141. <el-table border :data="trainFeeDetails">
  142. <el-table-column property="cost" label="成本价" width="150">
  143. <template slot-scope="scope">
  144. <el-input-number @blur="UrbanModifyHC(scope.row)" style="width:100%" size="mini" :class-unit="scope.row.currencyName" :precision="2" class="inputNumberClass"
  145. :controls="false" v-model="scope.row.cost"></el-input-number>
  146. </template>
  147. </el-table-column>
  148. <el-table-column property="coefficient" label="系数" width="150">
  149. <template slot-scope="scope">
  150. <el-input-number @blur="UrbanModifyHC(scope.row)" style="width:100%" size="mini" :precision="2"
  151. :controls="false" v-model="scope.row.coefficient"></el-input-number>
  152. </template>
  153. </el-table-column>
  154. <el-table-column property="remark" label="备注">
  155. <template slot-scope="scope">
  156. <el-input size="mini" v-model="scope.row.remark"></el-input>
  157. </template>
  158. </el-table-column>
  159. <el-table-column label="操作" width="100">
  160. <template slot-scope="scope">
  161. <el-button size="mini"
  162. @click.native.prevent="deleteRowHC(scope.$index, trainFeeDetails, scope.row)"
  163. type="danger">移除</el-button>
  164. </template>
  165. </el-table-column>
  166. </el-table>
  167. </div>
  168. <div class="jiaotongfei-li">
  169. <div style="display: flex;justify-content: space-between;align-items: center;margin: 5px 0;">
  170. <div>城市机票(合计):{{ numFilters(cityAirTicketFeeTotal) }}&nbsp;CNY</div>
  171. <el-button @click="addcityAirTicketFeeDetails" size="mini" type="primary">添加一行</el-button>
  172. </div>
  173. <el-table border :data="cityAirTicketFeeDetails">
  174. <el-table-column property="cost" label="成本价" width="150">
  175. <template slot-scope="scope">
  176. <el-input-number @blur="UrbanModifyJP(scope.row)" style="width:100%" size="mini" :class-unit="scope.row.currencyName" :precision="2" class="inputNumberClass"
  177. :controls="false" v-model="scope.row.cost"></el-input-number>
  178. </template>
  179. </el-table-column>
  180. <el-table-column property="coefficient" label="系数" width="150">
  181. <template slot-scope="scope">
  182. <el-input-number @blur="UrbanModifyJP(scope.row)" style="width:100%" size="mini" :precision="2"
  183. :controls="false" v-model="scope.row.coefficient"></el-input-number>
  184. </template>
  185. </el-table-column>
  186. <el-table-column property="remark" label="备注">
  187. <template slot-scope="scope">
  188. <el-input size="mini" v-model="scope.row.remark"></el-input>
  189. </template>
  190. </el-table-column>
  191. <el-table-column label="操作" width="100">
  192. <template slot-scope="scope">
  193. <el-button size="mini"
  194. @click.native.prevent="deleteRowJP(scope.$index, cityAirTicketFeeDetails, scope.row)"
  195. type="danger">移除</el-button>
  196. </template>
  197. </el-table-column>
  198. </el-table>
  199. </div>
  200. </div>
  201. <div style="margin-top: 20px;font-weight: 600;">
  202. 城市交通费合计:{{ numFilters(Transportationdatatotal + pullCartFeeTotal + trainFeeTotal + cityAirTicketFeeTotal) }}&nbsp;CNY
  203. </div>
  204. <div style="text-align: right;margin-top: 20px;">
  205. <el-button @click="TransportationVisible=false">取消</el-button>
  206. <el-button @click="GetEnterExitCostOVFeeSave" type="primary">保 存</el-button>
  207. </div>
  208. </el-dialog>
  209. <div class="Entry-head">
  210. <div class="Entry-head-li">
  211. <label>团组名称:</label>
  212. <el-select style="width:250px" @change="chengvalue" v-model="value" filterable :filter-method="advancedFilter" placeholder="请选择">
  213. <el-option v-for="item in filteredOptions" :key="item.id" :label="item.groupName" :value="item.id">
  214. <span v-if="item.isNull=='false'" style="color:#409EFF">{{ item.groupName }}</span>
  215. <span v-else style="color:gray">{{ item.groupName }}</span>
  216. </el-option>
  217. </el-select>
  218. </div>
  219. <div v-if="isSave" class="Entry-head-li">
  220. <!-- <el-button type="primary">计算费用</el-button> -->
  221. <el-button @click="NationalTravelFeeImportReceivables" type="primary">导出到收款账单</el-button>
  222. <el-button @click="cleanout" type="primary">全部清空</el-button>
  223. <el-button @click="storage()" type="primary">保存</el-button>
  224. <el-select style="width:202px" v-model="listvalue" placeholder="请选择">
  225. <el-option v-for="item in listvalueoptions" :key="item.id" :label="item.name" :value="item.id">
  226. </el-option>
  227. </el-select>
  228. <el-button @click="eptschedule(1)" type="primary">导出所选明细表</el-button>
  229. <el-select style="width:202px" v-model="tablevalue" placeholder="请选择">
  230. <el-option v-for="item in tablevalueoptions" :key="item.id" :label="item.name" :value="item.id">
  231. </el-option>
  232. </el-select>
  233. <el-button @click="eptschedule(2)" type="primary">导出下拉所选表格</el-button>
  234. <el-button v-if="isAssignPerm" @click="setpermissionsbtn" type="primary">设置权限</el-button>
  235. <el-button @click="eptschedule(3)" type="primary">团组成员名单</el-button>
  236. </div>
  237. </div>
  238. <div class="Entry-form">
  239. <div class="Entry-form-li">
  240. <div class="Entry-li-lables">
  241. <el-checkbox v-model="choiceOne"></el-checkbox>
  242. <div class="li-lable">一、境内费用(其他费用)</div>
  243. <div class="li-lable">
  244. <span class="redzhu">(注:填好数值鼠标点击其他区域计算合计)</span>
  245. <label>合计:</label>
  246. <div class="sub-boxs">
  247. {{ DomesticFees.total=(DomesticFees.visafees + DomesticFees.vaccinefees +
  248. DomesticFees.nucleicfees + DomesticFees.serviceCharge + DomesticFees.insurance +
  249. DomesticFees.ticketsExhibitionL) | numFilter }}
  250. </div>
  251. <span>元/人</span>
  252. </div>
  253. </div>
  254. <div class="Entry-li-inif">
  255. <div class="Entry-inif-box">
  256. <label>签证费:</label>
  257. <el-input-number size="mini" :controls="false" :precision="2"
  258. v-model="DomesticFees.visafees"></el-input-number>
  259. <span>元/人</span>
  260. </div>
  261. <div class="Entry-inif-box">
  262. <label>签证费用描述:</label>
  263. <el-input style="width:900px" size="mini"
  264. v-model="DomesticFees.visafeesDescription"></el-input>
  265. <span class="redzhu">{{ visabeizhu }}</span>
  266. </div>
  267. <el-button @click="Getnewvisafee" type="primary"
  268. size="mini">获取最新签证费用</el-button>
  269. </div>
  270. <div class="Entry-li-inif">
  271. <div class="Entry-inif-box">
  272. <label>疫苗费:</label>
  273. <el-input-number size="mini" :controls="false" :precision="2"
  274. v-model="DomesticFees.vaccinefees"></el-input-number>
  275. <span>元/人</span>
  276. </div>
  277. <div class="Entry-inif-box">
  278. <label>核酸检测费:</label>
  279. <el-input-number size="mini" :controls="false" :precision="2"
  280. v-model="DomesticFees.nucleicfees"></el-input-number>
  281. <span>元/人;</span>
  282. </div>
  283. <div class="Entry-inif-box">
  284. <label> 服务费:</label>
  285. <el-input-number size="mini" :controls="false" :precision="2"
  286. v-model="DomesticFees.serviceCharge"></el-input-number>
  287. <span>元/人;</span>
  288. </div>
  289. </div>
  290. <div class="Entry-li-inif">
  291. <div class="Entry-inif-box">
  292. <label>保险费:</label>
  293. <el-input-number size="mini" :controls="false" :precision="2"
  294. v-model="DomesticFees.insurance"></el-input-number>
  295. <span>元/人</span>
  296. </div>
  297. <div class="Entry-inif-box">
  298. <label>参展门票:</label>
  299. <el-input-number size="mini" :controls="false" :precision="2"
  300. v-model="DomesticFees.ticketsExhibitionL"></el-input-number>
  301. <span>元/人;</span>
  302. </div>
  303. <div class="Entry-inif-box">
  304. <label>备注:</label>
  305. <el-input style="width:900px" size="mini"
  306. v-model="DomesticFees.firstItemRemark"></el-input>
  307. </div>
  308. </div>
  309. </div>
  310. <div class="Entry-form-li">
  311. <div class="Entry-li-lables">
  312. <!-- <el-checkbox v-model="choiceTwo"></el-checkbox> -->
  313. <div class="li-lable">二、国际旅费合计:</div>
  314. <div style="display: flex;">
  315. <div class="li-lable">
  316. <el-checkbox style="margin-right: -10px;" v-model="sumJJC"></el-checkbox>
  317. <label>(经济舱)</label>
  318. <div class="sub-boxs">
  319. {{ TotalExpenses.EconomyClasstotal=(TotalExpenses.EconomyClass +
  320. TotalExpenses.TravellingExpensesJJ) | numFilter }}
  321. </div>
  322. <span>元/人</span>
  323. </div>
  324. &nbsp;&nbsp;&nbsp;&nbsp;
  325. <div class="li-lable">
  326. <el-checkbox style="margin-right: -10px;" v-model="sumGWC"></el-checkbox>
  327. <label>(公务舱)</label>
  328. <div class="sub-boxs">
  329. {{ TotalExpenses.BusinessClasstotal=(TotalExpenses.BusinessClass +
  330. TotalExpenses.TravellingExpensesGW) | numFilter }}
  331. </div>
  332. <span>元/人</span>
  333. </div>
  334. &nbsp;&nbsp;&nbsp;&nbsp;
  335. <div class="li-lable">
  336. <el-checkbox style="margin-right: -10px;" v-model="sumTDC"></el-checkbox>
  337. <label>(头等舱)</label>
  338. <div class="sub-boxs">
  339. {{ TotalExpenses.Firstclasstotal=(TotalExpenses.Firstclass +
  340. TotalExpenses.TravellingExpensesTD) | numFilter }}
  341. </div>
  342. <span>元/人</span>
  343. </div>
  344. </div>
  345. </div>
  346. <div class="Entry-li-inif">
  347. <label>国际机票:&nbsp; &nbsp; &nbsp; </label>
  348. <div class="Entry-inif-box">
  349. <label>(经济舱):</label>
  350. <el-input-number size="mini" :controls="false" :precision="2"
  351. v-model="TotalExpenses.EconomyClass"></el-input-number>
  352. <span>元/人</span>
  353. </div>
  354. <div class="Entry-inif-box">
  355. <label>(公务舱):</label>
  356. <el-input-number size="mini" :controls="false" :precision="2"
  357. v-model="TotalExpenses.BusinessClass"></el-input-number>
  358. <span>元/人;</span>
  359. </div>
  360. <div class="Entry-inif-box">
  361. <label>(头等舱):</label>
  362. <el-input-number size="mini" :controls="false" :precision="2"
  363. v-model="TotalExpenses.Firstclass"></el-input-number>
  364. <span>元/人;</span>
  365. </div>
  366. <span v-if="airDataArr.length<1" class="redzhu">(机票数据未录入)</span>
  367. <div v-else>
  368. <span class="redzhu">有多条机票费用数据请自行选择!!</span>&nbsp;&nbsp;
  369. <el-select style="width:400px" @change="Fillin" size="mini" v-model="airDataArrvalue" placeholder="请选择">
  370. <el-option
  371. v-for="item in airDataArr"
  372. :key="item.remark"
  373. :label="item.remark"
  374. :value="item.remark">
  375. <el-tooltip
  376. popper-class="custom-tooltip-style"
  377. effect="light"
  378. :content="item.tripDesc"
  379. placement="right">
  380. <span>{{ item.remark }}</span>
  381. </el-tooltip>
  382. </el-option>
  383. </el-select>
  384. <!-- <el-button type="primary" @click="Fillin" size="mini">填 入</el-button> -->
  385. </div>
  386. </div>
  387. <div class="Entry-li-inif">
  388. <label>城市区间交通费:&nbsp; &nbsp; &nbsp; </label>
  389. <div class="Entry-inif-box">
  390. <label>(经济舱):</label>
  391. <el-input-number size="mini" :controls="false" :precision="2"
  392. v-model="TotalExpenses.TravellingExpensesJJ"></el-input-number>
  393. <span>元/人;</span>
  394. </div>
  395. <div class="Entry-inif-box">
  396. <label>(公务舱):</label>
  397. <el-input-number size="mini" :controls="false" :precision="2"
  398. v-model="TotalExpenses.TravellingExpensesGW"></el-input-number>
  399. <span>元/人;</span>
  400. </div>
  401. <div class="Entry-inif-box">
  402. <label>(头等舱):</label>
  403. <el-input-number size="mini" :controls="false" :precision="2"
  404. v-model="TotalExpenses.TravellingExpensesTD"></el-input-number>
  405. <span>元/人;</span>
  406. </div>
  407. <div class="Entry-inif-box">
  408. <el-button @click="openTransportation" type="primary" size="mini">交通费明细</el-button>
  409. </div>
  410. </div>
  411. <div class="Entry-li-inif">
  412. <div class="Entry-inif-box">
  413. <label>备注:</label>
  414. <el-input style="width:1000px" size="mini"
  415. v-model="TotalExpenses.twoItemRemark"></el-input>
  416. </div>
  417. </div>
  418. <div class="Entry-li-inif">
  419. <div v-for="(item, index) in currencys" :key="index" class="Entry-inif-box">
  420. <label>{{ item.currencyName }}汇率:</label>
  421. <el-input-number size="mini" :controls="false" :precision="4"
  422. v-model="item.rate"></el-input-number>
  423. </div>
  424. <span style="color:red;">* 若客户有意见,需要与财务商量后进行适当调整 </span>
  425. <el-popover
  426. placement="top"
  427. width="402"
  428. trigger="hover">
  429. <el-table border :data="currencyss">
  430. <el-table-column width="100" property="currName" label="币种"></el-table-column>
  431. <el-table-column width="100" property="rate" label="汇率"></el-table-column>
  432. <el-table-column width="200" property="lastUpdateDt" label="更新时间"></el-table-column>
  433. </el-table>
  434. <span style="color: #409EFF;" slot="reference" class="redzhu">{{CurrencysRemark}}</span>
  435. <div style="margin-top: 5px;text-align: right;">
  436. <el-button @click="adoptRealtime" type="primary" size="mini">采用最新汇率</el-button>
  437. </div>
  438. </el-popover>
  439. &nbsp;&nbsp;&nbsp;&nbsp;
  440. </div>
  441. </div>
  442. <div class="Entry-form-li">
  443. <div class="Entry-li-lable">
  444. <div style="display: flex;align-items: center;">
  445. <el-checkbox v-model="choiceThree"></el-checkbox>
  446. <div class="li-lable">三、住宿费:</div>
  447. <div style="display: flex;">
  448. <div class="li-lable">
  449. <label>合计:</label>
  450. <div class="sub-boxs">{{ TotalAccommodationFee | numFilter }}</div>
  451. <span>元/人</span>
  452. </div>
  453. </div>
  454. </div>
  455. <div class="btn-Entry">
  456. <el-button type="primary" @click="addlist('住宿费')" size="mini">新 增</el-button>
  457. </div>
  458. </div>
  459. <div class="Entry-li-inif">
  460. <el-table :data="quarterageData" border style="width: 100%">
  461. <el-table-column prop="days" label="第几晚" width="180">
  462. <template slot-scope="scope">
  463. <el-input-number size="mini" :controls="false"
  464. v-model="scope.row.days"></el-input-number>
  465. </template>
  466. </el-table-column>
  467. <el-table-column style="position: relative;" prop="city" label="城 市" width="180">
  468. <template slot-scope="scope">
  469. <el-select size="mini" @change="changeSelect(scope.row, $event, scope.$index)"
  470. v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  471. <el-option v-for="item in placeinif" :key="item.id" :label="item.cityname"
  472. :value="item.id">
  473. <span style="float: left">{{ item.cityname }}</span>
  474. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  475. </el-option>
  476. </el-select>
  477. </template>
  478. </el-table-column>
  479. <el-table-column prop="cost" label=" 费用标准" width="180">
  480. <template slot-scope="scope">
  481. <el-input-number @input="zhusuinput(scope.row)" size="mini" :precision="2"
  482. :controls="false" v-model="scope.row.cost"></el-input-number>
  483. </template>
  484. </el-table-column>
  485. <el-table-column prop="currencyName" label=" 币 种" width="180">
  486. <template slot-scope="scope">
  487. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  488. </template>
  489. </el-table-column>
  490. <el-table-column prop="subTotal" label="费用小计" width="180">
  491. <template slot-scope="scope">
  492. <div class="sub-boxs">{{ scope.row.subTotal | numFilter }}</div>&nbsp;CNY
  493. </template>
  494. </el-table-column>
  495. <el-table-column prop="address" label="操 作">
  496. <template slot-scope="scope">
  497. <el-button v-if="isSave" style="color: #fff;" size="mini" type="danger"
  498. @click="deleteRow(scope.$index, scope.row, quarterageData, 1)">删除</el-button>
  499. </template>
  500. </el-table-column>
  501. </el-table>
  502. </div>
  503. </div>
  504. <div class="Entry-form-li">
  505. <div class="Entry-li-lable">
  506. <div style="display: flex;align-items: center;">
  507. <el-checkbox v-model="choiceFour"></el-checkbox>
  508. <div class="li-lable">四、伙食费:</div>
  509. <div style="display: flex;">
  510. <div class="li-lable">
  511. <label>合计:</label>
  512. <div class="sub-boxs">{{ TotalMeals | numFilter }}</div>
  513. <span>元/人</span>
  514. </div>
  515. </div>
  516. </div>
  517. <div class="btn-Entry">
  518. <el-button type="primary" @click="addlist('伙食费')" size="mini">新 增</el-button>
  519. </div>
  520. </div>
  521. <div class="Entry-li-inif">
  522. <el-table :data="boardWagesData" border style="width: 100%">
  523. <el-table-column prop="days" label="第几晚" width="180">
  524. <template slot-scope="scope">
  525. <el-input-number size="mini" :controls="false"
  526. v-model="scope.row.days"></el-input-number>
  527. </template>
  528. </el-table-column>
  529. <el-table-column style="position: relative;" prop="city" label="城 市" width="180">
  530. <!-- <template slot-scope="scope">
  531. <el-input size="mini" v-model="scope.row.city"></el-input>
  532. </template> -->
  533. <template slot-scope="scope">
  534. <el-select size="mini" @change="mealschangeSelect(scope.row, $event, scope.$index)"
  535. v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  536. <el-option v-for="item in placeinif" :key="item.id" :label="item.cityname"
  537. :value="item.id">
  538. <span style="float: left">{{ item.cityname }}</span>
  539. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  540. </el-option>
  541. </el-select>
  542. </template>
  543. </el-table-column>
  544. <el-table-column prop="cost" label=" 费用标准" width="180">
  545. <template slot-scope="scope">
  546. <el-input-number size="mini" @input="mealsinput(scope.row)" :precision="2"
  547. :controls="false" v-model="scope.row.cost"></el-input-number>
  548. </template>
  549. </el-table-column>
  550. <el-table-column prop="currencyName" label=" 币 种" width="180">
  551. <template slot-scope="scope">
  552. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  553. </template>
  554. </el-table-column>
  555. <el-table-column prop="subTotal" label="费用小计" width="180">
  556. <template slot-scope="scope">
  557. <div class="sub-boxs">{{ scope.row.subTotal | numFilter }}</div>&nbsp;CNY
  558. </template>
  559. </el-table-column>
  560. <el-table-column prop="address" label="操 作">
  561. <template slot-scope="scope">
  562. <el-button v-if="isSave" style="color: #fff;" size="mini" type="danger"
  563. @click="deleteRow(scope.$index, scope.row, boardWagesData, 2)">删除</el-button>
  564. </template>
  565. </el-table-column>
  566. </el-table>
  567. </div>
  568. </div>
  569. <div class="Entry-form-li">
  570. <div class="Entry-li-lable">
  571. <div style="display: flex;align-items: center;">
  572. <el-checkbox v-model="choiceFive"></el-checkbox>
  573. <div class="li-lable">五、公杂费:</div>
  574. <div style="display: flex;">
  575. <div class="li-lable">
  576. <label>合计:</label>
  577. <div class="sub-boxs">{{ TotalMiscellaneous | numFilter }}</div>
  578. <span>元/人</span>
  579. </div>
  580. </div>
  581. </div>
  582. <div class="btn-Entry">
  583. <el-button type="primary" @click="addlist('公杂费')" size="mini">新 增</el-button>
  584. </div>
  585. </div>
  586. <div class="Entry-li-inif">
  587. <el-table :data="miscellaneousFeeData" border style="width: 100%">
  588. <el-table-column prop="days" label="第几晚" width="180">
  589. <template slot-scope="scope">
  590. <el-input-number size="mini" :controls="false"
  591. v-model="scope.row.days"></el-input-number>
  592. </template>
  593. </el-table-column>
  594. <el-table-column style="position: relative;" prop="city" label="城 市" width="180">
  595. <!-- <template slot-scope="scope">
  596. <el-input size="mini" v-model="scope.row.city"></el-input>
  597. </template> -->
  598. <template slot-scope="scope">
  599. <el-select @change="MiscellaneouschangeSelect(scope.row, $event)" size="mini"
  600. v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  601. <el-option v-for="item in placeinif" :key="item.id" :label="item.cityname"
  602. :value="item.id">
  603. <span style="float: left">{{ item.cityname }}</span>
  604. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  605. </el-option>
  606. </el-select>
  607. </template>
  608. </el-table-column>
  609. <el-table-column prop="cost" label=" 费用标准" width="180">
  610. <template slot-scope="scope">
  611. <el-input-number @input="Miscellaneousinput(scope.row)" size="mini" :precision="2"
  612. :controls="false" v-model="scope.row.cost"></el-input-number>
  613. </template>
  614. </el-table-column>
  615. <el-table-column prop="currencyName" label=" 币 种" width="180">
  616. <template slot-scope="scope">
  617. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  618. </template>
  619. </el-table-column>
  620. <el-table-column prop="subTotal" label="费用小计" width="180">
  621. <template slot-scope="scope">
  622. <div class="sub-boxs">{{ scope.row.subTotal | numFilter }}</div>&nbsp;CNY
  623. </template>
  624. </el-table-column>
  625. <el-table-column prop="address" label="操 作">
  626. <template slot-scope="scope">
  627. <el-button v-if="isSave" style="color: #fff;" size="mini" type="danger"
  628. @click="deleteRow(scope.$index, scope.row, miscellaneousFeeData, 3)">删除</el-button>
  629. </template>
  630. </el-table-column>
  631. </el-table>
  632. </div>
  633. </div>
  634. <div class="Entry-form-li">
  635. <div class="Entry-li-lable">
  636. <div style="display: flex;align-items: center;">
  637. <el-checkbox v-model="choiceSix"></el-checkbox>
  638. <div class="li-lable">六、培训费:</div>
  639. <div style="display: flex;">
  640. <div class="li-lable">
  641. <label>合计:</label>
  642. <div class="sub-boxs">{{ trainingExpense | numFilter }}</div>
  643. <span>元/人</span>
  644. </div>
  645. </div>
  646. </div>
  647. <div class="btn-Entry">
  648. <el-button type="primary" @click="addlist('培训费')" size="mini">新 增</el-button>
  649. </div>
  650. </div>
  651. <div class="Entry-li-inif">
  652. <el-table :data="trainingExpenseData" border style="width: 100%">
  653. <el-table-column prop="days" label="第几晚" width="180">
  654. <template slot-scope="scope">
  655. <el-input-number size="mini" :controls="false"
  656. v-model="scope.row.days"></el-input-number>
  657. </template>
  658. </el-table-column>
  659. <el-table-column style="position: relative;" prop="city" label="城 市" width="180">
  660. <!-- <template slot-scope="scope">
  661. <el-input size="mini" v-model="scope.row.city"></el-input>
  662. </template> -->
  663. <template slot-scope="scope">
  664. <el-select @change="TrainingExpenseDataSelect(scope.row, $event, scope.$index)" size="mini"
  665. v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  666. <el-option v-for="item in placeinif" :key="item.id" :label="item.cityname"
  667. :value="item.id">
  668. <span style="float: left">{{ item.cityname }}</span>
  669. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  670. </el-option>
  671. </el-select>
  672. </template>
  673. </el-table-column>
  674. <el-table-column prop="cost" label=" 费用标准" width="180">
  675. <template slot-scope="scope">
  676. <el-input-number @input="Traininginput(scope.row)" size="mini" :precision="2"
  677. :controls="false" v-model="scope.row.cost"></el-input-number>
  678. </template>
  679. </el-table-column>
  680. <el-table-column prop="currencyName" label=" 币 种" width="180">
  681. <template slot-scope="scope">
  682. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  683. </template>
  684. </el-table-column>
  685. <el-table-column prop="subTotal" label="费用小计" width="180">
  686. <template slot-scope="scope">
  687. <div class="sub-boxs">{{ scope.row.subTotal | numFilter }}</div>&nbsp;CNY
  688. </template>
  689. </el-table-column>
  690. <el-table-column prop="address" label="操 作">
  691. <template slot-scope="scope">
  692. <el-button v-if="isSave" style="color: #fff;" size="mini" type="danger"
  693. @click="deleteRow(scope.$index, scope.row, trainingExpenseData, 4)">删除</el-button>
  694. </template>
  695. </el-table-column>
  696. </el-table>
  697. </div>
  698. </div>
  699. <div class="Entry-form-li">
  700. <div class="Entry-li-lable">
  701. <div style="display: flex;align-items: center;">
  702. <el-checkbox v-model="choiceSeven"></el-checkbox>
  703. <div class="li-lable">七、其他:</div>
  704. <div style="display: flex;">
  705. <div class="li-lable">
  706. <label>合计:</label>
  707. <div class="sub-boxs">{{ otherExpense | numFilter }}</div>
  708. <span>元/人</span>
  709. </div>
  710. </div>
  711. <div style="color:red">
  712. &nbsp;注:特殊情况才在这里填写,如:要计算车导费、备用金费用等
  713. </div>
  714. </div>
  715. <div class="btn-Entry">
  716. <el-button type="primary" @click="addlist('其他')" size="mini">新 增</el-button>
  717. </div>
  718. </div>
  719. <div class="Entry-li-inif">
  720. <el-table :data="otherData" border style="width: 100%">
  721. <el-table-column prop="index" label="第几项" width="180">
  722. <template slot-scope="scope">
  723. <el-input-number size="mini" :controls="false"
  724. v-model="scope.row.index"></el-input-number>
  725. </template>
  726. </el-table-column>
  727. <el-table-column style="position: relative;" prop="setDataId" label="费用类型" width="180">
  728. <!-- <template slot-scope="scope">
  729. <el-input size="mini" v-model="scope.row.city"></el-input>
  730. </template> -->
  731. <template slot-scope="scope">
  732. <el-select size="mini" v-model="scope.row.setDataId" filterable placeholder="请选择">
  733. <el-option v-for="item in otherfylx" :key="item.id" :label="item.name"
  734. :value="item.id">
  735. <span style="float: left">{{ item.name }}</span>
  736. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  737. </el-option>
  738. </el-select>
  739. </template>
  740. </el-table-column>
  741. <el-table-column prop="cost" label=" 费用标准" width="180">
  742. <template slot-scope="scope">
  743. <el-input-number @input="otherinput(scope.row)" size="mini" :precision="2"
  744. :controls="false" v-model="scope.row.cost"></el-input-number>
  745. </template>
  746. </el-table-column>
  747. <el-table-column prop="currencyName" label=" 币 种" width="180">
  748. <template slot-scope="scope">
  749. <el-select @change="othercurrencychange(scope.row.currency, scope.row)" size="mini"
  750. v-model="scope.row.currency" filterable placeholder="请选择">
  751. <el-option v-for="item in othercurrencys" :key="item.currencyId"
  752. :label="item.currencyCode" :value="item.currencyId">
  753. <span style="float: left">{{ item.currencyCode + ' 汇率:' + item.rate
  754. }}</span>
  755. </el-option>
  756. </el-select>
  757. <!-- <el-input size="mini" v-model="scope.row.currencyName"></el-input> -->
  758. </template>
  759. </el-table-column>
  760. <el-table-column prop="subTotal" label="费用小计" width="180">
  761. <template slot-scope="scope">
  762. <div class="sub-boxs">{{ scope.row.subTotal | numFilter }}</div>&nbsp;CNY
  763. </template>
  764. </el-table-column>
  765. <el-table-column prop="remark" label="备注" width="450">
  766. <template slot-scope="scope">
  767. <el-input size="mini" v-model="scope.row.remark"></el-input>
  768. </template>
  769. </el-table-column>
  770. <el-table-column prop="address" label="操 作">
  771. <template slot-scope="scope">
  772. <el-button v-if="isSave" style="color: #fff;" size="mini" type="danger"
  773. @click="DeleteOtherExpenses(scope.$index, scope.row, otherData)">删除</el-button>
  774. </template>
  775. </el-table-column>
  776. </el-table>
  777. </div>
  778. </div>
  779. <div class="Entry-form-li">
  780. <div class="Entry-li-lables">
  781. <div class="li-lable">费用总计:</div>
  782. <div style="display: flex;">
  783. <div class="li-lable">
  784. <!-- <el-checkbox style="margin-right: -10px;" v-model="airJJC_Checked"></el-checkbox> -->
  785. <label>(经济舱)</label>
  786. <div class="sub-boxs">{{ jjctotal | numFilter }}</div>
  787. <span>元/人</span>
  788. </div>
  789. &nbsp;&nbsp;&nbsp;&nbsp;
  790. <div class="li-lable">
  791. <!-- <el-checkbox style="margin-right: -10px;" v-model="airGWC_Checked"></el-checkbox> -->
  792. <label>(公务舱)</label>
  793. <div class="sub-boxs">{{ gwctotal | numFilter }}</div>
  794. <span>元/人</span>
  795. </div>
  796. &nbsp;&nbsp;&nbsp;&nbsp;
  797. <div class="li-lable">
  798. <!-- <el-checkbox style="margin-right: -10px;" v-model="airGWC_Checked"></el-checkbox> -->
  799. <label>(头等舱)</label>
  800. <div class="sub-boxs">{{ tdctotal | numFilter }}</div>
  801. <span>元/人</span>
  802. </div>
  803. </div>
  804. </div>
  805. </div>
  806. </div>
  807. </div>
  808. </div>
  809. </template>
  810. <script>
  811. import { Decimal } from 'decimal.js'
  812. import { debounce } from '../../store/statice'
  813. import { number } from 'echarts';
  814. export default {
  815. data() {
  816. return {
  817. fullscreenLoading: false,
  818. options: [],
  819. filteredOptions: [],
  820. searchMode: 'character', // 'character': 字符匹配, 'fuzzy': 模糊匹配
  821. listvalue: 1005,
  822. tablevalue: '',
  823. listvalueoptions: [],
  824. tablevalueoptions: [],
  825. //是否计算Checkbox
  826. choiceOne: false,//境内费用(其他费用)选择框
  827. choiceTwo: false,//国际旅费合计选择框
  828. choiceThree: false,//住宿费合计选择框
  829. choiceFour: false,//伙食费合计选择框
  830. choiceFive: false,//公杂费合计选择框
  831. choiceSix: false,//培训费用选择框
  832. choiceSeven: false,//其他费用选择框
  833. sumJJC: false,//经济舱小计选择框
  834. sumGWC: false,//公务舱小计选择框
  835. sumTDC: false,//头等舱小计选择框
  836. airJJC_Checked: false,//经济舱选择框
  837. airGWC_Checked: false,//公务舱选择框
  838. airTDC_Checked: false,//公务舱选择框
  839. isAssignPerm:false,
  840. provinceId:'',
  841. userId: '',
  842. token: '',
  843. value: '',
  844. options: [],
  845. Visafees: '',
  846. Visadepicted: '',
  847. currencys: [],
  848. currencyss: [],
  849. DomesticFees: {
  850. visafees: '',//签证费
  851. visafeesDescription: '',//签证费用描述
  852. vaccinefees: 0,//疫苗费
  853. nucleicfees: 0,//核酸检测费
  854. serviceCharge: 0,//服务费
  855. insurance: 500,//保险费
  856. ticketsExhibitionL: 0,//参展门票
  857. total: 0,
  858. firstItemRemark:''//备注
  859. },
  860. TotalExpenses: {
  861. EconomyClass: 0,//经济舱
  862. BusinessClass: 0,//公务舱
  863. Firstclass: 0,//头等舱
  864. TravellingExpensesJJ: 0,//城市区间交通费JJ
  865. TravellingExpensesGW: 0,//城市区间交通费GW
  866. TravellingExpensesTD: 0,//城市区间交通费TD
  867. EconomyClasstotal: 0,//经济舱合计
  868. BusinessClasstotal: 0,//公务舱合计
  869. Firstclasstotal: 0,//头等舱合计
  870. twoItemRemark:''//备注
  871. },
  872. TotalAccommodationFee: 0,//住宿费合计
  873. TotalMeals: 0,//伙食费合计
  874. TotalMiscellaneous: 0,//公杂费合计
  875. trainingExpense: 0,//培训费合计
  876. otherExpense: 0,//其他费用合计
  877. quarterageData: [],
  878. boardWagesData: [],
  879. miscellaneousFeeData: [],
  880. trainingExpenseData: [],
  881. otherData: [],
  882. placeinif: [],
  883. //下拉框
  884. treeData: "",
  885. treeDataValue: "",
  886. data: [],
  887. defaultProps: {
  888. children: "cityData",
  889. label: "city",
  890. // label: "country",
  891. },
  892. jjctotal: 0,//经济舱合计
  893. gwctotal: 0,//公务舱合计
  894. tdctotal: 0,//公务舱合计
  895. storageid: 0,
  896. visabeizhu: "",
  897. ID: '',
  898. TicketJudgment: {},
  899. CurrencysRemark: '',
  900. //监听币种数组
  901. watchedPrice: null,
  902. cubtn: false,
  903. getvisafeebtn: false,
  904. visainfo: {},
  905. //其他币种
  906. othercurrencys: [],
  907. otherfylx: [],
  908. //设置权限
  909. setpermissions:false,
  910. isSave:false,
  911. isView:false,
  912. viewUsers:[],
  913. viewUsersby:[],
  914. viewUsersarr:[],
  915. //又憋两坨
  916. airDataArr:[],
  917. airDataArrvalue:'',
  918. //实时汇率
  919. liveRateInfos:[],
  920. SSHLVisible:false,
  921. //交通费弹窗
  922. Transportationdata:[
  923. {
  924. coefficient: 2.5,
  925. cost: 0,
  926. currencyName: "CNY",
  927. guideCost: 0,
  928. no: 1,
  929. otherCost: 0,
  930. ovId: '',
  931. quote: 0,
  932. remark: "",
  933. serviceCount: 1
  934. }
  935. ],
  936. Transportationdatatotal:0,
  937. TransportationVisible:false,
  938. currencies:[],
  939. lache:[
  940. {
  941. a:1,
  942. b:"",
  943. c:"",
  944. }
  945. ],
  946. huoche:[
  947. {
  948. a:1,
  949. b:"",
  950. c:"",
  951. }
  952. ],
  953. chengshijipiao:[
  954. {
  955. a:1,
  956. b:"",
  957. c:"",
  958. }
  959. ],
  960. Basicdata:{},
  961. fulecao:[],
  962. pullCartFeeTotal:0,
  963. pullCartFeeDetails:[
  964. {
  965. no: 1,
  966. cost: 0,
  967. coefficient: 2.50,
  968. currencyName: "",
  969. quote: 0,
  970. remark: ""
  971. }
  972. ],
  973. trainFeeTotal:0,
  974. trainFeeDetails:[
  975. {
  976. no: 1,
  977. cost: 0,
  978. coefficient: 2.50,
  979. currencyName: "",
  980. quote: 0,
  981. remark: ""
  982. }
  983. ],
  984. cityAirTicketFeeTotal:0,
  985. cityAirTicketFeeDetails:[
  986. {
  987. no: 1,
  988. cost: 0,
  989. coefficient: 2.50,
  990. currencyName: "",
  991. quote: 0,
  992. remark: ""
  993. }
  994. ],
  995. lastUpdateUserName:'',
  996. lastUpdateTime:'',
  997. createUserName:'',
  998. createTime:'',
  999. }
  1000. },
  1001. methods: {
  1002. advancedFilter(query) {
  1003. if (!query || query.trim() === '') {
  1004. this.filteredOptions = [...this.options];
  1005. return;
  1006. }
  1007. const trimmedQuery = query.trim();
  1008. if (this.searchMode === 'character') {
  1009. // 字符匹配模式:每个字都必须包含
  1010. this.characterMatchFilter(trimmedQuery);
  1011. } else {
  1012. // 模糊匹配模式(默认的filterable行为)
  1013. this.fuzzyMatchFilter(trimmedQuery);
  1014. }
  1015. },
  1016. /*** 严格的字符匹配 - 每个查询字符都必须出现*/
  1017. characterMatchFilter(query) {
  1018. const queryChars = query.split('').filter(char => char.trim() !== '');
  1019. this.filteredOptions = this.options.filter(item => {
  1020. const groupName = item.groupName || '';
  1021. return queryChars.every(char => groupName.includes(char));
  1022. });
  1023. },
  1024. /*** 模糊匹配 - 包含整个查询字符串即可*/
  1025. fuzzyMatchFilter(query) {
  1026. const lowerQuery = query.toLowerCase();
  1027. this.filteredOptions = this.options.filter(item => {
  1028. const groupName = (item.groupName || '').toLowerCase();
  1029. return groupName.includes(lowerQuery);
  1030. });
  1031. },
  1032. //baoliuliangweixiaoshu
  1033. reservetwo(value) {
  1034. // 截取当前数据到小数点后两位
  1035. let realVal = new Decimal(value).toFixed(2)
  1036. return realVal
  1037. },
  1038. //获取团组
  1039. GetEnterExitCostDataSource() {
  1040. var url = "/api/Groups/GetEnterExitCostDataSource"
  1041. var that = this
  1042. this.$axios({
  1043. method: 'post',
  1044. url: url,
  1045. headers: {
  1046. Authorization: 'Bearer ' + this.token
  1047. },
  1048. data: {
  1049. portType: 1
  1050. }
  1051. }).then(function (res) {
  1052. if (res.data.code == 200) {
  1053. that.options = res.data.data.groupNameData;
  1054. that.filteredOptions = that.options;
  1055. that.currencys = res.data.data.currencyInit;
  1056. that.viewUsersarr= res.data.data.viewPermissionData;
  1057. if (that.value == null) {
  1058. that.value = res.data.data.groupNameData[0].id;
  1059. that.provinceId = res.data.data.groupNameData[0].provinceId;
  1060. }
  1061. that.GetEnterExitCostInfobyDiId();
  1062. that.PostGroupTeamRateByDiIdAndCTableId();
  1063. }
  1064. })
  1065. },
  1066. //获取币种
  1067. PostGroupTeamRateByDiIdAndCTableId() {
  1068. this.othercurrencys = [];
  1069. var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
  1070. var that = this
  1071. this.$axios({
  1072. method: 'post',
  1073. url: url,
  1074. headers: {
  1075. Authorization: 'Bearer ' + this.token
  1076. },
  1077. data: {
  1078. portType: 1,
  1079. diId: that.value,
  1080. cTable: 98
  1081. }
  1082. }).then(function (res) {
  1083. if (res.data.code == 200) {
  1084. that.othercurrencys = res.data.data.teamRates;
  1085. for (let sr = 0; sr < that.othercurrencys.length; sr++) {
  1086. if (that.othercurrencys[sr].currencyCode != 'CNY') {
  1087. that.othercurrencys[sr].rate = new Decimal(that.othercurrencys[sr].rate * 1.03).toFixed(4)
  1088. }
  1089. for (let y = 0; y < that.currencys.length; y++) {
  1090. if (that.currencys[y].currencyCode == that.othercurrencys[sr].currencyCode) {
  1091. that.othercurrencys[sr].rate = that.currencys[y].rate;
  1092. }
  1093. }
  1094. }
  1095. } else {
  1096. that.$message.error(res.data.msg);
  1097. }
  1098. })
  1099. },
  1100. //获取类型
  1101. QuerySetData() {
  1102. var url = "/api/System/QuerySetData"
  1103. var that = this
  1104. this.$axios({
  1105. method: 'post',
  1106. url: url,
  1107. headers: {
  1108. Authorization: 'Bearer ' + this.token
  1109. },
  1110. data: {
  1111. dataType: 92
  1112. }
  1113. }).then(function (res) {
  1114. if (res.data.code == 200) {
  1115. that.otherfylx = res.data.data;
  1116. } else {
  1117. that.$message.error(res.data.msg);
  1118. }
  1119. })
  1120. },
  1121. //获取签证标注
  1122. GetEnterExitCostCorrelationTips(val) {
  1123. this.airDataArr=[]
  1124. this.getvisafeebtn = false;
  1125. if (val == 1) {
  1126. // this.TotalExpenses.EconomyClass = 0;
  1127. // this.TotalExpenses.BusinessClass = 0;
  1128. // this.TotalExpenses.Firstclass = 0;
  1129. this.DomesticFees.visafees = 0;
  1130. this.DomesticFees.visafeesDescription = "";
  1131. var url = "/api/Groups/GetEnterExitCostCorrelationTips"
  1132. var that = this
  1133. this.$axios({
  1134. method: 'post',
  1135. url: url,
  1136. headers: {
  1137. Authorization: 'Bearer ' + this.token
  1138. },
  1139. data: {
  1140. portType: 1,
  1141. diId: that.value
  1142. }
  1143. }).then(function (res) {
  1144. if (res.data.code == 200) {
  1145. // that.TotalExpenses.EconomyClass = res.data.data.airData[0].jjcCurrentRate;
  1146. // that.TotalExpenses.BusinessClass = res.data.data.airData[0].gwcCurrentRate;
  1147. // that.TotalExpenses.Firstclass = res.data.data.airData[0].tdcCurrentRate;
  1148. that.airDataArr=res.data.data.airData;
  1149. that.DomesticFees.visafees = res.data.data.visaData.feeTotal;
  1150. that.DomesticFees.visafeesDescription = res.data.data.visaData.remark;
  1151. } else {
  1152. that.$message.error(res.data.msg);
  1153. }
  1154. })
  1155. } else {
  1156. var url = "/api/Groups/GetEnterExitCostCorrelationTips"
  1157. var that = this
  1158. this.$axios({
  1159. method: 'post',
  1160. url: url,
  1161. headers: {
  1162. Authorization: 'Bearer ' + this.token
  1163. },
  1164. data: {
  1165. portType: 1,
  1166. diId: that.value
  1167. }
  1168. }).then(function (res) {
  1169. if (res.data.code == 200) {
  1170. that.TicketJudgment = res.data.data.airData;
  1171. that.airDataArr=res.data.data.airData;
  1172. // if (that.TotalExpenses.EconomyClass==0) {
  1173. // that.TotalExpenses.EconomyClass = that.airDataArr[0].jjcCurrentRate;
  1174. // }
  1175. // if (that.TotalExpenses.BusinessClass==0) {
  1176. // that.TotalExpenses.BusinessClass = that.airDataArr[0].gwcCurrentRate;
  1177. // }
  1178. // if (that.TotalExpenses.Firstclass==0) {
  1179. // that.TotalExpenses.Firstclass = that.airDataArr[0].tdcCurrentRate;
  1180. // }
  1181. that.visainfo = res.data.data.visaData;
  1182. that.currencyss = res.data.data.reteInfos;
  1183. that.SSHLVisible=true;
  1184. if (that.DomesticFees.visafees != res.data.data.visaData.feeTotal && res.data.data.visaData.feeTotal != 0) {
  1185. that.getvisafeebtn = true;
  1186. }
  1187. for (let s = 0; s < that.currencys.length; s++) {
  1188. if (that.currencys[s].rate != that.currencyss[s].rate) {
  1189. that.cubtn = true;
  1190. that.CurrencysRemark = '移上查看实时汇率'
  1191. return
  1192. } else {
  1193. that.cubtn = false;
  1194. }
  1195. }
  1196. } else {
  1197. that.$message.error(res.data.msg);
  1198. }
  1199. })
  1200. }
  1201. },
  1202. //机票费用填入
  1203. Fillin(val) {
  1204. var obj = {}
  1205. obj = this.airDataArr.find(function (i,indexs) {
  1206. return i.remark === val
  1207. });
  1208. this.TotalExpenses.EconomyClass = obj.jjcCurrentRate;
  1209. this.TotalExpenses.BusinessClass = obj.gwcCurrentRate;
  1210. this.TotalExpenses.Firstclass = obj.tdcCurrentRate;
  1211. //添加城市交通费
  1212. },
  1213. //获取文件
  1214. EnterExitCostFileOwner() {
  1215. this.listvalueoptions=[];
  1216. this.tablevalueoptions=[];
  1217. var url = "/api/Groups/EnterExitCostFileOwner/"+this.provinceId
  1218. var that = this
  1219. this.$axios({
  1220. method: 'get',
  1221. url: url,
  1222. }).then(function (res) {
  1223. if (res.data.code == 200) {
  1224. that.listvalueoptions = res.data.data.wordTypeData;
  1225. that.tablevalueoptions = res.data.data.excelTypeData;
  1226. }else {
  1227. that.$message.error(res.data.msg);
  1228. }
  1229. })
  1230. },
  1231. //获取费用标注
  1232. GetNationalTravelFeeData() {
  1233. var url = "/api/Groups/GetNationalTravelFeeData"
  1234. var that = this
  1235. this.$axios({
  1236. method: 'post',
  1237. url: url,
  1238. headers: {
  1239. Authorization: 'Bearer ' + this.token
  1240. },
  1241. data: {
  1242. portType: 1,
  1243. provinceId:that.provinceId,
  1244. }
  1245. }).then(function (res) {
  1246. let placeinifarr = [];
  1247. that.placeinif=[];
  1248. if (res.data.code == 200) {
  1249. for (let i = 0; i < res.data.data.length; i++) {
  1250. res.data.data[i]['cityname'] = res.data.data[i].country + '-' + res.data.data[i].city;
  1251. placeinifarr.push(res.data.data[i]);
  1252. }
  1253. that.placeinif = placeinifarr;
  1254. console.log(that.placeinif);
  1255. }
  1256. })
  1257. },
  1258. GetEnterExitCostInfobyDiId() {
  1259. //初始化数据
  1260. this.ID = '';
  1261. // this.currencys=[]
  1262. this.viewUsers=[];
  1263. this.viewUsersby=[];
  1264. this.TotalAccommodationFee = 0;//住宿费合计
  1265. this.TotalMeals = 0;//伙食费合计
  1266. this.TotalMiscellaneous = 0;//公杂费合计
  1267. this.trainingExpense = 0;//培训费合计
  1268. this.otherExpense = 0;//其他费合计
  1269. this.DomesticFees = {
  1270. visafees: '',//签证费
  1271. visafeesDescription: '',//签证费用描述
  1272. vaccinefees: 0,//疫苗费
  1273. nucleicfees: 0,//核酸检测费
  1274. serviceCharge: 0,//服务费
  1275. insurance: 500,//保险费
  1276. ticketsExhibitionL: 0,//参展门票
  1277. total: 0,
  1278. firstItemRemark:''//备注
  1279. }
  1280. this.TotalExpenses = {
  1281. EconomyClass: 0,//经济舱
  1282. BusinessClass: 0,//公务舱
  1283. Firstclass: 0,//TD舱
  1284. TravellingExpensesJJ: 0,//城市区间交通费JJ
  1285. TravellingExpensesGW: 0,//城市区间交通费GW
  1286. TravellingExpensesTD: 0,//城市区间交通费TD
  1287. EconomyClasstotal: 0,//经济舱合计
  1288. BusinessClasstotal: 0,//公务舱合计
  1289. Firstclasstotal: 0,//TD舱合计
  1290. twoItemRemark:''//备注
  1291. }
  1292. this.choiceOne = false//境内费用(其他费用)选择框
  1293. this.choiceTwo = false//国际旅费合计选择框
  1294. this.choiceThree = false//住宿费合计选择框
  1295. this.choiceFour = false//伙食费合计选择框
  1296. this.choiceFive = false//公杂费合计选择框
  1297. this.choiceSix = false//培训费用选择框
  1298. this.choiceSeven = false//其他费用选择框
  1299. this.sumJJC = false//经济舱小计选择框
  1300. this.sumGWC = false//公务舱小计选择框
  1301. this.sumTDC = false//公务舱小计选择框
  1302. this.airJJC_Checked = false//经济舱选择框
  1303. this.airGWC_Checked = false//公务舱选择框
  1304. this.isSave = false//保存权限
  1305. this.isView = false//查看权限
  1306. this.storageid = 0
  1307. this.quarterageData = [
  1308. {
  1309. id: 0,
  1310. diId: this.value,
  1311. type: 1,
  1312. days: 1,
  1313. nationalTravelFeeId: '',
  1314. cost: 0,
  1315. currency: 0,
  1316. subTotal: 0,
  1317. remark: '',
  1318. },
  1319. {
  1320. id: 0,
  1321. diId: this.value,
  1322. type: 1,
  1323. days: 2,
  1324. nationalTravelFeeId: '',
  1325. cost: 0,
  1326. currency: 0,
  1327. subTotal: 0,
  1328. remark: '',
  1329. },
  1330. {
  1331. id: 0,
  1332. diId: this.value,
  1333. type: 1,
  1334. days: 3,
  1335. nationalTravelFeeId: '',
  1336. cost: 0,
  1337. currency: 0,
  1338. subTotal: 0,
  1339. remark: '',
  1340. },
  1341. {
  1342. id: 0,
  1343. diId: this.value,
  1344. type: 1,
  1345. days: 4,
  1346. nationalTravelFeeId: '',
  1347. cost: 0,
  1348. currency: 0,
  1349. subTotal: 0,
  1350. remark: '',
  1351. },
  1352. {
  1353. id: 0,
  1354. diId: this.value,
  1355. type: 1,
  1356. days: 5,
  1357. nationalTravelFeeId: '',
  1358. cost: 0,
  1359. currency: 0,
  1360. subTotal: 0,
  1361. remark: '',
  1362. },
  1363. {
  1364. id: 0,
  1365. diId: this.value,
  1366. type: 1,
  1367. days: 6,
  1368. nationalTravelFeeId: '',
  1369. cost: 0,
  1370. currency: 0,
  1371. subTotal: 0,
  1372. remark: '',
  1373. },
  1374. {
  1375. id: 0,
  1376. diId: this.value,
  1377. type: 1,
  1378. days: 7,
  1379. nationalTravelFeeId: '',
  1380. cost: 0,
  1381. currency: 0,
  1382. subTotal: 0,
  1383. remark: '',
  1384. },
  1385. {
  1386. id: 0,
  1387. diId: this.value,
  1388. type: 1,
  1389. days: 8,
  1390. nationalTravelFeeId: '',
  1391. cost: 0,
  1392. currency: 0,
  1393. subTotal: 0,
  1394. remark: '',
  1395. },
  1396. ]
  1397. this.boardWagesData = [
  1398. {
  1399. id: 0,
  1400. diId: this.value,
  1401. type: 2,
  1402. days: 1,
  1403. nationalTravelFeeId: '',
  1404. cost: 0,
  1405. currency: 0,
  1406. subTotal: 0,
  1407. remark: '',
  1408. },
  1409. {
  1410. id: 0,
  1411. diId: this.value,
  1412. type: 2,
  1413. days: 2,
  1414. nationalTravelFeeId: '',
  1415. cost: 0,
  1416. currency: 0,
  1417. subTotal: 0,
  1418. remark: '',
  1419. },
  1420. {
  1421. id: 0,
  1422. diId: this.value,
  1423. type: 2,
  1424. days: 3,
  1425. nationalTravelFeeId: '',
  1426. cost: 0,
  1427. currency: 0,
  1428. subTotal: 0,
  1429. remark: '',
  1430. },
  1431. {
  1432. id: 0,
  1433. diId: this.value,
  1434. type: 2,
  1435. days: 4,
  1436. nationalTravelFeeId: '',
  1437. cost: 0,
  1438. currency: 0,
  1439. subTotal: 0,
  1440. remark: '',
  1441. },
  1442. {
  1443. id: 0,
  1444. diId: this.value,
  1445. type: 2,
  1446. days: 5,
  1447. nationalTravelFeeId: '',
  1448. cost: 0,
  1449. currency: 0,
  1450. subTotal: 0,
  1451. remark: '',
  1452. },
  1453. {
  1454. id: 0,
  1455. diId: this.value,
  1456. type: 2,
  1457. days: 6,
  1458. nationalTravelFeeId: '',
  1459. cost: 0,
  1460. currency: 0,
  1461. subTotal: 0,
  1462. remark: '',
  1463. },
  1464. {
  1465. id: 0,
  1466. diId: this.value,
  1467. type: 2,
  1468. days: 7,
  1469. nationalTravelFeeId: '',
  1470. cost: 0,
  1471. currency: 0,
  1472. subTotal: 0,
  1473. remark: '',
  1474. },
  1475. {
  1476. id: 0,
  1477. diId: this.value,
  1478. type: 2,
  1479. days: 8,
  1480. nationalTravelFeeId: '',
  1481. cost: 0,
  1482. currency: 0,
  1483. subTotal: 0,
  1484. remark: '',
  1485. },
  1486. ]
  1487. this.miscellaneousFeeData = [
  1488. {
  1489. id: 0,
  1490. diId: this.value,
  1491. type: 3,
  1492. days: 1,
  1493. nationalTravelFeeId: '',
  1494. cost: 0,
  1495. currency: 0,
  1496. subTotal: 0,
  1497. remark: '',
  1498. },
  1499. {
  1500. id: 0,
  1501. diId: this.value,
  1502. type: 3,
  1503. days: 2,
  1504. nationalTravelFeeId: '',
  1505. cost: 0,
  1506. currency: 0,
  1507. subTotal: 0,
  1508. remark: '',
  1509. },
  1510. {
  1511. id: 0,
  1512. diId: this.value,
  1513. type: 3,
  1514. days: 3,
  1515. nationalTravelFeeId: '',
  1516. cost: 0,
  1517. currency: 0,
  1518. subTotal: 0,
  1519. remark: '',
  1520. },
  1521. {
  1522. id: 0,
  1523. diId: this.value,
  1524. type: 3,
  1525. days: 4,
  1526. nationalTravelFeeId: '',
  1527. cost: 0,
  1528. currency: 0,
  1529. subTotal: 0,
  1530. remark: '',
  1531. },
  1532. {
  1533. id: 0,
  1534. diId: this.value,
  1535. type: 3,
  1536. days: 5,
  1537. nationalTravelFeeId: '',
  1538. cost: 0,
  1539. currency: 0,
  1540. subTotal: 0,
  1541. remark: '',
  1542. },
  1543. {
  1544. id: 0,
  1545. diId: this.value,
  1546. type: 3,
  1547. days: 6,
  1548. nationalTravelFeeId: '',
  1549. cost: 0,
  1550. currency: 0,
  1551. subTotal: 0,
  1552. remark: '',
  1553. },
  1554. {
  1555. id: 0,
  1556. diId: this.value,
  1557. type: 3,
  1558. days: 7,
  1559. nationalTravelFeeId: '',
  1560. cost: 0,
  1561. currency: 0,
  1562. subTotal: 0,
  1563. remark: '',
  1564. },
  1565. {
  1566. id: 0,
  1567. diId: this.value,
  1568. type: 3,
  1569. days: 8,
  1570. nationalTravelFeeId: '',
  1571. cost: 0,
  1572. currency: 0,
  1573. subTotal: 0,
  1574. remark: '',
  1575. },
  1576. ]
  1577. this.trainingExpenseData = [
  1578. {
  1579. id: 0,
  1580. diId: this.value,
  1581. type: 4,
  1582. days: 1,
  1583. nationalTravelFeeId: '',
  1584. cost: 0,
  1585. currency: 0,
  1586. subTotal: 0,
  1587. remark: '',
  1588. },
  1589. {
  1590. id: 0,
  1591. diId: this.value,
  1592. type: 4,
  1593. days: 2,
  1594. nationalTravelFeeId: '',
  1595. cost: 0,
  1596. currency: 0,
  1597. subTotal: 0,
  1598. remark: '',
  1599. },
  1600. {
  1601. id: 0,
  1602. diId: this.value,
  1603. type: 4,
  1604. days: 3,
  1605. nationalTravelFeeId: '',
  1606. cost: 0,
  1607. currency: 0,
  1608. subTotal: 0,
  1609. remark: '',
  1610. },
  1611. {
  1612. id: 0,
  1613. diId: this.value,
  1614. type: 4,
  1615. days: 4,
  1616. nationalTravelFeeId: '',
  1617. cost: 0,
  1618. currency: 0,
  1619. subTotal: 0,
  1620. remark: '',
  1621. },
  1622. {
  1623. id: 0,
  1624. diId: this.value,
  1625. type: 4,
  1626. days: 5,
  1627. nationalTravelFeeId: '',
  1628. cost: 0,
  1629. currency: 0,
  1630. subTotal: 0,
  1631. remark: '',
  1632. },
  1633. {
  1634. id: 0,
  1635. diId: this.value,
  1636. type: 4,
  1637. days: 6,
  1638. nationalTravelFeeId: '',
  1639. cost: 0,
  1640. currency: 0,
  1641. subTotal: 0,
  1642. remark: '',
  1643. },
  1644. {
  1645. id: 0,
  1646. diId: this.value,
  1647. type: 4,
  1648. days: 7,
  1649. nationalTravelFeeId: '',
  1650. cost: 0,
  1651. currency: 0,
  1652. subTotal: 0,
  1653. remark: '',
  1654. },
  1655. {
  1656. id: 0,
  1657. diId: this.value,
  1658. type: 4,
  1659. days: 8,
  1660. nationalTravelFeeId: '',
  1661. cost: 0,
  1662. currency: 0,
  1663. subTotal: 0,
  1664. remark: '',
  1665. },
  1666. ]
  1667. this.otherData = [
  1668. {
  1669. id: 0,
  1670. diId: this.value,
  1671. setDataId: '',
  1672. index: 1,
  1673. cost: '',
  1674. cost: 0,
  1675. currency: '',
  1676. subTotal: 0,
  1677. remark:'',
  1678. },
  1679. {
  1680. id: 0,
  1681. diId: this.value,
  1682. setDataId: '',
  1683. index: 2,
  1684. cost: '',
  1685. cost: 0,
  1686. currency: '',
  1687. subTotal: 0,
  1688. remark:'',
  1689. },
  1690. {
  1691. id: 0,
  1692. diId: this.value,
  1693. setDataId: '',
  1694. index: 3,
  1695. cost: '',
  1696. cost: 0,
  1697. currency: '',
  1698. subTotal: 0,
  1699. remark:'',
  1700. },
  1701. {
  1702. id: 0,
  1703. diId: this.value,
  1704. setDataId: '',
  1705. index: 4,
  1706. cost: '',
  1707. cost: 0,
  1708. currency: '',
  1709. subTotal: 0,
  1710. remark:'',
  1711. },
  1712. {
  1713. id: 0,
  1714. diId: this.value,
  1715. setDataId: '',
  1716. index: 5,
  1717. cost: '',
  1718. cost: 0,
  1719. currency: '',
  1720. subTotal: 0,
  1721. remark:'',
  1722. },
  1723. {
  1724. id: 0,
  1725. diId: this.value,
  1726. setDataId: '',
  1727. index: 6,
  1728. cost: '',
  1729. cost: 0,
  1730. currency: '',
  1731. subTotal: 0,
  1732. remark:'',
  1733. },
  1734. {
  1735. id: 0,
  1736. diId: this.value,
  1737. setDataId: '',
  1738. index: 7,
  1739. cost: '',
  1740. cost: 0,
  1741. currency: '',
  1742. subTotal: 0,
  1743. remark:'',
  1744. },
  1745. {
  1746. id: 0,
  1747. diId: this.value,
  1748. setDataId: '',
  1749. index: 8,
  1750. cost: '',
  1751. cost: 0,
  1752. currency: '',
  1753. subTotal: 0,
  1754. remark:'',
  1755. },
  1756. ]
  1757. this.isAssignPerm=false;
  1758. var url = "/api/Groups/GetEnterExitCostInfobyDiId"
  1759. var that = this
  1760. this.$axios({
  1761. method: 'post',
  1762. url: url,
  1763. headers: {
  1764. Authorization: 'Bearer ' + this.token
  1765. },
  1766. data: {
  1767. portType: 1,
  1768. diId: that.value,
  1769. currUserId:that.userId
  1770. }
  1771. }).then(function (res) {
  1772. if (res.data.code == 200) {
  1773. that.ID = res.data.data.id;
  1774. that.provinceId=res.data.data.provinceId;
  1775. //汇率
  1776. that.currencys = res.data.data.currencys;
  1777. that.isAssignPerm=res.data.data.isAssignPerm;
  1778. //权限
  1779. that.isSave=res.data.data.isSave;
  1780. that.isView=res.data.data.isView;
  1781. that.viewUsers=res.data.data.viewUsers;
  1782. that.viewUsersby=res.data.data.viewUsers;
  1783. //境内费用
  1784. that.DomesticFees.visafees = res.data.data.visa;
  1785. that.DomesticFees.visafeesDescription = res.data.data.visaRemark;
  1786. that.DomesticFees.vaccinefees = res.data.data.yiMiao;
  1787. that.DomesticFees.nucleicfees = res.data.data.heSuan;
  1788. that.DomesticFees.serviceCharge = res.data.data.service;
  1789. that.DomesticFees.insurance = res.data.data.safe;
  1790. that.DomesticFees.ticketsExhibitionL = res.data.data.ticket;
  1791. that.DomesticFees.firstItemRemark = res.data.data.firstItemRemark;
  1792. //国际旅费
  1793. that.TotalExpenses.EconomyClass = res.data.data.airJJ;
  1794. that.TotalExpenses.BusinessClass = res.data.data.airGW;
  1795. that.TotalExpenses.Firstclass = res.data.data.airTD;
  1796. that.TotalExpenses.TravellingExpensesJJ = res.data.data.cityTranffic;
  1797. that.TotalExpenses.TravellingExpensesGW = res.data.data.cityTranffic1;
  1798. that.TotalExpenses.TravellingExpensesTD = res.data.data.cityTranffic2;
  1799. that.TotalExpenses.twoItemRemark = res.data.data.twoItemRemark;
  1800. //是否计算Checkbox
  1801. that.choiceOne = res.data.data.choiceOne == 1 ? true : false;
  1802. that.choiceTwo = res.data.data.choiceTwo == 1 ? true : false;
  1803. that.choiceThree = res.data.data.choiceThree == 1 ? true : false;
  1804. that.choiceFour = res.data.data.choiceFour == 1 ? true : false;
  1805. that.choiceFive = res.data.data.choiceFive == 1 ? true : false;
  1806. that.choiceSix = res.data.data.choiceSix == 1 ? true : false;
  1807. that.choiceSeven = res.data.data.otherExpenses_Checked == 1 ? true : false;
  1808. that.sumJJC = res.data.data.sumJJC == 1 ? true : false;
  1809. that.sumGWC = res.data.data.sumGWC == 1 ? true : false;
  1810. that.sumTDC = res.data.data.sumTDC == 1 ? true : false;
  1811. that.airJJC_Checked = res.data.data.airJJC_Checked == 1 ? true : false;
  1812. that.airGWC_Checked = res.data.data.airGWC_Checked == 1 ? true : false;
  1813. //住宿费
  1814. that.quarterageData = res.data.data.quarterageData;
  1815. for (let a = 0; a < res.data.data.quarterageData.length; a++) {
  1816. that.TotalAccommodationFee += Number(res.data.data.quarterageData[a].subTotal)
  1817. }
  1818. //伙食费
  1819. that.boardWagesData = res.data.data.boardWagesData;
  1820. for (let b = 0; b < res.data.data.boardWagesData.length; b++) {
  1821. that.TotalMeals += res.data.data.boardWagesData[b].subTotal
  1822. }
  1823. //公杂费
  1824. that.miscellaneousFeeData = res.data.data.miscellaneousFeeData;
  1825. for (let c = 0; c < res.data.data.miscellaneousFeeData.length; c++) {
  1826. that.TotalMiscellaneous += res.data.data.miscellaneousFeeData[c].subTotal
  1827. }
  1828. //培训费
  1829. that.trainingExpenseData = res.data.data.trainingExpenseData;
  1830. for (let d = 0; d < res.data.data.trainingExpenseData.length; d++) {
  1831. that.trainingExpense += res.data.data.trainingExpenseData[d].subTotal
  1832. }
  1833. //其他费
  1834. that.otherData = res.data.data.dayOtherPriceData;
  1835. for (let e = 0; e < res.data.data.dayOtherPriceData.length; e++) {
  1836. that.otherExpense += res.data.data.dayOtherPriceData[e].subTotal
  1837. }
  1838. that.storageid = res.data.data.id;
  1839. // that.GetNationalTravelFeeData();
  1840. that.fullscreenLoading = false;
  1841. that.GetEnterExitCostCorrelationTips(2);
  1842. that.EnterExitCostFileOwner();
  1843. that.GetNationalTravelFeeData();
  1844. } else {
  1845. that.fullscreenLoading = false;
  1846. that.provinceId=res.data.data.provinceId;
  1847. // that.EnterExitCostFileOwner();
  1848. that.GetNationalTravelFeeData();
  1849. that.GetEnterExitCostCorrelationTips(1);
  1850. that.$message.warning(res.data.msg);
  1851. if (res.data.msg=='未查询出数据!可操作该条数据!') {
  1852. that.isSave=true;
  1853. that.isView=true;
  1854. }
  1855. }
  1856. })
  1857. },
  1858. //全部清空
  1859. cleanout() {
  1860. this.fullscreenLoading = true
  1861. this.$confirm('此操作将全部清空, 是否继续?', '提示', {
  1862. confirmButtonText: '确定',
  1863. cancelButtonText: '取消',
  1864. type: 'warning'
  1865. }).then(() => {
  1866. var url = "/api/Groups/PostEnterExitCostOneClickClear"
  1867. var that = this
  1868. this.$axios({
  1869. method: 'post',
  1870. url: url,
  1871. headers: {
  1872. Authorization: 'Bearer ' + this.token
  1873. },
  1874. data: {
  1875. portType: 1,
  1876. diId: that.value,
  1877. userId: that.userId,
  1878. id: that.ID
  1879. }
  1880. }).then(function (res) {
  1881. if (res.data.code == 200) {
  1882. that.$message({
  1883. type: 'success',
  1884. message: res.data.msg
  1885. });
  1886. that.GetEnterExitCostInfobyDiId()
  1887. } else {
  1888. that.fullscreenLoading = false;
  1889. that.$message.error(res.data.msg);
  1890. }
  1891. })
  1892. }).catch(() => {
  1893. this.fullscreenLoading = false;
  1894. this.$message({
  1895. type: 'info',
  1896. message: '已取消清空'
  1897. });
  1898. });
  1899. },
  1900. //下拉
  1901. handNodeClick(data, node, e) {
  1902. this.treeDataValue = data.name
  1903. this.treeData = data.name
  1904. },
  1905. //sr需求
  1906. SRrequirement(obj) {
  1907. var currencyinfo = {}
  1908. var rate = 0
  1909. currencyinfo = this.othercurrencys.find(function (i) {
  1910. return i.currencyId === obj.currency
  1911. });
  1912. rate = currencyinfo.rate;
  1913. this.otherExpense = 0;
  1914. for (let l = 0; l < this.otherData.length; l++) {
  1915. this.otherData[l].currency = obj.currency
  1916. this.otherData[l].subTotal = Number(this.otherData[l].cost) * Number(rate);
  1917. this.otherExpense += this.otherData[l].subTotal;
  1918. }
  1919. },
  1920. //住宿地区选择
  1921. changeSelect(val, item, index) {
  1922. var xiabiao=0
  1923. var rate = 0
  1924. var obj = {}
  1925. obj = this.placeinif.find(function (i,indexs) {
  1926. xiabiao=indexs
  1927. return i.id === item
  1928. });
  1929. this.placeinif.splice(xiabiao,1);
  1930. this.placeinif.unshift(obj);
  1931. this.SRrequirement(obj)
  1932. //在change中获取到整条对象数据
  1933. val.currencyName = obj.currencyName;
  1934. val.currency = obj.currency;
  1935. val.cost = obj.roomCost;
  1936. for (let j = 0; j < this.currencys.length; j++) {
  1937. if (this.currencys[j].currencyCode == obj.currencyCode) {
  1938. rate = this.currencys[j].rate;
  1939. }
  1940. }
  1941. val.subTotal = Number(val.cost) * Number(rate);
  1942. this.TotalAccommodationFee = 0;
  1943. for (let a = 0; a < this.quarterageData.length; a++) {
  1944. this.TotalAccommodationFee += Number(new Decimal(this.quarterageData[a].subTotal).toFixed(2));
  1945. }
  1946. // this.mealschangeSelect(this.boardWagesData,item,index)
  1947. },
  1948. //住宿费费用标准值改变
  1949. zhusuinput(val) {
  1950. var rate = 0
  1951. for (let j = 0; j < this.currencys.length; j++) {
  1952. if (this.currencys[j].currencyName == val.currencyName) {
  1953. rate = this.currencys[j].rate;
  1954. }
  1955. }
  1956. val.subTotal = Number(val.cost) * Number(rate);
  1957. this.TotalAccommodationFee = 0;
  1958. for (let a = 0; a < this.quarterageData.length; a++) {
  1959. this.TotalAccommodationFee += Number(new Decimal(this.quarterageData[a].subTotal).toFixed(2));
  1960. }
  1961. },
  1962. //伙食费费用标准值改变
  1963. mealsinput(val) {
  1964. var rate = 0
  1965. for (let j = 0; j < this.currencys.length; j++) {
  1966. if (this.currencys[j].currencyName == val.currencyName) {
  1967. rate = this.currencys[j].rate;
  1968. }
  1969. }
  1970. val.subTotal = Number(val.cost) * Number(rate);
  1971. this.TotalMeals = 0;
  1972. for (let a = 0; a < this.boardWagesData.length; a++) {
  1973. // this.TotalMeals += this.boardWagesData[a].subTotal
  1974. this.TotalMeals += Number(new Decimal(this.boardWagesData[a].subTotal).toFixed(2));
  1975. }
  1976. },
  1977. //伙食地区选择
  1978. mealschangeSelect(val, item, index) {
  1979. var xiabiao=0
  1980. var rate = 0
  1981. var obj = {}
  1982. obj = this.placeinif.find(function (i,indexs) {
  1983. xiabiao=indexs
  1984. return i.id === item
  1985. });
  1986. this.placeinif.splice(xiabiao,1);
  1987. this.placeinif.unshift(obj);
  1988. //在change中获取到整条对象数据
  1989. // if(index!=undefined){
  1990. // val[index].currencyName=obj.currencyName;
  1991. // val[index].currency=obj.currency;
  1992. // val[index].cost=obj.foodCost;
  1993. // val[index].nationalTravelFeeId=obj.id;
  1994. // for(let j=0;j<this.currencys.length;j++){
  1995. // if(this.currencys[j].currencyCode==obj.currencyCode){
  1996. // rate=this.currencys[j].rate;
  1997. // }
  1998. // }
  1999. // val[index].subTotal=Number(val[index].cost)*Number(rate);
  2000. // this.TotalMeals=0;
  2001. // for(let a=0;a<this.boardWagesData.length;a++){
  2002. // this.TotalMeals+=this.boardWagesData[a].subTotal
  2003. // }
  2004. // }
  2005. val.currencyName = obj.currencyName;
  2006. val.currency = obj.currency;
  2007. val.cost = obj.foodCost;
  2008. for (let j = 0; j < this.currencys.length; j++) {
  2009. if (this.currencys[j].currencyCode == obj.currencyCode) {
  2010. rate = this.currencys[j].rate;
  2011. }
  2012. }
  2013. val.subTotal = Number(val.cost) * Number(rate);
  2014. this.TotalMeals = 0;
  2015. for (let a = 0; a < this.boardWagesData.length; a++) {
  2016. this.TotalMeals += this.boardWagesData[a].subTotal
  2017. }
  2018. this.MiscellaneouschangeSelect(this.miscellaneousFeeData, item, index)
  2019. },
  2020. //公杂费费用标准值改变
  2021. Miscellaneousinput(val) {
  2022. var rate = 0
  2023. for (let j = 0; j < this.currencys.length; j++) {
  2024. if (this.currencys[j].currencyName == val.currencyName) {
  2025. rate = this.currencys[j].rate;
  2026. }
  2027. }
  2028. val.subTotal = Number(val.cost) * Number(rate);
  2029. this.TotalMiscellaneous = 0;
  2030. for (let a = 0; a < this.miscellaneousFeeData.length; a++) {
  2031. // this.TotalMiscellaneous += this.miscellaneousFeeData[a].subTotal
  2032. this.TotalMiscellaneous += Number(new Decimal(this.miscellaneousFeeData[a].subTotal).toFixed(2));
  2033. }
  2034. },
  2035. //公杂费地区选择
  2036. MiscellaneouschangeSelect(val, item, index) {
  2037. var xiabiao=0
  2038. var rate = 0
  2039. var obj = {}
  2040. obj = this.placeinif.find(function (i,indexs) {
  2041. xiabiao=indexs
  2042. return i.id === item
  2043. });
  2044. this.placeinif.splice(xiabiao,1);
  2045. this.placeinif.unshift(obj);
  2046. //在change中获取到整条对象数据
  2047. if (index != undefined) {
  2048. val[index].currencyName = obj.currencyName;
  2049. val[index].currency = obj.currency;
  2050. val[index].cost = obj.publicCost;
  2051. val[index].nationalTravelFeeId = obj.id;
  2052. for (let j = 0; j < this.currencys.length; j++) {
  2053. if (this.currencys[j].currencyCode == obj.currencyCode) {
  2054. rate = this.currencys[j].rate;
  2055. }
  2056. }
  2057. val[index].subTotal = Number(val[index].cost) * Number(rate);
  2058. this.TotalMiscellaneous = 0;
  2059. for (let a = 0; a < this.miscellaneousFeeData.length; a++) {
  2060. this.TotalMiscellaneous += this.miscellaneousFeeData[a].subTotal
  2061. }
  2062. }
  2063. val.currencyName = obj.currencyName;
  2064. val.currency = obj.currency;
  2065. val.cost = obj.publicCost;
  2066. for (let j = 0; j < this.currencys.length; j++) {
  2067. if (this.currencys[j].currencyCode == obj.currencyCode) {
  2068. rate = this.currencys[j].rate;
  2069. }
  2070. }
  2071. val.subTotal = Number(val.cost) * Number(rate);
  2072. this.TotalMiscellaneous = 0;
  2073. for (let a = 0; a < this.miscellaneousFeeData.length; a++) {
  2074. this.TotalMiscellaneous += this.miscellaneousFeeData[a].subTotal
  2075. }
  2076. },
  2077. //培训费费用标准值改变
  2078. Traininginput(val) {
  2079. var rate = 0
  2080. for (let j = 0; j < this.currencys.length; j++) {
  2081. if (this.currencys[j].currencyName == val.currencyName) {
  2082. rate = this.currencys[j].rate;
  2083. }
  2084. }
  2085. val.subTotal = Number(val.cost) * Number(rate);
  2086. this.trainingExpense = 0;
  2087. for (let a = 0; a < this.trainingExpenseData.length; a++) {
  2088. // this.trainingExpense += this.trainingExpenseData[a].subTotal
  2089. this.trainingExpense += Number(new Decimal(this.trainingExpenseData[a].subTotal).toFixed(2));
  2090. }
  2091. },
  2092. //培训费地区选择
  2093. TrainingExpenseDataSelect(val, item,index) {
  2094. var xiabiao=0
  2095. var rate = 0//汇率
  2096. var obj = {}
  2097. obj = this.placeinif.find(function (i,indexs) {
  2098. xiabiao=indexs
  2099. return i.id === item
  2100. });
  2101. this.placeinif.splice(xiabiao,1);
  2102. this.placeinif.unshift(obj);
  2103. //在change中获取到整条对象数据
  2104. // if (index != undefined) {
  2105. // val[index].currencyName = obj.currencyName;
  2106. // val[index].currency = obj.currency;
  2107. // val[index].cost = obj.trainCost;
  2108. // val[index].nationalTravelFeeId = obj.id;
  2109. // for (let j = 0; j < this.currencys.length; j++) {
  2110. // if (this.currencys[j].currencyCode == obj.currencyCode) {
  2111. // rate = this.currencys[j].rate;
  2112. // }
  2113. // }
  2114. // val[index].subTotal = Number(val[index].cost) * Number(rate);
  2115. // this.trainingExpense=0;
  2116. // for (let a = 0; a < this.trainingExpenseData.length; a++) {
  2117. // this.trainingExpense += this.trainingExpenseData[a].subTotal
  2118. // }
  2119. // }
  2120. val.currencyName = obj.currencyName;
  2121. val.currency = obj.currency;
  2122. val.cost=obj.trainCost;
  2123. for (let j = 0; j < this.currencys.length; j++) {
  2124. if (this.currencys[j].currencyCode == obj.currencyCode) {
  2125. rate = this.currencys[j].rate;
  2126. }
  2127. }
  2128. val.subTotal = Number(val.cost) * Number(rate);
  2129. this.trainingExpense=0;
  2130. for (let a = 0; a < this.trainingExpenseData.length; a++) {
  2131. this.trainingExpense += this.trainingExpenseData[a].subTotal
  2132. }
  2133. },
  2134. //其他币种值改变
  2135. othercurrencychange(val, row) {
  2136. var obj = {};
  2137. var rate = 0;
  2138. obj = this.othercurrencys.find(function (i) {
  2139. return i.currencyId === val;
  2140. });
  2141. rate = obj.rate
  2142. row.subTotal = Number(row.cost) * Number(rate);
  2143. this.otherExpense = 0;
  2144. for (let a = 0; a < this.otherData.length; a++) {
  2145. this.otherExpense += this.otherData[a].subTotal;
  2146. }
  2147. },
  2148. //其他费用标准值改变
  2149. otherinput(val) {
  2150. if (val.currency == '' || this.othercurrencys == '') {
  2151. return
  2152. }
  2153. var obj = {}
  2154. var rate = 0
  2155. obj = this.othercurrencys.find(function (i) {
  2156. return i.currencyId === val.currency
  2157. });
  2158. rate = obj.rate
  2159. val.subTotal = Number(val.cost) * Number(rate);
  2160. this.otherExpense = 0;
  2161. for (let a = 0; a < this.otherData.length; a++) {
  2162. // this.otherExpense += this.otherData[a].subTotal
  2163. this.otherExpense += Number(new Decimal(this.otherData[a].subTotal).toFixed(2));
  2164. }
  2165. },
  2166. //新增list
  2167. addlist(text) {
  2168. if (text == "住宿费") {
  2169. this.quarterageData.push({
  2170. id: 0,
  2171. diId: this.value,
  2172. type: 1,
  2173. days: this.quarterageData.length != 0 ? (this.quarterageData[this.quarterageData.length - 1].days) + 1 : 1,
  2174. nationalTravelFeeId: '',
  2175. cost: 0,
  2176. currency: 0,
  2177. subTotal: 0,
  2178. remark: '',
  2179. })
  2180. // this.boardWagesData.push({
  2181. // id:0,
  2182. // diId:this.value,
  2183. // type:2,
  2184. // days:this.boardWagesData.length!=0?(this.boardWagesData[this.boardWagesData.length-1].days)+1:1,
  2185. // nationalTravelFeeId:'',
  2186. // cost:0,
  2187. // currency:0,
  2188. // subTotal:0,
  2189. // remark:'',
  2190. // })
  2191. }
  2192. if (text == "伙食费") {
  2193. this.boardWagesData.push({
  2194. id: 0,
  2195. diId: this.value,
  2196. type: 2,
  2197. days: this.boardWagesData.length != 0 ? (this.boardWagesData[this.boardWagesData.length - 1].days) + 1 : 1,
  2198. nationalTravelFeeId: '',
  2199. cost: 0,
  2200. currency: 0,
  2201. subTotal: 0,
  2202. remark: '',
  2203. })
  2204. this.miscellaneousFeeData.push({
  2205. id: 0,
  2206. diId: this.value,
  2207. type: 3,
  2208. days: this.miscellaneousFeeData.length != 0 ? (this.miscellaneousFeeData[this.miscellaneousFeeData.length - 1].days) + 1 : 1,
  2209. nationalTravelFeeId: '',
  2210. cost: 0,
  2211. currency: 0,
  2212. subTotal: 0,
  2213. remark: '',
  2214. })
  2215. }
  2216. if (text == "公杂费") {
  2217. this.miscellaneousFeeData.push({
  2218. id: 0,
  2219. diId: this.value,
  2220. type: 3,
  2221. days: this.miscellaneousFeeData.length != 0 ? (this.miscellaneousFeeData[this.miscellaneousFeeData.length - 1].days) + 1 : 1,
  2222. nationalTravelFeeId: '',
  2223. cost: 0,
  2224. currency: 0,
  2225. subTotal: 0,
  2226. remark: '',
  2227. })
  2228. }
  2229. if (text == "培训费") {
  2230. this.trainingExpenseData.push({
  2231. id: 0,
  2232. diId: this.value,
  2233. type: 4,
  2234. days: this.trainingExpenseData.length != 0 ? (this.trainingExpenseData[this.trainingExpenseData.length - 1].days) + 1 : 1,
  2235. nationalTravelFeeId: '',
  2236. cost: 0,
  2237. currency: 0,
  2238. subTotal: 0,
  2239. remark: '',
  2240. })
  2241. }
  2242. if (text == "其他") {
  2243. this.otherData.push({
  2244. id: 0,
  2245. diId: this.value,
  2246. setDataId: '',
  2247. index: this.otherData.length != 0 ? (this.otherData[this.otherData.length - 1].index) + 1 : 1,
  2248. cost: '',
  2249. cost: 0,
  2250. currency: 0,
  2251. subTotal: 0,
  2252. remark:'',
  2253. })
  2254. }
  2255. },
  2256. //保存
  2257. storage: debounce(function () {
  2258. return new Promise((resolve, reject) => {
  2259. //已使用币种
  2260. let usedCurrencys = [];
  2261. //住宿费
  2262. this.fullscreenLoading = true
  2263. var quarterageDatas = [];
  2264. for (let m = 0; m < this.quarterageData.length; m++) {
  2265. usedCurrencys.push(this.quarterageData[m].curremcyCode);
  2266. if (this.quarterageData[m].nationalTravelFeeId != '') {
  2267. quarterageDatas.push({
  2268. id: this.quarterageData[m].id,
  2269. diId: this.quarterageData[m].diId,
  2270. type: this.quarterageData[m].type,
  2271. days: this.quarterageData[m].days,
  2272. nationalTravelFeeId: this.quarterageData[m].nationalTravelFeeId,
  2273. cost: this.quarterageData[m].cost,
  2274. currency: this.quarterageData[m].currency,
  2275. subTotal: this.quarterageData[m].subTotal,
  2276. remark: this.quarterageData[m].remark,
  2277. })
  2278. }
  2279. }
  2280. //伙食费
  2281. var boardWagesDatas = [];
  2282. for (let n = 0; n < this.boardWagesData.length; n++) {
  2283. usedCurrencys.push(this.boardWagesData[n].curremcyCode);
  2284. if (this.boardWagesData[n].nationalTravelFeeId != '') {
  2285. boardWagesDatas.push({
  2286. id: this.boardWagesData[n].id,
  2287. diId: this.boardWagesData[n].diId,
  2288. type: this.boardWagesData[n].type,
  2289. days: this.boardWagesData[n].days,
  2290. nationalTravelFeeId: this.boardWagesData[n].nationalTravelFeeId,
  2291. cost: this.boardWagesData[n].cost,
  2292. currency: this.boardWagesData[n].currency,
  2293. subTotal: this.boardWagesData[n].subTotal,
  2294. remark: this.boardWagesData[n].remark,
  2295. })
  2296. }
  2297. }
  2298. //公杂费miscellaneousFeeData
  2299. var miscellaneousFeeDatas = [];
  2300. for (let b = 0; b < this.miscellaneousFeeData.length; b++) {
  2301. usedCurrencys.push(this.miscellaneousFeeData[b].curremcyCode);
  2302. if (this.miscellaneousFeeData[b].nationalTravelFeeId != '') {
  2303. miscellaneousFeeDatas.push({
  2304. id: this.miscellaneousFeeData[b].id,
  2305. diId: this.miscellaneousFeeData[b].diId,
  2306. type: this.miscellaneousFeeData[b].type,
  2307. days: this.miscellaneousFeeData[b].days,
  2308. nationalTravelFeeId: this.miscellaneousFeeData[b].nationalTravelFeeId,
  2309. cost: this.miscellaneousFeeData[b].cost,
  2310. currency: this.miscellaneousFeeData[b].currency,
  2311. subTotal: this.miscellaneousFeeData[b].subTotal,
  2312. remark: this.miscellaneousFeeData[b].remark,
  2313. })
  2314. }
  2315. }
  2316. //培训费
  2317. var trainingExpenseDatas = [];
  2318. for (let p = 0; p < this.trainingExpenseData.length; p++) {
  2319. usedCurrencys.push(this.trainingExpenseData[p].curremcyCode);
  2320. if (this.trainingExpenseData[p].nationalTravelFeeId != '') {
  2321. trainingExpenseDatas.push({
  2322. id: this.trainingExpenseData[p].id,
  2323. diId: this.trainingExpenseData[p].diId,
  2324. type: this.trainingExpenseData[p].type,
  2325. days: this.trainingExpenseData[p].days,
  2326. nationalTravelFeeId: this.trainingExpenseData[p].nationalTravelFeeId,
  2327. cost: this.trainingExpenseData[p].cost,
  2328. currency: this.trainingExpenseData[p].currency,
  2329. subTotal: this.trainingExpenseData[p].subTotal,
  2330. remark: this.trainingExpenseData[p].remark,
  2331. })
  2332. }
  2333. }
  2334. //其他费
  2335. var otherDatas = [];
  2336. for (let c = 0; c < this.otherData.length; c++) {
  2337. //usedCurrencys.push(this.otherData[c].curremcyCode);
  2338. if (this.otherData[c].setDataId != '') {
  2339. otherDatas.push({
  2340. id: this.otherData[c].id,
  2341. diId: this.otherData[c].diId,
  2342. index: this.otherData[c].index,
  2343. setDataId: this.otherData[c].setDataId,
  2344. cost: this.otherData[c].cost,
  2345. currency: this.otherData[c].currency,
  2346. subTotal: this.otherData[c].subTotal,
  2347. remark: this.otherData[c].remark,
  2348. })
  2349. }
  2350. }
  2351. this.storageAPI(quarterageDatas, boardWagesDatas, miscellaneousFeeDatas, trainingExpenseDatas, otherDatas)
  2352. // let uniqueUsedCurrencys = [...new Set(usedCurrencys)];
  2353. // let confirmText='';
  2354. // for(let i = 0;i < this.currencyss.length;i++)
  2355. // {
  2356. // let rate = this.currencyss[i];
  2357. // if(uniqueUsedCurrencys.includes(rate.currCode)) {
  2358. // confirmText += rate.currName + "("+ rate.currCode +"):"+ rate.rate +"\t\t";
  2359. // }
  2360. // }
  2361. // const h = this.$createElement;
  2362. // this.$confirm("实时汇率提示",{
  2363. // title:'实时汇率提示',
  2364. // message: h('p', null, [
  2365. // h('div', null, confirmText),
  2366. // //h('div', { style: 'color: red' }, '是否前往编辑!')
  2367. // ]),
  2368. // iconClass: "el-icon-warning-outline colorGreen",//自定义图标样式
  2369. // confirmButtonText: "已知晓",//确认按钮文字更换
  2370. // showCancelButton: false,
  2371. // //cancelButtonText: "取消",//取消按钮文字更换
  2372. // showClose: false,//是否显示右上角关闭按钮
  2373. // type: "warning",//提示类型 success/info/warning/error
  2374. // }).then(()=>{
  2375. // //确认操作
  2376. // //this.fullscreenLoading = false;
  2377. // this.storageAPI(quarterageDatas, boardWagesDatas, miscellaneousFeeDatas, trainingExpenseDatas, otherDatas)
  2378. // }).catch(() => {
  2379. // //取消操作
  2380. // });
  2381. });
  2382. }, 1000, true),
  2383. //导出保存
  2384. //保存API
  2385. storageAPI(arrthre, arrfour, arrfive, arrsix, arrSeven) {
  2386. var url = "/api/Groups/PostEnterExitCostOperate"
  2387. var that = this
  2388. this.$axios({
  2389. method: 'post',
  2390. url: url,
  2391. headers: {
  2392. Authorization: 'Bearer ' + this.token,
  2393. contentType: 'application/json'
  2394. },
  2395. data: {
  2396. portType: 1,
  2397. userId: that.userId,
  2398. id: that.storageid,
  2399. diId: that.value,
  2400. choiceOne: that.choiceOne ? 1 : 0,
  2401. insidePay: that.DomesticFees.total,
  2402. visa: that.DomesticFees.visafees,
  2403. visaRemark: that.DomesticFees.visafeesDescription,
  2404. yiMiao: that.DomesticFees.vaccinefees,
  2405. heSuan: that.DomesticFees.nucleicfees,
  2406. service: that.DomesticFees.serviceCharge,
  2407. ticket: that.DomesticFees.ticketsExhibitionL,
  2408. safe: that.DomesticFees.insurance,
  2409. firstItemRemark:that.DomesticFees.firstItemRemark,
  2410. choiceTwo: that.choiceTwo ? 1 : 0,
  2411. otherExpenses_Checked: that.choiceSeven ? 1 : 0,
  2412. sumJJC: that.sumJJC ? 1 : 0,
  2413. sumGWC: that.sumGWC ? 1 : 0,
  2414. sumTDC: that.sumTDC ? 1 : 0,
  2415. outsideJJPay: that.TotalExpenses.EconomyClasstotal,
  2416. outsideGWPay: that.TotalExpenses.BusinessClasstotal,
  2417. outsideTDPay: that.TotalExpenses.Firstclasstotal,
  2418. twoItemRemark:that.TotalExpenses.twoItemRemark,
  2419. airJJ: that.TotalExpenses.EconomyClass,
  2420. airGW: that.TotalExpenses.BusinessClass,
  2421. airTD: that.TotalExpenses.Firstclass,
  2422. cityTranffic: that.TotalExpenses.TravellingExpensesJJ,
  2423. cityTranffic1: that.TotalExpenses.TravellingExpensesGW,
  2424. cityTranffic2: that.TotalExpenses.TravellingExpensesTD,
  2425. dayOtherPriceData: arrSeven,
  2426. currencys: that.currencys,
  2427. choiceThree: that.choiceThree ? 1 : 0,
  2428. quarterageData: arrthre,
  2429. choiceFour: that.choiceFour ? 1 : 0,
  2430. boardWagesData: arrfour,
  2431. choiceFive: that.choiceFive ? 1 : 0,
  2432. miscellaneousFeeData: arrfive,
  2433. choiceSix: that.choiceSix ? 1 : 0,
  2434. //加参数
  2435. trainingExpenseData: arrsix,
  2436. airJJC_Checked: that.airJJC_Checked ? 1 : 0,
  2437. airGWC_Checked: that.airGWC_Checked ? 1 : 0,
  2438. airTDC_Checked: that.airTDC_Checked ? 1 : 0,
  2439. }
  2440. }).then(function (res) {
  2441. if (res.data.code == 200) {
  2442. that.$message({
  2443. type: 'success',
  2444. message: res.data.msg
  2445. });
  2446. that.GetEnterExitCostInfobyDiId()
  2447. } else {
  2448. that.fullscreenLoading = false;
  2449. that.$message.error(res.data.msg);
  2450. }
  2451. }).catch(function (error) {
  2452. that.$message.error(error.message);
  2453. });
  2454. },
  2455. //选择团组名称调用
  2456. chengvalue(val) {
  2457. window.localStorage.setItem('sgvalue', this.value);
  2458. for(let i=0;i<this.options.length;i++){
  2459. if (val==this.options[i].id) {
  2460. console.log(this.options[i]);
  2461. this.provinceId=this.options[i].provinceId
  2462. }
  2463. }
  2464. this.airDataArrvalue='';
  2465. this.fullscreenLoading = true;
  2466. // this.EnterExitCostFileOwner();
  2467. // this.GetNationalTravelFeeData();
  2468. this.GetEnterExitCostInfobyDiId();
  2469. this.PostGroupTeamRateByDiIdAndCTableId();
  2470. },
  2471. eptschedule: debounce(function (val) {
  2472. return new Promise((resolve, reject) => {
  2473. //住宿费
  2474. this.fullscreenLoading = true
  2475. var quarterageDatas = [];
  2476. for (let m = 0; m < this.quarterageData.length; m++) {
  2477. if (this.quarterageData[m].nationalTravelFeeId != '') {
  2478. quarterageDatas.push({
  2479. id: this.quarterageData[m].id,
  2480. diId: this.quarterageData[m].diId,
  2481. type: this.quarterageData[m].type,
  2482. days: this.quarterageData[m].days,
  2483. nationalTravelFeeId: this.quarterageData[m].nationalTravelFeeId,
  2484. cost: this.quarterageData[m].cost,
  2485. currency: this.quarterageData[m].currency,
  2486. subTotal: this.quarterageData[m].subTotal,
  2487. remark: this.quarterageData[m].remark,
  2488. })
  2489. }
  2490. }
  2491. //伙食费
  2492. var boardWagesDatas = [];
  2493. for (let n = 0; n < this.boardWagesData.length; n++) {
  2494. if (this.boardWagesData[n].nationalTravelFeeId != '') {
  2495. boardWagesDatas.push({
  2496. id: this.boardWagesData[n].id,
  2497. diId: this.boardWagesData[n].diId,
  2498. type: this.boardWagesData[n].type,
  2499. days: this.boardWagesData[n].days,
  2500. nationalTravelFeeId: this.boardWagesData[n].nationalTravelFeeId,
  2501. cost: this.boardWagesData[n].cost,
  2502. currency: this.boardWagesData[n].currency,
  2503. subTotal: this.boardWagesData[n].subTotal,
  2504. remark: this.boardWagesData[n].remark,
  2505. })
  2506. }
  2507. }
  2508. //公杂费miscellaneousFeeData
  2509. var miscellaneousFeeDatas = [];
  2510. for (let b = 0; b < this.miscellaneousFeeData.length; b++) {
  2511. if (this.miscellaneousFeeData[b].nationalTravelFeeId != '') {
  2512. miscellaneousFeeDatas.push({
  2513. id: this.miscellaneousFeeData[b].id,
  2514. diId: this.miscellaneousFeeData[b].diId,
  2515. type: this.miscellaneousFeeData[b].type,
  2516. days: this.miscellaneousFeeData[b].days,
  2517. nationalTravelFeeId: this.miscellaneousFeeData[b].nationalTravelFeeId,
  2518. cost: this.miscellaneousFeeData[b].cost,
  2519. currency: this.miscellaneousFeeData[b].currency,
  2520. subTotal: this.miscellaneousFeeData[b].subTotal,
  2521. remark: this.miscellaneousFeeData[b].remark,
  2522. })
  2523. }
  2524. }
  2525. //培训费
  2526. var trainingExpenseDatas = [];
  2527. for (let p = 0; p < this.trainingExpenseData.length; p++) {
  2528. if (this.trainingExpenseData[p].nationalTravelFeeId != '') {
  2529. trainingExpenseDatas.push({
  2530. id: this.trainingExpenseData[p].id,
  2531. diId: this.trainingExpenseData[p].diId,
  2532. type: this.trainingExpenseData[p].type,
  2533. days: this.trainingExpenseData[p].days,
  2534. nationalTravelFeeId: this.trainingExpenseData[p].nationalTravelFeeId,
  2535. cost: this.trainingExpenseData[p].cost,
  2536. currency: this.trainingExpenseData[p].currency,
  2537. subTotal: this.trainingExpenseData[p].subTotal,
  2538. remark: this.trainingExpenseData[p].remark,
  2539. })
  2540. }
  2541. }
  2542. //其他费
  2543. var otherDatas = [];
  2544. for (let c = 0; c < this.otherData.length; c++) {
  2545. if (this.otherData[c].setDataId != '') {
  2546. otherDatas.push({
  2547. id: this.otherData[c].id,
  2548. diId: this.otherData[c].diId,
  2549. index: this.otherData[c].index,
  2550. setDataId: this.otherData[c].setDataId,
  2551. cost: this.otherData[c].cost,
  2552. currency: this.otherData[c].currency,
  2553. subTotal: this.otherData[c].subTotal,
  2554. remark: this.otherData[c].remark,
  2555. })
  2556. }
  2557. }
  2558. var url = "/api/Groups/PostEnterExitCostOperate"
  2559. var that = this
  2560. this.$axios({
  2561. method: 'post',
  2562. url: url,
  2563. headers: {
  2564. Authorization: 'Bearer ' + this.token,
  2565. contentType: 'application/json'
  2566. },
  2567. data: {
  2568. portType: 1,
  2569. userId: that.userId,
  2570. id: that.storageid,
  2571. diId: that.value,
  2572. choiceOne: that.choiceOne ? 1 : 0,
  2573. insidePay: that.DomesticFees.total,
  2574. visa: that.DomesticFees.visafees,
  2575. visaRemark: that.DomesticFees.visafeesDescription,
  2576. yiMiao: that.DomesticFees.vaccinefees,
  2577. heSuan: that.DomesticFees.nucleicfees,
  2578. service: that.DomesticFees.serviceCharge,
  2579. ticket: that.DomesticFees.ticketsExhibitionL,
  2580. safe: that.DomesticFees.insurance,
  2581. firstItemRemark: that.DomesticFees.firstItemRemark,
  2582. choiceTwo: that.choiceTwo ? 1 : 0,
  2583. otherExpenses_Checked: that.choiceSeven ? 1 : 0,
  2584. sumJJC: that.sumJJC ? 1 : 0,
  2585. sumGWC: that.sumGWC ? 1 : 0,
  2586. sumTDC: that.sumTDC ? 1 : 0,
  2587. outsideJJPay: that.TotalExpenses.EconomyClasstotal,
  2588. outsideGWPay: that.TotalExpenses.BusinessClasstotal,
  2589. outsideTDPay: that.TotalExpenses.Firstclasstotal,
  2590. twoItemRemark: that.TotalExpenses.twoItemRemark,
  2591. airJJ: that.TotalExpenses.EconomyClass,
  2592. airGW: that.TotalExpenses.BusinessClass,
  2593. airTD: that.TotalExpenses.Firstclass,
  2594. cityTranffic: that.TotalExpenses.TravellingExpensesJJ,
  2595. cityTranffic1: that.TotalExpenses.TravellingExpensesGW,
  2596. cityTranffic2: that.TotalExpenses.TravellingExpensesTD,
  2597. dayOtherPriceData: otherDatas,
  2598. currencys: that.currencys,
  2599. choiceThree: that.choiceThree ? 1 : 0,
  2600. quarterageData: quarterageDatas,
  2601. choiceFour: that.choiceFour ? 1 : 0,
  2602. boardWagesData: boardWagesDatas,
  2603. choiceFive: that.choiceFive ? 1 : 0,
  2604. miscellaneousFeeData: miscellaneousFeeDatas,
  2605. choiceSix: that.choiceSix ? 1 : 0,
  2606. //加参数
  2607. trainingExpenseData: trainingExpenseDatas,
  2608. airJJC_Checked: that.airJJC_Checked ? 1 : 0,
  2609. airGWC_Checked: that.airGWC_Checked ? 1 : 0,
  2610. airTDC_Checked: that.airTDC_Checked ? 1 : 0,
  2611. }
  2612. }).then(function (res) {
  2613. if (res.data.code == 200) {
  2614. that.$message({
  2615. type: 'success',
  2616. message: res.data.msg
  2617. });
  2618. that.GetEnterExitCostInfobyDiId()
  2619. var subTypeId = 0
  2620. if (val == 1) {
  2621. subTypeId = that.listvalue
  2622. } else if (val == 2) {
  2623. subTypeId = that.tablevalue
  2624. } else {
  2625. subTypeId = 1
  2626. }
  2627. if (subTypeId == "") {
  2628. that.$message.error('请选择需要导出的表格');
  2629. return
  2630. }
  2631. var url = "/api/Groups/PostEnterExitCostDownload"
  2632. that.$axios({
  2633. method: 'post',
  2634. url: url,
  2635. headers: {
  2636. Authorization: 'Bearer ' + that.token
  2637. },
  2638. data: {
  2639. portType: 1,
  2640. diId: that.value,
  2641. exportType: val,
  2642. subTypeId: subTypeId
  2643. }
  2644. }).then(function (res) {
  2645. if (res.data.code == 200) {
  2646. that.$message({
  2647. type: 'success',
  2648. message: res.data.msg
  2649. });
  2650. window.open(res.data.data.url);
  2651. } else {
  2652. that.$message.error(res.data.msg);
  2653. }
  2654. })
  2655. } else {
  2656. that.fullscreenLoading = false;
  2657. that.$message.error(res.data.msg);
  2658. }
  2659. }).catch(function (error) {
  2660. that.$message.error(error.message);
  2661. });
  2662. // this.storageAPI(quarterageDatas, boardWagesDatas, miscellaneousFeeDatas, trainingExpenseDatas, otherDatas)
  2663. })
  2664. // this.storage().then(function () {
  2665. // });
  2666. }, 500, true),
  2667. //
  2668. calculation() {
  2669. var jnfy
  2670. var jjcxj
  2671. var gwcxj
  2672. var tdcxj
  2673. var zsf
  2674. var hsf
  2675. var gzf
  2676. var pxf
  2677. var qtfy
  2678. if (this.choiceOne == true) {
  2679. jnfy = this.DomesticFees.total;
  2680. } else {
  2681. jnfy = 0;
  2682. }
  2683. if (this.choiceThree == true) {
  2684. zsf = this.TotalAccommodationFee;
  2685. } else {
  2686. zsf = 0;
  2687. }
  2688. if (this.choiceFour == true) {
  2689. hsf = this.TotalMeals;
  2690. } else {
  2691. hsf = 0;
  2692. }
  2693. if (this.choiceFive == true) {
  2694. gzf = this.TotalMiscellaneous;
  2695. } else {
  2696. gzf = 0;
  2697. }
  2698. if (this.choiceSix == true) {
  2699. pxf = this.trainingExpense;
  2700. } else {
  2701. pxf = 0;
  2702. }
  2703. if (this.choiceSeven == true) {
  2704. qtfy = this.otherExpense;
  2705. } else {
  2706. qtfy = 0;
  2707. }
  2708. if (this.sumJJC == true) {
  2709. jjcxj = this.TotalExpenses.EconomyClasstotal;
  2710. this.jjctotal = jnfy + jjcxj + zsf + hsf + gzf + pxf + qtfy;
  2711. } else {
  2712. jjcxj = 0;
  2713. this.jjctotal = 0;
  2714. }
  2715. if (this.sumGWC == true) {
  2716. gwcxj = this.TotalExpenses.BusinessClasstotal;
  2717. this.gwctotal = jnfy + gwcxj + zsf + hsf + gzf + pxf + qtfy;
  2718. } else {
  2719. gwcxj = 0;
  2720. this.gwctotal = 0;
  2721. }
  2722. if (this.sumTDC == true) {
  2723. tdcxj = this.TotalExpenses.Firstclasstotal;
  2724. this.tdctotal = jnfy + tdcxj + zsf + hsf + gzf + pxf + qtfy;
  2725. } else {
  2726. tdcxj = 0;
  2727. this.tdctotal = 0;
  2728. }
  2729. },
  2730. //其他删除
  2731. DeleteOtherExpenses(index, row, rows) {
  2732. this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
  2733. confirmButtonText: '确定',
  2734. cancelButtonText: '取消',
  2735. type: 'warning'
  2736. }).then(() => {
  2737. {
  2738. if (row.id == 0) {
  2739. this.$message({
  2740. type: 'success',
  2741. message: '删除成功'
  2742. });
  2743. rows.splice(index, 1);
  2744. this.otherExpense = 0;
  2745. for (let a = 0; a < rows.length; a++) {
  2746. this.otherExpense += rows[a].subTotal;
  2747. }
  2748. return;
  2749. }
  2750. var url = "/api/Groups/DeleteOtherExpenses"
  2751. var that = this
  2752. this.$axios({
  2753. method: 'post',
  2754. url: url,
  2755. headers: {
  2756. Authorization: 'Bearer ' + that.token
  2757. },
  2758. data: {
  2759. portType: 1,
  2760. id: row.id,
  2761. deleteUserId: that.userId
  2762. }
  2763. }).then(function (res) {
  2764. if (res.data.code == 200) {
  2765. that.$message({
  2766. type: 'success',
  2767. message: res.data.msg
  2768. });
  2769. rows.splice(index, 1);
  2770. this.otherExpense = 0;
  2771. for (let a = 0; a < rows.length; a++) {
  2772. this.otherExpense += rows[a].subTotal;
  2773. }
  2774. } else {
  2775. that.$message.error(res.data.msg);
  2776. }
  2777. })
  2778. }
  2779. }).catch(() => {
  2780. this.$message({
  2781. type: 'info',
  2782. message: '已取消删除'
  2783. });
  2784. });
  2785. },
  2786. //删除
  2787. deleteRow(index, row, rows, val) {
  2788. this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
  2789. confirmButtonText: '确定',
  2790. cancelButtonText: '取消',
  2791. type: 'warning'
  2792. }).then(() => {
  2793. if (row.id == 0) {
  2794. this.$message({
  2795. type: 'success',
  2796. message: '删除成功'
  2797. });
  2798. rows.splice(index, 1);
  2799. if (val == 1) {
  2800. this.TotalAccommodationFee = 0;
  2801. for (let a = 0; a < rows.length; a++) {
  2802. this.TotalAccommodationFee += rows[a].subTotal;
  2803. }
  2804. }
  2805. if (val == 2) {
  2806. this.TotalMeals = 0;
  2807. for (let a = 0; a < rows.length; a++) {
  2808. this.TotalMeals += rows[a].subTotal;
  2809. }
  2810. }
  2811. if (val == 3) {
  2812. this.TotalMiscellaneous = 0;
  2813. for (let a = 0; a < rows.length; a++) {
  2814. this.TotalMiscellaneous += rows[a].subTotal;
  2815. }
  2816. }
  2817. if (val == 4) {
  2818. this.trainingExpense = 0;
  2819. for (let a = 0; a < rows.length; a++) {
  2820. this.trainingExpense += rows[a].subTotal;
  2821. }
  2822. }
  2823. return;
  2824. }
  2825. var url = "/api/Groups/PostEnterExitCostSubItemDel"
  2826. var that = this
  2827. this.$axios({
  2828. method: 'post',
  2829. url: url,
  2830. headers: {
  2831. Authorization: 'Bearer ' + that.token
  2832. },
  2833. data: {
  2834. portType: 1,
  2835. id: row.id,
  2836. deleteUserId: that.userId
  2837. }
  2838. }).then(function (res) {
  2839. if (res.data.code == 200) {
  2840. that.$message({
  2841. type: 'success',
  2842. message: res.data.msg
  2843. });
  2844. rows.splice(index, 1);
  2845. if (val == 1) {
  2846. that.TotalAccommodationFee = 0;
  2847. for (let a = 0; a < rows.length; a++) {
  2848. that.TotalAccommodationFee += rows[a].subTotal;
  2849. }
  2850. }
  2851. if (val == 2) {
  2852. that.TotalMeals = 0;
  2853. for (let a = 0; a < rows.length; a++) {
  2854. that.TotalMeals += rows[a].subTotal;
  2855. }
  2856. }
  2857. if (val == 3) {
  2858. that.TotalMiscellaneous = 0;
  2859. for (let a = 0; a < rows.length; a++) {
  2860. that.TotalMiscellaneous += rows[a].subTotal;
  2861. }
  2862. }
  2863. if (val == 4) {
  2864. that.trainingExpense = 0;
  2865. for (let a = 0; a < rows.length; a++) {
  2866. that.trainingExpense += rows[a].subTotal;
  2867. }
  2868. }
  2869. } else {
  2870. that.$message.error(res.data.msg);
  2871. }
  2872. })
  2873. }).catch(() => {
  2874. this.$message({
  2875. type: 'info',
  2876. message: '已取消删除'
  2877. });
  2878. });
  2879. },
  2880. //填入实时汇率
  2881. adoptRealtime() {
  2882. for (let at = 0; at < this.currencys.length; at++) {
  2883. for (let rt = 0; rt < this.currencyss.length; rt++) {
  2884. if (this.currencys[at].currencyCode == this.currencyss[rt].currCode) {
  2885. this.currencys[at].rate = this.currencyss[rt].rate
  2886. }
  2887. }
  2888. }
  2889. this.cubtn = false;
  2890. },
  2891. Getnewvisafee() {
  2892. this.DomesticFees.visafees = this.visainfo.feeTotal;
  2893. this.DomesticFees.visafeesDescription = this.visainfo.remark;
  2894. this.getvisafeebtn = false;
  2895. },
  2896. //导出到收款账单
  2897. NationalTravelFeeImportReceivables() {
  2898. var url = "/api/Groups/NationalTravelFeeImportReceivables/" + this.value
  2899. var that = this
  2900. this.$axios({
  2901. method: 'get',
  2902. url: url,
  2903. headers: {
  2904. Authorization: 'Bearer ' + that.token
  2905. },
  2906. }).then(function (res) {
  2907. if (res.data.code == 200) {
  2908. that.$message({
  2909. type: 'success',
  2910. message: res.data.msg
  2911. });
  2912. } else {
  2913. that.$message.error(res.data.msg);
  2914. }
  2915. }).catch(function (error) {
  2916. that.$message.error("操作错误,联系信息部!");
  2917. });
  2918. },
  2919. //设置权限按钮
  2920. setpermissionsbtn(){
  2921. this.viewUsers=this.viewUsersby;
  2922. this.setpermissions=true;
  2923. },
  2924. handleCheckAllChange(val) {
  2925. },
  2926. //分配查看权限
  2927. EnterExitCostSetViewPermissiion() {
  2928. var url = "/api/Groups/EnterExitCostSetViewPermissiion"
  2929. var that = this
  2930. this.$axios({
  2931. method: 'post',
  2932. url: url,
  2933. headers: {
  2934. Authorization: 'Bearer ' + that.token
  2935. },
  2936. data:{
  2937. portType:1,
  2938. groupId:that.value,
  2939. userIds:that.viewUsers,
  2940. currUserId:that.userId,
  2941. }
  2942. }).then(function (res) {
  2943. if (res.data.code == 200) {
  2944. that.$message({
  2945. type: 'success',
  2946. message: res.data.msg
  2947. });
  2948. that.setpermissions=false;
  2949. that.GetEnterExitCostInfobyDiId();
  2950. } else {
  2951. that.setpermissions=false;
  2952. that.$message.error(res.data.msg);
  2953. }
  2954. }).catch(function (error) {
  2955. that.$message.error("操作错误,联系信息部!");
  2956. });
  2957. },
  2958. //交通费基础费用
  2959. GetEnterExitCostOVByGroupId() {
  2960. var url = "/api/Groups/GetEnterExitCostOVByGroupId/"+this.value
  2961. var that = this
  2962. this.$axios({
  2963. method: 'get',
  2964. url: url,
  2965. headers: {
  2966. Authorization: 'Bearer ' + this.token
  2967. },
  2968. }).then(function (res) {
  2969. that.fulecao=[];
  2970. that.Basicdata={};
  2971. that.currencies=[];
  2972. if (res.data.code == 200) {
  2973. that.Basicdata=res.data.data;
  2974. that.currencies=res.data.data.currencies;
  2975. that.fulecao=res.data.data.data;
  2976. }else {
  2977. that.$message.error(res.data.msg);
  2978. }
  2979. })
  2980. },
  2981. //交通费详细
  2982. GetEnterExitCostOVFeeDetails() {
  2983. var url = "/api/Groups/GetEnterExitCostOVFeeDetails/"+this.value+"?currUserId="+this.userId
  2984. var that = this
  2985. this.$axios({
  2986. method: 'get',
  2987. url: url,
  2988. headers: {
  2989. Authorization: 'Bearer ' + this.token
  2990. },
  2991. }).then(function (res) {
  2992. that.Transportationdata=[];
  2993. that.Transportationdatatotal=0;
  2994. that.pullCartFeeDetails=[];
  2995. that.pullCartFeeTotal=0;
  2996. that.trainFeeDetails=[];
  2997. that.trainFeeTotal=0;
  2998. that.cityAirTicketFeeDetails=[];
  2999. that.cityAirTicketFeeTotal=0;
  3000. that.lastUpdateUserName="";
  3001. that.lastUpdateTime="";
  3002. that.createUserName="";
  3003. that.createTime="";
  3004. if (res.data.code == 200) {
  3005. that.Transportationdata=res.data.data.aptFeeDetails;
  3006. that.Transportationdatatotal=res.data.data.aptFeeTotal;
  3007. that.pullCartFeeDetails=res.data.data.pullCartFeeDetails;
  3008. that.pullCartFeeTotal=res.data.data.pullCartFeeTotal;
  3009. that.trainFeeDetails=res.data.data.trainFeeDetails;
  3010. that.trainFeeTotal=res.data.data.trainFeeTotal;
  3011. that.cityAirTicketFeeDetails=res.data.data.cityAirTicketFeeDetails;
  3012. that.cityAirTicketFeeTotal=res.data.data.cityAirTicketFeeTotal;
  3013. that.lastUpdateUserName=res.data.data.lastUpdateUserName;
  3014. that.lastUpdateTime=res.data.data.lastUpdateTime;
  3015. that.createUserName=res.data.data.createUserName;
  3016. that.createTime=res.data.data.createTime;
  3017. that.GetEnterExitCostOVByGroupId();
  3018. }else {
  3019. that.$message.error(res.data.msg);
  3020. }
  3021. })
  3022. },
  3023. //交通费弹窗
  3024. openTransportation(){
  3025. this.GetEnterExitCostOVFeeDetails();
  3026. this.TransportationVisible=true;
  3027. },
  3028. //选择城市交通费
  3029. UrbanSelect(val, item, index) {
  3030. var obj = {}
  3031. obj = this.fulecao.find(function (i,indexs) {
  3032. return i.id === item
  3033. });
  3034. val.cost=obj.price;
  3035. val.otherCost=obj.otherPrice;
  3036. val.guideCost=obj.guidePrice;
  3037. val.currencyName=obj.currencyName
  3038. this.UrbanModify(val,val.currencyName)
  3039. },
  3040. numFilters(value) {
  3041. // 截取当前数据到小数点后两位
  3042. let tempVal = parseFloat(value).toFixed(3);
  3043. let realVal = tempVal.substring(0, tempVal.length - 1);
  3044. return realVal;
  3045. },
  3046. deleteRowJSJ(index, rows,row) {
  3047. this.$confirm('此操作只是移除该条数据做出计算并未保存,如要删除该条数据请点击保存!', '提示', {
  3048. confirmButtonText: '确定',
  3049. cancelButtonText: '取消',
  3050. type: 'warning'
  3051. }).then(() => {
  3052. rows.splice(index, 1);
  3053. this.UrbanTotal();
  3054. }).catch(() => {
  3055. this.$message({
  3056. type: 'info',
  3057. message: '操作已取消!'
  3058. });
  3059. });
  3060. },
  3061. deleteRowLC(index, rows,row) {
  3062. this.$confirm('此操作只是移除该条数据做出计算并未保存,如要删除该条数据请点击保存!', '提示', {
  3063. confirmButtonText: '确定',
  3064. cancelButtonText: '取消',
  3065. type: 'warning'
  3066. }).then(() => {
  3067. rows.splice(index, 1);
  3068. this.UrbanTotalLC();
  3069. }).catch(() => {
  3070. this.$message({
  3071. type: 'info',
  3072. message: '操作已取消!'
  3073. });
  3074. });
  3075. },
  3076. deleteRowHC(index, rows,row) {
  3077. this.$confirm('此操作只是移除该条数据做出计算并未保存,如要删除该条数据请点击保存!', '提示', {
  3078. confirmButtonText: '确定',
  3079. cancelButtonText: '取消',
  3080. type: 'warning'
  3081. }).then(() => {
  3082. rows.splice(index, 1);
  3083. this.UrbanTotalHC();
  3084. }).catch(() => {
  3085. this.$message({
  3086. type: 'info',
  3087. message: '操作已取消!'
  3088. });
  3089. });
  3090. },
  3091. deleteRowJP(index, rows,row) {
  3092. this.$confirm('此操作只是移除该条数据做出计算并未保存,如要删除该条数据请点击保存!', '提示', {
  3093. confirmButtonText: '确定',
  3094. cancelButtonText: '取消',
  3095. type: 'warning'
  3096. }).then(() => {
  3097. rows.splice(index, 1);
  3098. this.UrbanTotalJP();
  3099. }).catch(() => {
  3100. this.$message({
  3101. type: 'info',
  3102. message: '操作已取消!'
  3103. });
  3104. });
  3105. },
  3106. //改值计算
  3107. UrbanModify(val,bizhong){
  3108. var total=0
  3109. var obj = {}
  3110. obj = this.currencies.find(function (i,indexs) {
  3111. return i.currencyCode === bizhong
  3112. });
  3113. total=(Number(val.cost/this.Basicdata.groupSize)+Number(val.otherCost)+Number(val.guideCost))*val.serviceCount*val.coefficient*obj.rate;
  3114. val.quote=this.numFilters(total)
  3115. this.UrbanTotal();
  3116. },
  3117. //改值计算LC
  3118. UrbanModifyLC(val){
  3119. var total=0
  3120. val.currencyName="CNY"
  3121. total=Number(val.cost)*val.coefficient;
  3122. val.quote=this.numFilters(total)
  3123. this.UrbanTotalLC();
  3124. },
  3125. //计算总价LC
  3126. UrbanTotalLC(){
  3127. this.pullCartFeeTotal=0
  3128. for(let i=0;i<this.pullCartFeeDetails.length;i++){
  3129. this.pullCartFeeTotal+=Number(this.pullCartFeeDetails[i].quote)
  3130. }
  3131. },
  3132. //改值计算HC
  3133. UrbanModifyHC(val){
  3134. var total=0
  3135. val.currencyName="CNY"
  3136. total=Number(val.cost)*val.coefficient;
  3137. val.quote=this.numFilters(total)
  3138. this.UrbanTotalHC();
  3139. },
  3140. //计算总价HC
  3141. UrbanTotalHC(){
  3142. this.trainFeeTotal=0
  3143. for(let i=0;i<this.trainFeeDetails.length;i++){
  3144. this.trainFeeTotal+=Number(this.trainFeeDetails[i].quote)
  3145. }
  3146. },
  3147. //改值计算JP
  3148. UrbanModifyJP(val){
  3149. var total=0
  3150. val.currencyName="CNY"
  3151. total=Number(val.cost)*val.coefficient;
  3152. val.quote=this.numFilters(total)
  3153. this.UrbanTotalJP();
  3154. },
  3155. //计算总价JP
  3156. UrbanTotalJP(){
  3157. this.cityAirTicketFeeTotal=0
  3158. for(let i=0;i<this.cityAirTicketFeeDetails.length;i++){
  3159. this.cityAirTicketFeeTotal+=Number(this.cityAirTicketFeeDetails[i].quote)
  3160. }
  3161. },
  3162. //计算总价
  3163. UrbanTotal(){
  3164. this.Transportationdatatotal=0
  3165. for(let i=0;i<this.Transportationdata.length;i++){
  3166. this.Transportationdatatotal+=Number(this.Transportationdata[i].quote)
  3167. }
  3168. // console.log(total);
  3169. // this.TotalExpenses.TravellingExpensesJJ=this.numFilters(total)
  3170. // this.TotalExpenses.TravellingExpensesGW=this.numFilters(total)
  3171. // this.TotalExpenses.TravellingExpensesTD=this.numFilters(total)
  3172. // this.calculation();
  3173. },
  3174. //添加一行接送机
  3175. addTransportationdata(){
  3176. this.Transportationdata.push({
  3177. coefficient: 2.5,
  3178. cost: 0,
  3179. currencyName: "CNY",
  3180. guideCost: 0,
  3181. no: this.Transportationdata.length + 1,
  3182. otherCost: 0,
  3183. ovId: '',
  3184. quote: 0,
  3185. remark: "",
  3186. serviceCount: 1
  3187. });
  3188. },
  3189. //添加一行拉车
  3190. addpullCartFeeDetails(){
  3191. this.pullCartFeeDetails.push({
  3192. no: this.pullCartFeeDetails.length + 1,
  3193. cost: 0,
  3194. coefficient: 2.50,
  3195. currencyName: "",
  3196. quote: 0,
  3197. remark: ""
  3198. });
  3199. },
  3200. //添加一行火车
  3201. addtrainFeeDetails(){
  3202. this.trainFeeDetails.push({
  3203. no: this.trainFeeDetails.length + 1,
  3204. cost: 0,
  3205. coefficient: 2.50,
  3206. currencyName: "",
  3207. quote: 0,
  3208. remark: ""
  3209. });
  3210. },
  3211. //添加一行城市机票(
  3212. addcityAirTicketFeeDetails(){
  3213. this.cityAirTicketFeeDetails.push({
  3214. no: this.cityAirTicketFeeDetails.length + 1,
  3215. cost: 0,
  3216. coefficient: 2.50,
  3217. currencyName: "",
  3218. quote: 0,
  3219. remark: ""
  3220. });
  3221. },
  3222. //城市交通费保存
  3223. GetEnterExitCostOVFeeSave() {
  3224. for(let i=0;i<this.Transportationdata.length;i++){
  3225. if(this.Transportationdata[i].ovId==""){
  3226. this.$message.error("请查看是否除备注外的必填项均已填写!");
  3227. return;
  3228. }
  3229. }
  3230. var url = "/api/Groups/GetEnterExitCostOVFeeSave"
  3231. var that = this
  3232. this.$axios({
  3233. method: 'post',
  3234. url: url,
  3235. headers: {
  3236. Authorization: 'Bearer ' + this.token
  3237. },
  3238. data:{
  3239. aptFeeTotal:that.Transportationdatatotal,
  3240. aptFeeDetails:that.Transportationdata,
  3241. pullCartFeeTotal:that.pullCartFeeTotal,
  3242. pullCartFeeDetails:that.pullCartFeeDetails,
  3243. trainFeeTotal:that.trainFeeTotal,
  3244. trainFeeDetails:that.trainFeeDetails,
  3245. cityAirTicketFeeTotal:that.cityAirTicketFeeTotal,
  3246. cityAirTicketFeeDetails:that.cityAirTicketFeeDetails,
  3247. currencies:that.currencies,
  3248. lastUpdateUserName:that.lastUpdateUserName,
  3249. lastUpdateTime:that.lastUpdateTime,
  3250. createUserName:that.createUserName,
  3251. createTime:that.createTime,
  3252. groupId:that.value,
  3253. currUserId:that.userId,
  3254. }
  3255. }).then(function (res) {
  3256. if (res.data.code == 200) {
  3257. that.TotalExpenses.TravellingExpensesJJ=that.numFilters(that.Transportationdatatotal + that.pullCartFeeTotal + that.trainFeeTotal + that.cityAirTicketFeeTotal);
  3258. that.TotalExpenses.TravellingExpensesGW=that.numFilters(that.Transportationdatatotal + that.pullCartFeeTotal + that.trainFeeTotal + that.cityAirTicketFeeTotal);
  3259. that.TotalExpenses.TravellingExpensesTD=that.numFilters(that.Transportationdatatotal + that.pullCartFeeTotal + that.trainFeeTotal + that.cityAirTicketFeeTotal);
  3260. if (that.TotalExpenses.twoItemRemark=='') {
  3261. that.TotalExpenses.twoItemRemark=res.data.data.label;
  3262. }else{
  3263. if (that.TotalExpenses.twoItemRemark.split("、").length > 1) {
  3264. that.TotalExpenses.twoItemRemark.split("、")[1] = res.data.data.label;
  3265. that.TotalExpenses.twoItemRemark = that.TotalExpenses.twoItemRemark.split("、")[0] + '、' + that.TotalExpenses.twoItemRemark.split("、")[1];
  3266. that.TransportationVisible = false;
  3267. that.$message.success(res.data.msg);
  3268. return;
  3269. }
  3270. if (that.TotalExpenses.twoItemRemark.includes('接送机')) {
  3271. console.log(1);
  3272. that.TotalExpenses.twoItemRemark=res.data.data.label
  3273. }else{
  3274. that.TotalExpenses.twoItemRemark=that.TotalExpenses.twoItemRemark+'、'+res.data.data.label;
  3275. }
  3276. }
  3277. that.TransportationVisible=false;
  3278. that.$message.success(res.data.msg);
  3279. }else {
  3280. that.$message.error(res.data.msg);
  3281. }
  3282. })
  3283. },
  3284. },
  3285. filters: {
  3286. numFilter(value) {
  3287. // 截取当前数据到小数点后两位
  3288. let realVal = new Decimal(value).toFixed(2)
  3289. return realVal
  3290. }
  3291. },
  3292. watch: {
  3293. Transportationdata: {
  3294. handler(newVal, oldVal) {
  3295. // this.UrbanTotal();
  3296. }
  3297. },
  3298. choiceOne(val) {//境内费用(其他费用)选择框
  3299. this.calculation();
  3300. },
  3301. choiceThree(val) {//住宿费合计选择框
  3302. this.calculation();
  3303. },
  3304. choiceFour(val) {//伙食费合计选择框
  3305. this.calculation();
  3306. },
  3307. choiceFive(val) {//公杂费合计选择框
  3308. this.calculation();
  3309. },
  3310. choiceSix(val) {//培训费用选择框
  3311. this.calculation();
  3312. },
  3313. choiceSeven(val) {//其他费用选择框
  3314. this.calculation();
  3315. },
  3316. //加参数
  3317. sumJJC(val) {//经济舱小计选择框
  3318. this.calculation();
  3319. },
  3320. sumGWC(val) {//公务舱小计选择框
  3321. this.calculation();
  3322. },
  3323. sumTDC(val) {//公务舱小计选择框
  3324. this.calculation();
  3325. },
  3326. 'DomesticFees.total': {
  3327. handler(newVal, oldVal) {
  3328. this.calculation();
  3329. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3330. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3331. },
  3332. },
  3333. TotalAccommodationFee: {
  3334. handler(newVal, oldVal) {
  3335. this.calculation();
  3336. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3337. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3338. },
  3339. },
  3340. TotalMeals: {
  3341. handler(newVal, oldVal) {
  3342. this.calculation();
  3343. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3344. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3345. },
  3346. },
  3347. TotalMiscellaneous: {
  3348. handler(newVal, oldVal) {
  3349. this.calculation();
  3350. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3351. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3352. },
  3353. },
  3354. trainingExpense: {
  3355. handler(newVal, oldVal) {
  3356. this.calculation();
  3357. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3358. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3359. },
  3360. },
  3361. otherExpense: {
  3362. handler(newVal, oldVal) {
  3363. this.calculation();
  3364. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3365. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3366. },
  3367. },
  3368. 'TotalExpenses.EconomyClasstotal': {
  3369. handler(newVal, oldVal) {
  3370. this.calculation();
  3371. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3372. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3373. },
  3374. },
  3375. 'TotalExpenses.BusinessClasstotal': {
  3376. handler(newVal, oldVal) {
  3377. this.calculation();
  3378. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3379. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3380. },
  3381. },
  3382. 'TotalExpenses.Firstclasstotal': {
  3383. handler(newVal, oldVal) {
  3384. this.calculation();
  3385. // this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  3386. // this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  3387. },
  3388. },
  3389. //境内费用非空处理
  3390. DomesticFees: {
  3391. handler(newVal, oldVal) {
  3392. if (newVal.insurance == undefined) {
  3393. newVal.insurance = 0
  3394. }
  3395. if (newVal.nucleicfees == undefined) {
  3396. newVal.nucleicfees = 0
  3397. }
  3398. if (newVal.serviceCharge == undefined) {
  3399. newVal.serviceCharge = 0
  3400. }
  3401. if (newVal.ticketsExhibitionL == undefined) {
  3402. newVal.ticketsExhibitionL = 0
  3403. }
  3404. if (newVal.vaccinefees == undefined) {
  3405. newVal.vaccinefees = 0
  3406. }
  3407. if (newVal.visafees == undefined) {
  3408. newVal.visafees = 0
  3409. }
  3410. },
  3411. immediate: true,
  3412. deep: true // 可以深度检测到 person 对象的属性值的变化
  3413. },
  3414. //国际旅费非空处理
  3415. TotalExpenses: {
  3416. handler(newVal, oldVal) {
  3417. if (newVal.EconomyClass == undefined) {
  3418. newVal.EconomyClass = 0
  3419. }
  3420. if (newVal.BusinessClass == undefined) {
  3421. newVal.BusinessClass = 0
  3422. }
  3423. if (newVal.TravellingExpensesJJ == undefined) {
  3424. newVal.TravellingExpensesJJ = 0
  3425. }
  3426. if (newVal.TravellingExpensesGW == undefined) {
  3427. newVal.TravellingExpensesGW = 0
  3428. }
  3429. if (newVal.TravellingExpensesTD == undefined) {
  3430. newVal.TravellingExpensesTD = 0
  3431. }
  3432. },
  3433. immediate: true,
  3434. deep: true // 可以深度检测到 person 对象的属性值的变化
  3435. },
  3436. //监听汇率数组是否变化
  3437. currencys: {
  3438. handler(val) {
  3439. this.TotalAccommodationFee = 0
  3440. for (let q = 0; q < this.quarterageData.length; q++) {
  3441. for (let qc = 0; qc < this.currencys.length; qc++) {
  3442. if (this.currencys[qc].currencyCode == this.quarterageData[q].curremcyCode||this.currencys[qc].currencyName == this.quarterageData[q].currencyName) {
  3443. this.quarterageData[q].subTotal = new Decimal(this.currencys[qc].rate * this.quarterageData[q].cost).toFixed(2)
  3444. }
  3445. }
  3446. this.TotalAccommodationFee += Number(this.quarterageData[q].subTotal);
  3447. }
  3448. //伙食费
  3449. this.TotalMeals = 0
  3450. for (let b = 0; b < this.boardWagesData.length; b++) {
  3451. for (let bc = 0; bc < this.currencys.length; bc++) {
  3452. if (this.currencys[bc].currencyCode == this.boardWagesData[b].curremcyCode||this.currencys[bc].currencyName == this.boardWagesData[b].currencyName) {
  3453. this.boardWagesData[b].subTotal = new Decimal(this.currencys[bc].rate * this.boardWagesData[b].cost).toFixed(2)
  3454. }
  3455. }
  3456. this.TotalMeals += Number(this.boardWagesData[b].subTotal);
  3457. }
  3458. //公杂费
  3459. this.TotalMiscellaneous = 0
  3460. for (let m = 0; m < this.miscellaneousFeeData.length; m++) {
  3461. for (let mc = 0; mc < this.currencys.length; mc++) {
  3462. if (this.currencys[mc].currencyCode == this.miscellaneousFeeData[m].curremcyCode||this.currencys[mc].currencyName == this.miscellaneousFeeData[m].currencyName) {
  3463. this.miscellaneousFeeData[m].subTotal = this.currencys[mc].rate * this.miscellaneousFeeData[m].cost
  3464. }
  3465. }
  3466. this.TotalMiscellaneous += this.miscellaneousFeeData[m].subTotal
  3467. }
  3468. //培训费
  3469. this.trainingExpense = 0
  3470. for (let t = 0; t < this.trainingExpenseData.length; t++) {
  3471. for (let tc = 0; tc < this.currencys.length; tc++) {
  3472. if (this.currencys[tc].currencyCode == this.trainingExpenseData[t].curremcyCode||this.currencys[tc].currencyName == this.trainingExpenseData[t].currencyName) {
  3473. this.trainingExpenseData[t].subTotal = this.currencys[tc].rate * this.trainingExpenseData[t].cost
  3474. }
  3475. }
  3476. this.trainingExpense += this.trainingExpenseData[t].subTotal
  3477. }
  3478. //其他费用
  3479. for (let nc = 0; nc < this.currencys.length; nc++) {
  3480. for (let nt = 0; nt < this.othercurrencys.length; nt++) {
  3481. if (this.currencys[nc].currencyCode == this.othercurrencys[nt].currencyCode||this.currencys[nc].currencyName == this.othercurrencys[nt].currencyName) {
  3482. this.othercurrencys[nt].rate = this.currencys[nc].rate;
  3483. }
  3484. }
  3485. }
  3486. this.otherExpense = 0;
  3487. for (let wm = 0; wm < this.otherData.length; wm++) {
  3488. for (let cj = 0; cj < this.othercurrencys.length; cj++) {
  3489. if (this.otherData[wm].currency == this.othercurrencys[cj].currencyId) {
  3490. this.otherData[wm].rate = this.othercurrencys[cj].rate
  3491. }
  3492. }
  3493. this.otherExpense += this.otherData[wm].subTotal;
  3494. if (this.otherData[wm].rate) {
  3495. this.otherData[wm].subTotal = this.otherData[wm].cost * this.otherData[wm].rate;
  3496. }
  3497. }
  3498. },
  3499. deep: true
  3500. }
  3501. },
  3502. created() {
  3503. this.QuerySetData();
  3504. },
  3505. mounted() {
  3506. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  3507. this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  3508. this.value = JSON.parse(localStorage.getItem('sgvalue'))
  3509. this.GetEnterExitCostDataSource();
  3510. // this.GetNationalTravelFeeData();
  3511. },
  3512. destroyed() {
  3513. window.localStorage.removeItem('sgvalue');
  3514. },
  3515. }
  3516. </script>
  3517. <style>
  3518. /* .el-message-box__status {
  3519. color: greenyellow;
  3520. } */
  3521. .Entry-all {
  3522. background-color: #fff;
  3523. padding: 10px;
  3524. box-shadow: 0 0 5px #0005;
  3525. border-radius: 10px;
  3526. height: 100%;
  3527. min-height: 830px;
  3528. }
  3529. .Entry-head-li label {
  3530. color: #606266;
  3531. font-size: 15px;
  3532. font-weight: 600;
  3533. }
  3534. .Entry-head {
  3535. display: flex;
  3536. justify-content: space-between;
  3537. }
  3538. .Entry-form {
  3539. margin-top: 10px;
  3540. border-top: 2px solid #409EFF;
  3541. }
  3542. .Entry-li-inif {
  3543. display: flex;
  3544. align-items: center;
  3545. width: 100%;
  3546. border-top: 1px solid #ebeef5;
  3547. padding: 5px 0;
  3548. }
  3549. .Entry-li-inif:last-child {
  3550. border-bottom: 1px solid #ebeef5;
  3551. }
  3552. .Entry-li-lable {
  3553. display: flex;
  3554. justify-content: space-between;
  3555. align-items: center;
  3556. margin: 10px 0;
  3557. margin-top: 20px;
  3558. }
  3559. .Entry-li-lables {
  3560. display: flex;
  3561. align-items: center;
  3562. margin: 10px 0;
  3563. margin-top: 20px;
  3564. }
  3565. .Entry-inif-box .depipt {
  3566. display: inline-block;
  3567. width: 240px;
  3568. }
  3569. .Entry-inif-box {
  3570. margin-right: 20px;
  3571. }
  3572. .Entry-li-inif label {
  3573. font-size: 14px;
  3574. color: #606266;
  3575. }
  3576. .Entry-form .redzhu {
  3577. margin-left: 25px;
  3578. font-size: 14px;
  3579. color: red;
  3580. }
  3581. .sub-boxs {
  3582. -ms-user-select: none;
  3583. -khtml-user-select: none;
  3584. -webkit-user-select: none;
  3585. -moz-user-select: none;
  3586. font-size: 12px;
  3587. font-family: "微软雅黑";
  3588. user-select: none;
  3589. background-color: #FFF;
  3590. background-image: none;
  3591. border-radius: 4px;
  3592. border: 1px solid #DCDFE6;
  3593. -webkit-box-sizing: border-box;
  3594. box-sizing: border-box;
  3595. color: #606266;
  3596. display: inline-block;
  3597. height: 28px;
  3598. line-height: 28px;
  3599. outline: 0;
  3600. padding: 0 15px;
  3601. -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
  3602. transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
  3603. }
  3604. .btn-Entry {
  3605. text-align: right;
  3606. }
  3607. .Entry-all .el-checkbox__inner {
  3608. width: 18px;
  3609. height: 18px;
  3610. margin-right: 10px;
  3611. }
  3612. .Entry-all .el-checkbox__inner::after {
  3613. height: 10px;
  3614. left: 6px;
  3615. }
  3616. .Entry-all .el-table th.el-table__cell>.cell {
  3617. text-align: center;
  3618. }
  3619. .Entry-all .el-button+.el-button{
  3620. margin-left: 0px;
  3621. }
  3622. .Entry-all .permissionsbox .el-checkbox-group{
  3623. display: flex;
  3624. flex-wrap: wrap;
  3625. justify-content: space-between;
  3626. }
  3627. .Entry-all .permissionsbox .el-checkbox{
  3628. width: 150px;
  3629. margin-right: 0;
  3630. }
  3631. .custom-tooltip-style {
  3632. max-width: 400px;
  3633. white-space: pre-line; /* 保留换行符 */
  3634. font-size: 13px;
  3635. line-height: 25px;
  3636. color: #606266;
  3637. }
  3638. .jiaotongfei-ul{
  3639. margin-top: 20px;
  3640. display: flex;
  3641. justify-content: space-between;
  3642. }
  3643. .jiaotongfei-li{
  3644. width: 32.5%;
  3645. }
  3646. .inputNumberClass[class-unit] {
  3647. --el-input-number-unit-offset-x: 35px;
  3648. position: relative;
  3649. }
  3650. .inputNumberClass[class-unit]::after {
  3651. content: attr(class-unit);
  3652. height: 100%;
  3653. display: flex;
  3654. align-items: center;
  3655. position: absolute;
  3656. top: 0;
  3657. right: 5px;
  3658. color: #C0C4CC;
  3659. }
  3660. .inputNumberClass[class-unit] .el-input__inner {
  3661. padding-right:25px;
  3662. }
  3663. </style>