jeecgBootUniapp/src/pages-sub/online/hooks/useOnline.ts
2025-04-29 16:37:17 +08:00

87 lines
2.2 KiB
Vue

import { ref, computed } from 'vue'
import { http } from '@/utils/http'
import { useToast, useMessage, useNotify, dayjs } from 'wot-design-uni'
import { useRouter } from '@/plugin/uni-mini-router'
import { useUserStore } from '@/store/user'
import { useParamsStore } from '@/store/page-params'
export function useOnline() {
const toast = useToast()
const router = useRouter()
const userStore = useUserStore()
const globalData = getApp().globalData
const { systemInfo } = globalData
const { safeArea } = systemInfo
const paramsStore = useParamsStore()
const columns = ref([])
const columnsInfo = ref({})
const pageNo = ref(1)
const pageSize = ref(10)
const pageTotal = ref(1)
let pageParams = paramsStore.getPageParams('onlineCard')?.data ?? {}
const dataList = ref([])
const queryParams = () => {
return {
pageNo: pageNo.value,
pageSize: pageSize.value,
order: 'asc',
column: 'id',
hasQuery: true,
}
}
// 获取列字段
const getColumns = () => {
return new Promise<void>((resove, reject) => {
if (columns.value.length) {
resove()
return
}
const analysis = (data) => {
const len = data.length
const maxShowColumn = 3
let space = 1
if (len == 1) {
space = 2
}
const width = safeArea.width / (len > maxShowColumn ? maxShowColumn : len) - space
columns.value = data.map((item) => {
return {
...item,
prop: item.dataIndex,
align: item.align,
label: item.title,
width,
}
})
}
http
.get(`/online/cgform/api/getColumns/${pageParams.id}`)
.then((res: any) => {
if (res.success) {
if (res.result?.columns?.length) {
columnsInfo.value = res.result
analysis(res.result.columns)
resove()
}
} else {
toast.warning(res.message)
reject()
}
})
.catch((res) => {
toast.error('加载列头失败~')
reject()
})
})
}
return {
toast,
router,
userStore,
paramsStore,
columns,
columnsInfo,
}
}