index.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <template>
  2. <div class="knowledge-2">
  3. <div class="query mg-b-8">
  4. <div class="query-items">
  5. <div class="query-item">
  6. <div class="lable">场站:</div>
  7. <div class="search-input">
  8. <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change=" (wpId) => { getWt(wpId, true); } ">
  9. <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
  10. </el-select>
  11. </div>
  12. </div>
  13. <div class="query-item">
  14. <div class="lable">风机:</div>
  15. <div class="search-input">
  16. <el-select v-model="wtId" clearable placeholder="请选择" popper-class="select">
  17. <el-option v-for="item in wtArray" :key="item.id" :value="item.id" :label="item.name" />
  18. </el-select>
  19. </div>
  20. </div>
  21. <!-- <div class="query-item">
  22. <div class="lable">类型:</div>
  23. <div class="search-input">
  24. <el-select
  25. v-model="type"
  26. clearable
  27. placeholder="请选择"
  28. popper-class="select"
  29. >
  30. <el-option
  31. v-for="item in typeArray"
  32. :key="item.id"
  33. :value="item.id"
  34. :label="item.name"
  35. />
  36. </el-select>
  37. </div>
  38. </div> -->
  39. <div class="query-item">
  40. <div class="query-item">
  41. <div class="lable">开始日期:</div>
  42. <div class="search-input">
  43. <el-date-picker v-model="value1" @change="BeginChange(value1)" type="date"
  44. value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
  45. </el-date-picker>
  46. </div>
  47. </div>
  48. <div class="query-item">
  49. <div class="lable">结束日期:</div>
  50. <div class="search-input">
  51. <el-date-picker v-model="value2" @change="EndChange(value2)" type="date"
  52. value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
  53. </el-date-picker>
  54. <div class="unit svg-icon svg-icon-gray">
  55. <svg-icon :svgid="''" />
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="query-actions" style="margin-right: 1500px">
  62. <button class="btn green" @click="onClickSearch">查询</button>
  63. </div>
  64. </div>
  65. <div>
  66. <ComTable :data="tableData" height="85vh"></ComTable>
  67. </div>
  68. <div>
  69. <el-dialog title="故障诊断" v-model="dialogVisible" width="1400px" top="5vh" custom-class="modal hide-header"
  70. :close-on-click-modal="false" :before-close="onClickDialogClose">
  71. <fault-diagnosis :data="rowitem" />
  72. </el-dialog>
  73. </div>
  74. </div>
  75. </template>
  76. <script>
  77. import ComTable from "@com/coms/table/table.vue";
  78. import FaultDiagnosis from "./components/fault-diagnosis.vue";
  79. export default {
  80. components: {
  81. ComTable,
  82. FaultDiagnosis
  83. },
  84. data() {
  85. const that = this;
  86. return {
  87. value1: "",
  88. value2: "",
  89. wpId: "",
  90. wpArray: [],
  91. rowitem: "",
  92. wpName: "",
  93. wtId: "",
  94. type: "2",
  95. dialogVisible: false,
  96. tableData: {
  97. column: [{
  98. name: "场站",
  99. field: "wpName",
  100. is_num: true,
  101. is_light: false,
  102. },
  103. {
  104. name: "机组",
  105. field: "windTurbineId",
  106. is_num: false,
  107. is_light: false,
  108. },
  109. {
  110. name: "开始时刻",
  111. field: "stopTime",
  112. is_num: false,
  113. is_light: false,
  114. },
  115. {
  116. name: "结束时刻",
  117. field: "startTime",
  118. is_num: false,
  119. is_light: false,
  120. },
  121. {
  122. name: "停机小时数(h)",
  123. field: "stopHours",
  124. is_num: false,
  125. is_light: false,
  126. },
  127. {
  128. name: "停机类型",
  129. field: "warnDesc",
  130. is_num: false,
  131. is_light: false,
  132. },
  133. {
  134. name: "损失电量(kWh)",
  135. field: "lossPower",
  136. is_num: false,
  137. is_light: false,
  138. },
  139. {
  140. name: "操作",
  141. field: "",
  142. is_num: false,
  143. is_light: false,
  144. template() {
  145. return "<el-button type='text' style='cursor: pointer;'>回溯</el-button>";
  146. },
  147. click(e, row) {
  148. that.onClickOption(row);
  149. },
  150. },
  151. ],
  152. data: [],
  153. },
  154. };
  155. },
  156. created() {
  157. this.value1 = new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
  158. "yyyy-MM-dd"
  159. );
  160. this.value2 = this.getTime(2);
  161. this.getWp();
  162. },
  163. methods: {
  164. getTime(val) {
  165. //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
  166. var date = new Date();
  167. var year = date.getFullYear(),
  168. month = date.getMonth() + 1,
  169. day = date.getDate();
  170. month >= 1 && month <= 9 ? (month = "0" + month) : "";
  171. day >= 0 && day <= 9 ? (day = "0" + day) : "";
  172. var begin = year + "-" + month + "-01";
  173. var end = year + "-" + month + "-" + day;
  174. if (val == 1) {
  175. return begin;
  176. } else if (val == 2) {
  177. return end;
  178. }
  179. },
  180. // 获取风场
  181. getWp(reGetWp) {
  182. let that = this;
  183. that.API.requestData({
  184. baseURL: "http://10.155.32.4:9001",
  185. subUrl: "benchmarking/wplist",
  186. success(res) {
  187. that.wpArray = res.data;
  188. that.wpId = res.data[0].id;
  189. that.wpName = res.data[0].wpName;
  190. that.getWt(that.wpId, reGetWp);
  191. that.requestSafeList();
  192. },
  193. });
  194. },
  195. // 获取风机
  196. getWt(wpid, reGetWp) {
  197. let that = this;
  198. if (that.wpId) {
  199. that.API.requestData({
  200. method: "GET",
  201. baseURL: "http://10.155.32.4:9001",
  202. subUrl: "benchmarking/wtList",
  203. data: {
  204. wpid,
  205. },
  206. success(res) {
  207. that.wtArray = res.data;
  208. // that.wtId = res.data[0].id;
  209. },
  210. });
  211. }
  212. },
  213. BeginChange(vl) {
  214. this.value1 = vl;
  215. },
  216. EndChange(vl) {
  217. this.value2 = vl;
  218. },
  219. typeChange(vl) {
  220. this.type = vl;
  221. },
  222. // 搜索按钮
  223. onClickSearch() {
  224. this.requestSafeList();
  225. },
  226. // 获取停机事件
  227. requestSafeList() {
  228. let that = this;
  229. let data = {
  230. tablepar: {
  231. pageNum: 1,
  232. pageSize: 1000,
  233. },
  234. beginDate: that.value1,
  235. endDate: that.value2,
  236. wpId: that.wpId,
  237. };
  238. if (that.wtId != "") data.wtId = that.wtId;
  239. if (that.type != "") data.type = that.type;
  240. this.API.requestData({
  241. method: "POST",
  242. subUrl: "/event/getShutdownevent",
  243. data,
  244. success(res) {
  245. if (res.code == 200) {
  246. that.tableData.data = [];
  247. if (res.data.list.length) {
  248. let data = res.data.list;
  249. for (var i = 0; i < data.length; i++) {
  250. let obj = {
  251. wpName: data[i].wpName,
  252. windTurbineId: data[i].windTurbineId,
  253. stopTime: new Date(data[i].stopTime).formatDate(
  254. "yyyy-MM-dd hh:mm:ss"
  255. ),
  256. stopHours: data[i].stopHours,
  257. statusName: data[i].statusName,
  258. warnDesc: data[i].warnDesc,
  259. lossPower: data[i].lossPower,
  260. handleWay: data[i].handleWay,
  261. };
  262. if (data[i].startTime)
  263. obj.startTime = new Date(data[i].startTime).formatDate(
  264. "yyyy-MM-dd hh:mm:ss"
  265. );
  266. that.tableData.data.push(obj);
  267. }
  268. }
  269. }
  270. },
  271. });
  272. },
  273. // 回放按钮
  274. onClickOption(row) {
  275. this.rowitem = row
  276. this.dialogVisible = true;
  277. },
  278. // 关闭弹窗
  279. onClickDialogClose() {
  280. this.dialogVisible = false;
  281. },
  282. },
  283. };
  284. </script>
  285. <style lang="less" scope>
  286. @titleGray: #9ca5a8;
  287. @rowGray: #606769;
  288. @darkBack: #536268;
  289. .knowledge-2 {
  290. .el-select {
  291. width: 200px;
  292. }
  293. .el-input {
  294. width: 200px;
  295. }
  296. }
  297. </style>