audit-sqapply-from.vue 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102
  1. <template>
  2. <span>
  3. <sd-webflow
  4. ref="docform"
  5. :validate-form="validForm"
  6. :removed-tabs="['sdRelatedDoc']"
  7. :class="$style.form"
  8. @actionBtnClick="actionBtnClick"
  9. >
  10. <template v-slot:form="{ model, fields, FlowData }">
  11. <table>
  12. <colgroup>
  13. <col style="width: 15%;"/>
  14. <col style="width: 35%;"/>
  15. <col style="width: 15%;"/>
  16. <col style="width: 35%;"
  17. /></colgroup>
  18. <tr v-show="false">
  19. <!-- 标题 -->
  20. <sd-form-item-td name="title" :colspan="3" />
  21. </tr>
  22. <tr>
  23. <td colspan="4" style="border:none">
  24. <audit-advanced-group
  25. :expand="expandJ"
  26. :expand-str="'expandJ'"
  27. :group-label="'基本信息'"
  28. @changedClick="changedClick"
  29. />
  30. </td>
  31. </tr>
  32. <tr v-show="expandJ">
  33. <!-- 申请人 -->
  34. <sd-form-item-td name="creatorName" />
  35. <!-- 公司 -->
  36. <sd-form-item-td name="createDeptName" />
  37. </tr>
  38. <tr v-show="expandJ">
  39. <!-- 申请时间 -->
  40. <sd-form-item-td name="creationTime" />
  41. <!-- 授权类型 -->
  42. <sd-form-item-td name="empowerType">
  43. <template>
  44. <a-select v-model="model.empowerType" @change="changeType">
  45. <a-select-option
  46. v-for="(key, i) in fields.empowerType.attr.selectListItem"
  47. :key="i"
  48. :value="key.value"
  49. >
  50. {{ key.label }}
  51. </a-select-option>
  52. </a-select>
  53. </template>
  54. </sd-form-item-td>
  55. </tr>
  56. <tr v-if="(model.empowerType === '1' || model.empowerType === '2') && expandJ">
  57. <td class="ant-form-item-label ant-form-item-label">
  58. <label title="开始日期"> 开始日期 </label>
  59. </td>
  60. <td class="ant-form-item-control-wrapper">
  61. <a-date-picker v-model="model.startDate" :disabled="true" />
  62. </td>
  63. <td class="ant-form-item-label ant-form-item-label">
  64. <label title="结束日期"> 结束日期 </label>
  65. </td>
  66. <td class="ant-form-item-control-wrapper">
  67. <a-date-picker v-model="model.endDate" :disabled="true" />
  68. </td>
  69. </tr>
  70. <tr v-if="model.empowerType !== '1' && model.empowerType !== '2' && expandJ">
  71. <!-- 授权开始时间 -->
  72. <!-- <sd-form-item-td name="startDate" /> -->
  73. <!-- 授权截止时间 -->
  74. <!-- <sd-form-item-td name="endDate" /> -->
  75. <td class="ant-form-item-label ant-form-item-label">
  76. <label title="开始日期" class="ant-form-item-required"> 开始日期 </label>
  77. </td>
  78. <td class="ant-form-item-control-wrapper">
  79. <a-form-model-item :label="null" :rules="rules" prop="startDate">
  80. <a-date-picker v-model="model.startDate" />
  81. </a-form-model-item>
  82. </td>
  83. <td class="ant-form-item-label ant-form-item-label">
  84. <label title="结束日期" class="ant-form-item-required"> 结束日期 </label>
  85. </td>
  86. <td class="ant-form-item-control-wrapper">
  87. <a-form-model-item :label="null" :rules="rules" prop="endDate">
  88. <a-date-picker v-model="model.endDate" />
  89. </a-form-model-item>
  90. </td>
  91. </tr>
  92. <tr v-show="expandJ">
  93. <!-- 申请原因 -->
  94. <sd-form-item-td name="empowerReason" :colspan="3">
  95. <a-textarea v-model="model.empowerReason" :rows="3" />
  96. </sd-form-item-td>
  97. </tr>
  98. <tr
  99. ><td
  100. v-if="getmaintaindata(model, fields)"
  101. :colspan="4"
  102. style="line-height:40px;border:none1;"
  103. :class="$style.maintaintable"
  104. >
  105. <audit-advanced-group
  106. :expand="expandModel"
  107. :expand-str="'expandY'"
  108. :group-label="'模型列表'"
  109. @changedClick="changedClick"
  110. ><template>
  111. <!-- </td></tr><tr><td v-if="getmaintaindata(model,fields)" :colspan="4" :class="$style.maintaintable" style="border:none"> -->
  112. <div :class="$style.wrapper">
  113. <div v-show="expandModel && maintaineditable" :class="$style.btnselectmaintain">
  114. <a-button type="link" :class="$style.batchselect" @click="mxRelSelect">
  115. <a-icon type="check-circle" :theme="'filled'" />
  116. 选择
  117. </a-button>
  118. <a-button
  119. type="link"
  120. :disabled="selectedRowKeys.length === 0"
  121. style="z-index:10"
  122. @click="removemx(selectedRowKeys)"
  123. >
  124. <a-icon type="minus-circle" :theme="'filled'" />
  125. 删除
  126. </a-button>
  127. </div>
  128. </div>
  129. <sd-table
  130. v-show="expandModel"
  131. ref="maintaintable"
  132. :row-key="(record, index) => index"
  133. :loading="false"
  134. class="maintaintable"
  135. :columns="modelChildMXColumns"
  136. :data-source="maintaindata"
  137. :pagination="false"
  138. :bordered="true"
  139. :row-selection="
  140. maintaineditable
  141. ? {
  142. getCheckboxProps(record) {
  143. return {
  144. props: { disabled: !showSelection(record) },
  145. }
  146. },
  147. selectedRowKeys: selectedRowKeys,
  148. onChange: onSelectChange,
  149. }
  150. : null
  151. "/></template
  152. ></audit-advanced-group>
  153. </td>
  154. </tr>
  155. <tr
  156. ><td :colspan="4" style="border:none1">
  157. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  158. <template v-slot:read-and-edit="{ editable }">
  159. <audit-advanced-group
  160. :expand="expandW"
  161. :expand-str="'expandW'"
  162. :group-label="'申请单位'"
  163. @changedClick="changedClick"
  164. ><template>
  165. <template>
  166. <div :class="$style.wrapper">
  167. <div v-show="expandW && editable" :class="$style.btnselect">
  168. <a-button type="link" :class="$style.batchselect" @click="dwRelSelect">
  169. <a-icon type="check-circle" :theme="'filled'" />
  170. 选择
  171. </a-button>
  172. </div>
  173. </div>
  174. </template>
  175. <xm-child-table
  176. v-model="model.iamLicenseUnitEntitys"
  177. :read-only="!editable"
  178. label=""
  179. :fields="
  180. [
  181. {
  182. caption: '序号',
  183. name: 'sortNum',
  184. dataType: 'sortNum',
  185. },
  186. ].concat(Array.from(fields.iamLicenseUnitEntitys.attr.dync))
  187. "
  188. :columns="childDWColumns"
  189. :width="1200"
  190. :addbuttonvisiable="false"
  191. @change="saveForm"
  192. >
  193. <template v-slot:unitName="{ field, text, index, value }">
  194. {{ text }}
  195. </template>
  196. <template v-slot:unitCode="{ field, text, index, value }">
  197. {{ text }}
  198. </template>
  199. </xm-child-table>
  200. </template>
  201. </audit-advanced-group>
  202. </template>
  203. </sd-form-item></td
  204. >
  205. </tr>
  206. <tr
  207. ><td :colspan="4" style="border:none1">
  208. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  209. <template v-slot:read-and-edit="{ editable }">
  210. <audit-advanced-group
  211. :expand="expandPeople"
  212. :expand-str="'expandPeople'"
  213. :group-label="'申请用户'"
  214. @changedClick="changedClick"
  215. ><template>
  216. <template>
  217. <div :class="$style.wrapper">
  218. <div v-show="expandPeople && editable" :class="$style.btnselect">
  219. <a-button
  220. type="link"
  221. :class="$style.batchselect"
  222. @click="peopleRelSelect"
  223. >
  224. <a-icon type="check-circle" :theme="'filled'" />
  225. 选择
  226. </a-button>
  227. </div>
  228. </div>
  229. </template>
  230. <xm-child-table
  231. v-model="model.iamLicensePeopleEntitys"
  232. :read-only="!editable"
  233. label=""
  234. :fields="
  235. [
  236. {
  237. caption: '序号',
  238. name: 'sortNum',
  239. dataType: 'sortNum',
  240. },
  241. ].concat(Array.from(fields.iamLicensePeopleEntitys.attr.dync))
  242. "
  243. :columns="peopleColumns"
  244. :width="1200"
  245. :addbuttonvisiable="false"
  246. @change="saveForm"
  247. >
  248. <template v-slot:userName="{ field, text, index, value }">
  249. {{ text }}
  250. </template>
  251. <template v-slot:userUnit="{ field, text, index, value }">
  252. {{ text }}
  253. </template>
  254. </xm-child-table>
  255. </template>
  256. </audit-advanced-group>
  257. </template>
  258. </sd-form-item></td
  259. >
  260. </tr>
  261. <tr
  262. ><td :colspan="4" style="border:none1">
  263. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  264. <template v-slot:read-and-edit="{ editable }">
  265. <audit-advanced-group
  266. :expand="expandProject"
  267. :expand-str="'expandProject'"
  268. :group-label="'申请项目'"
  269. @changedClick="changedClick"
  270. ><template>
  271. <template>
  272. <div :class="$style.wrapper">
  273. <div v-show="expandProject && editable" :class="$style.btnselect">
  274. <a-button
  275. type="link"
  276. :class="$style.batchselect"
  277. @click="projectRelSelect"
  278. >
  279. <a-icon type="check-circle" :theme="'filled'" />
  280. 选择
  281. </a-button>
  282. </div>
  283. </div>
  284. </template>
  285. <xm-child-table
  286. v-model="model.iamLicenseProjectEntitys"
  287. :read-only="!editable"
  288. label=""
  289. :fields="
  290. [
  291. {
  292. caption: '序号',
  293. name: 'sortNum',
  294. dataType: 'sortNum',
  295. },
  296. ].concat(Array.from(fields.iamLicenseProjectEntitys.attr.dync))
  297. "
  298. :columns="projectColumns"
  299. :width="1200"
  300. :addbuttonvisiable="false"
  301. @change="saveForm"
  302. >
  303. <template v-slot:projectName="{ field, text, index, value }">
  304. {{ text }}
  305. </template>
  306. <template v-slot:projectUnit="{ field, text, index, value }">
  307. {{ text }}
  308. </template>
  309. </xm-child-table>
  310. </template>
  311. </audit-advanced-group>
  312. </template>
  313. </sd-form-item></td
  314. >
  315. </tr>
  316. <tr
  317. ><td :colspan="4" style="border:none1">
  318. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  319. <template v-slot:read-and-edit="{ editable }">
  320. <audit-advanced-group
  321. :expand="expandRole"
  322. :expand-str="'expandRole'"
  323. :group-label="'申请角色'"
  324. @changedClick="changedClick"
  325. ><template>
  326. <template>
  327. <div :class="$style.wrapper">
  328. <div v-show="expandRole && editable" :class="$style.btnselect">
  329. <a-button
  330. type="link"
  331. :class="$style.batchselect"
  332. @click="roleRelSelect"
  333. >
  334. <a-icon type="check-circle" :theme="'filled'" />
  335. 选择
  336. </a-button>
  337. </div>
  338. </div>
  339. </template>
  340. <xm-child-table
  341. v-model="model.iamLicenseRoleEntitys"
  342. :read-only="!editable"
  343. label=""
  344. :fields="
  345. [
  346. {
  347. caption: '序号',
  348. name: 'sortNum',
  349. dataType: 'sortNum',
  350. },
  351. ].concat(Array.from(fields.iamLicenseRoleEntitys.attr.dync))
  352. "
  353. :columns="roleColumns"
  354. :width="1200"
  355. :addbuttonvisiable="false"
  356. @change="saveForm"
  357. >
  358. <template v-slot:roleName="{ field, text, index, value }">
  359. {{ text }}
  360. </template>
  361. <template v-slot:roleId="{ field, text, index, value }">
  362. {{ text }}
  363. </template>
  364. <template v-slot:code="{ field, text, index, value }">
  365. {{ text }}
  366. </template>
  367. </xm-child-table>
  368. </template>
  369. </audit-advanced-group>
  370. </template>
  371. </sd-form-item></td
  372. >
  373. </tr>
  374. <tr v-show="false">
  375. <sd-form-item-td name="iamLicensePeopleEntitys" :label="null" :colspan="3">
  376. </sd-form-item-td>
  377. </tr>
  378. </table>
  379. </template>
  380. </sd-webflow>
  381. <AuditSelectMaintain :visible="visibleY" @listMxSelected="listMxSelected">
  382. </AuditSelectMaintain>
  383. <auditClassTable :visible="flTableShow" @listMxSelected="classListMxSelected">
  384. </auditClassTable>
  385. <div v-show="false">
  386. <sd-group-picker
  387. ref="dwRelSelect"
  388. v-model="mainSendUnit"
  389. :single="false"
  390. :read-only="false"
  391. @change="change"
  392. />
  393. </div>
  394. <roleModal v-model="roleShow" @selectRoleList="changeRole" />
  395. <projectModal v-model="projectShow" @selectProject="changeProject" />
  396. <div v-show="false">
  397. <sd-user-picker
  398. ref="peopleRelSelect"
  399. v-model="mainSendPersonal"
  400. :single="false"
  401. :read-only="false"
  402. @change="changePeople"
  403. />
  404. </div>
  405. <div v-show="false">
  406. <SdGroupPicker
  407. ref="cRelSelect"
  408. v-model="companyUnit"
  409. :single="false"
  410. :read-only="false"
  411. @change="changecompany"
  412. />
  413. </div>
  414. </span>
  415. </template>
  416. <script>
  417. import { Modal, message } from 'ant-design-vue'
  418. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  419. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  420. import auditMaintainService from './audit-maintain-service'
  421. import AuditSelectMaintain from './audit-select-maintain.vue'
  422. import roleModal from '../dataUphold/role-modal.vue'
  423. import projectModal from '../dataUphold/project-modal.vue'
  424. import components from './_import-components/audit-sqapply-from-import'
  425. import auditClassTable from '../dataUphold/audit-class-table.vue'
  426. import axios from '@/common/services/axios-instance'
  427. import moment from 'moment'
  428. export default {
  429. name: 'AuditSqapplyFrom',
  430. metaInfo: {
  431. title: '授权申请',
  432. },
  433. components: {
  434. ...components,
  435. auditAdvancedGroup,
  436. AuditSelectMaintain,
  437. roleModal,
  438. projectModal,
  439. auditClassTable,
  440. },
  441. mixins: [auditAdvancedGroupMixins],
  442. data() {
  443. return {
  444. mainSendUnit: [],
  445. mainSendPersonal: [],
  446. mainSendProject: [],
  447. // 控制是否展开
  448. expandY: true,
  449. expandW: true,
  450. expandJ: true,
  451. expandPeople: true,
  452. expandRole: true,
  453. expandProject: true,
  454. expandCompany: true,
  455. visibleY: false,
  456. maintaineditable: false,
  457. expandModel: true,
  458. modelChildMXColumns: [
  459. {
  460. title: '序号',
  461. dataIndex: 'sortNum',
  462. customRender: (text, record, index) => `${index + 1}`,
  463. width: '80px',
  464. },
  465. {
  466. title: '模型名称',
  467. dataIndex: 'modelName',
  468. },
  469. {
  470. title: '模型编号',
  471. dataIndex: 'modelCode',
  472. },
  473. {
  474. title: '风险描述',
  475. dataIndex: 'rick',
  476. },
  477. ],
  478. companyColumns: [
  479. {
  480. title: '序号',
  481. dataIndex: 'sortNum',
  482. customRender: (text, record, index) => `${index + 1}`,
  483. width: '80px',
  484. },
  485. { dataIndex: 'maintainId', sdHidden: true },
  486. {
  487. title: '公司名称',
  488. dataIndex: 'unitName',
  489. },
  490. {
  491. title: '公司编号',
  492. dataIndex: 'unitCode',
  493. },
  494. {
  495. dataIndex: 'unitId',
  496. sdHidden: true,
  497. },
  498. ],
  499. childMXColumns: [
  500. {
  501. title: '序号',
  502. dataIndex: 'sortNum',
  503. customRender: (text, record, index) => `${index + 1}`,
  504. width: '80px',
  505. },
  506. {
  507. title: '分类名称',
  508. dataIndex: 'categoryName',
  509. },
  510. {
  511. title: '分类编号',
  512. dataIndex: 'categoryId',
  513. },
  514. ],
  515. childDWColumns: [
  516. {
  517. title: '序号',
  518. dataIndex: 'sortNum',
  519. customRender: (text, record, index) => `${index + 1}`,
  520. width: '80px',
  521. },
  522. { dataIndex: 'id', sdHidden: true },
  523. { dataIndex: 'maintainId', sdHidden: true },
  524. {
  525. title: '单位名称',
  526. dataIndex: 'unitName',
  527. },
  528. {
  529. title: '单位编号',
  530. dataIndex: 'unitCode',
  531. },
  532. {
  533. title: '单位Id',
  534. dataIndex: 'unitId',
  535. sdHidden: true,
  536. },
  537. ],
  538. peopleColumns: [
  539. {
  540. title: '序号',
  541. dataIndex: 'sortNum',
  542. customRender: (text, record, index) => `${index + 1}`,
  543. width: '80px',
  544. },
  545. { dataIndex: 'maintainId', sdHidden: true },
  546. {
  547. title: '用户名称',
  548. dataIndex: 'userName',
  549. },
  550. // 所属单位
  551. {
  552. title: '所属单位',
  553. dataIndex: 'userUnit',
  554. },
  555. // userId
  556. {
  557. title: '用户Id',
  558. dataIndex: 'userId',
  559. sdHidden: true,
  560. },
  561. ],
  562. projectColumns: [
  563. {
  564. title: '序号',
  565. dataIndex: 'sortNum',
  566. customRender: (text, record, index) => `${index + 1}`,
  567. width: '80px',
  568. },
  569. { dataIndex: 'maintainId', sdHidden: true },
  570. {
  571. title: '项目名称',
  572. dataIndex: 'projectName',
  573. },
  574. // 所属单位
  575. {
  576. title: '所属单位',
  577. dataIndex: 'projectUnit',
  578. },
  579. // userId
  580. {
  581. title: '项目Id',
  582. dataIndex: 'projectId',
  583. sdHidden: true,
  584. },
  585. ],
  586. roleColumns: [
  587. {
  588. title: '序号',
  589. dataIndex: 'sortNum',
  590. customRender: (text, record, index) => `${index + 1}`,
  591. width: '80px',
  592. },
  593. { dataIndex: 'maintainId', sdHidden: true },
  594. {
  595. title: '角色名称',
  596. dataIndex: 'roleName',
  597. },
  598. // 角色编号
  599. {
  600. title: '角色编号',
  601. dataIndex: 'code',
  602. },
  603. {
  604. dataIndex: 'roleId',
  605. sdHidden: true,
  606. },
  607. ],
  608. maintaindata: [],
  609. selectedRowKeys: [],
  610. flag: true,
  611. modelFlag: true,
  612. classtable: false,
  613. rules: [
  614. {
  615. required: true,
  616. trigger: ['change', 'blur'],
  617. },
  618. ],
  619. // 控制是否弹出提示框
  620. roleShow: false,
  621. projectShow: false,
  622. peopleShow: false,
  623. CompanyShow: false,
  624. // flTableShow 是否显示分类表格
  625. flTableShow: false,
  626. // 分类列表
  627. classdata: [],
  628. // 人员
  629. personaldata: [],
  630. personal: [],
  631. projectData: [],
  632. projectTable: [],
  633. companyData: [],
  634. companyUnit: [],
  635. roleData: [],
  636. roleTable: [],
  637. docType: 'model_apply',
  638. }
  639. },
  640. watch: {
  641. classdata() {
  642. this.saveForm()
  643. },
  644. },
  645. mounted() {},
  646. methods: {
  647. changeType() {
  648. const empowerType = this.$refs.docform.getFieldValue('empowerType')
  649. if (empowerType === '1') {
  650. this.$refs.docform.setFieldValue('startDate', '')
  651. this.$refs.docform.setFieldValue('endDate', '')
  652. }
  653. if (empowerType === '2') {
  654. // 设置开始时间 为当前时间
  655. // 结束时间为当年最后一天
  656. // 使用moment格式
  657. const start = moment()
  658. const end = moment().endOf('year')
  659. this.$refs.docform.setFieldValue('startDate', start)
  660. this.$refs.docform.setFieldValue('endDate', end)
  661. }
  662. this.saveForm()
  663. },
  664. getmodelsqdata(model) {
  665. this.mainSendUnit = []
  666. },
  667. saveForm() {
  668. const save = new Promise((resolve) => {
  669. this.$refs.docform.setFieldValue('docType', this.docType)
  670. let udata = []
  671. if (this.$refs.docform.getFieldValue('iamLicenseUnitEntitys') !== undefined) {
  672. udata = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  673. }
  674. // 指定公司
  675. let cdata = []
  676. if (this.$refs.docform.getFieldValue('iamAppointUnitEntitys') !== undefined) {
  677. cdata = cdata.concat(this.$refs.docform.getFieldValue('iamAppointUnitEntitys'))
  678. }
  679. // 人员
  680. let pdata = []
  681. if (this.$refs.docform.getFieldValue('iamLicensePeopleEntitys') !== undefined) {
  682. pdata = pdata.concat(this.$refs.docform.getFieldValue('iamLicensePeopleEntitys'))
  683. }
  684. // 角色
  685. let rdata = []
  686. if (this.$refs.docform.getFieldValue('iamLicenseRoleEntitys') !== undefined) {
  687. rdata = rdata.concat(this.$refs.docform.getFieldValue('iamLicenseRoleEntitys'))
  688. }
  689. // 项目
  690. let pjdata = []
  691. if (this.$refs.docform.getFieldValue('iamLicenseProjectEntitys') !== undefined) {
  692. pjdata = pjdata.concat(this.$refs.docform.getFieldValue('iamLicenseProjectEntitys'))
  693. }
  694. if (this.maintaindata.length > 0) {
  695. const empowerType = this.$refs.docform.getFieldValue('empowerType')
  696. const creatorName = this.$refs.docform.getFieldValue('creatorId')
  697. const createDeptName = this.$refs.docform.getFieldValue('createDeptName')
  698. let sl = null
  699. let el = null
  700. if (empowerType === '0') {
  701. if (this.$refs.docform.getFieldValue('startDate') !== undefined) {
  702. const s = new Date(this.$refs.docform.getFieldValue('startDate'))
  703. const e = new Date(this.$refs.docform.getFieldValue('endDate'))
  704. sl = s.getTime()
  705. el = e.getTime()
  706. // 如果开始时间大于结束时间则提示开始时间不能大于结束时间
  707. if (sl > el) {
  708. message.warning({
  709. title: '提示',
  710. content: '开始时间不能大于结束时间!',
  711. })
  712. return
  713. }
  714. }
  715. }
  716. let idListKeys = []
  717. idListKeys = this.maintaindata.map((item) => item?.id) || []
  718. const { modelName, modelCode } = this.maintaindata[0]
  719. this.$refs.docform.setFieldValue('modelName', modelName)
  720. this.$refs.docform.setFieldValue('modelCode', modelCode)
  721. let maintainId = ''
  722. if (idListKeys.length > 0) {
  723. maintainId = idListKeys.join(',')
  724. }
  725. udata.forEach((item) => {
  726. item.docType = this.docType
  727. item.maintainId = maintainId
  728. item.empowerType = empowerType
  729. item.startDate = sl
  730. item.endDate = el
  731. })
  732. this.$refs.docform.setFieldValue('iamLicenseUnitEntitys', udata)
  733. // 处理指定公司数据
  734. cdata.forEach((item) => {
  735. item.docType = this.docType
  736. item.maintainId = maintainId
  737. item.empowerType = empowerType
  738. item.startDate = sl
  739. item.endDate = el
  740. })
  741. this.$refs.docform.setFieldValue('iamAppointUnitEntitys', cdata)
  742. // 处理角色数据
  743. rdata.forEach((item) => {
  744. item.docType = this.docType
  745. item.maintainId = maintainId
  746. item.empowerType = empowerType
  747. item.startDate = sl
  748. item.endDate = el
  749. })
  750. this.$refs.docform.setFieldValue('iamLicenseRoleEntitys', rdata)
  751. // 处理项目数据
  752. pjdata.forEach((item) => {
  753. item.docType = this.docType
  754. item.maintainId = maintainId
  755. item.empowerType = empowerType
  756. item.startDate = sl
  757. item.endDate = el
  758. })
  759. this.$refs.docform.setFieldValue('iamLicenseProjectEntitys', pjdata)
  760. // 处理人员数据
  761. pdata.forEach((item) => {
  762. item.docType = this.docType
  763. item.maintainId = maintainId
  764. item.empowerType = empowerType
  765. item.startDate = sl
  766. item.endDate = el
  767. })
  768. this.$refs.docform.setFieldValue('iamLicensePeopleEntitys', pdata)
  769. }
  770. resolve(true)
  771. })
  772. return save
  773. },
  774. validForm() {
  775. if (this.maintaindata.length === 0) {
  776. Modal.warning({
  777. title: '提示',
  778. content: '请选择需要授权的模型!',
  779. })
  780. return Promise.resolve(false)
  781. } else {
  782. const udata = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  783. const pdata = this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')
  784. const pjdata = this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')
  785. const rdata = this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')
  786. if (udata.length === 0 && pdata.length === 0 && pjdata.length === 0 && rdata.length === 0) {
  787. Modal.warning({
  788. title: '提示',
  789. content: '请至少选择一个授权项!',
  790. })
  791. return Promise.resolve(false)
  792. }
  793. this.$refs.docform.setFieldValue(
  794. 'title',
  795. this.$refs.docform.getFieldValue('creatorName') + '模型授权申请'
  796. )
  797. return Promise.resolve(true)
  798. // }
  799. }
  800. },
  801. actionBtnClick(evt, { button, FlowData }) {
  802. if (button.fakeId === 'save' || button.fakeId === 'workflow-push') {
  803. // 保存前先校验计划是否已经存在
  804. evt.waitUntil(
  805. new Promise((resolve, reject) => {
  806. this.saveForm().then((res) => {
  807. if (!res) {
  808. evt.preventDefault()
  809. }
  810. resolve()
  811. })
  812. })
  813. )
  814. }
  815. },
  816. removemx(keys) {
  817. // 用的序号作key,从大往小删,防止串了
  818. const removeKeys = keys.sort((a, b) => b - a)
  819. removeKeys.forEach((key) => {
  820. this.maintaindata.splice(key, 1)
  821. })
  822. this.selectedRowKeys = []
  823. },
  824. getmaintaindata(model, fields) {
  825. if (this.modelFlag) {
  826. this.maintaineditable = !fields.iamLicenseUnitEntitys.readonly
  827. const id = model.id
  828. if (id) {
  829. auditMaintainService.getmaintainsqdata(id).then((data) => {
  830. this.maintaindata = data
  831. this.getmodelsqdata(model)
  832. })
  833. }
  834. this.modelFlag = false
  835. }
  836. return true
  837. },
  838. getClassdata(model, fields) {
  839. if (this.flag) {
  840. this.classtable = !fields.iamLicenseUnitEntitys.readonly
  841. const id = model.id
  842. if (id) {
  843. auditMaintainService.getclassdata(id).then((data) => {
  844. if (data[0]) {
  845. this.classdata = data
  846. }
  847. this.getmodelsqdata(model)
  848. })
  849. }
  850. this.flag = false
  851. }
  852. return true
  853. },
  854. showSelection() {
  855. return true
  856. },
  857. onSelectChange(selectedRowKeys) {
  858. this.selectedRowKeys = selectedRowKeys
  859. },
  860. // 单位
  861. change(values) {
  862. let iamAuditDwMxs = []
  863. if (this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')) {
  864. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  865. }
  866. if (values.length < iamAuditDwMxs.length) {
  867. iamAuditDwMxs = []
  868. }
  869. values.forEach((element) => {
  870. if (iamAuditDwMxs.findIndex((dw) => dw.unitCode === element.code) === -1) {
  871. const mmc = {}
  872. mmc.unitName = element.name
  873. // mmc.unitCode = element.props?.code
  874. mmc.unitCode = element.code + ''
  875. mmc.unitId = element.code
  876. iamAuditDwMxs.push(mmc)
  877. }
  878. })
  879. this.$refs.docform.setFieldValue('iamLicenseUnitEntitys', iamAuditDwMxs)
  880. this.saveForm()
  881. },
  882. // 公司
  883. changecompany(values) {
  884. let iamAuditDwMxs = []
  885. // 公司
  886. if (this.$refs.docform.getFieldValue('iamAppointUnitEntitys')) {
  887. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamAppointUnitEntitys')
  888. }
  889. if (values.length < iamAuditDwMxs.length) {
  890. iamAuditDwMxs = []
  891. }
  892. values.forEach((element) => {
  893. if (iamAuditDwMxs.findIndex((dw) => dw.unitCode === element.code) === -1) {
  894. const mmc = {}
  895. mmc.unitName = element.name
  896. mmc.unitCode = element.code + ''
  897. mmc.unitId = element.code
  898. iamAuditDwMxs.push(mmc)
  899. }
  900. })
  901. this.$refs.docform.setFieldValue('iamAppointUnitEntitys', iamAuditDwMxs)
  902. this.saveForm()
  903. },
  904. // 用户
  905. // iamLicensePeopleEntitys
  906. changePeople(values) {
  907. let iamAuditDwMxs = []
  908. if (this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')) {
  909. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')
  910. }
  911. // 如果values长度小于iamAuditDwMxs长度,说明有删除
  912. if (values.length < iamAuditDwMxs.length) {
  913. iamAuditDwMxs = []
  914. }
  915. values.forEach((element) => {
  916. if (iamAuditDwMxs.findIndex((dw) => dw.userId === element.code) === -1) {
  917. const mmc = {}
  918. mmc.userName = element.name
  919. mmc.userId = element.code
  920. axios({
  921. url: 'api/xcoa-mobile/v1/iammodelmaintain/findGroupByAccount?account=' + element.code,
  922. method: 'get',
  923. }).then((res) => {
  924. mmc.userUnit = res.data.name
  925. iamAuditDwMxs.push(mmc)
  926. this.$refs.docform.setFieldValue('iamLicensePeopleEntitys', iamAuditDwMxs)
  927. })
  928. }
  929. })
  930. this.saveForm()
  931. },
  932. // 角色
  933. changeRole(values) {
  934. let iamAuditDwMxs = []
  935. if (this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')) {
  936. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')
  937. }
  938. if (values.length < iamAuditDwMxs.length) {
  939. iamAuditDwMxs = []
  940. }
  941. values.forEach((element) => {
  942. if (iamAuditDwMxs.findIndex((dw) => dw.roleId === element.id) === -1) {
  943. const mmc = {}
  944. mmc.roleName = element.name
  945. mmc.roleId = element.id
  946. mmc.code = element.code
  947. iamAuditDwMxs.push(mmc)
  948. }
  949. })
  950. this.$refs.docform.setFieldValue('iamLicenseRoleEntitys', iamAuditDwMxs)
  951. this.saveForm()
  952. },
  953. // 项目
  954. changeProject(values) {
  955. let iamAuditDwMxs = []
  956. // iamAuditDwMxs = this.projectData
  957. if (this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')) {
  958. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')
  959. }
  960. if (values.length < iamAuditDwMxs.length) {
  961. iamAuditDwMxs = []
  962. }
  963. values.forEach((element) => {
  964. if (iamAuditDwMxs.findIndex((dw) => dw.projectId === element.id) === -1) {
  965. const mmc = {}
  966. mmc.projectName = element.projectTitle
  967. mmc.projectId = element.id
  968. mmc.projectUnit = element.leadUnitName
  969. iamAuditDwMxs.push(mmc)
  970. }
  971. })
  972. this.$refs.docform.setFieldValue('iamLicenseProjectEntitys', iamAuditDwMxs)
  973. this.saveForm()
  974. },
  975. // 选择模型列表
  976. mxRelSelect() {
  977. // 选择模型列表
  978. this.visibleY = true
  979. },
  980. flRelSelect() {
  981. this.flTableShow = true
  982. },
  983. peopleRelSelect() {
  984. setTimeout(() => {
  985. this.$refs.peopleRelSelect.openPicker()
  986. }, 0)
  987. },
  988. projectRelSelect() {
  989. this.projectShow = true
  990. },
  991. roleRelSelect() {
  992. this.roleShow = true
  993. },
  994. companylSelect() {
  995. // 选择申请单位
  996. setTimeout(() => {
  997. this.$refs.cRelSelect.openPicker()
  998. }, 0)
  999. },
  1000. // 选择申请单位
  1001. dwRelSelect() {
  1002. // 选择申请单位
  1003. setTimeout(() => {
  1004. this.$refs.dwRelSelect.openPicker()
  1005. }, 0)
  1006. },
  1007. listMxSelected(keys, keyinfos) {
  1008. const iamAuditMxs = []
  1009. // iamAuditMxs = this.maintaindata
  1010. keyinfos.forEach((element) => {
  1011. const mmc = {}
  1012. mmc.modelName = element.modelName
  1013. mmc.modelCode = element.modelCode
  1014. mmc.modelDesc = element.modelDesc
  1015. mmc.rick = element.rick
  1016. mmc.id = element.id
  1017. iamAuditMxs.push(mmc)
  1018. })
  1019. this.maintaindata = iamAuditMxs
  1020. this.saveForm()
  1021. // 处理人员数据-仅增加新增的
  1022. // pdata.forEach((item) => {
  1023. // item.docType = 'apply'
  1024. // item.maintainId = maintainId
  1025. // })
  1026. },
  1027. classListMxSelected(keys, keyinfos) {
  1028. const iamAuditMxs = []
  1029. keyinfos.map((item) => {
  1030. // 判断当前模型ID是否存在存在则不添加
  1031. const m = iamAuditMxs.find((p) => p.id === item.id)
  1032. if (!m) {
  1033. const mmc = {}
  1034. mmc.id = item.id
  1035. mmc.categoryName = item.categoryName
  1036. mmc.categoryId = item.categoryId
  1037. iamAuditMxs.push(mmc)
  1038. }
  1039. })
  1040. this.classdata = iamAuditMxs
  1041. this.saveForm()
  1042. },
  1043. },
  1044. }
  1045. </script>
  1046. <style module lang="scss">
  1047. @use '@/common/design' as *;
  1048. @import '@/webflow/sd-flow-form.scss';
  1049. .btnselect {
  1050. position: relative;
  1051. top: 2px;
  1052. right: 80px;
  1053. float: right;
  1054. .batchselect {
  1055. z-index: 100;
  1056. margin-left: 10px;
  1057. }
  1058. }
  1059. .btnselectmaintain {
  1060. position: relative;
  1061. float: right;
  1062. .batchselect {
  1063. z-index: 100;
  1064. margin-right: -10px;
  1065. margin-left: 10px;
  1066. }
  1067. }
  1068. .maintaintable {
  1069. :global(.ant-table-thead > tr > th) {
  1070. border-right: none;
  1071. }
  1072. :global(.ant-table-bordered.ant-table-empty .ant-table-placeholder) {
  1073. border: none;
  1074. }
  1075. :global(.ant-table-body table) {
  1076. // border-left:none;
  1077. border: none;
  1078. }
  1079. }
  1080. </style>