EntryDetails.vue 59 KB

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