search.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <div class="seach">
  3. <el-form class="generat-seach" :inline="true" :model="queryForm">
  4. <!-- <el-form-item label="场站" class="!mb-0">
  5. <el-select
  6. style="width: 140px"
  7. v-model="queryForm.station"
  8. @change="getWtList"
  9. >
  10. <el-option
  11. v-for="item in stationList"
  12. :key="item.nemCode"
  13. :label="item.aname"
  14. :value="item.nemCode"
  15. >
  16. </el-option>
  17. </el-select>
  18. </el-form-item> -->
  19. <el-form-item label="风机" class="!mb-0">
  20. <el-select
  21. style="width: 150px"
  22. v-model="queryForm.wt"
  23. multiple
  24. collapse-tags
  25. >
  26. <el-option
  27. v-for="item in wtList"
  28. :key="item.id"
  29. :label="item.nemCode"
  30. :value="item.id"
  31. >
  32. </el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="时间" class="!mb-0">
  36. <el-date-picker
  37. v-model="queryForm.dateTime"
  38. size="mini"
  39. type="daterange"
  40. range-separator="-"
  41. format="YYYY-MM-DD"
  42. value-format="YYYY-MM-DD"
  43. start-placeholder="开始"
  44. end-placeholder="结束"
  45. popper-class="date-select"
  46. >
  47. </el-date-picker>
  48. </el-form-item>
  49. <el-form-item label="等间隔" class="!mb-0">
  50. <el-radio-group v-model="queryForm.interval">
  51. <el-radio :label="1">一分钟</el-radio>
  52. <el-radio :label="2">五分钟</el-radio>
  53. <el-radio :label="3">十分钟</el-radio>
  54. </el-radio-group>
  55. </el-form-item>
  56. <el-form-item class="!mb-0">
  57. <el-button type="primary" @click="funSubmit">执行</el-button>
  58. </el-form-item>
  59. </el-form>
  60. </div>
  61. </template>
  62. <script setup name="search">
  63. import { onMounted, reactive, ref } from "vue";
  64. import httpRequest from "@/utils/request.js";
  65. import dayjs from "dayjs";
  66. import SubmitBtn from "@/components/generatingCapacityComponent/SubmitBtn.vue";
  67. // import configStationJson from './configStation.json'
  68. const queryForm = reactive({
  69. station: "NX_FGS_HA_FDC_STA",
  70. wt: [],
  71. dateTime: [
  72. dayjs().subtract(1, "day").format("YYYY-MM-DD"),
  73. dayjs().format("YYYY-MM-DD"),
  74. ],
  75. interval: 1,
  76. });
  77. /**场站 */
  78. const stationList = ref([]);
  79. const wtList = ref([]);
  80. const funGetStation = async () => {
  81. const res = await httpRequest.get("/electricity/czlist");
  82. // stationList.value = Object.values(configStationJson) // configStationJson
  83. stationList.value = Object.values(res?.data || []);
  84. if (stationList.value.length) {
  85. queryForm.station = stationList.value[0].nemCode;
  86. }
  87. getWtList();
  88. };
  89. const getWtList = async () => {
  90. const res = await httpRequest.get(
  91. `/pro-basic-equipment/equipmentsByWpid2?wpid=${queryForm.station}`
  92. );
  93. wtList.value = Object.values(res?.data?.data || []);
  94. if (wtList.value.length) {
  95. let wt = [wtList.value[0].id];
  96. // wtList.value.forEach((item) => {
  97. // wt.push(item.id);
  98. // });
  99. queryForm.wt = wt;
  100. }
  101. funSubmit();
  102. };
  103. /**导出 */
  104. const emits = defineEmits(["submit"]);
  105. const funSubmit = async () => {
  106. const startTs = dayjs(queryForm.dateTime[0]).unix();
  107. const endTs = dayjs(queryForm.dateTime[1]).unix();
  108. const query = {
  109. windturbineId: queryForm.wt.toString() || "",
  110. startTs,
  111. endTs,
  112. interval: queryForm.interval,
  113. };
  114. switch (queryForm.interval) {
  115. case 1:
  116. query.interval = 60;
  117. break;
  118. case 2:
  119. query.interval = 300;
  120. break;
  121. case 3:
  122. query.interval = 600;
  123. break;
  124. }
  125. emits("submit", query);
  126. };
  127. /**created */
  128. onMounted(() => {
  129. funGetStation();
  130. });
  131. </script>