Crud自定义

改写组件区域 #

自定义列显示 #

自定义列

  • 比如对于指定"销售额"(字段名sales)列如果数字大于100显示红色
<!--自定义表格列-->
{% block body_table_column %}
<span v-else-if="item==='sales'" :style="scope.row[item]>100?'color:red':''">{[ scope.row[item]]}</span>
{% endblock %}
  • 比如显示将字段"进度"(rate)显示为进度条
{% block body_table_column %}
<el-progress v-else-if="item==='rate'" :percentage="scope.row[item]"></el-progress>
{% endblock %}
  • 比如当大于0时显示上箭头,小于0显示下箭头
<!--样式区,可以通过样式显示不同图标颜色-->
.red{color:red}
.green{color:green}
<!--模板区-->
<span v-else-if="item==='sales'"><i class="scope.row[item]>0?'el-icon-top red':'el-icon-bottom green'"></i>{[ Math.abs(scope.row[item]) ]}</span>

注意列名需使用实际字段名而非显示名

多级表头 #

多级表头

<!--样式区定义表头边框-->
 .el-table--border th.el-table__cell,.el-table__fixed-right-patch{border:0.5px solid;)
<!--模板区改写表头-->
{% block body_table_columns %}
<el-table-column prop="date" label="日期" width="150"></el-table-column>
<el-table-column label="配送信息">
    <el-table-column prop="name" label="姓名"></el-table-column>
    <el-table-column label="地址">
        <el-table-column prop="province" label="省份"></el-table-column>
        <el-table-column prop="city" label="市区"></el-table-column>
    </el-table-column>
</el-table-column>
{% endblock %}

自定义查看页为表格 #

  • detail绑定的点击查看时的数据
<!--自定义查看页-->
{% block dialog_card %}
<el-dialog  :visible.sync="dialogTableVisible"  :width="dialogWidth">
    <el-table :data="detail" style="width: 100%" size="mini">
      <el-table-column prop="date" label="日期"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
    </el-table>
</el-dialog>
{% endblock %}

其它 #

<!--改写查询区域-->
{% block body_search %}
<div class="search_base_div"  v-if="searchHead" ><div class="search_div"><div style="display:flex;" v-if="startRender">{% include 'echart/part_search.html' %}</div></div></div>
{% endblock %}

<!--过滤区前端组件-->
{% block body_filter %}
<template v-if="!searchHead">{% include 'echart/part_search.html' %}</template>
{% endblock %}

<!--改写表格组件-->
{% block body_table %}{% endblock %}

<!--自定义表格操作-->
{% block body_table_column_button %}
 <el-button type="text" size="mini" icon="el-icon-edit" @click.stop="diyfun(scope.row)"></el-button>
{% endblock %}

<!--自定义新增/修改页面 弹出区-->
{% block dialog_modify %}
<el-dialog :title="title" :visible.sync="dialogFormVisible">
 <el-form ref="form" :model="form" :rules="rules">
    <el-form-item  prop="显示名" label="显示名" :label-width="formLabelWidth">
      <el-input v-model.trim="form.字段名" autocomplete="off" ></el-input>
    </el-form-item>
 </el-form>
</el-dialog>
{% endblock %}

<!--自定义新增/修改页面 界面区-->
{% block body_addHead %}{% endblock %}

<!--自定义审批修改页-->
{% block dialog_request %}
<el-dialog  :visible.sync="dialogFormVisible_r"></el-dialog>
{% endblock %}

自定义区域 #

例如增加显示指标卡 #

指标卡

  • 模板改写
{% block body_extHead %}
<div class="search_base_div"><div class="search_div"><div style="display:flex;" v-if="startRender">
  <el-statistic group-separator="," :precision="2" :value=diyVars.d1.value :title=diyVars.d1.title ></el-statistic>
  <el-statistic title="男女比"><template slot="formatter">456/2</template></el-statistic>
  <el-statistic group-separator="," :precision="2" decimal-separator="." :value="456677" title="增长人数">
        <template slot="prefix"><i class="el-icon-s-flag" style="color: red"></i></template>
        <template slot="suffix"><i class="el-icon-s-flag" style="color: blue"></i></template>
  </el-statistic>
</div></div></div>
{% endblock %}
  • js区域对自定义变量赋值
vapp.diyVars.d1={value:12345, title:'指标A'}
  • 你也可以从数据集获取数数据,新建一个懒加载数据集,如编号4
select '指标A' as title, 12345 as value from xxx;
select '指标B' as title, 1245 as value from xxx
  • js区域赋值
ds_refresh(4);
vapp.diyVars.d1=ds_createMap_all(data4.df0);
vapp.diyVars.d2=ds_createMap_all(data4.df1);

自定义校验规则 #

vapp.rules = {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { min: 3, max: 15, message: '用户名长度在3到15个字符之间', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '请输入密码', trigger: 'blur' },
          { min: 6, message: '密码长度不能少于6个字符', trigger: 'blur' }
        ],
        age: [
          { required: true, message: '请输入年龄', trigger: 'blur' },
          { type: 'number', min: 1, max: 100, message: '年龄必须在1到100之间', trigger: 'blur' }
        ],
        email: [
          { message: '请输入邮箱地址', trigger: 'blur' },
          { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
        ],
        qty: [  
         {
             required: true,
             validator: (rule, value, callback) => {
                if (value === '') {
                callback(new Error('请输入数量'));
                } else if (isNaN(value)) {
                callback(new Error('输入内容需为数字格式'));
                } else {
                callback();
                }
            },
            trigger: 'blur'
          }
         ],
     };

自定义函数 #

//表格行格式,一般用于hightlight行数据
vapp.tableRowClassName=({row, rowIndex})=>{
    if (row.字段名 > 100) {
         return 'warning-row';
    }
    return '';
}
//表格行点击动作, 用于点击响应
vapp.handleRowClickChange=(row)=>{}
//数据导出动作
vapp.daochu=()=>{}
//自定义,一般用于自定义的操作
vapp.diyFun=(param)=>{}
//自定义变量
vapp.diyVars={}
//刷新表格
vapp.refreshTable();
//刷新过滤
vapp.data_filter();

转化为组件 #

在模板中将 vapp.smtdrag=true; 并取消echarts引用的注释, 就可以把CRUD变成一个可拖拽的组件

自定义配置 #

你可以定义来指定那些配置不使用页面配置而采用个人定义,如: vapp.diyKeys=‘nameDict,optionDict’;