search.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <script setup name="search">
  2. import { onMounted, reactive, ref } from 'vue'
  3. import request from '@/api/axios.js'
  4. import SubmitBtn from '@com/SubmitBtn.vue'
  5. const queryForm = reactive({
  6. station: '',
  7. wtIds: [],
  8. st: Date.now() - 30 * 24 * 60 * 60 * 1000,
  9. et: Date.now(),
  10. // interval: 3
  11. })
  12. /**场站 */
  13. const stationList = ref([])
  14. const funGetStation = async () => {
  15. const res = await request.get("/base/gfstation")
  16. stationList.value = res.data
  17. if (stationList.value.length) {
  18. queryForm.station = 'HZJ_GDC'
  19. funGetWind(queryForm.station)
  20. }
  21. }
  22. const funStationChange = (stationId) => {
  23. if (stationId) {
  24. funGetWind(stationId)
  25. } else {
  26. windList.value = []
  27. }
  28. }
  29. /**风机 */
  30. const checkAll = ref(true)
  31. const windList = ref([])
  32. const funGetWind = async (stationId) => {
  33. const res = await request.get("base/inverter", {params: { stationId }})
  34. windList.value = res.data
  35. queryForm.wtIds = res.data.map(o => o.id)
  36. checkAll.value = true
  37. }
  38. const funCheckAll = () => {
  39. checkAll.value = !checkAll.value
  40. if(checkAll.value){
  41. queryForm.wtIds = windList.value.map(o => o.id)
  42. }else{
  43. queryForm.wtIds = []
  44. }
  45. }
  46. /**导出 */
  47. const emits = defineEmits(['submit'])
  48. const funSubmit = async () => {
  49. const startDate = new Date(queryForm.st).setHours(0,0,0,0)
  50. const endDate = new Date(queryForm.et).setHours(0,0,0,0)
  51. const query = {
  52. station: queryForm.station,
  53. wtIds: queryForm.wtIds.join(),
  54. st: new Date(startDate).getTime(),
  55. et: new Date(endDate).getTime(),
  56. // interval: queryForm.interval
  57. }
  58. // switch (queryForm.interval) {
  59. // case 2:
  60. // query.interval = 60
  61. // break;
  62. // case 3:
  63. // query.interval = 600
  64. // break;
  65. // case 4:
  66. // query.interval = 900
  67. // break;
  68. // }
  69. emits('submit', query)
  70. }
  71. /**created */
  72. funGetStation()
  73. </script>
  74. <template>
  75. <div class="pl-[20px] flex items-center h-[80px] relative">
  76. <div class="absolute top-[-7px] left-[20px] text-[#838383] text-[14px]">操作面板</div>
  77. <el-form class="" :inline="true" :model="queryForm">
  78. <el-form-item label="场站" class="!mb-0">
  79. <el-select v-model="queryForm.station" class="w-[150px]" @change="funStationChange">
  80. <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id"></el-option>
  81. </el-select>
  82. </el-form-item>
  83. <el-form-item label="逆变器" class="!mb-0">
  84. <el-select multiple class="w-[150px]" v-model="queryForm.wtIds" @clear="checkAll = false" collapse-tags>
  85. <el-option label="全选" :class="{'selected': checkAll}" @click="funCheckAll"></el-option>
  86. <el-option v-for="item in windList" :key="item.id" :label="item.name" :value="item.id"></el-option>
  87. </el-select>
  88. </el-form-item>
  89. <el-form-item label="开始时间" class="!mb-0">
  90. <el-date-picker type="date" class="!w-[150px]" v-model="queryForm.st"></el-date-picker>
  91. </el-form-item>
  92. <el-form-item label="结束时间" class="!mb-0">
  93. <el-date-picker type="date" class="!w-[150px]" v-model="queryForm.et"></el-date-picker>
  94. </el-form-item>
  95. <!-- <el-form-item label="等间隔" class="!mb-0">
  96. <el-radio-group v-model="queryForm.interval">
  97. <el-radio :label="1">一秒钟</el-radio>
  98. <el-radio :label="2">一分钟</el-radio>
  99. <el-radio :label="3">十分钟</el-radio>
  100. <el-radio :label="4">十五分钟</el-radio>
  101. </el-radio-group>
  102. </el-form-item> -->
  103. <el-form-item class="!mb-0">
  104. <submit-btn v-prevdbclick:5000="funSubmit" desc="执行"></submit-btn>
  105. </el-form-item>
  106. </el-form>
  107. </div>
  108. </template>