流程表单页面布局
流程表单由三部分内容构成,头部,正文部分, 尾部信息。
1. 区块
标准的代码块由三部分构成: 区块, 标题, 标签,控件.
代码:
<!--人力资源部审批(需求人数在预算内)/HR Dept.(In Budget):-->
<fm-group-head title="{{ form.$pageLang.inBudget}}"></fm-group-head>
<div class="row">
<div class="form-group">
<div class="col-xs-12">
<!--申请类型-->
<span class="col-xs-2 control-label required" ng-bind="form.$pageLang.bugetType"></span>
<div class="col-xs-4">
<!--预算内外-->
<fm-select items="[{id:'1',text:'预算内/In Budget'},
{id:'2',text:'预算外/Over Budget'}]"
fm-model="1">
</div>
</div>
</div>
</div>
1.1 标题
效果图:

代码:
<!--标题-->
<fm-group-head title="{{ form.$pageLang.inBudget}}"></fm-group-head>
具体控件用法,fm-group-head控件用法, 效果如下
1.2 区块布局
页面布局采用的是Bootstrap的 栅格系统。
效果图:
代码:
<!--占用一整行-->
<div class="row">
<div class="form-group">
<div class="col-xs-12">
<!--控件或内容-->
</div>
</div>
</div>
<!--占用一半,分两列-->
<div class="row">
<div class="form-group">
<div class="col-xs-6">
<!--控件或内容-->
</div>
<div class="col-xs-6">
<!--控件或内容-->
</div>
</div>
</div>
<!--占用一半,分三列-->
<div class="row">
<div class="form-group">
<div class="col-xs-4">
<!--控件或内容-->
</div>
<div class="col-xs-4">
<!--控件或内容-->
</div>
<div class="col-xs-4">
<!--控件或内容-->
</div>
</div>
</div>
所有的内容均需要放至上述【<!--控件或内容-->】区域。
1.3 标签
通常页面布局左侧为标签,右侧为控件。标签上有时会有必填标识。
效果图:

