import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo' import { getUsrId } from '@/services/bus/user' import { FinanceReportReq } from "@/services/go/ermcp/report/interface" import moment, { Moment } from "moment" import { ref, SetupContext } from "vue" import { reportCycleType, reportCyleTimeType } from "./enum" import { TypeAndTime, Value } from "./interface" export function handleReprotType(context: SetupContext) { // 选中的周期类型 const selectedReportType = ref({ key: reportCycleType.day }) // 时间格式化类型 const dateFormat = ref(reportCyleTimeType.day) // 时间 const time = ref(getInitTime()); // 交易用户 const selectedUser = ref({ key: getUsrId() }) // 周期类型与时间类型 一对一的关系 const timeMap = new Map([ [reportCycleType.day, reportCyleTimeType.day], [reportCycleType.month, reportCyleTimeType.month], [reportCycleType.year, reportCyleTimeType.year], [reportCycleType.week, reportCyleTimeType.week], ]) // 报表类型 const reportType = ref<{ value: number, lable: string }[]>([ { value: reportCycleType.day, lable: '日报表' }, { value: reportCycleType.week, lable: '周报表' }, { value: reportCycleType.month, lable: '月报表' }, ]) // 初始化时间 function getInitTime() { return moment(new Date(), dateFormat.value) } function getFomateType(): reportCyleTimeType { const { key } = selectedReportType.value const temp = timeMap.get(key) return temp ? temp : reportCyleTimeType.day } // 周期类型变更 function reportTypeChange() { time.value = getInitTime() dateFormat.value = getFomateType() update() } // 时间变更 function timeChange() { update() } // 交易用户变更 function userChange() { update() } // 根据周期类型 格式化时间 function formateTime() { return moment(time.value).format(getFomateType()) } // 是否为 月报表 function isMonth() { return selectedReportType.value.key === reportCycleType.month } // 通知上层更新数据 function update() { const param = { cycletype: selectedReportType.value.key, cycletime: formateTime(), userid: selectedUser.value.key } context.emit('update', param) } return { selectedReportType, reportType, isMonth, reportTypeChange, dateFormat, time, timeChange, selectedUser, userChange } } export function handleInitTypeAndTime() { // 初始化时间 function getInitTime() { return moment(new Date()).format(reportCyleTimeType.day) } // 初始化类型 function getInitType() { return reportCycleType.day } return { getInitTime, getInitType } } /** * 获取表格列表数据 * @param type * @returns */ export function queryTableList(fn: Function) { // 加载状态 const loading = ref(false); // 表格数据 const tableList = ref([]); function queryTable(value: TypeAndTime) { const param: FinanceReportReq = { querytype: 1, ...value } queryResultLoadingAndInfo(fn, loading, param).then(res => { const result = res?.map((e: T, i: number) => { return { ...e, key: String(i) }; }); tableList.value = result ? result : [] }) } return { loading, tableList, queryTable } }