project-modal.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <a-modal
  3. width="800px"
  4. title="项目列表"
  5. :visible="value"
  6. @cancel="$emit('change', false)"
  7. @ok="selectRole"
  8. >
  9. <a-transfer
  10. :data-source="mockData"
  11. :list-style="{
  12. width: '300px',
  13. height: '500px',
  14. }"
  15. show-search
  16. :target-keys="targetKeys"
  17. :render="(item) => item.title"
  18. @change="handleChange"
  19. />
  20. </a-modal>
  21. </template>
  22. <script>
  23. import axios from 'axios'
  24. import dataService from './data-config'
  25. import { props } from '@chenfengyuan/vue-qrcode'
  26. export default {
  27. model: { prop: 'value', event: 'change' },
  28. props: { value: Boolean },
  29. data() {
  30. return {
  31. mockData: [],
  32. targetKeys: [],
  33. roleList: [],
  34. }
  35. },
  36. watch: {
  37. value(val) {
  38. if (val) {
  39. this.getProjectList()
  40. }
  41. },
  42. },
  43. methods: {
  44. handleChange(nextTargetKeys, direction, moveKeys) {
  45. this.targetKeys = nextTargetKeys
  46. },
  47. getProjectList() {
  48. const params = {
  49. buttonExpressions: [],
  50. columns: 'projectTitle,projectCode,id,unitName',
  51. expressions: [],
  52. formId: 'iamAuditProject',
  53. maxResults: 9999,
  54. startPosition: 0,
  55. }
  56. dataService.projectList(params).then((res) => {
  57. this.roleList = res.data
  58. this.roleList.forEach((item) => (item.leadUnitName = item.unitName))
  59. this.mockData = res.data.map((item) => {
  60. return {
  61. key: item.id,
  62. title: item.projectTitle,
  63. description: item.projectCode,
  64. leadUnitName: item.unitName,
  65. }
  66. })
  67. })
  68. },
  69. selectRole() {
  70. const arr = []
  71. this.roleList.forEach((item) => {
  72. if (this.targetKeys.includes(item.id)) {
  73. arr.push(item)
  74. }
  75. })
  76. this.$emit('selectProject', arr)
  77. this.$emit('change', false)
  78. },
  79. },
  80. }
  81. </script>