mtx-measure-form.vue 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376
  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/measure/icMtxMeasure"
  11. :record-id="this.$route.query.record ? parseInt(this.$route.query.record) : null"
  12. :class="$style.form"
  13. @close="close(true)"
  14. @saved="saved"
  15. @sdFormReady="sdFormReady"
  16. >
  17. <template v-slot="{ model, fields }">
  18. <table
  19. ><tr
  20. ><td style="padding-left:5px;border:none">
  21. <audit-advanced-group
  22. :expand="expandA"
  23. :expand-str="'expandA'"
  24. :group-label="'基本信息'"
  25. tablestyle="''"
  26. @changedClick="changedClick"
  27. ></audit-advanced-group> </td></tr
  28. ></table>
  29. <table v-show="expandA">
  30. <colgroup>
  31. <col style="width: 15%;"/>
  32. <col style="width: 35%;"/>
  33. <col style="width: 15%;"/>
  34. <col style="width: 35%;"
  35. /></colgroup>
  36. <tr v-show="false"
  37. ><sd-form-item-td name="mtxPrcId"/> <sd-form-item-td name="auditOrgId"
  38. /></tr>
  39. <tr v-show="false"
  40. ><sd-form-item-td name="mtxVersionId" /><sd-form-item-td name="id" />
  41. </tr>
  42. <tr
  43. ><sd-form-item-td name="mtxPrcPath" :colspan="3" :label="'内控流程'">
  44. <a-input v-model="model.mtxPrcPath" style="width:calc(100% - 80px);" read-only />
  45. <span style="padding:5px">
  46. <a-button @click="showflpath">选择</a-button>
  47. </span>
  48. </sd-form-item-td></tr
  49. >
  50. <tr>
  51. <!-- 措施名称 -->
  52. <sd-form-item-td name="measureName"> </sd-form-item-td>
  53. <!-- 措施编号 -->
  54. <sd-form-item-td name="measureCode" />
  55. </tr>
  56. <tr>
  57. <!-- 措施描述 -->
  58. <sd-form-item-td name="measureDesc" :colspan="3">
  59. <a-textarea v-model="model.measureDesc" :rows="3" />
  60. </sd-form-item-td>
  61. </tr>
  62. <tr>
  63. <sd-form-item-td name="controlLevel" component="a-select" />
  64. <sd-form-item-td name="controlType" component="a-select" />
  65. </tr>
  66. <tr>
  67. <sd-form-item-td name="controlFrequency" component="a-select" />
  68. <sd-form-item-td name="controlWay" component="a-select" />
  69. </tr>
  70. <tr>
  71. <sd-form-item-td name="applicableOrgOpt" />
  72. <sd-form-item-td name="dutyDeptOpt" />
  73. </tr>
  74. <tr>
  75. <sd-form-item-td name="responPosition" />
  76. <sd-form-item-td
  77. name="sortNum"
  78. :input-props="{ defaultValue: sortNum }"
  79. ></sd-form-item-td>
  80. </tr>
  81. <tr>
  82. <sd-form-item-td name="creationTime" />
  83. <sd-form-item-td name="creatorName" />
  84. </tr>
  85. <tr><sd-form-item-td name="businessDocument" :colspan="3"></sd-form-item-td></tr>
  86. <tr>
  87. <sd-form-item-td v-if="initParam(model)" name="remark" :colspan="3">
  88. <a-textarea v-model="model.remark" :rows="3" />
  89. </sd-form-item-td>
  90. </tr> </table
  91. ><table>
  92. <tr
  93. ><td :colspan="4">
  94. <sd-form-item name="icMtxMeasureLawList" :label="null">
  95. <template v-slot:read-and-edit="{ editable }">
  96. <audit-advanced-group
  97. :expand="expandC"
  98. :expand-str="'expandC'"
  99. :group-label="'相关法规制度'"
  100. @changedClick="changedClick"
  101. ><template>
  102. <template>
  103. <div :class="$style.wrapper">
  104. <div v-show="expandY && editable" :class="$style.btnselect">
  105. <a-button
  106. type="link"
  107. :class="$style.batchselect"
  108. @click="lawsRelSelect"
  109. >
  110. <a-icon type="check-circle" :theme="'filled'" />
  111. 选择
  112. </a-button>
  113. </div>
  114. </div>
  115. </template>
  116. <xm-child-table
  117. ref="docformlawlist"
  118. v-model="model.icMtxMeasureLawList"
  119. :read-only="!editable"
  120. label=""
  121. :fields="
  122. [
  123. {
  124. caption: '序号',
  125. name: 'sortNum',
  126. dataType: 'number',
  127. attr: {},
  128. },
  129. ].concat(Array.from(fields.icMtxMeasureLawList.attr.dync))
  130. "
  131. :columns="childlawlistColumns"
  132. :width="1200"
  133. :addfun="addfun"
  134. >
  135. </xm-child-table>
  136. </template>
  137. </audit-advanced-group>
  138. </template> </sd-form-item
  139. ></td>
  140. </tr>
  141. <tr
  142. ><td :colspan="4">
  143. <sd-form-item name="icMtxMeasureEventList" :label="null">
  144. <template v-slot:read-and-edit="{ editable }">
  145. <audit-advanced-group
  146. :expand="expandY"
  147. :expand-str="'expandY'"
  148. :group-label="'相关风险事项'"
  149. @changedClick="changedClick"
  150. ><template>
  151. <template>
  152. <div :class="$style.wrapper">
  153. <div v-show="expandY && editable" :class="$style.btnfxselect">
  154. <a-button
  155. type="link"
  156. :class="$style.batchselect"
  157. @click="measureRelSelect"
  158. >
  159. <a-icon type="check-circle" :theme="'filled'" />
  160. 选择风险事项
  161. </a-button>
  162. </div>
  163. </div>
  164. </template>
  165. <sd-child-table
  166. ref="docformMeasureRel"
  167. v-model="model.icMtxMeasureEventList"
  168. :read-only="!editable"
  169. label=""
  170. :fields="[].concat(Array.from(fields.icMtxMeasureEventList.attr.dync))"
  171. :columns="childmeasureColumns"
  172. :width="1200"
  173. @change="icMtxMeasureEventListChange"
  174. >
  175. <template v-slot:competentDeptOpt="{ record }">
  176. <span>{{ record.competentDeptName }}</span>
  177. </template>
  178. <!-- form 表示这部分是子表组件的form插槽 -->
  179. <template v-slot:form="{ model, fields }">
  180. <table>
  181. <tr>
  182. <td style="padding-left:5px">
  183. <audit-advanced-group
  184. :expand-str="'findinfoExpand'"
  185. :group-label="'基本信息'"
  186. ></audit-advanced-group>
  187. </td>
  188. </tr>
  189. </table>
  190. <table :class="$style.rectprojectchildForm">
  191. <colgroup>
  192. <col style="width: 15%;" />
  193. <col style="width: 35%;" />
  194. <col style="width: 15%;" />
  195. <col style="width: 35%;" />
  196. </colgroup>
  197. <tr v-show="false"
  198. ><sd-form-item-td name="parentId"/>
  199. <sd-form-item-td name="auditOrgId"
  200. /></tr>
  201. <tr v-show="false"
  202. ><sd-form-item-td
  203. name="versionId"
  204. :input-props="{ defaultValue: parseInt(FxversionId) }"
  205. /><sd-form-item-td name="id" />
  206. <sd-form-item-td name="sourceId" />
  207. </tr>
  208. <tr v-show="false"
  209. ><sd-form-item-td name="creatorName"></sd-form-item-td
  210. ><sd-form-item-td name="creationTime"></sd-form-item-td
  211. ></tr>
  212. </table>
  213. <table v-if="model.sourceId === undefined">
  214. <colgroup>
  215. <col style="width: 15%;" />
  216. <col style="width: 35%;" />
  217. <col style="width: 15%;" />
  218. <col style="width: 35%;" />
  219. </colgroup>
  220. <tr>
  221. <sd-form-item-td
  222. name="eventTypePath"
  223. :colspan="3"
  224. :label="'风险分类'"
  225. >
  226. <a-input
  227. v-model="model.eventTypePath"
  228. style="width:calc(100% - 80px);"
  229. read-only
  230. />
  231. <span style="padding:5px">
  232. <a-button @click="showFxflpath">选择</a-button>
  233. </span>
  234. </sd-form-item-td></tr
  235. >
  236. <tr>
  237. <!-- 措施编号 -->
  238. <sd-form-item-td name="eventCode">
  239. <a-form-model-item
  240. :label="null"
  241. prop="eventCode"
  242. :rules="[{ validator: checkbh }]"
  243. >
  244. <a-input v-model.trim="model.eventCode" />
  245. </a-form-model-item>
  246. </sd-form-item-td>
  247. <!-- 措施名称 -->
  248. <sd-form-item-td name="eventName"> </sd-form-item-td>
  249. </tr>
  250. <tr>
  251. <!-- 措施描述 -->
  252. <sd-form-item-td name="eventDesc" :colspan="3">
  253. <a-textarea v-model="model.eventDesc" :rows="3" />
  254. </sd-form-item-td>
  255. </tr>
  256. <tr>
  257. <sd-form-item-td name="riskSource" />
  258. <sd-form-item-td name="competentDeptOpt">
  259. <sd-group-picker
  260. v-model="model.competentDeptOpt"
  261. style="width:calc(100% - 120px)"
  262. @change="changecomDepOpt"
  263. />
  264. <a-button
  265. type="primary"
  266. icon="plus"
  267. block
  268. style="width:110px;margin-left:5px;"
  269. @click="manualEntry('competentDeptOpt', 'docformMeasureRel')"
  270. >
  271. 手工添加
  272. </a-button>
  273. </sd-form-item-td>
  274. </tr>
  275. <tr v-show="false">
  276. <sd-form-item-td name="competentDeptName" />
  277. <sd-form-item-td name="competentDeptId" />
  278. <sd-form-item-td
  279. name="eventType"
  280. :colspan="3"
  281. :label="'风险分类Id'"
  282. />
  283. </tr>
  284. <tr
  285. ><sd-form-item-td name="riskReasonDesc" :colspan="3">
  286. <a-textarea
  287. v-model="model.riskReasonDesc"
  288. :rows="3"
  289. /> </sd-form-item-td
  290. ></tr>
  291. <tr>
  292. <sd-form-item-td
  293. name="riskLevel"
  294. component="a-select"
  295. :input-props="{
  296. disabled: true,
  297. }"
  298. />
  299. <sd-form-item-td
  300. name="status"
  301. component="a-select"
  302. :input-props="{
  303. disabled: true,
  304. defaultValue: 'enable',
  305. }"
  306. />
  307. </tr>
  308. <tr>
  309. <sd-form-item-td
  310. name="occurPossibility"
  311. component="a-select"
  312. :input-props="{
  313. disabled: true,
  314. }"
  315. />
  316. <sd-form-item-td
  317. name="riskImpactDegree"
  318. component="a-select"
  319. :input-props="{
  320. disabled: true,
  321. }"
  322. />
  323. </tr>
  324. <tr>
  325. <sd-form-item-td name="creationTime" />
  326. <sd-form-item-td name="creatorName" />
  327. </tr>
  328. <tr>
  329. <sd-form-item-td v-if="initParam(model)" name="remark" :colspan="3">
  330. <a-textarea v-model="model.remark" :rows="3" />
  331. </sd-form-item-td>
  332. </tr>
  333. </table>
  334. <!-- 只读 -->
  335. <table v-else>
  336. <colgroup>
  337. <col style="width: 15%;" />
  338. <col style="width: 35%;" />
  339. <col style="width: 15%;" />
  340. <col style="width: 35%;" />
  341. </colgroup>
  342. <tr>
  343. <sd-form-item-td
  344. name="eventTypePath"
  345. :colspan="3"
  346. :label="'风险分类'"
  347. >
  348. {{ model.eventTypePath }}
  349. </sd-form-item-td></tr
  350. >
  351. <tr>
  352. <!-- 措施编号 -->
  353. <sd-form-item-td name="eventCode">
  354. {{ model.eventCode }}
  355. </sd-form-item-td>
  356. <!-- 措施名称 -->
  357. <sd-form-item-td name="eventName">
  358. {{ model.eventName }}</sd-form-item-td
  359. >
  360. </tr>
  361. <tr>
  362. <!-- 措施描述 -->
  363. <sd-form-item-td name="eventDesc" :colspan="3">
  364. {{ model.eventDesc }}
  365. </sd-form-item-td>
  366. </tr>
  367. <tr>
  368. <sd-form-item-td name="riskSource">{{
  369. getDisplayVaule(fields.riskSource, model.riskSource)
  370. }}</sd-form-item-td>
  371. <sd-form-item-td name="competentDeptOpt">{{
  372. model.competentDeptName
  373. }}</sd-form-item-td>
  374. </tr>
  375. <tr
  376. ><sd-form-item-td name="riskReasonDesc" :colspan="3">
  377. {{
  378. model.riskReasonDesc === null ||
  379. model.riskReasonDesc === undefined
  380. ? '&nbsp;'
  381. : model.riskReasonDesc
  382. }}</sd-form-item-td
  383. ></tr
  384. >
  385. <tr>
  386. <sd-form-item-td name="riskLevel">
  387. {{
  388. model.riskLevel === null || model.riskLevel === undefined
  389. ? '&nbsp;'
  390. : getDisplayVaule(fields.riskLevel, model.riskLevel)
  391. }}</sd-form-item-td
  392. >
  393. <sd-form-item-td name="status">
  394. {{
  395. model.status === null || model.status === undefined
  396. ? '启用'
  397. : getDisplayVaule(fields.status, model.status)
  398. }}</sd-form-item-td
  399. >
  400. </tr>
  401. <tr>
  402. <sd-form-item-td name="occurPossibility">{{
  403. getDisplayVaule(fields.occurPossibility, model.occurPossibility)
  404. }}</sd-form-item-td>
  405. <sd-form-item-td name="riskImpactDegree">{{
  406. getDisplayVaule(fields.riskImpactDegree, model.riskImpactDegree)
  407. }}</sd-form-item-td>
  408. </tr>
  409. <tr>
  410. <sd-form-item-td name="creationTime" />
  411. <sd-form-item-td name="creatorName" />
  412. </tr>
  413. <tr>
  414. <sd-form-item-td v-if="initParam(model)" name="remark" :colspan="3">
  415. {{ model.remark }}
  416. </sd-form-item-td>
  417. </tr>
  418. </table>
  419. </template>
  420. </sd-child-table></template
  421. >
  422. </audit-advanced-group>
  423. </template>
  424. </sd-form-item></td
  425. >
  426. </tr>
  427. <tr
  428. ><td :colspan="4">
  429. <sd-form-item name="icMtxMeasureStepList" :label="null">
  430. <template v-slot:read-and-edit="{ editable }">
  431. <audit-advanced-group
  432. :expand="expandX"
  433. :expand-str="'expandX'"
  434. :group-label="'测评步骤'"
  435. @changedClick="changedClick"
  436. ><template>
  437. <xm-child-table
  438. ref="docformsteplist"
  439. v-model="model.icMtxMeasureStepList"
  440. :read-only="!editable"
  441. label=""
  442. :fields="
  443. [
  444. {
  445. caption: '序号',
  446. name: 'sortNum',
  447. dataType: 'number',
  448. attr: {},
  449. },
  450. ].concat(Array.from(fields.icMtxMeasureStepList.attr.dync))
  451. "
  452. :columns="childsteplistColumns"
  453. :width="1200"
  454. :addfun="addfun"
  455. >
  456. </xm-child-table>
  457. </template>
  458. </audit-advanced-group>
  459. </template> </sd-form-item
  460. ></td>
  461. </tr>
  462. <tr
  463. ><td :colspan="4">
  464. <sd-form-item name="icMtxMeasureResultList" :label="null">
  465. <template v-slot:read-and-edit="{ editable }">
  466. <audit-advanced-group
  467. :expand="expandZ"
  468. :expand-str="'expandZ'"
  469. :group-label="'测试结果'"
  470. @changedClick="changedClick"
  471. ><template>
  472. <xm-child-table
  473. ref="docformResultlist"
  474. v-model="model.icMtxMeasureResultList"
  475. :read-only="true"
  476. label=""
  477. :fields="
  478. [
  479. {
  480. caption: '序号',
  481. name: 'sortNum',
  482. dataType: 'number',
  483. attr: {},
  484. },
  485. ].concat(Array.from(fields.icMtxMeasureResultList.attr.dync))
  486. "
  487. :columns="childresultlistColumns"
  488. :width="1200"
  489. :addfun="addfun"
  490. >
  491. </xm-child-table>
  492. </template>
  493. </audit-advanced-group>
  494. </template> </sd-form-item
  495. ></td>
  496. </tr>
  497. </table>
  498. <table>
  499. <tr>
  500. <td style="padding-left:5px;border:none">
  501. <audit-advanced-group
  502. :expand="change"
  503. :expand-str="'change'"
  504. :group-label="'控制措施_变更信息'"
  505. tablestyle="''"
  506. @changedClick="changedClick"
  507. ></audit-advanced-group>
  508. </td>
  509. </tr>
  510. </table>
  511. <table
  512. v-for="(bg, index) in fndeal(model.iamDetailFormModifyLogEntities)"
  513. v-show="change"
  514. :key="index"
  515. :class="$style.tablexm"
  516. >
  517. <colgroup>
  518. <col style="width: 20%;" />
  519. <col style="width: 30%;" />
  520. <col style="width: 20%;" />
  521. <col style="width: 30%;" />
  522. </colgroup>
  523. <tr>
  524. <td style="width:160px;text-align:right;vertical-align:top">{{ bg.creatorName }}</td
  525. ><td colspan="3"
  526. ><div
  527. style="
  528. width: 18px;margin-left:2px;
  529. font-size: 8px;
  530. color: #fff;
  531. text-align:center;
  532. background-color: lightgreen;
  533. border-radius: 100%;
  534. "
  535. >√</div
  536. ><div style="padding-left:10px;margin-left:9px;border-left:1px solid gray"
  537. >{{ bg.creationTime | sdDateFormat('YYYY-MM-DD HH:mm:ss') }}
  538. <table
  539. ><tr v-for="(x, index) in bg.xx" :key="index">
  540. <td style="width:150px">[{{ x.fieldDesc }}]</td
  541. ><td
  542. >{{ x.oldValue !== '' ? '"' : ''
  543. }}{{
  544. x.oldValue.indexOf('[') !== -1 ||
  545. x.oldValue.indexOf('{') !== -1 ||
  546. x.newValue.indexOf('[') !== -1 ||
  547. x.newValue.indexOf('{') !== -1
  548. ? ''
  549. : x.oldValue === 'null'
  550. ? ''
  551. : x.oldValue
  552. }}{{ x.oldValue !== '' ? '" 改为 ' : ''
  553. }}<span v-if="x.oldValue === ''" style="color:green">
  554. {{
  555. x.newValue.indexOf('[') !== -1 || x.newValue.indexOf('{') !== -1
  556. ? '修改动态表格数据'
  557. : x.newValue
  558. }}</span
  559. >
  560. <span v-else>{{
  561. x.newValue.indexOf('[') !== -1 || x.newValue.indexOf('{') !== -1
  562. ? '修改动态表格数据'
  563. : '"' + x.newValue + '"'
  564. }}</span>
  565. </td></tr
  566. ></table
  567. >
  568. </div></td
  569. >
  570. </tr>
  571. </table>
  572. </template>
  573. </sd-detail-form>
  574. </audit-form-top-banner>
  575. <audit-matters-select-modal
  576. :visible="visible"
  577. :org-id="null"
  578. :show-selection="showSelectionlaw"
  579. @listSelected="listSelected"
  580. ></audit-matters-select-modal>
  581. <!-- 风险事项选择器-->
  582. <div v-show="false">
  583. <ic-measure-picker
  584. ref="icRiskeventsel"
  585. v-model="eventSelect"
  586. :version-id="this.FxversionId"
  587. :types="'FK'"
  588. :org-id="this.$route.query.orgId ? this.$route.query.orgId : this.orgId"
  589. :org-name="this.$route.query.orgName ? this.$route.query.orgName : this.orgName + '风险库'"
  590. :single="false"
  591. :read-only="false"
  592. @change="fnqd"
  593. ></ic-measure-picker>
  594. </div>
  595. <!-- 发现风险分类树 -->
  596. <a-modal
  597. :visible="catfxvisible"
  598. title="请选择"
  599. width="700px"
  600. :destroy-on-close="true"
  601. @ok="handlecatfxOk"
  602. @cancel="handlecatfxCancel"
  603. >
  604. <risk-category-tree
  605. ref="riskCategorytree"
  606. show-line
  607. top-node-text="风险库"
  608. :is-select-dep="true"
  609. manager-type="view"
  610. :classstyle="true"
  611. :history="true"
  612. :hisv="this.FxversionId"
  613. :hisorg="this.$route.query.versionId ? this.$route.query.orgId : this.orgId"
  614. :hisorgn="this.$route.query.orgName ? this.$route.query.orgName : this.orgName"
  615. @treeSelect="treeFxSelect"
  616. />
  617. </a-modal>
  618. <!-- 发现分类树 -->
  619. <a-modal
  620. :visible="catvisible"
  621. title="请选择"
  622. width="700px"
  623. :destroy-on-close="true"
  624. @ok="handlecatOk"
  625. @cancel="handlecatCancel"
  626. >
  627. <mtx-process-catalog-tree
  628. ref="mtxprocesstree"
  629. show-line
  630. top-node-text="内控矩阵"
  631. :is-select-dep="true"
  632. manager-type="view"
  633. :classstyle="true"
  634. :history="true"
  635. :hisv="this.$route.query.versionId ? this.$route.query.versionId : this.versionId"
  636. :hisorg="this.$route.query.versionId ? this.$route.query.orgId : this.orgId"
  637. :hisorgn="this.$route.query.orgName ? this.$route.query.orgName : this.orgName"
  638. @treeSelect="treeSelect"
  639. />
  640. </a-modal>
  641. <a-modal v-model="ModalVisible" title="手动录入" @ok="changecomDepOptforModal">
  642. <a-form-model ref="ModalForm" :model="ModalForm">
  643. <a-form-model-item label="主管部门" prop="orgName">
  644. <a-input v-model="ModalForm.orgName" />
  645. </a-form-model-item>
  646. </a-form-model>
  647. </a-modal>
  648. </span>
  649. </template>
  650. <script>
  651. import { Modal, Message } from 'ant-design-vue'
  652. import { getComponentSpec } from '@/common/components/sd-form'
  653. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  654. import debounce from 'lodash.debounce'
  655. import axios from '@/common/services/axios-instance'
  656. import icMeasurePicker from '@product/iam/components/ic-picker/ic-measure-picker.vue'
  657. import riskDeptSgtxMixins from '@product/iam/components/risk-dept-sgtx-mixins.vue'
  658. import auditFormTopBanner from '../../components/audit-form-top-banner'
  659. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  660. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  661. import auditMattersSelectModal from '../../audit/matters/audit-matters-select-modal.vue'
  662. import RiskService from '../../risk/risklib/risk-service'
  663. import riskCategoryTree from '../../risk/risklib/category/risk-category-tree'
  664. import mtxProcessCatalogTree from './mtx-process-catalog-tree'
  665. import MtxProcessService from './mtx-process-service'
  666. import components from './_import-components/mtx-measure-form-import'
  667. export default {
  668. name: 'MtxMeasureForm',
  669. metaInfo: {
  670. title: '内控措施',
  671. },
  672. components: {
  673. ...components,
  674. auditFormTopBanner,
  675. auditAdvancedGroup,
  676. auditMattersSelectModal,
  677. mtxProcessCatalogTree,
  678. icMeasurePicker,
  679. riskCategoryTree,
  680. },
  681. mixins: [auditAdvancedGroupMixins, riskDeptSgtxMixins],
  682. data() {
  683. return {
  684. eventSelect: [],
  685. eventSellist: [],
  686. catfxvisible: false,
  687. change: true,
  688. catvisible: false,
  689. visible: false,
  690. expandA: true,
  691. expandC: true,
  692. mode: null,
  693. childlawlistColumns: [
  694. {
  695. title: '序号',
  696. dataIndex: 'sortNum',
  697. width: '80px',
  698. customRender: (text, record, index) => `${index + 1}`,
  699. },
  700. { dataIndex: 'id', sdHidden: true },
  701. { dataIndex: 'title', width: '40%' },
  702. { dataIndex: 'docNum', width: '100px' },
  703. { dataIndex: 'clauses' },
  704. { dataIndex: 'mtxVersionId', sdHidden: true },
  705. ],
  706. expandY: true,
  707. childmeasureColumns: [
  708. {
  709. title: '序号',
  710. dataIndex: 'sortNum',
  711. width: '80px',
  712. customRender: (text, record, index) => `${index + 1}`,
  713. },
  714. { dataIndex: 'id', sdHidden: true },
  715. { dataIndex: 'eventTypePath', width: '10%' },
  716. { dataIndex: 'eventCode', width: '10%' },
  717. { dataIndex: 'eventName', width: '10%' },
  718. { dataIndex: 'competentDeptOpt', width: '10%' },
  719. { dataIndex: 'competentDeptName', sdHidden: true },
  720. { dataIndex: 'competentDeptId', sdHidden: true },
  721. { dataIndex: 'occurPossibility' },
  722. { dataIndex: 'riskImpactDegree' },
  723. { dataIndex: 'riskLevel' },
  724. { dataIndex: 'mtxVersionId', sdHidden: true },
  725. { dataIndex: 'parentId', sdHidden: true },
  726. { dataIndex: 'auditOrgId', sdHidden: true },
  727. { dataIndex: 'versionId', sdHidden: true },
  728. { dataIndex: 'eventType', sdHidden: true },
  729. { dataIndex: 'eventDesc', sdHidden: true },
  730. { dataIndex: 'riskSource', sdHidden: true },
  731. { dataIndex: 'riskReasonDesc', sdHidden: true },
  732. { dataIndex: 'status', sdHidden: true },
  733. { dataIndex: 'creationTime', sdHidden: true },
  734. { dataIndex: 'creatorName', sdHidden: true },
  735. { dataIndex: 'remark', sdHidden: true },
  736. { dataIndex: 'sourceId', sdHidden: true },
  737. ],
  738. expandX: true,
  739. childsteplistColumns: [
  740. {
  741. title: '序号',
  742. dataIndex: 'sortNum',
  743. width: '80px',
  744. customRender: (text, record, index) => `${index + 1}`,
  745. },
  746. { dataIndex: 'id', sdHidden: true },
  747. { dataIndex: 'stepName', width: '60%' },
  748. { dataIndex: 'attachment' },
  749. { dataIndex: 'mtxVersionId', sdHidden: true },
  750. ],
  751. expandZ: true,
  752. childresultlistColumns: [
  753. {
  754. title: '序号',
  755. dataIndex: 'sortNum',
  756. width: '140px',
  757. customRender: (text, record, index) => `${index + 1}`,
  758. },
  759. { dataIndex: 'id', sdHidden: true },
  760. { dataIndex: 'planName', width: '30%' },
  761. { dataIndex: 'evaluationRange', width: '30%' },
  762. { dataIndex: 'testResult', width: '10%' },
  763. { dataIndex: 'defectType', width: '10%' },
  764. { dataIndex: 'defectLevel', width: '10%' },
  765. { dataIndex: 'mtxVersionId', sdHidden: true },
  766. ],
  767. versionId: null,
  768. orgId: null,
  769. orgName: '',
  770. FxversionId: null,
  771. selectlist: [],
  772. catpath: '',
  773. catId: null,
  774. flag: false,
  775. sortNum: null,
  776. }
  777. },
  778. mounted() {
  779. if (this.$route.query.versionId) {
  780. this.versionId = parseInt(this.$route.query.versionId)
  781. this.orgId = this.$route.query.orgId
  782. }
  783. },
  784. methods: {
  785. // 事项变化时监听事件
  786. icMtxMeasureEventListChange(data) {
  787. const eventData = []
  788. if (data) {
  789. data.forEach((item) => {
  790. if (item.sortNum !== null && item.sortNum !== undefined) {
  791. eventData.push({
  792. id: item.sortNum,
  793. text: item.eventName,
  794. leaf: true,
  795. expandable: false,
  796. differentDisplay: false,
  797. props: {
  798. isItem: false,
  799. isEnd: '1',
  800. },
  801. disabled: false,
  802. code: item.sortNum + '',
  803. cat: false,
  804. })
  805. }
  806. })
  807. }
  808. this.eventSelect = eventData
  809. },
  810. // 设置子表必填
  811. setIcMtxMeasureEventListRequire(flag) {
  812. this.$refs.docform.formData.pageFormData.pageFieldInfos
  813. .find((item) => {
  814. return item.name === 'icMtxMeasureEventList'
  815. })
  816. .attr.dync.find((item) => {
  817. return item.name === 'competentDeptOpt'
  818. }).required = flag
  819. },
  820. checkIcMtxMeasureEventListRequire(data) {
  821. // 先给个默认值,不校验必填
  822. this.setIcMtxMeasureEventListRequire(false)
  823. // 循环所有数据,如果有一条的组织机构为空,则校验必填,否则不校验
  824. if (data) {
  825. data.forEach((oneData) => {
  826. const dept = JSON.parse(oneData.competentDeptOpt)
  827. const deptName = oneData.competentDeptName
  828. if (dept.length === 0 && (deptName === '') | !deptName) {
  829. this.setIcMtxMeasureEventListRequire(true)
  830. }
  831. })
  832. }
  833. },
  834. getDisplayVaule(field, text) {
  835. if (getComponentSpec(field).getDisplayValue) {
  836. if (typeof text !== 'undefined' && text !== null) {
  837. const value = getComponentSpec(field).parseBackendValue?.(text) || text
  838. return getComponentSpec(field).getDisplayValue(value)
  839. } else {
  840. return ''
  841. }
  842. }
  843. return text
  844. },
  845. checkbh(rule, value, callback) {
  846. const sourceId = this.$refs.docformMeasureRel.$refs.form.getFieldValue('sourceId')
  847. if (value && sourceId === undefined) {
  848. const eventCode = value
  849. let id = this.$refs.docformMeasureRel.$refs.form.getFieldValue('id')
  850. ? this.$refs.docformMeasureRel.$refs.form.getFieldValue('id')
  851. : -1
  852. // 判断是否为新增文件
  853. if (id.toString().includes('fakeId')) {
  854. id = -1
  855. }
  856. const versionId = parseInt(this.FxversionId)
  857. const auditOrgId = parseInt(this.orgId)
  858. RiskService.checkMeasurecode(eventCode, id, versionId, auditOrgId).then((res) => {
  859. if (!res.data) {
  860. callback(new Error('编号重复请重新填写'))
  861. } else {
  862. callback()
  863. }
  864. })
  865. } else {
  866. callback()
  867. }
  868. },
  869. // 保存时校验编号唯一
  870. onRecordSaved() {
  871. const eventCode = this.$refs.docformMeasureRel.$refs.form.getFieldValue('eventCode')
  872. const id = this.$refs.docformMeasureRel.$refs.form.getFieldValue('id')
  873. ? this.$refs.docformMeasureRel.$refs.form.getFieldValue('id')
  874. : -1
  875. const versionId = parseInt(this.FxversionId)
  876. const auditOrgId = parseInt(this.orgId)
  877. RiskService.checkMeasurecode(eventCode, id, versionId, auditOrgId).then((res) => {
  878. if (!res.data) {
  879. Message.info('编号重复请重新填写', 1)
  880. return false
  881. } else {
  882. }
  883. })
  884. },
  885. showFxflpath() {
  886. this.catfxvisible = !this.catfxvisible
  887. if (this.catfxvisible) {
  888. setTimeout(() => {
  889. this.$refs.riskCategorytree.initDeptList('')
  890. }, 1000)
  891. }
  892. },
  893. treeFxSelect(select, info) {
  894. const id = info.selectedNodes[0].data.props.id
  895. this.catfxpath = ''
  896. this.catfxId = null
  897. if (info.selectedNodes[0].data.props.props) {
  898. if (info.selectedNodes[0].data.props.props.isEnd === '1') {
  899. if (id !== -1) {
  900. this.getfxpath(id)
  901. this.catfxId = id
  902. } else {
  903. this.catfxpath = this.$route.query.orgName + '内控矩阵'
  904. this.catfxId = -1
  905. }
  906. } else {
  907. Modal.info({
  908. content: '请选择末级分类节点',
  909. })
  910. }
  911. }
  912. },
  913. handlecatfxOk() {
  914. if (this.catfxpath !== '') {
  915. this.$refs.docformMeasureRel.$refs.form.setFieldValue('eventTypePath', this.catfxpath)
  916. this.$refs.docformMeasureRel.$refs.form.setFieldValue('eventType', this.catfxId.toString())
  917. this.showFxflpath()
  918. // this.findType = this.findcat.text
  919. this.catfxpath = ''
  920. this.catfxId = null
  921. } else {
  922. Modal.warning({
  923. title: '提示',
  924. content: '请选择末级分类节点!',
  925. })
  926. return false
  927. }
  928. },
  929. handlecatfxCancel() {
  930. this.showFxflpath()
  931. },
  932. getfxpath(id) {
  933. return new Promise((resolve, reject) => {
  934. RiskService.findupcatinfo(id).then((res) => {
  935. this.catfxpath = res.data
  936. resolve(res.data)
  937. })
  938. })
  939. },
  940. changecomDepOptforModal() {
  941. const flow = 'docformMeasureRel'
  942. this.ModalHandleOk()
  943. this.changecomDepOpt(this.$refs[flow].$refs.form.getFieldValue(this.currentEntryField))
  944. },
  945. changecomDepOpt(value) {
  946. let names = ''
  947. let ids = ''
  948. value.forEach((v) => {
  949. names += ',' + v.name
  950. ids += ',' + v.code
  951. })
  952. if (names !== '') {
  953. names = names.substring(1, names.length)
  954. }
  955. if (ids !== '') {
  956. ids = ids.substring(1, ids.length)
  957. }
  958. this.$refs.docformMeasureRel.$refs.form.setFieldValue('competentDeptName', names)
  959. this.$refs.docformMeasureRel.$refs.form.setFieldValue('competentDeptId', ids)
  960. },
  961. fnqd(data) {
  962. const ids = []
  963. let iamAuditEvents = []
  964. if (this.$refs.docform.getFieldValue('icMtxMeasureEventList')) {
  965. iamAuditEvents = this.$refs.docform.getFieldValue('icMtxMeasureEventList')
  966. }
  967. const idList = {}
  968. data.forEach((i) => {
  969. const oldId = i.id.toString()
  970. let id = i.id.toString()
  971. if (id.indexOf('1000') > -1) {
  972. id = id.substring(4, id.length)
  973. }
  974. ids.push(parseInt(id))
  975. idList[id + ''] = oldId
  976. })
  977. RiskService.getFxlist(ids).then((data) => {
  978. if (data) {
  979. data.forEach((element) => {
  980. if (
  981. iamAuditEvents.findIndex(
  982. (i) => i.eventCode.toString() === element.eventCode.toString()
  983. ) === -1
  984. ) {
  985. const mmc = {}
  986. mmc.sourceId = element.id
  987. mmc.id = null
  988. mmc.eventTypePath = element.riskCategoryPath
  989. mmc.eventType = element.riskCategoryId.toString()
  990. mmc.mtxVersionId = parseInt(this.versionId)
  991. // 没用的字段,用来存实际ID
  992. mmc.sortNum = idList[element.id + '']
  993. const opt = element.competentDeptOpt
  994. const name = element.competentDeptName
  995. const id = element.competentDeptId
  996. if (name !== undefined && id !== undefined && name !== null && id !== null) {
  997. const names = name.split(',')
  998. const ids = id.split(',')
  999. names.forEach((n, index) => {
  1000. if (ids[index].indexOf('_sd') > -1) {
  1001. const no = {
  1002. type: 'GROUP',
  1003. code: ids[index],
  1004. name: n,
  1005. }
  1006. opt.splice(index, 0, no)
  1007. }
  1008. })
  1009. mmc.competentDeptOpt = JSON.stringify(opt)
  1010. } else {
  1011. if (element.competentDeptOpt) {
  1012. mmc.competentDeptOpt = JSON.stringify(element.competentDeptOpt)
  1013. } else {
  1014. mmc.competentDeptOpt = JSON.stringify([])
  1015. }
  1016. }
  1017. mmc.versionId = parseInt(this.FxversionId)
  1018. let tyy =
  1019. 'eventCode;eventName;competentDeptName;competentDeptId;occurPossibility;riskImpactDegree;riskLevel;'
  1020. tyy +=
  1021. 'auditOrgId;eventDesc;riskSource;riskReasonDesc;status;creationTime;creatorName;remark;creatorName;creationTime'
  1022. // tyy = 'eventCode;eventName;riskSource;creatorName'
  1023. const tyys = tyy.split(';')
  1024. tyys.forEach((y) => {
  1025. mmc[y] = element[y]
  1026. })
  1027. // mmc.competentDeptId = parseInt(mmc.competentDeptId)
  1028. iamAuditEvents.push(mmc)
  1029. }
  1030. })
  1031. this.visible = false
  1032. this.$refs.docform.setFieldValue('icMtxMeasureEventList', iamAuditEvents)
  1033. }
  1034. })
  1035. },
  1036. initParam(model) {
  1037. if (!this.flag) {
  1038. if (this.$route.query.versionId) {
  1039. this.getpath(this.$route.query.catalogId).then(() => {
  1040. this.$refs.docform.mtxPrcPath = this.catpath
  1041. model.mtxPrcPath = this.catpath
  1042. })
  1043. this.getsortNum(this.$route.query.catalogId).then(() => {
  1044. this.$refs.docform.sortNum = this.sortNum
  1045. model.sortNum = this.sortNum
  1046. })
  1047. } else {
  1048. this.getpath(model.mtxPrcId).then(() => {
  1049. this.$refs.docform.mtxPrcPath = this.catpath
  1050. model.mtxPrcPath = this.catpath
  1051. })
  1052. this.versionId = model.mtxVersionId + ''
  1053. this.orgId = model.auditOrgId + ''
  1054. }
  1055. // 默认风险事项
  1056. this.icMtxMeasureEventListChange(model.icMtxMeasureEventList)
  1057. // 根据orgId 获取到风险库版本ID
  1058. this.FxversionId = null
  1059. RiskService.getversion(this.orgId).then((res) => {
  1060. if (res.data.id) {
  1061. this.FxversionId = res.data.id.toString()
  1062. }
  1063. })
  1064. if (model.icMtxMeasureLawList) {
  1065. model.icMtxMeasureLawList.forEach((i) => {
  1066. if (i.clauses === null) {
  1067. i.clauses = ''
  1068. }
  1069. })
  1070. }
  1071. // 处理icMtxMeasureEventList 中的主管部门高级字段
  1072. const measurelist = model.icMtxMeasureEventList
  1073. if (measurelist !== null && measurelist !== undefined) {
  1074. measurelist.forEach((l) => {
  1075. const opt = JSON.parse(l.competentDeptOpt)
  1076. const name = l.competentDeptName
  1077. const id = l.competentDeptId
  1078. if (name !== undefined && id !== undefined && name !== null && id !== null) {
  1079. const names = name.split(',')
  1080. const ids = id.split(',')
  1081. names.forEach((n, index) => {
  1082. if (ids[index].indexOf('_sd') > -1) {
  1083. const no = {
  1084. type: 'GROUP',
  1085. code: ids[index],
  1086. name: n,
  1087. }
  1088. opt.splice(index, 0, no)
  1089. }
  1090. })
  1091. l.competentDeptOpt = JSON.stringify(opt)
  1092. }
  1093. })
  1094. model.icMtxMeasureEventList = measurelist
  1095. }
  1096. this.flag = true
  1097. }
  1098. return true
  1099. },
  1100. getpath(id) {
  1101. return new Promise((resolve, reject) => {
  1102. MtxProcessService.findupcatinfo(id).then((res) => {
  1103. this.catpath = res.data
  1104. resolve(res.data)
  1105. })
  1106. })
  1107. },
  1108. getsortNum(id) {
  1109. return new Promise((resolve, reject) => {
  1110. MtxProcessService.fngetsortNum(id).then((res) => {
  1111. this.sortNum = res
  1112. resolve(res)
  1113. })
  1114. })
  1115. },
  1116. showflpath() {
  1117. this.catvisible = !this.catvisible
  1118. if (this.catvisible) {
  1119. setTimeout(() => {
  1120. this.$refs.mtxprocesstree.initDeptList('')
  1121. }, 1000)
  1122. }
  1123. },
  1124. treeSelect(select, info) {
  1125. const id = info.selectedNodes[0].data.props.id
  1126. this.catpath = ''
  1127. this.catId = null
  1128. if (info.selectedNodes[0].data.props.props) {
  1129. if (info.selectedNodes[0].data.props.props.isEnd === '1') {
  1130. if (id !== -1) {
  1131. this.getpath(id)
  1132. this.catId = id
  1133. } else {
  1134. this.catpath = this.$route.query.orgName + '内控矩阵'
  1135. this.catId = -1
  1136. }
  1137. } else {
  1138. Modal.info({
  1139. content: '请选择末级分类节点',
  1140. })
  1141. }
  1142. }
  1143. },
  1144. handlecatOk() {
  1145. if (this.catpath !== '') {
  1146. this.$refs.docform.setFieldValue('mtxPrcPath', this.catpath)
  1147. this.$refs.docform.setFieldValue('mtxPrcId', this.catId)
  1148. this.showflpath()
  1149. // this.findType = this.findcat.text
  1150. this.catpath = ''
  1151. this.catId = null
  1152. } else {
  1153. Modal.warning({
  1154. title: '提示',
  1155. content: '请选择末级分类节点!',
  1156. })
  1157. return false
  1158. }
  1159. },
  1160. handlecatCancel() {
  1161. this.showflpath()
  1162. },
  1163. showSelectionlaw(record) {
  1164. this.selectlist = this.$refs.docformlawlist.value
  1165. if (this.selectlist.length === 0) {
  1166. return true
  1167. } else if (
  1168. this.selectlist.findIndex(
  1169. (i) => i.title + '-' + i.docNum === record.docTitle + '-' + record.dispatchWord
  1170. ) > -1
  1171. ) {
  1172. return false
  1173. } else {
  1174. return true
  1175. }
  1176. },
  1177. addfun(data) {
  1178. if (!this.versionId) {
  1179. this.versionId = this.$refs.docform.getFieldValue('mtxVersionId')
  1180. this.orgId = this.$refs.docform.getFieldValue('auditOrgId')
  1181. }
  1182. data.mtxVersionId = this.versionId
  1183. return data
  1184. },
  1185. // 页面加载完成后
  1186. sdFormReady() {
  1187. this.mode = this.$refs.docform.formData.mode
  1188. if (!this.mode) {
  1189. this.mode = this.$route.query.mode
  1190. }
  1191. },
  1192. close(flag) {
  1193. crossWindowWatcher.notifyChange(this.$route.fullPath, flag)
  1194. window.close()
  1195. },
  1196. saved() {
  1197. Message.success({ content: '保存成功!' }, 1).then(() => {
  1198. debugger
  1199. this.close(true)
  1200. })
  1201. },
  1202. // 保存
  1203. saveForm() {
  1204. // 保存时校验必填
  1205. this.checkIcMtxMeasureEventListRequire(
  1206. this.$refs.docform.getFieldValue('icMtxMeasureEventList')
  1207. )
  1208. this.$refs.docform.validateFields().then((res) => {
  1209. if (res) {
  1210. // 如果是新文档,则赋值 mtxPrcId
  1211. // 校验编号唯一
  1212. const measureCode = this.$refs.docform.getFieldValue('measureCode')
  1213. const id = this.$refs.docform.getFieldValue('id')
  1214. ? this.$refs.docform.getFieldValue('id')
  1215. : -1
  1216. const mtxVersionId = parseInt(this.versionId)
  1217. const auditOrgId = parseInt(this.orgId)
  1218. MtxProcessService.checkMeasurecode(measureCode, id, mtxVersionId, auditOrgId).then(
  1219. (res) => {
  1220. if (!res.data) {
  1221. Message.info('编号重复请重新填写', 1)
  1222. } else {
  1223. let versionId = null
  1224. if (this.$route.query.record === null || this.$route.query.record === undefined) {
  1225. const catalogId = this.$route.query.catalogId
  1226. const orgId = this.$route.query.orgId
  1227. versionId = parseInt(this.$route.query.versionId)
  1228. this.$refs.docform.setFieldValue('mtxPrcId', parseInt(catalogId))
  1229. this.$refs.docform.setFieldValue('auditOrgId', parseInt(orgId))
  1230. this.$refs.docform.setFieldValue('mtxVersionId', versionId)
  1231. } else {
  1232. versionId = this.$refs.docform.getFieldValue('mtxVersionId')
  1233. }
  1234. // 轮询所有子表赋值versionId
  1235. // 处理icMtxMeasureEventList 中的主管部门高级字段
  1236. const measurelist = this.$refs.docform.getFieldValue('icMtxMeasureEventList')
  1237. if (measurelist !== null && measurelist !== undefined) {
  1238. measurelist.forEach((l) => {
  1239. const opt = JSON.parse(l.competentDeptOpt)
  1240. const nopt = []
  1241. opt.forEach((o) => {
  1242. if (o.code.indexOf('_sd') === -1) {
  1243. nopt.push(o)
  1244. }
  1245. })
  1246. l.auditOrgId = auditOrgId
  1247. l.competentDeptOpt = JSON.stringify(nopt)
  1248. })
  1249. this.$refs.docform.setFieldValue('icMtxMeasureEventList', measurelist)
  1250. }
  1251. this.$refs.docform.saveBtnClick()
  1252. }
  1253. }
  1254. )
  1255. } else {
  1256. return false
  1257. }
  1258. })
  1259. },
  1260. measureRelSelect() {
  1261. if (this.FxversionId) {
  1262. this.$refs.icRiskeventsel.openPicker()
  1263. } else {
  1264. Modal.info({
  1265. content: '请配置机构对应的风险库',
  1266. })
  1267. }
  1268. },
  1269. fndeal(obj) {
  1270. const newobj = []
  1271. if (obj !== undefined) {
  1272. obj.forEach((item) => {
  1273. if (
  1274. [
  1275. 'icMtxMeasureLawList',
  1276. 'icMtxMeasureEventList',
  1277. 'icMtxMeasureStepList',
  1278. 'icMtxMeasureResultList',
  1279. 'iamDetailFormModifyLogEntities',
  1280. 'mtxPrcId',
  1281. 'mtxPrcPath',
  1282. ].indexOf(item.fieldName) < 0
  1283. ) {
  1284. if (item.newValue !== '' && item.oldValue !== null) {
  1285. item.xt = item.creatorName + '_' + item.creationTime
  1286. if (item.oldValue.trim() === null || item.oldValue.trim() === 'null')
  1287. item.oldValue = ''
  1288. const i = newobj.find((n) => n.xt === item.xt)
  1289. if (i !== undefined) {
  1290. i.xx.push({
  1291. fieldDesc: item.fieldDesc,
  1292. fieldName: item.fieldName,
  1293. newValue: item.newValue,
  1294. oldValue: item.oldValue,
  1295. })
  1296. } else {
  1297. item.xx = [
  1298. {
  1299. fieldDesc: item.fieldDesc,
  1300. fieldName: item.fieldName,
  1301. newValue: item.newValue,
  1302. oldValue: item.oldValue,
  1303. },
  1304. ]
  1305. newobj.push(item)
  1306. }
  1307. }
  1308. }
  1309. })
  1310. }
  1311. return newobj
  1312. },
  1313. // 选择法律制度
  1314. lawsRelSelect() {
  1315. // 选择事项分类
  1316. this.visible = true
  1317. },
  1318. listSelected(keys, keyinfos) {
  1319. let iamAuditLaws = []
  1320. if (this.$refs.docform.getFieldValue('icMtxMeasureLawList')) {
  1321. iamAuditLaws = this.$refs.docform.getFieldValue('icMtxMeasureLawList')
  1322. }
  1323. keyinfos.forEach((element) => {
  1324. const mmc = {}
  1325. mmc.title = element.docTitle
  1326. mmc.docNum = element.dispatchWord ? element.dispatchWord : ''
  1327. mmc.mtxVersionId = this.versionId
  1328. mmc.clauses = ''
  1329. iamAuditLaws.push(mmc)
  1330. })
  1331. this.visible = false
  1332. this.$refs.docform.setFieldValue('icMtxMeasureLawList', iamAuditLaws)
  1333. },
  1334. },
  1335. }
  1336. </script>
  1337. <style module lang="scss">
  1338. @use '@/common/design' as *;
  1339. @import '@/webflow/sd-flow-form.scss';
  1340. .btnselect {
  1341. position: relative;
  1342. top: 4px;
  1343. right: 200px;
  1344. float: right;
  1345. .batchselect {
  1346. z-index: 100;
  1347. margin-left: 10px;
  1348. }
  1349. }
  1350. .btnfxselect {
  1351. position: relative;
  1352. right: 200px;
  1353. float: right;
  1354. .batchselect {
  1355. z-index: 100;
  1356. margin-left: 10px;
  1357. }
  1358. }
  1359. .tablexm tr td {
  1360. border: none !important;
  1361. }
  1362. </style>