iam-ic-rectify-feedback-form.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. <template>
  2. <div>
  3. <sd-webflow ref="flow" :removed-tabs="['sdRelatedDoc']" :class="$style.mainForm">
  4. <template v-slot:form="{ model, fields }">
  5. <table>
  6. <tr>
  7. <td style="border: none">
  8. <audit-advanced-group
  9. :expand="planExpand"
  10. expand-str="planExpand"
  11. group-label="基本信息"
  12. tablestyle=""
  13. @changedClick="changedClick"
  14. ></audit-advanced-group>
  15. </td>
  16. </tr>
  17. </table>
  18. <table v-show="planExpand">
  19. <tr>
  20. <!-- 整改名称 -->
  21. <sd-form-item-td name="rectName">
  22. <template v-slot:read-and-edit="{ editable }">
  23. {{ model.rectName }}
  24. </template>
  25. </sd-form-item-td>
  26. <!-- 整改要求编号 -->
  27. <sd-form-item-td name="rectCode">
  28. <template v-slot:read-and-edit="{ editable }">
  29. {{ model.rectCode }}
  30. </template>
  31. </sd-form-item-td>
  32. </tr>
  33. <tr>
  34. <!-- 整改计划反馈截止日期 -->
  35. <td class="ant-form-item-label ant-form-item-label">
  36. <label
  37. title="整改计划反馈截止日期"
  38. :class="fields.feedbackDate.required ? 'ant-form-item-required' : ''"
  39. >
  40. 整改计划反馈<br />{{ '截\u2002止\u2003日\u2002期' }}
  41. </label>
  42. </td>
  43. <sd-form-item-td
  44. name="feedbackDate"
  45. :colspan="3"
  46. :label="'整改计划反馈截止日期'"
  47. :label-td-attrs="{ hidden: true }"
  48. >
  49. <template v-slot:read-and-edit="{ editable }">
  50. {{ model.feedbackDate | sdDateFormat('YYYY-MM-DD') }}
  51. </template>
  52. </sd-form-item-td>
  53. </tr>
  54. <tr>
  55. <!-- 附件 -->
  56. <sd-form-item-td name="requireAttachment" :colspan="3">
  57. <template v-slot:read-and-edit="{ editable }">
  58. <sd-attachment
  59. :uploadable="false"
  60. read-only
  61. :group-id="JSON.parse(fields.requireAttachment.value).value"
  62. :init-value="getRequireAttachment(fields.requireAttachment)"
  63. >
  64. </sd-attachment>
  65. </template>
  66. </sd-form-item-td>
  67. </tr>
  68. <tr>
  69. <!-- 整改要求 -->
  70. <sd-form-item-td name="rectRequire" :colspan="3">
  71. <template v-slot:read-and-edit="{ editable }">
  72. {{ model.rectRequire }}
  73. </template>
  74. </sd-form-item-td>
  75. </tr>
  76. <tr>
  77. <!-- 创建人 -->
  78. <sd-form-item-td name="requireCreatorName">
  79. <template v-slot:read-and-edit="{ editable }">
  80. {{ model.requireCreatorName }}
  81. </template>
  82. </sd-form-item-td>
  83. <!-- 创建日期 -->
  84. <sd-form-item-td name="requireCreationTime">
  85. <template v-slot:read-and-edit="{ editable }">
  86. {{ model.requireCreationTime | sdDateFormat('YYYY-MM-DD') }}
  87. </template>
  88. </sd-form-item-td>
  89. </tr>
  90. </table>
  91. <table>
  92. <tr>
  93. <td style="border: none">
  94. <audit-advanced-group
  95. :expand="defectExpand"
  96. expand-str="defectExpand"
  97. group-label="缺陷信息"
  98. tablestyle=""
  99. @changedClick="changedClick"
  100. ></audit-advanced-group>
  101. </td>
  102. </tr>
  103. </table>
  104. <table v-show="defectExpand">
  105. <tr>
  106. <!-- 评价名称 -->
  107. <sd-form-item-td name="evaluationName">
  108. <template v-slot:read-and-edit="{ editable }">
  109. {{ model.evaluationName }}
  110. </template>
  111. </sd-form-item-td>
  112. <!-- 流程名称 -->
  113. <sd-form-item-td name="prcName">
  114. <template v-slot:read-and-edit="{ editable }">
  115. {{ model.prcName }}
  116. </template>
  117. </sd-form-item-td>
  118. </tr>
  119. <tr>
  120. <!-- 控制点名称 -->
  121. <sd-form-item-td name="measureName">
  122. <template v-slot:read-and-edit="{ editable }">
  123. {{ model.measureName }}
  124. </template>
  125. </sd-form-item-td>
  126. <!-- 控制点编号 -->
  127. <sd-form-item-td name="measureCode">
  128. <template v-slot:read-and-edit="{ editable }">
  129. {{ model.measureCode }}
  130. </template>
  131. </sd-form-item-td>
  132. </tr>
  133. <tr>
  134. <!-- 测试结果 -->
  135. <sd-form-item-td name="testResult">
  136. <template v-slot:read-and-edit="{ editable }">
  137. {{ model.testResult }}
  138. </template>
  139. </sd-form-item-td>
  140. <!-- 缺陷类型 -->
  141. <sd-form-item-td name="defectType">
  142. <template v-slot:read-and-edit="{ editable }">
  143. {{ model.defectType }}
  144. </template>
  145. </sd-form-item-td>
  146. </tr>
  147. <tr>
  148. <!-- 缺陷等级 -->
  149. <sd-form-item-td name="defectLevel">
  150. <template v-slot:read-and-edit="{ editable }">
  151. {{ model.defectLevel }}
  152. </template>
  153. </sd-form-item-td>
  154. <!-- 缺陷责任组织 -->
  155. <sd-form-item-td name="liabilityOrgName">
  156. <template v-slot:read-and-edit="{ editable }">
  157. {{ model.liabilityOrgName }}
  158. </template>
  159. </sd-form-item-td>
  160. </tr>
  161. <tr>
  162. <!-- 整改联系人 -->
  163. <sd-form-item-td name="rectContactName">
  164. <template v-slot:read-and-edit="{ editable }">
  165. {{ model.rectContactName }}
  166. </template>
  167. </sd-form-item-td>
  168. <!-- 整改跟踪人 -->
  169. <sd-form-item-td name="rectTrackerName">
  170. <template v-slot:read-and-edit="{ editable }">
  171. {{ model.rectTrackerName }}
  172. </template>
  173. </sd-form-item-td>
  174. </tr>
  175. </table>
  176. <table>
  177. <tr>
  178. <td style="border: none">
  179. <audit-advanced-group
  180. :expand="defectRectifyExpand"
  181. expand-str="defectRectifyExpand"
  182. group-label="缺陷整改计划"
  183. tablestyle=""
  184. @changedClick="changedClick"
  185. ></audit-advanced-group>
  186. </td>
  187. </tr>
  188. </table>
  189. <table v-show="defectRectifyExpand">
  190. <tr>
  191. <!-- 整改责任部门 -->
  192. <sd-form-item-td name="responsibleDeptName" />
  193. <!-- 直接责任人 -->
  194. <sd-form-item-td name="directResponsibleName" />
  195. </tr>
  196. <tr>
  197. <!-- 拟整改完成日期 -->
  198. <sd-form-item-td name="finishDate" :colspan="3" />
  199. </tr>
  200. <tr>
  201. <!-- 拟整改措施 -->
  202. <sd-form-item-td name="measure" :colspan="3">
  203. <a-textarea v-model="model.measure" :auto-size="{ maxRows: 3, minRows: 3 }" />
  204. </sd-form-item-td>
  205. </tr>
  206. <tr>
  207. <!-- 说明 -->
  208. <sd-form-item-td name="evidenceExplain" :colspan="3">
  209. <a-textarea v-model="model.evidenceExplain" :auto-size="{ maxRows: 3, minRows: 3 }" />
  210. </sd-form-item-td>
  211. </tr>
  212. </table>
  213. <table v-if="!isPlanStat">
  214. <tr>
  215. <td style="border: none">
  216. <audit-advanced-group
  217. :expand="defectRectifyEndExpand"
  218. expand-str="defectRectifyEndExpand"
  219. group-label="缺陷整改结果"
  220. tablestyle=""
  221. @changedClick="changedClick"
  222. ></audit-advanced-group>
  223. </td>
  224. </tr>
  225. </table>
  226. <table v-if="!isPlanStat" v-show="defectRectifyEndExpand">
  227. <tr>
  228. <!-- 整改状态 -->
  229. <sd-form-item-td
  230. name="rectStatus"
  231. :colspan="model.rectStatus === '03' ? 1 : 3"
  232. :input-td-attrs="{
  233. class: model.rectStatus !== '03' ? $style.rectStatusTd : '',
  234. }"
  235. @change="rectStatusChange"
  236. />
  237. <!-- 整改完成日期 -->
  238. <sd-form-item-td name="rectFinishDate" :hidden="model.rectStatus !== '03'" />
  239. </tr>
  240. <tr>
  241. <!-- 整改情况说明 -->
  242. <sd-form-item-td name="description" :colspan="3">
  243. <a-textarea v-model="model.description" :auto-size="{ maxRows: 3, minRows: 3 }" />
  244. </sd-form-item-td>
  245. </tr>
  246. <tr>
  247. <!-- 成果利用 -->
  248. <sd-form-item-td name="resultUse" :colspan="3" component="a-select"> </sd-form-item-td>
  249. </tr>
  250. <tr>
  251. <!-- 附件 -->
  252. <sd-form-item-td name="attachment" :colspan="3"> </sd-form-item-td>
  253. </tr>
  254. </table>
  255. <table v-if="!isPlanStat">
  256. <tr
  257. ><td :colspan="4">
  258. <sd-form-item name="icPreRectResultEntity" :label="null">
  259. <template v-slot:read-and-edit="{ editable }">
  260. <audit-advanced-group
  261. :expand="listExpand"
  262. expand-str="listExpand"
  263. group-label="历次整改结果列表"
  264. @changedClick="changedClick"
  265. >
  266. <template>
  267. <xm-child-table
  268. :key="infoKey"
  269. ref="infoData"
  270. v-model="model.icPreRectResultEntity"
  271. :class="$style.deptPlanChild"
  272. :label="null"
  273. :read-only="true"
  274. :addbuttonvisiable="false"
  275. :fields="
  276. [
  277. {
  278. caption: '序号',
  279. name: 'sortNum',
  280. dataType: 'number',
  281. },
  282. ].concat(Array.from(fields.icPreRectResultEntity.attr.dync))
  283. "
  284. :columns="defectColumns"
  285. :flagpage="true"
  286. >
  287. <!-- 整改状态 -->
  288. <template v-slot:rectStatus_xm="{ text, record, field, value }">
  289. {{ getDictValue(fields.rectStatus.attr.selectListItem, text) }}
  290. </template>
  291. <!-- 整改完成日期 -->
  292. <template v-slot:rectFinishDate_xm="{ text, record, field, value }">
  293. {{ text | sdDateFormat('YYYY-MM-DD') }}
  294. </template>
  295. <!-- 整改情况说明 -->
  296. <template v-slot:description_xm="{ text, record, field, value }">
  297. {{ text }}
  298. </template>
  299. <!-- 成果利用 -->
  300. <template v-slot:resultUse_xm="{ text, record, field, value }">
  301. {{ getDictValue(fields.resultUse.attr.selectListItem, text) }}
  302. </template>
  303. <!-- 附件 -->
  304. <template v-slot:attachment_xm="{ text, record, field, value }">
  305. <sd-attachment :uploadable="false" read-only :group-id="text">
  306. </sd-attachment>
  307. </template>
  308. </xm-child-table>
  309. </template>
  310. </audit-advanced-group>
  311. </template>
  312. </sd-form-item>
  313. </td>
  314. </tr>
  315. </table>
  316. </template>
  317. </sd-webflow>
  318. </div>
  319. </template>
  320. <script>
  321. import auditAdvancedGroup from '@product/iam/components/audit-advanced-group.vue'
  322. import auditAdvancedGroupMixins from '@product/iam/components/audit-advanced-group-mixins'
  323. import iamIcRectifyFeedbackServices from './iam-ic-rectify-feedback-service'
  324. import components from './_import-components/iam-ic-rectify-feedback-form-import'
  325. export default {
  326. name: 'IamIcRectifyFeedbackForm',
  327. metaInfo: {
  328. title: '整改反馈',
  329. },
  330. components: {
  331. ...components,
  332. auditAdvancedGroup,
  333. },
  334. mixins: [auditAdvancedGroupMixins],
  335. data() {
  336. return {
  337. isPlanStat: true, // 是否为计划审核环节
  338. requireAttachmentKey: 0,
  339. userType: null,
  340. infoKey: 0,
  341. rectVisible: false, // 缺陷清单列表显示
  342. planExpand: true,
  343. defectExpand: true,
  344. defectRectifyExpand: true,
  345. defectRectifyEndExpand: true,
  346. listExpand: true,
  347. defectColumns: [
  348. {
  349. title: '序号',
  350. dataIndex: 'sortNum',
  351. width: '50px',
  352. customRender: (text, record, index) => `${index + 1}`,
  353. },
  354. {
  355. dataIndex: 'rectStatus',
  356. title: '整改状态',
  357. width: '150px',
  358. },
  359. { dataIndex: 'rectFinishDate', title: '整改完成日期', width: '150px' },
  360. { dataIndex: 'description', title: '整改情况说明', width: '40%' },
  361. { dataIndex: 'resultUse', title: '成果利用' },
  362. { dataIndex: 'attachment', title: '附件' },
  363. { dataIndex: 'rectFeedbackId', title: 'ID', sdHidden: true },
  364. ],
  365. }
  366. },
  367. mounted() {
  368. // 判断当前环节是否为计划审核环节
  369. this.fnCheckIsPlanStat()
  370. },
  371. methods: {
  372. // 判断是否为计划环节
  373. fnCheckIsPlanStat() {
  374. const checkPlanStat = setInterval(() => {
  375. if (this.$refs.flow) {
  376. clearInterval(checkPlanStat)
  377. if (this.$refs.flow.FlowData.attrs.audit$isPlanStat) {
  378. this.isPlanStat = this.$refs.flow.FlowData.attrs.audit$isPlanStat === true
  379. } else {
  380. iamIcRectifyFeedbackServices
  381. .getSetpInfo(this.$refs.flow.FlowData.instId, this.$refs.flow.FlowData.activeStepId)
  382. .then((res) => {
  383. this.isPlanStat = res.data.audit$isPlanStat === 'true'
  384. })
  385. }
  386. }
  387. }, 100)
  388. },
  389. // 获取附件
  390. getRequireAttachment(attachment) {
  391. // 获取附件列表
  392. const attList = attachment.attr.attachments
  393. return attList.map((item) => {
  394. item.readOnly = false
  395. item.attr.deletable = false
  396. item.attr.editable = false
  397. item.attr.renamable = false
  398. return item
  399. })
  400. },
  401. // 整改状态变化时触发
  402. rectStatusChange(val, option) {
  403. if (val === '03') {
  404. this.$refs.flow.FlowData.processFormData.processFormPropertyValues.find((item) => {
  405. return item.name === 'rectFinishDate'
  406. }).required = true
  407. } else {
  408. this.$refs.flow.FlowData.processFormData.processFormPropertyValues.find((item) => {
  409. return item.name === 'rectFinishDate'
  410. }).required = false
  411. // 不为必填时,清空整改完成时间
  412. this.$refs.flow.setFieldValue('rectFinishDate', null)
  413. }
  414. },
  415. // 获取字典值
  416. getDictValue(list, val) {
  417. return list.find((item) => {
  418. return item.value.trim() === (val + '').trim()
  419. })?.label
  420. },
  421. },
  422. }
  423. </script>
  424. <style module lang="scss">
  425. @use '@/common/design' as *;
  426. .main-form {
  427. :global(.header_xm-child-table_product) {
  428. display: none;
  429. }
  430. :global(.ant-calendar-picker) {
  431. width: 100%;
  432. }
  433. .rect-status-td {
  434. border-right: 0 !important;
  435. }
  436. }
  437. </style>