index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. <template>
  2. <div class="app-container scroll-auto">
  3. <el-form
  4. ref="queryForm"
  5. :model="queryParams"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. >
  10. <el-form-item label="线路名称" prop="lineNm">
  11. <el-input
  12. v-model="queryParams.lineNm"
  13. placeholder="请输入"
  14. clearable
  15. ></el-input>
  16. </el-form-item>
  17. <el-form-item label="主分支名称" prop="voltLvlDsc">
  18. <el-input
  19. v-model="queryParams.branchLineNm"
  20. placeholder="请输入"
  21. clearable
  22. ></el-input>
  23. </el-form-item>
  24. <el-form-item label="是否检修超期" prop="isMaintOverdue">
  25. <el-checkbox v-model="queryParams.isMaintOverdue"></el-checkbox>
  26. </el-form-item>
  27. <el-form-item label="是否重复停电" prop="isRepeatPoweroff">
  28. <el-checkbox v-model="queryParams.isRepeatPoweroff"></el-checkbox>
  29. </el-form-item>
  30. <!--el-form-item label="电压等级" prop="voltLvlDsc">
  31. <el-input
  32. v-model="queryParams.voltLvlDsc"
  33. placeholder="请输入"
  34. ></el-input>
  35. </el-form-item>
  36. <el-form-item label="所属县公司" prop="stdCountyOrgNm">
  37. <el-input
  38. v-model="queryParams.stdCountyOrgNm"
  39. placeholder="请输入"
  40. ></el-input>
  41. </el-form-item-->
  42. <el-form-item>
  43. <el-button
  44. type="primary"
  45. icon="el-icon-search"
  46. size="mini"
  47. @click="handleQuery"
  48. >搜索</el-button
  49. >
  50. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  51. >重置</el-button
  52. >
  53. <el-button type="primary" plain size="mini" @click="handleExport"
  54. >导出</el-button
  55. >
  56. </el-form-item>
  57. </el-form>
  58. <el-row :gutter="10" class="mb8">
  59. <right-toolbar
  60. :showSearch.sync="showSearch"
  61. @queryTable="getList"
  62. ></right-toolbar>
  63. </el-row>
  64. <div>
  65. <el-table
  66. v-loading="loading"
  67. :data="dataList"
  68. row-key="id"
  69. :expand-row-keys="expands"
  70. @expand-change="expndChange"
  71. >
  72. <el-table-column type="expand">
  73. <el-table :data="childrenList" v-loading="childrenLoading">
  74. <el-table-column label="序号" width="80" align="center">
  75. <template slot-scope="scope">
  76. {{ scope.$index + 1 }}
  77. </template>
  78. </el-table-column>
  79. <el-table-column
  80. label="主分支名称"
  81. align="center"
  82. prop="lineNm"
  83. width="150"
  84. :show-overflow-tooltip="true"
  85. />
  86. <el-table-column
  87. label="线路类型"
  88. align="center"
  89. prop="lineNatureDsc"
  90. />
  91. <el-table-column
  92. label="电压等级"
  93. prop="voltLvlDsc"
  94. align="center"
  95. :show-overflow-tooltip="true"
  96. >
  97. </el-table-column>
  98. <el-table-column
  99. label="线路长度(km)"
  100. prop="lineTolLen"
  101. align="center"
  102. :show-overflow-tooltip="true"
  103. >
  104. </el-table-column>
  105. <!--el-table-column
  106. label="所属省公司"
  107. prop="stdOrgNm"
  108. align="center"
  109. :show-overflow-tooltip="true"
  110. / -->
  111. <el-table-column
  112. label="所属市公司"
  113. prop="stdCityOrgNm"
  114. align="center"
  115. :show-overflow-tooltip="true"
  116. />
  117. <el-table-column
  118. label="所属县公司"
  119. prop="stdCountyOrgNm"
  120. align="center"
  121. width="150"
  122. :show-overflow-tooltip="true"
  123. >
  124. </el-table-column>
  125. <el-table-column
  126. label="所属供电所"
  127. prop="maintTeamNm"
  128. align="center"
  129. :show-overflow-tooltip="true"
  130. />
  131. <!--el-table-column
  132. label="变电站名称"
  133. prop="subNm"
  134. align="center"
  135. :show-overflow-tooltip="true"
  136. /-->
  137. <el-table-column
  138. label="运维单位名称"
  139. prop="opMaintOrgNm"
  140. align="center"
  141. :show-overflow-tooltip="true"
  142. />
  143. <el-table-column
  144. label="维护班组名称"
  145. prop="maintTeamNm"
  146. align="center"
  147. :show-overflow-tooltip="true"
  148. />
  149. <el-table-column label="状态" prop="runStDsc" align="center" />
  150. <el-table-column
  151. label="停电次数"
  152. prop="poweroffNum"
  153. align="center"
  154. />
  155. <el-table-column
  156. label="上次故障停电时间"
  157. prop="faultPoweroffTm"
  158. align="center"
  159. width="150"
  160. > </el-table-column>
  161. <el-table-column
  162. label="上次计划停电时间"
  163. prop="poweroffTm"
  164. align="center"
  165. width="150"
  166. > </el-table-column>
  167. <el-table-column
  168. label="无故障持续时间"
  169. prop="faultFreeDuration"
  170. align="center"
  171. :show-overflow-tooltip="true"
  172. >
  173. </el-table-column>
  174. <el-table-column
  175. label="奖励金额(¥)"
  176. prop="rewardAmount"
  177. align="center"
  178. :show-overflow-tooltip="true"
  179. >
  180. </el-table-column>
  181. <!--el-table-column
  182. label="数据日期"
  183. prop="dataDt"
  184. align="center"
  185. :show-overflow-tooltip="true"
  186. /-->
  187. </el-table>
  188. </el-table-column>
  189. <el-table-column prop="" label="序号" width="80" align="center" >
  190. <template slot-scope="scope">
  191. {{ scope.row.index }}
  192. </template>
  193. </el-table-column>
  194. <el-table-column
  195. label="线路名称"
  196. align="center"
  197. prop="lineNm"
  198. width="150"
  199. />
  200. <el-table-column
  201. label="电压等级"
  202. prop="voltLvlDsc"
  203. align="center"
  204. width="150"
  205. >
  206. </el-table-column>
  207. <!--el-table-column
  208. label="线路长度(km)"
  209. prop="lineTolLen"
  210. align="center"
  211. :show-overflow-tooltip="true"
  212. >
  213. </el-table-column>
  214. <el-table-column
  215. label="所属省公司"
  216. prop="stdOrgNm"
  217. align="center"
  218. :show-overflow-tooltip="true"
  219. /-->
  220. <el-table-column
  221. label="所属市公司"
  222. prop="stdCityOrgNm"
  223. align="center"
  224. width="150"
  225. />
  226. <el-table-column
  227. label="所属县公司"
  228. prop="stdCountyOrgNm"
  229. align="center"
  230. width="150"
  231. >
  232. </el-table-column>
  233. <el-table-column
  234. label="所属供电所"
  235. prop="orgNm"
  236. align="center"
  237. width="150"
  238. />
  239. <el-table-column
  240. label="变电站名称"
  241. prop="subsNm"
  242. align="center"
  243. width="150"
  244. />
  245. <el-table-column
  246. label="运维单位名称"
  247. prop="opMaintOrgNm"
  248. align="center"
  249. width="150"
  250. />
  251. <el-table-column
  252. label="维护班组名称"
  253. prop="maintTeamNm"
  254. align="center"
  255. width="150"
  256. />
  257. <el-table-column
  258. label="上次故障停电时间"
  259. prop="faultPoweroffTm"
  260. align="center"
  261. width="150"
  262. > </el-table-column>
  263. <el-table-column
  264. label="上次计划停电时间"
  265. prop="poweroffTm"
  266. align="center"
  267. width="150"
  268. > </el-table-column>
  269. <el-table-column label="停电次数" prop="poweroffNum" align="center" />
  270. <el-table-column
  271. label="无故障持续时间"
  272. prop="faultFreeDuration"
  273. align="center"
  274. width="150"
  275. >
  276. </el-table-column>
  277. <el-table-column
  278. label="奖励金额(¥)"
  279. prop="rewardAmount"
  280. align="center"
  281. :show-overflow-tooltip="true"
  282. >
  283. </el-table-column>
  284. <!--el-table-column
  285. label="数据日期"
  286. prop="dataDt"
  287. align="center"
  288. :show-overflow-tooltip="true"
  289. /-->
  290. </el-table>
  291. <pagination
  292. class="page-box"
  293. v-show="total > 0"
  294. :total="total"
  295. :page.sync="queryParams.pageNum"
  296. :limit.sync="queryParams.pageSize"
  297. @pagination="getList"
  298. />
  299. </div>
  300. </div>
  301. </template>
  302. <script>
  303. import { getWorkPlanList } from "@/api/secure/pdm-work-plan";
  304. import {
  305. selectCompleteList,
  306. selectBranchLineCompleteList,
  307. exportComplete
  308. } from "@/api/powerdistribution/maintenance";
  309. export default {
  310. data() {
  311. return {
  312. dataList: [],
  313. childrenList: [],
  314. // 显示搜索条件
  315. showSearch: true,
  316. // 遮罩层
  317. loading: true,
  318. childrenLoading: true,
  319. total: 0,
  320. // 日期范围
  321. dateRange: [],
  322. // 查询参数
  323. queryParams: {
  324. lineNm: "",
  325. branchLineNm: "",
  326. isMaintOverdue: false,
  327. isRepeatPoweroff: false,
  328. pageNum: 1,
  329. pageSize: 10,
  330. },
  331. // 作业类型
  332. workTypeList: [],
  333. // 专业类型
  334. zyTypeList: [],
  335. // 作业单位
  336. workUnitOptions: [],
  337. // 风险类型
  338. exceptionTypeList: [],
  339. expands: [],
  340. };
  341. },
  342. created() {
  343. this.getList();
  344. },
  345. methods: {
  346. async expndChange(row, expandedRows) {
  347. // 先判断该行是否已经展开了
  348. if (!row.expand) {
  349. this.childrenLoading = true;
  350. const data = await selectBranchLineCompleteList({
  351. pageNum: 1,
  352. pageSize: 9999,
  353. blgBigFeederId: row.feederId,
  354. lineNm: this.queryParams.branchLineNm,
  355. });
  356. this.childrenList = data.rows;
  357. this.childrenLoading = false;
  358. row.expand = true;
  359. this.expands = [row.id];
  360. } else {
  361. row.expand = false;
  362. this.expands = [];
  363. }
  364. },
  365. /** 查询列表 */
  366. getList() {
  367. this.loading = true;
  368. selectCompleteList({ ...this.queryParams }).then((response) => {
  369. this.dataList = response.rows.map((ite, i) => {
  370. ite.hasChildren = true;
  371. ite.children = [];
  372. ite.index =
  373. i + (this.queryParams.pageNum - 1) * this.queryParams.pageSize + 1;
  374. return ite;
  375. });
  376. this.total = response.total;
  377. this.loading = false;
  378. });
  379. },
  380. async handleExport() {
  381. const res = await exportComplete({
  382. ...this.queryParams,
  383. });
  384. if (res) {
  385. const elink = document.createElement("a");
  386. elink.download = `线路检修完成情况.xlsx`;
  387. elink.style.display = "none";
  388. const blob = new Blob([res], { type: "application/vnd.ms-excel" });
  389. elink.href = URL.createObjectURL(blob);
  390. document.body.appendChild(elink);
  391. elink.click();
  392. document.body.removeChild(elink);
  393. window.URL.revokeObjectURL(url);
  394. } else {
  395. this.$message.error("导出异常请联系管理员");
  396. }
  397. },
  398. // async load(tree, treeNode, resolve) {
  399. // const data = await selectBranchLineCompleteList({
  400. // pageNum: 1,
  401. // pageSize: 9999,
  402. // blgBigFeederId: tree.feederId,
  403. // });
  404. // resolve(
  405. // data.rows.map((ite, i) => {
  406. // ite.id = Math.random();
  407. // ite.index = i + 1;
  408. // return ite;
  409. // })
  410. // );
  411. // },
  412. /** 搜索按钮操作 */
  413. handleQuery() {
  414. this.getList();
  415. },
  416. /** 重置按钮操作 */
  417. resetQuery() {
  418. this.queryParams.pageNum = 1;
  419. this.resetForm("queryForm");
  420. this.handleQuery();
  421. },
  422. },
  423. };
  424. </script>
  425. <style lang="scss" scoped>
  426. .table {
  427. height: calc(100% - 150px);
  428. }
  429. ::v-deep {
  430. .el-table {
  431. height: 100%;
  432. width: 100%;
  433. .el-table__body-wrapper {
  434. width: 100% !important;
  435. height: calc(100% - 50px) !important; // 表格高度减去表头的高度
  436. overflow-y: scroll;
  437. }
  438. }
  439. }
  440. </style>