首页 > 其他分享 >acro design框架 pc端界面封装

acro design框架 pc端界面封装

时间:2025-01-10 15:44:51浏览次数:1  
标签:pagination const default ref value pc design true acro

<template>
    <div class="tableview">
        <a-card class="general-card">
            <div ref="topheader">
                <a-form :model="props.searchData" ref="queryFormRef" style="margin-bottom: 10px" :label-col-props="{ span: 8 }" :wrapper-col-props="{ span: 16 }">
                    <a-grid :cols="4" :collapsed="collapsed && props.isFold">
                        <slot name="search"></slot>
                        <a-grid-item class="rightGrid" suffix>
                            <a-space fill style="justify-content: end">
                                <a-button type="primary" @click="onQuery">
                                    <template #icon>
                                        <icon-search />
                                    </template>
                                    查询
                                </a-button>
                                <a-button @click="onReset">
                                    <template #icon>
                                        <icon-refresh />
                                    </template>
                                    重置
                                </a-button>
                                <a-link v-if="props.isFold" @click="onCollapseds">
                                    {{ collapsed ? "展开" : "收起" }}
                                    <icon-down v-if="collapsed" /><icon-up v-if="!collapsed" />
                                </a-link>
                            </a-space>
                        </a-grid-item>
                    </a-grid>
                </a-form>
                <a-divider style="margin-top: 0" />
                <a-row>
                    <a-col :span="14">
                        <slot name="tool"></slot>
                    </a-col>
                    <a-col :span="10" style="text-align: right">
                        <slot name="toolRight"></slot>
                    </a-col>
                </a-row>
            </div>

            <a-table
                row-key="id"
                :loading="loading"
                :pagination="pagination"
                :columns="tableHeader"
                :data="tableData"
                :bordered="{ wrapper: props.wrapper, cell: props.cell }"
                :scroll="sollers"
                :stripe="props.stripe"
                :row-selection="rowSelection"
                @page-change="handleCurrentChange"
                @page-size-change="pageSizeChange"
                :sticky-header="true">
                <template #operate="{ record }">
                    <slot name="tableColumn" :record="record"></slot>
                </template>
            </a-table>
        </a-card>
    </div>
</template>

<script setup>
import { ref, defineProps, defineEmits, onMounted, watch, defineExpose, nextTick } from "vue";
import { getTableList } from "";
import { useWindowSize } from "@vueuse/core";

const props = defineProps({
    queryForm: {},
    dataUrl: "",
    searchData: {},
    tableHeader: {
        type: Array,
        default: [],
    },
    tableRightWidth: {
        default: 250,
    },
    //是否首次加载
    isLoad: {
        default: true,
    },
    scroll: {
        default: {
            x: "150%",
        },
    },
    isFold: {
        //是否显示折叠
        default: true,
    },
    stripe: {
        default: false,
    },
    wrapper: {
        default: true,
    },
    cell: {
        default: true,
    },
    rowSelection: {
        default: false,
    },
});
const queryFormRef = ref();
const loading = ref(false);
const collapsed = ref(true);
const topheader = ref();
const windowSize = useWindowSize();

const pagination = ref({
    current: 1,
    pageSize: 10,
    total: 0,
    showTotal: true,
    showPageSize: true,
    showJumper: true,
});
const tableData = ref([]);
const getTabledata = () => {
    loading.value = true;
    let data = {
        pageNum: pagination.value.current,
        pageSize: pagination.value.pageSize,
        ...props.searchData,
    };
    getTableList(props.dataUrl, data, props.headers).then((res) => {
        loading.value = false;
        if (res.state == 200) {
            tableData.value = res.data.dataList;
            pagination.value.total = parseInt(res.data.total);
        }
    });
};

const sollers = ref({});
onMounted(() => {
    if (props.isLoad) {
        getTabledata();
    }
    heightChange();
});
const onCollapseds = () => {
    collapsed.value = !collapsed.value;
    heightChange();
};
/**
 * 动态计算表格内容高度
 */
const heightChange = () => {
    nextTick(() => {
         
        console.log(windowSize.height.value, topheader.value.clientHeight, y);
        sollers.value = {
            x: props.scroll.x,
            y: y,
        };
    });
};
const onQuery = () => {
    queryFormRef.value.validate((error) => {
        if (!error) {
            pagination.value.current = 1;
            emits("onQuery", "");
        }
    });
};
const onReset = () => {
    queryFormRef.value.resetFields();
    pagination.value.current = 1;
    emits("onReset", "");
};
//重置表单
const resetForm = () => {
    queryFormRef.value.resetFields();
    pagination.value.current = 1;
};

