Files
rustdesk-api-web/src/views/user/composables/edit.js
T

89 lines
2.1 KiB
JavaScript
Raw Normal View History

2024-09-13 16:34:15 +08:00
import { ref, onMounted, reactive, watch } from 'vue'
import { create, detail, update, remove } from '@/api/user'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useRouter } from 'vue-router'
import { list as groups } from '@/api/group'
2024-09-25 22:24:16 +08:00
import { T } from '@/utils/i18n'
2024-09-13 16:34:15 +08:00
export function useGetDetail (id) {
let item = ref({}) //保留原始值
let form = ref({})
const groupsList = ref([])
const getDetail = async (id) => {
const res = await detail(id)
item.value = { ...res.data }
form.value = { ...res.data }
}
if (id > 0) {
onMounted(getDetail(id))
}
const getGroups = async () => {
const res = await groups({ page_size: 9999 }).catch(_ => false)
if (res) {
groupsList.value = res.data.list
}
}
onMounted(getGroups)
return {
form,
item,
getDetail,
2024-09-25 22:24:16 +08:00
groupsList,
2024-09-13 16:34:15 +08:00
}
}
export function useSubmit (form, id) {
const root = ref(null)
const router = useRouter()
const rules = reactive({
2024-09-25 22:24:16 +08:00
username: [{ required: true, message: T('ParamRequired', { param: T('Username') }) }],
group_id: [{ required: true, message: T('ParamRequired', { param: T('Group') }) }],
2024-09-13 16:34:15 +08:00
// nickname: [{ required: true, message: '昵称是必须的' }],
2024-09-25 22:24:16 +08:00
status: [{ required: true, message: T('ParamRequired', { param: T('Status') }) }],
2024-09-13 16:34:15 +08:00
})
const validate = async () => {
const res = await root.value.validate().catch(err => false)
return res
}
const submitCreate = async () => {
const res = await create(form.value).catch(_ => false)
return res.code === 0
}
const submitUpdate = async () => {
const res = await update(form.value).catch(_ => false)
return res.code === 0
}
const submitFunc = id > 0 ? submitUpdate : submitCreate
const submit = async () => {
const v = await validate()
if (!v) {
return
}
const res = await submitFunc()
if (res) {
2024-09-25 22:24:16 +08:00
ElMessage.success(T('OperationSuccess'))
2024-09-13 16:34:15 +08:00
router.back()
}
}
const cancel = () => {
router.back()
}
return {
root,
rules,
validate,
submit,
cancel,
}
}