useBaseMsg.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import { Detail } from "./interface";
  2. import { reactive, computed, toRefs } from "vue";
  3. import { useUserStore } from "@/stores/modules/user";
  4. /**
  5. * @description base 基础信息页面操作方法封装
  6. * @param {Function} api 获取表格数据 api 方法 (必传)
  7. * @param {Object} initParam 获取数据初始化参数 (非必传,默认为{})
  8. * @param {Function} dataCallBack 对后台返回的数据进行处理的方法 (非必传)
  9. * @param {Function} requestError 错误处理
  10. * */
  11. export const useBaseMsg = (
  12. api?: (params: any) => Promise<any>,
  13. initParam: object = {},
  14. dataCallBack?: (data: any) => any,
  15. requestError?: (error: any) => void
  16. ) => {
  17. const state = reactive<Detail.DetailStateProps>({
  18. baseData: {},
  19. // 查询参数(只包括查询)
  20. searchParam: {},
  21. // 初始化默认的查询参数
  22. searchInitParam: {},
  23. // 总参数(包含分页和查询参数)
  24. totalParam: {}
  25. });
  26. /**
  27. * @description 获取详情页,基础信息模块
  28. * @return void
  29. * */
  30. const getBamseMsg = async () => {
  31. if (!api) {
  32. state.searchParam = initParam;
  33. return;
  34. }
  35. try {
  36. // 先把初始化参数和分页参数放到总参数里面
  37. console.log("state.totalParam :>> ", state.totalParam);
  38. console.log("state.initParam :>> ", initParam);
  39. console.log("state.searchParam :>> ", state.searchParam);
  40. Object.assign(state.totalParam, initParam);
  41. console.log("state.totalParam :>> ", state.totalParam);
  42. let data = await api({ ...state.searchInitParam, ...state.totalParam });
  43. dataCallBack && (data = dataCallBack(data));
  44. state.baseData = data;
  45. console.log("getTableList data :>> ", data);
  46. // state.tableData = data[reqProp];
  47. // 解构后台返回的分页数据 (如果有分页更新分页信息)
  48. // const { pageNum, pageSize, total } = data;
  49. // isPageable && updatePageable({ pageNum, pageSize, total });
  50. } catch (error) {
  51. requestError && requestError(error);
  52. }
  53. };
  54. // /**
  55. // * @description 获取表格数据
  56. // * @return void
  57. // * */
  58. // const getTableList = async () => {
  59. // if (!apiBase) return;
  60. // try {
  61. // // 先把初始化参数和分页参数放到总参数里面
  62. // console.log("state.totalParam :>> ", state.totalParam);
  63. // console.log("state.initParam :>> ", initParam);
  64. // console.log("state.searchParam :>> ", state.searchParam);
  65. // Object.assign(state.totalParam, isPageable ? pageParam.value : {});
  66. // console.log("state.totalParam :>> ", state.totalParam);
  67. // let data = await apiBase({ ...state.searchInitParam, ...state.totalParam });
  68. // dataCallBack && (data = dataCallBack(data));
  69. // state.tableData = isPageable ? data.list : data;
  70. // console.log("getTableList data :>> ", data);
  71. // // state.tableData = data[reqProp];
  72. // // 解构后台返回的分页数据 (如果有分页更新分页信息)
  73. // const { pageNum, pageSize, total } = data;
  74. // isPageable && updatePageable({ pageNum, pageSize, total });
  75. // } catch (error) {
  76. // requestError && requestError(error);
  77. // }
  78. // };
  79. /**
  80. * @description 更新查询参数
  81. * @return void
  82. * */
  83. const updatedTotalParam = () => {
  84. state.totalParam = {};
  85. // 处理查询参数,可以给查询参数加自定义前缀操作
  86. let nowSearchParam: { [key: string]: any } = {};
  87. // 防止手动清空输入框携带参数(这里可以自定义查询参数前缀)
  88. for (let key in state.searchParam) {
  89. // * 某些情况下参数为 false/0 也应该携带参数
  90. if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) {
  91. nowSearchParam[key] = state.searchParam[key];
  92. }
  93. }
  94. Object.assign(state.totalParam, nowSearchParam);
  95. console.log("updatedTotalParam state.searchParam :>> ", state.searchParam);
  96. console.log("updatedTotalParam state.totalParam :>> ", state.totalParam);
  97. // if (dwname) {
  98. // const userStore = useUserStore();
  99. // userStore.setSearchQueryHabit(dwname, state.totalParam);
  100. // }
  101. };
  102. // /**
  103. // * @description 更新分页信息
  104. // * @param {Object} resPageable 后台返回的分页数据
  105. // * @return void
  106. // * */
  107. // const updatePageable = (resPageable: Table.Pageable) => {
  108. // Object.assign(state.pageable, resPageable);
  109. // };
  110. // /**
  111. // * @description 表格数据查询
  112. // * @return void
  113. // * */
  114. // const search = () => {
  115. // state.pageable.pageNum = 1;
  116. // updatedTotalParam();
  117. // getTableList();
  118. // };
  119. // /**
  120. // * @description 表格数据重置
  121. // * @return void
  122. // * */
  123. // const reset = () => {
  124. // state.pageable.pageNum = 1;
  125. // state.searchParam = {};
  126. // // 重置搜索表单的时,如果有默认搜索参数,则重置默认的搜索参数
  127. // Object.keys(state.searchInitParam).forEach(key => {
  128. // state.searchParam[key] = state.searchInitParam[key];
  129. // });
  130. // updatedTotalParam();
  131. // getTableList();
  132. // };
  133. // /**
  134. // * @description 每页条数改变
  135. // * @param {Number} val 当前条数
  136. // * @return void
  137. // * */
  138. // const handleSizeChange = (val: number) => {
  139. // state.pageable.pageNum = 1;
  140. // state.pageable.pageSize = val;
  141. // getTableList();
  142. // };
  143. // /**
  144. // * @description 当前页改变
  145. // * @param {Number} val 当前页
  146. // * @return void
  147. // * */
  148. // const handleCurrentChange = (val: number) => {
  149. // state.pageable.pageNum = val;
  150. // getTableList();
  151. // };
  152. return {
  153. ...toRefs(state),
  154. getBamseMsg,
  155. // search,
  156. // reset,
  157. // handleSizeChange,
  158. // handleCurrentChange,
  159. updatedTotalParam
  160. };
  161. };