c5d6aadf5467a1d9dece5d2d50a1a2b9305fac33.svn-base 50 KB

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