game-permission.vue 2.1 KB

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