CrmTeamList.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <!-- 操作栏 -->
  3. <el-row justify="end">
  4. <el-button type="primary" @click="handleAdd">
  5. <Icon class="mr-5px" icon="ep:plus" />
  6. 新增
  7. </el-button>
  8. <el-button @click="handleEdit">
  9. <Icon class="mr-5px" icon="ep:edit" />
  10. 编辑
  11. </el-button>
  12. <el-button @click="handleRemove">
  13. <Icon class="mr-5px" icon="ep:delete" />
  14. 移除
  15. </el-button>
  16. <el-button type="danger" @click="handleQuit"> 退出团队</el-button>
  17. </el-row>
  18. <!-- 团队成员展示 -->
  19. <el-table
  20. v-loading="loading"
  21. :data="list"
  22. :show-overflow-tooltip="true"
  23. :stripe="true"
  24. class="mt-20px"
  25. @selection-change="handleSelectionChange"
  26. >
  27. <el-table-column type="selection" width="55" />
  28. <el-table-column align="center" label="姓名" prop="mobile" />
  29. <el-table-column align="center" label="部门" prop="detailAddress" />
  30. <el-table-column align="center" label="岗位" prop="detailAddress" />
  31. <el-table-column align="center" label="权限级别" prop="creatorName" />
  32. <el-table-column :formatter="dateFormatter" align="center" label="加入时间" prop="createTime" />
  33. </el-table>
  34. <CrmPermissionForm ref="crmPermissionFormRef" />
  35. </template>
  36. <script lang="ts" setup>
  37. import { dateFormatter } from '@/utils/formatTime'
  38. import { ElTable } from 'element-plus'
  39. import * as PermissionApi from '@/api/crm/permission'
  40. import { useUserStoreWithOut } from '@/store/modules/user'
  41. import CrmPermissionForm from './CrmPermissionForm.vue'
  42. defineOptions({ name: 'CrmTeam' })
  43. const props = defineProps<{
  44. bizType: number
  45. bizId: number
  46. }>()
  47. const loading = ref(true) // 列表的加载中
  48. const list = ref<PermissionApi.PermissionVO[]>([]) // 列表的数据
  49. const getList = async () => {
  50. loading.value = true
  51. try {
  52. const res = await PermissionApi.getPermissionList({
  53. bizType: props.bizType,
  54. bizId: props.bizId
  55. })
  56. list.value = res
  57. } finally {
  58. loading.value = false
  59. }
  60. }
  61. const multipleSelection = ref<PermissionApi.PermissionVO[]>([])
  62. const handleSelectionChange = (val: PermissionApi.PermissionVO[]) => {
  63. multipleSelection.value = val
  64. }
  65. const message = useMessage()
  66. const crmPermissionFormRef = ref<InstanceType<typeof CrmPermissionForm | null>>(null)
  67. const handleEdit = () => {
  68. if (multipleSelection.value?.length === 0) {
  69. message.warning('请先选择团队成员后操作!')
  70. return
  71. }
  72. const ids = multipleSelection.value?.map((item) => item.id)
  73. crmPermissionFormRef.value?.open('update', props.bizType, props.bizId, ids[0])
  74. }
  75. const handleRemove = async () => {
  76. if (multipleSelection.value?.length === 0) {
  77. message.warning('请先选择团队成员后操作!')
  78. return
  79. }
  80. await message.delConfirm()
  81. const ids = multipleSelection.value?.map((item) => item.id)
  82. ids?.forEach((id) => {
  83. // TODO 还不确定要不要搞个批量删除,还是一次只能删除一个,先用循环弄一下
  84. PermissionApi.deletePermission({
  85. bizType: props.bizType,
  86. bizId: props.bizId,
  87. id
  88. })
  89. })
  90. }
  91. const handleAdd = () => {
  92. crmPermissionFormRef.value?.open('create', props.bizType, props.bizId)
  93. }
  94. const userStore = useUserStoreWithOut()
  95. const handleQuit = () => {
  96. const permission = list.value.find(
  97. (item) => item.userId === userStore.getUser.id && item.level === 1
  98. )
  99. if (permission) {
  100. message.warning('负责人不能退出团队!')
  101. return
  102. }
  103. }
  104. watch(
  105. () => props.bizId,
  106. () => {
  107. getList()
  108. },
  109. { immediate: true, deep: true }
  110. )
  111. </script>
  112. <style lang="scss" scoped></style>