feat: 分离前端列表

This commit is contained in:
JaguarJack
2022-12-06 19:27:38 +08:00
parent 0024080c28
commit 727e887729
38 changed files with 552 additions and 146 deletions

View File

@@ -4,7 +4,7 @@ import { Code } from '/admin/enum/app'
import Message from '/admin/support/message'
import { FormInstance } from 'element-plus'
import { AxiosResponse } from 'axios'
import { isFunction } from'/admin/support/helper'
import { isFunction } from '/admin/support/helper'
// get table list
export function useCreate(path: string, id: string | number | null = null, _formData: object = {}) {
@@ -17,23 +17,22 @@ export function useCreate(path: string, id: string | number | null = null, _form
const beforeCreate = ref()
// 更新前 hook
const beforeUpdate = ref()
// store
function store(path: string, id: string | number | null = null) {
loading.value = true
let promise: Promise<AxiosResponse> | null = null
if (id) {
if (isFunction(beforeUpdate.value)) {
beforeUpdate.value()
beforeUpdate.value()
}
promise = http.put(path + '/' + id, unref(formData))
} else {
console.log(isFunction(beforeCreate.value), beforeCreate.value)
if (isFunction(beforeCreate.value)) {
beforeCreate.value()
}
promise = http.post(path, unref(formData))
}

View File

@@ -1,23 +1,22 @@
import http from '/admin/support/http'
import { Code } from '/admin/enum/app'
import Message from '/admin/support/message'
import { ref } from 'vue'
import { isFunction } from'/admin/support/helper'
import { ref, watch } from 'vue'
import { isFunction } from '/admin/support/helper'
export function useDestroy(confirm: string = '确认删除吗') {
const isDeleted = ref(false)
const beforeDestroy = ref()
// fetch list
function destroy(path: string, id: string | number) {
Message.confirm(confirm + '?', function () {
// before destroy
if (isFunction(beforeDestroy.value)) {
beforeDestroy.value()
}
http
.delete(path + '/' + id)
.then(r => {
@@ -32,5 +31,14 @@ export function useDestroy(confirm: string = '确认删除吗') {
})
}
return { destroy, isDeleted }
const deleted = (reset: Function) => {
watch(isDeleted, function (value) {
if (value) {
isDeleted.value = false
reset()
}
})
}
return { destroy, deleted }
}

View File

@@ -1,16 +1,18 @@
import http from '/admin/support/http'
import { ref, unref } from 'vue'
import {provide, ref, unref} from 'vue'
import { Code } from '/admin/enum/app'
import Message from '/admin/support/message'
const initLimit = 10
const initPage = 1;
const initTotal = 10;
// get table list
export function useGetList(path: string) {
const data = ref<object>()
const page = ref(initPage)
const limit = ref(initLimit)
const page = ref<number>(initPage)
const limit = ref<number>(initLimit)
const total = ref<number>(initTotal)
const query = ref<object>({
page: page.value,
limit: limit.value,
@@ -28,6 +30,8 @@ export function useGetList(path: string) {
closeLoading()
if (r.data.code === Code.SUCCESS) {
data.value = r.data
// @ts-ignore
total.value = data.value?.total
} else {
Message.error(r.data.message)
}
@@ -48,6 +52,8 @@ export function useGetList(path: string) {
// reset
function reset() {
resetPage()
query.value = Object.assign({ page: page.value, limit: limit.value })
getList()
@@ -61,15 +67,24 @@ export function useGetList(path: string) {
search()
}
function resetPage() {
page.value = 1
}
// change limit
function changeLimit(l: number) {
limit.value = l
resetPage()
// @ts-ignore
query.value.page = 1
// @ts-ignore
query.value.limit = l
search()
}
return { data, query, search, reset, changePage, changeLimit, loading }
// provider for paginate component
provide('paginate', {page, limit, total, changePage, changeLimit})
return { data, query, search, reset, loading }
}