BaseForm.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <a-drawer title="编辑" placement="right" :closable="false" :visible="visible" @close="onClose">
  3. <a-form :form="form">
  4. <a-form-item label="节点名称">
  5. <a-input v-decorator="['name', {rules: [{required: true, message: '节点名称不能为空'}]}]" />
  6. </a-form-item>
  7. <a-form-item label="所属部门">
  8. <a-tree-select v-decorator="['deptId', {rules: [{required: true, message: '审核人不能为空'}]}]" style="width: 100%" :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" :replaceFields="replaceFields" :tree-data="treeData" placeholder="请选择" tree-default-expand-all @change="handleDept">
  9. </a-tree-select>
  10. </a-form-item>
  11. <a-form-item label="审核人">
  12. <a-select v-decorator="['verifier', {rules: [{required: true, message: '审核人不能为空'}]}]" placeholder="请选择">
  13. <a-select-option v-for="{realName, userId} in verifierList" :key="userId" :label="realName" :value="userId">{{ realName }}
  14. </a-select-option>
  15. </a-select>
  16. </a-form-item>
  17. <a-form-item label="配置类型" v-show="false">
  18. <a-input v-decorator="['reflect', {initialValue:'reflect'}]">
  19. </a-input>
  20. </a-form-item>
  21. <a-form-item label="条件类">
  22. <a-select v-decorator="['titleCode', {rules: [{required: true, message: '条件类不能为空'}]}]" placeholder="请选择" @change="handleTitleCode">
  23. <a-select-option v-for="{title, titleCode} in customCodeList" :key="titleCode" :label="title" :value="titleCode">{{ title }}
  24. </a-select-option>
  25. </a-select>
  26. </a-form-item>
  27. <a-form-item label="条件名称">
  28. <a-select v-decorator="['titleColumnCode', {rules: [{required: true, message: '条件名称不能为空'}]}]" placeholder="请选择" @change="handleTitleColumnCode">
  29. <a-select-option v-for="{titleColumnName, titleColumnCode} in customClassNameList" :key="titleColumnCode" :label="titleColumnName" :value="titleColumnCode">{{ titleColumnName }}
  30. </a-select-option>
  31. </a-select>
  32. </a-form-item>
  33. <a-form-item label="处理类">
  34. <a-select v-decorator="['handleNameId', {rules: [{required: true, message: '条件类不能为空'}]}]" placeholder="请选择">
  35. <a-select-option v-for="{handleName, id} in handleNameList" :key="id" :label="handleName" :value="id">{{ handleName }}
  36. </a-select-option>
  37. </a-select>
  38. </a-form-item>
  39. <!-- <a-form-item label="描述">
  40. <a-input v-decorator="['seatNumber']" />
  41. </a-form-item> -->
  42. </a-form>
  43. <div class="btn">
  44. <a-button :loading="confirmLoading" type="primary" @click="save">保存</a-button>
  45. </div>
  46. </a-drawer>
  47. </template>
  48. <script>
  49. import pick from 'lodash.pick'
  50. import { getDeptTree } from '@/api/upms/dept'
  51. import { queryUserByDept } from '@/api/upms/user'
  52. import { getCustomClassNameList, getCustomCodeList } from '@/api/custom/className'
  53. export default {
  54. data() {
  55. return {
  56. visible: false,
  57. confirmLoading: false,
  58. form: this.$form.createForm(this),
  59. record: {},
  60. replaceFields: {
  61. key: 'id',
  62. },
  63. verifierList: [],
  64. treeData: [],
  65. classNameCodeMap: {},
  66. customCodeList: [],
  67. customClassNameList: [],
  68. }
  69. },
  70. created() {
  71. getDeptTree().then((res) => {
  72. this.treeData = this.setTree(res.data)
  73. })
  74. getCustomCodeList({ code: 'reflect' }).then((res) => {
  75. this.customCodeList = res.data
  76. })
  77. },
  78. methods: {
  79. setTree(list) {
  80. return list.map((item) => {
  81. return {
  82. title: item.title,
  83. key: item.id,
  84. value: item.id,
  85. children: item.children ? this.setTree(item.children) : [],
  86. }
  87. })
  88. },
  89. handleDept(deptId) {
  90. queryUserByDept({ deptId }).then((res) => {
  91. this.verifierList = res.data
  92. })
  93. },
  94. handleTitleCode(val) {
  95. this._titleCode = val
  96. getCustomClassNameList({
  97. code: 'reflect',
  98. titleCode: val,
  99. }).then((res) => {
  100. this.customClassNameList = res.data
  101. })
  102. },
  103. handleTitleColumnCode(val) {
  104. this._titleCode = val
  105. getCustomClassNameList({
  106. code: 'reflect',
  107. titleColumnCode: this._titleCode,
  108. titleCode: val,
  109. }).then((res) => {
  110. this.handleNameList = res.data
  111. })
  112. },
  113. base(record) {
  114. this.visible = true
  115. this.record = record
  116. const {
  117. form: { setFieldsValue },
  118. } = this
  119. this.$nextTick(() => {
  120. setFieldsValue(Object.assign(pick(record, ['name'])))
  121. })
  122. },
  123. save() {
  124. const {
  125. form: { validateFieldsAndScroll },
  126. } = this
  127. this.confirmLoading = true
  128. validateFieldsAndScroll((errors, values) => {
  129. if (errors) {
  130. this.confirmLoading = false
  131. return
  132. }
  133. this.record.name = values.name
  134. this.confirmLoading = false
  135. this.onClose()
  136. })
  137. },
  138. onClose() {
  139. this.visible = false
  140. },
  141. },
  142. }
  143. </script>
  144. <style lang="less" scoped>
  145. .btn {
  146. text-align: center;
  147. }
  148. </style>