ic-write-result-modal.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <template>
  2. <sd-detail-modal
  3. ref="resultModal"
  4. :record-id="model.id"
  5. :page-id="pageId"
  6. :modal-props="{ width: 1200 }"
  7. :read-only="readonly"
  8. @actionBtnClick="actionBtnClick"
  9. >
  10. <template v-slot="{ model, fields }">
  11. <table :class="$style.table">
  12. <sd-form-colgroup :columns="4" />
  13. <tr>
  14. <!-- 控制点编号 -->
  15. <sd-form-item-td name="measureCode" />
  16. <!-- 主流程名称 -->
  17. <sd-form-item-td name="mainPrcName" />
  18. </tr>
  19. <tr>
  20. <!-- 子流程名称 -->
  21. <sd-form-item-td name="subPrcName" />
  22. <!-- 子流程编号 -->
  23. <sd-form-item-td name="subPrcCode" />
  24. </tr>
  25. <tr>
  26. <!-- 控制目标 -->
  27. <sd-form-item-td name="controlTarget" :colspan="3" />
  28. </tr>
  29. <tr>
  30. <!-- 主要风险 -->
  31. <sd-form-item-td name="majorRisk" :colspan="3" />
  32. </tr>
  33. <tr>
  34. <!-- 内部控制程序 -->
  35. <sd-form-item-td name="controlProgram" :colspan="3" />
  36. </tr>
  37. <tr>
  38. <!-- 测试结果 -->
  39. <sd-form-item-td name="testResult" :colspan="3" />
  40. </tr>
  41. <tr>
  42. <!-- 测试结果描述 -->
  43. <sd-form-item-td name="resultContent" :colspan="3" :hidden="model.testResult !== '02'" />
  44. </tr>
  45. <tr>
  46. <!-- 缺陷名称 -->
  47. <sd-form-item-td name="defectName" :colspan="3" :hidden="model.testResult !== '02'" />
  48. </tr>
  49. <tr>
  50. <!-- 缺陷描述 -->
  51. <sd-form-item-td name="defectDesc" :colspan="3" :hidden="model.testResult !== '02'" />
  52. </tr>
  53. <tr>
  54. <!-- 整改意见及建议 -->
  55. <sd-form-item-td name="bugSuggestions" :colspan="3" :hidden="model.testResult !== '02'" />
  56. </tr>
  57. <tr>
  58. <!-- 缺陷类型 -->
  59. <sd-form-item-td name="defectType" :hidden="model.testResult !== '02'" />
  60. <!-- 缺陷等级 -->
  61. <sd-form-item-td name="defectLevel" :hidden="model.testResult !== '02'" />
  62. </tr>
  63. <tr>
  64. <!-- 责任人 -->
  65. <sd-form-item-td
  66. name="responsiblePerson"
  67. :hidden="model.testResult !== '02'"
  68. @change="selectPerson"
  69. />
  70. <!-- 责任部门 -->
  71. <sd-form-item-td name="defectDeptOpt" :hidden="model.testResult !== '02'" />
  72. </tr>
  73. <tr>
  74. <!-- 责任岗位 -->
  75. <sd-form-item-td name="responsiblePos" :hidden="model.testResult !== '02'" :colspan="3" />
  76. </tr>
  77. <tr>
  78. <!-- 失效样本附件 -->
  79. <sd-form-item-td name="attachment" :colspan="3">
  80. <template v-slot:read-and-edit>
  81. <sd-attachment
  82. :key="groupId"
  83. :group-id="groupId ? groupId : JSON.parse(fields.attachment.value).value"
  84. :read-only="readonly"
  85. />
  86. </template>
  87. </sd-form-item-td>
  88. </tr>
  89. <tr>
  90. <!-- 是否移交线索 -->
  91. <sd-form-item-td name="isClues" />
  92. <!-- 移交对象 -->
  93. <sd-form-item-td name="handOver" />
  94. </tr>
  95. <tr>
  96. <!-- 测试人员 -->
  97. <sd-form-item-td name="testPerson" />
  98. <!-- 测试时间 -->
  99. <sd-form-item-td name="testDate" />
  100. </tr>
  101. <tr>
  102. <td :colspan="4">
  103. <sd-form-item name="isubIcEvaluationCrossMeasure" :label="null">
  104. <template v-slot:read-and-edit="{ editable }">
  105. <audit-advanced-group
  106. :expand="expandB"
  107. :expand-str="'expandB'"
  108. :group-label="'缺陷涉及金额列表'"
  109. @changedClick="changedClick"
  110. ><template>
  111. <xm-child-table
  112. ref="docformMeasureRel"
  113. v-model="model.isubIcEvaluationCrossMeasure"
  114. :read-only="!editable"
  115. label=""
  116. :fields="
  117. [
  118. {
  119. caption: '序号',
  120. name: 'sortNum',
  121. dataType: 'number',
  122. attr: {},
  123. },
  124. ].concat(Array.from(fields.isubIcEvaluationCrossMeasure.attr.dync))
  125. "
  126. :columns="childColumns"
  127. >
  128. </xm-child-table
  129. ></template>
  130. </audit-advanced-group>
  131. </template>
  132. </sd-form-item>
  133. </td>
  134. </tr>
  135. </table>
  136. </template>
  137. </sd-detail-modal>
  138. </template>
  139. <script>
  140. import moment from 'moment'
  141. import axios from '@/common/services/axios-instance'
  142. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  143. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  144. import IcEvaluationService from './ic-evaluation-service'
  145. import components from './_import-components/ic-write-result-modal-import'
  146. export default {
  147. name: 'IcWriteResultModal',
  148. components: {
  149. auditAdvancedGroup,
  150. ...components,
  151. },
  152. mixins: [auditAdvancedGroupMixins],
  153. data() {
  154. return {
  155. expandB: true,
  156. childColumns: [
  157. {
  158. title: '序号',
  159. dataIndex: 'sortNum',
  160. width: '80px',
  161. customRender: (text, record, index) => `${index + 1}`,
  162. },
  163. { dataIndex: 'type' },
  164. { dataIndex: 'pay' },
  165. ],
  166. groupId: null,
  167. }
  168. },
  169. mounted() {
  170. this.$refs.resultModal.show()
  171. const _this = this
  172. setTimeout(() => {
  173. axios({
  174. url: 'api/framework/v1/page/wp/ic/measure/icMtxMeasure?id=' + this.model.sourceId,
  175. method: 'get',
  176. }).then((res) => {
  177. const controlTarget = res.data.pageFormData.pageFieldInfos.find(
  178. (i) => i.name === 'controlTarget'
  179. )
  180. const measureCode = res.data.pageFormData.pageFieldInfos.find(
  181. (i) => i.name === 'measureCode'
  182. )
  183. const subPrcCode = res.data.pageFormData.pageFieldInfos.find((i) => i.name === 'subPrcCode')
  184. const subPrcName = res.data.pageFormData.pageFieldInfos.find((i) => i.name === 'subPrcName')
  185. const mainPrcName = res.data.pageFormData.pageFieldInfos.find(
  186. (i) => i.name === 'mainPrcName'
  187. )
  188. const majorRisk = res.data.pageFormData.pageFieldInfos.find((i) => i.name === 'majorRisk')
  189. const controlProgram = res.data.pageFormData.pageFieldInfos.find(
  190. (i) => i.name === 'controlProgram'
  191. )
  192. _this.$refs.resultModal.setFieldsValue({
  193. controlTarget: controlTarget.value,
  194. measureCode: measureCode.value,
  195. subPrcCode: subPrcCode.value,
  196. subPrcName: subPrcName.value,
  197. mainPrcName: mainPrcName.value,
  198. majorRisk: majorRisk.value,
  199. controlProgram: controlProgram.value,
  200. })
  201. const fields = [
  202. 'controlTarget',
  203. 'measureCode',
  204. 'subPrcCode',
  205. 'subPrcName',
  206. 'mainPrcName',
  207. 'majorRisk',
  208. 'controlProgram',
  209. 'attachment',
  210. ]
  211. const parseFields = [
  212. 'responsiblePerson',
  213. 'defectDeptOpt',
  214. 'testPerson',
  215. 'isubIcEvaluationCrossMeasure',
  216. ]
  217. for (const key in _this.model) {
  218. if (fields.indexOf(key) === -1 && _this.model[key]) {
  219. if (key === 'testDate') {
  220. _this.$refs.resultModal.setFieldValue(key, moment(_this.model[key]))
  221. } else if (parseFields.includes(key)) {
  222. _this.$refs.resultModal.setFieldValue(key, JSON.parse(_this.model[key]))
  223. } else {
  224. _this.$refs.resultModal.setFieldValue(key, _this.model[key])
  225. }
  226. }
  227. }
  228. _this.groupId = _this.model.attachment ? JSON.parse(_this.model.attachment).value : null
  229. })
  230. }, 1000)
  231. },
  232. methods: {
  233. // 选择缺陷责任人
  234. selectPerson(user) {
  235. const p = user.map((item) =>
  236. IcEvaluationService.getDeptByUser({ account: item.props.account })
  237. )
  238. Promise.all(p).then((res) => {
  239. let dept = res.map((item) => {
  240. return {
  241. code: item.data.department.id,
  242. name: item.data.department.name,
  243. type: 'Group',
  244. }
  245. })
  246. dept = this.uniqueFunc(dept, 'code')
  247. this.$refs.resultModal.setFieldValue('defectDeptOpt', dept)
  248. })
  249. },
  250. uniqueFunc(arr, uniId) {
  251. const res = new Map()
  252. return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1))
  253. },
  254. },
  255. }
  256. </script>
  257. <style module lang="scss">
  258. @use '@/common/design' as *;
  259. .table {
  260. :global(.ant-input-number) {
  261. width: 100%;
  262. }
  263. }
  264. </style>