mix.search.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { debounce } from "lodash";
  2. import * as api from "@/api/pageSearch.js";
  3. //
  4. export default {
  5. data() {
  6. return {
  7. dataList: [],
  8. total: 0,
  9. pageIndex: 1,
  10. pageSize: 10,
  11. };
  12. },
  13. props: {
  14. //请求地址
  15. url: {},
  16. method: {
  17. type: String,
  18. default: "post",
  19. },
  20. urlExport: {},
  21. //请求参数
  22. searchData: {},
  23. //是否手动查询
  24. manual: {
  25. type: Boolean,
  26. default: false,
  27. },
  28. //是否分页
  29. pageable: {
  30. type: Boolean,
  31. default: true,
  32. },
  33. beforeSearchCheck: {
  34. type: Function,
  35. default: function (callback) {
  36. // console.info("beforeSearchCheck default function")
  37. return true;
  38. },
  39. },
  40. },
  41. watch: {
  42. url: "search",
  43. pageSize: "search",
  44. searchData: {
  45. deep: true,
  46. handler: debounce(
  47. function () {
  48. if(!this.manual){
  49. this.search();
  50. }
  51. },
  52. 300,
  53. { leading: true }
  54. ),
  55. },
  56. },
  57. methods: {
  58. /**
  59. * 重新搜索
  60. */
  61. search() {
  62. let checkResult = this.beforeSearchCheck(this.searchData);
  63. // console.info("search" ,checkResult)
  64. if (!checkResult) return;
  65. this.pageIndex = 1;
  66. this.load(this.searchData);
  67. },
  68. /**
  69. * 重新刷新当页
  70. */
  71. refresh() {
  72. this.load(this.searchData);
  73. },
  74. /**
  75. * 请求数据
  76. * @param params
  77. */
  78. async load(params) {
  79. params = params || {};
  80. params.pageNum = this.pageIndex<1?1:this.pageIndex;
  81. params.pageSize = this.pageSize;
  82. console.log(params);
  83. let data;
  84. // debugger
  85. if (this.method === "post") {
  86. data = await api.post(this.url, params);
  87. } else {
  88. data = await api.get(this.url, params);
  89. }
  90. // this.selectItemList=[];
  91. // this.selectItemList=[];
  92. // this.$emit("select", []);
  93. // this.$emit("select-all", []);
  94. // this.$emit("handleSelectionChange", []);
  95. this.$emit("load", data);
  96. if(data.data){
  97. data=data.data
  98. }
  99. if (data.length) {
  100. this.dataList = this.checkSelect(data);
  101. this.total = data.length;
  102. } else if(data.data){
  103. this.dataList = this.checkSelect(data.data);
  104. this.total = this.dataList.length;
  105. }
  106. else{
  107. this.dataList = this.checkSelect(data.rows);
  108. this.total = data.total;
  109. }
  110. this.$emit("totalCount", this.total);
  111. },
  112. /**
  113. * 页数变动
  114. * @param page
  115. */
  116. onPageChange(page) {
  117. this.pageIndex = page;
  118. this.load(this.searchData);
  119. },
  120. /**
  121. * 分页大小变动
  122. * @param s
  123. */
  124. onSizeChange(s) {
  125. this.size = s;
  126. this.pageIndex = 1;
  127. // this.search();此
  128. },
  129. /**
  130. * 排序
  131. */
  132. onSort({ prop, order }) {
  133. this.$set(this.searchData, "sortList", [{ column: prop, desc: order }]);
  134. },
  135. },
  136. };