首页 > 其他分享 >jeecg-vue3, BasicTable与抽屉useDrawer()的简单使用

jeecg-vue3, BasicTable与抽屉useDrawer()的简单使用

时间:2024-08-07 16:28:04浏览次数:16  
标签:ref const true vue3 data BasicTable useDrawer import type

需求:分屏情况下,根据传入参数不同查看申请材料

1.实现效果

点击申请材料弹出,点击取消或点击空白处,抽屉消失

2.代码实现

2.1files.vue实现

<template>
    <div class="container">
        <a-button @click="click('sqcl')" style="margin-left: 5px;">申请材料</a-button>
        <a-button @click="click('jcbz')" style="margin-left: 5px;">检查标准</a-button>
    </div>
    <FormDrawer @register="registerDrawer" @success="reload" :showFooter="showFooter" />

</template>
<script setup>
    import { ref } from 'vue';
    import FormDrawer from './formDrawer.vue';
    import { useDrawer } from '/@/components/Drawer';

    const showFooter = ref(true);

    const [registerDrawer, { openDrawer }] = useDrawer();

    function click(data) {
        showFooter.value = true;
        openDrawer(true, {
            type: data,
        });
    }
</script>
<style scoped>
.card-style{
  margin: 10px 0;
}

.container {
  background-color: white;
  padding: 5px;
  width: 100%;
  max-width: 100%; 
  box-sizing: border-box;
  margin-top: 10px;
  display: flex; /* 使用Flexbox布局 */
  align-items: center; /* 垂直居中对齐 */
  /* justify-content: space-between;  */
}
</style>

2.2formDrawer.vue实现

<template>
    <BasicDrawer v-bind="$attrs" @register="registerDrawer" :title="getTitle" width="500px"
        destroyOnClose>
        <BasicTable @register="registerTable"></BasicTable>
    </BasicDrawer>
</template>
<script lang="ts" setup>
    import { BasicTable } from '/@/components/Table';
    import { useListPage } from '/@/hooks/system/useListPage';
    import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
    import { computed, ref, unref, onMounted } from 'vue';
    import { filesColumns } from '../screen.data';
    import { getMaterialsApi } from '../screen.api';

    const type = ref('');
    const fileList = ref([]);
    const [ registerDrawer ] = useDrawerInner((data)=>{
        type.value = data?.type;
    });
    
    const getTitle = computed(() => (unref(type)==='sqcl' ? '申请材料' : '检查标准'));

    // 列表页面公共参数、方法
    const { tableContext } = useListPage({
        tableProps: {
            dataSource: fileList,
            columns: filesColumns,
            //显示序号
            showIndexColumn: true,
            bordered: true,
            //是否显示操作列
            showActionColumn: false,
            //是否显示刷新、设置等
            showTableSetting: false,
            //是否显示查询、重置
            useSearchForm: false,
            // actionColumn: {
            //   width: 120,
            // },
            pagination: false,
        },
    });

    //BasicTable绑定注册
    const [registerTable] = tableContext;

    async function getMaterials() {
        const result = await getMaterialsApi({type: '1'});
        fileList.value = result;
    }
    onMounted(()=>{
        getMaterials();
    });

</script>
<style scoped>
</style>

2.3screen.api.ts实现

import { defHttp } from '/@/utils/http/axios';

enum Api {
  getMaterials = '/接口',
}

export const getMaterialsApi = (params) => {
  return defHttp.get({url: Api.getMaterials, params}, { joinParamsToUrl: true });
}

2.4screen.data.ts实现

import { BasicColumn } from '/@/components/Table';

export const filesColumns: BasicColumn[] = [
    {
        title: '名称',
        dataIndex: 'wjmc',
    },
    // {
    //     title: '地址',
    //     dataIndex: 'wjdz',
    // },
]

3.总结

 1.ts也可以写到路由里面

 2.很简单,直接拷贝就可以测试了。接口记得改一下就行了。

