index.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
  4. <el-form-item label="工程名称" prop="repairName">
  5. <el-input
  6. v-model="queryParams.repairName"
  7. placeholder="请输入工程名称"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item label="报修类型" prop="repairType">
  14. <el-select v-model="queryParams.repairType" placeholder="请选择报修类型" clearable size="small">
  15. <el-option
  16. v-for="dict in dict.type.repair_type"
  17. :key="dict.value"
  18. :label="dict.label"
  19. :value="dict.value"
  20. />
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="损坏原因" prop="causesOfDamage">
  24. <el-select v-model="queryParams.causesOfDamage" placeholder="请选择损坏原因" clearable size="small">
  25. <el-option
  26. v-for="dict in dict.type.causes_of_damage"
  27. :key="dict.value"
  28. :label="dict.label"
  29. :value="dict.value"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="管线压力" prop="pipelinePressure">
  34. <el-select v-model="queryParams.pipelinePressure" placeholder="请选择管线压力" clearable size="small">
  35. <el-option
  36. v-for="dict in dict.type.pipeline_pressure"
  37. :key="dict.value"
  38. :label="dict.label"
  39. :value="dict.value"
  40. />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item>
  44. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  45. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  46. </el-form-item>
  47. </el-form>
  48. <el-row :gutter="10" class="mb8">
  49. <!-- <el-col :span="1.5">-->
  50. <!-- <el-button-->
  51. <!-- type="primary"-->
  52. <!-- plain-->
  53. <!-- icon="el-icon-plus"-->
  54. <!-- size="mini"-->
  55. <!-- @click="handleAdd"-->
  56. <!-- v-hasPermi="['gas:emergencyRepair:add']"-->
  57. <!-- >新增-->
  58. <!-- </el-button>-->
  59. <!-- </el-col>-->
  60. <!-- <el-col :span="1.5">-->
  61. <!-- <el-button-->
  62. <!-- type="success"-->
  63. <!-- plain-->
  64. <!-- icon="el-icon-edit"-->
  65. <!-- size="mini"-->
  66. <!-- :disabled="single"-->
  67. <!-- @click="handleUpdate"-->
  68. <!-- v-hasPermi="['gas:emergencyRepair:edit']"-->
  69. <!-- >修改-->
  70. <!-- </el-button>-->
  71. <!-- </el-col>-->
  72. <el-col :span="1.5">
  73. <el-button
  74. type="danger"
  75. plain
  76. icon="el-icon-delete"
  77. size="mini"
  78. :disabled="multiple"
  79. @click="handleDelete"
  80. v-hasPermi="['gas:emergencyRepair:remove']"
  81. >删除
  82. </el-button>
  83. </el-col>
  84. <el-col :span="1.5">
  85. <el-button
  86. type="warning"
  87. plain
  88. icon="el-icon-download"
  89. size="mini"
  90. :loading="exportLoading"
  91. @click="handleExport"
  92. v-hasPermi="['gas:emergencyRepair:export']"
  93. >导出
  94. </el-button>
  95. </el-col>
  96. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  97. </el-row>
  98. <el-table v-loading="loading" :data="emergencyRepairList" @selection-change="handleSelectionChange">
  99. <el-table-column type="selection" width="55" align="center"/>
  100. <el-table-column label="id" align="center" prop="id" v-if="false"/>
  101. <el-table-column label="报修时间" align="center" prop="repairTime" width="180">
  102. <template slot-scope="scope">
  103. <span>{{ parseTime(scope.row.repairTime, '{y}-{m}-{d}') }}</span>
  104. </template>
  105. </el-table-column>
  106. <!-- <el-table-column label="所属小区" align="center" prop="areaName"/>-->
  107. <!-- <el-table-column label="所属楼宇" align="center" prop="buildingName"/>-->
  108. <!-- <el-table-column label="所属单元" align="center" prop="unitName"/>-->
  109. <el-table-column label="工程名称" align="center" prop="repairName"/>
  110. <el-table-column label="报修人电话" align="center" prop="repairPhone"/>
  111. <el-table-column label="报修类型" align="center" prop="repairType">
  112. <template slot-scope="scope">
  113. <dict-tag :options="dict.type.repair_type" :value="scope.row.repairType"/>
  114. </template>
  115. </el-table-column>
  116. <el-table-column label="报修内容" align="center" prop="repairContent"/>
  117. <el-table-column label="损坏原因" align="center" prop="causesOfDamage">
  118. <template slot-scope="scope">
  119. <dict-tag :options="dict.type.causes_of_damage" :value="scope.row.causesOfDamage"/>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="维修人" align="center" prop="maintenanceName"/>
  123. <el-table-column label="完成时间" align="center" prop="maintenanceTime" width="180">
  124. <template slot-scope="scope">
  125. <span>{{ parseTime(scope.row.maintenanceTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
  126. </template>
  127. </el-table-column>
  128. <el-table-column label="审核状态" align="center" prop="processStatus">
  129. <template slot-scope="scope">
  130. <span v-if="scope.row.processList.length == 0">未审核</span>
  131. <span v-else-if="scope.row.processList[0].processStatus == '0'">
  132. <!-- <span v-if="scope.row.processList[0].userPost == 'admin'">管理员</span>-->
  133. <span v-if="scope.row.processList[0].userPost == 'deputyDirector'">副处长</span>
  134. <span v-if="scope.row.processList[0].userPost == 'director'">处长</span>
  135. 通过</span>
  136. <span v-else>
  137. <!-- <span v-if="scope.row.processList[0].userPost == 'admin'">管理员</span>-->
  138. <span v-if="scope.row.processList[0].userPost == 'deputyDirector'">副处长</span>
  139. <span v-if="scope.row.processList[0].userPost == 'director'">处长</span>
  140. 拒绝</span>
  141. </template>
  142. </el-table-column>
  143. <el-table-column label="照片" align="center">
  144. <template slot-scope="scope">
  145. <el-image
  146. style="width: 50px; height: 50px"
  147. :src="scope.row.photoList!=null?scope.row.photoList[0]:''"
  148. :preview-src-list="[scope.row.photoList!=null?scope.row.photoList[0]:'']">
  149. </el-image>
  150. </template>
  151. </el-table-column>
  152. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  153. <template slot-scope="scope">
  154. <el-button
  155. size="mini"
  156. type="text"
  157. icon="el-icon-view"
  158. @click="handleUpdate(scope.row)"
  159. v-hasPermi="['gas:emergencyRepair:edit']"
  160. >查看
  161. </el-button>
  162. <el-button
  163. size="mini"
  164. type="text"
  165. icon="el-icon-time"
  166. @click="openshShow(scope.row,'admin',false)"
  167. v-hasPermi="['gas:emergencyRepair:remove']"
  168. >审核记录
  169. </el-button>
  170. <!-- <el-button-->
  171. <!-- size="mini"-->
  172. <!-- type="text"-->
  173. <!-- icon="el-icon-edit"-->
  174. <!-- v-show="postName == 'admin' && (scope.row.processList.length == 0-->
  175. <!-- || scope.row.processList.filter(item => item.userPost == 'admin').length == 0-->
  176. <!-- || scope.row.processList.filter(item => item.userPost == 'admin' && item.processStatus == '0').length == 0)"-->
  177. <!-- @click="openshShow(scope.row,'admin',true)"-->
  178. <!-- v-hasPermi="['gas:emergencyRepair:remove']"-->
  179. <!-- >工程审核-->
  180. <!-- </el-button>-->
  181. <el-button
  182. size="mini"
  183. type="text"
  184. icon="el-icon-edit"
  185. v-show="postName == 'deputyDirector'
  186. && (scope.row.processList.length == 0
  187. || scope.row.processList.filter(item => item.userPost == 'deputyDirector').length == 0
  188. || scope.row.processList.filter(item => item.userPost == 'deputyDirector' && item.processStatus == '0').length == 0)"
  189. @click="openshShow(scope.row,'deputyDirector',true)"
  190. v-hasPermi="['gas:emergencyRepair:remove']"
  191. >工程审核
  192. </el-button>
  193. <el-button
  194. size="mini"
  195. type="text"
  196. icon="el-icon-edit"
  197. v-show="postName == 'director'
  198. && scope.row.processList.filter(item => item.userPost == 'deputyDirector' && item.processStatus == '0').length > 0
  199. && (scope.row.processList.length == 0
  200. || scope.row.processList.filter(item => item.userPost == 'director').length == 0
  201. || scope.row.processList.filter(item => item.userPost == 'director' && item.processStatus == '0').length == 0)"
  202. @click="openshShow(scope.row,'director',true)"
  203. v-hasPermi="['gas:emergencyRepair:remove']"
  204. >工程审核
  205. </el-button>
  206. <el-button
  207. size="mini"
  208. type="text"
  209. icon="el-icon-delete"
  210. @click="handleDelete(scope.row)"
  211. v-hasPermi="['gas:emergencyRepair:remove']"
  212. >删除
  213. </el-button>
  214. </template>
  215. </el-table-column>
  216. </el-table>
  217. <pagination
  218. v-show="total>0"
  219. :total="total"
  220. :page.sync="queryParams.pageNum"
  221. :limit.sync="queryParams.pageSize"
  222. @pagination="getList"
  223. />
  224. <el-dialog :title="showShen ? '工程审核':'审核记录'" :visible.sync="openSH" width="800px" append-to-body>
  225. <el-table
  226. :data="formSH.processList"
  227. style="width: 100%"
  228. border
  229. :header-cell-style="{'text-align':'center'}"
  230. height="500">
  231. <el-table-column label="历史审核记录">
  232. <el-table-column
  233. prop="createBy"
  234. label="审核人"
  235. width="80">
  236. </el-table-column>
  237. <el-table-column
  238. prop="userPost"
  239. label="岗位"
  240. width="65">
  241. <template slot-scope="scope">
  242. <!-- <span v-if="scope.row.userPost == 'admin'">管理员</span>-->
  243. <span v-if="scope.row.userPost == 'deputyDirector'">副处长</span>
  244. <span v-if="scope.row.userPost == 'director'">处长</span>
  245. </template>
  246. </el-table-column>
  247. <el-table-column
  248. prop="processStatus"
  249. label="审核状态"
  250. width="75">
  251. <template slot-scope="scope">
  252. {{ scope.row.processStatus == '0' ? '通过' : '拒绝' }}
  253. </template>
  254. </el-table-column>
  255. <el-table-column
  256. prop="createTime"
  257. label="审核时间"
  258. width="155">
  259. </el-table-column>
  260. <el-table-column
  261. prop="processComments"
  262. label="审核意见"
  263. width="384">
  264. </el-table-column>
  265. </el-table-column>
  266. </el-table>
  267. <div v-show="showShen">
  268. <el-divider></el-divider>
  269. <el-form ref="formSH" :model="formSH" :rules="rulesSH" label-width="100px">
  270. <el-form-item label="审核状态" prop="processStatus">
  271. <el-select v-model="formSH.processStatus" placeholder="请选择审核状态" :style="{width: '100%'}">
  272. <el-option
  273. v-for="dict in dict.type.process_status"
  274. :key="dict.value"
  275. :label="dict.label"
  276. :value="dict.value"
  277. ></el-option>
  278. </el-select>
  279. </el-form-item>
  280. <el-form-item label="审核意见" prop="remarks">
  281. <el-input v-model="formSH.processComments" type="textarea" placeholder="请输入审核意见" maxlength="255"/>
  282. </el-form-item>
  283. </el-form>
  284. </div>
  285. <div slot="footer" class="dialog-footer">
  286. <el-button :loading="buttonLoading" type="primary" v-show="showShen" @click="submitFormSH">确 定</el-button>
  287. <el-button @click="openSH = false">关 闭</el-button>
  288. </div>
  289. </el-dialog>
  290. <!-- 添加或修改抢险维修对话框 -->
  291. <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
  292. <el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="disabled">
  293. <el-row :gutter="10">
  294. <el-col :span="12">
  295. <el-form-item label="工程名称" prop="enginName">
  296. <el-input v-model="form.enginName" placeholder="请输入工程名称"/>
  297. </el-form-item>
  298. </el-col>
  299. <el-col :span="12">
  300. <el-form-item label="现场领导" prop="onSiteLeadership">
  301. <el-input v-model="form.onSiteLeadership" placeholder="请输入现场领导"/>
  302. </el-form-item>
  303. </el-col>
  304. <el-col :span="12">
  305. <el-form-item label="报修时间" prop="repairTime">
  306. <el-date-picker clearable size="small"
  307. v-model="form.repairTime"
  308. type="datetime"
  309. value-format="yyyy-MM-dd HH:mm:ss"
  310. placeholder="选择报修时间"
  311. :style="{width: '100%'}">
  312. </el-date-picker>
  313. </el-form-item>
  314. </el-col>
  315. <el-col :span="12">
  316. <el-form-item label="到达时间" prop="arrivalTime">
  317. <el-date-picker clearable size="small"
  318. v-model="form.arrivalTime"
  319. type="datetime"
  320. value-format="yyyy-MM-dd HH:mm:ss"
  321. placeholder="选择到达时间"
  322. :style="{width: '100%'}">
  323. </el-date-picker>
  324. </el-form-item>
  325. </el-col>
  326. <el-col :span="12">
  327. <el-form-item label="施工时间" prop="constructionTime">
  328. <el-date-picker clearable size="small"
  329. v-model="form.constructionTime"
  330. type="datetime"
  331. value-format="yyyy-MM-dd HH:mm:ss"
  332. placeholder="选择施工时间"
  333. :style="{width: '100%'}">
  334. </el-date-picker>
  335. </el-form-item>
  336. </el-col>
  337. <el-col :span="12">
  338. <el-form-item label="施工管径" prop="constructionPipeDiameter">
  339. <el-input v-model="form.constructionPipeDiameter" placeholder="请输入施工管径"/>
  340. </el-form-item>
  341. </el-col>
  342. </el-row>
  343. <el-row :gutter="10">
  344. <el-col :span="12">
  345. <el-form-item label="工程名称" prop="repairName">
  346. <el-input v-model="form.repairName" placeholder="请输入工程名称"/>
  347. </el-form-item>
  348. </el-col>
  349. <el-col :span="12">
  350. <el-form-item label="报修人电话" prop="repairPhone">
  351. <el-input v-model="form.repairPhone" placeholder="请输入报修人电话"/>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="12">
  355. <el-form-item label="报修类型" prop="repairType">
  356. <el-select v-model="form.repairType" placeholder="请选择报修类型" :style="{width: '100%'}">
  357. <el-option
  358. v-for="dict in dict.type.repair_type"
  359. :key="dict.value"
  360. :label="dict.label"
  361. :value="dict.value"
  362. ></el-option>
  363. </el-select>
  364. </el-form-item>
  365. </el-col>
  366. <el-col :span="12">
  367. <el-form-item label="报修内容" prop="repairContent">
  368. <el-input v-model="form.repairContent" placeholder="请输入报修内容" maxlength="255"/>
  369. </el-form-item>
  370. </el-col>
  371. </el-row>
  372. <el-row :gutter="10">
  373. <el-col :span="12">
  374. <el-form-item label="损坏原因" prop="causesOfDamage">
  375. <el-select v-model="form.causesOfDamage" placeholder="请选择损坏原因" :style="{width: '100%'}">
  376. <el-option
  377. v-for="dict in dict.type.causes_of_damage"
  378. :key="dict.value"
  379. :label="dict.label"
  380. :value="dict.value"
  381. ></el-option>
  382. </el-select>
  383. </el-form-item>
  384. </el-col>
  385. <el-col :span="12">
  386. <el-form-item label="管线压力" prop="pipelinePressure">
  387. <el-select v-model="form.pipelinePressure" placeholder="请选择管线压力" :style="{width: '100%'}">
  388. <el-option
  389. v-for="dict in dict.type.pipeline_pressure"
  390. :key="dict.value"
  391. :label="dict.label"
  392. :value="dict.value"
  393. ></el-option>
  394. </el-select>
  395. </el-form-item>
  396. </el-col>
  397. </el-row>
  398. <el-row :gutter="10">
  399. <el-col :span="12">
  400. <el-form-item label="停气方式" prop="stopGasMethod">
  401. <el-input v-model="form.stopGasMethod" placeholder="请输入停气方式" maxlength="255"/>
  402. </el-form-item>
  403. </el-col>
  404. <el-col :span="12">
  405. <el-form-item label="使用材料" prop="usingMaterials">
  406. <el-input v-model="form.usingMaterials" placeholder="请输入使用材料" maxlength="255"/>
  407. </el-form-item>
  408. </el-col>
  409. </el-row>
  410. <el-row :gutter="10">
  411. <el-col :span="12">
  412. <el-form-item label="维修人" prop="maintenanceName">
  413. <el-input v-model="form.maintenanceName" placeholder="请输入维修人"/>
  414. </el-form-item>
  415. </el-col>
  416. <el-col :span="12">
  417. <el-form-item label="完成时间" prop="maintenanceTime">
  418. <el-date-picker clearable size="small"
  419. :style="{width: '100%'}"
  420. v-model="form.maintenanceTime"
  421. type="datetime"
  422. value-format="yyyy-MM-dd HH:mm:ss"
  423. placeholder="选择完成时间">
  424. </el-date-picker>
  425. </el-form-item>
  426. </el-col>
  427. </el-row>
  428. <el-form-item label="照片" prop="photoList">
  429. <imageUpload v-model="form.photoList" :disabled="disabled"/>
  430. </el-form-item>
  431. <el-row :gutter="10">
  432. <el-col :span="24">
  433. <el-form-item label="备注" prop="remarks">
  434. <el-input v-model="form.remarks" type="textarea" placeholder="请输入备注" maxlength="255"/>
  435. </el-form-item>
  436. </el-col>
  437. </el-row>
  438. </el-form>
  439. <div slot="footer" class="dialog-footer">
  440. <el-button :loading="buttonLoading" type="primary" v-if="!disabled" @click="submitForm">确 定</el-button>
  441. <el-button @click="cancel">{{ disabled ? "关 闭" : "取 消" }}</el-button>
  442. </div>
  443. </el-dialog>
  444. </div>
  445. </template>
  446. <script>
  447. import {
  448. listEmergencyRepair,
  449. getEmergencyRepair,
  450. delEmergencyRepair,
  451. addEmergencyRepair,
  452. updateEmergencyRepair
  453. } from "@/api/gas/emergencyRepair";
  454. import {getBuildingList} from "@/api/gas/building";
  455. import {getAreaList} from "@/api/gas/area";
  456. import {getUnitList} from "@/api/gas/unit";
  457. import store from "@/store";
  458. import {addEmergencyRepairProcess} from "@/api/gas/emergencyRepairProcess";
  459. export default {
  460. name: "EmergencyRepair",
  461. dicts: ['repair_type', 'causes_of_damage', 'process_status', 'pipeline_pressure'],
  462. data() {
  463. return {
  464. buildingList: [], // 楼宇集合
  465. areaList: [], // 小区集合
  466. unitList: [], // 单元集合
  467. // 按钮loading
  468. buttonLoading: false,
  469. disabled: false,
  470. openSH: false,
  471. // 遮罩层
  472. loading: true,
  473. showShen: true,
  474. // 导出遮罩层
  475. exportLoading: false,
  476. // 选中数组
  477. ids: [],
  478. // 非单个禁用
  479. single: true,
  480. // 非多个禁用
  481. multiple: true,
  482. // 显示搜索条件
  483. showSearch: true,
  484. // 总条数
  485. total: 0,
  486. // 抢险维修表格数据
  487. emergencyRepairList: [],
  488. // 弹出层标题
  489. title: "",
  490. postName: "",
  491. // 是否显示弹出层
  492. open: false,
  493. // 查询参数
  494. queryParams: {
  495. pageNum: 1,
  496. pageSize: 10,
  497. repairName: undefined,
  498. repairType: undefined,
  499. causesOfDamage: undefined,
  500. pipelinePressure: undefined,
  501. },
  502. // 表单参数
  503. form: {},
  504. formSH: {},
  505. rulesSH: {
  506. processStatus: [
  507. {required: true, message: "审核状态不能为空", trigger: "blur"}
  508. ],
  509. },
  510. // 表单校验
  511. rules: {
  512. // areaId: [
  513. // {required: true, message: "所属小区不能为空", trigger: "blur"}
  514. // ],
  515. // buildingId: [
  516. // {required: true, message: "所属楼宇不能为空", trigger: "blur"}
  517. // ],
  518. repairTime: [
  519. {required: true, message: "报修时间不能为空", trigger: "blur"}
  520. ],
  521. // unitId: [
  522. // {required: true, message: "单元id不能为空", trigger: "blur"}
  523. // ],
  524. repairName: [
  525. {required: true, message: "工程名称不能为空", trigger: "blur"}
  526. ],
  527. repairPhone: [
  528. {required: true, message: "报修人电话不能为空", trigger: "blur"},
  529. {
  530. pattern: /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/,
  531. message: '请输入正确的手机号',
  532. trigger: 'blur'
  533. }
  534. ],
  535. repairType: [
  536. {required: true, message: "报修类型不能为空", trigger: "change"}
  537. ],
  538. repairContent: [
  539. {required: true, message: "报修内容不能为空", trigger: "blur"}
  540. ],
  541. causesOfDamage: [
  542. {required: true, message: "损坏原因不能为空", trigger: "change"}
  543. ],
  544. pipelinePressure: [
  545. {required: true, message: "管线压力不能为空", trigger: "change"}
  546. ],
  547. stopGasMethod: [
  548. {required: true, message: "停气方式不能为空", trigger: "blur"}
  549. ],
  550. usingMaterials: [
  551. {required: true, message: "使用材料不能为空", trigger: "blur"}
  552. ],
  553. maintenanceName: [
  554. {required: true, message: "维修人不能为空", trigger: "blur"}
  555. ],
  556. maintenanceTime: [
  557. {required: true, message: "完成时间不能为空", trigger: "blur"}
  558. ],
  559. }
  560. };
  561. },
  562. created() {
  563. // this.getAreaList();
  564. this.postName = store.getters.postName
  565. this.getList();
  566. },
  567. methods: {
  568. submitFormSH() {
  569. this.$refs["formSH"].validate(valid => {
  570. if (valid) {
  571. this.buttonLoading = true;
  572. if (this.formSH.emrId != null) {
  573. addEmergencyRepairProcess(this.formSH).then(response => {
  574. this.$modal.msgSuccess("审核成功");
  575. this.openSH = false;
  576. this.getList();
  577. }).finally(() => {
  578. this.buttonLoading = false;
  579. });
  580. }
  581. }
  582. })
  583. },
  584. openshShow(data, userPost, showShen) {
  585. this.showShen = showShen
  586. this.formSH = {
  587. userPost: userPost,
  588. emrId: data.id,
  589. processList: data.processList,
  590. processStatus: undefined,
  591. processComments: undefined,
  592. }
  593. this.openSH = true
  594. },
  595. // 小区下拉
  596. getAreaList() {
  597. getAreaList().then(req => this.areaList = req.data)
  598. },
  599. // 楼宇下拉
  600. getBuildingList() {
  601. this.form.buildingId = undefined
  602. this.queryParams.buildingId = undefined
  603. let areaId = this.form.areaId || this.queryParams.areaId
  604. getBuildingList(areaId).then(req => this.buildingList = req.data)
  605. },
  606. getUnitList() {
  607. this.form.unitId = undefined
  608. this.queryParams.unitId = undefined
  609. let buildingId = this.form.buildingId || this.queryParams.buildingId
  610. getUnitList(buildingId).then(req => this.unitList = req.data)
  611. },
  612. /** 查询抢险维修列表 */
  613. getList() {
  614. this.loading = true;
  615. listEmergencyRepair(this.queryParams).then(response => {
  616. this.emergencyRepairList = response.rows;
  617. this.total = response.total;
  618. this.loading = false;
  619. });
  620. },
  621. // 取消按钮
  622. cancel() {
  623. this.open = false;
  624. this.reset();
  625. },
  626. // 表单重置
  627. reset() {
  628. this.form = {
  629. id: undefined,
  630. repairTime: undefined,
  631. unitId: undefined,
  632. repairName: undefined,
  633. repairPhone: undefined,
  634. repairType: undefined,
  635. repairContent: undefined,
  636. causesOfDamage: undefined,
  637. pipelinePressure: undefined,
  638. stopGasMethod: undefined,
  639. usingMaterials: undefined,
  640. maintenanceName: undefined,
  641. maintenanceTime: undefined,
  642. remarks: undefined,
  643. delFlag: undefined,
  644. createBy: undefined,
  645. createTime: undefined,
  646. updateBy: undefined,
  647. buildingId: undefined,
  648. areaId: undefined,
  649. photoList: "",
  650. updateTime: undefined
  651. };
  652. this.resetForm("form");
  653. },
  654. /** 搜索按钮操作 */
  655. handleQuery() {
  656. this.queryParams.pageNum = 1;
  657. this.getList();
  658. },
  659. /** 重置按钮操作 */
  660. resetQuery() {
  661. this.resetForm("queryForm");
  662. this.handleQuery();
  663. },
  664. // 多选框选中数据
  665. handleSelectionChange(selection) {
  666. this.ids = selection.map(item => item.id)
  667. this.single = selection.length !== 1
  668. this.multiple = !selection.length
  669. },
  670. /** 新增按钮操作 */
  671. handleAdd() {
  672. this.reset();
  673. this.open = true;
  674. this.disabled = false;
  675. this.title = "添加抢险维修";
  676. },
  677. /** 修改按钮操作 */
  678. handleUpdate(row) {
  679. this.loading = true;
  680. this.disabled = true;
  681. this.reset();
  682. const id = row.id || this.ids
  683. getEmergencyRepair(id).then(response => {
  684. this.loading = false;
  685. this.form = response.data;
  686. let buildingId = this.form.buildingId
  687. let unitId = this.form.unitId
  688. this.getBuildingList(this.form.areaId)
  689. this.form.buildingId = buildingId
  690. this.getUnitList(this.form.buildingId)
  691. this.form.unitId = unitId
  692. this.open = true;
  693. this.title = "查看抢险维修";
  694. });
  695. },
  696. /** 提交按钮 */
  697. submitForm() {
  698. this.$refs["form"].validate(valid => {
  699. if (valid) {
  700. this.buttonLoading = true;
  701. if (this.form.id != null) {
  702. if (typeof this.form.photoList === 'string') {
  703. this.form.photoList = this.form.photoList.split(',')
  704. }
  705. updateEmergencyRepair(this.form).then(response => {
  706. this.$modal.msgSuccess("修改成功");
  707. this.open = false;
  708. this.getList();
  709. }).finally(() => {
  710. this.buttonLoading = false;
  711. });
  712. } else {
  713. this.form.photoList = this.form.photoList.split(',')
  714. addEmergencyRepair(this.form).then(response => {
  715. this.$modal.msgSuccess("新增成功");
  716. this.open = false;
  717. this.getList();
  718. }).finally(() => {
  719. this.buttonLoading = false;
  720. });
  721. }
  722. }
  723. });
  724. },
  725. /** 删除按钮操作 */
  726. handleDelete(row) {
  727. const ids = row.id || this.ids;
  728. this.$modal.confirm('是否确认删除抢险维修编号为"' + ids + '"的数据项?').then(() => {
  729. this.loading = true;
  730. return delEmergencyRepair(ids);
  731. }).then(() => {
  732. this.loading = false;
  733. this.getList();
  734. this.$modal.msgSuccess("删除成功");
  735. }).finally(() => {
  736. this.loading = false;
  737. });
  738. },
  739. /** 导出按钮操作 */
  740. handleExport() {
  741. this.$download.excel('/gas/emergencyRepair/export', this.queryParams);
  742. }
  743. }
  744. };
  745. </script>