O2OA開發平臺在流程管理中,可以讓用戶在包含公文管理的項目實施過程中,輕鬆地實現標準化公文格式的在線編輯、痕跡保留、手寫籤批等功能。並且可以快速將版式公文編輯器集成到O2OA開發平臺之外的其他協同辦公系統中。
一、適用範圍
公文編輯器不同於我們其他的在線文檔編輯器,它基本上只限於公文系統中對紅頭文件的編輯和查看,規定了標準的格式、字體、行距、字據等,編輯自由度是比較低的。O2OA的公文編輯器適用於紅頭文件的處理,或是對格式要求非常嚴格的文書編輯。其他情況下的在線文檔編輯功能,我們可以選擇OnlyOffice、WPS等其他產品,您可以在我們的文檔庫中找到相關的內容。
二、公文格式簡介
O2OA公文編輯器中的格式規範,是參照《黨政機關公文格式》國家標準(GB/T9704—2012)來設定的,下面簡略說明一下紅頭文件的組成和相關格式規範。
一個標準的紅頭文件,基本上是下面的樣式:
當然不同的文種的格式會略有不同,但主要元素基本一致。下面我們對規範上要求的各個標準做一個簡要的說明。
版面
公文用紙採用A4型紙,幅面尺寸爲:210mm x 297mm。
頁邊與版心尺寸
公文用紙天頭(上白邊)爲37mm(相當於約104.9pt),公文用紙訂口(左白邊)爲28mm(相當於約74.9pt),版心尺寸爲:156mm x 225mm,由此可計算出,下白邊爲:35mm(相當於約99.2pt),右白邊爲:26mm(相當於約73.7pt)。
字體和字號
無特殊說明,公文各要素一般使用3號仿宋字體。
行數和字數
每頁22行,每行28個字。
顏色
無特殊說明,公文中的文字顏色都爲黑色。
版頭
版頭內容包括:份號、密級和保密期限、緊急程度、發文機關標誌(紅頭)、發文字號、簽發人。
份號、密級和保密期限、緊急程度
左上角頂格編排,份號一般用6位阿拉伯數字,3號黑體字。
發文機關標誌(紅頭)
推薦使用小標宋體字,顏色爲紅色。
發文字號
發文機關標誌下空兩行,上行文居左空一字編排,平行文下行文居中編排。採用3號仿宋字體。
簽發人
只有上行文應標註簽發人姓名。發文機關標誌下空兩行編排,“簽發人”三字加全角冒號和簽發人姓名組成。“簽發人”三字用3號仿宋字體,簽發人姓名用3號楷體字體,多個簽發人每行編排兩個姓名。
主體
主體部分包括:標題、主送、正文、附件說明、發文機關署名、成文日期、印章、附註。
標題
一般用2號宋體字,分一行或多行居中排布。至於標題的位置,規範中說明在紅線下方空兩行,但在實際使用中,幾乎所有項目的客戶都反饋反饋,要求標題在紅線下方空一行,所以現在公文編輯組件的默認模板設置爲紅線下空一行編排標題。可以通過自定義模板修改這一規則。
主送單位
在標題下空一行位置,居左頂格。最後一個單位名稱後標全角冒號,使用3號仿宋字體。
正文
用3號仿宋字體,編排於主送單位名稱下一行,每個自然段左空兩字,回行頂格。
文中結構層次用:“一”、“(一)”、“1.”、“(1)”標註,第一層用3號黑體字,第二層用3號楷體字,第三第四層用仿宋字體,
附件說明
如有附件,在正文下空一行,左空兩字編排“附件”二字,後標全角冒號和附件名稱。多個附件使用阿拉伯數字標註序號,附件名稱較長需要回行時,與上一行附件名稱的首字對齊。
發文機關署名和成文日期
成文日期一般右空四字編排,發文機關在成文日期之上,以成文日期爲準居中編排。
發文機關署名長於成文日期,發文機關署名居右空二字編排,成文日期發文機關首字爲準,右移二字。
採用3號仿宋字體。
附註
如有附註,居左空二字加圓括號,採用3號仿宋字體。
版記
版記內容包括:抄送單位、印發單位和印發日期。版記要置於最後一頁的最後位置。
版記中的分隔線
分隔線與版心等寬,首條分隔線和末條分隔線使用粗線,中間分隔線用細線。
抄送單位
一般用4號仿宋字體,左右各空一字編排。
印發單位和印發日期
一般用4號仿宋字體,印發機關左空一字,印發日期右空一字。
以上是簡略的說明公文中的一些要素編排的格式規範,參考自《黨政機關公文格式》國家標準應用指南(GB/T9704—2012),中國質檢出版社、中國標準出版社。
三、O2OA版式公文的基本使用
下面我們介紹一下公文編輯組件的基本用法。公文編輯器可以在流程表單和內容管理表單中使用,它的使用比較簡單,我們直接將公文編輯器組件拖動到表單中合適的位置,然後設置相關屬性即可。
基本屬性
屬性介紹:
屬性 |
默認值 |
可選項 |
說明 |
標識 |
documenteditor |
無 |
組件唯一標識 |
名稱 |
無 |
無 |
略 |
描述 |
無 |
無 |
略 |
延時加載 |
否 |
是,否 |
如果選擇“是”,在打開表單時,不會加載公文編輯器組件,您需要通過active方法激活組件。如: this.form.get("documenteditor").active(); |
文件模板 |
系統模板 |
系統模板 自定義模板 |
如果選擇系統模板,您可以從下面的下拉框中選擇系統內置模板,包括:“標準公文類”、“紀要通報類”、“黨委既要類”、“函類”、“命令類”、“黨委紀委類”、“聯合發文類”和“空模板(僅正文)”; 如果選擇自定義模板,您需要在下方的模板路徑中輸入模板html文件的URL。一般情況下,會將自定義模板文件放到Web服務器的非系統目錄下,如filetemplete目錄下,那麼在模板路徑中輸入:../filetemplete/filename.html |
編輯 |
允許 |
允許,不允許, 根據腳本 |
控制是否允許編輯正文。如果選擇“根據腳本”,在下面的腳本編輯框中輸入腳本,返回true表示允許編輯,否則不允許編輯正文。 |
打印正文 |
允許 |
允許,不允許, 根據腳本 |
控制是否允許打印正文。如果選擇“根據腳本”,在下面的腳本編輯框中輸入腳本,返回true表示允許打印,否則不允許打印正文。打印正文是將公文轉換爲word文件下載,用戶直接打印word文件即可。轉換word的設置與下面的“word轉換”屬性配置有關。 |
查看痕跡 |
允許 |
允許,不允許, 根據腳本 |
控制是否允許查看痕跡。如果選擇“根據腳本”,在下面的腳本編輯框中輸入腳本,返回true表示允許查看痕跡,否則不允許查看痕跡。 |
設置縮放 |
不允許 |
允許,不允許 |
是否允許用戶對公文進行縮放查看 |
全角轉換 |
是 |
是,否 |
如果選擇“是”,用戶在正文中輸入或粘貼的所有空格,都會自動轉換爲全角空格 |
段落縮進 |
是 |
是,否 |
如果選擇“是”,用戶輸入回車換行,或粘貼的內容,都會在段落首行自動縮進二字。 |
雙頁顯示 |
是 |
是,否 |
默認情況下,公文編輯器在web端不分頁,只在轉換word後翻頁。如果選擇“是”,編輯器右上角會出現“雙頁”按鈕,點擊後在web端進行模擬分頁。 |
全屏 |
允許 |
允許,不允許 |
是否允許全屏展示公文編輯器 |
WORD轉換 |
否 |
是,否 |
是否自動將公文轉換爲Word文件。當選擇“是”時,會有下表的配置屬性。 |
當WORD轉換選擇“是”時,會有下面的配置屬性。
屬性 |
默認值 |
可選項 |
說明 |
轉換方式 |
OOXML |
OOXML Service |
Service選項在默認情況下,是爲了兼容舊版本而保留的,它轉換的word文件在格式上並不符合規範。已經不推薦使用。當然當使用Service選項時,我們可以更新後端服務,使用不同的服務來轉換,配合不同的第三方包,可實現word、pdf、ofd等多總格式的轉換。這將在後面的章節詳細說明。 |
文件名 |
無 |
無 |
轉換後存儲在文檔中的附件名稱,如果爲空,文件名將會是:“本文檔的標題.docx” |
附件site |
$doc |
無 |
此處可設定轉換後的附件的site屬性,這意味着轉換後的附件會在設置了相同site的附件組件中展現出來。 |
轉換印章 |
是 |
是,否 |
轉換Word文件時,是否將模擬蓋章的圖片也轉換到WORD文件中。 |
何時轉換 |
提交時 |
提交時、保存時 |
保存時:當文件被保存時,將公文轉換爲Word文件。它會發生在:用戶點保存按鈕時,用戶按Ctrl+S時,執行腳本this.form.save()時。但是當執行this.data.save()時,不會觸發轉換動作。當然,當文件提交繼續流轉時,系統會自動保存文檔,所以此時也會執行word轉換。 提交時:當文件提交繼續流轉時,自動轉換爲word文件。通過點擊“繼續流轉”來提交文件,或通過腳本this.form.process(); 都可觸發文件轉換。 |
轉換條件 |
始終轉換 |
始終轉換,滿足條件時轉換 |
當選擇“滿足條件時轉換”選項時,除了要符合上述“何時轉換”的選項外,還需要提供一段腳本,在下方的腳本編輯器中輸入,只有當腳本運行返回true時,在進行轉換。 |
公文編輯器數據結構和默認值
基本屬性在往下,是默認值的配置:
當公文編輯器存儲的數據是一個JSON對象數據,每個數據都對應公文中的元素的顯示內容,它的結構大概是下面的樣子:
{
"annotation": "附註",
"attachment": [
"logo_new_blue",
"logo_new_grey_x"
],
"attachmentTitle": "附件:",
"copies": " ",
"copyto": "[抄送]",
"copyto2": "[發]",
"copyto2Title": "發:",
"copytoTitle": "抄送:",
"editionDate": "[印發日期]",
"editionUnit": "[印發機關]",
"fileno": "[文號]",
"filetext": "u003cdivu003e
u003cdivu003e
u003cdivu003e 正文內容u003c/divu003e
u003cdivu003eu003c/divu003e
u003c/divu003e
u003c/divu003e
",
"issuanceDate": "[成文日期]",
"issuanceUnit": "[發文機關]",
"mainSend": "[主送單位:]",
"meetingAttend": "",
"meetingAttendTitle": "出席:",
"meetingLeave": "",
"meetingLeaveTitle": "請假:",
"meetingRecord": "",
"meetingSit": "",
"meetingSitTitle": "列席:",
"priority": " ",
"redHeader": "文件紅頭",
"secret": " ",
"signer": "[簽發人]",
"signerTitle": "簽發人:",
"subject": "[文件標題]",
"seals": [
"http://develop.o2oa.net:20020/x_processplatform_assemble_surface/jaxrs/attachment/download/b6941e81-c24b-47a4-ad22-2a31898b936c/work/9994247e-bd6d-4ffb-85aa-04bbc1fd356f"
]
}
我們還是通過表格來說明每個字段的含義。
字段 |
含義 |
類型 |
copies |
份號 |
text |
secret |
密級 |
text |
priority |
緊急度 |
text |
redHeader |
發文機關標誌(紅頭) |
html |
fileno |
文號 |
text |
signerTitle |
簽發人標題 |
text |
signer |
簽發人姓名 |
html |
subject |
文件標題 |
html |
mainSend |
主送單位 |
text |
filetext |
正文 |
html |
attachmentTitle |
附件說明的標題 |
text |
attachment |
附件標題 |
array |
issuanceUnit |
發文機關署名 |
html |
issuanceDate |
成文日期 |
text |
annotation |
附註 |
text |
copytoTitle |
抄送標題 |
text |
copyto |
抄送單位 |
text |
copyto2Title |
版記中第二個抄送標題 |
text |
copyto2 |
版記中第二個抄送單位 |
text |
editionUnit |
印發單位 |
text |
editionDate |
印發時間 |
text |
meetingAttendTitle |
出席標題(會議紀要類的模板中) |
text |
meetingLeaveTitle |
請假標題(會議紀要類的模板中) |
text |
meetingSitTitle |
列席標題(會議紀要類的模板中) |
text |
meetingAttend |
出席人(會議紀要類的模板中) |
html |
meetingLeave |
請假人(會議紀要類的模板中) |
html |
meetingSit |
列席人(會議紀要類的模板中) |
html |
meetingRecord |
記錄人(黨委會議紀要類的模板中) |
html |
seals |
模擬蓋章圖片的url |
array |
再往下是CSS屬性,我們可以給版式正文定義額外的樣式。接着是校驗,這兩部分我們將在後續的章節說明。
配置屬性
公文編輯組件屬性的“配置”部分,主要是控制公文中各個內容項的顯示和值的綁定。
通用配置
先看每個內容元素的通用配置
屬性 |
默認值 |
可選項 |
說明 |
是否顯示 |
自動 |
顯示,隱藏,自動,根據腳本 |
此屬性配置本內容元素的顯示狀態。 顯示:無論有沒有值,都顯示(佔位) 隱藏:不顯示此內容元素,也不佔位 自動:根據此元素的值來確定,空則隱藏,有值則顯示 根據腳本:在下方腳本編輯器中輸入腳本,運行返回true則顯示,否則隱藏。 |
綁定值 |
表單數據 |
表單數據 腳本 |
設置此元素要顯示什麼內容。 表單數據:將此元素的值與表單中的字段綁定,(在下方的表單數據屬性中輸入表單字段標識),當表單中的字段發生變化時,此元素的值也立即變化。 腳本:通過腳本計算此元素的值(在下方的腳本編輯器中輸入腳本),當文檔保存後,或者公文編輯器執行resetData方法後更新元素值。 |
編輯文件標題和發文單位
文件標題元素一般會綁定到文檔subject字段,此字段一般是Textfield類型的字段。文件標題過長時,會自動換行,規範要求標題換行要詞義完整、長短適宜,這就需要用戶手工進行換行,在這種情況下,我們就需要設置文件標題元素爲可編輯。
文件標題配置有“允許編輯”屬性,三個選項爲:“允許”、“不允許”和“根據腳本”,默認值爲“不允許”。
允許:可以讓用戶在公文編輯器中直接編輯標題,一般都是進行換行分隔操作。
不允許:不可在公文編輯器中直接編輯標題。
根據腳本:通過腳本運行返回true表示“允許”,否則“不允許”。
注意:當標題可編輯時,不要綁定表單數據(保持綁定值選“表單數據”;表單數據爲空)。因爲如果綁定了數據,用戶的修改會被表單上的值重新覆蓋。
我們還可以配置“同步數據路徑”,將編輯的內容同步回表單字段,在此處輸入表單上的字段標識即可。
發文單位和標題一樣,由於一些格式要求,可設置允許編輯,但沒有同步回表單數據的功能。
一些特殊的元素值
一般情況下,公文元素內容綁定的值都是字符串,但有以下一些內容,可綁定特殊的值:
附件:表單數據可以綁定一個附件組件,會計算此附件組件中上傳的所有附件,作爲公文附件展示在公文內容中。
簽發人:可綁定組織類型的表單字段。選擇類型爲“身份”。
主送單位和抄送單位:可綁定組織類型的表單字段。選擇類型爲“組織”。
自定義元素配置
在公文編輯器屬性的“配置”頁面中,有一個“自定義元素配置”,這是用在系統默認元素不夠用的情況下,可以在模板中增加自定義元素,並將其要顯示的內容,與業務數據綁定。假設需要在版記之前加上一個“其他說明”,如下圖:
可以按以下步驟來實現:
1、拷貝模板文件
系統模板路徑在webserver/x_component_process_FormDesigner/Module/Documenteditor/templete目錄下,我們看到templete.json文件,裏面設定了每種類型的模板對應的html文件。拷貝一個標準文件模板(standard.html)進行修改。
2、修改模板文件
在拷貝後的模板文件中,找到Class爲“doc_layout_editionArea”的div元素,在此元素上面加如下html代碼:
<p class="doc_block doc_layout" data-doc-layout="doc_data_other"></p>
其中P元素的class設置了“doc_layout”代表這是公文編輯器中的一個有效元素,“data-doc-layout”屬性定義了此元素的自定義名稱。
編輯完成後,保存文件,並上傳到服務器。本例中,上傳到了webserver的filetemplate目錄中。
3、使用自定義模板
在表單編輯中,設置公文編輯器屬性中的文件模板爲“自定義模板”,模板路徑輸入上傳的模板文件路徑。在本例中就是“../filetemplate/standard.html”。
4、配置數據綁定
在公文編輯器屬性的“配置”頁中,配置自定義元素如下:
其中“doc_data_other”爲模板中定義的元素的“data-doc-layout”屬性值。
explain爲表單中的任意文本類字段的標識。
保存表單後,只要explain字段值改變,並觸發“change”事件,公文編輯器中的對應元素的顯示內容就會發生改變。
配置完以上內容後,我們就可以使用公文編輯組件了