1
0

pagging.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { usePagging } from "@/hook/pagging";
  2. import { SceneType, getScenePagging } from "@/store/scene";
  3. import { computed, reactive, watch, watchEffect } from "vue";
  4. export const useScenePaggingParams = () => {
  5. const pagging = usePagging({
  6. get: getScenePagging,
  7. paramsTemlate: {
  8. type: SceneType.SWKJ,
  9. sceneName: "",
  10. modelTitle: "",
  11. deptId: "",
  12. snCode: "",
  13. },
  14. });
  15. const isSwmx = computed(() => pagging.state.query.type === SceneType.SWMX);
  16. const keyword = computed({
  17. get: () =>
  18. isSwmx.value
  19. ? pagging.state.query.modelTitle
  20. : pagging.state.query.sceneName,
  21. set: (val: string) => {
  22. pagging.state.query.modelTitle = val;
  23. pagging.state.query.sceneName = val;
  24. },
  25. });
  26. let oldSnCode = pagging.state.query.snCode;
  27. watchEffect(() => {
  28. if (isSwmx.value) {
  29. oldSnCode = pagging.state.query.snCode;
  30. pagging.state.query.snCode = "";
  31. } else {
  32. pagging.state.query.snCode = oldSnCode;
  33. }
  34. });
  35. watch(
  36. () => pagging.state.query.type,
  37. () => {
  38. pagging.state.pag.currentPage = 1;
  39. }
  40. );
  41. const queryResetRaw = pagging.queryReset;
  42. pagging.queryReset = () => {
  43. const type = pagging.state.query.type;
  44. queryResetRaw();
  45. pagging.state.query.type = type;
  46. };
  47. return reactive({ pagging, keyword, isSwmx });
  48. };
  49. export type ScenePagging = ReturnType<typeof useScenePaggingParams>["pagging"];