audit-question-list.vue 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221
  1. <template>
  2. <div>
  3. <a-card>
  4. <div :class="[$style.btns]">
  5. <audit-advanced-export
  6. ref="exportData"
  7. :class-style="[$style.buttonSpacing]"
  8. :v-if="true"
  9. :config-id="111"
  10. :expressions="exportExpressions"
  11. :exclebxh="false"
  12. ></audit-advanced-export>
  13. </div>
  14. <!-- 高级搜索组件 -->
  15. <audit-advanced-query
  16. :class="$style.advancedQuery"
  17. :expand="expand"
  18. :search-data="formData"
  19. :ref-name="searchform"
  20. :search-style="{ height: '210px', left: '20px', top: '60px' }"
  21. :search-fun="handleSearch"
  22. @searchedClick="searchedClick"
  23. @resetForm="resetForm"
  24. >
  25. <template>
  26. <a-row>
  27. <a-col :span="8">
  28. <a-form-model-item :label="'审计发现标题'" prop="findTitle">
  29. <a-input v-model="formData.findTitle" allow-clear />
  30. </a-form-model-item>
  31. </a-col>
  32. <a-col :span="8">
  33. <a-form-model-item :label="'项目名称'" prop="projectName">
  34. <a-input v-model="formData.projectName" allow-clear />
  35. </a-form-model-item>
  36. </a-col>
  37. <a-col :span="8">
  38. <a-form-model-item :label="'整改责任主体'" prop="auditedUnit">
  39. <sd-group-picker
  40. ref="unitSelect"
  41. v-model="formData.auditedUnit"
  42. :single="true"
  43. :read-only="false"
  44. @change="changeunit"
  45. />
  46. </a-form-model-item>
  47. </a-col>
  48. </a-row>
  49. <a-row>
  50. <a-col :span="8">
  51. <a-form-model-item :label="'整改状态'" prop="rectStatus">
  52. <sd-select
  53. v-model="formData.rectStatus"
  54. :allow-clear="true"
  55. :options="StatusOptions"
  56. />
  57. </a-form-model-item>
  58. </a-col>
  59. <a-col :span="8">
  60. <a-form-model-item :label="'是否属于审计意见书问题'" prop="giveOpinion">
  61. <sd-select
  62. v-model="formData.giveOpinion"
  63. :allow-clear="true"
  64. :options="giveOpinions"
  65. />
  66. </a-form-model-item>
  67. </a-col>
  68. <a-col :span="8">
  69. <a-form-model-item :label="'问题性质'" prop="problemNature">
  70. <sd-select
  71. v-model="formData.problemNature"
  72. :allow-clear="true"
  73. :options="problemNatureOpinions"
  74. />
  75. </a-form-model-item>
  76. </a-col>
  77. <!-- <a-col :span="8">
  78. <div :class="$style.buttonContent">
  79. <a-button :loading="exportLoading" type="primary" @click="exportQuestion"
  80. >导出审计整改台账</a-button
  81. >
  82. </div>
  83. </a-col> -->
  84. </a-row>
  85. <a-row>
  86. <a-col :span="8">
  87. <a-form-model-item :label="'整改类型'" prop="rectType">
  88. <sd-select
  89. v-model="formData.rectType"
  90. :allow-clear="true"
  91. :options="rectTypeOpinions"
  92. />
  93. </a-form-model-item>
  94. </a-col>
  95. <a-col :span="8">
  96. <a-form-model-item :label="'销\u2002号\u2002状\u2002态\u2002'" prop="cancellStatus">
  97. <sd-select
  98. v-model="formData.cancellStatus"
  99. :allow-clear="true"
  100. :options="cancellStatusOptions"
  101. />
  102. </a-form-model-item>
  103. </a-col>
  104. <a-col :span="8">
  105. <a-form-model-item label="项目年份" prop="planYear">
  106. <a-date-picker
  107. v-model="formData.planYear"
  108. mode="year"
  109. picker="YYYY"
  110. format="YYYY"
  111. :allow-clear="false"
  112. placeholder="选择年度"
  113. :input-read-only="true"
  114. :value="year"
  115. :open="endOpen"
  116. @panelChange="yearChange"
  117. @openChange="handleEndOpenChange"
  118. ></a-date-picker>
  119. </a-form-model-item>
  120. </a-col>
  121. </a-row>
  122. <!-- <a-row>
  123. <a-col :span="12" class="recitifyrectstatus">
  124. <a-form-model-item :label="'确认状态'" prop="confirmStatus">
  125. <sd-select
  126. v-model="formData.confirmStatus"
  127. :allow-clear="true"
  128. :options="confirmStatusOptions"
  129. />
  130. </a-form-model-item>
  131. </a-col>
  132. </a-row> -->
  133. </template>
  134. </audit-advanced-query>
  135. <sd-data-table-ex
  136. ref="WTQDDataTable"
  137. :projectlist="true"
  138. :filter-expressions="expressions"
  139. :columns="columns"
  140. :actions="actions"
  141. form-id="iamrectifyquestion"
  142. data-url="api/xcoa-mobile/v1/iamrectifyquestion/all-list"
  143. :search-fields="[
  144. 'findTitle',
  145. 'projectName',
  146. 'auditedUnitName',
  147. 'rectStatus',
  148. // 'confirmStatus',
  149. ]"
  150. show-selection
  151. :show-advance-query="true"
  152. :process-req="processReq"
  153. @searchbtnClick="searchbtnClick"
  154. >
  155. <div slot="isLink" slot-scope="text, record">
  156. <a @click="isViewBtn(record)">{{ text }}</a>
  157. </div>
  158. </sd-data-table-ex>
  159. </a-card>
  160. <a-modal :visible="modalVisible" title="确认重启问题吗?" @ok="handleOk" @cancel="handleCancel">
  161. <p
  162. >重启后系统将会重新打开整改流程, 并将流程设置到"开始"环节,
  163. 具体处理人默认为问题的"整改责任主体联系人": {{ modalRecord.auditedContactsName }} .</p
  164. >
  165. <p>如要改变问题的处理人, 请在下面选择相应人员进行变更</p>
  166. <a-col :span="12" style="z-index: 100">
  167. <a-form-model>
  168. <a-form-model-item label="更改问题的处理人:">
  169. <SdUserPicker v-model="modalUser" :single="true" :read-only="false" />
  170. </a-form-model-item>
  171. </a-form-model>
  172. </a-col>
  173. </a-modal>
  174. </div>
  175. </template>
  176. <script>
  177. import { message, Modal } from 'ant-design-vue'
  178. import moment from 'moment'
  179. import SdUserPicker from '@/common/components/sd-user-picker.vue'
  180. import { getUserInfo } from '@/common/store-mixin'
  181. import axios from '@/common/services/axios-instance'
  182. import TableColumnTypes from '@/common/services/table-column-types'
  183. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  184. import auditAdvancedQueryMixins from '../../components/audit-advanced-query-mixins'
  185. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  186. import auditAdvancedQuery from '../../components/audit-advanced-query.vue'
  187. import auditAdvancedExport from '../../components/audit-advanced-export'
  188. import components from './_import-components/audit-question-list-import'
  189. import download from '@/common/services/download'
  190. export default {
  191. name: 'AuditQuestionList',
  192. metaInfo: {
  193. title: '整改问题清单列表',
  194. },
  195. components: {
  196. ...components,
  197. auditAdvancedQuery,
  198. auditAdvancedExport,
  199. SdUserPicker,
  200. },
  201. mixins: [auditAdvancedQueryMixins, auditAdvancedGroupMixins],
  202. data() {
  203. return {
  204. modalVisible: false,
  205. modalRecord: {},
  206. modalUser: [],
  207. endOpen: false,
  208. year: null,
  209. expand: false,
  210. searchform: 'searchform',
  211. expressions: [],
  212. exportExpressions: [],
  213. formData: {
  214. projectName: '',
  215. findTtile: '',
  216. auditedUnit: '',
  217. rectStatus: '',
  218. giveOpinion: '',
  219. rectType: '',
  220. cancellStatus: '',
  221. endType: '',
  222. problemNature: '',
  223. planYear: '',
  224. // confirmStatus: '',
  225. },
  226. columns: [
  227. {
  228. title: '序号',
  229. dataIndex: 'sortNumber',
  230. width: '80px',
  231. customRender: (text, record, index) => `${index + 1}`,
  232. },
  233. {
  234. title: 'id',
  235. dataIndex: 'id',
  236. sdHidden: true,
  237. },
  238. {
  239. title: 'questionId',
  240. dataIndex: 'questionId',
  241. sdHidden: true,
  242. },
  243. {
  244. title: '问题名称(定性描述)',
  245. dataIndex: 'findTitle',
  246. width: '300px',
  247. scopedSlots: { customRender: 'isLink' },
  248. },
  249. {
  250. title: '问题编号',
  251. dataIndex: 'findCode',
  252. defaultSortOrder: 'descend',
  253. sorter: true,
  254. sortDirections: ['ascend', 'descend'],
  255. width: '200px',
  256. },
  257. {
  258. title: '审计依据',
  259. dataIndex: 'iamBasis',
  260. width: '220px',
  261. sdCandidate: true,
  262. },
  263. {
  264. title: '项目名称',
  265. dataIndex: 'projectName',
  266. sorter: true,
  267. sortDirections: ['ascend', 'descend'],
  268. width: '380px',
  269. },
  270. {
  271. title: '整改要求',
  272. dataIndex: 'requirement',
  273. width: '220px',
  274. sdCandidate: true,
  275. },
  276. {
  277. title: '问题性质',
  278. dataIndex: 'problemNatureStr',
  279. width: '100px',
  280. },
  281. {
  282. title: '是否属于审计意见书问题',
  283. dataIndex: 'giveOpinion',
  284. width: '200px',
  285. },
  286. {
  287. title: '审计处理意见',
  288. dataIndex: 'handleSuggestion',
  289. width: '220px',
  290. sdCandidate: true,
  291. },
  292. {
  293. title: '整改责任主体',
  294. dataIndex: 'auditedUnitName',
  295. width: '220px',
  296. },
  297. {
  298. title: '计划完成日期',
  299. dataIndex: 'draftFinishDate',
  300. sdRender: TableColumnTypes.date,
  301. width: '170px',
  302. },
  303. {
  304. title: '整改状态',
  305. dataIndex: 'rectStatus',
  306. sorter: true,
  307. sortDirections: ['ascend', 'descend'],
  308. width: '100px',
  309. },
  310. {
  311. title: '是否超期未整改',
  312. dataIndex: 'isTrue',
  313. width: '150px',
  314. sdHidden: true,
  315. },
  316. {
  317. title: '整改完成日期',
  318. dataIndex: 'finishDate',
  319. sdRender: TableColumnTypes.date,
  320. width: '170px',
  321. },
  322. {
  323. title: '销号状态',
  324. dataIndex: 'cancellStatus',
  325. width: '150px',
  326. },
  327. // {
  328. // title: '确认状态',
  329. // dataIndex: 'confirmStatus',
  330. // width: '100px',
  331. // sdHidden: true,
  332. // },
  333. {
  334. title: '结束/发布标记(流程是否结束)',
  335. dataIndex: 'endType',
  336. width: '100px',
  337. sdHidden: true,
  338. },
  339. {
  340. title: '流程实例id',
  341. dataIndex: 'instId',
  342. width: '100px',
  343. sdHidden: true,
  344. },
  345. {
  346. dataIndex: 'auditedContactsAccount',
  347. sdHidden: true,
  348. },
  349. // {
  350. // title: '审计发现问题整改(金额类)(万元)',
  351. // children: [
  352. {
  353. title: '调整会计账目',
  354. dataIndex: 'adjustAccounts',
  355. width: '200px',
  356. sdCandidate: true,
  357. },
  358. {
  359. title: '收回资金:增加收入数额',
  360. dataIndex: 'recoveryFunds',
  361. width: '250px',
  362. sdCandidate: true,
  363. },
  364. {
  365. title: '收回资金:督促清理往来款项收回资金',
  366. dataIndex: 'avoidingWasteAmount',
  367. width: '350px',
  368. sdCandidate: true,
  369. },
  370. {
  371. title: '收回资金:其他',
  372. dataIndex: 'reduceInvestmentAmount',
  373. width: '220px',
  374. sdCandidate: true,
  375. },
  376. {
  377. title: '挽回损失:节约成本费用(开支)数额',
  378. dataIndex: 'costSavingAmount',
  379. width: '350px',
  380. sdCandidate: true,
  381. },
  382. {
  383. title: '挽回损失:工程审减金额',
  384. dataIndex: 'engineeringReduction',
  385. width: '220px',
  386. sdCandidate: true,
  387. },
  388. {
  389. title: '挽回损失:清退不当得利',
  390. dataIndex: 'improperClearanceAmount',
  391. width: '220px',
  392. sdCandidate: true,
  393. },
  394. {
  395. title: '挽回损失:其他',
  396. dataIndex: 'recoveryLossAmount',
  397. width: '220px',
  398. sdCandidate: true,
  399. },
  400. {
  401. title: '归还原资金渠道',
  402. dataIndex: 'repaymentChannels',
  403. width: '220px',
  404. sdCandidate: true,
  405. },
  406. {
  407. title: '补缴税费',
  408. dataIndex: 'paymentTaxesFees',
  409. width: '220px',
  410. sdCandidate: true,
  411. },
  412. {
  413. title: '其他',
  414. dataIndex: 'otherAmount',
  415. width: '220px',
  416. sdCandidate: true,
  417. },
  418. // ],
  419. // },
  420. // {
  421. // title: '审计发现问题整改(非金额类)(个)',
  422. // children: [
  423. {
  424. title: '新建制度、流程、标准(项)',
  425. dataIndex: 'newItems',
  426. width: '300px',
  427. sdCandidate: true,
  428. },
  429. {
  430. title: '修订制度、流程、标准(项)',
  431. dataIndex: 'reviseItems',
  432. width: '300px',
  433. sdCandidate: true,
  434. },
  435. // ],
  436. // },
  437. // {
  438. // title: '追责问责处理情况',
  439. // children: [
  440. {
  441. title: '移送纪检监察部门案件线索(件)',
  442. dataIndex: 'transferMonitorClue',
  443. width: '300px',
  444. sdCandidate: true,
  445. },
  446. {
  447. title: '追责问责人次',
  448. dataIndex: 'personNum',
  449. width: '220px',
  450. sdCandidate: true,
  451. },
  452. {
  453. title: '组织处理:批评教育',
  454. dataIndex: 'dealWayOne',
  455. width: '220px',
  456. sdCandidate: true,
  457. },
  458. {
  459. title: '组织处理:责令书面检查',
  460. dataIndex: 'dealWayTwo',
  461. width: '220px',
  462. sdCandidate: true,
  463. },
  464. {
  465. title: '组织处理:通报批评',
  466. dataIndex: 'dealWayThree',
  467. width: '220px',
  468. sdCandidate: true,
  469. },
  470. {
  471. title: '组织处理:诫勉',
  472. dataIndex: 'dealWayFour',
  473. width: '220px',
  474. sdCandidate: true,
  475. },
  476. {
  477. title: '组织处理:停职',
  478. dataIndex: 'dealWayFive',
  479. width: '220px',
  480. sdCandidate: true,
  481. },
  482. {
  483. title: '组织处理:调离工作岗位',
  484. dataIndex: 'dealWaySix',
  485. width: '220px',
  486. sdCandidate: true,
  487. },
  488. {
  489. title: '组织处理:降职',
  490. dataIndex: 'dealWaySeven',
  491. width: '220px',
  492. sdCandidate: true,
  493. },
  494. {
  495. title: '组织处理:改任非领导职务',
  496. dataIndex: 'dealWayEight',
  497. width: '220px',
  498. sdCandidate: true,
  499. },
  500. {
  501. title: '组织处理:责令辞职',
  502. dataIndex: 'dealWayNine',
  503. width: '220px',
  504. sdCandidate: true,
  505. },
  506. {
  507. title: '组织处理:免职',
  508. dataIndex: 'dealWayTen',
  509. width: '220px',
  510. sdCandidate: true,
  511. },
  512. {
  513. title: '扣减薪酬',
  514. dataIndex: 'dealWayEleven',
  515. width: '220px',
  516. sdCandidate: true,
  517. },
  518. {
  519. title: '禁入限制',
  520. dataIndex: 'dealWayTwelve',
  521. width: '220px',
  522. sdCandidate: true,
  523. },
  524. {
  525. title: '经济处罚金额(万元)',
  526. dataIndex: 'amountSum',
  527. width: '220px',
  528. sdCandidate: true,
  529. },
  530. // ],
  531. // },
  532. // {
  533. // title: '根据审计建议给予党纪、政务和内部纪律处分',
  534. // children: [
  535. {
  536. title: '合计',
  537. dataIndex: 'mentNum',
  538. width: '220px',
  539. sdCandidate: true,
  540. },
  541. {
  542. title: '党纪处分:警告',
  543. dataIndex: 'dealMannerOne',
  544. width: '220px',
  545. sdCandidate: true,
  546. },
  547. {
  548. title: '党纪处分:严重警告',
  549. dataIndex: 'dealMannerTwo',
  550. width: '220px',
  551. sdCandidate: true,
  552. },
  553. {
  554. title: '党纪处分:撤销党内职务',
  555. dataIndex: 'dealMannerThree',
  556. width: '220px',
  557. sdCandidate: true,
  558. },
  559. {
  560. title: '党纪处分:留党察看',
  561. dataIndex: 'dealMannerFour',
  562. width: '220px',
  563. sdCandidate: true,
  564. },
  565. {
  566. title: '党纪处分:开除党籍',
  567. dataIndex: 'dealMannerFive',
  568. width: '220px',
  569. sdCandidate: true,
  570. },
  571. {
  572. title: '政务处分:警告',
  573. dataIndex: 'dealMannerSix',
  574. width: '220px',
  575. sdCandidate: true,
  576. },
  577. {
  578. title: '政务处分:记过',
  579. dataIndex: 'dealMannerSeven',
  580. width: '220px',
  581. sdCandidate: true,
  582. },
  583. {
  584. title: '政务处分:记大过',
  585. dataIndex: 'dealMannerEight',
  586. width: '220px',
  587. sdCandidate: true,
  588. },
  589. {
  590. title: '政务处分:降级',
  591. dataIndex: 'dealMannerNine',
  592. width: '220px',
  593. sdCandidate: true,
  594. },
  595. {
  596. title: '政务处分:撤职',
  597. dataIndex: 'dealMannerTen',
  598. width: '220px',
  599. sdCandidate: true,
  600. },
  601. {
  602. title: '政务处分:开除',
  603. dataIndex: 'dealMannerEleven',
  604. width: '220px',
  605. sdCandidate: true,
  606. },
  607. {
  608. title: '内部纪律处分',
  609. dataIndex: 'dealMannerTwelve',
  610. width: '220px',
  611. sdCandidate: true,
  612. },
  613. // ],
  614. // },
  615. {
  616. title: '向司法机关移送或报告案件线索',
  617. dataIndex: 'accountability',
  618. width: '300px',
  619. sdCandidate: true,
  620. },
  621. {
  622. title: '其中:涉案人员',
  623. dataIndex: 'otherItems',
  624. width: '300px',
  625. sdCandidate: true,
  626. },
  627. {
  628. title: '操作',
  629. dataIndex: 'opt',
  630. aligen: 'center',
  631. customRender: (text, record, index) => {
  632. // if (record.rectStatus !== '已整改' && record.rectStatus !== '风险接受') {
  633. // // if (record.endType === '5' && record.problemNature === 'wt') {
  634. // return (
  635. // <span>
  636. // <a vOn:click={(evt) => this.delayApply(record)}>延期申请</a>
  637. // </span>
  638. // )
  639. // }
  640. if (
  641. record.endType === '5' &&
  642. record.problemNature === 'wt' &&
  643. (record.auditedContactsAccount === getUserInfo().account ||
  644. record.resppersonsAccount === getUserInfo().account ||
  645. this.isQuestionRestarterAcmin)
  646. ) {
  647. return (
  648. <span>
  649. <a vOn:click={(evt) => this.questionReboot(record)}>问题重启</a>
  650. </span>
  651. )
  652. }
  653. },
  654. width: '100px',
  655. },
  656. ],
  657. actions: [
  658. {
  659. label: '导出',
  660. permission: null, // 纯前端操作,不需要权限控制
  661. callback: () => {
  662. this.$refs.exportData.exportdata()
  663. },
  664. },
  665. {
  666. label: '批量导出附件',
  667. id: 'exportdataFiles',
  668. permission: null, // 纯前端操作,不需要权限控制
  669. callback: this.exportdataFiles,
  670. },
  671. // {
  672. // label: '导出审计整改台账',
  673. // sdHidden: true,
  674. // id: 'exportQuestion',
  675. // permission: null, // 纯前端操作,不需要权限控制
  676. // callback: this.exportQuestion,
  677. // },
  678. // {
  679. // label: '导出审计情况统计',
  680. // permission: null, // 纯前端操作,不需要权限控制
  681. // callback: this.exportSituationStatistics,
  682. // },
  683. // {
  684. // label: '导出项目整改完成情况',
  685. // permission: null, // 纯前端操作,不需要权限控制
  686. // callback: this.exportResultStatistics,
  687. // },
  688. // {
  689. // label: '导出审计机构基本情况',
  690. // permission: null, // 纯前端操作,不需要权限控制
  691. // callback: this.exportOne,
  692. // },
  693. // {
  694. // label: '导出业务审计情况',
  695. // permission: null, // 纯前端操作,不需要权限控制
  696. // callback: this.exportTwo,
  697. // },
  698. // {
  699. // label: '导出国资委报表',
  700. // permission: null, // 纯前端操作,不需要权限控制
  701. // callback: this.exportThree,
  702. // },
  703. ],
  704. // typeId: null;
  705. advSearchForm: {
  706. projectName: '',
  707. findTtile: '',
  708. auditedUnit: '',
  709. rectStatus: [],
  710. giveOpinion: [],
  711. problemNature: [],
  712. rectType: [],
  713. cancellStatus: [],
  714. planYear: '',
  715. // confirmStatus: [],
  716. },
  717. unitName: '',
  718. StatusOptions: [],
  719. giveOpinions: [],
  720. problemNatureOpinions: [],
  721. rectTypeOpinions: [],
  722. cancellStatusOptions: [],
  723. confirmStatusOptions: [],
  724. isQuestionRestarterAcmin: false,
  725. }
  726. },
  727. mounted() {
  728. // 初始化数据字典信息
  729. this.initDictionaryInfo()
  730. const adminRole = getUserInfo().roles.find((item) => {
  731. return item.code === 'G-1_Question_restart'
  732. })
  733. console.log(adminRole)
  734. this.isQuestionRestarterAcmin = adminRole
  735. },
  736. methods: {
  737. yearChange(value) {
  738. this.year = value
  739. this.formData.planYear = value.format('YYYY')
  740. if (document.getElementsByClassName('ant-calendar-picker-container').length > 0) {
  741. document.getElementsByClassName('ant-calendar-picker-container')[0].style.display = 'none'
  742. }
  743. },
  744. handleEndOpenChange(open) {
  745. this.endOpen = open
  746. },
  747. initDictionaryInfo() {
  748. axios({
  749. url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=RECT_STATUS',
  750. method: 'get',
  751. }).then((res) => {
  752. this.StatusOptions = res.data.map((val) => {
  753. return {
  754. id: val.id,
  755. name: val.name,
  756. }
  757. })
  758. })
  759. // 是否属于审计意见书问题
  760. axios({
  761. url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=WHETHER',
  762. method: 'get',
  763. }).then((res) => {
  764. this.giveOpinions = res.data.map((val) => {
  765. return {
  766. id: val.id,
  767. name: val.name,
  768. }
  769. })
  770. })
  771. // 问题性质
  772. axios({
  773. url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=IAM_PROBLEM_NATURE',
  774. method: 'get',
  775. }).then((res) => {
  776. this.problemNatureOpinions = res.data.map((val) => {
  777. return {
  778. id: val.id,
  779. name: val.name,
  780. }
  781. })
  782. })
  783. // 整改类型
  784. axios({
  785. url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=RECT_TYPE',
  786. method: 'get',
  787. }).then((res) => {
  788. this.rectTypeOpinions = res.data.map((val) => {
  789. return {
  790. id: val.id,
  791. name: val.name,
  792. }
  793. })
  794. })
  795. axios({
  796. url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=CANCELL_STATUS',
  797. method: 'get',
  798. }).then((res) => {
  799. if (res.status === 200) {
  800. this.cancellStatusOptions = res.data
  801. }
  802. })
  803. // axios({
  804. // url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=CONFIRMS_STATUS',
  805. // method: 'get',
  806. // }).then((res) => {
  807. // this.confirmStatusOptions = res.data.map((val) => {
  808. // return {
  809. // id: val.id,
  810. // name: val.name,
  811. // }
  812. // })
  813. // })
  814. },
  815. changeunit(values) {
  816. this.unitName = ''
  817. values.forEach((element) => {
  818. this.unitName = element.name
  819. })
  820. },
  821. // 查看
  822. isViewBtn(record) {
  823. // const url = '/audit-question-form?record=' + record.questionId // 新页面要打开的路由地址
  824. // crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
  825. // if (refreshFlag) {
  826. // this.refresh()
  827. // }
  828. // })
  829. window.open('#/sd-webflow/done-pages/' + record.instId)
  830. },
  831. // 延期申请(旧 无流程)
  832. // delayApply(record) {
  833. // const url = '/audit-delay-form?record=' + record.questionId // 新页面要打开的路由地址
  834. // crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
  835. // if (refreshFlag) {
  836. // this.refresh()
  837. // }
  838. // })
  839. // },
  840. delayApply(record) {
  841. axios({
  842. url:
  843. `api/xcoa-mobile/v1/spicRectifyQuestionDelay/enable-status?rectFeedbackId=` +
  844. record.questionId,
  845. method: 'get',
  846. }).then((res) => {
  847. if (res.data) {
  848. Modal.info({
  849. content: '延期申请未结束',
  850. })
  851. } else {
  852. const url = `/sd-flow-guide?code=SPIC_RECT_DELAY&rectFeedbackId=${record.questionId}`
  853. crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
  854. if (refreshFlag) {
  855. this.refresh()
  856. }
  857. })
  858. }
  859. })
  860. },
  861. showModal(record) {
  862. console.log(record)
  863. this.modalUser = [
  864. {
  865. code: record.auditedContactsAccount,
  866. name: record.auditedContactsName,
  867. type: 'User',
  868. },
  869. ]
  870. this.modalRecord = record
  871. this.modalVisible = true
  872. },
  873. handleCancel() {
  874. this.modalUser = []
  875. this.modalRecord = {}
  876. this.modalVisible = false
  877. },
  878. handleOk(e) {
  879. axios({
  880. url:
  881. 'api/xcoa-mobile/v1/spic-common/restart-feedback?id=' +
  882. this.modalRecord.questionId +
  883. '&account=' +
  884. (this.modalUser && this.modalUser[0] ? this.modalUser[0].code : ''),
  885. method: 'get',
  886. }).then((res) => {
  887. if (res.data) {
  888. Modal.info({
  889. title: '提示',
  890. content: '重启成功!',
  891. })
  892. this.modalVisible = false
  893. this.refresh()
  894. } else {
  895. Modal.warning({
  896. title: '提示',
  897. content: '重启失败,请联系管理员!',
  898. })
  899. this.modalVisible = false
  900. }
  901. })
  902. this.modalUser = []
  903. this.modalRecord = {}
  904. this.modalVisible = false
  905. },
  906. // 问题重启
  907. questionReboot(record) {
  908. this.showModal(record)
  909. },
  910. refresh() {
  911. return this.$refs.WTQDDataTable.refresh(true)
  912. },
  913. // 查询
  914. handleSearch() {
  915. this.expressions = []
  916. // 审计发现标题
  917. if (this.formData.findTitle) {
  918. this.expressions.push({
  919. dataType: 'str',
  920. name: 'findTitle',
  921. op: 'like',
  922. stringValue: `%${this.formData.findTitle}%`,
  923. })
  924. }
  925. // 整改责任主体
  926. if (this.formData.auditedUnit) {
  927. this.expressions.push({
  928. dataType: 'str',
  929. name: 'auditedUnitName',
  930. op: 'like',
  931. stringValue: `%${this.unitName}%`,
  932. })
  933. }
  934. // 项目名称
  935. if (this.formData.projectName) {
  936. this.expressions.push({
  937. dataType: 'str',
  938. name: 'projectName',
  939. op: 'like',
  940. stringValue: `%${this.formData.projectName}%`,
  941. })
  942. }
  943. // 整改状态
  944. if (this.formData.rectStatus.length > 0) {
  945. this.expressions.push({
  946. dataType: 'str',
  947. name: 'rectStatus',
  948. op: 'like',
  949. stringValue: `%${this.formData.rectStatus[0].id}%`,
  950. })
  951. }
  952. // 是否属于审计意见书问题
  953. if (this.formData.giveOpinion.length > 0) {
  954. this.expressions.push({
  955. dataType: 'str',
  956. name: 'giveOpinion',
  957. op: 'like',
  958. stringValue: `%${this.formData.giveOpinion[0].id}%`,
  959. })
  960. }
  961. // 问题性质
  962. if (this.formData.problemNature.length > 0) {
  963. this.expressions.push({
  964. dataType: 'str',
  965. name: 'problemNature',
  966. op: 'like',
  967. stringValue: `%${this.formData.problemNature[0].id}%`,
  968. })
  969. }
  970. // 整改类型
  971. if (this.formData.rectType.length > 0) {
  972. this.expressions.push({
  973. dataType: 'str',
  974. name: 'rectType',
  975. op: 'like',
  976. stringValue: `%${this.formData.rectType[0].id}%`,
  977. })
  978. }
  979. // 销号状态
  980. if (this.formData.cancellStatus.length > 0) {
  981. this.expressions.push({
  982. dataType: 'str',
  983. name: 'cancellStatus',
  984. op: 'like',
  985. stringValue: `%${this.formData.cancellStatus[0].id}%`,
  986. })
  987. }
  988. // 项目年份
  989. if (this.formData.planYear.length > 0) {
  990. this.expressions.push({
  991. dataType: 'str',
  992. name: 'planYear',
  993. op: 'eq',
  994. stringValue: `${this.formData.planYear}`,
  995. })
  996. }
  997. // 确认状态
  998. // if (this.formData.confirmStatus.length > 0) {
  999. // this.expressions.push({
  1000. // dataType: 'str',
  1001. // name: 'confirmStatus',
  1002. // op: 'like',
  1003. // stringValue: `%${this.formData.confirmStatus[0].id}%`,
  1004. // })
  1005. // }
  1006. // this.expand = false
  1007. },
  1008. searchedClick() {
  1009. this.expand = !this.expand
  1010. },
  1011. // 重置年份
  1012. resetForm() {
  1013. // this.formData.confirmStatus = []
  1014. this.formData.rectStatus = []
  1015. this.formData.giveOpinion = []
  1016. this.formData.problemNature = []
  1017. this.formData.rectType = []
  1018. this.formData.cancellStatus = []
  1019. this.advSearchForm.auditedUnit = ''
  1020. this.unitName = ''
  1021. },
  1022. // 导出问题附件
  1023. exportdataFiles() {
  1024. const selectedRowKeys = this.$refs.WTQDDataTable.getSelectedRowKeys()
  1025. if (selectedRowKeys.length === 0) {
  1026. Modal.warning({
  1027. title: '提示',
  1028. content: '请选择要一键导出附件的问题(最多可选择10条)',
  1029. })
  1030. } else {
  1031. const timestamp = new Date().getTime()
  1032. console.log(timestamp)
  1033. axios({
  1034. method: 'get',
  1035. url: 'api/xcoa-mobile/v1/spic-common/exportFindFiles/' + selectedRowKeys,
  1036. responseType: 'blob',
  1037. }).then((res) => {
  1038. if (res.data) {
  1039. let blob = null
  1040. let fileName = res.headers['content-disposition']?.split('fileName=')[1]
  1041. if (fileName === null || fileName === undefined) {
  1042. fileName = '.zip'
  1043. }
  1044. blob = new Blob([res.data], { type: 'application/zip' })
  1045. const time = moment(moment()).format('yyyyMMDD')
  1046. fileName = '审计问题证明性材料-' + time + '.zip'
  1047. if ('msSaveOrOpenBlob' in navigator) {
  1048. // 适配ie
  1049. window.navigator.msSaveOrOpenBlob(blob, fileName)
  1050. } else {
  1051. // 其他浏览器
  1052. const blobUrl = window.URL.createObjectURL(blob)
  1053. const a = document.createElement('a')
  1054. a.style.display = 'none'
  1055. a.href = blobUrl
  1056. a.setAttribute('download', fileName)
  1057. a.click()
  1058. }
  1059. message.success('导出成功')
  1060. } else {
  1061. message.error('导出失败,请联系系统管理员')
  1062. }
  1063. })
  1064. }
  1065. },
  1066. // 导出审计整改台账
  1067. exportQuestion() {
  1068. axios({
  1069. method: 'post',
  1070. url: 'api/xcoa-mobile/v1/spicProblemListExport/exportRectLedger',
  1071. responseType: 'blob',
  1072. data: {
  1073. unitIds: '',
  1074. dateStart: '',
  1075. dateEnd: '',
  1076. },
  1077. }).then((res) => {
  1078. const url = URL.createObjectURL(res.data)
  1079. download(url, '审计整改台账表.xlsx')
  1080. })
  1081. },
  1082. // 导出审计情况统计
  1083. exportSituationStatistics() {
  1084. axios({
  1085. method: 'post',
  1086. url: 'api/xcoa-mobile/v1/spicProblemListExport/exportSituationStatistics',
  1087. responseType: 'blob',
  1088. data: {
  1089. unitIds: '',
  1090. dateStart: '',
  1091. dateEnd: '',
  1092. },
  1093. }).then((res) => {
  1094. const url = URL.createObjectURL(res.data)
  1095. download(url, '审计情况统计报表.xls')
  1096. })
  1097. },
  1098. // 导出审计项目整改完成情况及成果统计月度
  1099. exportResultStatistics() {
  1100. axios({
  1101. method: 'post',
  1102. url: 'api/xcoa-mobile/v1/spicProblemListExport/exportResultStatistics',
  1103. responseType: 'blob',
  1104. data: {
  1105. unitIds: '',
  1106. dateStart: '',
  1107. dateEnd: '',
  1108. },
  1109. }).then((res) => {
  1110. const url = URL.createObjectURL(res.data)
  1111. download(url, '审计项目整改完成情况及成果统计月度表.xls')
  1112. })
  1113. },
  1114. // 导出单位及内部审计机构基本情况
  1115. exportOne() {
  1116. axios({
  1117. method: 'post',
  1118. url: 'api/xcoa-mobile/v1/iam-audits-statistics/exportIamOrgExcel',
  1119. responseType: 'blob',
  1120. data: {
  1121. unitIds: '',
  1122. dateStart: '',
  1123. dateEnd: '',
  1124. },
  1125. }).then((res) => {
  1126. const url = URL.createObjectURL(res.data)
  1127. download(url, '单位及内部审计机构基本情况表.xls')
  1128. })
  1129. },
  1130. // // 导出单位内部业务审计情况
  1131. exportTwo() {
  1132. axios({
  1133. method: 'post',
  1134. url: 'api/xcoa-mobile/v1/iam-audits-statistics/exportIamDwywExcel',
  1135. responseType: 'blob',
  1136. data: {
  1137. unitIds: '',
  1138. dateStart: '',
  1139. dateEnd: '',
  1140. },
  1141. }).then((res) => {
  1142. const url = URL.createObjectURL(res.data)
  1143. download(url, '单位内部业务审计情况表.xls')
  1144. })
  1145. },
  1146. // 导出单位内部审计工作情况
  1147. exportThree() {
  1148. axios({
  1149. method: 'post',
  1150. url: 'api/xcoa-mobile/v1/iam-auditWork-statistics/exportGZWExcel',
  1151. responseType: 'blob',
  1152. data: {
  1153. unitIds: '',
  1154. dateStart: '',
  1155. dateEnd: '',
  1156. },
  1157. }).then((res) => {
  1158. const url = URL.createObjectURL(res.data)
  1159. download(url, '国资委报表.xls')
  1160. })
  1161. },
  1162. processReq(req) {
  1163. const url = req.url
  1164. if (url === 'api/xcoa-mobile/v1/iamrectifyquestion/all-list') {
  1165. this.exportExpressions = req.data.expressions
  1166. }
  1167. return req
  1168. },
  1169. },
  1170. }
  1171. </script>
  1172. <style module lang="scss">
  1173. @use '@/common/design' as *;
  1174. .btns {
  1175. position: absolute;
  1176. top: 24px;
  1177. right: 20.5px;
  1178. z-index: 100;
  1179. display: none;
  1180. }
  1181. .buttonSpacing {
  1182. margin-left: 5px;
  1183. }
  1184. .advancedQuery {
  1185. :global(.ant-col .ant-form-item-label) {
  1186. width: 35% !important;
  1187. }
  1188. :global(.ant-col .ant-form-item-control-wrapper) {
  1189. width: 60% !important;
  1190. }
  1191. }
  1192. :global(.recitifyrectstatus) {
  1193. :global(.ant-form-item-label) {
  1194. margin-left: 2em;
  1195. }
  1196. }
  1197. </style>