TrackingView.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. <script setup lang="ts">
  2. import FilterTags from '@/components/FliterTags'
  3. import emitter from '@/utils/bus'
  4. import TransportMode from '@/components/TransportMode'
  5. import TrackingTable from './components/TrackingTable'
  6. import DateRange from '@/components/DateRange'
  7. import MoreFilters from '@/components/MoreFilters'
  8. import { ref, reactive, onMounted } from 'vue'
  9. import { useCalculatingHeight } from '@/hooks/calculatingHeight'
  10. import { useHeaderSearch } from '@/stores/modules/headerSearch'
  11. const headerSearch = useHeaderSearch()
  12. const filterRef: Ref<HTMLElement | null> = ref(null)
  13. const containerHeight = useCalculatingHeight(document.documentElement, 246, [filterRef])
  14. const TrackingSearch = ref()
  15. let searchTableQeuryTracking: any = {}
  16. const filterData = reactive({
  17. transportData: [] as Array<string>,
  18. daterangeData: [] as Array<string>,
  19. morefiltersData: [] as Array<string>,
  20. dashboardData: [] as Array<string>
  21. })
  22. const tagsData: any = ref([])
  23. const handleClose = (tag: any) => {
  24. emitter.emit('clearTag', tag)
  25. tagsData.value.splice(tagsData.value.indexOf(tag), 1)
  26. if (tag.includes('Transport')) {
  27. delete searchTableQeuryTracking.transport_mode
  28. } else if (tag.includes('ETD')) {
  29. filterData.daterangeData.forEach((item: any, index: any) => {
  30. if (item.includes('ETD')) {
  31. filterData.daterangeData.splice(index, 1)
  32. }
  33. })
  34. delete searchTableQeuryTracking.etd_start
  35. delete searchTableQeuryTracking.etd_end
  36. } else if (tag.includes('ETA')) {
  37. filterData.daterangeData.forEach((item: any, index: any) => {
  38. if (item.includes('ETA')) {
  39. filterData.daterangeData.splice(index, 1)
  40. }
  41. })
  42. delete searchTableQeuryTracking.eta_start
  43. delete searchTableQeuryTracking.eta_end
  44. } else if (tag.includes('Creation')) {
  45. delete searchTableQeuryTracking.created_time_start
  46. delete searchTableQeuryTracking.created_time_end
  47. } else if (tag.includes('Shippername')) {
  48. delete searchTableQeuryTracking.shipper
  49. } else if (tag.includes('Consigneename')) {
  50. delete searchTableQeuryTracking.consignee
  51. } else if (tag.includes('Service')) {
  52. delete searchTableQeuryTracking.service
  53. } else if (tag.includes('Incoterms')) {
  54. delete searchTableQeuryTracking.incoterms
  55. } else if (tag.includes('Notify Party')) {
  56. delete searchTableQeuryTracking.notify_party
  57. } else if (tag.includes('Bill to')) {
  58. delete searchTableQeuryTracking.billto
  59. } else if (tag.includes('Origin Agent')) {
  60. delete searchTableQeuryTracking.origin
  61. } else if (tag.includes('Destination Agent')) {
  62. delete searchTableQeuryTracking.agent
  63. } else if (tag.includes('Destination Operator')) {
  64. delete searchTableQeuryTracking.dest_op
  65. } else if (tag.includes('Sales')) {
  66. delete searchTableQeuryTracking.sales_rep
  67. } else if (tag.includes('Origin')) {
  68. delete searchTableQeuryTracking['shipper_city/consignee_city']
  69. } else if (tag.includes('Destination')) {
  70. delete searchTableQeuryTracking.final_desination
  71. } else if (tag.includes('Place of Receipt')) {
  72. delete searchTableQeuryTracking.place_of_receipt_exp
  73. } else if (tag.includes('Port of Loading')) {
  74. delete searchTableQeuryTracking.port_of_loading
  75. } else if (tag.includes('Place of delivery')) {
  76. delete searchTableQeuryTracking.place_of_delivery_exp
  77. } else if (tag.includes('Place of Discharge')) {
  78. delete searchTableQeuryTracking.port_of_discharge
  79. } else if (tag.includes('Vessel')) {
  80. delete searchTableQeuryTracking['f_vessel/vessel']
  81. } else if (tag.includes('Voyage')) {
  82. delete searchTableQeuryTracking['f_voyage/voyage']
  83. } else {
  84. delete searchTableQeuryTracking._reportRef
  85. delete searchTableQeuryTracking._reportRefe_date
  86. delete searchTableQeuryTracking._reportRefb_date
  87. delete searchTableQeuryTracking._reportStationType
  88. delete searchTableQeuryTracking._reportDataType
  89. delete searchTableQeuryTracking._reportStationType
  90. }
  91. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  92. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  93. Gettrackingdata()
  94. }
  95. // 筛选框查询
  96. const FiltersSeach = (val: any, value: any) => {
  97. searchTableQeuryTracking[val] = value
  98. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  99. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  100. Gettrackingdata()
  101. }
  102. //TransportSearch
  103. const TransportSearch = (val: any) => {
  104. filterData.transportData = []
  105. if (val.data) {
  106. let str = `${val.title}:${val.data}`
  107. filterData.transportData.push(str)
  108. }
  109. FiltersSeach('transport_mode', val.data)
  110. renderTagsData()
  111. }
  112. // defaultTransport
  113. const defaultTransport = (val: any, value: any) => {
  114. filterData.transportData = []
  115. if (val.data) {
  116. let str = `${val.title}:${val.data}`
  117. filterData.transportData.push(str)
  118. }
  119. if (sessionStorage.getItem('searchTableQeuryTracking') == null) {
  120. if (
  121. sessionStorage.getItem('clickParams') === null ||
  122. sessionStorage.getItem('clickParams') === '{}'
  123. ) {
  124. searchTableQeuryTracking.transport_mode = val.data
  125. }
  126. } else {
  127. searchTableQeuryTracking = value
  128. }
  129. renderTagsData()
  130. }
  131. //defaultDate
  132. const defaultDate = (val: any, value: any, data: any) => {
  133. filterData.daterangeData = []
  134. if (Object.keys(val).length) {
  135. for (const key in val) {
  136. let str = `${key}:${val[key]}`
  137. filterData.daterangeData.push(str)
  138. }
  139. }
  140. if (sessionStorage.getItem('searchTableQeuryTracking') == null) {
  141. if (
  142. sessionStorage.getItem('clickParams') === null ||
  143. sessionStorage.getItem('clickParams') === '{}'
  144. ) {
  145. if (Object.keys(value).length == 0) {
  146. delete searchTableQeuryTracking.etd_start
  147. delete searchTableQeuryTracking.etd_end
  148. }
  149. for (const key in value) {
  150. searchTableQeuryTracking.etd_start = value[key].data[0]
  151. searchTableQeuryTracking.etd_end = value[key].data[1]
  152. }
  153. }
  154. } else {
  155. searchTableQeuryTracking = data
  156. }
  157. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  158. Gettrackingdata()
  159. renderTagsData()
  160. }
  161. //DateRangeSearch
  162. const DateRangeSearch = (val: any, value: any) => {
  163. filterData.daterangeData = []
  164. if (Object.keys(val).length) {
  165. for (const key in val) {
  166. let str = `${key}:${val[key]}`
  167. filterData.daterangeData.push(str)
  168. }
  169. }
  170. if (Object.keys(value).length == 0) {
  171. delete searchTableQeuryTracking.etd_start
  172. delete searchTableQeuryTracking.etd_end
  173. delete searchTableQeuryTracking.eta_start
  174. delete searchTableQeuryTracking.eta_end
  175. delete searchTableQeuryTracking.created_time_start
  176. delete searchTableQeuryTracking.created_time_end
  177. }
  178. for (const key in value) {
  179. if (key == 'ETD') {
  180. searchTableQeuryTracking.etd_start = value[key].data[0]
  181. searchTableQeuryTracking.etd_end = value[key].data[1]
  182. } else if (key == 'ETA') {
  183. searchTableQeuryTracking.eta_start = value[key].data[0]
  184. searchTableQeuryTracking.eta_end = value[key].data[1]
  185. } else {
  186. searchTableQeuryTracking.created_time_start = value[key].data[0]
  187. searchTableQeuryTracking.created_time_end = value[key].data[1]
  188. }
  189. }
  190. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  191. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  192. Gettrackingdata()
  193. renderTagsData()
  194. }
  195. //MoreFiltersSearch
  196. const MoreFiltersSearch = (val: any, value: any) => {
  197. filterData.morefiltersData = []
  198. if (Object.keys(value).length == 0) {
  199. delete searchTableQeuryTracking.shipper
  200. delete searchTableQeuryTracking.consignee
  201. delete searchTableQeuryTracking.service
  202. delete searchTableQeuryTracking.incoterms
  203. delete searchTableQeuryTracking.notify_party
  204. delete searchTableQeuryTracking.billto
  205. delete searchTableQeuryTracking.origin
  206. delete searchTableQeuryTracking.agent
  207. delete searchTableQeuryTracking.sales_rep
  208. delete searchTableQeuryTracking.dest_op
  209. delete searchTableQeuryTracking.final_desination
  210. delete searchTableQeuryTracking.place_of_receipt_exp
  211. delete searchTableQeuryTracking.place_of_delivery_exp
  212. delete searchTableQeuryTracking.port_of_discharge
  213. delete searchTableQeuryTracking['shipper_city/consignee_city']
  214. delete searchTableQeuryTracking['port_of_loading/fport_of_loading_un']
  215. delete searchTableQeuryTracking['f_vessel/vessel']
  216. delete searchTableQeuryTracking['f_voyage/voyage']
  217. }
  218. for (const key in val) {
  219. let str = `${key}:${val[key]}`
  220. filterData.morefiltersData.push(str)
  221. if (key == 'Shippername') {
  222. searchTableQeuryTracking.shipper = value[key]
  223. } else if (key == 'Consigneename') {
  224. searchTableQeuryTracking.consignee = value[key]
  225. } else if (key == 'Service') {
  226. searchTableQeuryTracking.service = value[key]
  227. } else if (key == 'Incoterms') {
  228. searchTableQeuryTracking.incoterms = value[key]
  229. } else if (key == 'Notify Party') {
  230. searchTableQeuryTracking.notify_party = value[key]
  231. } else if (key == 'Bill to') {
  232. searchTableQeuryTracking.billto = value[key]
  233. } else if (key == 'Origin Agent') {
  234. searchTableQeuryTracking.origin = value[key]
  235. } else if (key == 'Destination Agent') {
  236. searchTableQeuryTracking.agent = value[key]
  237. } else if (key == 'Destination Operator') {
  238. searchTableQeuryTracking.dest_op = value[key]
  239. } else if (key == 'Sales') {
  240. searchTableQeuryTracking.sales_rep = value[key]
  241. } else if (key == 'Destination') {
  242. searchTableQeuryTracking.final_desination = value[key]
  243. } else if (key == 'Place of Receipt') {
  244. searchTableQeuryTracking.place_of_receipt_exp = value[key]
  245. } else if (key == 'Origin') {
  246. searchTableQeuryTracking['shipper_city/consignee_city'] = value[key]
  247. } else if (key == 'Port of Loading') {
  248. searchTableQeuryTracking['port_of_loading/fport_of_loading_un'] = value[key]
  249. } else if (key == 'Place of delivery') {
  250. searchTableQeuryTracking.place_of_delivery_exp = value[key]
  251. } else if (key == 'Port of Discharge') {
  252. searchTableQeuryTracking.port_of_discharge = value[key]
  253. } else if (key == 'Vessel') {
  254. searchTableQeuryTracking['f_vessel/vessel'] = value[key]
  255. } else if (key == 'Voyage') {
  256. searchTableQeuryTracking['f_voyage/voyage'] = value[key]
  257. }
  258. }
  259. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  260. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  261. Gettrackingdata()
  262. renderTagsData()
  263. }
  264. const defaultMorefilters = (val: any, value: any, data: any) => {
  265. filterData.morefiltersData = []
  266. for (const key in val) {
  267. let str = `${key}:${val[key]}`
  268. filterData.morefiltersData.push(str)
  269. for (const key in val) {
  270. if (key == 'Shippername') {
  271. searchTableQeuryTracking.shipper = value[key]
  272. } else if (key == 'Consigneename') {
  273. searchTableQeuryTracking.consignee = value[key]
  274. } else if (key == 'Service') {
  275. searchTableQeuryTracking.service = value[key]
  276. } else if (key == 'Incoterms') {
  277. searchTableQeuryTracking.incoterms = value[key]
  278. } else if (key == 'Notify Party') {
  279. searchTableQeuryTracking.notify_party = value[key]
  280. } else if (key == 'Bill to') {
  281. searchTableQeuryTracking.billto = value[key]
  282. } else if (key == 'Destination Operator') {
  283. searchTableQeuryTracking.dest_op = value[key]
  284. } else if (key == 'Origin Agent') {
  285. searchTableQeuryTracking.origin = value[key]
  286. } else if (key == 'Destination Agent') {
  287. searchTableQeuryTracking.agent = value[key]
  288. } else if (key == 'Sales') {
  289. searchTableQeuryTracking.sales_rep = value[key]
  290. } else if (key == 'Origin') {
  291. searchTableQeuryTracking['shipper_city/consignee_city'] = value[key]
  292. } else if (key == 'Destination') {
  293. searchTableQeuryTracking.final_desination = value[key]
  294. } else if (key == 'Place of Receipt') {
  295. searchTableQeuryTracking.place_of_receipt_exp = value[key]
  296. } else if (key == 'Port of Loading') {
  297. searchTableQeuryTracking.port_of_loading = value[key]
  298. } else if (key == 'Place of delivery') {
  299. searchTableQeuryTracking.place_of_delivery_exp = value[key]
  300. } else if (key == 'Place of Discharge') {
  301. searchTableQeuryTracking.port_of_discharge = value[key]
  302. } else if (key == 'Vessel') {
  303. searchTableQeuryTracking['f_vessel/vessel'] = value[key]
  304. } else if (key == 'Voyage') {
  305. searchTableQeuryTracking['f_voyage/voyage'] = value[key]
  306. }
  307. }
  308. if (sessionStorage.getItem('searchTableQeuryTracking') != null) {
  309. searchTableQeuryTracking = data
  310. }
  311. }
  312. renderTagsData()
  313. }
  314. const clearfilters = () => {
  315. tagsData.value = []
  316. filterData.transportData = []
  317. filterData.daterangeData = []
  318. filterData.morefiltersData = []
  319. filterData.dashboardData = []
  320. emitter.emit('clearTag', 'Transport Mode')
  321. emitter.emit('clearTag', 'ETD')
  322. emitter.emit('clearTag', 'ETA')
  323. emitter.emit('clearTag', 'Creation Time')
  324. emitter.emit('clearTag', 'Shippername')
  325. emitter.emit('clearTag', 'Consigneename')
  326. emitter.emit('clearTag', 'Service')
  327. emitter.emit('clearTag', 'Incoterms')
  328. emitter.emit('clearTag', 'Notify Party')
  329. emitter.emit('clearTag', 'Bill to')
  330. emitter.emit('clearTag', 'Origin Agent')
  331. emitter.emit('clearTag', 'Destination Agent')
  332. emitter.emit('clearTag', 'Destination Operator')
  333. emitter.emit('clearTag', 'Sales')
  334. emitter.emit('clearTag', 'Origin')
  335. emitter.emit('clearTag', 'Destination')
  336. emitter.emit('clearTag', 'Place of Receipt')
  337. emitter.emit('clearTag', 'Port of Loading')
  338. emitter.emit('clearTag', 'Place of delivery')
  339. emitter.emit('clearTag', 'Port of Discharge')
  340. emitter.emit('clearTag', 'Vessel')
  341. emitter.emit('clearTag', 'Voyage')
  342. searchTableQeuryTracking = {}
  343. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  344. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  345. Gettrackingdata()
  346. }
  347. const renderTagsData = () => {
  348. tagsData.value = []
  349. if (filterData.transportData.length) {
  350. tagsData.value.push(filterData.transportData[0])
  351. }
  352. if (filterData.daterangeData.length) {
  353. filterData.daterangeData.forEach((item) => {
  354. tagsData.value.push(item)
  355. })
  356. }
  357. if (filterData.morefiltersData.length) {
  358. filterData.morefiltersData.forEach((item) => {
  359. tagsData.value.push(item)
  360. })
  361. }
  362. if (filterData.dashboardData.length) {
  363. filterData.dashboardData.forEach((item) => {
  364. tagsData.value.push(item)
  365. })
  366. }
  367. }
  368. // 清除 Transport Tags
  369. const clearTransportTags = () => {
  370. filterData.transportData = []
  371. }
  372. // 清除 Daterange Tags
  373. const clearDaterangeTags = () => {
  374. filterData.daterangeData = []
  375. }
  376. // 清除 MoreFilters Tags
  377. const clearMoreFiltersTags = () => {
  378. filterData.morefiltersData = []
  379. }
  380. // 从 store 中获取数据并绑定到输入框
  381. const headerSearchdData = computed(() => headerSearch.searchValue)
  382. // 监听 sharedData 的变化并更新 inputValue
  383. headerSearchdData.value && (TrackingSearch.value = headerSearchdData.value)
  384. headerSearch.clearSearchData()
  385. // 当 sharedData 发生变化时,更新 inputValue
  386. watch(
  387. () => headerSearchdData.value,
  388. (newData) => {
  389. if (newData) {
  390. // 更新表格数据
  391. TrackingTable_ref.value.getSharedTableData()
  392. // 更新筛选条件
  393. TrackingSearch.value = headerSearchdData.value
  394. headerSearch.clearSearchData()
  395. }
  396. }
  397. )
  398. const TrackingTable_ref = ref()
  399. const TransportListItem = ref()
  400. interface ListItem {
  401. name: string
  402. number: number
  403. type: string
  404. checked: boolean
  405. }
  406. const TagsList = ref<ListItem[]>([])
  407. const filterTag = ref(['All'])
  408. const Gettrackingdata = () => {
  409. const trackingData = JSON.parse(localStorage.getItem('TrackingData'))
  410. if (trackingData) {
  411. TransportListItem.value = trackingData.TransportList
  412. TagsList.value = trackingData.tagsList
  413. TrackingSearch.value = trackingData.searchData
  414. } else {
  415. $api
  416. .getTrackingTableData({
  417. cp: TrackingTable_ref.value.pageInfo.pageNo,
  418. ps: TrackingTable_ref.value.pageInfo.pageSize,
  419. rc: -1,
  420. other_filed: '',
  421. ...searchTableQeuryTracking
  422. })
  423. .then((res: any) => {
  424. if (res.code === 200) {
  425. TransportListItem.value = res.data.TransportList
  426. TagsList.value = res.data.tagsList
  427. }
  428. })
  429. }
  430. }
  431. onMounted(() => {
  432. if (
  433. sessionStorage.getItem('clickParams') != null &&
  434. sessionStorage.getItem('clickParams') != '{}'
  435. ) {
  436. if (sessionStorage.getItem('searchTableQeuryTracking') != null) {
  437. sessionStorage.removeItem('searchTableQeuryTracking')
  438. }
  439. const data = JSON.parse(sessionStorage.getItem('tagsList') as string) || {}
  440. const reportlist = JSON.parse(sessionStorage.getItem('reportList') as string) || {}
  441. for (const key in reportlist) {
  442. searchTableQeuryTracking[key] = reportlist[key]
  443. }
  444. if (reportlist._city_name == '') {
  445. let str = `${data.title}:${data.name}`
  446. filterData.dashboardData.push(str)
  447. } else {
  448. if (reportlist._reportStationType == 'shippr_uncode' && data.title.includes('Origin')) {
  449. let str = `Origin: ${data.data}`
  450. filterData.morefiltersData.push(str)
  451. } else if (
  452. reportlist._reportStationType == 'consignee_uncode' &&
  453. data.title.includes('Destination')
  454. ) {
  455. let str = `Destination: ${data.data}`
  456. filterData.morefiltersData.push(str)
  457. } else {
  458. let str = `${data.title}:${data.name}`
  459. filterData.dashboardData.push(str)
  460. }
  461. }
  462. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  463. } else {
  464. if (sessionStorage.getItem('searchTableQeuryTracking') != null) {
  465. const testTracking =
  466. JSON.parse(sessionStorage.getItem('searchTableQeuryTracking') as string) || {}
  467. if (testTracking._reportRef) {
  468. const data = JSON.parse(sessionStorage.getItem('tagsList') as string) || {}
  469. const reportlist = JSON.parse(sessionStorage.getItem('reportList') as string) || {}
  470. for (const key in reportlist) {
  471. searchTableQeuryTracking[key] = [key]
  472. }
  473. if (reportlist._city_name == '') {
  474. let str = `${data.title}:${data.name}`
  475. filterData.dashboardData.push(str)
  476. } else {
  477. if (reportlist._reportStationType == 'shippr_uncode' && data.title.includes('Origin')) {
  478. let str = `Origin: ${data.data}`
  479. filterData.morefiltersData.push(str)
  480. } else if (
  481. reportlist._reportStationType == 'consignee_uncode' &&
  482. data.title.includes('Destination')
  483. ) {
  484. let str = `Destination: ${data.data}`
  485. filterData.morefiltersData.push(str)
  486. } else {
  487. let str = `${data.title}:${data.name}`
  488. filterData.dashboardData.push(str)
  489. }
  490. }
  491. }
  492. }
  493. }
  494. renderTagsData()
  495. })
  496. const changeTag = (val: any) => {
  497. searchTableQeuryTracking.filterTag = val
  498. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  499. filterTag.value = val
  500. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  501. Gettrackingdata()
  502. }
  503. // 点击search按钮
  504. const SearchInput = () => {
  505. searchTableQeuryTracking._textSearch = TrackingSearch.value
  506. TrackingTable_ref.value.searchTableData(searchTableQeuryTracking)
  507. sessionStorage.setItem('searchTableQeuryTracking', JSON.stringify(searchTableQeuryTracking))
  508. Gettrackingdata()
  509. }
  510. </script>
  511. <template>
  512. <div class="Title">Tracking</div>
  513. <div class="display" ref="filterRef">
  514. <FilterTags :TagsListItem="TagsList" @changeTag="changeTag"></FilterTags>
  515. <div class="heaer_top">
  516. <div class="search">
  517. <el-input
  518. placeholder="Search booking No./HBL No./PO No./Carrier Booking No."
  519. v-model="TrackingSearch"
  520. >
  521. <template #prefix>
  522. <span class="iconfont_icon">
  523. <svg class="iconfont" aria-hidden="true">
  524. <use xlink:href="#icon-icon_search_b"></use>
  525. </svg>
  526. </span>
  527. </template>
  528. </el-input>
  529. </div>
  530. <TransportMode
  531. :isShipment="true"
  532. :TransportListItem="TransportListItem"
  533. @TransportSearch="TransportSearch"
  534. @defaultTransport="defaultTransport"
  535. @clearTransportTags="clearTransportTags"
  536. ></TransportMode>
  537. <DateRange
  538. :isShipment="true"
  539. @DateRangeSearch="DateRangeSearch"
  540. @clearDaterangeTags="clearDaterangeTags"
  541. @defaultDate="defaultDate"
  542. ></DateRange>
  543. <MoreFilters
  544. :isShipment="true"
  545. :searchTableQeury="searchTableQeuryTracking"
  546. @MoreFiltersSearch="MoreFiltersSearch"
  547. @clearMoreFiltersTags="clearMoreFiltersTags"
  548. @defaultMorefilters="defaultMorefilters"
  549. ></MoreFilters>
  550. <el-button class="el-button--dark" style="margin-left: 8px" @click="SearchInput"
  551. >Search</el-button
  552. >
  553. </div>
  554. <!-- 筛选项 -->
  555. <div class="filtersTag" v-if="tagsData.length">
  556. <el-tag
  557. :key="tag"
  558. class="tag"
  559. v-for="tag in tagsData"
  560. closable
  561. :disable-transitions="false"
  562. @close="handleClose(tag)"
  563. color="#EFEFF0"
  564. >
  565. {{ tag }}
  566. </el-tag>
  567. <div class="text_button" @click="clearfilters">Clear Filters</div>
  568. </div>
  569. </div>
  570. <TrackingTable
  571. :height="containerHeight"
  572. :tagsData="tagsData"
  573. ref="TrackingTable_ref"
  574. ></TrackingTable>
  575. </template>
  576. <style lang="scss" scoped>
  577. .Title {
  578. display: flex;
  579. height: 68px;
  580. border: 1px solid var(--color-border);
  581. border-width: 1px 0 1px 0;
  582. font-size: var(--font-size-6);
  583. font-weight: 700;
  584. padding: 0 24px;
  585. align-items: center;
  586. }
  587. .display {
  588. border: 1px solid var(--color-border);
  589. border-width: 0 0 1px 0;
  590. padding: 0 24px;
  591. }
  592. .heaer_top {
  593. margin-top: 6.57px;
  594. margin-bottom: 8px;
  595. display: flex;
  596. }
  597. .search {
  598. width: 400px;
  599. height: 32px;
  600. }
  601. .filtersTag {
  602. margin-bottom: 8.7px;
  603. display: flex;
  604. align-items: center;
  605. flex-wrap: wrap;
  606. }
  607. .tag {
  608. border-color: #efeff0;
  609. border-radius: var(--border-radius-22);
  610. margin: 0 8px 8px 0;
  611. color: var(--color-neutral-1);
  612. font-weight: 600;
  613. font-size: var(--font-size-2);
  614. }
  615. @media only screen and (min-width: 1280px) {
  616. .search {
  617. width: 480px;
  618. }
  619. }
  620. @media only screen and (min-width: 1440px) {
  621. .search {
  622. width: 740px;
  623. }
  624. }
  625. </style>