FanStatusQueryExport.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <template>
  2. <div>
  3. <div class="top">
  4. 风场:
  5. <el-select
  6. v-model="WindVal"
  7. filterable
  8. placeholder="请选择风电场"
  9. @change="getFanName"
  10. >
  11. <el-option
  12. v-for="item in WindFarm"
  13. :key="item.value"
  14. :label="item.label"
  15. :value="item.value"
  16. >
  17. </el-option>
  18. </el-select>
  19. 机组:
  20. <el-select v-model="FJval" filterable placeholder="请选择机组">
  21. <el-option
  22. v-for="item in options"
  23. :key="item.ID"
  24. :label="item.NAME"
  25. :value="item.ID"
  26. >
  27. </el-option>
  28. </el-select>
  29. 风机状态:
  30. <el-select
  31. v-model="fanStatusVal"
  32. filterable
  33. placeholder="请选择风机状态类型"
  34. >
  35. <el-option
  36. v-for="item in fanStatus"
  37. :key="item.value"
  38. :label="item.label"
  39. :value="item.value"
  40. >
  41. </el-option>
  42. </el-select>
  43. 时间:
  44. <el-date-picker
  45. v-model="timeValue"
  46. value-format="yyyy-MM-dd"
  47. type="daterange"
  48. range-separator="至"
  49. start-placeholder="开始日期"
  50. end-placeholder="结束日期"
  51. >
  52. </el-date-picker>
  53. <el-button type="primary" @click="search">查询</el-button>
  54. <download-excel
  55. class="export-excel-wrapper"
  56. :data="tableData"
  57. :fields="json_fields"
  58. name="风机状态"
  59. :disabled="disabled"
  60. >
  61. <!-- 上面可以自定义自己的样式,还可以引用其他组件button -->
  62. <el-button type="primary">导出</el-button>
  63. </download-excel>
  64. </div>
  65. <el-table :data="tableData" height="700" style="width: 100%" center>
  66. <el-table-column prop="FJ" label="场站风机" align="center"> </el-table-column>
  67. <el-table-column prop="STATUSDESC" label="状态类型" align="center"> </el-table-column>
  68. <el-table-column label="状态开始时间" align="center">
  69. <template slot-scope="scope">
  70. {{ scope.row.STARTTIME}}
  71. </template>
  72. </el-table-column>
  73. <el-table-column prop="STOPTIME" label="状态结束时间" align="center">
  74. <template slot-scope="scope">
  75. {{ scope.row.STOPTIME}}
  76. </template>
  77. </el-table-column>
  78. <el-table-column prop="SPEED" label="风速" align="center"> </el-table-column>
  79. </el-table>
  80. </div>
  81. </template>
  82. <script>
  83. import dateFormat from "../../../public/js/dateFormat";
  84. export default {
  85. data() {
  86. return {
  87. disabled: true,
  88. json_fields: {
  89. '场站风机': 'FJ',
  90. '状态类型': 'STATUSDESC',
  91. '状态开始时间': 'STARTTIME',
  92. '状态结束时间': 'STOPTIME',
  93. '风速': 'SPEED',
  94. },
  95. json_meta: [
  96. [
  97. {
  98. " key ": " charset ",
  99. " value ": " utf- 8 ",
  100. },
  101. ],
  102. ],
  103. excelTitle: "" || "excel",
  104. FJval: "",
  105. fanStatusVal: "0",
  106. satuscode: "",
  107. props: { multiple: true },
  108. options: [],
  109. tableData: [
  110. {
  111. FJ:'',
  112. STATUSDESC:'',
  113. STARTTIME:'',
  114. STOPTIME:'',
  115. SPEED:'',
  116. },
  117. ],
  118. WindVal: "MHS_FDC",
  119. timeValue: [
  120. dateFormat(
  121. "yyyy-MM-dd ",
  122. new Date(new Date().setDate(new Date().getDate() - 2))
  123. ),
  124. dateFormat("yyyy-MM-dd ", new Date()),
  125. ],
  126. WindFarm: [
  127. {
  128. value: "MHS_FDC",
  129. label: "麻黄山风电场",
  130. },
  131. {
  132. value: "XS_FDC",
  133. label: "香山风电场",
  134. },
  135. {
  136. value: "QS_FDC",
  137. label: "青山风电场",
  138. },
  139. {
  140. value: "NSS_FDC",
  141. label: "牛首山风电场",
  142. },
  143. {
  144. value: "SBQ_FDC",
  145. label: "石板泉风电场",
  146. },
  147. ],
  148. fanStatus: [
  149. {
  150. value: "0",
  151. label: "待机",
  152. },
  153. {
  154. value: "1",
  155. label: "运行故障",
  156. },
  157. {
  158. value: "3",
  159. label: "故障",
  160. },
  161. {
  162. value: "4",
  163. label: "离线",
  164. },
  165. {
  166. value: "5",
  167. label: "限电停机",
  168. },
  169. {
  170. value: "6",
  171. label: "限出力",
  172. },
  173. ],
  174. };
  175. },
  176. creat() {
  177. this.getFjStatus();
  178. },
  179. mounted() {
  180. this.getFanName();
  181. },
  182. filters: {
  183. timeF(val) {
  184. if (val) {
  185. return dateFormat("yyyy-MM-dd", new Date(val));
  186. }
  187. },
  188. },
  189. methods: {
  190. search() {
  191. this.getFjStatus();
  192. },
  193. getFanName() {
  194. this.options = [];
  195. this.$http
  196. .post("FanStatusQueryExport/FanName", this.WindVal)
  197. .then((res) => {
  198. var res = res.data;
  199. this.options = res;
  200. this.FJval = res[0].NAME;
  201. this.$nextTick(() => {
  202. this.getFjStatus();
  203. });
  204. })
  205. .catch(function (error) {
  206. console.log(error);
  207. });
  208. },
  209. getFjStatus() {
  210. this.$http
  211. .post("FanStatusQueryExport/FjStatus", {
  212. name: this.FJval,
  213. satuscode: this.fanStatusVal,
  214. starttime: this.timeValue[0],
  215. stoptime: this.timeValue[1],
  216. })
  217. .then((res) => {
  218. var data = res.data;
  219. var FJdata;
  220. for (let m in this.options) {
  221. if (this.options[m].ID == this.FJval) {
  222. FJdata = this.options[m].NAME;
  223. }
  224. }
  225. for (let i in data) {
  226. data[i].FJ = FJdata;
  227. }
  228. for(let i in data){
  229. data[i].STARTTIME = dateFormat("yyyy-MM-dd ", new Date(data[i].STARTTIME))
  230. data[i].STOPTIME = dateFormat("yyyy-MM-dd ", new Date(data[i].STOPTIME))
  231. }
  232. this.tableData = data;
  233. });
  234. },
  235. },
  236. };
  237. </script>
  238. <style lang="scss" scoped>
  239. .top {
  240. width: 80%;
  241. margin: 20px;
  242. display: flex;
  243. justify-content: space-around;
  244. align-items: center;
  245. overflow: hidden;
  246. }
  247. </style>