123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- <template>
- <div class="page-wrap page-finacial">
- <tool-bar
- :text="['advertiser_id']"
- :label="['广告主名/ID']"
- v-model:loading="inSearching"
- @confirm="onSearch"
- >
- <template #picker>
- <p class="label">日期</p>
- <a-range-picker
- :ranges="rangePick"
- format="YYYY/MM/DD"
- v-model:value="pickered"
- />
- </template>
- </tool-bar>
- <a-table
- :columns="columns"
- :data-source="list"
- :scroll="{ x: 1500, y: 600 }"
- size="small"
- @change="handleTableChange"
- rowKey="id"
- bordered
- >
- <template #advertiser="{ text, record }">
- <p class="small-font single-line">{{ record.advertiser_name }}</p>
- <p class="small-font single-line">ID:{{ record.advertiser_id }}</p>
- </template>
- <template #agent="{ text, record }">
- <p class="small-font single-line">{{ record.agent_name }}</p>
- <p class="small-font single-line">ID:{{ record.agent_id }}</p>
- </template>
- </a-table>
- </div>
- </template>
- <script lang="ts">
- import {
- defineComponent,
- reactive,
- ref,
- computed,
- toRefs,
- onMounted,
- } from "vue";
- import ToolBar from "@/components/tool-bar/index.vue";
- import usePagination from "@/hooks/usePagination";
- import { getFinanceList, getFinanceSum } from "@/api";
- import { picker } from "@/helper/config/range";
- import { PageOptions, FinanceData } from "#/api";
- import moment from "moment";
- import { TableColumnOfFinancial } from "../_pageOptions/table_financial";
- const Finance = defineComponent({
- components: {
- ToolBar,
- },
- setup() {
- let { loading, meta, tablePageOptions } = usePagination();
- const state = reactive({
- inSearching: false,
- open: false,
- fields: ref<any>({}),
- inConfirm: false,
- list: ref<FinanceData[]>([]),
- rangePick: picker,
- cost_order: 0,
- balance_order: 0,
- cash_cost_order: 0,
- pickered: [moment().subtract(30, "d"), moment()],
- columns: ref<any[]>([]),
- });
- const onSearch = (fields: Record<string, string>) => {
- const { advertiser_id } = fields;
- state.fields = fields;
- getData({ current: 1 });
- };
- const getData = async (query?: { current: number }) => {
- try {
- loading.value = true;
- let [begin_dates, end_dates] = state.pickered;
- let start_ymd = moment(begin_dates).format("YYYY-MM-DD");
- let end_ymd = moment(end_dates).format("YYYY-MM-DD");
- let parmas = Object.assign(
- {
- cost_order: state.cost_order,
- balance_order: state.balance_order,
- cash_cost_order: state.cash_cost_order,
- },
- {
- start_ymd,
- end_ymd,
- page: query?.current ?? 1,
- advertiser_id: state.fields?.advertiser_id ?? "",
- }
- );
- const { data } = await getFinanceList(parmas);
- const { data: taotals } = await getFinanceSum(parmas);
- let sortList = ["cost", "balance", "cash_cost"];
- let newlist = TableColumnOfFinancial.map((r: any) => {
- r.children = [
- {
- title: taotals[r.dataIndex],
- dataIndex: r.dataIndex,
- width: r.width,
- ellipsis: true,
- sorter: sortList.includes(r.dataIndex) ? true : false,
- sortDirections: ["descend", "ascend", false],
- slots: r.slots ?? "",
- },
- ];
- if (r.dataIndex == "date") {
- r.children[0].title = "总计";
- }
- return r;
- });
- state.columns = newlist;
- state.list = data.list as Array<FinanceData>;
- meta.value = data.meta;
- } catch (error) {
- console.log("on get books list error");
- } finally {
- state.inSearching = false;
- }
- };
- const setSateSwitch = (val: string, name: string) => {
- state.cost_order = 0;
- state.balance_order = 0;
- state.cash_cost_order = 0;
- switch (val) {
- case "ascend":
- (state as any)[name] = 2;
- break;
- case "descend":
- (state as any)[name] = 1;
- break;
- default:
- (state as any)[name] = 0;
- }
- };
- const handleTableChange = (
- pagination: PageOptions,
- filters: any,
- sorter: any
- ) => {
- if (sorter.columnKey == "cost") {
- setSateSwitch(sorter.order, "cost_order");
- }
- if (sorter.columnKey == "balance") {
- setSateSwitch(sorter.order, "balance_order");
- }
- if (sorter.columnKey == "cash_cost") {
- setSateSwitch(sorter.order, "cash_cost_order");
- }
- const { current, pageSize, total } = pagination;
- getData({ current: current });
- };
- onMounted(getData);
- return {
- ...toRefs(state),
- loading,
- tablePageOptions,
- onSearch,
- handleTableChange,
- };
- },
- methods: {
- moment,
- },
- });
- export default Finance;
- </script>
|