pblmQueryTerms_over.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. <template>
  2. <a-form :model="queryParams" layout="inline" ref="searchForm" style="row-gap: 8px;">
  3. <a-form-item label="问题编号">
  4. <a-input v-model:value="queryParams.fileNoNumber" placeholder="问题编号或范围值(如:1-100)" allow-clear />
  5. </a-form-item>
  6. <a-form-item label="工程名称">
  7. <a-input v-model:value="queryParams.nm" placeholder="请输入工程名称" allow-clear />
  8. </a-form-item>
  9. <a-form-item label="问题来源">
  10. <a-input v-model:value="queryParams.pblmSource" placeholder="请输入问题来源" allow-clear />
  11. </a-form-item>
  12. <a-form-item label="印发文件名">
  13. <a-input v-model:value="queryParams.zgMemo" placeholder="请输入问题印发文件名" allow-clear />
  14. </a-form-item>
  15. <a-form-item label="责任处室">
  16. <a-input v-model:value="queryParams.dutyDept" placeholder="请输入责任处室(单位)" allow-clear />
  17. </a-form-item>
  18. <a-form-item label="问题归类">
  19. <a-input v-model:value="queryParams.objType" placeholder="请输入问题归类" allow-clear />
  20. </a-form-item>
  21. <a-form-item label="申诉审核状态">
  22. <a-select v-model:value="stat" allow-clear>
  23. <a-select-option value="0">未申诉</a-select-option>
  24. <a-select-option value="2">申诉成功</a-select-option>
  25. <a-select-option value="4">开启通道</a-select-option>
  26. <a-select-option value="3">驳回</a-select-option>
  27. <a-select-option value="4002">整改单位审核人复核</a-select-option>
  28. <a-select-option value="4003">市级经办人审核</a-select-option>
  29. <a-select-option value="4004">市级审核人审核</a-select-option>
  30. <a-select-option value="4005">监督处经办人初审</a-select-option>
  31. <a-select-option value="4006">监督处审核人归档审核</a-select-option>
  32. <a-select-option value="4007">厅业务处经办人审核</a-select-option>
  33. <a-select-option value="4008">厅业务处审核人复核</a-select-option>
  34. <a-select-option value="4010">监督处经办人归档复核</a-select-option>
  35. </a-select>
  36. </a-form-item>
  37. <a-button
  38. ref="queryButton"
  39. @click="exportExcel"
  40. :loading="loading"
  41. type="primary"
  42. style="color:rgba(255,255,255,1);float:right;margin-right:10px;z-index: 1;">导出</a-button>
  43. <a-button
  44. ref="queryButton"
  45. @click="queryByParams"
  46. :loading="loading"
  47. type="primary"
  48. style="color:rgba(255,255,255,1);float:right;margin-right:10px;z-index: 1;">查询</a-button>
  49. </a-form>
  50. </template>
  51. <script>
  52. import moment from 'moment';
  53. import request from '../../../utils/gw_ajax_request';
  54. import { exportModel } from '../../../utils/gw_exportModel';
  55. import commonUploadAutoSimple from '../../../widgets/common-upload-auto-simple.vue';
  56. import {
  57. getDuChaResource,
  58. getDuChaYears,
  59. getDutyDept,
  60. getOrgTreeJson,
  61. getRectifyProcStates1,
  62. } from '../Common/rectify_api.js';
  63. export default {
  64. props: {
  65. showRectifyStatus: {
  66. type: Boolean,
  67. default: true,
  68. },
  69. showZgXianOrgId: {
  70. type: Boolean,
  71. default: true,
  72. },
  73. showInspPblmCate: {
  74. type: Boolean,
  75. default: false,
  76. },
  77. loading: {
  78. type: Boolean,
  79. default: false,
  80. },
  81. showAd: {
  82. type: Boolean,
  83. default: true,
  84. },
  85. isView: {
  86. type: Boolean,
  87. default: false,
  88. },
  89. isYears: {
  90. type: Boolean,
  91. default: false,
  92. },
  93. isSjdw: {
  94. type: Boolean,
  95. default: false,
  96. },
  97. isShowImport: {
  98. type: Boolean,
  99. default: false,
  100. },
  101. isAppeal: {
  102. type: Boolean,
  103. default: false,
  104. },
  105. isDataScreen: {
  106. type: Boolean,
  107. default: false,
  108. },
  109. },
  110. data() {
  111. return {
  112. currentRange: [],
  113. pblmSourceArr: [],
  114. ywcsList: [],
  115. workflowStats: [],
  116. stat: '',
  117. queryParams: {
  118. fileNoNumber: '',
  119. nm: '',
  120. pblmSource: '',
  121. zgMemo: '',
  122. dutyDept: '',
  123. objType: '',
  124. stat: '',
  125. workflowStat: '',
  126. },
  127. rectifyProcStates: getRectifyProcStates1(), // 整改流程所有流程状态
  128. duChaTypes: [],
  129. sourceList: [],
  130. DuChaYears: getDuChaYears(),
  131. rectifyUnits: [],
  132. headsList: [
  133. { lable: '编号', value: 'fileNoNumber[编号]' },
  134. { lable: '问题', value: 'inspPblmDesc[问题]' },
  135. { lable: '问题详情', value: 'problemDetails[问题详情]' },
  136. { lable: '问题来源', value: 'pblmSource[问题来源]' },
  137. { lable: '问题来源时间', value: 'pblmSourceTm[问题来源时间]' },
  138. { lable: '工程名称', value: 'nm[工程名称]' },
  139. { lable: '设区市/直管县', value: 'upAdName[设区市/直管县]' },
  140. { lable: '县(市、区)', value: 'adName[县(市、区)]' },
  141. { lable: '问题印发文号', value: 'zgWjName[问题印发文号]' },
  142. { lable: '问题印发文件名', value: 'zgMemo[问题印发文件名]' },
  143. { lable: '问题印发时间', value: 'issuedTm[问题印发时间]' },
  144. { lable: '责任处室', value: 'dutyDept[责任处室]' },
  145. { lable: '问题归类', value: 'objType[问题归类]' },
  146. { lable: '整改要求', value: 'pblmSggtn[整改要求]' },
  147. // {lable:'初始整改时限',value:'firstZgTm[初始整改时限]'},
  148. { lable: '问题是否已销号', value: 'isPblmDel[问题是否已销号]' },
  149. { lable: '销号时间', value: 'isPdTm[销号时间]' },
  150. { lable: '是否按期销号', value: 'isPdSche[是否按期销号]' },
  151. { lable: '最新申请延期月份', value: 'psDlyTm[最新申请延期月份]' },
  152. { lable: '申请销号日期', value: 'applyPdTm[申请销号日期]' },
  153. { lable: '提交业务处室日期', value: 'applyFfcTm[提交业务处室日期]' },
  154. {
  155. lable: '当前要求整改完成时限',
  156. value: 'zgDate[当前要求整改完成时限]',
  157. },
  158. { lable: '年度初始整改时限', value: 'nlZgDate[年度初始整改时限]' },
  159. {
  160. lable: '整改工作开展情况(由各地填报,需具体描述)',
  161. value: 'zgDevelopment[整改工作开展情况(由各地填报,需具体描述)]',
  162. },
  163. {
  164. lable: '业务处室、单位不同意销号原因',
  165. value: 'deptagePdEln[业务处室、单位不同意销号原因]',
  166. },
  167. {
  168. lable: '重新明确整改要求(如有,由业务处室、单位填写)',
  169. value:
  170. 'zgRedefineReq[重新明确整改要求(如有,由业务处室、单位填写)]',
  171. },
  172. { lable: '整改描述', value: 'zgZgxx[整改描述]' },
  173. { lable: '备注', value: 'note[备注]' },
  174. { lable: '整改时限延期说明', value: 'zgDelayEln[整改时限延期说明]' },
  175. { lable: '整改状态', value: 'workflowStat[整改状态]' },
  176. { lable: '问题超期次数', value: 'overdueCount[问题超期次数]' },
  177. { lable: '问题超期整改记录', value: 'overdueRecord[问题超期整改记录]' },
  178. { lable: '申请销号次数', value: 'auditTotal[申请销号次数]' },
  179. // {lable:'调度年份',value:'schdYear[调度年份]'},
  180. // {lable:'问题被通报次数',value:'informedNum[问题被通报次数]'},
  181. // {lable:'编号',value:'fileNoNumber[编号]'},
  182. // {lable:'问题详情',value:'inspPblmDesc[问题详情]'},
  183. // {lable:'问题来源',value:'pblmSource[问题来源]'},
  184. // {lable:'问题来源时间',value:'pblmSourceTm[问题来源时间]'},
  185. // {lable:'工程名称',value:'nm[工程名称]'},
  186. // {lable:'行政划区编码',value:'adCode[行政划区编码]'},
  187. // {lable:'设区市/直管县',value:'upAdName[设区市/直管县]'},
  188. // {lable:'行政划区名称',value:'adName[行政划区名称]'},
  189. // {lable:'问题印发文号',value:'zgWjName[问题印发文号]'},
  190. // {lable:'问题印发文件名',value:'zgMemo[问题印发文件名]'},
  191. // {lable:'问题印发时间',value:'issuedTm[问题印发时间]'},
  192. // {lable:'责任处室',value:'dutyDept[责任处室]'},
  193. // {lable:'问题归类',value:'objType[问题归类]'},
  194. // {lable:'整改要求',value:'pblmSggtn[整改要求]'},
  195. // {lable:'预计整改完成时间',value:'expectedZgDate[预计整改完成时间]'},
  196. // {lable:'当前要求整改完成时限',value:'zgDate[当前要求整改完成时限]'},
  197. // {lable:'问题是否已销号',value:'isPblmDel[问题是否已销号]'},
  198. // {lable:'销号时间',value:'isPdTm[销号时间]'},
  199. // {lable:'初始整改时限',value:'firstZgTm[初始整改时限]'},
  200. // {lable:'是否按期销号',value:'isPdSche[是否按期销号]'}
  201. // {lable:'编号',value:'fileNoNumber[编号]'},
  202. // {lable:'问题描述',value:'pblmDescBz[问题描述]'},
  203. // {lable:'问题来源',value:'pblmSource[问题来源]'},
  204. // {lable:'工程名称',value:'rsName[工程名称]'},
  205. // {lable:'市',value:'city[市]'},
  206. // {lable:'区/县',value:'country[区/县]'},
  207. // {lable:'印发文号',value:'zgWh[印发文号]'},
  208. // {lable:'印发文件名',value:'zgWjName[印发文件名]'},
  209. // {lable:'整改截止日期',value:'zgDate[整改截止日期]'},
  210. // {lable:'预计完成日期',value:'expectedZgDate[预计完成日期]'},
  211. // {lable:'整改状态',value:'workflowStat1[整改状态]'},
  212. // {lable:'实际完成整改日期',value:'finishDate[实际完成整改日期]'},
  213. // {lable:'是否销号',value:'workflowStat2[是否销号]'},
  214. // {lable:'责任处室',value:'yewsName[责任处室]'},
  215. // {lable:'问题归类',value:'pTypeName[问题归类]'},
  216. ],
  217. dialogFormVisible: false,
  218. importVisible: false,
  219. errorList: [],
  220. isOpen: false,
  221. isYear: null,
  222. moment,
  223. processType: '', // 流程类型
  224. dataScreenVisible: false, // 控制数据筛查按钮弹窗
  225. dataScreenList: [],
  226. dataScreenLoading: false,
  227. readOnlyRole: localStorage.getItem('readOnlyRole'),
  228. };
  229. },
  230. components: {
  231. commonUploadAutoSimple,
  232. },
  233. created() {
  234. console.log(this.isDataScreen, 'isDataScreen');
  235. this.getDuChaTypes();
  236. this.getDutyDept();
  237. this.getDuChaResource();
  238. this.rectifyUnits = this.getOrgTreeJson();
  239. },
  240. methods: {
  241. onChange() {
  242. this.isOpen = false;
  243. this.isYear = null;
  244. },
  245. handYearChange(open) {
  246. if (open) {
  247. this.isOpen = true;
  248. } else {
  249. this.isOpen = false;
  250. }
  251. this.timer = setTimeout(() => {
  252. this.dateYearDisabledRule();
  253. }, 0);
  254. },
  255. dateYearDisabledRule(type, value) {
  256. const typeR = type ? type : 'lteNow';
  257. const valueR = value ? moment(value).format('YYYY') : '';
  258. //获取dom元素
  259. const tableDom = document.querySelectorAll(
  260. '.ant-calendar-year-panel-body',
  261. );
  262. const prevBtn = document.querySelector(
  263. '.ant-calendar-year-panel-prev-decade-btn',
  264. );
  265. const nextBtn = document.querySelector(
  266. '.ant-calendar-year-panel-next-decade-btn',
  267. );
  268. const tdDom = tableDom[0].querySelectorAll('td');
  269. // 当前面板的第一个和最后一个年份类似年份翻页按钮因此和年份翻页按钮做相同处理,否则会有错误
  270. const prevBtnTd = tdDom[0];
  271. const nextBtnTd = tdDom[tdDom.length - 1];
  272. //定义所需对比值
  273. const nowDate = moment().format('YYYY');
  274. if (tableDom.length > 0) {
  275. switch (typeR) {
  276. //<=当前年
  277. case 'lteNow':
  278. (() => {
  279. tdDom.forEach((item) => {
  280. if (item.innerText < '2021') {
  281. item.setAttribute('class', 'datepicker-year-disabled');
  282. } else {
  283. item.classList.remove('datepicker-year-disabled');
  284. }
  285. });
  286. // 年份翻页按钮
  287. const ev = this.dateYearDisabledRule.bind(this, 'lteNow');
  288. prevBtn.removeEventListener('click', ev);
  289. nextBtn.removeEventListener('click', ev);
  290. prevBtn.addEventListener('click', ev);
  291. nextBtn.addEventListener('click', ev);
  292. prevBtnTd.removeEventListener('click', ev);
  293. nextBtnTd.removeEventListener('click', ev);
  294. prevBtnTd.addEventListener('click', ev);
  295. nextBtnTd.addEventListener('click', ev);
  296. })();
  297. break;
  298. //<=当前年、<=结束日期
  299. case 'rangeNowStart':
  300. (() => {
  301. tdDom.forEach((item) => {
  302. if (
  303. item.innerText > nowDate ||
  304. (valueR && item.innerText > valueR)
  305. ) {
  306. item.setAttribute('class', 'datepicker-year-disabled');
  307. } else {
  308. item.classList.remove('datepicker-year-disabled');
  309. }
  310. });
  311. // 年份翻页按钮
  312. const ev = this.dateYearDisabledRule.bind(
  313. this,
  314. 'rangeNowStart',
  315. value,
  316. );
  317. prevBtn.removeEventListener('click', ev);
  318. nextBtn.removeEventListener('click', ev);
  319. prevBtn.addEventListener('click', ev);
  320. nextBtn.addEventListener('click', ev);
  321. prevBtnTd.removeEventListener('click', ev);
  322. nextBtnTd.removeEventListener('click', ev);
  323. prevBtnTd.addEventListener('click', ev);
  324. nextBtnTd.addEventListener('click', ev);
  325. })();
  326. break;
  327. //<=当前年、>=开始日期
  328. case 'rangeNowEnd':
  329. (() => {
  330. tdDom.forEach((item) => {
  331. if (
  332. item.innerText > nowDate ||
  333. (valueR && item.innerText < valueR)
  334. ) {
  335. item.setAttribute('class', 'datepicker-year-disabled');
  336. } else {
  337. item.classList.remove('datepicker-year-disabled');
  338. }
  339. });
  340. // 年份翻页按钮
  341. const ev = this.dateYearDisabledRule.bind(
  342. this,
  343. 'rangeNowEnd',
  344. value,
  345. );
  346. prevBtn.removeEventListener('click', ev);
  347. nextBtn.removeEventListener('click', ev);
  348. prevBtn.addEventListener('click', ev);
  349. nextBtn.addEventListener('click', ev);
  350. prevBtnTd.removeEventListener('click', ev);
  351. nextBtnTd.removeEventListener('click', ev);
  352. prevBtnTd.addEventListener('click', ev);
  353. nextBtnTd.addEventListener('click', ev);
  354. })();
  355. break;
  356. }
  357. }
  358. },
  359. getDutyDept() {
  360. getDutyDept().then((res) => {
  361. this.ywcsList = res.data;
  362. });
  363. },
  364. getDuChaTypes() {
  365. request.get('/dc/insp/pblm/getListType').then((res) => {
  366. if (res.success) {
  367. this.duChaTypes = res.data;
  368. }
  369. });
  370. },
  371. getDuChaResource() {
  372. getDuChaResource().then((res) => {
  373. this.sourceList = res.data;
  374. });
  375. },
  376. getOrgTreeJson() {
  377. getOrgTreeJson().then((res) => {
  378. const jsonArray = [];
  379. const jsonStr = JSON.stringify(res.data);
  380. jsonArray.push(res.data);
  381. this.rectifyUnits = jsonArray;
  382. });
  383. },
  384. isNumber(val) {
  385. var regPos = /^[+]{0,1}(\d+)$/; // 非负浮点数
  386. if (regPos.test(val)) {
  387. return true;
  388. } else {
  389. return false;
  390. }
  391. },
  392. queryByParams() {
  393. if (this.stat && this.stat.includes('4')) {
  394. this.queryParams.workflowStat = this.stat;
  395. this.queryParams.stat = '';
  396. } else {
  397. this.queryParams.stat = this.stat;
  398. this.queryParams.workflowStat = '';
  399. }
  400. if (this.queryParams.fileNoNumber) {
  401. if (this.queryParams.fileNoNumber.indexOf('-') > -1) {
  402. var numList = this.queryParams.fileNoNumber.split('-');
  403. if (
  404. ((!numList[0] || !numList[1]) && numList.length != 2) ||
  405. !this.isNumber(numList[0]) ||
  406. !this.isNumber(numList[1])
  407. ) {
  408. this.$message.warning('请输入正确的编号范围!');
  409. return;
  410. }
  411. }
  412. }
  413. this.$emit('queryByParams', {
  414. queryParams: this.queryParams,
  415. });
  416. },
  417. async exportExcel() {
  418. const datas = JSON.stringify(this.queryParams);
  419. const url =
  420. '/modular-source/7446637943aa4c50b5d69c814517fca0/pdcApi/bis/insp/zg/pblm/getRepresentationsExport';
  421. const type = 'post';
  422. const exportName = '超期申诉列表.xls';
  423. const result = await exportModel(type, url, exportName, datas);
  424. },
  425. },
  426. };
  427. </script>
  428. <style lang='less' scoped>
  429. .data-screen {
  430. height: 500px;
  431. overflow: auto;
  432. }
  433. :deep(.datepicker-year-disabled) {
  434. pointer-events: none;
  435. cursor: not-allowed;
  436. a {
  437. color: rgba(0, 0, 0, 0.25);
  438. background: #f5f5f5;
  439. }
  440. }
  441. </style>
  442. <style lang='less'>
  443. .datepicker-year-disabled {
  444. pointer-events: none;
  445. cursor: not-allowed;
  446. a {
  447. color: rgba(0, 0, 0, 0.25);
  448. background: #f5f5f5;
  449. }
  450. }
  451. </style>