CheckAndEditModel.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <j-modal
  3. :title="title"
  4. :width="700"
  5. :visible="visible"
  6. :mask-closable="false"
  7. cancel-text="关闭"
  8. @close="close"
  9. >
  10. <a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :rules="validatorRules" :model="model">
  11. <a-form-model-item label="员工姓名:" prop="realName">
  12. <a-input v-model="model.realName" />
  13. </a-form-model-item>
  14. <a-form-model-item label="登录账号:" prop="userName">
  15. <a-input v-model="model.userName" />
  16. </a-form-model-item>
  17. <a-form-model-item label="所属部门" prop="deptId">
  18. <a-tree-select
  19. v-model="model.deptId"
  20. allow-clear
  21. tree-default-expand-all
  22. style="width: 100%"
  23. :tree-data="treeData"
  24. :replace-fields="{children:'children', title:'label', key:'id', value: 'id' }"
  25. />
  26. </a-form-model-item>
  27. <a-form-model-item label="岗位类型" prop="post">
  28. <j-dict-select-tag
  29. v-model="model.post"
  30. dict-code="postType"
  31. />
  32. </a-form-model-item>
  33. <a-form-model-item label="职工职务" prop="roleIds">
  34. <sys-list-select-tag
  35. v-model="model.roleIds"
  36. mode="multiple"
  37. dict-code="role"
  38. />
  39. </a-form-model-item>
  40. <a-form-model-item label="职工工号" prop="nickName">
  41. <a-input v-model="model.nickName" />
  42. </a-form-model-item>
  43. <a-form-model-item label="手机号码" prop="phone">
  44. <a-input v-model="model.phone" />
  45. </a-form-model-item>
  46. <a-form-model-item label="微信账号">
  47. <a-input v-model="model.wechat" />
  48. </a-form-model-item>
  49. <a-form-model-item label="邮箱地址">
  50. <a-input v-model="model.email" />
  51. </a-form-model-item>
  52. <a-form-model-item label="出生日期">
  53. <a-date-picker v-model="model.birthday" style="width: 100%" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择" />
  54. </a-form-model-item>
  55. <a-form-model-item label="性别">
  56. <j-dict-select-tag
  57. v-model="model.sex"
  58. type="radioButton"
  59. dict-code="sys_user_sex"
  60. />
  61. </a-form-model-item>
  62. </a-form-model>
  63. </j-modal>
  64. </template>
  65. <script>
  66. import { getAction, httpAction } from '@/api/request'
  67. import JModal from '@/components/JModal'
  68. export default {
  69. name: 'CheckAndEditModel',
  70. components: {
  71. JModal
  72. },
  73. data() {
  74. return {
  75. labelCol: { span: 4 },
  76. wrapperCol: { span: 19 },
  77. dataSource: [],
  78. treeData: [],
  79. title: '',
  80. visible: false,
  81. isCheck: false,
  82. model: {},
  83. validatorRules: {
  84. userName: [{ required: true, message: '请输入' }],
  85. realName: [{ required: true, message: '请输入' }],
  86. deptId: [{ required: true, message: '请选择' }],
  87. nickName: [{ required: true, message: '请选择' }],
  88. roleIds: [{ required: true, message: '请选择' }],
  89. post: [{ required: true, message: '请选择' }],
  90. phone: [{ required: true, message: '请输入' }]
  91. },
  92. url: {
  93. add: '/system/user',
  94. edit: '/system/user',
  95. tree: '/system/dept/treeSelect',
  96. roleIds: '/system/user/authRole/'
  97. }
  98. }
  99. },
  100. created() {
  101. },
  102. methods: {
  103. loadTree() {
  104. this.treeData = []
  105. getAction(this.url.tree).then((res) => {
  106. if (res.code === 200) {
  107. this.treeData = res.data
  108. }
  109. })
  110. },
  111. add() {
  112. this.model = {}
  113. this.visible = true
  114. this.loadTree()
  115. },
  116. edit(record) {
  117. this.model = Object.assign({}, record)
  118. this.visible = true
  119. this.loadTree()
  120. this.getRoleIds()
  121. },
  122. close(isSubmit) {
  123. if (isSubmit) {
  124. this.checkData()
  125. } else {
  126. this.visible = false
  127. }
  128. },
  129. checkData() {
  130. this.$refs.form.validate(valid => {
  131. if (valid) {
  132. this.saveData()
  133. } else {
  134. return false
  135. }
  136. })
  137. },
  138. saveData() {
  139. let url, type
  140. if (!this.model.userId) {
  141. url = this.url.add
  142. type = 'post'
  143. } else {
  144. url = this.url.edit
  145. type = 'put'
  146. }
  147. httpAction(url, this.model, type).then((res) => {
  148. if (res.code === 200) {
  149. this.$message.success(res.msg)
  150. this.$emit('ok')
  151. this.visible = false
  152. } else {
  153. console.log(res)
  154. }
  155. })
  156. },
  157. getRoleIds() {
  158. getAction(this.url.roleIds + this.model.userId).then((res) => {
  159. if (res.code === 200) {
  160. this.model.roleIds = res.user.roleIds
  161. }
  162. })
  163. }
  164. }
  165. }
  166. </script>