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