index.vue 26 KB

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