99b98452dbf4ef4a46dbf82b0c29091f5b121b9e.svn-base 54 KB

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