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,
|
}
|
}
|