235a2ef4d9330a51c71d8ba33066ddbe2f71a3d4.svn-base 42 KB

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