tableformbrs.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <template>
  2. <div class="data-table">
  3. <div
  4. :style="dataTableContentStyle"
  5. v-loading="loading"
  6. element-loading-text="拼命加载中"
  7. element-loading-spinner="el-icon-loading"
  8. element-loading-background="rgba(0, 0, 0, 0.8)"
  9. class="data-table-content"
  10. >
  11. <template v-if="tableData.length && upid == 1">
  12. <el-table :data="tableData" style="width: 100%" ref="userTableData">
  13. <el-table-column
  14. :label="dataContent[1] + '国航行李BRS扫描数据统计表'"
  15. >
  16. <el-table-column prop="A" label="日期"> </el-table-column>
  17. <el-table-column label="离港数">
  18. <el-table-column prop="totalfly" label="航班(架次)" width="240">
  19. </el-table-column>
  20. <el-table-column prop="totalbag" label="行李(件数)" width="240">
  21. </el-table-column>
  22. </el-table-column>
  23. <el-table-column label="扫描数">
  24. <el-table-column prop="brsfly" label="航班(架次)">
  25. </el-table-column>
  26. <el-table-column prop="brsbag" label="行李(件数)">
  27. </el-table-column>
  28. </el-table-column>
  29. <el-table-column label="扫描率">
  30. <el-table-column prop="ra_brsfly" label="航班"> </el-table-column>
  31. <el-table-column prop="ra_brsbag" label="行李"> </el-table-column>
  32. </el-table-column>
  33. </el-table-column>
  34. </el-table>
  35. </template>
  36. <template v-else-if="tableData.length && upid == 2">
  37. <el-table :data="tableData" style="width: 100%" ref="userTableDatard">
  38. <el-table-column label="Mannual Load扫描数据统计表">
  39. <el-table-column prop="A" label="日期"> </el-table-column>
  40. <el-table-column label="离港数">
  41. <el-table-column prop="totalfly" label="航班(架次)" width="240">
  42. </el-table-column>
  43. <el-table-column prop="totalbag" label="行李(件数)" width="240">
  44. </el-table-column>
  45. </el-table-column>
  46. <el-table-column label="扫描数">
  47. <el-table-column prop="starfly" label="航班(架次)">
  48. </el-table-column>
  49. <el-table-column prop="starbag" label="行李(件数)">
  50. </el-table-column>
  51. </el-table-column>
  52. <el-table-column label="扫描率">
  53. <el-table-column prop="ra_starfly" label="航班">
  54. </el-table-column>
  55. <el-table-column prop="ra_starfly" label="行李">
  56. </el-table-column>
  57. </el-table-column>
  58. </el-table-column>
  59. </el-table>
  60. </template>
  61. <template v-else-if="tableData.length && upid == 3">
  62. <el-table :data="tableData" style="width: 100%" ref="TableDatardrfid">
  63. <el-table-column label="航易行RFID扫描数据统计表">
  64. <el-table-column prop="A" label="日期"> </el-table-column>
  65. <el-table-column label="离港数">
  66. <el-table-column prop="totalfly" label="航班(架次)" width="240">
  67. </el-table-column>
  68. <el-table-column prop="totalbag" label="行李(件数)" width="240">
  69. </el-table-column>
  70. </el-table-column>
  71. <el-table-column label="扫描数">
  72. <el-table-column prop="hyxfly" label="航班(架次)">
  73. </el-table-column>
  74. <el-table-column prop="hyxbag" label="行李(件数)">
  75. </el-table-column>
  76. </el-table-column>
  77. <el-table-column label="扫描率">
  78. <el-table-column prop="ra_hyxfly" label="航班"> </el-table-column>
  79. <el-table-column prop="ra_hyxbag" label="行李"> </el-table-column>
  80. </el-table-column>
  81. </el-table-column>
  82. </el-table>
  83. </template>
  84. <template v-else>
  85. <NoData image-width="auto" image-height="100%" />
  86. </template>
  87. </div>
  88. </div>
  89. </template>
  90. <script>
  91. import NoData from "@/components/nodata";
  92. import { Query } from "@/api/dataIntegration";
  93. import * as XLSX from "xlsx";
  94. import FileSaver from "file-saver";
  95. import { number } from "echarts";
  96. import { throttledExportToExcel } from "@/utils/table";
  97. export default {
  98. props: {
  99. //接口ID
  100. dataId: {
  101. type: [String, Number],
  102. default: "",
  103. },
  104. isloadings: {
  105. type: Number,
  106. },
  107. upid: {
  108. type: [String, Number],
  109. },
  110. dataContent: {
  111. type: Array,
  112. default: () => [],
  113. },
  114. },
  115. data() {
  116. return {
  117. loading: false,
  118. page: 0,
  119. serviceId: null,
  120. rowTitle: "",
  121. tableCols: [], //表头数据
  122. tableData: [
  123. // {
  124. // date: "wnz(7月)",
  125. // name: "409",
  126. // province: "18946",
  127. // city: "409",
  128. // address: "18294",
  129. // zip: "100%",
  130. // cp: "96.56%",
  131. // },
  132. ],
  133. };
  134. },
  135. components: {
  136. NoData,
  137. },
  138. watch: {
  139. dataContent: {
  140. handler(val) {
  141. if (val) {
  142. this.getQuery();
  143. }
  144. },
  145. deep: true,
  146. },
  147. isloadings: {
  148. handler(val) {
  149. this.downFile();
  150. },
  151. },
  152. },
  153. computed: {
  154. dataTableContentStyle() {
  155. const style = {};
  156. if (this.minHeight) {
  157. style["min-height"] = this.minHeight;
  158. }
  159. if (this.tableHeight) {
  160. style["height"] = this.tableHeight;
  161. }
  162. return style;
  163. },
  164. },
  165. mounted() {
  166. // this.getQuery();
  167. },
  168. methods: {
  169. //获取表格数据
  170. async getQuery() {
  171. try {
  172. this.loading = true;
  173. const { code, returnData } = await Query({
  174. id: this.dataId,
  175. dataContent: this.dataContent,
  176. });
  177. if (code == 0) {
  178. if (returnData.listValues.length === 0) {
  179. this.page--;
  180. this.noMore = true;
  181. this.loading = false;
  182. }
  183. const titleColumn = returnData.columnSet.find(
  184. (item) => item.needShow === 1
  185. );
  186. if (titleColumn) {
  187. this.rowTitle = titleColumn.columnName;
  188. }
  189. returnData.listValues.forEach((res) => {
  190. if (!res.A) {
  191. res.A = 0;
  192. }
  193. if (!res.totalfly) {
  194. res.totalfly = 0;
  195. }
  196. if (!res.totalbag) {
  197. res.totalbag = 0;
  198. }
  199. if (!res.brsfly) {
  200. res.brsfly = 0;
  201. }
  202. if (!res.brsbag) {
  203. res.brsbag = 0;
  204. }
  205. if (!res.ra_brsfly) {
  206. res.ra_brsfly = 0;
  207. }
  208. if (!res.ra_brsbag) {
  209. res.ra_brsbag = 0;
  210. }
  211. if (!res.starfly) {
  212. res.starfly = 0;
  213. }
  214. if (!res.starbag) {
  215. res.starbag = 0;
  216. }
  217. if (!res.ra_starfly) {
  218. res.ra_starfly = 0;
  219. }
  220. if (!res.ra_starfly) {
  221. res.ra_starfly = 0;
  222. }
  223. if (!res.hyxfly) {
  224. res.hyxfly = 0;
  225. }
  226. if (!res.hyxbag) {
  227. res.hyxbag = 0;
  228. }
  229. if (!res.ra_hyxfly) {
  230. res.ra_hyxfly = 0;
  231. }
  232. if (!res.ra_hyxbag) {
  233. res.ra_hyxbag = 0;
  234. }
  235. });
  236. this.tableData = returnData.listValues;
  237. this.tableCols = returnData.columnSet;
  238. this.serviceId = returnData.submitID;
  239. this.loading = false;
  240. // setTimeout(() => {
  241. // this.initTableData();
  242. // this.loading = false;
  243. // }, 100);
  244. } else {
  245. this.page--;
  246. this.loading = false;
  247. this.$message.error("获取表格数据失败");
  248. }
  249. } catch (error) {
  250. this.page--;
  251. this.loading = false;
  252. }
  253. },
  254. downFile() {
  255. if (this.upid == 1) {
  256. let tableName = this.dataContent[1] + "国航行李BRS扫描数据统计表";
  257. const table = this.$refs["userTableData"].$el.cloneNode(true);
  258. const fileName = `${tableName}.xlsx`;
  259. throttledExportToExcel(table, tableName, fileName);
  260. } else if (this.upid == 2) {
  261. let tableName = "Mannual Load扫描数据统计表";
  262. const table = this.$refs["userTableDatard"].$el.cloneNode(true);
  263. const fileName = `${tableName}.xlsx`;
  264. throttledExportToExcel(table, tableName, fileName);
  265. } else if (this.upid == 3) {
  266. let tableName = "航易行RFID扫描数据统计表";
  267. const table = this.$refs["TableDatardrfid"].$el.cloneNode(true);
  268. const fileName = `${tableName}.xlsx`;
  269. throttledExportToExcel(table, tableName, fileName);
  270. }
  271. },
  272. },
  273. };
  274. </script>
  275. <style lang="scss" scoped>
  276. </style>