928b2ec4afd65b0128f423ffdfa4c5482f738cf8.svn-base 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. <template>
  2. <el-container class="monthReport">
  3. <el-dialog title="监督进度月报" width="70%" :visible.sync="monthDialogVisible" modal-append-to-body append-to-body :before-close="closeDialog">
  4. <el-card class="box-card">
  5. <h2 class="title_monthReport">山东省水利厅业务性监督检查开展情况表</h2>
  6. <el-form :inline="true" size="small" class="demo-form-inline" label-width="120px">
  7. <el-form-item label="年月范围">
  8. <el-date-picker
  9. v-model="dateRange"
  10. type="daterange"
  11. format="yyyy-MM"
  12. clearable
  13. range-separator="至"
  14. start-placeholder="开始日期"
  15. end-placeholder="结束日期">
  16. </el-date-picker>
  17. </el-form-item>
  18. <!-- <el-form-item label="牵头处室" size="mini">-->
  19. <!-- <el-input v-model="searchForm.leadDep" placeholder="牵头处室" clearable></el-input>-->
  20. <!-- </el-form-item>-->
  21. <!-- <el-form-item label="检查计划事项">-->
  22. <!-- <el-input v-model="searchForm.chkName" placeholder="类别" clearable></el-input>-->
  23. <!-- </el-form-item>-->
  24. <el-form-item label="检查形式">
  25. <el-select v-model="searchForm.chkForm" placeholder="请选择" clearable>
  26. <el-option label="暗访" value="1"></el-option>
  27. <el-option label="明察" value="2"></el-option>
  28. <el-option label="书面" value="3"></el-option>
  29. <el-option label="四不两直" value="4"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item>
  33. <el-button type="primary" size="mini" @click="searchBtn">查询</el-button>
  34. <el-button type="primary" size="mini" @click="addBtn">添加</el-button>
  35. </el-form-item>
  36. <el-form-item style="float:right;">
  37. <el-button type="primary" size="mini" @click="exportExcel">导出</el-button>
  38. </el-form-item>
  39. </el-form>
  40. <div>
  41. <el-button type="primary" size="mini" @click="closeDialog" style="float:left;">返回年度检查计划</el-button>
  42. <el-table
  43. border
  44. ref="table"
  45. :height="tableHeight"
  46. show-summary
  47. :summary-method="getSummaries"
  48. :data="tableData"
  49. tooltip-effect="dark"
  50. style="width: 100%"
  51. v-loading="loading">
  52. <el-table-column align="center" type="index" label="序号" width="80">
  53. <template slot-scope="scope">{{ (pageNum - 1) * pageSize + (scope.$index + 1) }}</template>
  54. </el-table-column>
  55. <el-table-column
  56. header-align="center"
  57. align="center"
  58. min-width="200"
  59. prop="leadDep"
  60. label="牵头单位"
  61. show-overflow-tooltip
  62. ></el-table-column>
  63. <el-table-column
  64. header-align="center"
  65. align="center"
  66. min-width="200"
  67. prop="joinDep"
  68. label="参加单位"
  69. show-overflow-tooltip
  70. ></el-table-column>
  71. <el-table-column
  72. header-align="center"
  73. align="center"
  74. min-width="200"
  75. prop="chkName"
  76. label="检查计划事项"
  77. show-overflow-tooltip
  78. ></el-table-column>
  79. <el-table-column
  80. header-align="center"
  81. align="center"
  82. min-width="200"
  83. prop="chkForm"
  84. label="检查形式"
  85. :formatter="chkFormFormat"
  86. show-overflow-tooltip
  87. ></el-table-column>
  88. <el-table-column
  89. header-align="center"
  90. align="center"
  91. min-width="120"
  92. prop="chkMnth"
  93. :formatter="formatDate"
  94. label="年月"
  95. show-overflow-tooltip
  96. ></el-table-column>
  97. <el-table-column
  98. header-align="center"
  99. align="center"
  100. prop="chkNote"
  101. width="300"
  102. label="监督检查开展情况"
  103. show-overflow-tooltip
  104. ></el-table-column>
  105. <el-table-column
  106. header-align="center"
  107. align="center"
  108. prop="chkPers"
  109. width="120"
  110. label="检查人次"
  111. show-overflow-tooltip
  112. ></el-table-column>
  113. <el-table-column
  114. header-align="center"
  115. align="center"
  116. width="120"
  117. prop="chkPblm"
  118. label="检查发现问题数"
  119. show-overflow-tooltip
  120. ></el-table-column>
  121. <el-table-column
  122. header-align="center"
  123. align="center"
  124. width="200"
  125. prop="chkLeder"
  126. label="厅领导参加检查人次"
  127. show-overflow-tooltip
  128. ></el-table-column>
  129. <el-table-column
  130. header-align="center"
  131. align="center"
  132. width="120"
  133. prop="trainNum"
  134. label="当月培训期次"
  135. show-overflow-tooltip
  136. ></el-table-column>
  137. <el-table-column
  138. header-align="center"
  139. align="center"
  140. width="120"
  141. prop="chkGroup"
  142. label="检查组次"
  143. show-overflow-tooltip
  144. ></el-table-column>
  145. <el-table-column
  146. header-align="center"
  147. align="center"
  148. width="120"
  149. prop="trainPers"
  150. label="参加培训人次"
  151. show-overflow-tooltip
  152. ></el-table-column>
  153. <el-table-column
  154. header-align="center"
  155. align="center"
  156. prop="nextPlan"
  157. width="300"
  158. label="下一月计划"
  159. show-overflow-tooltip
  160. ></el-table-column>
  161. <el-table-column
  162. align="center"
  163. min-width="260"
  164. label="操作"
  165. fixed="right">
  166. <template slot-scope="scope">
  167. <el-button type="success" size="mini" @click.stop="lookOver(scope.row)">查看</el-button>
  168. <el-button type="success" size="mini" @click.stop="edit(scope.row)">编辑</el-button>
  169. <el-button type="danger" size="mini" @click.stop="deleteData(scope.row.id)">删除</el-button>
  170. </template>
  171. </el-table-column>
  172. </el-table>
  173. <el-pagination
  174. style="margin: 10px auto"
  175. background
  176. :pager-count="5"
  177. :current-page="pageNum"
  178. :page-size="pageSize"
  179. :page-sizes="[10, 20, 30, 40, 50, 100]"
  180. layout="sizes, total, prev, pager, next"
  181. :total="total"
  182. @current-change="handleCurrentChange"
  183. ></el-pagination>
  184. </div>
  185. </el-card>
  186. <el-dialog
  187. class="outerDialog custom_dialog"
  188. :title="dialogT+'统计月报'"
  189. width="60%"
  190. modal-append-to-body
  191. append-to-body
  192. @close="closeAddDialog"
  193. v-if="addDialogVisible"
  194. :visible.sync="addDialogVisible">
  195. <div style="width: 100%;height:100%;">
  196. <el-form ref="addForm" label-width="300px">
  197. <el-form-item label="检查形式" required>
  198. <el-select v-model="addForm.chkForm" placeholder="请选择检查形式">
  199. <el-option label="暗访" value="1"></el-option>
  200. <el-option label="明察" value="2"></el-option>
  201. <el-option label="书面" value="3"></el-option>
  202. <el-option label="四不两直" value="4"></el-option>
  203. </el-select>
  204. </el-form-item>
  205. <el-form-item label="年月" required>
  206. <el-date-picker
  207. v-model="addForm.chkMnth"
  208. type="month"
  209. placeholder="选择年月">
  210. </el-date-picker>
  211. </el-form-item>
  212. <el-form-item label="监督检查开展情况" required>
  213. <el-input type="textarea" v-model="addForm.chkNote" placeholder="请输入监督检查开展情况"></el-input>
  214. </el-form-item>
  215. <el-form-item label="检查人次" required>
  216. <el-input-number v-model="addForm.chkPers" placeholder="请输入检查人次"></el-input-number>
  217. </el-form-item>
  218. <el-form-item label="检查发现问题数" required>
  219. <el-input-number v-model="addForm.chkPblm" placeholder="请输入检查发现问题数"></el-input-number>
  220. </el-form-item>
  221. <el-form-item label="厅领导参见检查人次" required>
  222. <el-input-number v-model="addForm.chkLeder" placeholder="请输入厅领导参见检查人次"></el-input-number>
  223. </el-form-item>
  224. <el-form-item label="当月培训期次" required>
  225. <el-input-number v-model="addForm.trainNum" placeholder="请输入当月培训期次"></el-input-number>
  226. </el-form-item>
  227. <el-form-item label="检查组次" required>
  228. <el-input-number v-model="addForm.chkGroup" placeholder="请输入检查组次"></el-input-number>
  229. </el-form-item>
  230. <el-form-item label="参加培训人数" required>
  231. <el-input-number v-model="addForm.trainPers" placeholder="请输入参加培训人数"></el-input-number>
  232. </el-form-item>
  233. <el-form-item label="下一月计划" required>
  234. <el-input type="textarea" v-model="addForm.nextPlan" placeholder="请输入下一月计划"></el-input>
  235. </el-form-item>
  236. <el-form-item label="备注">
  237. <el-input type="textarea" v-model="addForm.note" placeholder="请输入备注"></el-input>
  238. </el-form-item>
  239. <el-form-item style="text-align: center">
  240. <el-button type="primary" @click="addSubmit" style="margin-bottom: 30px;">确定</el-button>
  241. </el-form-item>
  242. </el-form>
  243. </div>
  244. </el-dialog>
  245. <el-dialog
  246. class="outerDialog custom_dialog"
  247. :title="'监督进度月报详细'"
  248. width="40%"
  249. modal-append-to-body
  250. append-to-body
  251. @close="closeDetailDialog"
  252. v-if="detailDialogVisible"
  253. :visible.sync="detailDialogVisible">
  254. <div style="width: 100%;height:100%;overflow: auto;">
  255. <table>
  256. <tr><td>牵头单位</td><td>{{detailObj.leadDep}}</td></tr>
  257. <tr><td>参加单位</td><td>{{detailObj.joinDep}}</td></tr>
  258. <tr><td>检查计划事项</td><td>{{detailObj.chkName}}</td></tr>
  259. <tr><td>检查形式</td><td>{{detailObj.chkForm | ChkForm}}</td></tr>
  260. <tr><td>年月</td><td>{{detailObj.chkMnth}}</td></tr>
  261. <tr><td>监督检查开展情况</td><td>{{detailObj.chkNote}}</td></tr>
  262. <tr><td>检查人次</td><td>{{detailObj.chkPers}}</td></tr>
  263. <tr><td>检查发现问题数</td><td>{{detailObj.chkPblm}}</td></tr>
  264. <tr><td>厅领导参加检查人次</td><td>{{detailObj.chkLeder}}</td></tr>
  265. <tr><td>当月培训期次</td><td>{{detailObj.trainNum}}</td></tr>
  266. <tr><td>检查组次</td><td>{{detailObj.chkGroup}}</td></tr>
  267. <tr><td>参加培训人数</td><td>{{detailObj.trainPers}}</td></tr>
  268. <tr><td>下一月计划</td><td>{{detailObj.nextPlan}}</td></tr>
  269. <tr><td>备注</td><td>{{detailObj.note}}</td></tr>
  270. </table>
  271. </div>
  272. </el-dialog>
  273. </el-dialog>
  274. </el-container>
  275. </template>
  276. <script>
  277. import {exportModel} from "@util/gw_exportModel";
  278. import request from '@util/gw_ajax_request'
  279. import receiver from "./receiver"
  280. export default {
  281. name: "",
  282. props: ['rowData'],
  283. data() {
  284. return {
  285. detailDialogVisible:false,
  286. dateRange:[],
  287. dialogT:"",
  288. monthDialogVisible:true,
  289. addDialogVisible:false,
  290. tableHeight:window.innerHeight-400,
  291. tableData:[],
  292. loading:false,
  293. pageNum:1,
  294. pageSize:10,
  295. total:0,
  296. searchForm:{
  297. sttm:"",
  298. entm:"",
  299. leadDep:"",
  300. chkName:"",
  301. chkForm:""
  302. },
  303. YM:"",
  304. orgIdDefault:"",
  305. addForm:{
  306. chkYearId:"",
  307. chkForm:"",
  308. chkMnth:"",
  309. chkNote:"",
  310. chkGroup:"",
  311. chkPers:"",
  312. chkPblm:"",
  313. chkLeder:"",
  314. trainNum:"",
  315. trainPers:"",
  316. nextPlan:"",
  317. note:"",
  318. }
  319. }
  320. },
  321. filters:{
  322. ChkForm(val){
  323. return val=="1"?"暗访":val=="2"?"明察":val=="3"?"书面":val=="4"?"四不两直":"";
  324. }
  325. },
  326. components: {
  327. receiver
  328. },
  329. computed: {
  330. persId() {
  331. return localStorage.getItem("userid")
  332. ? localStorage.getItem("userid")
  333. : "1098101939614724096";
  334. },
  335. orgId() {
  336. return localStorage.getItem('currentOrgId') ? localStorage.getItem("currentOrgId") : "";
  337. },
  338. organCode() {
  339. return localStorage.getItem('currentRlcode') ? localStorage.getItem('currentRlcode') : ''
  340. },
  341. },
  342. mounted() {
  343. this.initTableData();
  344. },
  345. methods: {
  346. getSummaries(param) {
  347. const { columns, data } = param;
  348. const sums = [];
  349. columns.forEach((column, index) => {
  350. if (index === 0) {
  351. sums[index] = '总计';
  352. return;
  353. }
  354. const values = data.map(item => Number(item[column.property]));
  355. if (column.property=='chkPers' || column.property=='chkPblm' || column.property=='chkLeder' || column.property=='trainNum' || column.property=='chkGroup' || column.property=='trainPers') {
  356. sums[index] = values.reduce((prev, curr) => {
  357. const value = Number(curr);
  358. if (!isNaN(value)) {
  359. return prev + curr;
  360. } else {
  361. return prev;
  362. }
  363. }, 0);
  364. sums[index] += '';
  365. } else {
  366. sums[index] = '';
  367. }
  368. });
  369. return sums;
  370. },
  371. closeDetailDialog(){
  372. this.detailDialogVisible = false;
  373. },
  374. lookOver(obj){
  375. this.detailObj = obj;
  376. this.detailObj.chkMnth = this.detailObj.chkMnth?this.formatDate(this.detailObj,{property:"chkMnth"},null,null):"";
  377. this.detailDialogVisible = true;
  378. },
  379. closeDialog(){
  380. this.$emit('closeDialogMonth')
  381. },
  382. formatDate(row, column, cellValue, index){
  383. var dateF = row[column.property];
  384. if(dateF){
  385. var date = new Date(dateF);
  386. return date.getFullYear()+"-"+((date.getMonth()+1)>9?(date.getMonth()+1):'0'+(date.getMonth()+1))
  387. }
  388. return "";
  389. },
  390. chkFormFormat(row, column, cellValue, index){
  391. return row.chkForm=="1"?"暗访":row.chkForm=="2"?"明察":row.chkForm=="3"?"书面":row.chkForm=="4"?"四不两直":"";
  392. },
  393. async exportExcel() {
  394. this.searchForm.chkYearId = this.rowData.id;
  395. this.searchForm.persId = this.persId;
  396. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  397. this.searchForm.sttm = this.dateRange[0];
  398. this.searchForm.entm = this.dateRange[1];
  399. }
  400. let url = "/pdcApi//bis/insp/plan/year/prg/export";
  401. let type = "POST";
  402. let exportName = "监督进度月报.xls"
  403. let result = await exportModel(type, url, exportName,JSON.stringify(this.searchForm));
  404. },
  405. deleteData(id){
  406. var _self = this;
  407. this.$confirm('确定删除该条数据吗, 是否继续?', '提示', {
  408. confirmButtonText: '确定',
  409. cancelButtonText: '取消',
  410. type: 'warning'
  411. }).then(() => {
  412. request.post('/bis/insp/plan/year/prg/delete/'+id).then(res=>{
  413. if(res.success){
  414. _self.initTableData();
  415. }else{
  416. _self.$message.warning(res.message);
  417. }
  418. })
  419. }).catch(() => {
  420. this.$message({
  421. type: 'info',
  422. message: '已取消删除'
  423. });
  424. });
  425. },
  426. edit(row){
  427. var obj = JSON.stringify(row);
  428. this.addDialogVisible = true;
  429. this.addForm = JSON.parse(obj);
  430. this.dialogT = "编辑";
  431. },
  432. addSubmit(){
  433. this.addForm.chkYearId = this.rowData.id;
  434. if(!this.addForm.chkForm){
  435. this.$message.warning("请选择检查形式");
  436. return;
  437. }
  438. if(!this.addForm.chkMnth){
  439. this.$message.warning("请选择年月");
  440. return;
  441. }
  442. if(!this.addForm.chkNote){
  443. this.$message.warning("请输入监督检查开展情况");
  444. return;
  445. }
  446. if(!this.addForm.chkPers){
  447. this.$message.warning("请输入检查人次");
  448. return;
  449. }
  450. if(!this.addForm.chkPblm){
  451. this.$message.warning("请输入检查发现问题数");
  452. return;
  453. }
  454. if(!this.addForm.chkLeder){
  455. this.$message.warning("请输入厅领导参加检查人次");
  456. return;
  457. }
  458. if(!this.addForm.trainNum){
  459. this.$message.warning("请输入当月培训期次");
  460. return;
  461. }
  462. if(!this.addForm.chkGroup){
  463. this.$message.warning("请输入检查组次");
  464. return;
  465. }
  466. if(!this.addForm.trainPers){
  467. this.$message.warning("请输入参加培训人数");
  468. return;
  469. }
  470. if(!this.addForm.nextPlan){
  471. this.$message.warning("请输入下一月计划");
  472. return;
  473. }
  474. var _self = this;
  475. request.post('/bis/insp/plan/year/prg/',this.addForm).then(res=>{
  476. if(res.success){
  477. _self.$message.success("保存成功");
  478. _self.addDialogVisible = false;
  479. _self.addForm = {};
  480. _self.initTableData();
  481. }else{
  482. _self.$message.warning(res.message);
  483. }
  484. })
  485. },
  486. selectOrgChange(data){
  487. this.addForm.unitName = data.name;
  488. },
  489. clearRecv(){
  490. this.addForm.unitName = "";
  491. },
  492. closeAddDialog(){
  493. this.addDialogVisible = false;
  494. },
  495. initTableData(){
  496. this.searchForm.chkYearId = this.rowData.id;
  497. this.searchForm.pageNum = this.pageNum;
  498. this.searchForm.pageSize = this.pageSize;
  499. this.searchForm.persId = this.persId;
  500. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  501. this.searchForm.sttm = this.dateRange[0];
  502. this.searchForm.entm = this.dateRange[1];
  503. }
  504. this.loading = true;
  505. var _self = this;
  506. request.post(`/bis/insp/plan/year/prg/findPageList`,this.searchForm).then(res=>{
  507. if(res.success){
  508. _self.tableData = res.data.list;
  509. _self.total = res.data.total;
  510. _self.loading = false;
  511. _self.$nextTick(()=>{
  512. _self.$refs.table.doLayout();
  513. })
  514. }else{
  515. _self.$message.warning(res.message)
  516. }
  517. })
  518. },
  519. handleCurrentChange(val){
  520. this.pageNum = val;
  521. this.initTableData();
  522. },
  523. searchBtn(){
  524. this.initTableData();
  525. },
  526. addBtn(){
  527. this.addForm = {};
  528. this.addDialogVisible = true;
  529. this.dialogT = "添加"
  530. }
  531. }
  532. }
  533. </script>
  534. <style lang="scss" scoped>
  535. .monthReport >>>.el-dialog{
  536. margin-top: 10vh !important;
  537. }
  538. table{
  539. width: 100%;
  540. height:100%;
  541. border-collapse: collapse;
  542. margin-bottom: 30px;
  543. }
  544. table tr td{
  545. border:1px solid #cecece;
  546. height:35px;
  547. text-indent: 15px;
  548. padding-right: 15px;
  549. }
  550. table tr td:first-child{
  551. background: #f2f1f1;
  552. width: 260px;
  553. text-align: right;
  554. }
  555. .monthReport{
  556. width: 100%;
  557. height:90%;
  558. margin: 0;
  559. padding: 0;
  560. }
  561. .box-card{
  562. width: calc(100% - 60px);
  563. height:calc(100% - 20px);
  564. margin: 0 auto;
  565. margin-top: 10px;
  566. }
  567. .title_monthReport{
  568. text-align: center;
  569. padding: 10px;
  570. }
  571. .note_monthReport{
  572. width: 100%;
  573. background-color: rgba(255, 251, 230, 1);
  574. box-sizing: border-box;
  575. border-width: 1px;
  576. border-style: solid;
  577. border-color: rgba(255, 229, 143, 1);
  578. color: rgba(0, 0, 0, 0.447058823529412);
  579. font-size: 14px;
  580. padding: 10px;
  581. }
  582. .note_monthReport p:first-child{
  583. font-size: 16px !important;
  584. }
  585. .monthReport{
  586. .demo-form-inline{
  587. .el-form-item{
  588. margin-bottom: 5px;
  589. margin-top: 8px;
  590. }
  591. }
  592. }
  593. </style>