You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

searchLog.js 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import axios from 'axios';
  2. import _ from 'lodash';
  3. export default {
  4. namespaced: true,
  5. state: {
  6. list: [],
  7. fields: [],
  8. filter: {
  9. by: undefined,
  10. value: undefined,
  11. },
  12. },
  13. mutations: {
  14. updateSearch(state, data) {
  15. state.list = [];
  16. state.fields = [];
  17. state.list = data;
  18. data.forEach((item) => {
  19. state.fields.push(item.property);
  20. });
  21. state.fields = state.fields.filter((x, i, a) => a.indexOf(x) === i);
  22. },
  23. onClearFilter(state) {
  24. state.filter = {
  25. by: undefined,
  26. value: undefined,
  27. };
  28. },
  29. },
  30. getters: {
  31. filterList: (state) => {
  32. let lst = state.list;
  33. const { filter } = state;
  34. if (filter) {
  35. if (filter.by) {
  36. lst = _.filter(lst, x => x.property === filter.by);
  37. if (filter.value) {
  38. lst = _.filter(lst, x => x.value.toUpperCase().includes(filter.value.toUpperCase()));
  39. }
  40. } else if (filter.value) {
  41. lst = _.filter(
  42. lst,
  43. x => x.value.toUpperCase().includes(filter.value.toUpperCase())
  44. || x.userName.toUpperCase().includes(filter.value.toUpperCase())
  45. || x.type.toUpperCase().includes(filter.value.toUpperCase()),
  46. );
  47. }
  48. }
  49. return lst;
  50. },
  51. },
  52. actions: {
  53. getPropertySearchLogs({ commit }) {
  54. axios
  55. .get('/api/searchLog')
  56. .then(result => commit('updateSearch', result.data))
  57. .catch(console.error);
  58. },
  59. clearFilter({ commit }) {
  60. commit('onClearFilter');
  61. },
  62. },
  63. };