index.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837
  1. <!--
  2. * @Author: your name
  3. * @Date: 2022-01-17 10:39:22
  4. * @LastEditTime: 2022-05-07 16:12:48
  5. * @LastEditors: your name
  6. * @Description: 航班视图
  7. -->
  8. <template>
  9. <div class="flight-view">
  10. <div class="flight-wrap">
  11. <div class="part1">
  12. <div class="title">
  13. {{ flightInfo.PlanDepartureApt }} - {{ flightInfo.FlightNO }} -
  14. {{ flightInfo.PlanLandingApt }}
  15. </div>
  16. <div class="part1_info">
  17. <div class="part1_info_box">
  18. <el-row>
  19. <el-col :span="12">
  20. <span>起飞机场简称:</span>
  21. </el-col>
  22. <el-col :span="12">
  23. <span>{{ flightInfo.departureName }}</span>
  24. </el-col>
  25. </el-row>
  26. <el-row>
  27. <el-col :span="12">
  28. <span>起飞机场三字码:</span>
  29. </el-col>
  30. <el-col :span="12">
  31. <span>{{ flightInfo.PlanDepartureApt }}</span>
  32. </el-col>
  33. </el-row>
  34. <el-row>
  35. <el-col :span="12">
  36. <span>起飞机场航站楼:</span>
  37. </el-col>
  38. <el-col :span="12">
  39. <span>{{ flightInfo.DepartureBuild }}</span>
  40. </el-col>
  41. </el-row>
  42. <el-row>
  43. <el-col :span="12">
  44. <span>
  45. 日期:
  46. {{ flightInfo.PlanDepartureTime && flightInfo.PlanDepartureTime.split("T")[0] }}
  47. </span>
  48. </el-col>
  49. <el-col :span="12">
  50. <span>
  51. 时间:
  52. {{ flightInfo.PlanDepartureTime && flightInfo.PlanDepartureTime.split("T")[1] }}
  53. </span>
  54. </el-col>
  55. </el-row>
  56. <el-row>
  57. <el-col :span="12">
  58. <span>登机口:{{ flightInfo.BordingGate }}</span>
  59. </el-col>
  60. <el-col :span="12">
  61. <span>停机位:{{ flightInfo.StandForDepartrue }}</span>
  62. </el-col>
  63. </el-row>
  64. </div>
  65. <div class="part1_info_box">
  66. <el-row>
  67. <el-col :span="12">
  68. <span>航班号:</span>
  69. </el-col>
  70. <el-col :span="12">
  71. <span>{{ flightInfo.FlightNO }}</span>
  72. </el-col>
  73. </el-row>
  74. <el-row>
  75. <el-col :span="12">
  76. <span>航班状态:</span>
  77. </el-col>
  78. <el-col :span="12">
  79. <span>{{ flightInfo.FlightStatus === null ? '正常' : flightInfo.FlightStatus }}</span>
  80. </el-col>
  81. </el-row>
  82. <el-row>
  83. <el-col :span="12">
  84. <span>托运旅客数:</span>
  85. </el-col>
  86. <el-col :span="12">
  87. <span>{{ flightInfo.count1 }}</span>
  88. </el-col>
  89. </el-row>
  90. <el-row>
  91. <el-col :span="12">
  92. <span>终点行李数:</span>
  93. </el-col>
  94. <el-col :span="12">
  95. <span>{{ flightInfo.count2 }}</span>
  96. </el-col>
  97. </el-row>
  98. <el-row>
  99. <el-col :span="12">
  100. <span>中转进行李数:</span><span>{{ flightInfo.count4 }}</span>
  101. </el-col>
  102. <el-col :span="12">
  103. <span>中转出行李数:</span><span>{{ flightInfo.count3 }}</span>
  104. </el-col>
  105. </el-row>
  106. </div>
  107. <div class="part1_info_box">
  108. <el-row>
  109. <el-col :span="12">
  110. <span>降落机场简称:</span>
  111. </el-col>
  112. <el-col :span="12">
  113. <span>{{ flightInfo.landingName }}</span>
  114. </el-col>
  115. </el-row>
  116. <el-row>
  117. <el-col :span="12">
  118. <span>降落机场三字码:</span>
  119. </el-col>
  120. <el-col :span="12">
  121. <span>{{ flightInfo.PlanLandingApt }}</span>
  122. </el-col>
  123. </el-row>
  124. <el-row>
  125. <el-col :span="12">
  126. <span>降落机场航站楼:</span>
  127. </el-col>
  128. <el-col :span="12">
  129. <span>{{ flightInfo.LandingBuild }}</span>
  130. </el-col>
  131. </el-row>
  132. <el-row>
  133. <el-col :span="12">
  134. <span>
  135. 日期:
  136. {{ flightInfo.ExpectLandingTime && flightInfo.ExpectLandingTime.split("T")[0] }}
  137. </span>
  138. </el-col>
  139. <el-col :span="12">
  140. <span>
  141. 时间:
  142. {{ flightInfo.ExpectLandingTime && flightInfo.ExpectLandingTime.split("T")[1] }}
  143. </span>
  144. </el-col>
  145. </el-row>
  146. <el-row>
  147. <el-col :span="12">
  148. <span>提取转盘:{{ flightInfo.Carousel }}</span>
  149. </el-col>
  150. <el-col :span="12">
  151. <span>停机位:{{ flightInfo.StandForLanding }}</span>
  152. </el-col>
  153. </el-row>
  154. </div>
  155. </div>
  156. </div>
  157. <div class="part2">
  158. <el-table
  159. ref="containerTable"
  160. :data="containerTableData"
  161. border
  162. style="width: 100%"
  163. height="344px"
  164. stripe
  165. size="mini"
  166. show-summary
  167. :summary-method="summaryMethod"
  168. :header-cell-style="{ color: '#101116' }"
  169. @row-click="containeClick"
  170. >
  171. <el-table-column
  172. v-for="item in containerTableColumn"
  173. :key="item.id"
  174. :prop="item.prop"
  175. :label="item.name"
  176. :align="item.align"
  177. :show-overflow-tooltip="true"
  178. />
  179. </el-table>
  180. </div>
  181. <div
  182. class="part3"
  183. style="padding-right: 4px;"
  184. >
  185. <div class="title">中转进</div>
  186. <el-table
  187. ref="transferInBaggageTable"
  188. :data="transferInBaggageTableData"
  189. border
  190. style="width: 100%"
  191. height="162"
  192. stripe
  193. size="mini"
  194. show-summary
  195. :summary-method="summaryMethod"
  196. :header-cell-style="{ color: '#101116' }"
  197. @row-click="transferBaggageInTableClickHandler"
  198. >
  199. <el-table-column
  200. v-for="item in transferInTableColumn"
  201. :key="item.id"
  202. :prop="item.prop"
  203. :label="item.name"
  204. :align="item.align"
  205. :show-overflow-tooltip="true"
  206. />
  207. </el-table>
  208. </div>
  209. <div
  210. class="part3"
  211. style="padding-left: 4px;"
  212. >
  213. <div class="title">中转出</div>
  214. <el-table
  215. ref="transferOutBaggageTable"
  216. :data="transferOutBaggageTableData"
  217. border
  218. style="width: 100%"
  219. height="162"
  220. stripe
  221. size="mini"
  222. show-summary
  223. :summary-method="summaryMethod"
  224. :header-cell-style="{ color: '#101116' }"
  225. @row-click="transferBaggageOutTableClickHandler"
  226. >
  227. <el-table-column
  228. v-for="item in transferOutTableColumn"
  229. :key="item.id"
  230. :prop="item.prop"
  231. :label="item.name"
  232. :align="item.align"
  233. :show-overflow-tooltip="true"
  234. />
  235. </el-table>
  236. </div>
  237. <div class="part4">
  238. <div class="title">
  239. <!-- <el-cascader
  240. placeholder="全部行李"
  241. :options="options"
  242. :props="props"
  243. collapse-tags
  244. size="mini"
  245. clearable
  246. /> -->
  247. <!-- <div class="search">
  248. <el-input
  249. v-model="keyWords"
  250. placeholder="请输入需要搜索姓名或行李编号"
  251. size="mini"
  252. style="width: 280px"
  253. />
  254. <el-button
  255. class="searchBtn"
  256. type="primary"
  257. size="mini"
  258. >搜索</el-button>
  259. </div> -->
  260. <el-switch
  261. v-model="openUTC"
  262. active-text="开启UTC"
  263. />
  264. <el-button
  265. class="btn-square"
  266. type="primary"
  267. icon="el-icon-download"
  268. size="mini"
  269. />
  270. <el-button
  271. class="btn-square setBtn"
  272. type="primary"
  273. icon="el-icon-s-tools"
  274. size="mini"
  275. @click="show"
  276. />
  277. </div>
  278. <el-table
  279. ref="flightBaggageTable"
  280. :data="flightBaggageTableData"
  281. border
  282. style="width: 100%"
  283. height="320"
  284. stripe
  285. size="mini"
  286. show-summary
  287. :summary-method="summaryRow(flightBaggageTableData.length)"
  288. :header-cell-style="{ color: '#101116' }"
  289. @row-click="flightBaggageTableClickHandler"
  290. >
  291. <el-table-column
  292. v-for="item in tableColsCopy"
  293. :key="item.index"
  294. :prop="item.prop"
  295. :label="item.name"
  296. :align="item.align"
  297. :filters="flightBaggageTableFilters[item.prop]"
  298. :filter-method="flightBaggageTableFilters[item.prop] && filterHandler"
  299. filter-placement="top"
  300. />
  301. </el-table>
  302. </div>
  303. </div>
  304. <!--列设置-->
  305. <Dialog
  306. :flag="dialogFlag"
  307. class="dialog-check-cols"
  308. >
  309. <div class="col-dialog">
  310. <div class="title">列设置</div>
  311. <div class="content">
  312. <el-tree
  313. :data="tableCols"
  314. :class="colsCheckClass"
  315. show-checkbox
  316. node-key="index"
  317. :default-expand-all="true"
  318. :props="{
  319. label: 'name',
  320. children: 'children'
  321. }"
  322. :default-checked-keys="checkedKeysTemp"
  323. @check="handleCheck"
  324. />
  325. </div>
  326. <div class="foot right t30">
  327. <el-button
  328. size="medium"
  329. class="r24"
  330. type="primary"
  331. @click="onCheck"
  332. >确定</el-button>
  333. <el-button
  334. size="medium"
  335. @click="hide"
  336. >取消</el-button>
  337. </div>
  338. </div>
  339. </Dialog>
  340. </div>
  341. </template>
  342. <script>
  343. import Dialog from '@/layout/components/Dialog/index.vue'
  344. import { queryMap, myQuery } from '@/api/dataIntegration'
  345. import tableColsMixin from '../../mixins/tableCols'
  346. // const arrivalBaggageTableColumn = [
  347. // { name: '序号', prop: 'index', align: 'center' },
  348. // { name: '旅客姓名', prop: 'name', align: 'center', sortable: 'custom' },
  349. // { name: '行李牌号', prop: 'bagNo', align: 'center' },
  350. // {
  351. // name: '特殊行李类型',
  352. // prop: 'specialType',
  353. // align: 'center',
  354. // sortable: 'custom'
  355. // },
  356. // {
  357. // name: '容器编号',
  358. // prop: 'containerNo',
  359. // align: 'center',
  360. // sortable: 'custom'
  361. // },
  362. // { name: '装载序号', prop: 'loadSequenceIndex', align: 'center' },
  363. // { name: '卸载', prop: 'uninstall', align: 'center' },
  364. // { name: '到达', prop: 'arrival', align: 'center' },
  365. // { name: '提取', prop: 'extract', align: 'center' },
  366. // { name: '旅客仓位', prop: 'positionNo', align: 'center' },
  367. // { name: '中转标志', prop: 'transitStatus', align: 'center' },
  368. // { name: '卷宗号', prop: 'fileNumber', align: 'center' }
  369. // ]
  370. const departureBaggageTableColumn = [
  371. // { name: '序号', prop: 'index', align: 'center' },
  372. { name: '旅客姓名', prop: 'PassengerNameUpcase', align: 'center', sortable: 'custom' },
  373. { name: '行李牌号', prop: 'BagSN', align: 'center' },
  374. {
  375. name: '特殊行李类型',
  376. prop: 'SpecialType',
  377. align: 'center',
  378. sortable: 'custom'
  379. },
  380. {
  381. name: '容器编号',
  382. prop: 'U_Device_ID',
  383. align: 'center',
  384. sortable: 'custom'
  385. },
  386. { name: '装载序号', prop: 'LoadSN', align: 'center' },
  387. { name: '值机', prop: 'checkIn', align: 'center' },
  388. { name: '状态', prop: 'status', align: 'center' },
  389. { name: '安检', prop: 'security', align: 'center' },
  390. { name: '分拣', prop: 'sorting', align: 'center' },
  391. { name: '装车', prop: 'loading', align: 'center' },
  392. { name: '装机', prop: 'installed', align: 'center' },
  393. { name: '中转标志', prop: 'transitFlag', align: 'center' },
  394. { name: '卷宗号', prop: 'fileNumber', align: 'center' }
  395. ]
  396. export default {
  397. name: 'FlightView',
  398. components: {
  399. Dialog
  400. },
  401. mixins: [tableColsMixin],
  402. data() {
  403. return {
  404. queryData: {},
  405. flightInfo: {},
  406. keyWords: '',
  407. openUTC: true,
  408. props: { multiple: true },
  409. // options: [
  410. // { value: 0, label: 'VIP行李' },
  411. // { value: 0, label: 'VIP行李' }
  412. // ],
  413. containerTableColumn: [
  414. { name: '容器编号', prop: 'containerNumber', align: 'center' },
  415. { name: '类型', prop: 'style', align: 'center' },
  416. { name: '行李数', prop: 'numberOfBags', align: 'center' }
  417. ],
  418. transferInTableColumn: [
  419. { name: '航班号', prop: 'PreFlightNO', align: 'center' },
  420. { name: '日期', prop: 'PreFlightDate', align: 'center' },
  421. { name: '时间', prop: 'flightTime', align: 'center' },
  422. { name: '始发站', prop: 'PlanDepartureApt', align: 'center' },
  423. { name: '航班状态', prop: 'FlightStatus', align: 'center' },
  424. { name: '中转数', prop: 'totalNumber', align: 'center' }
  425. ],
  426. transferOutTableColumn: [
  427. { name: '航班号', prop: 'TransferFlightNO', align: 'center' },
  428. { name: '日期', prop: 'TransferFlightDate', align: 'center' },
  429. { name: '时间', prop: 'flightTime', align: 'center' },
  430. { name: '始发站', prop: 'PlanDepartureApt', align: 'center' },
  431. { name: '目的站', prop: 'PlanLandingApt', align: 'center' },
  432. { name: '中转数', prop: 'transferNumber', align: 'center' }
  433. ],
  434. // tableCols:
  435. // this.$route.matched[0].path === '/arrival' || this.$route.matched[1].path === '/transfer/arrival'
  436. // ? arrivalBaggageTableColumn
  437. // : departureBaggageTableColumn,
  438. tableCols: departureBaggageTableColumn,
  439. containerTableData: [], // 容器统计
  440. transferInBaggageTableData: [], // 中转进
  441. transferOutBaggageTableData: [], // 中转出
  442. flightBaggageTableData: [], // 行李列表
  443. flightBaggageTableFilters: {
  444. PassengerNameUpcase: [],
  445. BagSN: [],
  446. SpecialType: [],
  447. U_Device_ID: []
  448. }
  449. }
  450. },
  451. created() {
  452. this.queryData = this._.cloneDeep(this.$route.query)
  453. // console.log(this.queryData)
  454. const queryData = [this.queryData.FlightNO, this.queryData.FlightDate]
  455. this.queryAll(queryData)
  456. },
  457. updated() {
  458. this.$nextTick(() => {
  459. this.$refs['containerTable'].doLayout()
  460. this.$refs['transferInBaggageTable'].doLayout()
  461. this.$refs['transferOutBaggageTable'].doLayout()
  462. this.$refs['flightBaggageTable'].doLayout()
  463. })
  464. },
  465. methods: {
  466. // 合计行
  467. summaryMethod({ columns, data }) {
  468. const sums = []
  469. if (columns.length > 0) {
  470. columns.forEach((column, index) => {
  471. if (index === 0) {
  472. sums[index] = '合计'
  473. } else if (
  474. // 需要计算的列
  475. ['numberOfBags', 'totalNumber', 'transferNumber'].includes(column.property)
  476. ) {
  477. const values = data.map(item => Number(item[column.property]))
  478. if (values.some(value => !isNaN(value))) {
  479. sums[index] = values.reduce((prev, curr) => {
  480. const value = Number(curr)
  481. if (!isNaN(value)) {
  482. return Number(prev) + Number(curr)
  483. } else {
  484. return Number(prev)
  485. }
  486. }, 0)
  487. } else {
  488. sums[index] = 0
  489. }
  490. } else {
  491. // 过滤某些字段不参与计算
  492. sums[index] = '-'
  493. }
  494. })
  495. }
  496. return sums
  497. },
  498. // 统计行数
  499. summaryRow(num) {
  500. return function () {
  501. return ['合计', `共${num}件`]
  502. }
  503. },
  504. // 表格添加过滤条件
  505. setTableFilters(tableData, filters) {
  506. const tempFilters = {}
  507. const tempArrays = {}
  508. Object.keys(filters).forEach(key => {
  509. tempFilters[key] = []
  510. tempArrays[key] = []
  511. })
  512. tableData.forEach(item => {
  513. Object.keys(tempFilters).forEach(key => {
  514. if ((item[key] ?? '') !== '' && !tempArrays[key].includes(item[key])) {
  515. tempArrays[key].push(item[key])
  516. tempFilters[key].push({
  517. text: item[key],
  518. value: item[key]
  519. })
  520. }
  521. })
  522. })
  523. Object.keys(tempFilters).forEach(key => {
  524. filters[key] = this._.orderBy(tempFilters[key], o => o.value)
  525. })
  526. },
  527. filterHandler(value, row, column) {
  528. const property = column['property']
  529. return row[property] === value
  530. },
  531. // async getBaggageSearchIOAll(data) {
  532. // const getNodeInfo = node => `${node.locationPointDescribe ? node.locationPointDescribe : node.locationPoint}\n
  533. // ${node.realTime}`
  534. // try {
  535. // const result = await baggageSearchIOAll(data)
  536. // this.flightBaggageTableData = result.returnData.map(element => {
  537. // element['nodeInfos'].forEach(node => {
  538. // switch (node.nodeCode) {
  539. // case 'CHECKIN':
  540. // element['checkIn'] = getNodeInfo(node)
  541. // break
  542. // case 'SECURITY':
  543. // element['security'] = getNodeInfo(node)
  544. // break
  545. // case 'SORT':
  546. // element['sorting'] = getNodeInfo(node)
  547. // break
  548. // case 'LOAD':
  549. // element['loading'] = getNodeInfo(node)
  550. // break
  551. // case 'INF':
  552. // element['installed'] = getNodeInfo(node)
  553. // break
  554. // case 'UNLOAD':
  555. // element['security'] = getNodeInfo(node)
  556. // element['arrival'] = getNodeInfo(node)
  557. // break
  558. // case 'TiQu':
  559. // element['extract'] = getNodeInfo(node)
  560. // break
  561. // default:
  562. // break
  563. // }
  564. // })
  565. // return element
  566. // })
  567. // // result.returnData.forEach(element => {
  568. // // element['checkIn'] = element.checkInLocation + '\n' + element.checkInTime
  569. // // element['security'] = element.securityStatus + '\n' + element.securityTime
  570. // // element['sorting'] = element.sortingNo + '\n' + element.sortingTime
  571. // // element['loading'] = element.loadingNumber + '\n' + element.loadingTime
  572. // // element['installed'] = element.installedNumber + '\n' + element.installedTime
  573. // // element['uninstall'] = element.uninstall + '\n' + element.uninstallTime
  574. // // element['arrival'] = element.reach + '\n' + element.timeOfArrival
  575. // // element['extract'] = element.extract + '\n' + element.extractionTime
  576. // // })
  577. // // this.flightBaggageTableData = this._.cloneDeep(result.returnData)
  578. // } catch (error) {
  579. // console.log(error)
  580. // }
  581. // },
  582. containeClick(row){
  583. this.$router.push({
  584. path: '/advance',
  585. query: {
  586. FlightNO: this.queryData.FlightNO,
  587. startDate: this.queryData.FlightDate,
  588. endDate: this.queryData.FlightDate,
  589. UDeviceID:row.containerNumber
  590. }
  591. })
  592. },
  593. transferBaggageInTableClickHandler(row) {
  594. this.$router.push({
  595. path: '/advance',
  596. query: {
  597. FlightNO: row.PreFlightNO,
  598. FlightDate: row.PreFlightDate
  599. }
  600. })
  601. },
  602. transferBaggageOutTableClickHandler(row) {
  603. this.$router.push({
  604. path: '/advance',
  605. query: {
  606. FlightNO: row.TransferFlightNO,
  607. FlightDate: row.TransferFlightDate
  608. }
  609. })
  610. },
  611. flightBaggageTableClickHandler(row) {
  612. this.$router.push({
  613. path: `/${this.$route.path.split('/').slice(1, -1).join('/')}/baggageView`,
  614. query: {
  615. BagSN: row.BagSN,
  616. FlightNO: this.queryData.FlightNO,
  617. FlightDate: this.queryData.FlightDate
  618. }
  619. })
  620. },
  621. queryflightInfo(dataContent) {
  622. return myQuery(queryMap.flightInfo, ...dataContent)
  623. },
  624. queryContainer(dataContent) {
  625. return myQuery(queryMap.container, ...dataContent)
  626. },
  627. queryTrasferOutBaggage(dataContent) {
  628. return myQuery(queryMap.transferOutBaggage, ...dataContent)
  629. },
  630. queryTrasferInBaggage(dataContent) {
  631. return myQuery(queryMap.transferInBaggage, ...dataContent)
  632. },
  633. queryBaggageByFlightNO(dataContent) {
  634. return myQuery(queryMap.baggageByFlightNO, ...dataContent)
  635. },
  636. async queryAll(dataContent) {
  637. try {
  638. const [
  639. flightInfo,
  640. containerTableDataData,
  641. transferOutBaggageTableData,
  642. transferInBaggageTableData,
  643. flightBaggageTableData
  644. ] = await Promise.all([
  645. this.queryflightInfo(dataContent),
  646. this.queryContainer(dataContent),
  647. this.queryTrasferOutBaggage(dataContent),
  648. this.queryTrasferInBaggage(dataContent),
  649. this.queryBaggageByFlightNO(dataContent)
  650. ])
  651. flightInfo.length && (this.flightInfo = flightInfo[0])
  652. this.containerTableData = containerTableDataData
  653. this.transferOutBaggageTableData = transferOutBaggageTableData.map(item => {
  654. item['flightTime'] = item['flightDate'] ? item['flightDate'].split('T')[1] : ''
  655. return item
  656. })
  657. this.transferInBaggageTableData = transferInBaggageTableData.map(item => {
  658. item['flightTime'] = item['flightDate'] ? item['flightDate'].split('T')[1] : ''
  659. return item
  660. })
  661. this.flightBaggageTableData = flightBaggageTableData.map((item, index) => {
  662. item['checkIn'] = `${item['checkIn'] ?? ''} ${item['checkInTime'] ? item['checkInTime'].split('T')[1] : ''}`
  663. item['status'] = item['Status'] === 'DEL' ? '删除' : ''
  664. item['security'] = `${item['DealInfo'] ?? ''} ${item['DealTime'] ? item['DealTime'].split('T')[1] : ''}`
  665. item['sorting'] = `${item['sortLocationMark'] ?? ''} ${
  666. item['sortDealTime'] ? item['sortDealTime'].split('T')[1] : ''
  667. }`
  668. item['loading'] = `${item['loadLocationMark'] ?? ''} ${
  669. item['loadDealTime'] ? item['loadDealTime'].split('T')[1] : ''
  670. }`
  671. item['installed'] = `${item['inflLocationMark'] ?? ''} ${
  672. item['inflLoadDealTime'] ? item['inflLoadDealTime'].split('T')[1] : ''
  673. }`
  674. item['transitFlag'] = item['preFlightNO'] === 1 ? '是' : '否'
  675. return item
  676. })
  677. this.setTableFilters(this.flightBaggageTableData, this.flightBaggageTableFilters)
  678. } catch (error) {
  679. console.log('错误', error)
  680. }
  681. }
  682. }
  683. }
  684. </script>
  685. <style lang="scss" scoped>
  686. .flight-view {
  687. padding: 16px 0 44px 8px;
  688. overflow: hidden;
  689. background: #dfe3ea;
  690. .flight-wrap {
  691. padding-right: 8px;
  692. width: 100%;
  693. height: calc(100vh - 140px);
  694. display: flex;
  695. flex-direction: row;
  696. justify-content: flex-start;
  697. flex-wrap: wrap;
  698. overflow: auto;
  699. .part1 {
  700. width: 71.15%;
  701. height: 344px;
  702. background: #041741;
  703. padding: 24px;
  704. .title {
  705. font-size: 18px;
  706. font-weight: bold;
  707. color: #ffffff;
  708. }
  709. .part1_info {
  710. width: 100%;
  711. display: flex;
  712. flex-direction: row;
  713. justify-content: space-between;
  714. padding-top: 32px;
  715. .part1_info_box {
  716. width: calc(33.333% - 48px);
  717. height: 244px;
  718. background: #2c416d;
  719. position: relative;
  720. padding: 24px;
  721. display: flex;
  722. flex-direction: column;
  723. align-content: space-around;
  724. .el-row {
  725. margin-bottom: 27px;
  726. }
  727. span {
  728. display: inline-block;
  729. font-size: 16px;
  730. font-weight: 400;
  731. color: #ffffff;
  732. }
  733. }
  734. .part1_info_box::after {
  735. content: '';
  736. border-top: 15px solid transparent;
  737. border-left: 10px solid transparent;
  738. border-bottom: 10px solid #fff;
  739. position: absolute;
  740. right: -34px;
  741. transform: rotate(-45deg);
  742. top: 50%;
  743. margin-top: -15px;
  744. }
  745. .part1_info_box:last-child::after {
  746. content: '';
  747. border-top: 0;
  748. border-left: 0;
  749. border-bottom: 0;
  750. }
  751. }
  752. }
  753. .part2 {
  754. width: calc(100% - 71.15%);
  755. height: 344px;
  756. padding-left: 16px;
  757. }
  758. .part3 {
  759. width: 50%;
  760. height: 204px;
  761. margin-top: 8px;
  762. .title {
  763. background: #fafcff;
  764. font-size: 14px;
  765. font-weight: bold;
  766. color: #101116;
  767. padding: 12px 0;
  768. text-align: center;
  769. }
  770. }
  771. .part4 {
  772. width: 100%;
  773. height: 384px;
  774. .title {
  775. padding: 16px 0;
  776. display: flex;
  777. flex-direction: row;
  778. justify-content: flex-end;
  779. align-items: center;
  780. .search {
  781. display: flex;
  782. flex-direction: row;
  783. margin-left: 20px;
  784. margin-right: 10px;
  785. }
  786. .el-button {
  787. margin-left: 10px;
  788. &.btn-square {
  789. width: 30px;
  790. height: 30px;
  791. display: flex;
  792. align-items: center;
  793. justify-content: center;
  794. }
  795. }
  796. .setBtn {
  797. margin-right: 30px;
  798. }
  799. }
  800. ::v-deep .el-table .cell {
  801. white-space: pre-line;
  802. }
  803. .el-table {
  804. .el-table__body-wrapper {
  805. min-height: 178px;
  806. }
  807. }
  808. }
  809. }
  810. }
  811. ::v-deep .dialog-check-cols .el-tree {
  812. &.has-children .el-tree-node > .el-tree-node__children {
  813. display: flex;
  814. flex-wrap: wrap;
  815. }
  816. &.no-children {
  817. display: flex;
  818. flex-wrap: wrap;
  819. }
  820. }
  821. </style>