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重用布局的更多相关文章

  1. 使用include重用布局

    尽管Android 支持各种小部件,来提供小且可以重用的交互元素,你可能还需要更大的,要求一个专门布局的重用组件.为了高效的重用整个布局,你能使用和标签在当前的布局中嵌入别的布局. 重用布局功能特别强 ...

  2. 布局重用 include merge ViewStub

    在布局优化中,Androi的官方提到了这三种布局<include />.<merge />.<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一 ...

  3. 浅谈Android样式开发之布局优化

    引言 今天我们来谈一下Android中布局优化常用的一些手段.官方给出了3种优化方案,分别是</include>.</viewstub>.</merge>标签,下面 ...

  4. UI布局

    1,初始化控件一般在onCreate()中完成,由于构造器中尚未完成控件加载,不能在其内初始化控件. 2,Activity子类必须含有无参构造.Intent.startActivity()方法调用的是 ...

  5. 中国VR公司的详尽名单

    中国VR公司的详尽名单   <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...

  6. Android的布局优化之include、merge 、viewstub

    以前在写布局的时候总是喜欢用自己熟悉的方式去写,从来也没有想过优化怎么的,后来又一次在上班的时候老大拿着我写的一个页面说我这个不行.我说这不是和设计图上的一模一样的么?怎么就不行了?然后他就跟我说了一 ...

  7. Android 布局详解

    Android 布局详解 1.重用布局 当一个布局文件被多处使用时,最好<include>标签来重用布局. 例如:workspace_screen.xml的布局文件,在另一个布局文件中被重 ...

  8. Android最佳性能实践(四)——布局优化技巧

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527 在前面几篇文章其中.我们学习了怎样通过合理管理内存,以及高性能编码技 ...

  9. Android布局性能优化—从源码角度看ViewStub延迟加载技术

    在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码 ...

随机推荐

  1. NYOJ-768移位密码,最简单的代替密码;

    移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 ->   Link   <- 还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊 ...

  2. swagger & api & swagger ui

    swagger & api swagger ui # run server $ swagger project start api-app # call api $ curl http://1 ...

  3. 2015山东信息学夏令营 Day4T3 生产

    2015山东信息学夏令营 Day4T3 生产 [题目描述] 工厂为了生产一种复杂的产品,给各个生产部门制定了详细的生产计划.那么,就经常会有生产部门要把产品送到另一个生产部门作为原料.这是一个注重产品 ...

  4. 从零开始写STL—栈和队列

    从零开始写STL-栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决:主要解决在软件系统中,常常要将 ...

  5. 洛谷 P1166 打保龄球

    P1166 打保龄球 题目描述 打保龄球是用一个滚球去打击十个站立的柱,将柱击倒.一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分.一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关, ...

  6. UVa 340 Master-Mind Hints(猜数字游戏的提示)

    题意  猜数字游戏  统计猜的数字有多少个数字位置正确  有多少个数字在答案中出现可是位置不对  每一个字符仅仅能匹配一次 直接匹配每位数 #include<cstdio> #includ ...

  7. 2011 ACM-ICPC 成都赛区A题 Alice and Bob (博弈动规)

    题目大意: 有K堆石子,每堆有Ki个.两人的操作能够是:             1 从某一堆拿走一个 假设该堆在此之后没有石子了.就消失             2 合并两个堆        求是否 ...

  8. UML中的四种关系总结

    UML中的关系主要包含四种:关联关系.依赖关系.泛化关系.实现关系.当中关联关系还包含聚合关系和组合关系. 1. 关联关系(Association) 关联关系式一种结构化的关系,是指一种对象和还有一种 ...

  9. WebSocket服务端

    http://blog.csdn.net/qq_20282263/article/details/54310737 C# 实现WebSocket服务端 原创 2017年01月10日 09:22:50 ...

  10. 在Android程序中使用已有的SQLite数据库

    已经将这篇文章迁移至 Code问答,你也能够到这里查看这篇文章,请多多关注我的新技术博客CodeWenDa.com 在中文搜索中,没有找到一篇比較好的关于怎样在Android应用中使用自己事先创建好的 ...