tj
2025-06-05 bba272999cc546f65781bf3d20245a3f819af67f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { ref, onMounted, reactive } from 'vue'
import { ElMessageBox, ElMessage } from 'element-plus'
import AdminModel from '@/lin/model/admin'
 
export const useGroupList = () => {
  const tableData = ref([]) // 表格数据
  const loading = ref(false)
 
  /**
   * 获取所有分组并传给table渲染
   */
  const getAllGroups = async () => {
    try {
      loading.value = true
      tableData.value = await AdminModel.getAllGroups()
      loading.value = false
    } catch (e) {
      loading.value = false
      console.error(e)
    }
  }
 
  /**
   * 删除某项数据
   * @param {object} id 选中的一行数据 ID
   */
  const handleDelete = id => {
    let res = {}
    ElMessageBox.confirm('此操作将永久删除该分组, 是否继续?', '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning',
    }).then(async () => {
      try {
        loading.value = true
        res = await AdminModel.deleteOneGroup(id)
      } catch (e) {
        loading.value = false
        console.log(e)
      }
      if (res.code < window.MAX_SUCCESS_CODE) {
        await getAllGroups()
        ElMessage.message({ type: 'success', message: `${res.message}` })
      } else {
        loading.value = false
        ElMessage.message({ type: 'error', message: `${res.message}` })
      }
    })
  }
 
  onMounted(async () => {
    await getAllGroups()
  })
 
  return {
    loading,
    tableData,
    handleDelete,
    getAllGroups,
  }
}
 
export const useEditGroup = (ctx, getAllGroups) => {
  let cacheGroup = {}
  const id = ref(0) // 分组id
  const form = ref(null)
  const group = reactive({ name: '', info: '' })
  const dialogFormVisible = ref(false) // 是否弹窗
  const rules = {
    // 表单验证规则
    info: [],
    name: [{ required: true, message: '请输入分组名称', trigger: 'blur' }],
  }
 
  /**
   * 获取所拥有的权限并渲染  由子组件提供
   * @param {*} val 选中的某行数据
   */
  const handleEdit = row => {
    id.value = row.id
    group.name = row.name
    group.info = row.info
    cacheGroup = { ...group }
    dialogFormVisible.value = true
  }
 
  /**
   * 修改分组信息
   */
  const confirmEdit = async () => {
    if (group.name === '') {
      ElMessage.warning('请将信息填写完整')
      return
    }
    if (cacheGroup.name !== group.name || cacheGroup.info !== group.info) {
      const res = await AdminModel.updateOneGroup(group.name, group.info, id.value)
      if (res.code < window.MAX_SUCCESS_CODE) {
        ElMessage.success(`${res.message}`)
        getAllGroups()
      }
    }
    dialogFormVisible.value = false
  }
 
  const handleClose = done => {
    done()
  }
  const rowDoubleClick = row => {
    handleEdit(row)
  }
  const resetForm = () => {
    form.value.resetFields()
  }
 
  return {
    id,
    form,
    rules,
    group,
    resetForm,
    handleEdit,
    confirmEdit,
    handleClose,
    rowDoubleClick,
    dialogFormVisible,
  }
}