npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nrailsuve

v1.14.46

Published

前端组件库,包括vue组件扩展

Downloads

1

Readme

 该组件适用于结构类似的数据列表,有导出、
 分页、查询、选择列、新建、编辑、删除、批量删除功能
 这些功能可动态的进行设置使用权限。

包含的文件

 整个组件由三个文件组成,分别是DAOTable.vue 、DAOFieldBox.vue 、core.js。
 目前该组件已公开到npm,模块名称为nrailsvue,使用时只需要下载模块即可
#需要注意的是该模块依赖于其他模块,注意使用时,需安装依赖模块
npm install nrailsvue

引用

#首先需要安装依赖的模块
npm install --save-dev element-ui axios file-saver script-loader xlsx nrailsvue
     
# 使用element-ui需要在main.js文件中加入下列代码
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

#只需在父组件中引入DAOTabel.vue组件。
import DAOTable from 'nrailsvue/DAOTable';

#在components中添加组件
components: {
    DAOTable,
},

基础使用

在父组件中使用组件<DAOTable>,按下代码使用,就可以进行数据展示了。
     api:为必须项,表示连接的数据地址,通过设置该属性的值进行数据访问,
         这里必须保证接口是根据DAOTabel设计的。
     ref:可选项,进行标识,自定义新建和编辑页面时,
         能获取到组件内部的数据接口(editFields),【详细描述见-自定义新增和编辑页面】
     title:是数据列表的标题,为可选项。

    注意该组件布局依赖父元素,父元素必须有高度,且父元素的position必须为
    定位属性(relativ或者absolute,如果父元素没有定位,则组件将会根据最近的定位元素来定位。
  <template>
  <div>
    <h3>Demo 演示</h3>
    <div style="position:relative;height:600px">
      <DAOTable ref="table"
                api="http://47.105.44.230:9990/GroupBuyApi"
                title="标题"
              >
      </DAOTable>
    </div>
  </div>  
</template>
<script>
  import DAOTable from './DAOTable.vue';
    export default {
    components: {
      DAOTable,
    },
  }
</script>

默认功能

组件默认带有查询功能,分页功能;可查询的字段由服务器返回。
基础组件效果图

输入图片说明

组件扩展功能

对于数据列表,该组件还提供了许多扩展功能,包括新增、编辑、删除、导出、选择列。
默认情况下这些功能是不显示的,通过设置属性来控制功能的呈现。
属性列表
    1、btnCreateVisible:控制新增功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    2、btnEditVisible: 控制编辑功能按钮的可视,
                       值为true时表示可视,false为不可视。属性值类型为Boolean
    3、btnDeleteVisible: 控制删除功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    4、btnExportVisible: 控制导出功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    5、btnSelectVisible: 控制选择列功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    6、btnImportVisible: 控制导入功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    7、btnBatchDelVisible: 控制批量删除功能按钮的可视,
                         值为true时表示可视,false为不可视。属性值类型为Boolean
    8、btns:功能按钮的扩展属性。Array类型,按钮的名称数组。
    

扩展功能代码

新增、编辑、删除的扩展功能的使用如下,其他功能类似
     <DAOTable  ref="table"
                api="http://127.0.0.1:8900/VehicleLineApi"
                :btnCreateVisible="true"
                :btnEditVisible="true"
                :btnDeleteVisible="true"
     >
     </DAOTable>
效果图

输入图片说明

特别说明
导入和导出功能,具有模块依赖,依赖file-saver、script-loader、xlsx
若使用改组件,项目中必须安装这些模块后才能使用该功能。

触发事件列表

    `initSchemaOver:数据结构初始化完成后的事件监听,触发一次,初始化页面时触发,
                    使用详见【初始化查询过滤器】
    `initDataOver`: 表格数据加载完成后触发,会触发多次,在初始化数据,查询数据,
                    修改数据后都会重载表格数据,详见【自定义表格操作按钮】
    `btnclick`:     自定义表格按钮的事件监听,参数为 【btn(按钮名称) data(当前行数据)】,
                    代码详见【自定义表格操作按钮】
    `btn`:         数据操作按钮的触发事件,如新建、编辑、提交等操作按钮。
                    使用代码详见【自定义新增和编辑页面】

DAOTabel实例提供的方法

  • setFilters:
    设置过滤器 【详见初始化查询过滤器】
  • btnSearch_Click: 根据过滤器查询数据【详见初始化查询过滤器】
  • refresh: 刷新数据

DAOTabel实例提供的属性

  • currentView:String 动态控制查询和编辑文本框组件,实现自定义文本框【详见自定义输入框组件】
  • isConfirm :Boolean 用于数据校验时,阻止数据提交【详见自定义新增和编辑页面】
  • editFields 新建和编辑时的数据接口 【详见自定义新增和编辑页面】

初始化查询过滤器

由于业务需求,在第一次加载数据时要对数据进行筛选查询,组件提供了设置过滤器的功能方法,如下
# template
   <DAOTable
                v-if="dialogVisible"
                key="VehicleTaskDaoApi"
                style="position:relative;height:400px;margin:10px 20px 20px 20px"
                ref="tableDetail"
                api="VehicleTaskDaoApi"
                @initSchemaOver="initSchemaOver"
                >
      </DAOTable>    

# js代码
      # DAOTable结构初始化完成后的回调
      initSchemaOver() {
        var tableDetail = this.$refs.tableDetail;//获取DAOTable的实例
        tableDetail.setFilters("字段名", "字段值");//设置过滤器
        tableDetail.btnSearch_Click();//查询数据
      },

自定义表格操作按钮

默认的操作按钮为新增和编辑

输入图片说明

根据业务需求添加自定义按钮

输入图片说明

       <DAOTable
                  style="position:relative;height:100%"
                  ref="table"
                  api="TerminalInfoApi"
                  :btnCreateVisible="isCreate"
                  :btnDeleteVisible="isDelete"
                  :btnExportVisible="isExport"
                  :btns="tableBtns"     #自定义按钮名称数组
                  @btnclick="btnclick"  #自定义按钮的触发事件
        >
        </DAOTable>

  #tableBtns: ["查看详情", "取消", "恢复"],
  btnclick(btn,data) {
        #btn:触发的按钮名称
        #data: 按钮操作的行数据
        if (btn == "查看详情") {
          this.dialogVisible = true;
        }
  },

自定义新增和编辑页面

默认新增页面

输入图片说明

自定义页面
 <DAOTable ref="table"
                api="http://127.0.0.1:8900/VehicleLineApi"
                :btnCreateVisible="true"
                :btnEditVisible="true"
                :btnDeleteVisible="true"
                >
        <template>
            这是插槽,进行内容分发,可在这里根据业务需求进行自定义新增和编辑页面。
        </template>
 </DAOTable>
效果图

输入图片说明

  1、在template里面可以插入任何代码,如文本、标签、组件。但需要注意的是,
    template里的数据作用域不包括DAOTabel里的数据,它只能访问当前组件的数据作用域。
    所以编辑页面的所有数据都在当前组件内定义和修改,提交时才修改DAOTable内部的数据。

  2、自定义页面时,不包括确认和取消按钮,组件内部已经定义了该按钮,
    当需要得到触发事件来执行自定义代码片段时,如下使用

    当前触发的事件类型可通过mes的值进行判断,包括:
        1、close :对话框关闭事件类型
        2、edit :编辑按钮触发的事件
        3、create :新建按钮触发的事件
        4、confirm:点击提交按钮触发的事件
    根据不同的事件类型,自定义不同事件触发是需要执行的代码片段,
    在@btn="函数名"中的函数中定义,如下:
#通过添加@btn="handel_btn"
<DAOTable ref="table"
                api="http://127.0.0.1:8900/VehicleLineApi"
                :btnCreateVisible="true"
                :btnEditVisible="true"
                :btnDeleteVisible="true"
                @btn="handel_btn">
</DAOTable>

#handel_btn为外部触发的函数,有两个参数
handel_btn(mes,data) {
    # mes返回事件类型 如 close edit create confirm,点击功能按钮将返回相应的事件名称
    # data是只有mes==edit的情况下才有数据,其他为undefined,
    # 通过不同的事件类型,进行不同的操作
  console.log(mes);
},
          
  3、自定义新增页面时,必须将外部的数据传入组件内部,否则将无法把数据提交到服务器。

  4、如何将数据传入内部呢?
     DAOTable组件将提供一个editFields数据接口,该数据类型为Object,
     该对象包含了表格中每个字段的数据信息,只需在提交按钮触发时(即mes==confirm的条件下)
     将自定义新增和编辑页面中的字段数据,对应修改到editFields中每个字段的val去。
     自定义页面时,可以从editFields中得到字段信息,

  5、如何取到editFields这个数据? this.$refs.table.editFields;通过$refs可以获取到该数据
      当自定义页面时,需要设置组件的ref
  6、数据校验时,可以阻止数据提交,通过设置 this.$refs.table.isConfirm=false,,默认情况为true
    代码示例如下
  let table = this.$refs.table;
  if (!this.componentData.Name)
     {
            this.$message.error("线路名称不能为空");
            #这里将阻止DAOTable向服务器提交数据
            table.isConfirm = false;
            return;
     }
    #校验通过后将数据修改到editFields中去
    table.editFields.Enterprise.val = this.componentData.Enterprise;
    table.editFields.Name.val = this.componentData.Name;
    table.editFields.Stations.val = this.componentData.Stations; 
               

自定义输入框组件

由于涉及到业务,默认的新增和查询界面中的input框已经不能满足需求,
需要通过自定义组件替换DAOTable中的input框,
这里就涉及到了currentView的控制。
mounted(){
//设置方式
 this.$refs.table.currentView=“组件名”;
//需要注意的是这里的组件必须注册为全局组件
//组件可根据业务需求进行自定义
}
自定义组件的注意事项:DAOTable会给组件传递field值,并且v-model了field.val,
所有在定义时,需要接收和绑定DAOTable数据  
代码如下
    //html
    <span>{{val}}</span>
    <el-button type="primary" @click="setValue">点击</el-button>
    //js
   data() {
      return {
        val:this.value;//value为DAOTable传递的初始值
      }
    },

    props: {
      //DAOTabel传递的值
      field: { type: Object, required: true },//字段信息
      value: {},
    },
  model: {
      prop: "value",//取到的值,即DAOTable传递的值
      event:"change",//触发事件,将数据绑定到DAOTable
    },
    methods:{
        //要把数据绑定到DAOTable时,需要通过触发事件this.$emit("change","需要修改的值")
        setValue(){
            this.val="测试002";
            this.$emit("change",this.val);
        }
    }  
    

组件样式重置

<DAOTable ref="table"
                api="http://127.0.0.1:8900/VehicleLineApi"
                :btnCreateVisible="true"
                :btnEditVisible="true"
                :btnDeleteVisible="true"
                dlgWidth="1000px"
                >

dlgWidth:该属性是设置新建、编辑弹出框的宽度,默认情况是父元素的80%,当自定义页面时,可根据实际情况,外部进行重置。