6b93f0142f4fdabe37c79c4d9f9b93dfe4c5a309.svn-base 54 KB

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