公司6:JrVue重用布局
JrVue是我们基于element重新封装的一套组件库;
为了提高开发效率, 方便对代码的统一管理和维护,
我们提供了一些统一的页面布局, 以及项目常用的中小型模块
我在master新拉一个分支JrVue,来更新JrVue样式文件;
1、页面整体布局
关于页面整体布局, 我们直接借用了饿了么的布局组件<el-header>和<el-main>
相应的样式已经封装到JrVue中, 大家直接使用即可:
<el-header class="jr-layout">
...此为页面头部...通常左侧会放一个标题; 右侧是一个按钮组
</el-header>
<el-main class="jr-layout">
...此为页面主体部分...
</el-main>
栗子配图:
----------2018-11-17-六---------------start-
补充: 为了避免样式影响, 我在布局里添加了一个非整体布局的类名.inner-layout;
之前页面用<el-header><e-main>布局, 或者需要在页面内部使用<el-header><e-main>的, 可以添加该类
补充作废, 我们布局单加一个类名: jr-layout
----------2018-11-17-六---------------end-
2、页面头部内容
页面头部我们采用饿了么分栏间隔模式, 分左右两栏:
左侧栏el-col必写, 里面el-button按需添加;
右侧栏el-col按需添加;
<el-header>
<el-row :gutter="10">
<el-col :span="12">
<el-button v-if="'是否显示返回按钮'" circle icon="jr-icon-back"></el-button>
<strong>页面标题</strong>
</el-col>
<el-col :span="12" style="text-align:right" v-if="'是否显示取消确认按钮'">
<el-button size="small" border-btn>取消</el-button>
<el-button size="small" type="primary">确定</el-button>
</el-col>
</el-row>
</el-header>
栗子配图:
接下来我们看页面主体部分常用模块:
3、页面搜索栏
搜索栏这一行样式, 参考配图, 我们做了2:1:1分栏;
代码斜体部分为el-icon-group写法(即配图右侧的小图标样式), 我在JrVue主题定制做了更新, 再此不再赘述;
<el-row :gutter="10">
<el-col :span="12">
<el-input size="small" placeholder="请输入机构名称" prefix-icon="el-icon-search"></el-input>
</el-col>
<el-col :span="6">
<el-button @click="search" type="primary" size="small">搜索</el-button>
</el-col>
<el-col :span="6" style="text-align: right">
<span class="el-icon-group">
<el-tooltip class="item" effect="dark" content="添加" placement="bottom">
<i class="jr-icon-plus" @click="startAdd" ></i>
</el-tooltip>
<span></span>
<el-tooltip class="item" effect="dark" content="删除" placement="bottom">
<i class="jr-icon-delete" @click="deleteAll"></i>
</el-tooltip>
</span>
</el-col>
</el-row>
例子配图:
4、页面筛选栏
配图第一行代码:
<el-row>
<el-col :xs="24" :sm="24">
<el-checkbox-group v-model="types" :xs="24" :sm="12" @change="searchByTypes">
<strong>机构类型</strong>
<el-checkbox-button v-for="orgType in orgTypes" :label="orgType.item" :key="orgType.item">{{orgType.item}}</el-checkbox-button>
</el-checkbox-group>
</el-col>
</el-row>
配图第二行代码(仅仅比第一行多一个类名border):
<el-row>
<el-col :xs="24" :sm="24">
<el-checkbox-group v-model="types" :xs="24" :sm="12" @change="searchByTypes" class="border">
<strong>机构类型</strong>
<el-checkbox-button v-for="orgType in orgTypes" :label="orgType.item" :key="orgType.item">{{orgType.item}}</el-checkbox-button>
</el-checkbox-group>
</el-col>
</el-row>
配图第三行代码:
<el-row>
<el-col :xs="24" :sm="24">
<el-checkbox-group class="border">...</el-checkbox-group>
<el-checkbox-group class="border">...</el-checkbox-group>
<el-checkbox-group class="border">...</el-checkbox-group>
</el-col>
</el-row>
配图第四行代码略;
栗子配图:
该筛选样式虽然简单, 但是在筛选项太多时, 折行样式会有问题;
如果必要, 在下一版我们会出一个兼容折行的方案...
title all [groups]
-------2018-11-21---新一版在内部封装了该样式, 代码内容不变, 解决了以上问题-----start---end-
-------2018-12-07--------start-
这一版本我们添加了多行筛选的样式布局:
该布局有两个<el-row>标签;
第一个el-row.jr-checkbox-group用来放置筛选栏内容
第二个el-row.controls-row用来放置控制按钮
通过点击筛选按钮添加类.show-two-line来实现高度切换
代码栗子如下:
<el-row style="margin-top: 20px" class="jr-checkbox-group" :class="showSearchFlag ? '' : 'show-two-line'">
<el-col :xs="24" :sm="24" :md="24" :lg="12"> <!--:lg表示大屏时分两行显示, 小屏时单行显示-->
<el-checkbox-group v-model="" class="border">
<strong>{{'label'}}</strong><el-checkbox-button>...</el-checkbox-button>
</el-checkbox-group>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="12">
<el-checkbox-group v-model="" class="border">
<strong>{{'label'}}</strong><el-checkbox-button>...</el-checkbox-button>
</el-checkbox-group>
</el-col>
<el-col>
<el-checkbox-group v-model="" class="border">
<strong>{{'label'}}</strong><el-checkbox-button>...</el-checkbox-button>
</el-checkbox-group>
</el-col>
</el-row>
<el-row class="controls-row">
<el-col>
<el-button size="small" type="text" @click="clearInput" class="border">{{$t('clear')}}</el-button>
<el-button
size="small"
type="text"
@click="showSearchFlag = !showSearchFlag"
class="border"
>{{showSearchFlag === false ? $t('advancedScreening') : $t('lowLevelScreening')}}</el-button>
</el-col>
</el-row>
栗子配图1. 初始状态:
栗子配图2. 展开状态:
-------2018-12-07-----end-
5、tab标签页
标签页我们直接采用饿了么组件, 直接上码:
tab标签页1
这个第三方机构编辑页面的tab子页的栗子:
1.斜体span标签内容是右侧icon代码; 我们通过简单的一行v-if="status === 'edit' && curTabIndex === '1'"实现添加按钮只在联系人tab页显示:
2.其中status === 'edit' 表示只在编辑页面渲染;
3.自定义变量curTabIndex === '1'配合@tab-click="handleClick"实现只在联系人tab页显示:
<span class="el-icon-group" v-if="status === 'edit' && curTabIndex === '1'">
<el-tooltip class="item" effect="dark" content="添加" placement="bottom">
<i class="el-icon-plus" @click="changeTure" ></i>
</el-tooltip>
</span>
<el-tabs v-if="status === 'edit'" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="first">
<el-form>...</el-form>
</el-tab-pane>
<el-tab-pane :label="contactName" name="second">
<jr-dynamic-query-table></jr-dynamic-query-table>
</el-tab-pane>
</el-tabs>
栗子配图:
注: table里面的按钮, size用'mini', 页面的按钮size用'small'
栗子:
<el-button
type="primary"
size="mini"
onClick={e => this.handleApproval(row)}
>'审批</el-button>
tab标签页2
.jr-tab-box盒子里套了.jr-tab-header 和 .jr-tab-main
.jr-tab-header里面用的是饿了么radio组件
栗子:
<div class="jr-tab-box">
<div class="jr-tab-header">
<el-radio-group v-model="tabPosition" size="mini" @change="changeJrTabs">
<el-radio-button label="left">基本情况</el-radio-button>
<el-radio-button label="right">投资情况</el-radio-button>
</el-radio-group>
</div>
<div class="jr-tab-main">
...content
</div>
</div>
栗子配图:
6、久蓉icon
7、表单页面流式布局
栗子:
<el-form>
<el-row :gutter="20">
<el-col :xs="24" :sm="12" :md="8" :lg="6">
<el-form-item>...</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="6">
<el-form-item>...</el-form-item>
</el-col>
</el-row>
</el-form>
栗子配图:
8、table
table右侧操作的icon代码:
栗子1-1:
中间<i></i>默认显示一个竖杠分隔符(占10像素宽,可叠加)
<span>
<i class="jr-icon-edit" onClick={e => this.handleEdit(row)}></i>
<i></i>
<i class="jr-icon-delete" onClick={e => this.handleDelete(row)}></i>
</span>
栗子1-1配图:
8、table高度/弹窗/上传组件
上传组件
栗子:
上传组件首先需要引入"component/file/jr-upload-file"
<el-row>
<el-col :xs="24">
<p>{{$t('fields.scanFiles')}}</p>
<jr-upload-file
:value="currentEntity.agencyAppendixs"
@change="val => input('agencyAppendixs', val)"
></jr-upload-file>
</el-col>
</el-row>
栗子配图:
下一步我们会优先整理弹窗样式...
@------------------------------
开发工程: staice-view;
测试分支: mfront 7.1theme
栗子分支: mfront->第三方机构
ziChin
tim
@-------------------------------
公司6:JrVue重用布局的更多相关文章
- 使用include重用布局
尽管Android 支持各种小部件,来提供小且可以重用的交互元素,你可能还需要更大的,要求一个专门布局的重用组件.为了高效的重用整个布局,你能使用和标签在当前的布局中嵌入别的布局. 重用布局功能特别强 ...
- 布局重用 include merge ViewStub
在布局优化中,Androi的官方提到了这三种布局<include />.<merge />.<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一 ...
- 浅谈Android样式开发之布局优化
引言 今天我们来谈一下Android中布局优化常用的一些手段.官方给出了3种优化方案,分别是</include>.</viewstub>.</merge>标签,下面 ...
- UI布局
1,初始化控件一般在onCreate()中完成,由于构造器中尚未完成控件加载,不能在其内初始化控件. 2,Activity子类必须含有无参构造.Intent.startActivity()方法调用的是 ...
- 中国VR公司的详尽名单
中国VR公司的详尽名单 <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...
- Android的布局优化之include、merge 、viewstub
以前在写布局的时候总是喜欢用自己熟悉的方式去写,从来也没有想过优化怎么的,后来又一次在上班的时候老大拿着我写的一个页面说我这个不行.我说这不是和设计图上的一模一样的么?怎么就不行了?然后他就跟我说了一 ...
- Android 布局详解
Android 布局详解 1.重用布局 当一个布局文件被多处使用时,最好<include>标签来重用布局. 例如:workspace_screen.xml的布局文件,在另一个布局文件中被重 ...
- Android最佳性能实践(四)——布局优化技巧
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527 在前面几篇文章其中.我们学习了怎样通过合理管理内存,以及高性能编码技 ...
- Android布局性能优化—从源码角度看ViewStub延迟加载技术
在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码 ...
随机推荐
- HTML5调用传感器的资料汇总
都可以调用:devicetemperature(温度).devicepressure(压力).devicehumidity(湿度).devicelight(光).devicenoise(声音).dev ...
- ELK pipeline
https://www.felayman.com/articles/2017/11/24/1511527532643.html?utm_medium=hao.caibaojian.com&ut ...
- cogs——2419. [HZOI 2016]公路修建2
2419. [HZOI 2016]公路修建2 ★☆ 输入文件:hzoi_road2.in 输出文件:hzoi_road2.out 简单对比时间限制:1 s 内存限制:128 MB [题 ...
- 何为幻读?MySQL又是如何解决幻读的?
一.什么是幻读 在一次事务里面,多次查询之后,查询的结果集的个数不一致的情况叫做幻读.而多出来或者少的哪一行被叫做 幻行 二.为什么要解决幻读 在高并发数据库系统中,需要保证事务与事务之间的隔离性,还 ...
- JAVA配置--JDK环境变量配置
环境变量是整台电脑的全局变量,(这台电脑上)任何程序都可以读取这个变量. 如果您安装好jdk,但环境变量配置让你感到有一点模糊的话,那么请您看一下这篇,希望对您有帮助 根据打开电脑的属性(R),出现 ...
- MySQL使用教程收集(语法教程/命令教程)
说明:现在市面上的教程除了基本语法外,都基本是五花八门的,最权威且最全面的解释应该上官网去查看. https://www.tutorialspoint.com/mysql/index.htm http ...
- python: filter, map, reduce, lambda
filter built-in function filter(f,sequence) filter can apply the function f to each element of seque ...
- C# 图片识别(支持21种语言)转
来自:http://www.cnblogs.com/stone_w/archive/2011/10/08/2202397.html 图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇 ...
- AE After Effect 渲染如何输出设置
各种输出设置值的对比情况. Microsoft Video1压缩方法情况(该模式下无法采用RGB+Alpha): 一 深度为"数千种颜色",缩放为1280×720(HDV/HDTV ...
- gdb 调试利器
1. gdb 调试利器 GDB是一个由GNU开源组织公布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具.对于一名Linux下工作的c++程序猿,gdb是不可缺少的工具: 1 ...