import { Detail } from "./interface"; import { reactive, computed, toRefs } from "vue"; import { useUserStore } from "@/stores/modules/user"; /** * @description base 基础信息页面操作方法封装 * @param {Function} api 获取表格数据 api 方法 (必传) * @param {Object} initParam 获取数据初始化参数 (非必传,默认为{}) * @param {Function} dataCallBack 对后台返回的数据进行处理的方法 (非必传) * @param {Function} requestError 错误处理 * */ export const useBaseMsg = ( api?: (params: any) => Promise, initParam: object = {}, dataCallBack?: (data: any) => any, requestError?: (error: any) => void ) => { const state = reactive({ baseData: {}, // 查询参数(只包括查询) searchParam: {}, // 初始化默认的查询参数 searchInitParam: {}, // 总参数(包含分页和查询参数) totalParam: {} }); /** * @description 获取详情页,基础信息模块 * @return void * */ const getBamseMsg = async () => { if (!api) { state.searchParam = initParam; return; } try { // 先把初始化参数和分页参数放到总参数里面 console.log("state.totalParam :>> ", state.totalParam); console.log("state.initParam :>> ", initParam); console.log("state.searchParam :>> ", state.searchParam); Object.assign(state.totalParam, initParam); console.log("state.totalParam :>> ", state.totalParam); let data = await api({ ...state.searchInitParam, ...state.totalParam }); dataCallBack && (data = dataCallBack(data)); state.baseData = data; console.log("getTableList data :>> ", data); // state.tableData = data[reqProp]; // 解构后台返回的分页数据 (如果有分页更新分页信息) // const { pageNum, pageSize, total } = data; // isPageable && updatePageable({ pageNum, pageSize, total }); } catch (error) { requestError && requestError(error); } }; // /** // * @description 获取表格数据 // * @return void // * */ // const getTableList = async () => { // if (!apiBase) return; // try { // // 先把初始化参数和分页参数放到总参数里面 // console.log("state.totalParam :>> ", state.totalParam); // console.log("state.initParam :>> ", initParam); // console.log("state.searchParam :>> ", state.searchParam); // Object.assign(state.totalParam, isPageable ? pageParam.value : {}); // console.log("state.totalParam :>> ", state.totalParam); // let data = await apiBase({ ...state.searchInitParam, ...state.totalParam }); // dataCallBack && (data = dataCallBack(data)); // state.tableData = isPageable ? data.list : data; // console.log("getTableList data :>> ", data); // // state.tableData = data[reqProp]; // // 解构后台返回的分页数据 (如果有分页更新分页信息) // const { pageNum, pageSize, total } = data; // isPageable && updatePageable({ pageNum, pageSize, total }); // } catch (error) { // requestError && requestError(error); // } // }; /** * @description 更新查询参数 * @return void * */ const updatedTotalParam = () => { state.totalParam = {}; // 处理查询参数,可以给查询参数加自定义前缀操作 let nowSearchParam: { [key: string]: any } = {}; // 防止手动清空输入框携带参数(这里可以自定义查询参数前缀) for (let key in state.searchParam) { // * 某些情况下参数为 false/0 也应该携带参数 if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) { nowSearchParam[key] = state.searchParam[key]; } } Object.assign(state.totalParam, nowSearchParam); console.log("updatedTotalParam state.searchParam :>> ", state.searchParam); console.log("updatedTotalParam state.totalParam :>> ", state.totalParam); // if (dwname) { // const userStore = useUserStore(); // userStore.setSearchQueryHabit(dwname, state.totalParam); // } }; // /** // * @description 更新分页信息 // * @param {Object} resPageable 后台返回的分页数据 // * @return void // * */ // const updatePageable = (resPageable: Table.Pageable) => { // Object.assign(state.pageable, resPageable); // }; // /** // * @description 表格数据查询 // * @return void // * */ // const search = () => { // state.pageable.pageNum = 1; // updatedTotalParam(); // getTableList(); // }; // /** // * @description 表格数据重置 // * @return void // * */ // const reset = () => { // state.pageable.pageNum = 1; // state.searchParam = {}; // // 重置搜索表单的时,如果有默认搜索参数,则重置默认的搜索参数 // Object.keys(state.searchInitParam).forEach(key => { // state.searchParam[key] = state.searchInitParam[key]; // }); // updatedTotalParam(); // getTableList(); // }; // /** // * @description 每页条数改变 // * @param {Number} val 当前条数 // * @return void // * */ // const handleSizeChange = (val: number) => { // state.pageable.pageNum = 1; // state.pageable.pageSize = val; // getTableList(); // }; // /** // * @description 当前页改变 // * @param {Number} val 当前页 // * @return void // * */ // const handleCurrentChange = (val: number) => { // state.pageable.pageNum = val; // getTableList(); // }; return { ...toRefs(state), getBamseMsg, // search, // reset, // handleSizeChange, // handleCurrentChange, updatedTotalParam }; };