ad-countdata.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div class="page-wrap page-wrap-put-books">
  3. <tool-bar
  4. :text="['advertiser_id', 'account_id']"
  5. :label="['广告主/ID', '账户/ID']"
  6. v-model:loading="inSearching"
  7. @confirm="onSearch"
  8. >
  9. <template #picker>
  10. <p class="label">日期</p>
  11. <a-range-picker
  12. v-model:value="pickered"
  13. :ranges="rangePick"
  14. format="YYYY/MM/DD"
  15. />
  16. </template>
  17. </tool-bar>
  18. <a-table
  19. :columns="columns"
  20. :data-source="list"
  21. :scroll="{ x: true }"
  22. @change="handleTableChange"
  23. >
  24. <template #info="{ text, record }">
  25. <p>广告主名:{{ record.advertiser_name }}</p>
  26. <p>广告主ID:{{ record.advertiser_id }}</p>
  27. </template>
  28. <template #budget="{ text, record }">
  29. <editable-cell
  30. :text="record.budget_mode=='BUDGET_MODE_INFINITE'?'不限':record.budget"
  31. title="预算"
  32. :minValue="1000"
  33. :muliteType="true"
  34. customTitle="不限"
  35. customValue="不限"
  36. @change="(val) => onCellChange(record, 'budget', val)"
  37. />
  38. </template>
  39. </a-table>
  40. </div>
  41. </template>
  42. <script lang="ts">
  43. import { defineComponent, reactive, toRefs, ref, onMounted } from "vue";
  44. import { picker } from "@/helper/config/range";
  45. import ToolBar from "@/components/tool-bar/index.vue";
  46. import moment from "moment";
  47. import { AdCoundCloumn } from "../_pageOptions/table-put";
  48. import { getAdgroupData, setGroupStatus,setGroupDay } from "@/api";
  49. import usePagination from "@/hooks/usePagination";
  50. import EditableCell from "@/components/edit-cell/index.vue";
  51. import { AdgroupList, PageOptions } from "@/types/api";
  52. const Adgroup = defineComponent({
  53. components: {
  54. ToolBar,
  55. EditableCell,
  56. },
  57. setup() {
  58. let { loading, meta, tablePageOptions } = usePagination();
  59. const state = reactive({
  60. inSearching: false,
  61. open: false,
  62. inConfirm: false,
  63. list: ref<AdgroupList[]>([]),
  64. rangePick: picker,
  65. pickered: [],
  66. columns: AdCoundCloumn,
  67. fields: {},
  68. });
  69. const onSearch = (fields: Record<string, string>) => {
  70. const { advertiser_id, account_id } = fields;
  71. state.fields = fields;
  72. getData({ current: 1, advertiser_id, account_id });
  73. };
  74. const getData = async (query?: {
  75. current: number;
  76. advertiser_id?: string;
  77. account_id?: string;
  78. }) => {
  79. try {
  80. loading.value = true;
  81. let [begin_dates, end_dates] = state.pickered;
  82. let begin_date, end_date;
  83. if (begin_dates && end_dates) {
  84. begin_date = moment(begin_dates).format("YYYY-MM-DD");
  85. end_date = moment(end_dates).format("YYYY-MM-DD");
  86. }
  87. const { data } = await getAdgroupData({
  88. begin_date,
  89. end_date,
  90. advertiser_id: query?.advertiser_id,
  91. account_id: query?.account_id,
  92. page: query?.current ?? 1,
  93. });
  94. state.list = data.list;
  95. meta.value = data.meta;
  96. } catch (error) {
  97. console.log("on get books list error");
  98. } finally {
  99. state.inSearching = false;
  100. }
  101. };
  102. const handleTableChange = (pagination: PageOptions) => {
  103. const { current, pageSize, total } = pagination;
  104. let data = Object.assign({ current, ...state.fields });
  105. getData(data);
  106. };
  107. onMounted(getData);
  108. return {
  109. ...toRefs(state),
  110. loading,
  111. tablePageOptions,
  112. onSearch,
  113. handleTableChange,
  114. };
  115. },
  116. methods: {
  117. moment,
  118. onCellChange(record: any, dataIndex: string, value: string){
  119. let data = {
  120. advertiser_id:record.advertiser_id,
  121. budget_mode: value == '不限'?'BUDGET_MODE_INFINITE' :'BUDGET_MODE_DAY',
  122. budget: value == '不限'?'0' :Number(value)
  123. }
  124. setGroupDay(data).then(res=>{
  125. this.$message.success("修改成功!");
  126. })
  127. }
  128. },
  129. });
  130. export default Adgroup;
  131. </script>