setup.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo'
  2. import { getUsrId } from '@/services/bus/user'
  3. import { FinanceReportReq } from "@/services/go/ermcp/report/interface"
  4. import moment, { Moment } from "moment"
  5. import { ref, SetupContext } from "vue"
  6. import { reportCycleType, reportCyleTimeType } from "./enum"
  7. import { TypeAndTime, Value } from "./interface"
  8. export function handleReprotType(context: SetupContext) {
  9. // 选中的周期类型
  10. const selectedReportType = ref<Value>({ key: reportCycleType.day })
  11. // 时间格式化类型
  12. const dateFormat = ref<reportCyleTimeType>(reportCyleTimeType.day)
  13. // 时间
  14. const time = ref<Moment>(getInitTime());
  15. // 交易用户
  16. const selectedUser = ref<Value>({ key: getUsrId() })
  17. // 周期类型与时间类型 一对一的关系
  18. const timeMap = new Map([
  19. [reportCycleType.day, reportCyleTimeType.day],
  20. [reportCycleType.month, reportCyleTimeType.month],
  21. [reportCycleType.year, reportCyleTimeType.year],
  22. [reportCycleType.week, reportCyleTimeType.week],
  23. ])
  24. // 报表类型
  25. const reportType = ref<{ value: number, lable: string }[]>([
  26. { value: reportCycleType.day, lable: '日报表' },
  27. { value: reportCycleType.week, lable: '周报表' },
  28. { value: reportCycleType.month, lable: '月报表' },
  29. ])
  30. // 初始化时间
  31. function getInitTime() {
  32. return moment(new Date(), dateFormat.value)
  33. }
  34. function getFomateType(): reportCyleTimeType {
  35. const { key } = selectedReportType.value
  36. const temp = timeMap.get(key)
  37. return temp ? temp : reportCyleTimeType.day
  38. }
  39. // 周期类型变更
  40. function reportTypeChange() {
  41. time.value = getInitTime()
  42. dateFormat.value = getFomateType()
  43. update()
  44. }
  45. // 时间变更
  46. function timeChange() {
  47. update()
  48. }
  49. // 交易用户变更
  50. function userChange() {
  51. update()
  52. }
  53. // 根据周期类型 格式化时间
  54. function formateTime() {
  55. return moment(time.value).format(getFomateType())
  56. }
  57. // 是否为 月报表
  58. function isMonth() {
  59. return selectedReportType.value.key === reportCycleType.month
  60. }
  61. // 通知上层更新数据
  62. function update() {
  63. const param = { cycletype: selectedReportType.value.key, cycletime: formateTime(), userid: selectedUser.value.key }
  64. context.emit('update', param)
  65. }
  66. return { selectedReportType, reportType, isMonth, reportTypeChange, dateFormat, time, timeChange, selectedUser, userChange }
  67. }
  68. export function handleInitTypeAndTime() {
  69. // 初始化时间
  70. function getInitTime() {
  71. return moment(new Date()).format(reportCyleTimeType.day)
  72. }
  73. // 初始化类型
  74. function getInitType() {
  75. return reportCycleType.day
  76. }
  77. return { getInitTime, getInitType }
  78. }
  79. /**
  80. * 获取表格列表数据
  81. * @param type
  82. * @returns
  83. */
  84. export function queryTableList<T>(fn: Function) {
  85. // 加载状态
  86. const loading = ref<boolean>(false);
  87. // 表格数据
  88. const tableList = ref<T[]>([]);
  89. function queryTable(value: TypeAndTime) {
  90. const param: FinanceReportReq = {
  91. querytype: 1,
  92. ...value
  93. }
  94. queryResultLoadingAndInfo(fn, loading, param).then(res => {
  95. const result = res?.map((e: T, i: number) => {
  96. return { ...e, key: String(i) };
  97. });
  98. tableList.value = result ? result : []
  99. })
  100. }
  101. return { loading, tableList, queryTable }
  102. }