put-log.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div class="page-wrap page-wrap-put-books">
  3. <tool-bar
  4. :text="[]"
  5. :label="[]"
  6. @confirm="onSearch"
  7. v-model:loading="inSearching"
  8. >
  9. <template #picker>
  10. <p class="label">日期</p>
  11. <a-range-picker
  12. v-model:value="picker"
  13. :ranges="{
  14. 本日: [moment(), moment()],
  15. 近7日: [moment().subtract(7, 'd'), moment()],
  16. 近14日: [moment().subtract(14, 'd'), moment()],
  17. 近30日: [moment().subtract(30, 'd'), moment()],
  18. 近3月: [
  19. moment()
  20. .subtract(3, 'month')
  21. .startOf('month'),
  22. moment().startOf('month'),
  23. ],
  24. }"
  25. format="YYYY/MM/DD"
  26. />
  27. </template>
  28. </tool-bar>
  29. <a-table
  30. :columns="columns"
  31. :data-source="list"
  32. rowKey="id"
  33. bordered
  34. :pagination="false"
  35. >
  36. <template #log="{ text, record }">
  37. <p
  38. v-for="(log, index) in record.content_log"
  39. :key="log"
  40. class="table-p"
  41. >
  42. {{ log }}
  43. </p>
  44. </template>
  45. </a-table>
  46. </div>
  47. </template>
  48. <script lang="ts">
  49. import { defineComponent, reactive, toRefs, ref, watchEffect } from "vue";
  50. import ToolBar from "@/components/tool-bar/index.vue";
  51. import moment from "moment";
  52. import { TableColumnOfPutLog } from "../_pageOptions/table-put";
  53. import { opertaroLog } from "@/api";
  54. import usePagination from "@/hooks/usePagination";
  55. import { adPlanLog, PageOptions } from "@/types/api";
  56. import useApp from "@/hooks/useApp";
  57. const PutData = defineComponent({
  58. components: {
  59. ToolBar,
  60. },
  61. props: {
  62. id: String,
  63. },
  64. setup(props) {
  65. const { router } = useApp();
  66. let { loading, meta, tablePageOptions } = usePagination();
  67. const state = reactive({
  68. list: ref<adPlanLog[]>([]),
  69. columns: TableColumnOfPutLog,
  70. picker: [],
  71. inSearching: false,
  72. });
  73. const onSearch = async (fields: Record<string, string>) => {
  74. try {
  75. const { picker } = state;
  76. let [begin_dates, end_dates] = picker;
  77. let begin_time = moment(begin_dates).format("YYYY-MM-DD");
  78. let end_time = moment(end_dates).format("YYYY-MM-DD");
  79. const { data } = await opertaroLog({
  80. begin_time,
  81. end_time,
  82. page: 1,
  83. ad_id: props.id,
  84. });
  85. state.list = data.list;
  86. meta.value = data.meta;
  87. } catch (e) {
  88. console.log(e);
  89. } finally {
  90. console.log(state.inSearching);
  91. state.inSearching = false;
  92. }
  93. };
  94. const getData = (id = props.id) => {
  95. opertaroLog({ ad_id: props.id }).then((res) => {
  96. state.list = res.data.list;
  97. });
  98. };
  99. watchEffect(() => {
  100. getData(props.id);
  101. });
  102. const handleTableChange = (pagination: PageOptions) => {
  103. const { current, pageSize, total } = pagination;
  104. opertaroLog({ page: current }).then((res) => {
  105. state.list = res.data.list;
  106. meta.value = res.data.meta;
  107. });
  108. };
  109. const more = (data: any) => {
  110. router.push({ path: "/put/datamore" });
  111. };
  112. return { ...toRefs(state), onSearch, handleTableChange, meta, more };
  113. },
  114. methods: {
  115. moment,
  116. },
  117. });
  118. export default PutData;
  119. </script>
  120. <style lang="scss" scoped>
  121. .table-p {
  122. max-width: 500px;
  123. white-space: normal;
  124. word-break: break-all;
  125. line-height: 200%;
  126. }
  127. </style>