audit-datasq-form.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. <template>
  2. <div style="float:left" :class="$style.mainDiv">
  3. <table>
  4. <tr v-if="unit.length > 1">
  5. <td>
  6. <audit-advanced-group
  7. :expand="unitExpand"
  8. :expand-str="'unitExpand'"
  9. :group-label="'授权单位'"
  10. tablestyle="''"
  11. @changedClick="changedClick"
  12. ><template>
  13. <sd-child-table
  14. ref="udata"
  15. v-model="unitdata"
  16. :label="null"
  17. :columns="unitcolumns"
  18. :modal-props="{ height: '470px' }"
  19. :fields="
  20. [
  21. {
  22. caption: '序号',
  23. name: 'sortNum',
  24. dataType: 'sortNum',
  25. },
  26. ].concat(unit)
  27. "
  28. :handle-before-add="dwRelSelect"
  29. :flagpage="true"
  30. >
  31. <template v-slot:form="{ model, fields }">
  32. <table>
  33. <tr>
  34. <sd-form-item-td name="unitName">
  35. <template v-slot:read-and-edit="{ editable }"
  36. >{{ model.unitName }}
  37. </template>
  38. </sd-form-item-td>
  39. <sd-form-item-td name="unitCode">
  40. <template v-slot:read-and-edit="{ editable }"
  41. >{{ model.unitCode }}
  42. </template>
  43. </sd-form-item-td>
  44. </tr>
  45. <tr>
  46. <sd-form-item-td name="empowerType" :colspan="3">
  47. <template v-slot:read-and-edit="{ editable }">
  48. <a-select v-model="model.empowerType">
  49. <a-select-option
  50. v-for="(key, i) in fields.empowerType.attr.selectListItem"
  51. :key="i"
  52. :value="key.value"
  53. >
  54. {{ key.label }}
  55. </a-select-option>
  56. </a-select>
  57. </template>
  58. </sd-form-item-td>
  59. </tr>
  60. <tr v-if="model.empowerType !== '1'">
  61. <sd-form-item-td name="startDate" />
  62. <sd-form-item-td name="endDate" range-after="startDate" />
  63. </tr>
  64. <tr v-if="model.empowerType === '1'">
  65. <td class="ant-form-item-label ant-form-item-label">
  66. <label title="开始日期" class="ant-form-item"> 开始日期 </label>
  67. </td>
  68. <td class="ant-form-item-control-wrapper">
  69. <a-date-picker v-model="model.startDate" :disabled="true" />
  70. </td>
  71. <td class="ant-form-item-label ant-form-item-label">
  72. <label title="结束日期" class="ant-form-item"> 结束日期 </label>
  73. </td>
  74. <td class="ant-form-item-control-wrapper">
  75. <a-date-picker v-model="model.endDate" :disabled="true" />
  76. </td>
  77. </tr>
  78. </table>
  79. </template> </sd-child-table
  80. ></template>
  81. </audit-advanced-group> </td
  82. ></tr>
  83. </table>
  84. <table>
  85. <tr v-if="personal.length > 1">
  86. <td
  87. ><audit-advanced-group
  88. :expand="personalExpand"
  89. :expand-str="'personalExpand'"
  90. :group-label="'授权人员'"
  91. tablestyle="''"
  92. @changedClick="changedClick"
  93. ><template>
  94. <sd-child-table
  95. ref="pdata"
  96. v-model="personaldata"
  97. :label="null"
  98. :columns="personalcolumns"
  99. :modal-props="{ height: '470px' }"
  100. :fields="
  101. [
  102. {
  103. caption: '序号',
  104. name: 'sortNum',
  105. dataType: 'sortNum',
  106. },
  107. ].concat(personal)
  108. "
  109. :handle-before-add="pRelSelect"
  110. :flagpage="true"
  111. >
  112. <template v-slot:form="{ model, fields }">
  113. <table>
  114. <tr>
  115. <sd-form-item-td name="userName">
  116. <template v-slot:read-and-edit="{ editable }"
  117. >{{ model.userName }}
  118. </template>
  119. </sd-form-item-td>
  120. <sd-form-item-td name="userUnit">
  121. <template v-slot:read-and-edit="{ editable }"
  122. >{{ model.userUnit }}
  123. </template>
  124. </sd-form-item-td>
  125. </tr>
  126. <tr>
  127. <sd-form-item-td name="empowerType" :colspan="3">
  128. <template v-slot:read-and-edit="{ editable }">
  129. <a-select v-model="model.empowerType">
  130. <a-select-option
  131. v-for="(key, i) in fields.empowerType.attr.selectListItem"
  132. :key="i"
  133. :value="key.value"
  134. >
  135. {{ key.label }}
  136. </a-select-option>
  137. </a-select>
  138. </template>
  139. </sd-form-item-td>
  140. </tr>
  141. <tr v-if="model.empowerType !== '1'">
  142. <sd-form-item-td name="startDate" />
  143. <sd-form-item-td name="endDate" />
  144. </tr>
  145. <tr v-if="model.empowerType === '1'">
  146. <td class="ant-form-item-label ant-form-item-label">
  147. <label title="开始日期" class="ant-form-item"> 开始日期 </label>
  148. </td>
  149. <td class="ant-form-item-control-wrapper">
  150. <a-date-picker
  151. v-model="model.startDate"
  152. :disabled="model.empowerType === '1'"
  153. />
  154. </td>
  155. <td class="ant-form-item-label ant-form-item-label">
  156. <label title="结束日期" class="ant-form-item"> 结束日期 </label>
  157. </td>
  158. <td class="ant-form-item-control-wrapper">
  159. <a-date-picker
  160. v-model="model.endDate"
  161. :disabled="model.empowerType === '1'"
  162. />
  163. </td>
  164. </tr>
  165. </table>
  166. </template> </sd-child-table></template
  167. ></audit-advanced-group> </td
  168. ></tr>
  169. </table>
  170. <div v-show="false">
  171. <sd-group-picker
  172. ref="dwRelSelect"
  173. v-model="mainSendUnit"
  174. :single="false"
  175. :read-only="false"
  176. @change="changeunit"
  177. />
  178. </div>
  179. <div v-show="false">
  180. <sd-user-picker
  181. ref="pRelSelect"
  182. v-model="mainSendPersonal"
  183. :single="false"
  184. :read-only="false"
  185. @change="changep"
  186. />
  187. </div>
  188. </div>
  189. </template>
  190. <script>
  191. import { Modal, Message } from 'ant-design-vue'
  192. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  193. import axios from '@/common/services/axios-instance'
  194. // import auditFormTopBanner from '../../components/audit-form-top-banner'
  195. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  196. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  197. import auditMaintainService from './audit-maintain-service'
  198. import components from './_import-components/audit-datasq-form-import'
  199. export default {
  200. name: 'AuditDatasqForm',
  201. metaInfo: {
  202. title: '数据授权',
  203. },
  204. components: {
  205. ...components,
  206. auditAdvancedGroup,
  207. },
  208. mixins: [auditAdvancedGroupMixins],
  209. props: {
  210. // 默认选中节点
  211. // key: {
  212. // type: Number,
  213. // default: 0,
  214. // },
  215. recordId: {
  216. type: String,
  217. default: '',
  218. },
  219. },
  220. data() {
  221. return {
  222. mainSendUnit: [],
  223. mainSendPersonal: [],
  224. selectedRowKeys: [],
  225. selectid: '',
  226. maintaindata: [],
  227. unitdata: [],
  228. personaldata: [],
  229. maintainExpand: true,
  230. unitExpand: true,
  231. personalExpand: true,
  232. personal: [],
  233. unit: [],
  234. columns: [
  235. {
  236. title: '序号',
  237. dataIndex: 'sortNum',
  238. customRender: (text, record, index) => `${index + 1}`,
  239. width: '80px',
  240. },
  241. {
  242. title: '模型名称',
  243. dataIndex: 'modelName',
  244. },
  245. {
  246. title: '模型编号',
  247. dataIndex: 'modelCode',
  248. },
  249. {
  250. title: '模型描述',
  251. dataIndex: 'modelDesc',
  252. },
  253. ],
  254. unitcolumns: [
  255. {
  256. title: '序号',
  257. dataIndex: 'sortNum',
  258. customRender: (text, record, index) => `${index + 1}`,
  259. width: '80px',
  260. },
  261. {
  262. title: '单位编号',
  263. dataIndex: 'unitCode',
  264. sdHidden: false,
  265. },
  266. {
  267. title: '单位名称',
  268. dataIndex: 'unitName',
  269. sdHidden: false,
  270. },
  271. {
  272. title: '授权类型',
  273. dataIndex: 'empowerType',
  274. sdHidden: false,
  275. },
  276. {
  277. title: '开始日期',
  278. dataIndex: 'startDate',
  279. sdHidden: false,
  280. },
  281. {
  282. title: '结束日期',
  283. dataIndex: 'endDate',
  284. sdHidden: false,
  285. },
  286. {
  287. dataIndex: 'id',
  288. sdHidden: true,
  289. },
  290. {
  291. dataIndex: 'unitOpt',
  292. sdHidden: true,
  293. },
  294. {
  295. dataIndex: 'unitId',
  296. sdHidden: true,
  297. },
  298. {
  299. dataIndex: 'selectOrgId',
  300. sdHidden: true,
  301. },
  302. {
  303. dataIndex: 'belongedOrgId',
  304. sdHidden: true,
  305. },
  306. {
  307. dataIndex: 'docType',
  308. sdHidden: true,
  309. },
  310. {
  311. dataIndex: 'maintainId',
  312. sdHidden: true,
  313. },
  314. {
  315. dataIndex: 'applyId',
  316. sdHidden: true,
  317. },
  318. ],
  319. personalcolumns: [
  320. {
  321. title: '序号',
  322. dataIndex: 'sortNum',
  323. customRender: (text, record, index) => `${index + 1}`,
  324. width: '80px',
  325. },
  326. {
  327. title: '用户名',
  328. dataIndex: 'userName',
  329. sdHidden: false,
  330. },
  331. {
  332. title: '所属单位',
  333. dataIndex: 'userUnit',
  334. sdHidden: false,
  335. },
  336. {
  337. title: '授权类型',
  338. dataIndex: 'empowerType',
  339. sdHidden: false,
  340. },
  341. {
  342. title: '开始日期',
  343. dataIndex: 'startDate',
  344. sdHidden: false,
  345. },
  346. {
  347. title: '结束日期',
  348. dataIndex: 'endDate',
  349. sdHidden: false,
  350. },
  351. {
  352. dataIndex: 'id',
  353. sdHidden: true,
  354. },
  355. {
  356. dataIndex: 'userId',
  357. sdHidden: true,
  358. },
  359. {
  360. dataIndex: 'userOpt',
  361. sdHidden: true,
  362. },
  363. {
  364. dataIndex: 'selectOrgId',
  365. sdHidden: true,
  366. },
  367. {
  368. dataIndex: 'belongedOrgId',
  369. sdHidden: true,
  370. },
  371. {
  372. dataIndex: 'docType',
  373. sdHidden: true,
  374. },
  375. {
  376. dataIndex: 'maintainId',
  377. sdHidden: true,
  378. },
  379. {
  380. dataIndex: 'applyId',
  381. sdHidden: true,
  382. },
  383. ],
  384. }
  385. },
  386. watch: {
  387. recordId() {
  388. this.getmodelsqdata(this.recordId)
  389. },
  390. },
  391. created() {
  392. this.getfields()
  393. },
  394. methods: {
  395. getmodelsqdata(id) {
  396. this.mainSendUnit = []
  397. this.mainSendPersonal = []
  398. auditMaintainService.getIamModelMaintain(id).then((data) => {
  399. this.unitdata = data.iamLicenseUnitEntitys
  400. this.personaldata = data.iamLicensePeopleEntitys
  401. data.iamLicenseUnitEntitys.forEach((unit) => {
  402. this.mainSendUnit.push({
  403. code: unit.unitId.toString(),
  404. id: unit.unitId,
  405. name: unit.unitName,
  406. props: { code: unit.unitCode },
  407. type: 'GROUP',
  408. })
  409. })
  410. data.iamLicensePeopleEntitys.forEach((p) => {
  411. this.mainSendPersonal.push({
  412. code: p.userId,
  413. name: p.userName,
  414. type: 'User',
  415. })
  416. })
  417. })
  418. },
  419. panelEndYearChange(value) {},
  420. savetableh(index, field, data) {
  421. this.$refs[data].savetableh(index, field)
  422. },
  423. changeunit(values) {
  424. let iamAuditDwMxs = []
  425. iamAuditDwMxs = this.unitdata
  426. values.forEach((element) => {
  427. const index = iamAuditDwMxs.findIndex((i) => i.unitCode === element.code)
  428. if (index === -1) {
  429. const mmc = {}
  430. mmc.unitName = element.name
  431. mmc.unitCode = element.code
  432. mmc.unitId = element.code
  433. iamAuditDwMxs.push(mmc)
  434. }
  435. })
  436. this.unitdata = iamAuditDwMxs
  437. },
  438. changep(values) {
  439. let iamAuditPMxs = []
  440. iamAuditPMxs = this.personaldata
  441. // 过滤表格中已有的人员
  442. values.forEach((element) => {
  443. const index = iamAuditPMxs.findIndex((i) => i.userId === element.code)
  444. if (index === -1) {
  445. const mmc = {}
  446. mmc.userName = element.name
  447. mmc.userId = element.code
  448. axios({
  449. url: 'api/xcoa-mobile/v1/iammodelmaintain/findGroupByAccount?account=' + element.code,
  450. method: 'get',
  451. }).then((res) => {
  452. mmc.userUnit = res.data.name
  453. iamAuditPMxs.push(mmc)
  454. })
  455. }
  456. })
  457. this.personaldata = iamAuditPMxs
  458. },
  459. // 选择申请单位
  460. dwRelSelect() {
  461. // 选择申请单位
  462. setTimeout(() => {
  463. this.$refs.dwRelSelect.openPicker()
  464. }, 0)
  465. return true
  466. },
  467. pRelSelect() {
  468. // 选择申请单位
  469. setTimeout(() => {
  470. this.$refs.pRelSelect.openPicker()
  471. }, 0)
  472. return true
  473. },
  474. saveForm() {
  475. const udata = []
  476. const pdata = []
  477. this.unitdata.forEach((item) => {
  478. let sl = null
  479. let el = null
  480. if (item.empowerType === '0') {
  481. if (item.startDate !== undefined) {
  482. const s = new Date(item.startDate)
  483. const e = new Date(item.endDate)
  484. sl = s.getTime()
  485. el = e.getTime()
  486. }
  487. }
  488. udata.push({
  489. docType: 'date',
  490. empowerType: item.empowerType,
  491. startDate: sl,
  492. endDate: el,
  493. unitCode: item.unitCode,
  494. unitName: item.unitName,
  495. })
  496. })
  497. this.personaldata.forEach((item) => {
  498. let sl = null
  499. let el = null
  500. if (item.empowerType === '0') {
  501. if (item.startDate !== undefined) {
  502. const s = new Date(item.startDate)
  503. const e = new Date(item.endDate)
  504. sl = s.getTime()
  505. el = e.getTime()
  506. }
  507. }
  508. pdata.push({
  509. docType: 'date',
  510. empowerType: item.empowerType,
  511. startDate: sl,
  512. endDate: el,
  513. userId: item.userId,
  514. userUnit: item.userUnit,
  515. })
  516. })
  517. const params = {
  518. iamLicenseUnitEntitys: udata,
  519. iamLicensePeopleEntitys: pdata,
  520. }
  521. auditMaintainService.saveIamAuditMaintain(params).then((res) => {
  522. if (res) {
  523. Message.success('保存成功', 1).then((res) => {
  524. this.close(true)
  525. })
  526. }
  527. })
  528. },
  529. close(flag) {
  530. crossWindowWatcher.notifyChange(this.$route.fullPath, flag)
  531. window.close()
  532. },
  533. showSelection() {
  534. return true
  535. },
  536. onSelectChange(selectedRowKeys) {
  537. this.selectedRowKeys = selectedRowKeys
  538. },
  539. getfields() {
  540. axios({
  541. url: 'api/xcoa-mobile/v1/page/wp/audit/maintain/iamLicensePeople',
  542. method: 'get',
  543. }).then((res) => {
  544. this.personal = res.data.pageFormData.pageFieldInfos
  545. })
  546. axios({
  547. url: 'api/xcoa-mobile/v1/page/wp/audit/maintain/iamLicenseUnit',
  548. method: 'get',
  549. }).then((res) => {
  550. this.unit = res.data.pageFormData.pageFieldInfos
  551. })
  552. },
  553. },
  554. }
  555. </script>
  556. <style module lang="scss">
  557. @use '@/common/design' as *;
  558. .btnselect {
  559. position: relative;
  560. // top: 4px;
  561. right: 80px;
  562. float: right;
  563. padding: 4px 0;
  564. .batchselect {
  565. z-index: 100;
  566. margin-left: 10px;
  567. }
  568. }
  569. :global(.maintaintable) {
  570. :global(.ant-table-tbody > tr > td) {
  571. border-right: none;
  572. border-left: none;
  573. }
  574. :global(.ant-table-thead > tr > th) {
  575. border-right: none;
  576. border-left: none;
  577. }
  578. :global(table) {
  579. border: none !important;
  580. }
  581. :global(.ant-table-placeholder) {
  582. border: none !important;
  583. }
  584. }
  585. .main-div {
  586. :global(.caption_sd-child-table_common) {
  587. top: -10px;
  588. z-index: 99;
  589. }
  590. }
  591. </style>