index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item :label="$t('创建人')" prop="createrCode">
  5. <el-input
  6. v-model="queryParams.createrCode"
  7. :placeholder="$t('请输入') + $t('创建人')"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item :label="$t('创建时间')" prop="createdate">
  14. <el-date-picker clearable size="small" style="width: 200px"
  15. v-model="queryParams.createdate"
  16. type="date"
  17. value-format="yyyy-MM-dd"
  18. :placeholder="$t('请选择') + $t('创建时间')">
  19. </el-date-picker>
  20. </el-form-item>
  21. <el-form-item :label="$t('修改人')" prop="updaterCode">
  22. <el-input
  23. v-model="queryParams.updaterCode"
  24. :placeholder="$t('请输入') + $t('修改人')"
  25. clearable
  26. size="small"
  27. @keyup.enter.native="handleQuery"
  28. />
  29. </el-form-item>
  30. <el-form-item :label="$t('修改时间')" prop="updatedate">
  31. <el-date-picker clearable size="small" style="width: 200px"
  32. v-model="queryParams.updatedate"
  33. type="date"
  34. value-format="yyyy-MM-dd"
  35. :placeholder="$t('请选择') + $t('修改时间')">
  36. </el-date-picker>
  37. </el-form-item>
  38. <el-form-item :label="$t('检验单位')" prop="checkUnit">
  39. <el-input
  40. v-model="queryParams.checkUnit"
  41. :placeholder="$t('请输入') + $t('检验单位')"
  42. clearable
  43. size="small"
  44. @keyup.enter.native="handleQuery"
  45. />
  46. </el-form-item>
  47. <el-form-item :label="$t('定期检验日期')" prop="warnDate">
  48. <el-date-picker clearable size="small" style="width: 200px"
  49. v-model="queryParams.warnDate"
  50. type="date"
  51. value-format="yyyy-MM-dd"
  52. :placeholder="$t('请选择') + $t('定期检验日期')">
  53. </el-date-picker>
  54. </el-form-item>
  55. <el-form-item :label="$t('下次年检时间')" prop="nextWarnDate">
  56. <el-date-picker clearable size="small" style="width: 200px"
  57. v-model="queryParams.nextWarnDate"
  58. type="date"
  59. value-format="yyyy-MM-dd"
  60. :placeholder="$t('请选择') + $t('下次年检时间')">
  61. </el-date-picker>
  62. </el-form-item>
  63. <el-form-item :label="$t('报告编号')" prop="reportNo">
  64. <el-input
  65. v-model="queryParams.reportNo"
  66. :placeholder="$t('请输入') + $t('报告编号')"
  67. clearable
  68. size="small"
  69. @keyup.enter.native="handleQuery"
  70. />
  71. </el-form-item>
  72. <el-form-item :label="$t('年度检查日期')" prop="yearWarnDate">
  73. <el-date-picker clearable size="small" style="width: 200px"
  74. v-model="queryParams.yearWarnDate"
  75. type="date"
  76. value-format="yyyy-MM-dd"
  77. :placeholder="$t('请选择') + $t('年度检查日期')">
  78. </el-date-picker>
  79. </el-form-item>
  80. <el-form-item :label="$t('年度检查结论')" prop="checkConclusion">
  81. <el-input
  82. v-model="queryParams.checkConclusion"
  83. :placeholder="$t('请输入') + $t('年度检查结论')"
  84. clearable
  85. size="small"
  86. @keyup.enter.native="handleQuery"
  87. />
  88. </el-form-item>
  89. <el-form-item :label="$t('下次年度检查日期')" prop="yearNextWarnDate">
  90. <el-date-picker clearable size="small" style="width: 200px"
  91. v-model="queryParams.yearNextWarnDate"
  92. type="date"
  93. value-format="yyyy-MM-dd"
  94. :placeholder="$t('请选择') + $t('下次年度检查日期')">
  95. </el-date-picker>
  96. </el-form-item>
  97. <el-form-item :label="$t('年度检查报告编号')" prop="yearReportNo">
  98. <el-input
  99. v-model="queryParams.yearReportNo"
  100. :placeholder="$t('请输入') + $t('年度检查报告编号')"
  101. clearable
  102. size="small"
  103. @keyup.enter.native="handleQuery"
  104. />
  105. </el-form-item>
  106. <el-form-item :label="$t('本次外部检验日期')" prop="outWarnDate">
  107. <el-date-picker clearable size="small" style="width: 200px"
  108. v-model="queryParams.outWarnDate"
  109. type="date"
  110. value-format="yyyy-MM-dd"
  111. :placeholder="$t('请选择') + $t('本次外部检验日期')">
  112. </el-date-picker>
  113. </el-form-item>
  114. <el-form-item :label="$t('下次外部检验日期')" prop="outNextWarnDate">
  115. <el-date-picker clearable size="small" style="width: 200px"
  116. v-model="queryParams.outNextWarnDate"
  117. type="date"
  118. value-format="yyyy-MM-dd"
  119. :placeholder="$t('请选择') + $t('下次外部检验日期')">
  120. </el-date-picker>
  121. </el-form-item>
  122. <el-form-item :label="$t('外部检验结论')" prop="outCheckConclusion">
  123. <el-input
  124. v-model="queryParams.outCheckConclusion"
  125. :placeholder="$t('请输入')+$t('外部检验结论')"
  126. clearable
  127. size="small"
  128. @keyup.enter.native="handleQuery"
  129. />
  130. </el-form-item>
  131. <el-form-item :label="$t('外部检验编号')" prop="outReportNo">
  132. <el-input
  133. v-model="queryParams.outReportNo"
  134. :placeholder="$t('请输入') + $t('外部检验编号')"
  135. clearable
  136. size="small"
  137. @keyup.enter.native="handleQuery"
  138. />
  139. </el-form-item>
  140. <el-form-item :label="$t('设备id')" prop="devId">
  141. <el-input
  142. v-model="queryParams.devId"
  143. :placeholder="$t('请输入') + $t('设备id')"
  144. clearable
  145. size="small"
  146. @keyup.enter.native="handleQuery"
  147. />
  148. </el-form-item>
  149. <el-form-item :label="$t('设备类型')" prop="devType">
  150. <el-select v-model="queryParams.devType" :placeholder="$t('请选择') + $t('设备类型')" clearable size="small">
  151. <el-option :label="$t('请选择')+$t('字典生成')" value="" />
  152. </el-select>
  153. </el-form-item>
  154. <el-form-item :label="$t('安全等级')" prop="safeClass">
  155. <el-input
  156. v-model="queryParams.safeClass"
  157. :placeholder="$t('请输入') + $t('安全等级')"
  158. clearable
  159. size="small"
  160. @keyup.enter.native="handleQuery"
  161. />
  162. </el-form-item>
  163. <el-form-item>
  164. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
  165. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
  166. </el-form-item>
  167. </el-form>
  168. <el-row :gutter="10" class="mb8">
  169. <el-col :span="1.5">
  170. <el-button
  171. type="primary"
  172. icon="el-icon-plus"
  173. size="mini"
  174. @click="handleAdd"
  175. v-hasPermi="['sems:check:add']"
  176. >{{ $t('新增') }}</el-button>
  177. </el-col>
  178. <el-col :span="1.5">
  179. <el-button
  180. type="success"
  181. icon="el-icon-edit"
  182. size="mini"
  183. :disabled="single"
  184. @click="handleUpdate"
  185. v-hasPermi="['sems:check:edit']"
  186. >{{ $t('修改') }}</el-button>
  187. </el-col>
  188. <el-col :span="1.5">
  189. <el-button
  190. type="danger"
  191. icon="el-icon-delete"
  192. size="mini"
  193. :disabled="multiple"
  194. @click="handleDelete"
  195. v-hasPermi="['sems:check:remove']"
  196. >{{ $t('删除') }}</el-button>
  197. </el-col>
  198. <el-col :span="1.5">
  199. <el-button
  200. type="info"
  201. icon="el-icon-upload2"
  202. size="mini"
  203. @click="handleImport"
  204. v-hasPermi="['sems:check:edit']"
  205. >{{ $t('导入') }}</el-button>
  206. </el-col>
  207. <el-col :span="1.5">
  208. <el-button
  209. type="warning"
  210. icon="el-icon-download"
  211. size="mini"
  212. @click="handleExport"
  213. v-hasPermi="['sems:check:export']"
  214. >{{ $t('导出') }}</el-button>
  215. </el-col>
  216. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  217. </el-row>
  218. <el-table v-loading="loading" :data="checkList" @selection-change="handleSelectionChange" :height="clientHeight" border>
  219. <el-table-column type="selection" width="55" align="center" />
  220. <el-table-column :label="$t('唯一标识ID')" align="center" prop="id" :show-overflow-tooltip="true"/>
  221. <el-table-column :label="$t('创建人')" align="center" prop="createrCode" :show-overflow-tooltip="true"/>
  222. <el-table-column :label="$t('创建时间')" align="center" prop="createdate" width="100">
  223. <template slot-scope="scope">
  224. <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
  225. </template>
  226. </el-table-column>
  227. <el-table-column :label="$t('修改人')" align="center" prop="updaterCode" :show-overflow-tooltip="true"/>
  228. <el-table-column :label="$t('修改时间')" align="center" prop="updatedate" width="100">
  229. <template slot-scope="scope">
  230. <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}') }}</span>
  231. </template>
  232. </el-table-column>
  233. <el-table-column :label="$t('检验单位')" align="center" prop="checkUnit" :show-overflow-tooltip="true"/>
  234. <el-table-column :label="$t('定期检验日期')" align="center" prop="warnDate" width="100">
  235. <template slot-scope="scope">
  236. <span>{{ parseTime(scope.row.warnDate, '{y}-{m}-{d}') }}</span>
  237. </template>
  238. </el-table-column>
  239. <el-table-column :label="$t('下次年检时间')" align="center" prop="nextWarnDate" width="100">
  240. <template slot-scope="scope">
  241. <span>{{ parseTime(scope.row.nextWarnDate, '{y}-{m}-{d}') }}</span>
  242. </template>
  243. </el-table-column>
  244. <el-table-column :label="$t('报告编号')" align="center" prop="reportNo" :show-overflow-tooltip="true"/>
  245. <el-table-column :label="$t('年度检查日期')" align="center" prop="yearWarnDate" width="100">
  246. <template slot-scope="scope">
  247. <span>{{ parseTime(scope.row.yearWarnDate, '{y}-{m}-{d}') }}</span>
  248. </template>
  249. </el-table-column>
  250. <el-table-column :label="$t('年度检查结论')" align="center" prop="checkConclusion" :show-overflow-tooltip="true"/>
  251. <el-table-column :label="$t('下次年度检查日期')" align="center" prop="yearNextWarnDate" width="100">
  252. <template slot-scope="scope">
  253. <span>{{ parseTime(scope.row.yearNextWarnDate, '{y}-{m}-{d}') }}</span>
  254. </template>
  255. </el-table-column>
  256. <el-table-column :label="$t('年度检查报告编号')" align="center" prop="yearReportNo" :show-overflow-tooltip="true"/>
  257. <el-table-column :label="$t('本次外部检验日期')" align="center" prop="outWarnDate" width="100">
  258. <template slot-scope="scope">
  259. <span>{{ parseTime(scope.row.outWarnDate, '{y}-{m}-{d}') }}</span>
  260. </template>
  261. </el-table-column>
  262. <el-table-column :label="$t('下次外部检验日期')" align="center" prop="outNextWarnDate" width="100">
  263. <template slot-scope="scope">
  264. <span>{{ parseTime(scope.row.outNextWarnDate, '{y}-{m}-{d}') }}</span>
  265. </template>
  266. </el-table-column>
  267. <el-table-column :label="$t('外部检验结论')" align="center" prop="outCheckConclusion" :show-overflow-tooltip="true"/>
  268. <el-table-column :label="$t('外部检验编号')" align="center" prop="outReportNo" :show-overflow-tooltip="true"/>
  269. <el-table-column :label="$t('设备id')" align="center" prop="devId" :show-overflow-tooltip="true"/>
  270. <el-table-column :label="$t('设备类型')" align="center" prop="devType" :show-overflow-tooltip="true"/>
  271. <el-table-column :label="$t('安全等级')" align="center" prop="safeClass" :show-overflow-tooltip="true"/>
  272. <el-table-column :label="$t('操作')" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
  273. <template slot-scope="scope">
  274. <el-button
  275. size="mini"
  276. type="text"
  277. icon="el-icon-edit"
  278. @click="handleUpdate(scope.row)"
  279. v-hasPermi="['sems:check:edit']"
  280. >{{ $t('修改') }}</el-button>
  281. <el-button
  282. size="mini"
  283. type="text"
  284. icon="el-icon-delete"
  285. @click="handleDelete(scope.row)"
  286. v-hasPermi="['sems:check:remove']"
  287. >{{ $t('删除') }}</el-button>
  288. </template>
  289. </el-table-column>
  290. </el-table>
  291. <pagination
  292. v-show="total>0"
  293. :total="total"
  294. :page.sync="queryParams.pageNum"
  295. :limit.sync="queryParams.pageSize"
  296. @pagination="getList"
  297. />
  298. <!-- 添加或修改特种设备检验记录对话框 -->
  299. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  300. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  301. <el-form-item :label="$t('状态')+' 0 :'+$t('正常')+' ;-1:'+$t('删除')" prop="delFlag">
  302. <el-input v-model="form.delFlag" :placeholder="$t('请输入')+$t('状态')+' 0 :'+$t('正常')+' ;-1:'+$t('删除')" />
  303. </el-form-item>
  304. <el-form-item :label="$t('创建人')" prop="createrCode">
  305. <el-input v-model="form.createrCode" :placeholder="$t('请输入') + $t('创建人')" />
  306. </el-form-item>
  307. <el-form-item :label="$t('创建时间')" prop="createdate">
  308. <el-date-picker clearable size="small" style="width: 200px"
  309. v-model="form.createdate"
  310. type="date"
  311. value-format="yyyy-MM-dd"
  312. :placeholder="$t('请选择') + $t('创建时间')">
  313. </el-date-picker>
  314. </el-form-item>
  315. <el-form-item :label="$t('修改人')" prop="updaterCode">
  316. <el-input v-model="form.updaterCode" :placeholder="$t('请输入') + $t('修改人')" />
  317. </el-form-item>
  318. <el-form-item :label="$t('修改时间')" prop="updatedate">
  319. <el-date-picker clearable size="small" style="width: 200px"
  320. v-model="form.updatedate"
  321. type="date"
  322. value-format="yyyy-MM-dd"
  323. :placeholder="$t('请选择') + $t('修改时间')">
  324. </el-date-picker>
  325. </el-form-item>
  326. <el-form-item :label="$t('检验单位')" prop="checkUnit">
  327. <el-input v-model="form.checkUnit" :placeholder="$t('请输入') + $t('检验单位')" />
  328. </el-form-item>
  329. <el-form-item :label="$t('定期检验日期')" prop="warnDate">
  330. <el-date-picker clearable size="small" style="width: 200px"
  331. v-model="form.warnDate"
  332. type="date"
  333. value-format="yyyy-MM-dd"
  334. :placeholder="$t('请选择') + $t('定期检验日期')">
  335. </el-date-picker>
  336. </el-form-item>
  337. <el-form-item :label="$t('下次年检时间')" prop="nextWarnDate">
  338. <el-date-picker clearable size="small" style="width: 200px"
  339. v-model="form.nextWarnDate"
  340. type="date"
  341. value-format="yyyy-MM-dd"
  342. :placeholder="$t('请选择') + $t('下次年检时间')">
  343. </el-date-picker>
  344. </el-form-item>
  345. <el-form-item :label="$t('报告编号')" prop="reportNo">
  346. <el-input v-model="form.reportNo" :placeholder="$t('请输入') + $t('报告编号')" />
  347. </el-form-item>
  348. <el-form-item :label="$t('年度检查日期')" prop="yearWarnDate">
  349. <el-date-picker clearable size="small" style="width: 200px"
  350. v-model="form.yearWarnDate"
  351. type="date"
  352. value-format="yyyy-MM-dd"
  353. :placeholder="$t('请选择') + $t('年度检查日期')">
  354. </el-date-picker>
  355. </el-form-item>
  356. <el-form-item :label="$t('年度检查结论')" prop="checkConclusion">
  357. <el-input v-model="form.checkConclusion" :placeholder="$t('请输入') + $t('年度检查结论')" />
  358. </el-form-item>
  359. <el-form-item :label="$t('下次年度检查日期')" prop="yearNextWarnDate">
  360. <el-date-picker clearable size="small" style="width: 200px"
  361. v-model="form.yearNextWarnDate"
  362. type="date"
  363. value-format="yyyy-MM-dd"
  364. :placeholder="$t('请选择') + $t('下次年度检查日期')">
  365. </el-date-picker>
  366. </el-form-item>
  367. <el-form-item :label="$t('年度检查报告编号')" prop="yearReportNo">
  368. <el-input v-model="form.yearReportNo" :placeholder="$t('请输入') + $t('年度检查报告编号')" />
  369. </el-form-item>
  370. <el-form-item :label="$t('本次外部检验日期')" prop="outWarnDate">
  371. <el-date-picker clearable size="small" style="width: 200px"
  372. v-model="form.outWarnDate"
  373. type="date"
  374. value-format="yyyy-MM-dd"
  375. :placeholder="$t('请选择') + $t('本次外部检验日期')">
  376. </el-date-picker>
  377. </el-form-item>
  378. <el-form-item :label="$t('下次外部检验日期')" prop="outNextWarnDate">
  379. <el-date-picker clearable size="small" style="width: 200px"
  380. v-model="form.outNextWarnDate"
  381. type="date"
  382. value-format="yyyy-MM-dd"
  383. :placeholder="$t('请选择') + $t('下次外部检验日期')">
  384. </el-date-picker>
  385. </el-form-item>
  386. <el-form-item :label="$t('外部检验结论')" prop="outCheckConclusion">
  387. <el-input v-model="form.outCheckConclusion" :placeholder="$t('请输入') + $t('外部检验结论')" />
  388. </el-form-item>
  389. <el-form-item :label="$t('外部检验编号')" prop="outReportNo">
  390. <el-input v-model="form.outReportNo" :placeholder="$t('请输入') + $t('外部检验编号')" />
  391. </el-form-item>
  392. <el-form-item :label="$t('设备id')" prop="devId">
  393. <el-input v-model="form.devId" :placeholder="$t('请输入') + $t('设备id')" />
  394. </el-form-item>
  395. <el-form-item :label="$t('设备类型')" prop="devType">
  396. <el-select v-model="form.devType" :placeholder="$t('请选择') + $t('设备类型')">
  397. <el-option :label="$t('请选择')+$t('字典生成')" value="" />
  398. </el-select>
  399. </el-form-item>
  400. <el-form-item :label="$t('安全等级')" prop="safeClass">
  401. <el-input v-model="form.safeClass" :placeholder="$t('请输入') + $t('安全等级')" />
  402. </el-form-item>
  403. <el-form-item :label="$t('归属部门')" prop="deptId">
  404. <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" :placeholder="$t('请选择') + $t('归属部门')" />
  405. </el-form-item>
  406. </el-form>
  407. <div slot="footer" class="dialog-footer">
  408. <el-button type="primary" @click="submitForm">{{ $t('确 定') }}</el-button>
  409. <el-button @click="cancel">{{ $t('取 消') }}</el-button>
  410. </div>
  411. </el-dialog>
  412. <!-- 用户导入对话框 -->
  413. <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  414. <el-upload
  415. ref="upload"
  416. :limit="1"
  417. accept=".xlsx, .xls"
  418. :headers="upload.headers"
  419. :action="upload.url + '?updateSupport=' + upload.updateSupport"
  420. :disabled="upload.isUploading"
  421. :on-progress="handleFileUploadProgress"
  422. :on-success="handleFileSuccess"
  423. :auto-upload="false"
  424. drag
  425. >
  426. <i class="el-icon-upload"></i>
  427. <div class="el-upload__text">
  428. {{ $t('将文件拖到此处,或') }}
  429. <em>{{ $t('点击上传') }}</em>
  430. </div>
  431. <div class="el-upload__tip" slot="tip">
  432. <el-checkbox v-model="upload.updateSupport" />{{ $t('是否更新已经存在的用户数据') }}
  433. <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
  434. </div>
  435. <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
  436. </el-upload>
  437. <div slot="footer" class="dialog-footer">
  438. <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>
  439. <el-button @click="upload.open = false">{{ $t('取 消') }}</el-button>
  440. </div>
  441. </el-dialog>
  442. </div>
  443. </template>
  444. <script>
  445. import {addCheck, delCheck, exportCheck, getCheck, importTemplate, listCheck, updateCheck} from "@/api/sems/check";
  446. import {treeselect} from "@/api/system/dept";
  447. import {getToken} from "@/utils/auth";
  448. import Treeselect from "@riophae/vue-treeselect";
  449. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  450. export default {
  451. name: "Check",
  452. components: { Treeselect },
  453. data() {
  454. return {
  455. // 遮罩层
  456. loading: true,
  457. // 选中数组
  458. ids: [],
  459. // 非单个禁用
  460. single: true,
  461. // 非多个禁用
  462. multiple: true,
  463. // 显示搜索条件
  464. showSearch: false,
  465. // 总条数
  466. total: 0,
  467. // 特种设备检验记录表格数据
  468. checkList: [],
  469. // 弹出层标题
  470. title: "",
  471. // 部门树选项
  472. deptOptions: undefined,
  473. clientHeight:300,
  474. // 是否显示弹出层
  475. open: false,
  476. // 用户导入参数
  477. upload: {
  478. // 是否显示弹出层(用户导入)
  479. open: false,
  480. // 弹出层标题(用户导入)
  481. title: "",
  482. // 是否禁用上传
  483. isUploading: false,
  484. // 是否更新已经存在的用户数据
  485. updateSupport: 0,
  486. // 设置上传的请求头部
  487. headers: { Authorization: "Bearer " + getToken() },
  488. // 上传的地址
  489. url: process.env.VUE_APP_BASE_API + "/sems/check/importData"
  490. },
  491. // 查询参数
  492. queryParams: {
  493. pageNum: 1,
  494. pageSize: 20,
  495. createrCode: null,
  496. createdate: null,
  497. updaterCode: null,
  498. updatedate: null,
  499. checkUnit: null,
  500. warnDate: null,
  501. nextWarnDate: null,
  502. reportNo: null,
  503. yearWarnDate: null,
  504. checkConclusion: null,
  505. yearNextWarnDate: null,
  506. yearReportNo: null,
  507. outWarnDate: null,
  508. outNextWarnDate: null,
  509. outCheckConclusion: null,
  510. outReportNo: null,
  511. devId: null,
  512. devType: null,
  513. safeClass: null
  514. },
  515. // 表单参数
  516. form: {},
  517. // 表单校验
  518. rules: {
  519. }
  520. };
  521. },
  522. watch: {
  523. // 根据名称筛选部门树
  524. deptName(val) {
  525. this.$refs.tree.filter(val);
  526. }
  527. },
  528. created() {
  529. //设置表格高度对应屏幕高度
  530. this.$nextTick(() => {
  531. this.clientHeight = document.body.clientHeight -250
  532. })
  533. this.getList();
  534. this.getTreeselect();
  535. },
  536. methods: {
  537. /** 查询特种设备检验记录列表 */
  538. getList() {
  539. this.loading = true;
  540. listCheck(this.queryParams).then(response => {
  541. this.checkList = response.rows;
  542. this.total = response.total;
  543. this.loading = false;
  544. });
  545. },
  546. /** 查询部门下拉树结构 */
  547. getTreeselect() {
  548. treeselect().then(response => {
  549. this.deptOptions = response.data;
  550. });
  551. },
  552. // 取消按钮
  553. cancel() {
  554. this.open = false;
  555. this.reset();
  556. },
  557. // 表单重置
  558. reset() {
  559. this.form = {
  560. id: null,
  561. delFlag: null,
  562. createrCode: null,
  563. createdate: null,
  564. updaterCode: null,
  565. updatedate: null,
  566. checkUnit: null,
  567. warnDate: null,
  568. nextWarnDate: null,
  569. reportNo: null,
  570. yearWarnDate: null,
  571. checkConclusion: null,
  572. yearNextWarnDate: null,
  573. yearReportNo: null,
  574. outWarnDate: null,
  575. outNextWarnDate: null,
  576. outCheckConclusion: null,
  577. outReportNo: null,
  578. devId: null,
  579. devType: null,
  580. safeClass: null
  581. };
  582. this.resetForm("form");
  583. },
  584. /** 搜索按钮操作 */
  585. handleQuery() {
  586. this.queryParams.pageNum = 1;
  587. this.getList();
  588. },
  589. /** 重置按钮操作 */
  590. resetQuery() {
  591. this.resetForm("queryForm");
  592. this.handleQuery();
  593. },
  594. // 多选框选中数据
  595. handleSelectionChange(selection) {
  596. this.ids = selection.map(item => item.id)
  597. this.single = selection.length!==1
  598. this.multiple = !selection.length
  599. },
  600. /** 新增按钮操作 */
  601. handleAdd() {
  602. this.reset();
  603. this.open = true;
  604. this.title = this.$t('添加')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
  605. },
  606. /** 修改按钮操作 */
  607. handleUpdate(row) {
  608. this.reset();
  609. const id = row.id || this.ids
  610. getCheck(id).then(response => {
  611. this.form = response.data;
  612. this.open = true;
  613. this.title = this.$t('修改')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
  614. });
  615. },
  616. /** 提交按钮 */
  617. submitForm() {
  618. this.$refs["form"].validate(valid => {
  619. if (valid) {
  620. if (this.form.id != null) {
  621. updateCheck(this.form).then(response => {
  622. this.msgSuccess(this.$t('修改成功'));
  623. this.open = false;
  624. this.getList();
  625. });
  626. } else {
  627. addCheck(this.form).then(response => {
  628. this.msgSuccess(this.$t('新增成功'));
  629. this.open = false;
  630. this.getList();
  631. });
  632. }
  633. }
  634. });
  635. },
  636. /** 删除按钮操作 */
  637. handleDelete(row) {
  638. const ids = row.id || this.ids;
  639. this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
  640. confirmButtonText: this.$t('确定'),
  641. cancelButtonText: this.$t('取消'),
  642. type: "warning"
  643. }).then(function() {
  644. return delCheck(ids);
  645. }).then(() => {
  646. this.getList();
  647. this.msgSuccess(this.$t('删除成功'));
  648. })
  649. },
  650. /** 导出按钮操作 */
  651. handleExport() {
  652. const queryParams = this.queryParams;
  653. this.$confirm(this.$t('是否确认导出所有特种设备检验记录数据项?'), this.$t('警告'), {
  654. confirmButtonText: this.$t('确定'),
  655. cancelButtonText: this.$t('取消'),
  656. type: "warning"
  657. }).then(function() {
  658. return exportCheck(queryParams);
  659. }).then(response => {
  660. this.download(response.msg);
  661. })
  662. },
  663. /** 导入按钮操作 */
  664. handleImport() {
  665. this.upload.title = this.$t('用户导入');
  666. this.upload.open = true;
  667. },
  668. /** 下载模板操作 */
  669. importTemplate() {
  670. importTemplate().then(response => {
  671. this.download(response.msg);
  672. });
  673. },
  674. // 文件上传中处理
  675. handleFileUploadProgress(event, file, fileList) {
  676. this.upload.isUploading = true;
  677. },
  678. // 文件上传成功处理
  679. handleFileSuccess(response, file, fileList) {
  680. this.upload.open = false;
  681. this.upload.isUploading = false;
  682. this.$refs.upload.clearFiles();
  683. this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
  684. this.getList();
  685. },
  686. // 提交上传文件
  687. submitFileForm() {
  688. this.$refs.upload.submit();
  689. }
  690. }
  691. };
  692. </script>