Member.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div v-show="dialogVisible" class="member-container">
  3. <el-drawer
  4. :title="title"
  5. :modal-append-to-body="false"
  6. :modal="false"
  7. :wrapper-closable="false"
  8. size="40%"
  9. :visible="true"
  10. @close="dialogVisible=false"
  11. >
  12. <div class="content-container">
  13. <el-form ref="formData" :model="formData" :rules="rules" label-position="top" label-width="100px">
  14. <el-form-item label="人员" prop="accountId">
  15. <user-selector :default-val="formData.accountId" @setUserInfo="handleSelectUser" />
  16. </el-form-item>
  17. <el-form-item label="分工岗位" prop="positionId">
  18. <lgp-selector v-model="formData.lgpId" placeholder="请选择分工岗位" style="width:300px;" />
  19. <!-- <el-button type="primary" style="margin-left:15px" @click="addPosition">添加岗位</el-button> -->
  20. </el-form-item>
  21. <el-form-item label="职责描述" prop="duty">
  22. <el-input v-model="formData.duty" :rows="10" type="textarea" maxlength="500" show-word-limit />
  23. </el-form-item>
  24. <el-form-item label="排序">
  25. <el-input v-model.number="formData.sortNo" type="number" />
  26. </el-form-item>
  27. <el-form-item label="备注">
  28. <el-input v-model="formData.remark" :rows="2" type="textarea" maxlength="300" show-word-limit />
  29. </el-form-item>
  30. </el-form>
  31. <div class="btn-group">
  32. <el-button type="primary" @click="submitForm('formData')">确 定</el-button>
  33. <el-button class="cancel-btn" @click="dialogVisible = false">取 消</el-button>
  34. </div>
  35. </div>
  36. </el-drawer>
  37. </div>
  38. </template>
  39. <script>
  40. import { ACTION_ADD, ACTION_UPDATE } from '@/utils/actionType'
  41. import UserSelector from '@/components/UserSelector'
  42. import LgpSelector from '@/views/system/leadingGroup/components/LgpSelector'
  43. import { createLeadingGroupMember, updateLeadingGroupMember } from '@/api/system/leadingGroupMemberApi'
  44. export default {
  45. name: 'LeadingGroupMember',
  46. components: {
  47. UserSelector,
  48. LgpSelector
  49. },
  50. props: {
  51. title: {
  52. type: String,
  53. default: '添加成员'
  54. }
  55. },
  56. data() {
  57. return {
  58. dialogVisible: false,
  59. formData: {
  60. lgId: undefined,
  61. lgpId: undefined,
  62. lgmId: undefined,
  63. duty: '',
  64. remark: '',
  65. sortNo: 0,
  66. groupId: undefined,
  67. positionId: undefined,
  68. accountId: undefined
  69. },
  70. rules: {
  71. lgId: [
  72. { required: true, message: '请选择用户', trigger: 'blur' }
  73. ],
  74. accountId: [
  75. { required: true, message: '请选择用户', trigger: 'blur' }
  76. ],
  77. duty: [
  78. { required: true, message: '请填写职责描述', trigger: 'blur' }
  79. ],
  80. positionId: [
  81. { required: true, message: '请选择分工岗位', trigger: 'blur' }
  82. ]
  83. },
  84. positions: [],
  85. viewData: {},
  86. actionType: ''
  87. }
  88. },
  89. methods: {
  90. // 添加
  91. showAddModel(lgId, viewData) {
  92. this.resetFormData()
  93. this.actionType = ACTION_ADD
  94. this.formData.lgId = lgId
  95. this.dialogVisible = true
  96. this.viewData = viewData
  97. },
  98. // 编辑
  99. showEditModel(data, viewData) {
  100. this.resetFormData()
  101. this.formData.lgId = data.lgId
  102. this.formData.lgpId = data.lgpId
  103. this.formData.lgmId = data.lgmId
  104. this.formData.accountId = data.accountId
  105. this.formData.positionId = data.positionId
  106. this.formData.groupId = data.groupId
  107. this.formData.duty = data.duty
  108. this.formData.remark = data.remark
  109. this.formData.sortNo = data.sortNo
  110. this.actionType = ACTION_UPDATE
  111. this.dialogVisible = true
  112. this.viewData = viewData
  113. },
  114. // 执行人选择
  115. handleSelectUser(item) {
  116. this.formData.positionId = item.positionId
  117. this.formData.groupId = item.groupId
  118. this.formData.accountId = item.accountId
  119. },
  120. resetFormData() {
  121. this.formData = {
  122. lgId: undefined,
  123. lgpId: undefined,
  124. lgmId: '',
  125. duty: '',
  126. remark: '',
  127. sortNo: 0,
  128. groupId: undefined,
  129. positionId: undefined,
  130. accountId: undefined
  131. }
  132. },
  133. // 提交
  134. submitForm(formName) {
  135. this.$refs[formName].validate((valid) => {
  136. if (valid) {
  137. switch (this.actionType) {
  138. case ACTION_ADD:
  139. createLeadingGroupMember(this.formData).then((resp) => {
  140. const { code, msg } = resp
  141. if (code === 200) {
  142. this.dialogVisible = false
  143. this.formSuccess()
  144. this.$message.success(msg)
  145. } else {
  146. this.$message.error(msg)
  147. }
  148. }).catch((error) => {
  149. console.log(error)
  150. })
  151. break
  152. case ACTION_UPDATE:
  153. updateLeadingGroupMember(this.formData).then((resp) => {
  154. const { code, msg } = resp
  155. if (code === 200) {
  156. this.dialogVisible = false
  157. this.formSuccess()
  158. this.$message.success(msg)
  159. } else {
  160. this.$message.error(msg)
  161. }
  162. }).catch((error) => {
  163. console.log(error)
  164. })
  165. break
  166. }
  167. } else {
  168. this.$message({ type: 'error', message: 'error submit!!' })
  169. }
  170. })
  171. },
  172. formSuccess() {
  173. this.$emit('formSuccess')
  174. },
  175. resetForm(formName) {
  176. this.$refs[formName].resetFields()
  177. },
  178. // 添加分工岗位
  179. addPosition() {
  180. this.$refs['LeadingGroupPosition'].handler(null, this.viewData)
  181. },
  182. positionAddSuccess() {
  183. }
  184. }
  185. }
  186. </script>
  187. <style lang="scss">
  188. </style>
  189. <style lang="scss" scoped>
  190. </style>