custom-data.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <a-modal :unmount-on-close="true" v-model:visible="visible" width="600px" @close="handleClose" @ok="handleOk">
  3. <template #title>数据权限设置</template>
  4. <a-form :form="formData" auto-label-width>
  5. <a-form-item label="数据权限">
  6. <a-radio-group type="button" v-model="formData.data_permission">
  7. <a-radio :value="0">全部人员及自然量</a-radio>
  8. <a-radio :value="1">自定义</a-radio>
  9. </a-radio-group>
  10. </a-form-item>
  11. <a-form-item label="广告数据权限" v-show="formData.data_permission === 1">
  12. <a-radio-group type="button" v-model="formData.ad_permission">
  13. <a-radio :value="1">仅本人</a-radio>
  14. <a-radio :value="2">本人及所属团队成员</a-radio>
  15. </a-radio-group>
  16. </a-form-item>
  17. <a-form-item label="自然量游戏权限" v-show="formData.data_permission === 1">
  18. <game-permission ref="gamePermissionRef" :comType="comType" />
  19. </a-form-item>
  20. </a-form>
  21. </a-modal>
  22. </template>
  23. <script setup>
  24. import { ref, computed } from 'vue'
  25. import api from '@/api/center/game'
  26. import userApi from '@/api/system/user'
  27. import commonApi from '@/views/v1/api/common'
  28. import GamePermission from '@/components/game-permission/index.vue'
  29. import { Message } from '@arco-design/web-vue'
  30. const emit = defineEmits(['success'])
  31. const visible = ref(false)
  32. const adPermission = ref(0)
  33. const gamePermissionRef = ref()
  34. const deptId = ref(0)
  35. const id = ref(0)
  36. const comType = ref('natural')
  37. const checkedGameList = ref('')
  38. const formData = ref({})
  39. const handleClose = () => {
  40. visible.value = false
  41. }
  42. const handleOk = async () => {
  43. let { selectType, checkedKeys } = await gamePermissionRef.value.getGamePermissionData()
  44. let type = 'normal_game_list'
  45. let data = {
  46. [type]: selectType !== '0' ? selectType : checkedKeys.join(','),
  47. }
  48. // 更新用户数据
  49. const result = await userApi.setUserPermission({
  50. id: formData.value.id,
  51. data_permission: formData.value.data_permission,
  52. ad_permission: formData.value.ad_permission,
  53. ...data,
  54. })
  55. if (result.code === 200) {
  56. Message.success('操作成功')
  57. emit('success')
  58. }
  59. }
  60. // 打开弹框
  61. const open = async (row, type = 'game') => {
  62. let rowData = JSON.parse(JSON.stringify(row))
  63. formData.value = rowData
  64. deptId.value = rowData.dept_id
  65. checkedGameList.value = rowData.normal_game_list
  66. comType.value = type
  67. visible.value = true
  68. await initPage()
  69. }
  70. // 根据部门ID获取游戏列表数据
  71. const getGameListByDeptId = async () => {
  72. const resp = await commonApi.getGameListByDeptIdApi({
  73. dept_id: deptId.value,
  74. })
  75. let gameList = JSON.parse(JSON.stringify(resp.data))
  76. gamePermissionRef.value.init(gameList, checkedGameList.value)
  77. }
  78. const initPage = async () => {
  79. await getGameListByDeptId()
  80. }
  81. defineExpose({ open })
  82. </script>