ic-defect-statement-form.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <template>
  2. <span>
  3. <audit-form-top-banner
  4. :handel-save-form="saveForm"
  5. :form-data="mode"
  6. @handelSaveForm="saveForm"
  7. >
  8. <sd-detail-form
  9. ref="docform"
  10. page-id="ic/defect/statement/icDefectList"
  11. :record-id="this.$route.query.record ? parseInt(this.$route.query.record) : null"
  12. :class="$style.form"
  13. :read-only="mode === 'VIEW' ? true : false"
  14. @close="close(true)"
  15. @saved="saved"
  16. @sdFormReady="sdFormReady"
  17. >
  18. <template v-slot="{ model, fields }">
  19. <table
  20. ><tr
  21. ><td style="padding-left:5px;border:none">
  22. <audit-advanced-group
  23. :expand="expandA"
  24. :expand-str="'expandA'"
  25. :group-label="'基本信息'"
  26. tablestyle="''"
  27. @changedClick="changedClick"
  28. ></audit-advanced-group> </td></tr
  29. ></table>
  30. <table v-show="expandA">
  31. <tr v-show="false"><sd-form-item-td name="rectStatus"></sd-form-item-td></tr>
  32. <tr>
  33. <!-- 评价名称 -->
  34. <sd-form-item-td name="evaluationName"> </sd-form-item-td>
  35. <!-- 控制所属组织 -->
  36. <sd-form-item-td :hidden="true" name="controOrgCode" />
  37. <sd-form-item-td name="controOrgOpt">
  38. <!-- <sd-group-picker
  39. v-model="model.controOrgOpt"
  40. :root-node="rootNode"
  41. :hierarchical="false"
  42. :single="true"
  43. @change="deptchange"
  44. /> -->
  45. <audit-group-picker
  46. v-model="model.controOrgOpt"
  47. :single="true"
  48. :selectall="false"
  49. :read-only="false"
  50. :root-node="rootNode"
  51. :top-node-text="'内控机构'"
  52. :treeparams="{
  53. moduleId: 'icMtxVersion',
  54. }"
  55. @change="deptchange"
  56. />
  57. </sd-form-item-td>
  58. </tr>
  59. <tr>
  60. <!-- 流程名称 -->
  61. <sd-form-item-td name="prcName">{{ model.prcName }}</sd-form-item-td>
  62. <!-- 控制点名称 -->
  63. <sd-form-item-td name="measureName">
  64. <a-input v-model="model.measureName" style="width:calc(100% - 80px);" read-only />
  65. <span style="padding:5px">
  66. <a-button @click="showflpath">选择</a-button>
  67. </span>
  68. </sd-form-item-td>
  69. </tr>
  70. <tr>
  71. <!-- 控制点编号 -->
  72. <sd-form-item-td name="measureCode">{{ model.measureCode }}</sd-form-item-td>
  73. <!-- 测试结果 -->
  74. <sd-form-item-td name="testResult" component="a-select" />
  75. </tr>
  76. <tr>
  77. <!-- 缺陷类型 -->
  78. <sd-form-item-td name="defectType" component="a-select" />
  79. <!-- 缺陷等级 -->
  80. <sd-form-item-td name="defectLevel" component="a-select" />
  81. </tr>
  82. <tr>
  83. <!-- 缺陷责任组织 -->
  84. <sd-form-item-td name="liabilityOrgOpt" />
  85. <!-- 录入方式 -->
  86. <sd-form-item-td v-if="initParam(model)" name="entryMethod">
  87. {{ model.entryMethod }}</sd-form-item-td
  88. >
  89. </tr>
  90. </table>
  91. </template>
  92. </sd-detail-form>
  93. </audit-form-top-banner>
  94. <ic-measure-select
  95. ref="mtxmeasuresel"
  96. :version-id="versionId"
  97. :single="true"
  98. :org-id="orgId + ''"
  99. :org-name="orgName"
  100. :selected-keys="[]"
  101. @fnqd="fnqd"
  102. />
  103. </span>
  104. </template>
  105. <script>
  106. import { getUserInfo } from '@/common/store-mixin'
  107. import { Modal, Message } from 'ant-design-vue'
  108. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  109. import axios from '@/common/services/axios-instance'
  110. import auditGroupPicker from '@product/iam/components/picker/audit-group-picker.vue'
  111. import icMeasureSelect from '../../../components/ic-measure-select.vue'
  112. import auditFormTopBanner from '../../../components/audit-form-top-banner'
  113. import auditAdvancedGroup from '../../../components/audit-advanced-group.vue'
  114. import auditAdvancedGroupMixins from '../../../components/audit-advanced-group-mixins'
  115. import MtxProcessService from '../../mtxprocess/mtx-process-service'
  116. import components from './_import-components/ic-defect-statement-form-import'
  117. export default {
  118. name: 'IcDefectStatementForm',
  119. metaInfo: {
  120. title: '缺陷清单表单',
  121. },
  122. components: {
  123. ...components,
  124. auditFormTopBanner,
  125. auditAdvancedGroup,
  126. icMeasureSelect,
  127. auditGroupPicker,
  128. },
  129. mixins: [auditAdvancedGroupMixins],
  130. data() {
  131. return {
  132. entryMethod: '录入',
  133. expandA: true,
  134. mode: null,
  135. versionId: null,
  136. orgId: null,
  137. orgName: '',
  138. rootNode: {},
  139. flag: true,
  140. }
  141. },
  142. mounted() {
  143. let userInfo = getUserInfo()
  144. const params = {
  145. orgId: userInfo.deptId,
  146. moduleId: 'icMtxVersion',
  147. }
  148. axios({
  149. url: 'api/xcoa-mobile/v1/iamorg/getCurrentUserGroup',
  150. method: 'get',
  151. }).then((res) => {
  152. userInfo = res.data
  153. params.orgId = res.data.id
  154. axios({
  155. url: 'api/xcoa-mobile/v1/iamorg/findIamOrgId',
  156. method: 'post',
  157. params,
  158. }).then((res1) => {
  159. // this.id = res.data
  160. const deptCode = userInfo.id.toString()
  161. const deptName = userInfo.name
  162. this.rootNode = { code: res1.data, name: deptName, id: res1.data }
  163. this.orgName = deptName
  164. })
  165. })
  166. if (this.$route.query.versionId) {
  167. this.versionId = parseInt(this.$route.query.versionId)
  168. }
  169. },
  170. methods: {
  171. deptchange(val) {
  172. if (val) {
  173. this.orgId = null
  174. this.versionId = null
  175. // 根据组织ID获取到机构ID
  176. const params = {
  177. orgId: val[0].code,
  178. moduleId: 'icMtxVersion',
  179. }
  180. this.orgName = val[0].name
  181. this.orgId = val[0].oldId
  182. MtxProcessService.getversion(this.orgId).then((res) => {
  183. if (res.data.id) {
  184. this.versionId = res.data.id.toString()
  185. }
  186. })
  187. this.$refs.docform.setFieldValue('controOrgCode', val[0].oldId.toString())
  188. }
  189. },
  190. fnqd(data) {
  191. if (data.length !== 1) {
  192. return false
  193. } else {
  194. axios({
  195. url: 'api/framework/v1/page/wp/ic/measure/icMtxMeasure?id=' + data[0].toString(),
  196. method: 'get',
  197. }).then((res) => {
  198. const measureName = res.data.pageFormData.pageFieldInfos.findIndex(
  199. (i) => i.name === 'measureName'
  200. )
  201. const measureCode = res.data.pageFormData.pageFieldInfos.findIndex(
  202. (i) => i.name === 'measureCode'
  203. )
  204. const mtxPrcId = res.data.pageFormData.pageFieldInfos.findIndex(
  205. (i) => i.name === 'mtxPrcId'
  206. )
  207. this.$refs.docform?.setFieldValue(
  208. 'measureName',
  209. res.data.pageFormData.pageFieldInfos[measureName].value
  210. )
  211. this.$refs.docform?.setFieldValue(
  212. 'measureCode',
  213. res.data.pageFormData.pageFieldInfos[measureCode].value
  214. )
  215. this.getpath(res.data.pageFormData.pageFieldInfos[mtxPrcId].value).then((d) => {
  216. this.$refs.docform?.setFieldValue('prcName', d)
  217. })
  218. })
  219. }
  220. },
  221. initParam(model) {
  222. if (this.flag) {
  223. if (this.$route.query.record && this.$route.query.record !== '') {
  224. this.orgId = model.controOrgCode
  225. if (model.entryMethod !== '转入') {
  226. MtxProcessService.getversion(this.orgId).then((res) => {
  227. if (res.data.id) {
  228. this.versionId = res.data.id.toString()
  229. }
  230. })
  231. }
  232. } else {
  233. model.controOrgOpt = []
  234. model.liabilityOrgOpt = []
  235. model.entryMethod = this.entryMethod
  236. model.rectStatus = '01'
  237. }
  238. this.flag = false
  239. }
  240. return true
  241. },
  242. getpath(id) {
  243. return new Promise((resolve, reject) => {
  244. MtxProcessService.findupcatinfo(id).then((res) => {
  245. resolve(res.data)
  246. })
  247. })
  248. },
  249. showflpath() {
  250. if (this.versionId) {
  251. this.$refs.mtxmeasuresel.showtree()
  252. } else {
  253. Modal.info({
  254. content: '请联系管理员配置' + this.orgName + '所属机构',
  255. })
  256. }
  257. },
  258. // 页面加载完成后
  259. sdFormReady() {
  260. this.mode = this.$refs.docform.formData.mode
  261. // 如果是转入,则直接是VIEW
  262. const index = this.$refs.docform.formData.pageFormData.pageFieldInfos.findIndex(
  263. (i) => i.name === 'entryMethod'
  264. )
  265. const zgid = this.$refs.docform.formData.pageFormData.pageFieldInfos.findIndex(
  266. (i) => i.name === 'rectRequireId'
  267. )
  268. if (this.$refs.docform.formData.pageFormData.pageFieldInfos[index].value === '转入') {
  269. this.mode = 'VIEW'
  270. } else if (
  271. this.$refs.docform.formData.pageFormData.pageFieldInfos[zgid].value !== undefined &&
  272. this.$refs.docform.formData.pageFormData.pageFieldInfos[zgid].value !== null
  273. ) {
  274. this.mode = 'VIEW'
  275. } else {
  276. const createname = this.$refs.docform.formData.pageFormData.pageFieldInfos.findIndex(
  277. (i) => i.name === 'creatorName'
  278. )
  279. if (
  280. this.$refs.docform.formData.pageFormData.pageFieldInfos[createname].value !==
  281. getUserInfo().name
  282. ) {
  283. this.mode = 'VIEW'
  284. }
  285. if (!this.mode) {
  286. this.mode = this.$route.query.mode
  287. }
  288. }
  289. },
  290. close(flag) {
  291. crossWindowWatcher.notifyChange(this.$route.fullPath, flag)
  292. window.close()
  293. },
  294. saved() {
  295. Message.success({ content: '保存成功!' }, 1).then(() => {
  296. this.close(true)
  297. })
  298. },
  299. // 保存
  300. saveForm() {
  301. this.$refs.docform.validateFields().then((valid) => {
  302. if (valid) {
  303. var opt = this.$refs.docform.getFieldValue('controOrgOpt')
  304. if (opt !== undefined) {
  305. opt[0].type = 'Group'
  306. this.$refs.docform.setFieldValue('controOrgOpt', opt)
  307. }
  308. this.$refs.docform.saveBtnClick()
  309. }
  310. })
  311. },
  312. },
  313. }
  314. </script>
  315. <style module lang="scss">
  316. @use '@/common/design' as *;
  317. @import '@/webflow/sd-flow-form.scss';
  318. .btnselect {
  319. position: relative;
  320. top: 4px;
  321. right: 200px;
  322. float: right;
  323. .batchselect {
  324. z-index: 100;
  325. margin-left: 10px;
  326. }
  327. }
  328. .tablexm tr td {
  329. border: none !important;
  330. }
  331. </style>