EntryDetails.vue 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383
  1. <template>
  2. <div v-loading.fullscreen.lock="fullscreenLoading">
  3. <div class="Entry-all">
  4. <div class="Entry-head">
  5. <div class="Entry-head-li">
  6. <label>团组名称:</label>
  7. <el-select style="width:250px" @change="chengvalue()" v-model="value" filterable placeholder="请选择">
  8. <el-option
  9. v-for="item in options"
  10. :key="item.id"
  11. :label="item.groupName"
  12. :value="item.id">
  13. </el-option>
  14. </el-select>
  15. </div>
  16. <div class="Entry-head-li">
  17. <el-button type="primary">计算费用</el-button>
  18. <el-button type="primary">全部清空</el-button>
  19. <el-button @click="storage()" type="primary">保存</el-button>
  20. <el-select style="width:202px" v-model="listvalue" placeholder="请选择">
  21. <el-option
  22. v-for="item in listvalueoptions"
  23. :key="item.id"
  24. :label="item.name"
  25. :value="item.id">
  26. </el-option>
  27. </el-select>
  28. <el-button @click="eptschedule(1)" type="primary">导出所选明细表</el-button>
  29. <el-select style="width:202px" v-model="tablevalue" placeholder="请选择">
  30. <el-option
  31. v-for="item in tablevalueoptions"
  32. :key="item.id"
  33. :label="item.name"
  34. :value="item.id">
  35. </el-option>
  36. </el-select>
  37. <el-button @click="eptschedule(2)" type="primary">导出下拉所选表格</el-button>
  38. <el-button @click="eptschedule(3)" type="primary">团组成员名单</el-button>
  39. </div>
  40. </div>
  41. <div class="Entry-form">
  42. <div class="Entry-form-li">
  43. <div class="Entry-li-lables">
  44. <el-checkbox v-model="choiceOne"></el-checkbox>
  45. <div class="li-lable">一、境内费用(其他费用)</div>
  46. <div class="li-lable">
  47. <span class="redzhu">(注:填好数值鼠标点击其他区域计算合计)</span>
  48. <label>合计:</label>
  49. <div class="sub-boxs">{{DomesticFees.total=(DomesticFees.visafees+DomesticFees.vaccinefees+DomesticFees.nucleicfees+DomesticFees.serviceCharge+DomesticFees.insurance+DomesticFees.ticketsExhibitionL)|numFilter}}</div>
  50. <span>元/人</span>
  51. </div>
  52. </div>
  53. <div class="Entry-li-inif">
  54. <div class="Entry-inif-box">
  55. <label>签证费:</label>
  56. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.visafees"></el-input-number>
  57. <span>元/人</span>
  58. </div>
  59. <div class="Entry-inif-box">
  60. <label>签证费用描述:</label>
  61. <el-input style="width:250px" size="mini" v-model="DomesticFees.visafeesDescription"></el-input>
  62. <span class="redzhu">* 例:日本:200元/人;加拿大:767.5元/人;</span>
  63. </div>
  64. </div>
  65. <div class="Entry-li-inif">
  66. <div class="Entry-inif-box">
  67. <label>疫苗费:</label>
  68. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.vaccinefees"></el-input-number>
  69. <span>元/人</span>
  70. </div>
  71. <div class="Entry-inif-box">
  72. <label>核酸检测费:</label>
  73. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.nucleicfees"></el-input-number>
  74. <span>元/人;</span>
  75. </div>
  76. <div class="Entry-inif-box">
  77. <label> 服务费:</label>
  78. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.serviceCharge"></el-input-number>
  79. <span>元/人;</span>
  80. </div>
  81. </div>
  82. <div class="Entry-li-inif">
  83. <div class="Entry-inif-box">
  84. <label>保险费:</label>
  85. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.insurance"></el-input-number>
  86. <span>元/人</span>
  87. </div>
  88. <div class="Entry-inif-box">
  89. <label>参展门票:</label>
  90. <el-input-number size="mini" :controls="false" :precision="2" v-model="DomesticFees.ticketsExhibitionL"></el-input-number>
  91. <span>元/人;</span>
  92. </div>
  93. </div>
  94. </div>
  95. <div class="Entry-form-li">
  96. <div class="Entry-li-lables">
  97. <el-checkbox v-model="choiceTwo"></el-checkbox>
  98. <div class="li-lable">二、国际旅费合计:</div>
  99. <div style="display: flex;">
  100. <div class="li-lable">
  101. <el-checkbox style="margin-right: -10px;" v-model="sumJJC"></el-checkbox>
  102. <label>(经济舱)</label>
  103. <div class="sub-boxs">{{TotalExpenses.EconomyClasstotal=(TotalExpenses.EconomyClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
  104. <span>元/人</span>
  105. </div>
  106. &nbsp;&nbsp;&nbsp;&nbsp;
  107. <div class="li-lable">
  108. <el-checkbox style="margin-right: -10px;" v-model="sumGWC"></el-checkbox>
  109. <label>(公务舱)</label>
  110. <div class="sub-boxs">{{TotalExpenses.BusinessClasstotal=(TotalExpenses.BusinessClass+TotalExpenses.TravellingExpenses)|numFilter}}</div>
  111. <span>元/人</span>
  112. </div>
  113. </div>
  114. </div>
  115. <div class="Entry-li-inif">
  116. <label>国际机票:&nbsp; &nbsp; &nbsp; </label>
  117. <div class="Entry-inif-box">
  118. <label>(经济舱):</label>
  119. <el-input-number size="mini" :controls="false" :precision="2" v-model="TotalExpenses.EconomyClass"></el-input-number>
  120. <span>元/人</span>
  121. </div>
  122. <div class="Entry-inif-box">
  123. <label>(公务舱):</label>
  124. <el-input-number size="mini" :controls="false" :precision="2" v-model="TotalExpenses.BusinessClass"></el-input-number>
  125. <span>元/人;</span>
  126. </div>
  127. </div>
  128. <div class="Entry-li-inif">
  129. <div class="Entry-inif-box">
  130. <label>城市区间交通费:</label>
  131. <el-input-number size="mini" :controls="false" :precision="2" v-model="TotalExpenses.TravellingExpenses"></el-input-number>
  132. <span>元/人;</span>
  133. </div>
  134. </div>
  135. <div class="Entry-li-inif">
  136. <div v-for="(item,index) in currencys" :key="index" class="Entry-inif-box">
  137. <label>{{item.currencyName}}汇率:</label>
  138. <el-input-number size="mini" :controls="false" :precision="4" v-model="item.rate"></el-input-number>
  139. </div>
  140. </div>
  141. </div>
  142. <div class="Entry-form-li">
  143. <div class="Entry-li-lable">
  144. <div style="display: flex;align-items: center;">
  145. <el-checkbox v-model="choiceThree"></el-checkbox>
  146. <div class="li-lable">三、住宿费:</div>
  147. <div style="display: flex;">
  148. <div class="li-lable">
  149. <label>合计:</label>
  150. <div class="sub-boxs">{{TotalAccommodationFee|numFilter}}</div>
  151. <span>元/人</span>
  152. </div>
  153. </div>
  154. </div>
  155. <div class="btn-Entry">
  156. <el-button type="primary" @click="addlist('住宿费')" size="mini">新 增</el-button>
  157. </div>
  158. </div>
  159. <div class="Entry-li-inif">
  160. <el-table
  161. :data="quarterageData"
  162. border
  163. style="width: 100%">
  164. <el-table-column
  165. prop="days"
  166. label="第几晚"
  167. width="180">
  168. <template slot-scope="scope">
  169. <el-input-number size="mini" :controls="false" v-model="scope.row.days"></el-input-number>
  170. </template>
  171. </el-table-column>
  172. <el-table-column
  173. style="position: relative;"
  174. prop="city"
  175. label="城 市"
  176. width="180">
  177. <template slot-scope="scope">
  178. <el-select size="mini" @change="changeSelect(scope.row,$event)" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  179. <el-option
  180. v-for="item in placeinif"
  181. :key="item.id"
  182. :label="item.cityname"
  183. :value="item.id"
  184. >
  185. <span style="float: left">{{item.cityname}}</span>
  186. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  187. </el-option>
  188. </el-select>
  189. </template>
  190. </el-table-column>
  191. <el-table-column
  192. prop="cost"
  193. label=" 费用标准"
  194. width="180">
  195. <template slot-scope="scope">
  196. <el-input-number disabled size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
  197. </template>
  198. </el-table-column>
  199. <el-table-column
  200. prop="currencyName"
  201. label=" 币 种"
  202. width="180">
  203. <template slot-scope="scope">
  204. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  205. </template>
  206. </el-table-column>
  207. <el-table-column
  208. prop="subTotal"
  209. label="费用小计"
  210. width="180">
  211. <template slot-scope="scope">
  212. <div class="sub-boxs">{{scope.row.subTotal|numFilter}}</div>&nbsp;CNY
  213. </template>
  214. </el-table-column>
  215. <el-table-column
  216. prop="address"
  217. label="操 作">
  218. </el-table-column>
  219. </el-table>
  220. </div>
  221. </div>
  222. <div class="Entry-form-li">
  223. <div class="Entry-li-lable">
  224. <div style="display: flex;align-items: center;">
  225. <el-checkbox v-model="choiceFour"></el-checkbox>
  226. <div class="li-lable">四、伙食费:</div>
  227. <div style="display: flex;">
  228. <div class="li-lable">
  229. <label>合计:</label>
  230. <div class="sub-boxs">{{TotalMeals|numFilter}}</div>
  231. <span>元/人</span>
  232. </div>
  233. </div>
  234. </div>
  235. <div class="btn-Entry">
  236. <el-button type="primary" @click="addlist('伙食费')" size="mini">新 增</el-button>
  237. </div>
  238. </div>
  239. <div class="Entry-li-inif">
  240. <el-table
  241. :data="boardWagesData"
  242. border
  243. style="width: 100%">
  244. <el-table-column
  245. prop="days"
  246. label="第几晚"
  247. width="180">
  248. <template slot-scope="scope">
  249. <el-input-number size="mini" :controls="false" v-model="scope.row.days"></el-input-number>
  250. </template>
  251. </el-table-column>
  252. <el-table-column
  253. style="position: relative;"
  254. prop="city"
  255. label="城 市"
  256. width="180">
  257. <!-- <template slot-scope="scope">
  258. <el-input size="mini" v-model="scope.row.city"></el-input>
  259. </template> -->
  260. <template slot-scope="scope">
  261. <el-select size="mini" @change="mealschangeSelect(scope.row,$event)" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  262. <el-option
  263. v-for="item in placeinif"
  264. :key="item.id"
  265. :label="item.cityname"
  266. :value="item.id"
  267. >
  268. <span style="float: left">{{item.cityname}}</span>
  269. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  270. </el-option>
  271. </el-select>
  272. </template>
  273. </el-table-column>
  274. <el-table-column
  275. prop="cost"
  276. label=" 费用标准"
  277. width="180">
  278. <template slot-scope="scope">
  279. <el-input-number disabled size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
  280. </template>
  281. </el-table-column>
  282. <el-table-column
  283. prop="currencyName"
  284. label=" 币 种"
  285. width="180">
  286. <template slot-scope="scope">
  287. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  288. </template>
  289. </el-table-column>
  290. <el-table-column
  291. prop="subTotal"
  292. label="费用小计"
  293. width="180">
  294. <template slot-scope="scope">
  295. <div class="sub-boxs">{{scope.row.subTotal|numFilter}}</div>&nbsp;CNY
  296. </template>
  297. </el-table-column>
  298. <el-table-column
  299. prop="address"
  300. label="操 作">
  301. </el-table-column>
  302. </el-table>
  303. </div>
  304. </div>
  305. <div class="Entry-form-li">
  306. <div class="Entry-li-lable">
  307. <div style="display: flex;align-items: center;">
  308. <el-checkbox v-model="choiceFive"></el-checkbox>
  309. <div class="li-lable">五、公杂费:</div>
  310. <div style="display: flex;">
  311. <div class="li-lable">
  312. <label>合计:</label>
  313. <div class="sub-boxs">{{TotalMiscellaneous|numFilter}}</div>
  314. <span>元/人</span>
  315. </div>
  316. </div>
  317. </div>
  318. <div class="btn-Entry">
  319. <el-button type="primary" @click="addlist('公杂费')" size="mini">新 增</el-button>
  320. </div>
  321. </div>
  322. <div class="Entry-li-inif">
  323. <el-table
  324. :data="miscellaneousFeeData"
  325. border
  326. style="width: 100%">
  327. <el-table-column
  328. prop="days"
  329. label="第几晚"
  330. width="180">
  331. <template slot-scope="scope">
  332. <el-input-number size="mini" :controls="false" v-model="scope.row.days"></el-input-number>
  333. </template>
  334. </el-table-column>
  335. <el-table-column
  336. style="position: relative;"
  337. prop="city"
  338. label="城 市"
  339. width="180">
  340. <!-- <template slot-scope="scope">
  341. <el-input size="mini" v-model="scope.row.city"></el-input>
  342. </template> -->
  343. <template slot-scope="scope">
  344. <el-select @change="MiscellaneouschangeSelect(scope.row,$event)" size="mini" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  345. <el-option
  346. v-for="item in placeinif"
  347. :key="item.id"
  348. :label="item.cityname"
  349. :value="item.id"
  350. >
  351. <span style="float: left">{{item.cityname}}</span>
  352. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  353. </el-option>
  354. </el-select>
  355. </template>
  356. </el-table-column>
  357. <el-table-column
  358. prop="cost"
  359. label=" 费用标准"
  360. width="180">
  361. <template slot-scope="scope">
  362. <el-input-number disabled size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
  363. </template>
  364. </el-table-column>
  365. <el-table-column
  366. prop="currencyName"
  367. label=" 币 种"
  368. width="180">
  369. <template slot-scope="scope">
  370. <el-input disabled size="mini" v-model="scope.row.currencyName"></el-input>
  371. </template>
  372. </el-table-column>
  373. <el-table-column
  374. prop="subTotal"
  375. label="费用小计"
  376. width="180">
  377. <template slot-scope="scope">
  378. <div class="sub-boxs">{{scope.row.subTotal|numFilter}}</div>&nbsp;CNY
  379. </template>
  380. </el-table-column>
  381. <el-table-column
  382. prop="address"
  383. label="操 作">
  384. </el-table-column>
  385. </el-table>
  386. </div>
  387. </div>
  388. <div class="Entry-form-li">
  389. <div class="Entry-li-lable">
  390. <div style="display: flex;align-items: center;">
  391. <el-checkbox v-model="choiceSix"></el-checkbox>
  392. <div class="li-lable">六、培训费:</div>
  393. <div style="display: flex;">
  394. <div class="li-lable">
  395. <label>合计:</label>
  396. <div class="sub-boxs">{{trainingExpense|numFilter}}</div>
  397. <span>元/人</span>
  398. </div>
  399. </div>
  400. </div>
  401. <div class="btn-Entry">
  402. <el-button type="primary" @click="addlist('培训费')" size="mini">新 增</el-button>
  403. </div>
  404. </div>
  405. <div class="Entry-li-inif">
  406. <el-table
  407. :data="trainingExpenseData"
  408. border
  409. style="width: 100%">
  410. <el-table-column
  411. prop="days"
  412. label="第几晚"
  413. width="180">
  414. <template slot-scope="scope">
  415. <el-input-number size="mini" :controls="false" v-model="scope.row.days"></el-input-number>
  416. </template>
  417. </el-table-column>
  418. <el-table-column
  419. style="position: relative;"
  420. prop="city"
  421. label="城 市"
  422. width="180">
  423. <!-- <template slot-scope="scope">
  424. <el-input size="mini" v-model="scope.row.city"></el-input>
  425. </template> -->
  426. <template slot-scope="scope">
  427. <el-select @change="TrainingExpenseDataSelect(scope.row,$event)" size="mini" v-model="scope.row.nationalTravelFeeId" filterable placeholder="请选择">
  428. <el-option
  429. v-for="item in placeinif"
  430. :key="item.id"
  431. :label="item.cityname"
  432. :value="item.id"
  433. >
  434. <span style="float: left">{{item.cityname}}</span>
  435. <!-- <span style="float: right; color: #8492a6; font-size: 13px">{{item.city}}</span> -->
  436. </el-option>
  437. </el-select>
  438. </template>
  439. </el-table-column>
  440. <el-table-column
  441. prop="cost"
  442. label=" 费用标准"
  443. width="180">
  444. <template slot-scope="scope">
  445. <el-input-number @input="Traininginput(scope.row)" size="mini" :precision="2" :controls="false" v-model="scope.row.cost"></el-input-number>
  446. </template>
  447. </el-table-column>
  448. <el-table-column
  449. prop="currencyName"
  450. label=" 币 种"
  451. width="180">
  452. <template slot-scope="scope">
  453. <el-input size="mini" v-model="scope.row.currencyName"></el-input>
  454. </template>
  455. </el-table-column>
  456. <el-table-column
  457. prop="subTotal"
  458. label="费用小计"
  459. width="180">
  460. <template slot-scope="scope">
  461. <div class="sub-boxs">{{scope.row.subTotal|numFilter}}</div>
  462. </template>
  463. </el-table-column>
  464. <el-table-column
  465. prop="address"
  466. label="操 作">
  467. </el-table-column>
  468. </el-table>
  469. </div>
  470. </div>
  471. <div class="Entry-form-li">
  472. <div class="Entry-li-lables">
  473. <div class="li-lable">七、费用总计:</div>
  474. <div style="display: flex;">
  475. <div class="li-lable">
  476. <el-checkbox style="margin-right: -10px;" v-model="airJJC_Checked"></el-checkbox>
  477. <label>(经济舱)</label>
  478. <div class="sub-boxs">{{jjctotal|numFilter}}</div>
  479. <span>元/人</span>
  480. </div>
  481. &nbsp;&nbsp;&nbsp;&nbsp;
  482. <div class="li-lable">
  483. <el-checkbox style="margin-right: -10px;" v-model="airGWC_Checked"></el-checkbox>
  484. <label>(公务舱)</label>
  485. <div class="sub-boxs">{{gwctotal|numFilter}}</div>
  486. <span>元/人</span>
  487. </div>
  488. </div>
  489. </div>
  490. </div>
  491. </div>
  492. </div>
  493. </div>
  494. </template>
  495. <script>
  496. export default {
  497. data() {
  498. return {
  499. fullscreenLoading:false,
  500. options: [{
  501. value: '选项1',
  502. label: '黄金糕'
  503. }, {
  504. value: '选项2',
  505. label: '双皮奶'
  506. }, {
  507. value: '选项3',
  508. label: '蚵仔煎'
  509. }, {
  510. value: '选项4',
  511. label: '龙须面'
  512. }, {
  513. value: '选项5',
  514. label: '北京烤鸭'
  515. }],
  516. listvalue:'',
  517. tablevalue:'',
  518. listvalueoptions:[],
  519. tablevalueoptions:[],
  520. //是否计算Checkbox
  521. choiceOne:false,//境内费用(其他费用)选择框
  522. choiceTwo:false,//国际旅费合计选择框
  523. choiceThree:false,//住宿费合计选择框
  524. choiceFour:false,//伙食费合计选择框
  525. choiceFive:false,//公杂费合计选择框
  526. choiceSix:false,//培训费用选择框
  527. sumJJC:false,//经济舱小计选择框
  528. sumGWC:false,//公务舱小计选择框
  529. airJJC_Checked:false,//经济舱选择框
  530. airGWC_Checked:false,//公务舱选择框
  531. userId:'',
  532. value:'',
  533. options:[],
  534. Visafees:'',
  535. Visadepicted:'',
  536. currencys: [],
  537. currencyss: [],
  538. DomesticFees:{
  539. visafees:'',//签证费
  540. visafeesDescription:'',//签证费用描述
  541. vaccinefees:0,//疫苗费
  542. nucleicfees:0,//核酸检测费
  543. serviceCharge:0,//服务费
  544. insurance:0,//保险费
  545. ticketsExhibitionL:0,//参展门票
  546. total:0
  547. },
  548. TotalExpenses:{
  549. EconomyClass:0,//经济舱
  550. BusinessClass:0,//公务舱
  551. TravellingExpenses:0,//城市区间交通费
  552. EconomyClasstotal:0,//经济舱合计
  553. BusinessClasstotal:0,//公务舱合计
  554. },
  555. TotalAccommodationFee:0,//住宿费合计
  556. TotalMeals:0,//伙食费合计
  557. TotalMiscellaneous:0,//公杂费合计
  558. trainingExpense:0,//培训费合计
  559. quarterageData: [],
  560. boardWagesData:[],
  561. miscellaneousFeeData:[],
  562. trainingExpenseData:[],
  563. placeinif:[],
  564. //下拉框
  565. treeData: "",
  566. treeDataValue: "",
  567. data: [
  568. {
  569. id: 1,
  570. name: "一级 1",
  571. children: [
  572. {
  573. id: 4,
  574. label: "二级 1-1",
  575. },
  576. ],
  577. },
  578. {
  579. id: 2,
  580. name: "一级 2",
  581. children: [
  582. {
  583. id: 5,
  584. name: "二级 2-1",
  585. },
  586. {
  587. id: 6,
  588. name: "二级 2-2",
  589. },
  590. ],
  591. },
  592. {
  593. id: 3,
  594. name: "一级 3",
  595. children: [
  596. {
  597. id: 7,
  598. name: "二级 3-1",
  599. },
  600. {
  601. id: 8,
  602. name: "二级 3-2",
  603. },
  604. ],
  605. },
  606. ],
  607. defaultProps: {
  608. children: "cityData",
  609. label:"city",
  610. // label: "country",
  611. },
  612. jjctotal:0,//经济舱合计
  613. gwctotal:0,//公务舱合计
  614. storageid:0,
  615. }
  616. },
  617. methods:{
  618. //获取团组
  619. GetEnterExitCostDataSource(){
  620. var url = "/api/Groups/GetEnterExitCostDataSource"
  621. var that = this
  622. this.$axios({
  623. method: 'post',
  624. url: url,
  625. headers: {
  626. Authorization: 'Bearer ' + this.token
  627. },
  628. data:{
  629. portType: 1
  630. }
  631. }).then(function (res) {
  632. console.log(res)
  633. if(res.data.code==200){
  634. that.options=res.data.data.groupNameData;
  635. that.currencys=res.data.data.currencyInit;
  636. that.value=res.data.data.groupNameData[0].id;
  637. that.placeinif=res.data.data.nationalTravelFeeData;
  638. that.listvalueoptions=res.data.data.wordTypeData;
  639. that.tablevalueoptions=res.data.data.excelTypeData;
  640. that.GetEnterExitCostInfobyDiId()
  641. }
  642. })
  643. },
  644. //获取费用标注
  645. GetNationalTravelFeeData(){
  646. var url = "/api/Groups/GetNationalTravelFeeData"
  647. var that = this
  648. this.$axios({
  649. method: 'post',
  650. url: url,
  651. headers: {
  652. Authorization: 'Bearer ' + this.token
  653. },
  654. data:{
  655. portType: 1
  656. }
  657. }).then(function (res) {
  658. console.log(res)
  659. let placeinifarr=[];
  660. if(res.data.code==200){
  661. for(let i=0;i<res.data.data.length;i++){
  662. res.data.data[i]['cityname']=res.data.data[i].country+'-'+res.data.data[i].city;
  663. placeinifarr.push(res.data.data[i]);
  664. }
  665. that.placeinif=placeinifarr;
  666. console.log(that.placeinif)
  667. console.log(placeinifarr)
  668. }
  669. })
  670. },
  671. GetEnterExitCostInfobyDiId(){
  672. //初始化数据
  673. // this.currencys=[]
  674. this.TotalAccommodationFee=0;//住宿费合计
  675. this.TotalMeals=0;//伙食费合计
  676. this.TotalMiscellaneous=0;//公杂费合计
  677. this.trainingExpense=0;//培训费合计
  678. this.DomesticFees={
  679. visafees:'',//签证费
  680. visafeesDescription:'',//签证费用描述
  681. vaccinefees:0,//疫苗费
  682. nucleicfees:0,//核酸检测费
  683. serviceCharge:0,//服务费
  684. insurance:0,//保险费
  685. ticketsExhibitionL:0,//参展门票
  686. total:0
  687. }
  688. this.TotalExpenses={
  689. EconomyClass:0,//经济舱
  690. BusinessClass:0,//公务舱
  691. TravellingExpenses:0,//城市区间交通费
  692. EconomyClasstotal:0,//经济舱合计
  693. BusinessClasstotal:0,//公务舱合计
  694. }
  695. this.choiceOne=false//境内费用(其他费用)选择框
  696. this.choiceTwo=false//国际旅费合计选择框
  697. this.choiceThree=false//住宿费合计选择框
  698. this.choiceFour=false//伙食费合计选择框
  699. this.choiceFive=false//公杂费合计选择框
  700. this.choiceSix=false//培训费用选择框
  701. this.sumJJC=false//经济舱小计选择框
  702. this.sumGWC=false//公务舱小计选择框
  703. this.airJJC_Checked=false//经济舱选择框
  704. this.airGWC_Checked=false//公务舱选择框
  705. this.quarterageData= []
  706. this.boardWagesData=[]
  707. this.miscellaneousFeeData=[]
  708. this.trainingExpenseData=[]
  709. var url = "/api/Groups/GetEnterExitCostInfobyDiId"
  710. var that = this
  711. console.log(that.value)
  712. this.$axios({
  713. method: 'post',
  714. url: url,
  715. headers: {
  716. Authorization: 'Bearer ' + this.token
  717. },
  718. data:{
  719. portType: 1,
  720. diId: that.value
  721. }
  722. }).then(function (res) {
  723. if(res.data.code==200){
  724. console.log(res)
  725. //汇率
  726. that.currencys=res.data.data.currencys;
  727. //境内费用
  728. that.DomesticFees.visafees=res.data.data.visa;
  729. that.DomesticFees.visafeesDescription=res.data.data.visaRemark;
  730. that.DomesticFees.vaccinefees=res.data.data.yiMiao;
  731. that.DomesticFees.nucleicfees=res.data.data.heSuan;
  732. that.DomesticFees.serviceCharge=res.data.data.service;
  733. that.DomesticFees.insurance=res.data.data.safe;
  734. that.DomesticFees.ticketsExhibitionL=res.data.data.ticket;
  735. //国际旅费
  736. that.TotalExpenses.EconomyClass=res.data.data.outsideJJPay;
  737. that.TotalExpenses.BusinessClass=res.data.data.outsaideGWPay;
  738. that.TotalExpenses.TravellingExpenses=res.data.data.cityTranffic;
  739. //是否计算Checkbox
  740. that.choiceOne=res.data.data.choiceOne==1?true:false
  741. that.choiceTwo=res.data.data.choiceTwo==1?true:false
  742. that.choiceThree=res.data.data.choiceThree==1?true:false
  743. that.choiceFour=res.data.data.choiceFour==1?true:false
  744. that.choiceFive=res.data.data.choiceFive==1?true:false
  745. that.choiceSix=res.data.data.choiceSix==1?true:false
  746. that.sumJJC=res.data.data.sumJJC==1?true:false
  747. that.sumGWC=res.data.data.sumGWC==1?true:false
  748. that.airJJC_Checked=res.data.data.airJJC_Checked==1?true:false
  749. that.airGWC_Checked=res.data.data.airGWC_Checked==1?true:false
  750. //住宿费
  751. that.quarterageData=res.data.data.quarterageData;
  752. for(let a=0;a<res.data.data.quarterageData.length;a++){
  753. that.TotalAccommodationFee+=res.data.data.quarterageData[a].subTotal
  754. }
  755. //伙食费
  756. that.boardWagesData=res.data.data.boardWagesData;
  757. for(let b=0;b<res.data.data.boardWagesData.length;b++){
  758. that.TotalMeals+=res.data.data.boardWagesData[b].subTotal
  759. }
  760. //公杂费
  761. that.miscellaneousFeeData=res.data.data.miscellaneousFeeData;
  762. for(let c=0;c<res.data.data.miscellaneousFeeData.length;c++){
  763. that.TotalMiscellaneous+=res.data.data.miscellaneousFeeData[c].subTotal
  764. }
  765. //培训费
  766. that.trainingExpenseData=res.data.data.trainingExpenseData;
  767. for(let d=0;d<res.data.data.trainingExpenseData.length;d++){
  768. that.trainingExpense+=res.data.data.trainingExpenseData[d].subTotal
  769. }
  770. that.storageid=res.data.data.id;
  771. that.GetNationalTravelFeeData();
  772. that.fullscreenLoading=false;
  773. }else{
  774. that.fullscreenLoading=false;
  775. that.$message.error(res.data.msg);
  776. }
  777. })
  778. },
  779. //下拉
  780. handNodeClick(data,node,e){
  781. console.log(data)
  782. console.log(node)
  783. console.log(e)
  784. this.treeDataValue= data.name
  785. this.treeData= data.name
  786. console.log(this.treeData)
  787. },
  788. //住宿地区选择
  789. changeSelect(val,item){
  790. console.log(val);
  791. var rate=0
  792. var obj={}
  793. obj= this.placeinif.find(function(i){
  794. return i.id ===item
  795. });
  796. //在change中获取到整条对象数据
  797. console.log(obj);
  798. val.currencyName=obj.currencyName;
  799. val.currency=obj.currency;
  800. val.cost=obj.roomCost;
  801. console.log(this.currencys)
  802. for(let j=0;j<this.currencys.length;j++){
  803. if(this.currencys[j].currencyCode==obj.currencyCode){
  804. rate=this.currencys[j].rate;
  805. }
  806. }
  807. console.log(val.cost,rate)
  808. val.subTotal=Number(val.cost)*Number(rate);
  809. this.TotalAccommodationFee=0;
  810. for(let a=0;a<this.quarterageData.length;a++){
  811. this.TotalAccommodationFee+=this.quarterageData[a].subTotal
  812. }
  813. },
  814. //伙食地区选择
  815. mealschangeSelect(val,item){
  816. console.log(val);
  817. var rate=0
  818. var obj={}
  819. obj= this.placeinif.find(function(i){
  820. return i.id ===item
  821. });
  822. //在change中获取到整条对象数据
  823. console.log(obj);
  824. val.currencyName=obj.currencyName;
  825. val.currency=obj.currency;
  826. val.cost=obj.foodCost;
  827. for(let j=0;j<this.currencys.length;j++){
  828. if(this.currencys[j].currencyCode==obj.currencyCode){
  829. rate=this.currencys[j].rate;
  830. }
  831. }
  832. val.subTotal=Number(val.cost)*Number(rate);
  833. this.TotalMeals=0;
  834. for(let a=0;a<this.boardWagesData.length;a++){
  835. this.TotalMeals+=this.boardWagesData[a].subTotal
  836. }
  837. },
  838. //公杂费地区选择
  839. MiscellaneouschangeSelect(val,item){
  840. console.log(val);
  841. var rate=0
  842. var obj={}
  843. obj= this.placeinif.find(function(i){
  844. return i.id ===item
  845. });
  846. //在change中获取到整条对象数据
  847. console.log(obj);
  848. val.currencyName=obj.currencyName;
  849. val.currency=obj.currency;
  850. val.cost=obj.publicCost;
  851. for(let j=0;j<this.currencys.length;j++){
  852. if(this.currencys[j].currencyCode==obj.currencyCode){
  853. rate=this.currencys[j].rate;
  854. }
  855. }
  856. val.subTotal=Number(val.cost)*Number(rate);
  857. this.TotalMiscellaneous=0;
  858. for(let a=0;a<this.miscellaneousFeeData.length;a++){
  859. this.TotalMiscellaneous+=this.miscellaneousFeeData[a].subTotal
  860. }
  861. },
  862. //培训费费用标准值改变
  863. Traininginput(val){
  864. var rate=0
  865. for(let j=0;j<this.currencys.length;j++){
  866. if(this.currencys[j].currencyName==val.currencyName){
  867. rate=this.currencys[j].rate;
  868. }
  869. }
  870. val.subTotal=Number(val.cost)*Number(rate);
  871. this.trainingExpense=0;
  872. for(let a=0;a<this.trainingExpenseData.length;a++){
  873. this.trainingExpense+=this.trainingExpenseData[a].subTotal
  874. }
  875. },
  876. //培训费地区选择
  877. TrainingExpenseDataSelect(val,item){
  878. console.log(val);
  879. console.log(this.trainingExpenseData);
  880. var rate=0//汇率
  881. var obj={}
  882. obj= this.placeinif.find(function(i){
  883. return i.id ===item
  884. });
  885. //在change中获取到整条对象数据
  886. console.log(obj);
  887. val.currencyName=obj.currencyName;
  888. val.currency=obj.currency;
  889. for(let j=0;j<this.currencys.length;j++){
  890. if(this.currencys[j].currencyCode==obj.currencyCode){
  891. rate=this.currencys[j].rate;
  892. }
  893. }
  894. val.subTotal=Number(val.cost)*Number(rate);
  895. this.trainingExpense=0;
  896. for(let a=0;a<this.trainingExpenseData.length;a++){
  897. this.trainingExpense+=this.trainingExpenseData[a].subTotal
  898. }
  899. },
  900. //新增list
  901. addlist(text){
  902. if(text=="住宿费"){
  903. this.quarterageData.push({
  904. id:0,
  905. diId:this.value,
  906. type:1,
  907. days:this.quarterageData.length!=0?(this.quarterageData[this.quarterageData.length-1].days)+1:1,
  908. nationalTravelFeeId:'',
  909. cost:0,
  910. currency:0,
  911. subTotal:0,
  912. remark:'',
  913. })
  914. }
  915. if(text=="伙食费"){
  916. this.boardWagesData.push({
  917. id:0,
  918. diId:this.value,
  919. type:2,
  920. days:this.boardWagesData.length!=0?(this.boardWagesData[this.boardWagesData.length-1].days)+1:1,
  921. nationalTravelFeeId:'',
  922. cost:0,
  923. currency:0,
  924. subTotal:0,
  925. remark:'',
  926. })
  927. }
  928. if(text=="公杂费"){
  929. this.miscellaneousFeeData.push({
  930. id:0,
  931. diId:this.value,
  932. type:3,
  933. days:this.miscellaneousFeeData.length!=0?(this.miscellaneousFeeData[this.miscellaneousFeeData.length-1].days)+1:1,
  934. nationalTravelFeeId:'',
  935. cost:0,
  936. currency:0,
  937. subTotal:0,
  938. remark:'',
  939. })
  940. }
  941. if(text=="培训费"){
  942. console.log(this.trainingExpenseData)
  943. this.trainingExpenseData.push({
  944. id:0,
  945. diId:this.value,
  946. type:4,
  947. days:this.trainingExpenseData.length!=0?(this.trainingExpenseData[this.trainingExpenseData.length-1].days)+1:1,
  948. nationalTravelFeeId:'',
  949. cost:0,
  950. currency:0,
  951. subTotal:0,
  952. remark:'',
  953. })
  954. }
  955. },
  956. //保存
  957. storage(){
  958. //住宿费
  959. var quarterageDatas=[];
  960. for(let m=0;m<this.quarterageData.length;m++){
  961. quarterageDatas.push({
  962. id:this.quarterageData[m].id,
  963. diId:this.quarterageData[m].diId,
  964. type:this.quarterageData[m].type,
  965. days:this.quarterageData[m].days,
  966. nationalTravelFeeId:this.quarterageData[m].nationalTravelFeeId,
  967. cost:this.quarterageData[m].cost,
  968. currency:this.quarterageData[m].currency,
  969. subTotal:this.quarterageData[m].subTotal,
  970. remark:this.quarterageData[m].remark,
  971. })
  972. }
  973. //伙食费
  974. var boardWagesDatas=[];
  975. for(let n=0;n<this.boardWagesData.length;n++){
  976. boardWagesDatas.push({
  977. id:this.boardWagesData[n].id,
  978. diId:this.boardWagesData[n].diId,
  979. type:this.boardWagesData[n].type,
  980. days:this.boardWagesData[n].days,
  981. nationalTravelFeeId:this.boardWagesData[n].nationalTravelFeeId,
  982. cost:this.boardWagesData[n].cost,
  983. currency:this.boardWagesData[n].currency,
  984. subTotal:this.boardWagesData[n].subTotal,
  985. remark:this.boardWagesData[n].remark,
  986. })
  987. }
  988. //公杂费miscellaneousFeeData
  989. var miscellaneousFeeDatas=[];
  990. for(let b=0;b<this.miscellaneousFeeData.length;b++){
  991. miscellaneousFeeDatas.push({
  992. id:this.miscellaneousFeeData[b].id,
  993. diId:this.miscellaneousFeeData[b].diId,
  994. type:this.miscellaneousFeeData[b].type,
  995. days:this.miscellaneousFeeData[b].days,
  996. nationalTravelFeeId:this.miscellaneousFeeData[b].nationalTravelFeeId,
  997. cost:this.miscellaneousFeeData[b].cost,
  998. currency:this.miscellaneousFeeData[b].currency,
  999. subTotal:this.miscellaneousFeeData[b].subTotal,
  1000. remark:this.miscellaneousFeeData[b].remark,
  1001. })
  1002. }
  1003. //培训费
  1004. var trainingExpenseDatas=[];
  1005. for(let p=0;p<this.trainingExpenseData.length;p++){
  1006. trainingExpenseDatas.push({
  1007. id:this.trainingExpenseData[p].id,
  1008. diId:this.trainingExpenseData[p].diId,
  1009. type:this.trainingExpenseData[p].type,
  1010. days:this.trainingExpenseData[p].days,
  1011. nationalTravelFeeId:this.trainingExpenseData[p].nationalTravelFeeId,
  1012. cost:this.trainingExpenseData[p].cost,
  1013. currency:this.trainingExpenseData[p].currency,
  1014. subTotal:this.trainingExpenseData[p].subTotal,
  1015. remark:this.trainingExpenseData[p].remark,
  1016. })
  1017. }
  1018. console.log(quarterageDatas)
  1019. console.log(boardWagesDatas)
  1020. console.log(miscellaneousFeeDatas)
  1021. console.log(trainingExpenseDatas)
  1022. console.log(this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense)
  1023. this.storageAPI(quarterageDatas,boardWagesDatas,miscellaneousFeeDatas,trainingExpenseDatas)
  1024. },
  1025. //保存API
  1026. storageAPI(arrthre,arrfour,arrfive,arrsix){
  1027. var url = "/api/Groups/PostEnterExitCostOperate"
  1028. var that = this
  1029. console.log(that.value)
  1030. var data={
  1031. portType: 1,
  1032. userId: that.userId,
  1033. id: that.storageid,
  1034. diId: that.value,
  1035. choiceOne: that.choiceOne?1:0,
  1036. insidePay:0,
  1037. visa: that.DomesticFees.visafees,
  1038. visaRemark: that.DomesticFees.visafeesDescription,
  1039. yiMiao: that.DomesticFees.vaccinefees,
  1040. heSuan: that.DomesticFees.nucleicfees,
  1041. service: that.DomesticFees.serviceCharge,
  1042. ticket: that.DomesticFees.ticketsExhibitionL,
  1043. safe: that.DomesticFees.insurance,
  1044. choiceTwo: that.choiceTwo?1:0,
  1045. sumJJC:that.sumJJC?1:0,
  1046. sumGWC:that.sumGWC?1:0,
  1047. outsideJJPay:that.TotalExpenses.EconomyClasstotal,
  1048. outsaideGWPay:this.TotalExpenses.BusinessClasstotal,
  1049. airJJ:that.jjctotal,
  1050. airGW:that.gwctotal,
  1051. cityTranffic: that.TotalExpenses.TravellingExpenses,
  1052. currencys: that.currencys,
  1053. choiceThree:that.choiceThree?1:0,
  1054. quarterageData: arrthre,
  1055. choiceFour:that.choiceFour?1:0,
  1056. boardWagesData: arrfour,
  1057. choiceFive:that.choiceFive?1:0,
  1058. miscellaneousFeeData:arrfive,
  1059. choiceSix:that.choiceSix?1:0,
  1060. trainingExpenseData:arrsix,
  1061. airJJC_Checked:that.airJJC_Checked?1:0,
  1062. airGWC_Checked:that.airGWC_Checked?1:0,
  1063. }
  1064. console.log(data)
  1065. console.log(JSON.stringify (data))
  1066. this.$axios({
  1067. method: 'post',
  1068. url: url,
  1069. headers: {
  1070. Authorization: 'Bearer ' + this.token,
  1071. contentType:'application/json'
  1072. },
  1073. data:{
  1074. portType: 1,
  1075. userId: that.userId,
  1076. id: that.storageid,
  1077. diId: that.value,
  1078. choiceOne: that.choiceOne?1:0,
  1079. insidePay:0,
  1080. visa: that.DomesticFees.visafees,
  1081. visaRemark: that.DomesticFees.visafeesDescription,
  1082. yiMiao: that.DomesticFees.vaccinefees,
  1083. heSuan: that.DomesticFees.nucleicfees,
  1084. service: that.DomesticFees.serviceCharge,
  1085. ticket: that.DomesticFees.ticketsExhibitionL,
  1086. safe: that.DomesticFees.insurance,
  1087. choiceTwo: that.choiceTwo?1:0,
  1088. sumJJC:that.sumJJC?1:0,
  1089. sumGWC:that.sumGWC?1:0,
  1090. outsideJJPay:that.TotalExpenses.EconomyClasstotal,
  1091. outsaideGWPay:this.TotalExpenses.BusinessClasstotal,
  1092. airJJ:that.jjctotal,
  1093. airGW:that.gwctotal,
  1094. cityTranffic: that.TotalExpenses.TravellingExpenses,
  1095. currencys: that.currencys,
  1096. choiceThree:that.choiceThree?1:0,
  1097. quarterageData: arrthre,
  1098. choiceFour:that.choiceFour?1:0,
  1099. boardWagesData: arrfour,
  1100. choiceFive:that.choiceFive?1:0,
  1101. miscellaneousFeeData:arrfive,
  1102. choiceSix:that.choiceSix?1:0,
  1103. trainingExpenseData:arrsix,
  1104. airJJC_Checked:that.airJJC_Checked?1:0,
  1105. airGWC_Checked:that.airGWC_Checked?1:0,
  1106. }
  1107. }).then(function (res) {
  1108. if(res.data.code==200){
  1109. console.log(res)
  1110. that.$message({
  1111. type: 'success',
  1112. message: res.data.msg
  1113. });
  1114. that.GetEnterExitCostInfobyDiId()
  1115. }else{
  1116. that.$message.error(res.data.msg);
  1117. }
  1118. }).catch(function (error) {
  1119. that.$message.error(error.message);
  1120. });
  1121. },
  1122. //选择团组名称调用
  1123. chengvalue(){
  1124. this.fullscreenLoading=true;
  1125. this.GetEnterExitCostInfobyDiId()
  1126. },
  1127. eptschedule(val){
  1128. var subTypeId=0
  1129. if(this.listvalue==""||this.tablevalue==""){
  1130. this.$message.error('请选择需要导出的表格');
  1131. return
  1132. }
  1133. if(val==1){
  1134. subTypeId=this.listvalue
  1135. }else if(val==2){
  1136. subTypeId=this.tablevalue
  1137. }else{
  1138. subTypeId=1
  1139. }
  1140. var url = "/api/Groups/PostEnterExitCostDownload"
  1141. var that = this
  1142. var data={
  1143. portType: 1,
  1144. diId: that.value,
  1145. exportType: val,
  1146. subTypeId:subTypeId
  1147. }
  1148. console.log(JSON.stringify(data))
  1149. this.$axios({
  1150. method: 'post',
  1151. url: url,
  1152. headers: {
  1153. Authorization: 'Bearer ' + this.token
  1154. },
  1155. data:{
  1156. portType: 1,
  1157. diId: that.value,
  1158. exportType: val,
  1159. subTypeId:subTypeId
  1160. }
  1161. }).then(function (res) {
  1162. console.log(res)
  1163. if(res.data.code==200){
  1164. // window.open(res.data.data.url)
  1165. }
  1166. })
  1167. }
  1168. },
  1169. filters: {
  1170. numFilter (value) {
  1171. // 截取当前数据到小数点后两位
  1172. let realVal = parseFloat(value).toFixed(2)
  1173. return realVal
  1174. }
  1175. },
  1176. watch: {
  1177. 'DomesticFees.total':{
  1178. handler(newVal,oldVal) {
  1179. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1180. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1181. },
  1182. },
  1183. TotalAccommodationFee:{
  1184. handler(newVal,oldVal) {
  1185. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1186. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1187. },
  1188. },
  1189. TotalMeals:{
  1190. handler(newVal,oldVal) {
  1191. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1192. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1193. },
  1194. },
  1195. TotalMiscellaneous:{
  1196. handler(newVal,oldVal) {
  1197. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1198. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1199. },
  1200. },
  1201. trainingExpense:{
  1202. handler(newVal,oldVal) {
  1203. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1204. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1205. },
  1206. },
  1207. 'TotalExpenses.EconomyClasstotal':{
  1208. handler(newVal,oldVal) {
  1209. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1210. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1211. },
  1212. },
  1213. 'TotalExpenses.BusinessClasstotal':{
  1214. handler(newVal,oldVal) {
  1215. this.jjctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.EconomyClasstotal;
  1216. this.gwctotal=this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal;
  1217. // console.log(this.DomesticFees.total+this.TotalAccommodationFee+this.TotalMeals+this.TotalMiscellaneous+this.trainingExpense+this.TotalExpenses.BusinessClasstotal)
  1218. },
  1219. },
  1220. //境内费用非空处理
  1221. DomesticFees: {
  1222. handler(newVal, oldVal) {
  1223. if(newVal.insurance==undefined){
  1224. newVal.insurance=0
  1225. }
  1226. if(newVal.nucleicfees==undefined){
  1227. newVal.nucleicfees=0
  1228. }
  1229. if(newVal.serviceCharge==undefined){
  1230. newVal.serviceCharge=0
  1231. }
  1232. if(newVal.ticketsExhibitionL==undefined){
  1233. newVal.ticketsExhibitionL=0
  1234. }
  1235. if(newVal.vaccinefees==undefined){
  1236. newVal.vaccinefees=0
  1237. }
  1238. if(newVal.visafees==undefined){
  1239. newVal.visafees=0
  1240. }
  1241. },
  1242. immediate: true,
  1243. deep: true // 可以深度检测到 person 对象的属性值的变化
  1244. },
  1245. //国际旅费非空处理
  1246. TotalExpenses: {
  1247. handler(newVal, oldVal) {
  1248. if(newVal.EconomyClass==undefined){
  1249. newVal.EconomyClass=0
  1250. }
  1251. if(newVal.BusinessClass==undefined){
  1252. newVal.BusinessClass=0
  1253. }
  1254. if(newVal.TravellingExpenses==undefined){
  1255. newVal.TravellingExpenses=0
  1256. }
  1257. },
  1258. immediate: true,
  1259. deep: true // 可以深度检测到 person 对象的属性值的变化
  1260. },
  1261. },
  1262. mounted(){
  1263. this.userId=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  1264. this.GetEnterExitCostDataSource();
  1265. this.GetNationalTravelFeeData();
  1266. console.log(this.currencys)
  1267. }
  1268. }
  1269. </script>
  1270. <style>
  1271. .Entry-all{
  1272. background-color: #fff;
  1273. padding: 10px;
  1274. box-shadow: 0 0 5px #0005;
  1275. border-radius: 10px;
  1276. height: 100%;
  1277. min-height: 840px;
  1278. }
  1279. .Entry-head-li label{
  1280. color: #606266;
  1281. font-size: 15px;
  1282. font-weight: 600;
  1283. }
  1284. .Entry-head{
  1285. display: flex;
  1286. justify-content: space-between;
  1287. }
  1288. .Entry-form{
  1289. margin-top: 10px;
  1290. border-top:2px solid #409EFF;
  1291. }
  1292. .Entry-li-inif{
  1293. display: flex;
  1294. width: 100%;
  1295. border-top:1px solid #ebeef5;
  1296. padding: 5px 0;
  1297. }
  1298. .Entry-li-inif:last-child{
  1299. border-bottom:1px solid #ebeef5;
  1300. }
  1301. .Entry-li-lable{
  1302. display: flex;
  1303. justify-content: space-between;
  1304. align-items: center;
  1305. margin: 10px 0;
  1306. margin-top: 20px;
  1307. }
  1308. .Entry-li-lables{
  1309. display: flex;
  1310. align-items: center;
  1311. margin: 10px 0;
  1312. margin-top: 20px;
  1313. }
  1314. .Entry-inif-box .depipt{
  1315. display: inline-block;
  1316. width: 240px;
  1317. }
  1318. .Entry-inif-box{
  1319. margin-right: 20px;
  1320. }
  1321. .Entry-li-inif label{
  1322. font-size: 14px;
  1323. color: #606266;
  1324. }
  1325. .Entry-li-inif span{
  1326. font-size: 14px;
  1327. color: #606266;
  1328. }
  1329. .Entry-form .redzhu{
  1330. font-size: 14px;
  1331. color: red;
  1332. }
  1333. .sub-boxs{
  1334. -ms-user-select: none;
  1335. -khtml-user-select: none;
  1336. -webkit-user-select: none;
  1337. -moz-user-select: none;
  1338. font-size: 14px;
  1339. user-select: none;
  1340. font-family: cursive;
  1341. background-color: #FFF;
  1342. background-image: none;
  1343. border-radius: 4px;
  1344. border: 1px solid #DCDFE6;
  1345. -webkit-box-sizing: border-box;
  1346. box-sizing: border-box;
  1347. color: #606266;
  1348. display: inline-block;
  1349. height: 28px;
  1350. line-height: 28px;
  1351. outline: 0;
  1352. padding: 0 15px;
  1353. -webkit-transition: border-color .2s cubic-bezier(.645,.045,.355,1);
  1354. transition: border-color .2s cubic-bezier(.645,.045,.355,1);
  1355. }
  1356. .btn-Entry{
  1357. text-align: right;
  1358. }
  1359. .Entry-all .el-checkbox__inner{
  1360. width: 18px;
  1361. height: 18px;
  1362. margin-right: 10px;
  1363. }
  1364. .Entry-all .el-checkbox__inner::after{
  1365. height: 10px;
  1366. left: 6px;
  1367. }
  1368. </style>