d847d625a2531fac7840f5b90efc4a45604bd4e8.svn-base 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168
  1. <template>
  2. <el-container class="rectify_reform">
  3. <el-main>
  4. <el-card class="box-card" :style="{'height': cardHeight + 'px','overflow-y':'auto'}">
  5. <!--20191226bytanghy-->
  6. <el-row :gutter="20" type="flex" justify="start" class="notice_title">
  7. <el-col :span="16">
  8. <el-form :inline="true" size="mini" class="demo-form-inline" label-width="80px">
  9. <el-form-item label="年度">
  10. <el-select
  11. v-model="addForm.year"
  12. clearable
  13. collapse-tags clearable>
  14. <el-option
  15. v-for="item in yearList"
  16. :key="item.id"
  17. :label="item.year"
  18. :value="item.year">
  19. </el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="督查类型">
  23. <el-select
  24. ref="refSelectNotice"
  25. v-model="addForm.sndType"
  26. clearable
  27. collapse-tags>
  28. <el-option
  29. v-for="item in typesList"
  30. :key="item.code"
  31. :label="item.inspName"
  32. :value="item.inspType">
  33. </el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="通知状态">
  37. <el-select v-model="addForm.state" clearable collapse-tags>
  38. <el-option
  39. v-for="item in reformState"
  40. :key="item.value"
  41. :label="item.label"
  42. :value="item.value">
  43. </el-option>
  44. </el-select>
  45. </el-form-item>
  46. </el-form>
  47. </el-col>
  48. <el-col :span="8" style="text-align: end;">
  49. <el-button type="primary" @click="searchNotice">查询</el-button>
  50. <el-button type="primary" @click="addZgTz">新建整改通知</el-button>
  51. <!--<el-button type="primary" @click="addZgTz">导出Excel</el-button>-->
  52. <!--<el-button type="primary" @click="addZgTz">批量导入</el-button>-->
  53. </el-col>
  54. </el-row>
  55. <div>
  56. <el-table
  57. border
  58. ref="multipleTable"
  59. :height="tableHeight"
  60. :data="tableData"
  61. tooltip-effect="dark"
  62. style="width: 100%"
  63. v-loading="loading"
  64. >
  65. <el-table-column align="center" type="index" label="序号" min-width="25">
  66. <template slot-scope="scope">{{ (pageNum - 1) * pageSize + (scope.$index + 1) }}</template>
  67. </el-table-column>
  68. <el-table-column
  69. header-align="center"
  70. align="center"
  71. min-width="150"
  72. prop="sndTitle"
  73. label="通知标题"
  74. show-overflow-tooltip
  75. ></el-table-column>
  76. <el-table-column
  77. header-align="center"
  78. align="center"
  79. min-width="150"
  80. prop="sndType"
  81. label="督查类型"
  82. show-overflow-tooltip
  83. >
  84. <template slot-scope="scope">
  85. {{typesListFy(scope.row.sndType)}}
  86. </template>
  87. </el-table-column>
  88. <el-table-column
  89. header-align="center"
  90. align="center"
  91. min-width="200"
  92. prop="sndNub"
  93. label="文号"
  94. show-overflow-tooltip
  95. ></el-table-column>
  96. <el-table-column
  97. header-align="center"
  98. align="center"
  99. min-width="100"
  100. prop="rectOrgName"
  101. label="接收地区"
  102. show-overflow-tooltip
  103. ></el-table-column>
  104. <el-table-column
  105. header-align="center"
  106. align="center"
  107. min-width="150"
  108. prop="crrtTm"
  109. label="整改截止时间"
  110. show-overflow-tooltip
  111. >
  112. <template slot-scope="scope">
  113. <span>{{formatDate(scope.row.crrtTm)}}</span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column
  117. header-align="center"
  118. align="center"
  119. min-width="100"
  120. prop="note"
  121. label="备注"
  122. show-overflow-tooltip
  123. ></el-table-column>
  124. <el-table-column
  125. header-align="center"
  126. align="center"
  127. min-width="160"
  128. prop="fileName"
  129. label="附件"
  130. show-overflow-tooltip
  131. >
  132. <template slot-scope="scope">
  133. <el-button type="text" size="mini" @click="previewAttachment(scope.row)">{{scope.row.fileName}}</el-button>
  134. </template>
  135. </el-table-column>
  136. <el-table-column
  137. header-align="center"
  138. align="center"
  139. min-width="100"
  140. prop="pjctSize"
  141. label="工程"
  142. ></el-table-column>
  143. <el-table-column
  144. header-align="center"
  145. align="center"
  146. min-width="100"
  147. prop="pblmSize"
  148. label="问题数"
  149. ></el-table-column>
  150. <el-table-column
  151. header-align="center"
  152. align="center"
  153. min-width="100"
  154. prop="intm"
  155. label="下发时间"
  156. show-overflow-tooltip
  157. >
  158. <template slot-scope="scope">
  159. <span v-if="scope.row.intm">{{formatDate(scope.row.intm)}}</span>
  160. </template>
  161. </el-table-column>
  162. <el-table-column
  163. header-align="center"
  164. align="center"
  165. min-width="200"
  166. prop="state"
  167. label="状态"
  168. show-overflow-tooltip
  169. >
  170. <template slot-scope="scope">
  171. <div class="rowClassP" v-for="item in reformState" :key="item.value">
  172. <span v-if="scope.row.state === item.value" @click="stateClick(scope.row)">{{item.label}}</span>
  173. </div>
  174. </template>
  175. </el-table-column>
  176. <el-table-column
  177. align="center"
  178. min-width="400"
  179. label="操作"
  180. fixed="right">
  181. <template slot-scope="scope">
  182. <span v-if="scope.row.state == '0' || scope.row.state == '2'">
  183. <el-button type="primary" size="mini" @click.stop="editorRow(scope.row)">编辑</el-button>
  184. <el-button type="primary" size="mini" @click.stop="addPblmRow(scope.row)">添加问题</el-button>
  185. <el-button type="primary" size="mini" @click.stop="xiaFaClick(scope.row)">提交</el-button>
  186. <el-button type="danger" size="mini" @click.stop="deleteRow(scope.row)">删除</el-button>
  187. </span>
  188. <span v-if="scope.row.state == '1'|| Number(scope.row.state) > 2" style="margin-left: 10px;">
  189. <el-button type="success" size="mini" @click.stop="lookOver(scope.row)">查看</el-button>
  190. </span>
  191. <span v-if="scope.row.state == '4'" style="margin-left: 10px;">
  192. <el-button type="warning" size="mini" @click.stop="shenHeClick(scope.row)">审核</el-button>
  193. </span>
  194. <!--<span v-if="scope.row.state == '2' || scope.row.state == '5'" style="margin-left: 10px;">-->
  195. <!--<el-button type="danger" size="mini" @click.stop="trunDown(scope.row)">驳回原因</el-button>-->
  196. <!--</span>-->
  197. </template>
  198. </el-table-column>
  199. </el-table>
  200. <el-pagination
  201. style="margin: 10px auto"
  202. background
  203. :pager-count="5"
  204. :current-page="pageNum"
  205. :page-size="pageSize"
  206. :page-sizes="[10, 20, 30, 40, 50, 100]"
  207. layout="sizes, total, prev, pager, next"
  208. :total="total"
  209. @current-change="handleCurrentChange"
  210. @size-change="handleSizeChange"
  211. ></el-pagination>
  212. </div>
  213. </el-card>
  214. <el-dialog :title="titleText + '整改通知'" :visible.sync="dialogFormEditorVisible" :close-on-click-modal="false" width="55%" @close="closeDialog">
  215. <div v-if="titleText =='查看'">
  216. <el-row :gutter="20" type="flex" style="margin-bottom: 10px;">
  217. <el-col :span="20">
  218. <el-form :inline="true" size="mini" class="demo-form-inline">
  219. <el-form-item label="工程">
  220. <el-input v-model="editorForm.name" clearable placeholder="请输入工程" style="width: 8vw"></el-input>
  221. </el-form-item>
  222. <el-form-item label="问题类别">
  223. <el-input v-model="editorForm.inspPblmName" clearable placeholder="请输入问题类别" style="width: 8vw"></el-input>
  224. </el-form-item>
  225. <el-form-item label="严重程度">
  226. <el-select v-model="editorForm.inspPblmCate" clearable placeholder="请选择">
  227. <el-option
  228. v-for="item in supervisionState"
  229. :key="item.value"
  230. :label="item.label"
  231. :value="item.value"
  232. ></el-option>
  233. </el-select>
  234. </el-form-item>
  235. <!--<el-form-item label="是否典型">-->
  236. <!--<el-select v-model="editorForm.state" clearable style="width: 8vw">-->
  237. <!--<el-option label="未下发" value="0"></el-option>-->
  238. <!--<el-option label="已下发" value="1"></el-option>-->
  239. <!--<el-option label="已反馈" value="2"></el-option>-->
  240. <!--</el-select>-->
  241. <!--</el-form-item>-->
  242. </el-form>
  243. </el-col>
  244. <el-col :span="2" :offset=2 style="text-align: end;">
  245. <el-button @click="searchClick" type="success">查询</el-button>
  246. </el-col>
  247. </el-row>
  248. <div>
  249. <el-table
  250. :data="PblmList"
  251. :height="tableHeight1"
  252. style="width: 100%"
  253. border
  254. tooltip-effect="dark">
  255. <el-table-column
  256. prop="name"
  257. label="工程名称"
  258. min-width="100"
  259. show-overflow-tooltip>
  260. </el-table-column>
  261. <el-table-column
  262. prop="inspPblmName"
  263. label="问题类别"
  264. min-width="80"
  265. show-overflow-tooltip>
  266. </el-table-column>
  267. <el-table-column
  268. prop="inspPblmDesc"
  269. label="问题描述"
  270. min-width="150"
  271. show-overflow-tooltip>
  272. </el-table-column>
  273. <el-table-column
  274. label="严重程度"
  275. min-width="100">
  276. <template slot-scope="scope">
  277. <p v-if="scope.row.inspPblmCate == 0"><span class="inspPblmCate" style="background: #27C19F;">一般</span></p>
  278. <p v-if="scope.row.inspPblmCate == 1"><span class="inspPblmCate" style="background: #E6A23C;" >较重</span></p>
  279. <p v-if="scope.row.inspPblmCate == 2"><span class="inspPblmCate" style="background: #F56C6C;" >严重</span></p>
  280. <p v-if="scope.row.inspPblmCate == 3"><span class="inspPblmCate" style="background: #795548;">特别严重</span></p>
  281. </template>
  282. </el-table-column>
  283. <!--<el-table-column-->
  284. <!--label="是否典型"-->
  285. <!--min-width="50"-->
  286. <!--show-overflow-tooltip>-->
  287. <!--<template slot-scope="scope">-->
  288. <!--<p v-if="scope.row.ifCasePblm == 1">是</p>-->
  289. <!--<p v-if="scope.row.ifCasePblm == 0">否</p>-->
  290. <!--</template>-->
  291. <!--</el-table-column>-->
  292. <el-table-column
  293. prop="inspPblmTm"
  294. label="上报时间"
  295. min-width="50"
  296. show-overflow-tooltip>
  297. <template slot-scope="scope">
  298. <span v-if="scope.row.inspPblmTm">{{formatDate(scope.row.inspPblmTm)}}</span>
  299. </template>
  300. </el-table-column>
  301. <el-table-column
  302. label="操作"
  303. min-width="100">
  304. <template slot-scope="scope">
  305. <el-button type="text" size="small" @click="toViewRow(scope.row)">查看</el-button>
  306. </template>
  307. </el-table-column>
  308. </el-table>
  309. </div>
  310. <el-divider></el-divider>
  311. </div>
  312. <el-form :model="tongZhiForm" ref="tongZhiForm" :label-width="formLabelWidth" :rules="TzRules" v-if="dialogFormEditorVisible">
  313. <el-row :gutter="20" type="flex" justify="start">
  314. <el-col :span="12">
  315. <el-form-item label="督查类型" prop="sndType">
  316. <el-select v-model="tongZhiForm.sndType" placeholder="请选择督查类型" :disabled="zgButton" clearable>
  317. <el-option
  318. v-for="item in typesList"
  319. :key="item.code"
  320. :label="item.inspName"
  321. :value="item.inspType">
  322. </el-option>
  323. </el-select>
  324. </el-form-item>
  325. </el-col>
  326. </el-row>
  327. <el-row :gutter="20" type="flex" justify="start">
  328. <el-col :span="12">
  329. <el-form-item label="通知标题" prop="sndTitle">
  330. <el-input v-model="tongZhiForm.sndTitle" placeholder="请输入通知标题" :disabled="zgButton"></el-input>
  331. </el-form-item>
  332. </el-col>
  333. <el-col :span="12">
  334. <el-form-item label="整改截止时间" prop="crrtTm">
  335. <el-date-picker
  336. v-model="tongZhiForm.crrtTm"
  337. type="date"
  338. value-format="yyyy-MM-dd"
  339. placeholder="选择整改截止时间" :disabled="zgButton">
  340. </el-date-picker>
  341. </el-form-item>
  342. </el-col>
  343. </el-row>
  344. <el-row :gutter="20" type="flex" justify="start">
  345. <el-col :span="12">
  346. <el-form-item label="文号" prop="sndNub">
  347. <el-input v-model="tongZhiForm.sndNub" placeholder="请输入文号" :disabled="zgButton"></el-input>
  348. </el-form-item>
  349. </el-col>
  350. <el-col :span="12">
  351. <el-form-item label="所属机构">
  352. <el-input v-model="tongZhiForm.rectOrgName" autocomplete="off" placeholder="请选择机构" readonly :disabled="zgButton"></el-input>
  353. <provTreeList
  354. rootCode
  355. @provTreeSelectChange="provTreeSelectChangeHandler"
  356. v-if="!zgButton"
  357. ></provTreeList>
  358. </el-form-item>
  359. </el-col>
  360. </el-row>
  361. <el-form-item label="备注">
  362. <el-input v-if="!zgButton" type="textarea" rows="6" v-model="tongZhiForm.note" clearable placeholder="请输入备注" :disabled="zgButton"></el-input>
  363. <span v-else>{{tongZhiForm.note}}</span>
  364. </el-form-item>
  365. <el-form-item label="附件">
  366. <div v-show="ifFileList">
  367. <upload
  368. ref="uploadFile"
  369. :url="`/pdcApi/file/insert?bizId=`"
  370. accept=".doc,.docx,.pdf"
  371. @uploadOver="removeNewSupervision"
  372. ></upload>
  373. </div>
  374. <div v-show="!ifFileList">
  375. <el-table
  376. :data="fileListPiCi"
  377. style="width: 100%">
  378. <el-table-column
  379. prop="name"
  380. label="附件名称"
  381. min-width="200">
  382. </el-table-column>
  383. <el-table-column
  384. label="操作"
  385. min-width="150">
  386. <template slot-scope="scope">
  387. <el-button @click="deleteFiles(scope.row)" type="text" size="small" :disabled="zgButton">删除
  388. </el-button>
  389. <el-button type="text" size="small" @click="toPreview(scope.row)">预览</el-button>
  390. </template>
  391. </el-table-column>
  392. </el-table>
  393. </div>
  394. </el-form-item>
  395. </el-form>
  396. <div style="text-align: end;">
  397. <el-button type="primary" @click="tongZhiSave('tongZhiForm')" :disabled="zgButton">保 存</el-button>
  398. </div>
  399. </el-dialog>
  400. </el-main>
  401. <addPblm v-if="addPblmDialog" @closeDialog="closeDialogAddPblm" :RowId="RowId" :supervisionState="supervisionState" :objType="objType" :rectId="rectId"></addPblm>
  402. <!-- 详情弹框 -->
  403. <el-dialog
  404. class="outerDialog custom_dialog"
  405. title="问题详情"
  406. width="60%"
  407. :visible.sync="supervisionDetailsVisible"
  408. v-if="supervisionDetailsVisible"
  409. >
  410. <el-tabs v-model="activeName" type="card">
  411. <el-tab-pane label="问题详情" name="first">
  412. <supervisionDetailsXiangQing :problemId="rowPblId" :objType="objType"></supervisionDetailsXiangQing>
  413. </el-tab-pane>
  414. <el-tab-pane label="整改反馈" name="second">
  415. <supervision-details :problemId="rowPblId" :rowId="RowId" :objType="objType"></supervision-details>
  416. </el-tab-pane>
  417. </el-tabs>
  418. <span slot="footer">
  419. <el-button style="margin-top:5px;" @click="supervisionDetailsVisible = false">返回</el-button>
  420. </span>
  421. </el-dialog>
  422. <!--操作审核-->
  423. <shenHePblm v-if="shenHePblmDialog" @closeDialog="closeDialogShenHePblm" :RowId="RowId" :supervisionState="supervisionState" :objType="objType" :rectId="rectId"></shenHePblm>
  424. <el-dialog
  425. class="outerDialog custom_dialog"
  426. title="驳回"
  427. width="40%"
  428. :visible.sync="bohuiVisible"
  429. >
  430. <el-form size="mini" label-width="150px" :model="boHuiForm">
  431. <el-form-item label="驳回原因(监督处驳回至业务处室):">
  432. <el-input v-model="boHuiForm.note" type="textarea" :rows="5" autocomplete="off" :disabled="bohuiState"></el-input>
  433. </el-form-item>
  434. </el-form>
  435. <span slot="footer">
  436. <el-button style="margin-top:5px;" @click="bohuiVisible = false">取消</el-button>
  437. <!--<el-button type="primary" style="margin-top:5px;" @click="boHuiConfirm('boHuiForm')" v-if="!bohuiState">确定</el-button>-->
  438. </span>
  439. </el-dialog>
  440. <!--通知状态步骤条-->
  441. <el-dialog
  442. title="通知状态"
  443. width="30%"
  444. :visible.sync="stateVisible"
  445. :close-on-click-modal="false">
  446. <steps :stateLogList="stateLogList"></steps>
  447. <span slot="footer">
  448. <el-button style="margin-top:5px;" @click="stateVisible = false">返回</el-button>
  449. </span>
  450. </el-dialog>
  451. </el-container>
  452. </template>
  453. <script>
  454. import request from '@util/gw_ajax_request'
  455. import {dateFormat} from '@util/gw_date';
  456. import {hostUrl} from '@util/global_variable.js'
  457. import addPblm from './addPblm'
  458. import provTreeList from "../../widgets/jigouTreeList.vue";
  459. import shenHePblm from './ywcsPblmShenHe'
  460. import steps from './steps'
  461. export default {
  462. name: "rectificationNotice",
  463. props: [],
  464. data() {
  465. return {
  466. cardHeight: window.innerHeight - 120,
  467. currentPage: 1,
  468. tableData: [],
  469. tableHeight: window.innerHeight - 320,
  470. tableHeight1: window.innerHeight * .35,
  471. loading: false,
  472. pageSize: 20,
  473. pageNum: 1,
  474. dialogFaTitle: "",
  475. formLabelWidth: '120px',
  476. tongZhiForm:{
  477. "sndType": "",//发文类型 '1','小型水库', '2','人饮工程', '3','水毁工程', '4','工程建设', '5','地下水', '7','运行管理', '6','水闸', '9','特定飞检', '10','其他填报', '11','淤地坝', '12','取水口','13','重要水源地', '14','分水及管控', '15','节水管理与评价', '16','用水单位抽查'
  478. "sndTypeNm": "",
  479. "sndTitle": "",//通知标题
  480. "sndNub": "",//通知文号
  481. "rectOrgId": "",//接收单位ID
  482. "rectOrgName": "",//接收单位名称
  483. "crrtTm": "",//整改截止时间
  484. "note": "",//备注
  485. "persId": ""//插入人ID,
  486. },
  487. curStatus: '编辑',
  488. zgButton: false,
  489. zgfkDialog: false,
  490. ifMinistriesAgencies: false,
  491. groupId: '',
  492. addvcd: '',
  493. treeDataLists: [],
  494. defaultExpanded: [],
  495. defaultProps: {
  496. children: 'children',
  497. label: 'pnm'
  498. },
  499. distributeState: false, //false 未下发 true 已下发
  500. dialogFormVisible: false, //上传文件弹窗
  501. dialogFormEditorVisible: false,
  502. gwComFileList: [],
  503. yiShengyiDanList: [],
  504. PblmList:[],
  505. year: '',
  506. province: '',
  507. addForm: {
  508. "state": "",// 状态 0 未下发 1 已下发 2 已反馈 3审核通过 4 驳回 ,
  509. "year": "",//年度
  510. "sndType": "",
  511. "pageSize": 20,
  512. "pageNum": 1
  513. },
  514. total: null,
  515. editorForm: {
  516. "rectId":null,
  517. "name": null,
  518. "inspPblmName": null,//问题类别
  519. "inspPblmCate": null,//严重程度
  520. },
  521. yearList: [],
  522. pidList: [],
  523. sfType: [
  524. {
  525. label: '是',
  526. value: "1"
  527. },
  528. {
  529. label: '否',
  530. value: "2"
  531. }
  532. ],
  533. titleText: '新建',
  534. header: {
  535. 'persId': localStorage.getItem('userid'),
  536. 'accessToken': localStorage.getItem('accessToken')
  537. },
  538. fileList: [],
  539. provincesList: [],
  540. url: null,
  541. yiShengyiDanRowId: null,
  542. yearBatchSelect: false,
  543. ifFileList: true,
  544. fileListPiCi:[],
  545. PcData: null,
  546. typesList: [],
  547. tongZhiRowId: null,
  548. supervisionState: [
  549. {
  550. value: "0",
  551. label: "一般"
  552. },
  553. {
  554. value: "1",
  555. label: "较重"
  556. },
  557. {
  558. value: "2",
  559. label: "严重"
  560. },
  561. {
  562. value: "3",
  563. label: "特别严重"
  564. }
  565. ],
  566. supervision: [
  567. {
  568. value: "1",
  569. label: "是"
  570. },
  571. {
  572. value: "0",
  573. label: "否"
  574. }
  575. ],
  576. addPblmDialog: false,
  577. RowId: null,
  578. rectId: null,
  579. objType: null,
  580. supervisionDetailsVisible: false,
  581. currentProblemId: null,
  582. TzRules:{
  583. sndType:[{ required: true, message: '督查类型不能为空'}],
  584. sndTitle: [{ required: true, message: '通知标题不能为空'}],
  585. crrtTm: [{ required: true, message: '整改截止时间不能为空'}],
  586. sndNub: [{ required: true, message: '文号不能为空'}],
  587. rectOrgId: [{ required: true, message: '接收单位不能为空'}],
  588. },
  589. shenHePblmDialog: false,
  590. bohuiVisible: false,
  591. boHuiForm:{
  592. "note": ""
  593. },
  594. bohuiState: true,
  595. stateVisible: false,
  596. stateLogList: [],
  597. rowPblId: null,
  598. activeName: 'first'
  599. }
  600. },
  601. components: {
  602. upload: resolve => {
  603. require(["@widget/uploadFile.vue"], resolve);
  604. },
  605. addPblm,
  606. //详情页
  607. supervisionDetails: resolve => {
  608. require(["./supervisionDetails_zgwt.vue"], resolve);
  609. },
  610. supervisionDetailsXiangQing: resolve => {
  611. require(["./supervisionDetails.vue"], resolve);
  612. },
  613. provTreeList,
  614. shenHePblm,
  615. steps
  616. },
  617. computed: {
  618. persId() {
  619. return localStorage.getItem("userid")
  620. ? localStorage.getItem("userid")
  621. : "1098101939614724096";
  622. },
  623. orgId() {
  624. return localStorage.getItem('currentOrgId') ? localStorage.getItem("currentOrgId") : "";
  625. },
  626. reformState(){
  627. return this.$store.state.zgState.reformState;
  628. }
  629. },
  630. activated() {
  631. this.$nextTick(() => {
  632. this.getYear();
  633. // this.getByPid();
  634. this.getTypes();
  635. this.getNoticeList();
  636. })
  637. },
  638. methods: {
  639. getYear(){
  640. request.get(`/tac/pblm/rect/getYear/${this.persId}`)
  641. .then(res =>{
  642. if(res.success){
  643. this.yearList = res.data;
  644. }
  645. })
  646. .catch(err =>{
  647. console.log(err);
  648. })
  649. },
  650. getByPid(){
  651. request.get(`/dc/bis/insp/org/getByPid?pid=${localStorage.getItem('currentOrgId')}`)
  652. .then(res =>{
  653. if(res.success){
  654. this.pidList = res.data;
  655. }
  656. })
  657. .catch(err =>{
  658. console.log(err);
  659. })
  660. },
  661. getTypes(){
  662. request.get(`/bis/insp/rel/org/insp/type/getInspTypeByOrgId/${this.orgId}`)
  663. .then(res =>{
  664. if(res.success){
  665. this.typesList = res.data;
  666. }
  667. })
  668. },
  669. //-----------------------------------
  670. formatDate(timestamp) {
  671. return timestamp ? dateFormat(timestamp, 'yyyy-MM-dd') : "";
  672. },
  673. changeYear(item) {
  674. let _self = this;
  675. request.get(`tac/pblm/rect/getBatchByYearPersId/${_self.persId}/${item}`)
  676. .then(res =>{
  677. _self.pcList = res.data;
  678. })
  679. .catch(err =>{
  680. console.log(err);
  681. })
  682. if (item == "" || item == undefined) {
  683. _self.pcList = null;
  684. _self.addForm.batch = "";
  685. }
  686. },
  687. lookOver(row) {
  688. this.titleText = "查看";
  689. this.ifFileList = false;
  690. this.RowId = row.id;
  691. this.objType = row.sndType;
  692. this.getPblmList();
  693. request.get(`/bis/insp/rect/province/${row.id}`)
  694. .then(res => {
  695. if (res.success) {
  696. this.tongZhiForm = res.data;
  697. this.tongZhiForm.crrtTm = dateFormat(res.data.crrtTm, "yyyy-MM-dd");
  698. this.dialogFormEditorVisible = true;
  699. if(res.data.fileName && res.data.filePath && res.data.id){
  700. this.ifFileList = false;
  701. this.fileListPiCi = [];
  702. this.fileListPiCi.push(
  703. Object.assign({},
  704. {'name':res.data.fileName},
  705. {'url':res.data.filePath},
  706. {'id':res.data.id},
  707. {'fileId':res.data.fileId}
  708. )
  709. );
  710. }
  711. this.zgButton = true;
  712. } else {
  713. this.$message.warning(res.message);
  714. }
  715. })
  716. .catch(err => {
  717. console.log(err);
  718. })
  719. },
  720. //驳回原因
  721. trunDown(row){
  722. this.boHuiForm.note = row.logNote;
  723. this.bohuiVisible = true;
  724. },
  725. uploadAfter(data){
  726. let obj = {
  727. "id": this.tongZhiRowId,//数据ID
  728. "fileId": data.id,//附件ID
  729. "fileName": data.fileName,//附件名称
  730. "filePath": data.filePath
  731. }
  732. request.post(`/bis/insp/rect/province/update`,obj)
  733. .then(res =>{
  734. if(res.success){
  735. this.$message.success('上传成功');
  736. this.getNoticeList();
  737. this.dialogFormEditorVisible = false;
  738. }
  739. })
  740. .catch(err =>{
  741. })
  742. },
  743. //获取当前督查对象下问题List
  744. getPblmList() {
  745. this.loading = true;
  746. let obj = {
  747. "rectId": this.RowId,//通知ID 必须
  748. "name": this.editorForm.name,//工程名称 非必传
  749. "inspPblmName": this.editorForm.inspPblmName,
  750. "inspPblmCate": this.editorForm.inspPblmCate
  751. }
  752. request.post(`/bis/insp/rect/pblm/province/findList`, obj)
  753. .then(res => {
  754. if (res.success) {
  755. this.loading = false;
  756. this.$nextTick(() => {
  757. this.PblmList = res.data;
  758. this.provincesList = res.data;
  759. })
  760. } else {
  761. this.$message.warning(res.message);
  762. }
  763. })
  764. .catch(err => {
  765. console.log(err);
  766. })
  767. },
  768. addZgTz() {
  769. this.titleText = '新建';
  770. this.zgButton = false;
  771. this.yearBatchSelect = false;
  772. this.dialogFormEditorVisible = true;
  773. this.fileListPiCi = [];
  774. this.ifFileList = true;
  775. this.tongZhiForm = {
  776. "sndType": "",//发文类型 '1','小型水库', '2','人饮工程', '3','水毁工程', '4','工程建设', '5','地下水', '7','运行管理', '6','水闸', '9','特定飞检', '10','其他填报', '11','淤地坝', '12','取水口','13','重要水源地', '14','分水及管控', '15','节水管理与评价', '16','用水单位抽查'
  777. "sndTitle": "",//通知标题
  778. "sndNub": "",//通知文号
  779. "rectOrgId": "",//接收单位ID
  780. "rectOrgName": "",//接收单位名称
  781. "crrtTm": "",//整改截止时间
  782. "note": "",//备注
  783. "persId": ""//插入人ID
  784. }
  785. this.editorForm = {
  786. "rectId": "",
  787. "name": "",
  788. "inspPblmName": "",//问题类别
  789. "inspPblmCate": "",//严重程度
  790. }
  791. },
  792. editorRow(row) {
  793. this.PcData = row;
  794. this.titleText = '编辑';
  795. this.zgButton = false;
  796. this.fileListPiCi = [];
  797. this.ifFileList = true;
  798. request.get(`/bis/insp/rect/province/${row.id}`)
  799. .then(res => {
  800. if (res.success) {
  801. this.$nextTick(()=>{
  802. this.tongZhiForm = res.data;
  803. if(res.data.crrtTm){
  804. this.tongZhiForm.crrtTm = dateFormat(res.data.crrtTm, "yyyy-MM-dd");
  805. }
  806. this.dialogFormEditorVisible = true;
  807. if(res.data.fileName && res.data.filePath && res.data.id){
  808. this.ifFileList = false;
  809. this.fileListPiCi.push(
  810. Object.assign({},
  811. {'name':res.data.fileName},
  812. {'url':res.data.filePath},
  813. {'id':res.data.id},
  814. {'fileId':res.data.fileId}
  815. )
  816. );
  817. }
  818. })
  819. } else {
  820. this.$message.warning(res.message);
  821. }
  822. })
  823. .catch(err => {
  824. console.log(err);
  825. })
  826. },
  827. //添加问题
  828. addPblmRow(row){
  829. this.RowId = row.id;
  830. this.rectId = row.rectOrgId;
  831. this.objType = row.sndType;
  832. this.addPblmDialog = true;
  833. },
  834. deleteRow(row) {
  835. this.$confirm('确定要删除该数据, 是否继续?', '提示', {
  836. confirmButtonText: '确定',
  837. cancelButtonText: '取消',
  838. type: 'warning'
  839. }).then(() => {
  840. request.post(`/bis/insp/rect/province/delete/${row.id}`)
  841. .then(res => {
  842. if (res.success) {
  843. this.$message.success("删除成功");
  844. this.getNoticeList();
  845. } else {
  846. this.$message.warning(res.message);
  847. }
  848. })
  849. .catch(err => {
  850. console.log(err);
  851. })
  852. }).catch(() => {
  853. this.$message({
  854. type: 'info',
  855. message: '已取消删除'
  856. });
  857. });
  858. },
  859. xiaFaClick(row) {
  860. this.$confirm('提交后通知内容无法更改?', '提示', {
  861. confirmButtonText: '确定',
  862. cancelButtonText: '取消',
  863. type: 'warning'
  864. }).then(() => {
  865. let obj = {
  866. "id": row.id,
  867. "state": "1"
  868. }
  869. request.post(`/bis/insp/rect/province/update`, obj)
  870. .then(res => {
  871. if (res.success) {
  872. this.$message.success("提交成功");
  873. this.getNoticeList();
  874. } else {
  875. this.$message.warning(res.message);
  876. }
  877. })
  878. }).catch(() => {
  879. this.$message({
  880. type: 'info',
  881. message: '已取消下发'
  882. });
  883. });
  884. },
  885. //通知List
  886. getNoticeList() {
  887. let obj = this.addForm;
  888. request.post(`/bis/insp/rect/province/getPageInfo`, obj)
  889. .then(res => {
  890. if (res.success) {
  891. this.tableData = res.data.list;
  892. this.total = res.data.total;
  893. }
  894. })
  895. .catch(err => {
  896. console.log(err);
  897. })
  898. },
  899. // 通知保存
  900. tongZhiSave(formName) {
  901. if (this.titleText == '新建') {
  902. this.$refs[formName].validate((valid) => {
  903. if (valid) {
  904. let obj = this.tongZhiForm;
  905. obj.persId = localStorage.getItem("userid");
  906. request.post('/bis/insp/rect/province/add', obj).then((res) => {
  907. if (res.success) {
  908. this.tongZhiRowId = res.data.id;
  909. this.$nextTick(function () {
  910. if (this.$refs.uploadFile.submitUpload(res.data.id)) {
  911. this.removeNewSupervision();
  912. this.$message.success('新建通知成功');
  913. this.dialogFormEditorVisible = false;
  914. }
  915. })
  916. } else {
  917. this.$message.warning(res.message);
  918. }
  919. })
  920. } else {
  921. console.log('error submit!!');
  922. return false;
  923. }
  924. });
  925. } else if (this.titleText == '编辑') {
  926. this.$refs[formName].validate((valid) => {
  927. if (valid) {
  928. let obj = this.tongZhiForm;
  929. obj.persId = localStorage.getItem("userid");
  930. request.post('/bis/insp/rect/province/update', obj).then((res) => {
  931. if (res.success) {
  932. this.tongZhiRowId = res.data.id;
  933. this.$nextTick(() => {
  934. if (this.$refs.uploadFile.submitUpload(res.data.id)) {
  935. this.removeNewSupervision();
  936. this.$message.success('编辑通知成功');
  937. this.dialogFormEditorVisible = false;
  938. }
  939. })
  940. } else {
  941. this.$message.warning(res.message);
  942. }
  943. })
  944. } else {
  945. console.log('error submit!!');
  946. return false;
  947. }
  948. });
  949. }
  950. },
  951. searchClick() {
  952. this.$nextTick(() => {
  953. this.getPblmList();
  954. })
  955. },
  956. // dialog通知弹窗关闭
  957. closeDialog(){
  958. this.getNoticeList();
  959. },
  960. removeNewSupervision(arg) {
  961. if(arg){
  962. console.log(arg);
  963. let data = arg[arg.length - 1];
  964. this.uploadAfter(data);
  965. return;
  966. }
  967. },
  968. // 文件预览
  969. rowPreview(row){
  970. window.open(`${hostUrl}${row.filePath}`, "_blank");
  971. },
  972. //批次预览
  973. toPreview(row) {
  974. window.open(`${hostUrl}${row.url}`, "_blank");
  975. },
  976. //删除批次附件
  977. deleteFiles(row) {
  978. this.$confirm('确定删除该附件吗?', '提示', {
  979. confirmButtonText: '确定',
  980. cancelButtonText: '取消',
  981. type: 'warning'
  982. }).then(() => {
  983. request.post(`/bis/insp/rect/province/setFileNull/${row.id}`).then(res => {
  984. if (res.success) {
  985. this.fileListPiCi = [];
  986. this.ifFileList = true;
  987. this.$message.success('附件删除成功');
  988. delete this.tongZhiForm.fileId;
  989. delete this.tongZhiForm.fileName;
  990. delete this.tongZhiForm.filePath;
  991. // this.editorRow(this.PcData);
  992. }
  993. })
  994. }).catch(() => {
  995. })
  996. },
  997. //删除下发附件
  998. deleteFile(rowId){
  999. request.post(`/tac/pblm/rect/org/setFileNull/${rowId}`)
  1000. .then(res =>{
  1001. if(res.success){
  1002. this.$message({
  1003. type: 'success',
  1004. message: '删除成功'
  1005. })
  1006. this.getYiShengYiDanList();
  1007. }else{
  1008. this.$message.warning(res.message);
  1009. }
  1010. })
  1011. },
  1012. //文件删除
  1013. rowDelete(row){
  1014. return this.$confirm(`确定移除 ${row.fileName}?`).then(() => {
  1015. if(row.fileId){
  1016. request.post(`/file/${row.fileId}`).then((res) => {
  1017. if (res.success) {
  1018. this.deleteFile(row.id);
  1019. } else {
  1020. this.$alert("删除失败!", '提示', {
  1021. confirmButtonText: '确定',
  1022. type: 'warning'
  1023. })
  1024. }
  1025. })
  1026. }else{
  1027. this.$message.warning('fileId不能为空');
  1028. }
  1029. }).catch(() => {
  1030. this.$message({
  1031. type: 'info',
  1032. message: '已取消删除'
  1033. });
  1034. });
  1035. }
  1036. ,
  1037. //通知查询
  1038. searchNotice(){
  1039. this.getNoticeList();
  1040. },
  1041. select_handler_province() {
  1042. this.$nextTick(() => {
  1043. this.tongZhiForm.rectOrgName = this.$refs.selectProvince.selectedLabel;
  1044. });
  1045. },
  1046. typesListFy(row){
  1047. if(row){
  1048. this.typesList.forEach(ele => {
  1049. if (ele.inspType == row) {
  1050. row = ele.inspName;
  1051. }
  1052. });
  1053. return row;
  1054. }else{
  1055. return '';
  1056. }
  1057. },
  1058. // 通知表格里附件预览
  1059. previewAttachment(row){
  1060. window.open(`${hostUrl}${row.filePath}`, "_blank");
  1061. },
  1062. closeDialogAddPblm(){
  1063. this.addPblmDialog = false;
  1064. this.getNoticeList();
  1065. },
  1066. //问题查看
  1067. toViewRow(row){
  1068. this.RowId = row.id;
  1069. this.rowPblId = row.pblmId;
  1070. this.supervisionDetailsVisible = true;
  1071. },
  1072. provTreeSelectChangeHandler(params) {
  1073. this.tongZhiForm.rectOrgId = params.code;
  1074. this.tongZhiForm.rectOrgName = params.name;
  1075. },
  1076. handleSizeChange(val) {
  1077. this.addForm.pageSize = val;
  1078. this.getNoticeList();
  1079. },
  1080. handleCurrentChange(val) {
  1081. this.addForm.pageNum = val;
  1082. this.getNoticeList();
  1083. },
  1084. shenHeClick(row){
  1085. this.RowId = row.id;
  1086. this.rectId = row.rectOrgId;
  1087. this.objType = row.sndType;
  1088. this.shenHePblmDialog = true;
  1089. },
  1090. closeDialogShenHePblm(){
  1091. this.shenHePblmDialog = false;
  1092. this.getNoticeList();
  1093. },
  1094. stateClick(row){
  1095. let valLength = row.bisInspRectLogProvinces.length;
  1096. if(valLength){
  1097. this.stateVisible = true;
  1098. row.bisInspRectLogProvinces[valLength - 1] = Object.assign(row.bisInspRectLogProvinces[valLength - 1], {color: '#0bbd87',})
  1099. this.stateLogList = row.bisInspRectLogProvinces;
  1100. }else{
  1101. this.$message.warning('暂无通知状态信息');
  1102. }
  1103. },
  1104. select_handler_sndType() {
  1105. this.$nextTick(() => {
  1106. this.tongZhiForm.sndTypeNm = this.$refs.refAddSndType.selectedLabel;
  1107. });
  1108. }
  1109. },
  1110. watch: {
  1111. // 'addForm': {
  1112. // deep: true,
  1113. // handler: function () {
  1114. // this.getNoticeList();
  1115. // }
  1116. // }
  1117. }
  1118. }
  1119. </script>
  1120. <style lang="scss">
  1121. .rectify_reform{
  1122. .inspPblmCate{
  1123. padding: 2px 10px;
  1124. color: #fff;
  1125. -webkit-border-radius: 10px;
  1126. -moz-border-radius: 10px;
  1127. border-radius: 10px;
  1128. }
  1129. .notice_title{
  1130. .el-input--mini .el-input__inner,.el-select-dropdown__list{
  1131. width: 8vw;
  1132. }
  1133. }
  1134. .rowClassP{
  1135. span {
  1136. color: #3399ff;
  1137. margin-left: 15px;
  1138. cursor: pointer;
  1139. }
  1140. /*span:first-child{*/
  1141. /*cursor: default;*/
  1142. /*margin-left: 0;*/
  1143. /*color: rgb(51, 51, 51);*/
  1144. /*}*/
  1145. /*span:last-child{*/
  1146. /*color: red;*/
  1147. /*}*/
  1148. }
  1149. }
  1150. </style>