标签:ref,const,true,vue3,data,BasicTable,useDrawer,import,type
From: https://blog.csdn.net/blns_yxl/article/details/140992969

相关文章

  • uniapp Vue3版本使用jweixin-module报错
    把uniapp从Vue2版本选择到Vue3版本编译开发  改用到Vue3使用:varjweixin=require('jweixin-module')会编译报错:requireisnotdefined,没有require模块.改成import的话,由于jweixin-module不支持export写法,所以引入也不能成功1import *asjweixinfr......
  • Vue3中滚动加载更多数据
    <divclass="my-task-body-inner"ref="scrollContainer"@scroll="handleScroll"style="height:100%;overflow-y:auto;"></div>constscrollContainer=ref(null); consthandleScroll=()=>......
  • 基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入
    遇到一个需求就是对这个el-notification加一个倒计时进度条,方便用户知道该通知何时自动关闭。一、示例代码(1)基于Vue2+ElementUI的项目<template><div><el-button@click="showTip">doit</el-button></div></template><script>exportdefault{......
  • uniapp vue3 转换华为鸿蒙(以及问题一些解决方案)
         主要是从Windows系统配置、配置离线SDK和DevEco-Studio、HBuilderX、三方面进行配置。     因为我也是之前写小程序的用uniappvue3写的看官网(uni-app开发鸿蒙应用|uni-app官网)的时候看到vue3uniapp写法可以转换华为鸿蒙开发,我就自己来尝试一......
  • 在Vue3中如何为路由Query参数标注类型
    前言最近发布了一款支持IOC容器的Vue3框架:Zova。与以往的OOP或者Class方案不同,Zova在界面交互层面仍然采用Setup语法,仅仅在业务层面引入IOC容器。IOC容器犹如一把钥匙,为我们打开了业务工程化的大门,允许我们探索更多工程化方面的设计和能力。有网友提出一个非常好的建议:可否提供一......
  • vue3+ts公司人员管理系统示例(接口版)
    vue3+ts公司人员管理系统示例(接口版)首先,让我们创建一个新的Vue3项目:vuecreatecompany-management-systemcdcompany-management-systemvueaddtypescriptnpminstallelement-plusaxios然后,我们来创建必要的文件和组件:在src/types目录下创建Employee.ts:/......
  • 用项目详细讲讲vue3路由
    1.【对路由的理解】VueRouter是Vue.js官方的路由管理器,它用于构建单页面应用(SPA),允许我们在不同的页面间进行导航,而无需刷新整个页面。 路由配置文件代码如下:import{createRouter,createWebHistory}from'vue-router'importHomefrom'@/pages/Home.vue'importNew......
  • [vue3] vue3初始化渲染流程
    组件初次渲染流程组件是对DOM树的抽象,组件的外观由template定义,模板在编译阶段会被转化为一个渲染函数,用于在运行时生成vnode。即组件在运行时的渲染步骤是:graphLR A[创建vnode]-->B[渲染vnode]-->C[生成DOM]vnode是一个用于描述视图的结构和属性的JavaScript对象。vnode......
  • Django5+Vue3:OA系统前后端分离项目实战-异步优化Ajax请求(12)
    Django5+Vue3系列文章前言本节开始,全文仅对会员开放。若点赞和收藏数量超过100,全文将免费开放。此项目采用Django框架的5.0.7版本进行开发。Django5.0支持的Python版本为3.10、3.11和3.12。OA系统系列文章将持续更新,直至项目的Docker部署阶段。专栏链接:......
  • Django5+Vue3:OA系统前后端分离项目实战-Pinia用户和token信息管理(11)
    Django5+Vue3系列文章前言本节开始,全文仅对会员开放。若点赞和收藏数量超过100,全文将免费开放。此项目采用Django框架的5.0.7版本进行开发。Django5.0支持的Python版本为3.10、3.11和3.12。OA系统系列文章将持续更新,直至项目的Docker部署阶段。专栏链接:......