ed7a025d09a42ed86f9a4f619e6a5d124c673cb7.svn-base 50 KB

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