import { ref, onMounted } from 'vue'
|
import AdminModel from '@/lin/model/admin'
|
|
export const useUserList = () => {
|
const allGroups = ref([])
|
const pageCount = ref(10) // 每页10条数据
|
const tableData = ref([])
|
const groupId = ref(null)
|
const loading = ref(false)
|
const totalNum = ref(0) // 分组内的用户总数
|
const currentPage = ref(1) // 默认获取第一页的数据
|
|
/**
|
* 获取管理员列表数据
|
*/
|
const getAdminUsers = async () => {
|
let res = {}
|
try {
|
loading.value = true
|
res = await AdminModel.getAdminUsers({
|
groupId: groupId.value,
|
count: pageCount.value,
|
page: currentPage.value - 1,
|
})
|
loading.value = false
|
tableData.value = shuffleList(res.items)
|
totalNum.value = res.total
|
} catch (e) {
|
loading.value = false
|
console.error(e)
|
}
|
}
|
|
/**
|
* 获取所有分组数据
|
*/
|
const getAllGroups = async () => {
|
try {
|
loading.value = true
|
allGroups.value = await AdminModel.getAllGroups()
|
loading.value = false
|
} catch (e) {
|
loading.value = false
|
console.error(e)
|
}
|
}
|
|
/**
|
* 多分组用 ',' 分割展示
|
*/
|
const shuffleList = users => {
|
const list = []
|
users.forEach(element => {
|
element.groupNames = element.groups.map(item => item.name).join(',')
|
list.push(element)
|
})
|
return list
|
}
|
|
onMounted(async () => {
|
await getAdminUsers()
|
getAllGroups()
|
})
|
|
return {
|
groupId,
|
loading,
|
totalNum,
|
allGroups,
|
pageCount,
|
tableData,
|
currentPage,
|
getAdminUsers,
|
}
|
}
|
|
export const useFormData = (ctx, dialogFormVisible, getAdminUsers, currentPage, loading, info, password) => {
|
const id = ref(null)
|
const activeTab = ref('修改信息')
|
|
/**
|
* 监听子组件更新管理员信息是否成功
|
* 如果更新了管理员信息,重新请求管理员列表
|
*/
|
const handleInfoResult = flag => {
|
dialogFormVisible.value = false
|
if (flag === true) {
|
getAdminUsers()
|
}
|
}
|
|
/**
|
* 根据分组查询管理员
|
*/
|
const handleChange = async () => {
|
currentPage.value = 1
|
loading.value = true
|
await getAdminUsers()
|
loading.value = false
|
}
|
|
/**
|
* 监听是否完成密码更新
|
* @param {boolean} result 是否完成密码更新
|
*/
|
const handlePasswordResult = result => {
|
if (result === true) {
|
dialogFormVisible.value = false
|
}
|
}
|
|
/**
|
* 翻页
|
*/
|
const handleCurrentChange = async val => {
|
currentPage.value = val
|
await getAdminUsers()
|
}
|
|
/**
|
* 提交表单信息,更新管理员信息
|
*/
|
const confirmEdit = async () => {
|
if (activeTab.value === '修改信息') {
|
await info.value.submitForm()
|
} else {
|
await password.value.submitForm()
|
}
|
}
|
|
/**
|
* 关闭编辑弹窗
|
*/
|
const handleClose = done => {
|
dialogFormVisible.value = false
|
password.value.resetForm()
|
activeTab.value = '修改信息'
|
done()
|
}
|
|
const handleClick = tab => {
|
activeTab.value = tab.props.name
|
}
|
|
/**
|
* 重置表单
|
*/
|
const resetForm = () => {
|
if (activeTab.value === '修改信息') {
|
info.value.resetForm()
|
} else {
|
password.value.resetForm()
|
}
|
}
|
|
return {
|
id,
|
activeTab,
|
resetForm,
|
confirmEdit,
|
handleClose,
|
handleClick,
|
handleChange,
|
handleInfoResult,
|
handleCurrentChange,
|
handlePasswordResult,
|
}
|
}
|