本文主要介紹如何在O2OA中進(jìn)行審批流程表單或者工作流表單設(shè)計(jì),O2OA主要采用拖拽可視化開(kāi)發(fā)的方式完成流程表單的設(shè)計(jì)和配置,不需要過(guò)多的代碼編寫,業(yè)務(wù)人員可以直接進(jìn)行修改操作。
在流程表單設(shè)計(jì)界面,可以在左邊的工具欄找到ElementUI組件。
將對(duì)應(yīng)的組件拖動(dòng)到表單設(shè)計(jì)區(qū)域就可以創(chuàng)建組件了。下面我們逐個(gè)介紹一下對(duì)應(yīng)的組件。
布局容器
創(chuàng)建布局容器
選擇常用布局,或在“布局代碼”中輸入相應(yīng)的HTML內(nèi)容,即可創(chuàng)建布局。
可參考ELementUI組件文檔:
Element - The world's most popular Vue UI framework
字段類型組件
字段類型的組件是指可存儲(chǔ)數(shù)據(jù)的組件,包括了:輸入框、自動(dòng)完成框、計(jì)數(shù)器、單選框、多選框、選擇器、級(jí)聯(lián)選擇器、開(kāi)關(guān)和滑塊。
字段類型的默認(rèn)值、校驗(yàn)、校驗(yàn)?zāi)_本、區(qū)段等基本屬性,都和基礎(chǔ)的字段類組件是一樣的,下面主要介紹每個(gè)組件的特有屬性。
輸入框
類似基礎(chǔ)組件的文本字段和多行文本。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性:
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
類型 |
type |
string |
text,textarea 和其他 原生 input 的 type 值 |
最大長(zhǎng)度 |
maxlength |
number |
|
字?jǐn)?shù)統(tǒng)計(jì) |
show-word-limit |
boolean |
是否顯示輸入字?jǐn)?shù)統(tǒng)計(jì),只在 type = "text" 或 type = "textarea" 時(shí)有效 |
可清空 |
clearable |
boolean |
|
顯示切換密碼圖標(biāo) |
show-password |
boolean |
是否顯示切換密碼圖標(biāo) |
尺寸 |
size |
string |
輸入框尺寸 |
多行文本行數(shù) |
rows |
number |
輸入框行數(shù),只對(duì) type="textarea" 有效 |
適應(yīng)高度 |
autosize |
boolean/object |
自適應(yīng)內(nèi)容高度,只對(duì) type="textarea" 有效,可傳入對(duì)象,如,{ minRows: 2, maxRows: 6 } |
改變大小 |
resize |
string |
控制是否能被用戶縮放 |
頭部圖標(biāo) |
prefix-icon |
string |
輸入框頭部圖標(biāo) |
尾部圖標(biāo) |
suffix-icon |
string |
輸入框尾部圖標(biāo) |
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
|
Vue Slots |
html |
組件可用的slot的內(nèi)容 |
樣例
下面設(shè)計(jì)一個(gè)樣例,來(lái)說(shuō)明一下Vue Data、Vue Methods、Vue Css和Vue Slots用法。
我們實(shí)現(xiàn)一個(gè)復(fù)合輸入框,在輸入框之前有一個(gè)下拉框,后面一個(gè)搜索按鈕,如下效果:
首先我們?cè)O(shè)計(jì)好其他容器、表格、操作條等組件,在單元格中拖入Elinput組件。如下圖:
1、在輸入框組件的Vue Slots屬性中添加以下代碼:
<el-select?v-model="select"?slot="prepend"?placeholder="請(qǐng)選擇"> <el-option?v-for="item?in?options" ??????:key="item.value" ??????:label="item.label" ??????:value="item.value"></el-option> </el-select> <el-button?slot="append"?icon="el-icon-search"?@click="doSearch"></el-button>
其中<el-select>的solt屬性“prepend”表示這是一個(gè)輸入框前置內(nèi)容,v-model指定下拉框值要綁定的數(shù)據(jù),此數(shù)據(jù)會(huì)自動(dòng)與業(yè)務(wù)數(shù)據(jù)綁定??梢栽谀_本中通過(guò)this.data.select訪問(wèn)到。注意:v-model指定的數(shù)據(jù)不能與表單上其他任何組件的id同名,也不能與當(dāng)前組件配置的json數(shù)據(jù)中的屬性key同名。(可以通過(guò)組件屬性框的“JSON”選項(xiàng)頁(yè)可以查看到當(dāng)前組件配置的完整json)
<el-option>中循環(huán)options,創(chuàng)建下拉框可選項(xiàng)。(稍后options將在Vue Data中創(chuàng)建它)
<el-button>中的solt屬性“append”表示這是一個(gè)輸入框后置內(nèi)容。
<el-button>中的@click屬性監(jiān)聽(tīng)click事件,并執(zhí)行doSearch方法。(稍后將在Vue Methods中創(chuàng)建doSearch方法)
2、然后在Vue Data中創(chuàng)建需要的對(duì)象。輸入以下代碼:
return?{ ????options:?[{ ????????value:?'選項(xiàng)1', ????????label:?'用戶' ????},?{ ????????value:?'選項(xiàng)2', ????????label:?'部門' ????},?{ ????????value:?'選項(xiàng)3', ????????label:?'公司' ????}] }
options用于選擇框的可選項(xiàng)。
3、在Vue Methods中創(chuàng)建需要的方法,輸入代碼如下:
return?{ ????doSearch:?function(){ ????????console.log(this.data.elinput); ?輸出輸入框中的值 ????}.bind(this) }
此處返回一個(gè)方法,在點(diǎn)擊按鈕時(shí)調(diào)用。
4、為了調(diào)整選擇框的寬恕,可以在Vue Css中輸入以下內(nèi)容:
??.el-select?.el-input?{ ????width:?130px; ??}
這樣,我們就實(shí)現(xiàn)了一個(gè)前有選擇框,后有按鈕的復(fù)合輸入框。數(shù)據(jù)都綁定到了this.data中。
自動(dòng)完成框
自動(dòng)完成框和輸入框類似,只是多了一個(gè)提供輸入建議的功能。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
可選值 |
fetch-suggestions |
輸入建議的可選項(xiàng),可提供列表和腳本 |
|
彈出位置 |
placement |
string |
菜單彈出位置 |
尺寸 |
size |
string |
輸入框尺寸 |
列表類名 |
popper-class |
string |
Autocomplete 下拉列表的類名 |
激活即列出輸入建議 |
trigger-on-focus |
boolean |
是否在輸入框 focus 時(shí)顯示建議列表 |
頭部圖標(biāo) |
prefix-icon |
string |
輸入框頭部圖標(biāo) |
尾部圖標(biāo) |
suffix-icon |
string |
輸入框尾部圖標(biāo) |
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
|
Vue Slots |
html |
組件可用的slot的內(nèi)容 |
主要說(shuō)明一下通過(guò)腳本提供可選建議列表。腳本返回一個(gè)方法,此方法接收兩個(gè)參數(shù)querystring和callback,querystring接收當(dāng)前輸入的數(shù)據(jù),當(dāng)輸入建議數(shù)據(jù) resolve 時(shí),通過(guò)調(diào)用 callback(data:[]) 來(lái)返回。如:
return?function(queryString,?callback){ ??var?list?=?[{"value":?"流程"},{"value":?"內(nèi)容管理"},{"value":?"服務(wù)管理"}]; ??var?returnList?=?list.filter(function(o){ ?? return?(o.value.indexOf(queryString)!==-1) ??}); ??callback(returnList); }
注意:這里function內(nèi)的this指向?yàn)楸韱谓M件的module,而不是Vue組件,你可以在腳本中使用this.vm訪問(wèn)Vue組件對(duì)現(xiàn)象。
計(jì)數(shù)器
僅允許輸入標(biāo)準(zhǔn)的數(shù)字值。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
最大值 |
max |
number |
設(shè)置計(jì)數(shù)器允許的最大值 |
最小值 |
min |
number |
設(shè)置計(jì)數(shù)器允許的最小值 |
步長(zhǎng) |
step |
number |
計(jì)數(shù)器步長(zhǎng) |
只允許輸入步長(zhǎng)的倍數(shù) |
step-strictly |
boolean |
是否只能輸入 step 的倍數(shù) |
數(shù)值精度 |
trigger-on-focus |
boolean |
是否在輸入框 focus 時(shí)顯示建議列表 |
尺寸 |
size |
string |
輸入框尺寸 |
按鈕位置 |
controls-position |
string |
控制按鈕位置 |
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
單選框和多選框
ElementUI參考文檔:Element - The world's most popular Vue UI framework
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
可選值 |
單選框和多選框的可選項(xiàng),可提供列表和腳本 可選項(xiàng)設(shè)置和基礎(chǔ)組件的單選框和多選框一樣。 |
||
按鈕模式 |
boolean |
是傳統(tǒng)單選模式還是按鈕模式 |
|
字體顏色 |
text-color |
string |
按鈕形式的 Radio 激活時(shí)的文本顏色 |
背景顏色 |
fill |
string |
按鈕形式的 Radio 激活時(shí)的填充色和邊框色 |
尺寸 |
size |
string |
輸入框尺寸 |
顯示邊框 |
border |
boolean |
是否顯示邊框 |
樣式和屬性 |
object |
附加在<el-radio-group>或<el-checkbox-group>上的樣式和屬性 |
|
組樣式和組屬性 |
object |
附加在<el-radio-group>或<el-checkbox-group>上的樣式和屬性 |
|
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
選擇器
就是下拉列表選擇框。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
可選項(xiàng)分組 |
boolean |
是否對(duì)可選項(xiàng)進(jìn)行分組,當(dāng)選擇“否”時(shí),可通過(guò)配置列表或腳本兩種方式提供可選項(xiàng);當(dāng)選擇“是”時(shí),只能通過(guò)腳本提供可選項(xiàng)。 |
|
可選項(xiàng) |
提供選擇框的可選項(xiàng)。 |
||
尺寸 |
size |
string |
輸入框尺寸 |
可清空 |
clearable |
boolean |
是否可以清空選項(xiàng) |
列表類名 |
popper-class |
string |
Select 下拉框的類名 |
是否多選 |
multiple |
boolean |
是否多選 |
合并Tags |
collapse-tags |
boolean |
多選時(shí)是否將選中值按文字的形式展示 |
最多可選數(shù) |
multiple-limit |
number |
多選時(shí)用戶最多可以選擇的項(xiàng)目數(shù),為 0 則不限制 |
允許搜索 |
filterable |
boolean |
是否可搜索 |
創(chuàng)建新條目 |
allow-create |
boolean |
是否允許用戶創(chuàng)建新條目,需配合 filterable 使用 |
無(wú)匹配文本 |
no-match-text |
string |
搜索條件無(wú)匹配時(shí)顯示的文字,也可以使用slot="empty"設(shè)置 |
無(wú)數(shù)據(jù)文本 |
no-data-text |
string |
選項(xiàng)為空時(shí)顯示的文字,也可以使用slot="empty"設(shè)置 |
自定義搜索方法 |
filter-method |
function |
自定義搜索方法,返回一個(gè)function(querystring){} ;querystring為當(dāng)前輸入值,在此方法中修改options的值。 |
遠(yuǎn)程搜索 |
remote |
boolean |
是否為遠(yuǎn)程搜索 |
加載中文本 |
loading-text |
string |
遠(yuǎn)程加載時(shí)顯示的文字 |
遠(yuǎn)程搜索方法 |
remote-method |
function |
遠(yuǎn)程搜索方法,返回一個(gè)function(querystring){} ;querystring為當(dāng)前輸入值,在此方法中修改options的值。 |
Select 樣式和屬性 |
object |
附加在<el-select>上的樣式和屬性 |
|
Option 樣式和屬性 |
object |
附加在<el-option>上的樣式和屬性 |
|
Group 樣式和屬性 |
object |
附加在<el-option-group>上的樣式和屬性 |
|
組樣式和組屬性 |
object |
附加在<el-radio-group>或<el-checkbox-group>上的樣式和屬性 |
|
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
|
Vue Slots |
html |
組件可用的slot的內(nèi)容 |
|
自定義選項(xiàng)模板 |
html |
自定義選項(xiàng)樣式的html |
可選項(xiàng)腳本和分組可選項(xiàng)腳本
可選項(xiàng)腳本返回一個(gè)數(shù)組或者一個(gè)resolve了可選值數(shù)組的Promise對(duì)象,用于列示可選項(xiàng)。下面是示例代碼:
//直接返回?cái)?shù)組,如需要禁用選擇項(xiàng),在元素中增加disabled:?true
return?[
????{
????????"label":?"公司",
????????"value":?"company"
????},
????{
????????"label":?"部門",
????????"value":?"department"
????},
????{
????????"label":?"用戶",
????????"value":?"person"
????}
]
//返回一個(gè)Promise
return?new?Promise(function?(resolve)?{
????var?options?=?[
????????{
????????????"label":?"公司",
????????????"value":?"company"
????????},
????????{
????????????"label":?"部門",
????????????"value":?"department"
????????},
????????{
????????????"label":?"用戶",
????????????"value":?"person"
????????}
????];
????window.setTimeout(function?()?{
????????resolve(options);
????},?1000)
});
當(dāng)可選項(xiàng)分組選擇“是”時(shí),可選擇腳本返回一個(gè)數(shù)組或者一個(gè)resolve了可選值數(shù)組的Promise對(duì)象,用于列示可選項(xiàng),在返回的可選擇組數(shù)中要增加分組信息,下面是示例代碼:
return?[{
????label:?'熱門城市',
????options:?[{
????????value:?'Shanghai',
????????label:?'上海'
????},?{
????????value:?'Beijing',
????????label:?'北京'
????}]
},?{
????label:?'城市名',
????options:?[{
????????value:?'Chengdu',
????????label:?'成都'
????},?{
????????value:?'Shenzhen',
????????label:?'深圳'
????},?{
????????value:?'Guangzhou',
????????label:?'廣州'
????},?{
????????value:?'Dalian',
????????label:?'大連'
????}]
}];
自定義搜索和遠(yuǎn)程搜索方法
自定義搜索和遠(yuǎn)程搜索方法,都是返回一個(gè)function(querystring){} ;querystring為當(dāng)前輸入值,在此方法中修改options的值。
自定義搜索方法只在“允許搜索”為“是”時(shí)生效,它會(huì)在輸入值發(fā)生變化時(shí)被調(diào)用。如下面的示例:
//返回一個(gè)方法,其中this.json.$options存儲(chǔ)的是配置的可選項(xiàng)
return?function?(querystring)?{
????this.json.options?=?this.json.$options.filter(function?(item)?{
????????return?(item.label.indexOf(querystring)?!=?-1);
????});
}
遠(yuǎn)程搜索方法和自定義搜索方法類似,“遠(yuǎn)程搜索”屬性必須選擇“是”才會(huì)生效。它會(huì)在輸入值發(fā)生變化時(shí)被調(diào)用,下面是示例代碼:
//返回一個(gè)方法,其中this.json.$options存儲(chǔ)的是配置的可選項(xiàng) return?function?(querystring)?{ ????this.json.loading?=?true; //設(shè)置組件為加載狀態(tài) ????window.setTimeout(function?()?{ ????????this.json.loading?=?false; //取消組件的加載狀態(tài) ????????this.json.options?=?this.json.$options.filter(function?(item)?{ ????????????return?(item.label.indexOf(querystring)?!=?-1); ????????}); ????}.bind(this),?2000); }
注意:這里function內(nèi)的this指向?yàn)楸韱谓M件的module,而不是Vue組件,你可以在腳本中使用this.vm訪問(wèn)Vue組件對(duì)現(xiàn)象。
自定義選擇模板
可以通過(guò)“自定義選項(xiàng)模板”來(lái)改變選擇項(xiàng)的樣式。下面是示例,在“自定義選項(xiàng)模板”中輸入以下HTML內(nèi)容
<span?style="float:?left">{{?item.label?}}</span> <span?style="float:?right;?color:?#8492a6;?font-size:?13px">{{?item.value?}}</span>
展現(xiàn)下過(guò)如下:
級(jí)聯(lián)選擇器
有層級(jí)關(guān)系的數(shù)據(jù),需要進(jìn)行選擇時(shí),可使用級(jí)聯(lián)選擇器。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
可選值 |
提供選擇框的可選項(xiàng)。返回一個(gè)可選值數(shù)組列表;或者一個(gè)resolve了可選值數(shù)組的Promise對(duì)象 |
||
尺寸 |
size |
string |
輸入框尺寸 |
可清空 |
clearable |
boolean |
是否可以清空選項(xiàng) |
列表類名 |
popper-class |
string |
Select 下拉框的類名 |
完整路徑: |
show-all-levels |
boolean |
輸入框中是否顯示選中值的完整路徑 |
分隔符: |
separator |
string |
選項(xiàng)分隔符 |
允許搜索 |
filterable |
boolean |
是否可搜索選項(xiàng) |
自定義搜索方法 |
filter-method |
function |
返回一個(gè)Function。自定義搜索邏輯,第一個(gè)參數(shù)是節(jié)點(diǎn)node,第二個(gè)參數(shù)是搜索關(guān)鍵詞keyword,通過(guò)返回布爾值表示是否命中 |
篩選之前 |
before-filter |
function |
返回一個(gè)Function。篩選之前的鉤子,參數(shù)為輸入的值,若返回 false 或者返回 Promise 且被 reject,則停止篩選 |
展開(kāi)方式 |
props.expandTrigger |
boolean |
次級(jí)菜單的展開(kāi)方式 |
是否多選 |
props.multiple |
boolean |
是否多選 |
父子節(jié)點(diǎn)不關(guān)聯(lián) |
props.checkStrictly |
boolean |
是否嚴(yán)格的遵守父子節(jié)點(diǎn)不互相關(guān)聯(lián) |
返回完整數(shù)組 |
props.emitPath |
boolean |
在選中節(jié)點(diǎn)改變時(shí),是否返回由該節(jié)點(diǎn)所在的各級(jí)菜單的值所組成的數(shù)組,若設(shè)置 false,則只返回該節(jié)點(diǎn)的值 |
動(dòng)態(tài)加載 |
props.lazy |
boolean |
是否動(dòng)態(tài)加載子節(jié)點(diǎn),需與 lazyLoad 方法結(jié)合使用 |
動(dòng)態(tài)加載方法 |
props.lazyLoad |
function |
加載動(dòng)態(tài)數(shù)據(jù)的方法,僅在 lazy 為 true 時(shí)有效; 返回一個(gè)function(node, resolve),node為當(dāng)前點(diǎn)擊的節(jié)點(diǎn),resolve為數(shù)據(jù)加載完成的回調(diào)(必須調(diào)用) |
選項(xiàng)值屬性 |
props.value |
指定選項(xiàng)的值為選項(xiàng)對(duì)象的某個(gè)屬性值 |
|
選項(xiàng)標(biāo)簽屬性 |
props.label |
指定選項(xiàng)標(biāo)簽為選項(xiàng)對(duì)象的某個(gè)屬性值 |
|
子選項(xiàng)屬性 |
props.children |
指定選項(xiàng)的子選項(xiàng)為選項(xiàng)對(duì)象的某個(gè)屬性值 |
|
選項(xiàng)禁用屬性: |
props.disabled |
指定選項(xiàng)的禁用為選項(xiàng)對(duì)象的某個(gè)屬性值 |
|
葉子節(jié)點(diǎn)標(biāo)志屬性: |
props.leaf |
指定選項(xiàng)的葉子節(jié)點(diǎn)的標(biāo)志位為選項(xiàng)對(duì)象的某個(gè)屬性值 |
|
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
|
Vue Slots |
html |
組件可用的slot的內(nèi)容 |
可選值
可選值是一個(gè)腳本,需要返回一個(gè)可選值數(shù)組列表;或者一個(gè)resolve了可選值數(shù)組的Promise對(duì)象。下面是代碼示例:
return?[{
????value:?'zhinan',
????label:?'指南',
????children:?[{
????????value:?'shejiyuanze',
????????label:?'設(shè)計(jì)原則',
????????children:?[{
????????????value:?'yizhi',
????????????label:?'一致'
????????},?{
????????????value:?'fankui',
????????????label:?'反饋'
????????},?{
????????????value:?'xiaolv',
????????????label:?'效率'
????????},?{
????????????value:?'kekong',
????????????label:?'可控'
????????}]
????},?{
????????value:?'daohang',
????????label:?'導(dǎo)航',
????????children:?[{
????????????value:?'cexiangdaohang',
????????????label:?'側(cè)向?qū)Ш?
????????},?{
????????????value:?'dingbudaohang',
????????????label:?'頂部導(dǎo)航'
????????}]
????}]
},?{
????value:?'zujian',
????label:?'組件',
????children:?[{
????????value:?'basic',
????????label:?'Basic',
????????children:?[{
????????????value:?'layout',
????????????label:?'Layout?布局'
????????},?{
????????????value:?'color',
????????????label:?'Color?色彩'
????????},?{
????????????value:?'typography',
????????????label:?'Typography?字體'
????????},?{
????????????value:?'icon',
????????????label:?'Icon?圖標(biāo)'
????????},?{
????????????value:?'button',
????????????label:?'Button?按鈕'
????????}]
????},?{
????????value:?'form',
????????label:?'Form',
????????children:?[{
????????????value:?'radio',
????????????label:?'Radio?單選框'
????????},?{
????????????value:?'checkbox',
????????????label:?'Checkbox?多選框'
????????},?{
????????????value:?'input',
????????????label:?'Input?輸入框'
????????},?{
????????????value:?'input-number',
????????????label:?'InputNumber?計(jì)數(shù)器'
????????},?{
????????????value:?'select',
????????????label:?'Select?選擇器'
????????},?{
????????????value:?'cascader',
????????????label:?'Cascader?級(jí)聯(lián)選擇器'
????????},?{
????????????value:?'switch',
????????????label:?'Switch?開(kāi)關(guān)'
????????},?{
????????????value:?'slider',
????????????label:?'Slider?滑塊'
????????},?{
????????????value:?'time-picker',
????????????label:?'TimePicker?時(shí)間選擇器'
????????},?{
????????????value:?'date-picker',
????????????label:?'DatePicker?日期選擇器'
????????},?{
????????????value:?'datetime-picker',
????????????label:?'DateTimePicker?日期時(shí)間選擇器'
????????},?{
????????????value:?'upload',
????????????label:?'Upload?上傳'
????????},?{
????????????value:?'rate',
????????????label:?'Rate?評(píng)分'
????????},?{
????????????value:?'form',
????????????label:?'Form?表單'
????????}]
????},?{
????????value:?'data',
????????label:?'Data',
????????children:?[{
????????????value:?'table',
????????????label:?'Table?表格'
????????},?{
????????????value:?'tag',
????????????label:?'Tag?標(biāo)簽'
????????},?{
????????????value:?'progress',
????????????label:?'Progress?進(jìn)度條'
????????},?{
????????????value:?'tree',
????????????label:?'Tree?樹形控件'
????????},?{
????????????value:?'pagination',
????????????label:?'Pagination?分頁(yè)'
????????},?{
????????????value:?'badge',
????????????label:?'Badge?標(biāo)記'
????????}]
????},?{
????????value:?'notice',
????????label:?'Notice',
????????children:?[{
????????????value:?'alert',
????????????label:?'Alert?警告'
????????},?{
????????????value:?'loading',
????????????label:?'Loading?加載'
????????},?{
????????????value:?'message',
????????????label:?'Message?消息提示'
????????},?{
????????????value:?'message-box',
????????????label:?'MessageBox?彈框'
????????},?{
????????????value:?'notification',
????????????label:?'Notification?通知'
????????}]
????},?{
????????value:?'navigation',
????????label:?'Navigation',
????????children:?[{
????????????value:?'menu',
????????????label:?'NavMenu?導(dǎo)航菜單'
????????},?{
????????????value:?'tabs',
????????????label:?'Tabs?標(biāo)簽頁(yè)'
????????},?{
????????????value:?'breadcrumb',
????????????label:?'Breadcrumb?面包屑'
????????},?{
????????????value:?'dropdown',
????????????label:?'Dropdown?下拉菜單'
????????},?{
????????????value:?'steps',
????????????label:?'Steps?步驟條'
????????}]
????},?{
????????value:?'others',
????????label:?'Others',
????????children:?[{
????????????value:?'dialog',
????????????label:?'Dialog?對(duì)話框'
????????},?{
????????????value:?'tooltip',
????????????label:?'Tooltip?文字提示'
????????},?{
????????????value:?'popover',
????????????label:?'Popover?彈出框'
????????},?{
????????????value:?'card',
????????????label:?'Card?卡片'
????????},?{
????????????value:?'carousel',
????????????label:?'Carousel?走馬燈'
????????},?{
????????????value:?'collapse',
????????????label:?'Collapse?折疊面板'
????????}]
????}]
},?{
????value:?'ziyuan',
????label:?'資源',
????children:?[{
????????value:?'axure',
????????label:?'Axure?Components'
????},?{
????????value:?'sketch',
????????label:?'Sketch?Templates'
????},?{
????????value:?'jiaohu',
????????label:?'組件交互文檔'
????}]
}]
動(dòng)態(tài)加載
首先設(shè)置“動(dòng)態(tài)加載”屬性為“是”。在可選值腳本中輸入代碼如下:
return?[{
????"label":?"層級(jí)一",
????"value":?"level1"
},?{
????"label":?"層級(jí)二",
????"value":?"level2"
},?{
????"label":?"層級(jí)三",
????"value":?"level3",
????"leaf":?true //表示層級(jí)三是葉子節(jié)點(diǎn),不再有下一層級(jí)了
}]
在“動(dòng)態(tài)加載方法”屬性中,輸入如下代碼:
return?function?(node,?resolve)?{
????window.setTimeout(function?()?{ //用setTimeout模擬異步
????????var?subNodes?=?[];
????????for?(var?i?=?0;?i?<?3;?i++)?{
????????????subNodes.push({
????????????????"value":?node.value?+?"-"?+?i,
????????????????"label":?node.label?+?"-"?+?i,
????????????????"leaf":?node.level?>?2
????????????});
????????}
????????resolve(subNodes); //加載數(shù)據(jù)完成后回調(diào)
????},?1000)
}
注意:這里function內(nèi)的this指向?yàn)楸韱谓M件的module,而不是Vue組件,你可以在腳本中使用this.vm訪問(wèn)Vue組件對(duì)現(xiàn)象。
開(kāi)關(guān)
表示兩種相互對(duì)立的狀態(tài)間的切換,多用于觸發(fā)「開(kāi)/關(guān)」。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
寬度 |
width |
number |
switch 的寬度(像素) |
打開(kāi)文本 |
active-text |
string |
switch 打開(kāi)時(shí)的文字描述 |
關(guān)閉文本 |
inactive-text |
string |
switch 關(guān)閉時(shí)的文字描述 |
打開(kāi)顏色 |
active-color |
string |
switch 打開(kāi)時(shí)的背景色 |
關(guān)閉顏色 |
inactive-color |
string |
switch 關(guān)閉時(shí)的背景色 |
值類型 |
string |
switch 取值類型 |
|
打開(kāi)的值 |
active-value |
boolean / string / number |
switch 打開(kāi)時(shí)的值 |
關(guān)閉的值 |
inactive-value |
boolean / string / number |
switch?關(guān)閉時(shí)的值 |
打開(kāi)圖標(biāo) |
active-icon-class |
string |
switch 打開(kāi)時(shí)所顯示圖標(biāo)的類名,設(shè)置此項(xiàng)會(huì)忽略 active-text |
關(guān)閉圖標(biāo) |
inactive-icon-class |
string |
switch 關(guān)閉時(shí)所顯示圖標(biāo)的類名,設(shè)置此項(xiàng)會(huì)忽略 inactive-text |
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
滑塊
通過(guò)拖動(dòng)滑塊在一個(gè)固定區(qū)間內(nèi)進(jìn)行選擇。
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
最大值 |
max |
number |
最大值 |
最小值 |
min |
number |
最小值 |
步長(zhǎng) |
step |
number |
步長(zhǎng) |
是否顯示間斷點(diǎn) |
show-stops |
boolean |
是否顯示間斷點(diǎn) |
是否范圍選擇 |
range |
boolean |
是否范圍選擇 |
豎向模式 |
vertical |
boolean |
是否豎向模式 |
高度 |
height |
string |
Slider 高度,豎向模式時(shí)必填,豎向模式時(shí)默認(rèn)為100px。 |
顯示輸入框 |
show-input |
boolean |
是否顯示輸入框,僅在非范圍選擇時(shí)有效 |
顯示輸入框按鈕 |
show-input-controls |
boolean |
在顯示輸入框的情況下,是否顯示輸入框的控制按鈕 |
輸入框大小 |
input-size |
string |
輸入框的尺寸 |
顯示提示 |
show-tooltip |
boolean |
是否顯示 tooltip |
提示類名 |
tooltip-class |
string |
tooltip 的自定義類名 |
格式化提示 |
format-tooltip |
function |
格式化 tooltip message |
Marks 標(biāo)記 |
marks |
object |
標(biāo)記, key 的類型必須為 number 且取值在閉區(qū)間 [min, max] 內(nèi),每個(gè)標(biāo)記可以單獨(dú)設(shè)置樣式 |
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
按鈕
ElementUI參考文檔:Element - The world's most popular Vue UI framework
屬性 |
對(duì)應(yīng)ElementUI參數(shù) |
類型 |
說(shuō)明 |
尺寸 |
size |
string |
按鈕尺寸 |
類型: |
type |
string |
類型:primary / success / warning / danger / info / text |
圖標(biāo) |
icon |
string |
圖標(biāo)類名 |
樸素按鈕 |
plain |
boolean |
是否樸素按鈕 |
圓角按鈕 |
round |
boolean |
是否圓角按鈕 |
圓型按鈕 |
circle |
boolean |
是否圓形按鈕 |
是否禁用 |
disabled |
boolean |
是否禁用狀態(tài) |
加載中 |
loading |
boolean |
是否加載中狀態(tài) |
默認(rèn)焦點(diǎn) |
autofocus |
boolean |
是否默認(rèn)聚焦 |
顯示文字 |
boolean |
是否顯示文本 |
|
Vue Data |
object/ function |
Vue組件的數(shù)據(jù)對(duì)象 |
|
Vue Methods |
object |
{ [key: string]: Function } 被混入到 Vue 實(shí)例中方法定義 |
|
Vue Css |
css |
css樣式 |
控制按鈕狀態(tài)
我們可以在腳本中控制按鈕的狀態(tài),只需要通過(guò)改變當(dāng)前按鈕組件的json配置數(shù)據(jù)即可。如以下代碼:
//獲取按鈕的module對(duì)象
var?module?=?this.form.get("elbutton");
//獲取組件的數(shù)據(jù)
var?json?=?module.json;
//設(shè)置按鈕為禁用
json.disabled?=?true;
//設(shè)置按鈕為loading狀態(tài)
json.loading?=?true;
//或----------------------------------------
//也可以通過(guò)vue組件獲取數(shù)據(jù),如以下代碼
var?vm?=?module.vm; //獲取到vue對(duì)象
var?json?=?vm.$data;
//設(shè)置按鈕為禁用
json.disabled?=?true;
//設(shè)置按鈕為loading狀態(tài)
json.loading?=?true;
這樣的用法,在腳本中對(duì)每個(gè)ElementUI組件都是有效的。
圖標(biāo)
略
通用組件
系統(tǒng)并沒(méi)有包裝所有的ElementUI組件,雖然包裝后的組件更方便使用,但靈活度也有所降低,所以我們提供了通用ElemenmtUI組件,以供用戶創(chuàng)建其他的組件。
通用組件提供了“Vue Template”、“Vue App”和“Vue Css”三個(gè)腳本區(qū)域,來(lái)創(chuàng)建通用的Vue組件。
Vue Template:提供組件需要的HTML內(nèi)容。
Vue App:提供組件需要Script內(nèi)容,返回用于創(chuàng)建Vue實(shí)例的options對(duì)象。
Vue Css:css樣式內(nèi)容。
樣例
我們以創(chuàng)建一個(gè)日期范圍選擇器為例,來(lái)創(chuàng)建一個(gè)通用組件。
在“Vue Template”中的輸入以下代碼:
<el-date-picker
????v-model="value1"
????type="daterange"
????range-separator="至"
????start-placeholder="開(kāi)始日期"
????end-placeholder="結(jié)束日期">
</el-date-picker>
點(diǎn)擊"Preview"按鈕可預(yù)覽組件樣式。
保存表單就創(chuàng)建了一個(gè)用與選擇日期范圍的組件,組件的值會(huì)自動(dòng)綁定到“v-model”屬性指向的key,本例中,選擇框的值被綁定到了this.data.value1中。
我們?cè)诮o日期選擇框添加一些快捷選項(xiàng)。
在“Vue Template”中的<el-date-picker>中增加一個(gè)屬性:picker-options="pickerOptions":
<el-date-picker
??????v-model="value2"
??????type="daterange"
??????align="right"
??????unlink-panels
??????range-separator="至"
??????start-placeholder="開(kāi)始日期"
??????end-placeholder="結(jié)束日期"
??????:picker-options="pickerOptions">
</el-date-picker>
然后在“Vue App”中添加代碼如下:
return?{
????data:?function()?{
????????return?{
????????????pickerOptions:?{
????????????????shortcuts:?[{
????????????????????text:?'最近一周',
????????????????????onClick(picker)?{
????????????????????????const?end?=?new?Date();
????????????????????????const?start?=?new?Date();
????????????????????????start.setTime(start.getTime()?-?3600?*?1000?*?24?*?7);
????????????????????????picker.$emit('pick',?[start,?end]);
????????????????????}
????????????????},?{
????????????????????text:?'最近一個(gè)月',
????????????????????onClick(picker)?{
????????????????????????const?end?=?new?Date();
????????????????????????const?start?=?new?Date();
????????????????????????start.setTime(start.getTime()?-?3600?*?1000?*?24?*?30);
????????????????????????picker.$emit('pick',?[start,?end]);
????????????????????}
????????????????},?{
????????????????????text:?'最近三個(gè)月',
????????????????????onClick(picker)?{
????????????????????????const?end?=?new?Date();
????????????????????????const?start?=?new?Date();
????????????????????????start.setTime(start.getTime()?-?3600?*?1000?*?24?*?90);
????????????????????????picker.$emit('pick',?[start,?end]);
????????????????????}
????????????????}]
????????????}
????????};
????}
};
然后可以再設(shè)置一下樣式,在“Vue Css”中輸入以下css:
.el-range-separator?{
????padding:?0;
????color:?#FF0000;
}
保存表單后就可以看到效果了。
一個(gè)通用組件創(chuàng)建了一個(gè)Vue應(yīng)用,它同時(shí)可以包含多個(gè)ElementUI組件的。如在“Vue Template”中的輸入以下代碼:
<el-card?class="box-card">
<div?slot="header"?class="clearfix">
<span>卡片名稱</span>
<el-button?style="float:?right;?padding:?3px?0"?type="text">操作按鈕</el-button>
</div>
<div>
<el-input?placeholder="請(qǐng)輸入內(nèi)容"?v-model="input1">
<template?slot="prepend">Http://</template>
</el-input>
</div>
<div?style="margin-top:?15px;">
<el-input?placeholder="請(qǐng)輸入內(nèi)容"?v-model="input2">
<template?slot="append">.com</template>
</el-input>
</div>
<div?style="margin-top:?15px;">
<el-input?placeholder="請(qǐng)輸入內(nèi)容"?v-model="input3"?class="input-with-select">
<el-select?v-model="select"?slot="prepend"?placeholder="請(qǐng)選擇">
<el-option?label="餐廳名"?value="1"></el-option>
<el-option?label="訂單號(hào)"?value="2"></el-option>
<el-option?label="用戶電話"?value="3"></el-option>
</el-select>
<el-button?slot="append"?icon="el-icon-search"></el-button>
</el-input>
</div>
</el-card>
在“Vue Css”中輸入以下css:
??.el-select?.el-input?{
????width:?130px;
??}
??.input-with-select?.el-input-group__prepend?{
????background-color:?#fff;
??}
其中我們用到了<el-card>,<el-input>和<el-select>等ELementUI組件,創(chuàng)建了一個(gè)復(fù)合組件。保存后預(yù)覽表單會(huì)看到如下效果:
所有的v-model會(huì)自動(dòng)綁定到業(yè)務(wù)數(shù)據(jù),可以在腳本中使用this.data.xxx來(lái)訪問(wèn)到。注意:v-model請(qǐng)不要重名。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-837498.html
以上是在流程表單中使用基于Vue的ElementUI組件相關(guān)說(shuō)明,更多關(guān)于O2OA流程設(shè)計(jì)的內(nèi)容,請(qǐng)繼續(xù)閱讀下面的章節(jié)。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-837498.html
到了這里,關(guān)于O2OA(翱途)開(kāi)發(fā)平臺(tái)如何在流程表單中使用基于Vue的ElementUI組件?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!