代码:
<!--标签-->
<span class="col-xs-2 control-label required" ng-bind="form.$pageLang.bugetType"></span>
加带‘’*‘’标记,需要加 'required' 的样式。
1.4 控件
基本数值控件
- fm-text
- fm-textarea
- fm-number
- fm-datetime
数据源控件:
- fm-radiolist
- fm-checklist
- fm-select
- fm-data-select
2.明细表
2.1 自定义表格信息
有些特殊表,需要进行行合并列合并,根据需要自己画表格即可,如下图事例:
具体代码如下:
<div class="form-group">
<div class="row">
<div class="col-xs-12">
<table class="table table-bordered">
<tbody>
<tr>
<td rowspan="2" style="width:150px">分子公司审批:</td>
<td style="width:140px">分子公司人事专员:</td>
<td>
<fm-radiolist items="[{id:'1',text:'同意'},
{id:'2',text:'不同意'}]"
fm-model="1">
</td>
</tr>
<tr>
<td>分子公司总经理:</td>
<td>
<fm-radiolist items="[{id:'1',text:'同意'},
{id:'2',text:'不同意'}]"
fm-model="1">
</td>
</tr>
<tr>
<td rowspan="4">人力资源部审批:</td>
<td>人事科经理:</td>
<td>
<fm-radiolist items="[{id:'1',text:'同意'},
{id:'2',text:'不同意'}]"
fm-model="1">
</td>
</tr>
<tr>
<td>总部HR审核:</td>
<td>
<fm-radiolist items="[{id:'1',text:'同意'},
{id:'2',text:'不同意'}]"
fm-model="1">
</td>
</tr>
<tr ng-if="form.test2 == form.const.yes">
<td>薪酬福利科经理:</td>
<td>
<fm-radiolist items="[{id:'1',text:'同意'},
{id:'2',text:'不同意'}]"
fm-model="1">
</td>
</tr>
<tr>
<td>人力资源高级经理:</td>
<td>
<fm-radiolist dataitem="Common>YesOrNo"
fm-model="form.test2">
</td>
</tr>
<tr><td></td><td></td><td></td></tr>
</tbody>
</table>
</div>
</div>
</div>
列的宽度可以根据实际内容大小设置【 style='width:140px'】
2.2 二维表格
效果图:
代码:
<!--礼品费报销列表-->
<fm-Group-Head title="{{ 'ExpenseReimbursementList' |translate}}"></fm-Group-Head>
<div class="row">
<div class="col-xs-12">
<table class="table table-bordered table-detail">
<thead>
<tr>
<th class="checktd"></th>
<th style="width:150px;">
<span class="control-label required" ng-bind="form.$pageLang.CostDate"></span> <!--费用发生日期-->
</th>
<th>
<span class="control-label required" ng-bind="form.$pageLang.Description"></span> <!--描述-->
</th>
<th style="width:150px;">
<span class="control-label required" ng-bind="form.$pageLang.AmountOfMoney"></span> <!--金额-->
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in form.admin06grc" ng-class="{'active': item.checked}" detail-name="{{ 'ExpenseReimbursementList' |translate}}">
<td class="checktd">
<input type="checkbox"
ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2) "
class="uniform" ng-model="item.checked" />
</td>
<td style="width:150px;">
<fm-datetime field-name="{{form.$pageLang.CostDate}}"
required
class="input-sm"
date
state="{{form.$pageRight.StartNode}}"
fm-model="item.costDate"></fm-datetime>
</td>
<td>
<fm-text field-name="{{form.$pageLang.Description}}"
required
class="input-sm"
state="{{form.$pageRight.StartNode}}"
fm-model="item.description"></fm-text>
</td>
<td style="width:150px;">
<fm-number field-name="{{form.$pageLang.AmountOfMoney}}"
required
class="input-sm"
cny
state="{{form.$pageRight.StartNode}}"
fm-model="item.money"
callback-func="form.sum(data)"></fm-number>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="99" style="text-align: right;">
<input ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2) " type="button" class="btn btn-sm btn-info" ng-click="form.admin06grc.push({})" value="{{ 'Add' |translate}}" />
<input ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2) " type="button" class="btn btn-sm btn-danger" ng-click="form.delete()" value="{{ 'Delete' |translate}}" />
</td>
</tr>
</tfoot>
</table>
<div class="col-xs-12">
<span class="control-label col-xs-9">合计金额(人民币) </span>
<div class="col-xs-3">
<fm-number cny class="bold"
fm-model="form.admin06.totalAmount"
readonly></fm-number>
</div>
</div>
<div class="col-xs-12">
<span class="control-label col-xs-9">会计记账金额(人民币) </span>
<div class="col-xs-3">
<fm-number cny class="bold"
fm-disabled="base.pageState != 2 || form.$pageRight.IsAccounting != 'normal'"
fm-normal="base.pageState == 2 && form.$pageRight.IsAccounting == 'normal'"
required
max-value="{{form.admin06.totalAmount}}"
min-value="0"
field-name="{{form.$pageLang.AccountTotalAmt}}"
fm-model="form.admin06.totalAcountAmount"></fm-number>
</div>
</div>
</div>
</div>
2.3 卡片式表格
效果图:
代码:
<!--采购定点信息-->
<fm-group-head title="{{form.$pageLang.PurchaseFix}}"></fm-group-head>
<div class="row">
<div class="col-xs-12">
<div class="col-xs-12">
<span class="tip-text">开口合同不走布点审批流程,直接走定点审批流程</span>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="fm-detailinfo" ng-class="{'active':i.checked}" ng-repeat="m in form.pur02supplier | filter:{ type:0 }" detail-name="供应商">
<div class="row header" style="background-color: #FFC107">
<div class="col-xs-12">
<input class="uniform"
ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2)"
type="checkbox" ng-model="m.checked" />
<strong class="input-sm">{{form.$pageLang.Supplier}}{{$index + 1}}</strong>
</div>
</div>
<div class="content">
<div class="row">
<div class="col-xs-4 cell">
<!--供应商-->
<span class="col-xs-4 control-label required" ng-bind="form.$pageLang.Supplier"></span>
<div class="col-xs-8">
<fm-datatext-select class="input-sm"
state="{{form.$pageRight.StartNode}}"
field-name="{{form.$pageLang.Supplier}}"
view="GetAllSuppliers"
filter="{areaCode: base.areaCode}"
required
placeholder="(如无法选到,可手输)"
fm-text-model="m.suppliers"
select-item="form.preSelectedSuppliers[$index]"
fm-blur="form.addNewPms(selectItem)"
fm-model="m.supplier"></fm-datatext-select>
</div>
</div>
<div class="col-xs-4 cell">
<!--询价金额(不含税)-->
<span class="col-xs-6 control-label" ng-bind="form.$pageLang.Xamount"></span>
<div class="col-xs-6">
<fm-number class="input-sm"
field-name="{{form.$pageLang.Remarks}}"
fm-model="m.totalAmount"></fm-number>
</div>
</div>
<div class="col-xs-4 cell">
<!--成交金额(不含税)-->
<span class="col-xs-6 control-label" ng-bind="form.$pageLang.Camount"></span>
<div class="col-xs-6">
<fm-number class="input-sm"
field-name="{{form.$pageLang.Remarks}}"
readonly
cny
fm-model="m.camount"></fm-number>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-4 cell">
<!--税率-->
<span class="col-xs-4 control-label required" ng-bind="form.$pageLang.Slv"></span>
<div class="col-xs-8">
<fm-select dataitem="PurchaseRelated>ContractRate"
state="{{form.$pageRight.StartNode}}"
required
callback-func="form.Invoicesum()"
field-name="{{form.$pageLang.ContractRate}}"
fm-model="m.slv"
value-member="value"
fm-code="form.$state.slv"></fm-select>
</div>
</div>
<div class="col-xs-4 cell">
<!--税金-->
<span class="col-xs-6 control-label" ng-bind="form.$pageLang.Smoney"></span>
<div class="col-xs-6">
<fm-number class="input-sm"
field-name="{{form.$pageLang.Remarks}}"
readonly
cny
fm-model="m.smoney"></fm-number>
</div>
</div>
<div class="col-xs-4 cell">
<!--成交金额(含税)-->
<span class="col-xs-6 control-label" ng-bind="form.$pageLang.Camountx"></span>
<div class="col-xs-6">
<fm-number class="input-sm"
fm-blur="form.Invoicesum()"
field-name="{{form.$pageLang.Remarks}}"
fm-model="m.camountx"></fm-number>
</div>
</div>
<div class="row">
<div class="col-xs-4 cell">
<span class="col-xs-6 control-label" ng-bind="form.$pageLang.Fj"></span>
<div class="col-xs-6">
<fm-attachment class="print-hide" form-files="form.$attachments" link-id="0"
task-id='base.taskId'
node-id="base.nodeId"
draft-id="base.draftId"
fm-disabled="base.pageState != 1 && form.$pageRight.StartNode != 'normal' && form.$pageRight.FixPurchase != 'normal'"
fm-normal="base.pageState == 1 || form.$pageRight.StartNode == 'normal' || form.$pageRight.FixPurchase == 'normal'"
button-name="{{ 'UploadAttachment' |translate}}"></fm-attachment>
</div>
<div class="col-xs-6">
<fm-checklist fm-model="m.mark"
field-name="{{form.$pageLang.ApplicationRange}}"
callback-func="form.chooseSupplierCode(selectItem)"
items="[{id:'0',text:'启用此供应商'}]"></fm-checklist>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<!--<span class="tip-text">开口合同不走布点审批流程,直接走定点审批流程</span>-->
<div class="pull-right">
<input ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2)" type="button" class="btn btn-sm btn-info" ng-click="form.addSupplier(0)" value="新增供应商" />
<input ng-if="base.pageState==1 || (form.$pageRight.StartNode == 'normal' && base.pageState==2)" type="button" class="btn btn-sm btn-danger" ng-click="form.delete()" value="删除供应商" />
</div>
</div>
</div>
<div class="row">
<div style="text-align: right;">
<span class="col-xs-3 col-xs-offset-6 control-label">价税合计总额</span>
<div class="col-xs-3">
<fm-number class="input-sm bold"
cny
readonly
fm-model="form.pur02.totalAmount"></fm-number>
</div>
</div>
</div>