const handleCurrentChange = (val) => {
    pagination.value.current = val;
    getTabledata();
};
const pageSizeChange = (val) => {
    pagination.value.pageSize = val;
    getTabledata();
};
const emits = defineEmits(["changePage", "onQuery", "onReset"]);

defineExpose({ getTabledata, resetForm, tableData, pagination });
</script>

<style lang="scss" scoped>
.tableview {
    // margin-top: 20px;
    .rightGrid {
        padding-left: 20px;
    }
}
</style>

  

标签:pagination,const,default,ref,value,pc,design,true,acro
From: https://www.cnblogs.com/panax/p/18664090

相关文章

  • qt 实现窗口置顶,qtdesigner创建的widget窗口集成程序里的用法
    参考https://blog.csdn.net/Larry_Yanan/article/details/123518788.ui文件如下新建的ui文件,编译一下就会生成对应的ui_xxx.h文件,文件内就有对应的namespaceUi声明的变量,这个变量要在mainwindow.h中声明,然后在mainwindow.cpp中new出来,具体使用如下mainwindow.h#ifnde......
  • 【JPCS出版,快速见刊检索】2025年可再生能源与节能国际会议(REEC 2025)
    2025年可再生能源与节能国际会议(REEC2025)将在2025年3月7-9日于中国江西新余召开。大会旨在为从事可再生能源与节能方面的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨,促进学术成果产业化合作的平台。......
  • PCIe扫盲——TLP路由之Address Routing
    地址路由(AddressRouting)的地址包括IO和Memory。对于Memory请求来说,32bit的地址使用3DW的Header,64bit的地址使用4DW的Header。而IO请求则只能使用32bit的地址,即只能使用3DW的Header。注:再次强调,IO请求是为了兼容早期的PCI设备的,在新的PCIe设备中禁止使用。3DW和4DW的TLPHeader......
  • PCIe扫盲——TLP路由之ID Routing
    ID路由(IDRouting)有的时候也被称为BDF路由,即采用BusNumber、DeviceNumber和FunctionNumber来确定目标设备的位置。这是一种兼容PCI和PCI-X总线协议的路由方式,主要用于配置请求(ConfigurationRequest)的路由,在PCIe总线中,其还可以被用于Completion和Message的路由。前面的文章提......
  • 六层PCB板是怎么拼出来的?
    转载----工程师看海 2021-12-2508:01本篇文章主要分享六层PCB板是怎么拼出来的,目录和结构如下:1.前言2.PCB基础框架3.PCB材料组成4.PCB叠层设计5.PCB阻抗计算整篇文章阅读预计10分钟。1.前言求职面试时,大多数人都会在一个问题上纠结:去大公司还是小公司?这个问题在......
  • PCL点云库入门——PCL库点云特征之FPFH点快速特征直方图(Fast Point Feature Histogram
    1、FPFH原理        快速点特征直方图(FastPointFeatureHistograms,简称FPFH)是对PFH(PointFeatureHistograms)计算方法的一种简化,具体内容看参考十四节内容。该方法的核心在于独立计算查询点的K邻域内每个点的简化点特征直方图(SimplifiedPointFeatureHistogram,简......
  • Spark 源码分析(一) SparkRpc中序列化与反序列化Serializer的抽象类解读 (java序列化部
    目录(3)JavaSerializerInstance定义了一个Java序列化实例(1)构造方法参数(2)方法1:serializeStream(3)方法2:deserializeStreamdefaultClassLoader(4)方法3:deserializeStreamloader(5)方法4:serialize(6)方法5:deserializeloader(7)方法6:deserializedefaul......
  • 《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1Tzr9Y3EQ7/目录:1、开源低功耗测试仪2、开源创意万用表,续航100-300小时3、低级编程和优化实现4、资讯(1)兆易创新推出EtherCAT......
  • 国产化板卡设计原理图:2295-基于 JFM7K325T的半高PCIe x4双路万兆光纤收发卡
    基于JFM7K325T的半高PCIex4双路万兆光纤收发卡    一、板卡概述   板卡采用JFM7K325T芯片作为主处理器,可应用于万兆网络、高速数据采集、存储;光纤隔离网闸等领域。      二、功能和技术指标: 板卡功能参数内容主处理器......
  • 1.2.5 初步接触密度高点的模块处理,既能满足信号性能要求,也能满足PCB设计美观度的要
    初步接触密度高点的模块处理,既能满足信号性能要求,也能满足PCB设计美观度的要求在现代电子设计中,面对高密度模块时,如何处理布局和布线,以满足信号性能和PCB设计美观度的要求,逐渐成为设计师面临的挑战。以下是一些处理高密度模块的方法和策略,以确保信号性能和美观度都能得到满足......