index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <div class="airportInfo scroll-y">
  3. <div class="wrap">
  4. <Minheader
  5. :is-Search="true"
  6. :is-statuser="true"
  7. :is-Show="true"
  8. :is-Time="true"
  9. search-permission="goods_query_search_button"
  10. column-set-permission="goods_query_column_settings_button"
  11. @showForm="showForm"
  12. @searchForm="searchForm"
  13. >
  14. <template #header>
  15. <div class="status flex-wrap">
  16. <div class="manageTitle">货物查询</div>
  17. </div>
  18. </template></Minheader
  19. >
  20. <div class="app-containers">
  21. <DataTable
  22. :tableHeader="tableCols"
  23. :tableData="tableData"
  24. :tableProperty="{ rowKey: 'ID' }"
  25. />
  26. </div>
  27. <TableColumnSet
  28. :dialogVisible="dialogVisible"
  29. :columnList="tableCols"
  30. @closeDialog="closeDialog"
  31. />
  32. </div>
  33. </div>
  34. </template>
  35. <script setup lang="ts">
  36. import DataTable from "@/components/tableTemp/index.vue";
  37. import Minheader from "@/components/minheader/index.vue";
  38. import Dialog from "@/components/dialog/index.vue";
  39. import TableColumnSet from "@/components/tableColumnSet/index.vue";
  40. import { Query, GeneralDataReception } from "@/api/webApi";
  41. import { ElMessage } from "element-plus";
  42. const page = ref<number>(0); //分页参数
  43. const dataContent = ref<object>({});
  44. const noMore = ref<Boolean>(false);
  45. const rowTitle = ref<String>("");
  46. const tableCols = ref([]); //表头数据
  47. const serviceId = ref<String>("");
  48. const tableObj = ref({}); //增删改数据缓存
  49. const dialogVisible = ref<Boolean>(false); //列设置弹窗开关
  50. //列表
  51. const tableData = ref([]);
  52. //表头
  53. const state = reactive({
  54. list: [
  55. { label: "起飞航站", key: "name" },
  56. { label: "目的航站", key: "china" },
  57. { label: "航班号", key: "englin" },
  58. { label: "航班日期", key: "two" },
  59. { label: "直达/中转", key: "three" },
  60. { label: "货物牌号", key: "text" },
  61. { label: "特殊货物类型", key: "text1" },
  62. { label: "位置(节点)", key: "text2" },
  63. { label: "状态(节点)", key: "text3" },
  64. { label: "运单号", key: "text4" },
  65. { label: "值机号", key: "text5" },
  66. { label: "安检序号", key: "text6" },
  67. { label: "货代", key: "text7" },
  68. { label: "货代等级", key: "text8" },
  69. { label: "批次号", key: "text9" },
  70. ],
  71. listLoading: true,
  72. });
  73. //列设置
  74. const showForm = () => {
  75. dialogVisible.value = true;
  76. };
  77. //列设置取消
  78. const closeDialog = () => {
  79. dialogVisible.value = false;
  80. };
  81. //获取表格数据
  82. const getQuery = async (data) => {
  83. try {
  84. const { code, returnData } = await Query({
  85. id: DATACONTENT_ID.goodsTabId,
  86. needPage: 1,
  87. dataContent: data,
  88. });
  89. if (code === "0") {
  90. if (returnData.listValues.length === 0) {
  91. page.value--;
  92. noMore.value = true;
  93. }
  94. const titleColumn = returnData.columnSet.find(
  95. (item) => item.needShow === 1
  96. );
  97. if (titleColumn) {
  98. rowTitle.value = titleColumn.columnName;
  99. }
  100. tableData.value.push(...returnData.listValues);
  101. tableCols.value = returnData.columnSet;
  102. tableCols.value.forEach((element) => {
  103. element.label = element.columnLabel;
  104. element.key = element.columnName;
  105. // if (element.columnName === "queryTemplate") {
  106. // element.width = "300px";
  107. // }
  108. });
  109. serviceId.value = returnData.submitID;
  110. } else {
  111. page.value--;
  112. }
  113. } catch (error) {
  114. page.value--;
  115. }
  116. };
  117. const searchForm = (data) => {
  118. tableData.value = [];
  119. getQuery(data);
  120. };
  121. </script>
  122. <style lang="scss" scoped>
  123. ::v-deep .el-form-item__label {
  124. width: 100px;
  125. }
  126. .app-containers {
  127. height: calc(100vh - 180px);
  128. }
  129. </style>