useTableStyle.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import { Column } from 'element-plus'
  2. import { CommonData, CommonValue } from '~/common'
  3. import { RowClassGetter } from '../type'
  4. type CellClassGetter = (params: {
  5. column: Column<CommonData>
  6. columns: Column<CommonData>[]
  7. columnIndex: number
  8. cellData: CommonValue
  9. rowData: CommonData
  10. rowIndex: number
  11. }) => string
  12. export function useTableStyle(tableName?: string) {
  13. const rowClass = ({ row, rowIndex }) => {
  14. const classes: string[] = []
  15. if (tableName?.includes('Airport')) {
  16. if (row.hasTakenOff === 'Y' || row.hasLanded === 'Y') {
  17. classes.push('bg-gray')
  18. } else if (row.loadPlaneSureTime) {
  19. classes.push('bg-light')
  20. }
  21. }
  22. // if (tableName?.includes('FlightContainer')) {
  23. // if (rowIndex === 1) {
  24. // classes.push('row-warning')
  25. // }
  26. // }
  27. // if (tableName?.includes('FlightWaybill')) {
  28. // if (rowIndex === 0) {
  29. // classes.push('row-alarm')
  30. // }
  31. // if (rowIndex === 1) {
  32. // classes.push('row-warning')
  33. // }
  34. // }
  35. return classes.join(' ')
  36. }
  37. const cellClass = ({ row, column, rowIndex, columnIndex }) => {
  38. const classes: string[] = []
  39. const cellData = row[column.property]
  40. if (tableName?.includes('Airport')) {
  41. if ((['flightNO'] as CommonValue[]).includes(column.property)) {
  42. classes.push('cell-click')
  43. if (row.flightState === 'DLY') {
  44. classes.push('flight-state-delay')
  45. } else if (row.flightState === 'CAN') {
  46. classes.push('flight-state-cancel')
  47. }
  48. }
  49. if (
  50. (column.property === 'register' &&
  51. typeof cellData === 'string' &&
  52. cellData.split('/').some(char => Number(char) > 0)) ||
  53. ((['pullregisterTime', 'pullRegisterTime'] as CommonValue[]).includes(
  54. column.property
  55. ) &&
  56. typeof cellData === 'string')
  57. ) {
  58. classes.push('cell-warning')
  59. }
  60. if (
  61. tableName?.includes('DepartureAirport') &&
  62. (['depotJoin', 'resure'] as any[]).includes(column.property) &&
  63. (cellData ?? '') !== ''
  64. ) {
  65. if (cellData === row['stowage']) {
  66. classes.push('cell-success')
  67. } else if ((row['planeDownTime'] ?? '') !== '') {
  68. classes.push('cell-alarm')
  69. }
  70. }
  71. if (column.property === 'loadPlaneTime') {
  72. if (row['warningState'] === 'alarm') {
  73. classes.push('cell-alarm')
  74. }
  75. if (row['warningState'] === 'warning') {
  76. classes.push('cell-warning')
  77. }
  78. }
  79. }
  80. if (tableName?.includes('FlightContainer')) {
  81. if (['stowageNo'].includes(column.property)) {
  82. classes.push('cell-click')
  83. }
  84. }
  85. if (tableName?.includes('FlightWaybill')) {
  86. if (
  87. [
  88. 'stockCode',
  89. // 'stowageNum'
  90. ].includes(column.property)
  91. ) {
  92. classes.push('cell-click')
  93. }
  94. }
  95. // if (tableName?.includes('WaybillGoods')) {
  96. // if (['CargoSN'].includes(column.property)) {
  97. // classes.push('cell-click')
  98. // }
  99. // }
  100. if (tableName?.includes('ArrivalWaybillGoods')) {
  101. if (['C1'].includes(column.property)) {
  102. classes.push('cell-click')
  103. }
  104. }
  105. return classes.join(' ')
  106. }
  107. const rowClassV2: RowClassGetter = ({ columns, rowData, rowIndex }) => {
  108. const classes: string[] = []
  109. return classes.join(' ')
  110. }
  111. const cellClassV2: CellClassGetter = ({
  112. column,
  113. columns,
  114. columnIndex,
  115. cellData,
  116. rowData,
  117. rowIndex,
  118. }) => {
  119. const classes: string[] = []
  120. if ((['flightNO'] as any[]).includes(column.dataKey)) {
  121. classes.push('cell-click')
  122. }
  123. if (
  124. (column.dataKey === 'register' &&
  125. typeof cellData === 'string' &&
  126. cellData.split('/').some(char => Number(char) > 0)) ||
  127. ((['pullregisterTime', 'pullRegisterTime'] as any[]).includes(
  128. column.dataKey
  129. ) &&
  130. typeof cellData === 'string')
  131. ) {
  132. classes.push('cell-warning')
  133. }
  134. if (
  135. tableName?.includes('DepartureAirport') &&
  136. (['depotJoin', 'resure'] as any[]).includes(column.dataKey) &&
  137. (cellData ?? '') !== ''
  138. ) {
  139. if (cellData === rowData['stowage']) {
  140. classes.push('cell-success')
  141. } else if ((rowData['planeDownTime'] ?? '') !== '') {
  142. classes.push('cell-alarm')
  143. }
  144. }
  145. if (column.dataKey === 'loadPlaneTime') {
  146. if (rowData['warningState'] === 'alarm') {
  147. classes.push('cell-alarm')
  148. }
  149. if (rowData['warningState'] === 'warning') {
  150. classes.push('cell-warning')
  151. }
  152. }
  153. return classes.join(' ')
  154. }
  155. return {
  156. rowClass,
  157. cellClass,
  158. rowClassV2,
  159. cellClassV2,
  160. }
  161. }