<?xml version="1.0" encoding="UTF-8"?> <a:screen xmlns:c="leaf.application.action" xmlns:a="http://www.leaf-framework.org/application" xmlns:p="uncertain.proc" trace="true"> <a:init-procedure> <a:model-query defaultWhereClause="t1.workflow_id=${/parameter/@workflow_id}" model="zjwfl.zj_wfl_workflow" rootPath="workflow_record"/> <a:model-query defaultWhereClause="v.code='ZJ_WFL_NODE_TYPE' and (${/model/workflow_record/record/@sub_category} = 'MAIN_PROCESS' or v.code_value != 'SUB_PROCESS' ) and v.code_value not in ('START_NODE','END_NODE') " model="zjwfl.sys_code_default_value" rootPath="node_type_list"/> <a:model-query defaultWhereClause="v.code='ZJ_WFL_NODE_TYPE' and v.code_value='NORMAL_NODE'" model="zjwfl.sys_code_default_value" rootPath="node_type_default_value"/> <a:model-query defaultWhereClause="v.code='ZJ_WFL_WORKFLOW_STATUS' and v.code_value in ('-1','10','-1000')" fetchAll="true" model="zjwfl.sys_code_default_value" rootPath="workflow_status_list"/> </a:init-procedure> <a:view> <a:link id="pageLink_end_proc_para" url="${/request/@context_path}/modules/zjwfl/WFL2012/zj_wfl_workflow_node_proc_para_end.lview"/> <a:link id="bmLink_calc_wfl_complete" model="zjwfl.zj_wfl_workflow_node_complete_rate" modelaction="update"/> <script type="text/javascript"><![CDATA[ function close_nodePage() { $('zj_wfl_workflow_node_window').close(); } function refresh_nodeDs() { var ds=$('nodeDs'); ds.query(ds.currentPage); } function winOpen_node_edit(node_id ,node_type) { var win = new Leaf.Window({ id: 'zj_wfl_workflow_node_edit_window', url: 'zj_wfl_workflow_node_edit.lview', params: { node_id:node_id, node_type : node_type, workflow_id:'${/parameter/@workflow_id}' }, title: '编辑节点', fullScreen: true }); win.on('close', function() { refresh_nodeDs(); }); } function nodePage_get_completeRate_color(score) { if(score<60) { return 'red'; } else if(score>=90) { return '#33FF00'; } else { return '#FFCC00'; } } function get_format_number(value) { var num = Number(value); if(!isNaN(num)) { return num; } return 0; } function nodePage_get_completeRate_info(info_complete_rate) { var score = get_format_number(info_complete_rate); var color = nodePage_get_completeRate_color(score); var info={ 'score':score, 'style':{ 'color':color, 'font-weight':'bold' } }; return info; } function get_completeRate_styleStr(score) { var info = nodePage_get_completeRate_info(score); var str=''; for(var prop in info['style']) { str=str + prop +':'+ info['style'][prop]+';'; } return 'style="'+ str +'"'; } function render_nodeDs_grid(value, record, name) { if(!record.isNew) { if(name=='node_edit') { var node_type = record.get('node_type'); if (node_type == "NORMAL_NODE" || node_type == "BRANCH_NODE" || node_type == "VIRTUAL_NODE" ||node_type=='END_NODE' ||node_type=='START_NODE') { //普通节点、分支节点、虚拟节点,都可编辑节点 return '<a href="javascript:winOpen_node_edit(' + record.get('node_id') + ',\'' + node_type + '\')">编辑节点</a>'; } return ''; } if(name=='info_complete_rate') { var score = get_format_number(value); var msg = $L.escapeHtml(record.get('info_complete_note')); if(Ext.isEmpty(msg)){ return '<span ' + get_completeRate_styleStr(score) + '>'+ score +'%<span>'; }else{ return '<span onmouseover="$L.ToolTip.show(Ext.get(this).parent(\'td\'),\''+msg+'\')"' + get_completeRate_styleStr(score) + '>'+ score +'%<span>'; } } return ''; } return ''; } function editorFun_nodeDs_grid(record, name) { var field=record.getField(name); if(name=='node_type_desc') { var node_type=record.get('node_type'); var config={ 'NORMAL_NODE':'正常推进的节点', 'BRANCH_NODE':'正常推进的节点,并在节点结束后根据分支函数,选择后续过程', 'SUB_PROCESS':'工作流子流程嵌套', 'VIRTUAL_NODE':'不会在工作流推进过程中触发,只在主动跳转时生效' }; if(config[node_type] != undefined) { field.setPropertity('tooltip',config[node_type]); } if (node_type=='START_NODE' || node_type=='END_NODE'){ return ''; } return 'nodeDs_grid_editor_comb'; } if(name=='link_workflow_code') { if (name == 'link_workflow_code') { if (record.get('node_type')=='SUB_PROCESS') { //判断条件:节点类型=链接流程 //LOV条件:工作流类型相同&&工作流主从=子流程 field.setLovPara('workflow_type_id', '${/model/workflow_record/record/@workflow_type_id}'); field.setLovPara('sub_category', 'SUB_PROCESS'); field.setRequired(true); return 'nodeDs_grid_editor_lov'; } else { field.setRequired(false); return ''; } } } } function onUpdate_nodeDs(ds, record, name, value, oldvalue) { // var approval_type_factor_ds = record.get("approval_type_factor"); //如果"节点类型"的值发生改变,则将"链接流程","分支判断过程","审批规则"的值清空 if (name == "node_type_desc") { record.set('link_workflow_id', null); record.set('link_workflow_code', null); record.set('link_workflow_desc', null); } if(name=='info_complete_rate') { record.getField(name).setPropertity('tooltip',record.get('info_complete_note')); } } // function winOpen_define_proc() { // new Leaf.Window({ // id: 'zj_wfl_workflow_Procedure', // url: '${/request/@context_path}/modules/zjwfl/WFL2012/zj_wfl_workflow_end_procedure_edit.lview', // params:{ // workflow_id:'${/parameter/@workflow_id}' // }, // title: '工作流结束过程定义', // fullScreen: true // }); // } function winOpen_workflow_service_para(service_id) { new Leaf.Window({ id: 'zj_wfl_workflow_display_service_para', url: 'zj_wfl_workflow_display_service_para.lview', params:{ service_id:service_id, workflow_id: '${/parameter/@workflow_id}' }, title: '工作流页面参数定义', height: 450, width: 1000 }); } function define_workflow_service_para() { var record = $('wflUpdateDs').getAt(0); if(record.get('node_display_type')=='NORMAL') { Leaf.showMessage('提示信息', '非自定义无需定义参数'); return; } if( record.get('display_type_change') == 'Y') { Leaf.showMessage('提示信息', '我提交的页面已经更改,保存后继续'); return; } var service_id = record.get('display_service_id'); winOpen_workflow_service_para(service_id); } function handle_field(record,name,type) { var field=record.getField(name); if(type=='READ') { field.setRequired(false); field.setReadOnly(true); } else if(type=='REQUIRED') { field.setReadOnly(false); field.setRequired(true); } } function control_workflow_display(record) { var display_type = record.get('display_type'); if(display_type=='NORMAL') { handle_field(record,'display_service_desc','READ'); } else { handle_field(record,'display_service_desc','REQUIRED'); } } function onUpdate_wflUpdateDs(ds,record,name,value,oldValue) { if(name=='display_type') { control_workflow_display(record); } if(name=='display_service_id') { record.set('display_type_change','Y'); } if(name=='show_all_approve_ht_flag') { if(value=='Y'&&record.get('show_approve_history_flag')!='Y') { record.set('show_approve_history_flag','Y'); } } if(name=='show_approve_history_flag') { if(value=='N'&&record.get('show_all_approve_ht_flag')!='N') { record.set('show_all_approve_ht_flag','N'); } } } function onSubmitSuccess_wflUpdateDs(ds) { ds.getAt(0).set('display_type_change','N'); } function winOpen_end_proc_para(workflow_procedure_id ,procedure_id) { new Leaf.Window({ id: 'zj_wfl_workflow_node_proc_para_window', url: $('pageLink_end_proc_para').getUrl(), title: '结束过程参数定义', params:{ workflow_procedure_id: workflow_procedure_id, procedure_id: procedure_id, workflow_id: '${/parameter/@workflow_id}' }, width:1000, height:500 }); } function render_endProcDs_grid(value, record, name) { if(name=='proc_para') { if (!record.isNew) { return '<a href="javascript:winOpen_end_proc_para(' + record.get('workflow_procedure_id') + ',' + record.get('procedure_id') + ')">结束过程参数定义</a>'; } return ''; } return ''; } function save_wflUpdateDs() { var ds = $('wflUpdateDs'); if(ds.validate()) { $('wflUpdateDs').submit(); } } function befremove_nodes(ds,rs){ for(var i=0;i<rs.length;i++){ node_type=rs[i].get('node_type'); if (node_type =='END_NODE' || node_type =='START_NODE'){ Leaf.showMessage('提示','起始节点不能做删除'); return false; } } return true; } function sequence_vali_fun(record,name,value){ var node_type= record.get('node_type'); if (node_type=='START_NODE' || node_type=='END_NODE'){ return true; } if (value<1000 && value>0){ return true; } return '只能输入1-999的整数'; } ]]></script> <a:dataSets> <a:dataSet id="node_type_ds"> <a:datas dataSource="/model/node_type_list"/> </a:dataSet> <a:dataSet id="wflUpdateDs" model="zjwfl.zj_wfl_workflow" submitUrl="zj_wfl_workflow_edit.lsc"> <a:datas dataSource="/model/workflow_record"/> <a:fields> <a:field name="show_approve_history_flag" checkedValue="Y" uncheckedValue="N"/> <a:field name="show_all_approve_ht_flag" checkedValue="Y" uncheckedValue="N"/> <a:field name="display_type" checkedValue="CUSTOM" uncheckedValue="NORMAL"/> <a:field name="workflow_code" readOnly="true"/> <a:field name="workflow_desc" readOnly="true"/> <a:field name="workflow_type_code" readOnly="true"/> <a:field name="sub_category_desc" readOnly="true"/> <a:field name="display_service_name" readOnly="true"/> <a:field name="display_service_desc" lovGridHeight="300" lovHeight="450" lovService="zjwfl.zj_wfl_workflow_service_lov" lovWidth="500" title="我提交的"> <a:mapping> <a:map from="service_id" to="display_service_id"/> <a:map from="service_desc" to="display_service_desc"/> <a:map from="service_name" to="display_service_name"/> </a:mapping> </a:field> </a:fields> <a:events> <a:event name="update" handler="onUpdate_wflUpdateDs"/> <a:event name="submitsuccess" handler="onSubmitSuccess_wflUpdateDs"/> </a:events> </a:dataSet> <script type="text/javascript"><![CDATA[ ( function () { var record = $('wflUpdateDs').getAt(0); control_workflow_display(record); record.set('display_type_change','N',true); })(); ]]></script> <a:dataSet id="nodeDs" autoQuery="true" bindName="node_info" bindTarget="wflUpdateDs" fetchAll="true" model="zjwfl.zj_wfl_workflow_node" queryUrl="${/request/@context_path}/autocrud/zjwfl.zj_wfl_workflow_node/query?workflow_id=${/parameter/@workflow_id}" selectable="true" submitUrl="zj_wfl_workflow_node_edit.lsc"> <a:fields> <a:field name="sequence_num" required="true" validator="sequence_vali_fun"/> <a:field name="workflow_id" defaultValue="${/parameter/@workflow_id}"/> <a:field name="node_type" defaultValue="${/model/node_type_default_value/record/@code_value}"/> <a:field name="node_type_desc" defaultValue="${/model/node_type_default_value/record/@code_value_name}" displayField="code_value_name" options="node_type_ds" required="true" returnField="node_type" valueField="code_value"/> <a:field name="approval_type_factor"/> <a:field name="link_workflow_code" lovGridHeight="300" lovHeight="450" lovService="zjwfl.zj_wfl_workflow_lov" lovWidth="500" title="链接流程选择"> <a:mapping> <a:map from="workflow_id" to="link_workflow_id"/> <a:map from="workflow_code" to="link_workflow_code"/> <a:map from="workflow_desc" to="link_workflow_desc"/> </a:mapping> </a:field> <a:field name="node_desc" maxLength="2000" required="true"/> </a:fields> <a:events> <a:event name="update" handler="onUpdate_nodeDs"/> <a:event name="beforeremove" handler="befremove_nodes"/> </a:events> </a:dataSet> <a:dataSet id="endProcPage_workflowStatusDs"> <a:datas dataSource="/model/workflow_status_list"/> </a:dataSet> </a:dataSets> <a:screenBody> <a:form column="4" labelWidth="100" marginWidth="30" title="工作流信息"> <a:textField name="workflow_type_code" bindTarget="wflUpdateDs" prompt="工作流类型"/> <a:textField name="workflow_code" bindTarget="wflUpdateDs" prompt="工作流代码"/> <a:textField name="workflow_desc" bindTarget="wflUpdateDs" prompt="工作流描述"/> <a:textField name="sub_category_desc" bindTarget="wflUpdateDs" prompt="主从属性"/> </a:form> <a:hBox> <a:button click="close_nodePage" text="返回"/> <a:button click="save_wflUpdateDs" text="保存"/> </a:hBox> <a:tabPanel id="nodePage_tabPanel" marginHeight="200" marginWidth="30"> <a:tabs> <a:tab prompt="节点信息" width="100"> <script type="text/javascript"><![CDATA[ function calc_wfl_complete() { Leaf.request({ url: $('bmLink_calc_wfl_complete').getUrl(), para: { workflow_id:'${/parameter/@workflow_id}' }, success: function(res) { refresh_nodeDs(); }, failure: function() { }, error: function() { }, scope: this }); } function graphics_preview_refresh() { var tabPanel = $('nodePage_tabPanel'); tabPanel.reloadTab(1, tabPanel.items[1].ref); } function nodeDs_grid_editor_nf_integer_fun(record,name){ var node_type = record.get('node_type'); if (node_type=='START_NODE' || node_type=='END_NODE'){ return ''; } return 'nodeDs_grid_editor_nf_integer'; } function nodeDs_grid_editor_tf_fun(record,name){ var node_type = record.get('node_type'); if (node_type=='START_NODE' || node_type=='END_NODE'){ return ''; } return 'nodeDs_grid_editor_tf'; } ]]></script> <a:grid id="nodeDs_grid" bindTarget="nodeDs" marginHeight="230" marginWidth="60"> <a:toolBar> <a:button type="add"/> <a:button type="delete"/> <a:button click="calc_wfl_complete" icon="${/request/@context_path}/images/zjwfl/zjwfl_refresh.png" text="刷新数据完整度"/> </a:toolBar> <a:columns> <a:column name="sequence_num" align="right" editorFunction="nodeDs_grid_editor_nf_integer_fun" prompt="节点序号" width="100"/> <a:column name="node_desc" editorFunction="nodeDs_grid_editor_tf_fun" prompt="节点描述" width="250"/> <a:column name="node_type_desc" editorFunction="editorFun_nodeDs_grid" prompt="节点类型" width="200"/> <a:column name="info_complete_rate" align="right" prompt="数据完整度" renderer="render_nodeDs_grid"/> <a:column name="node_edit" align="center" prompt="编辑节点" renderer="render_nodeDs_grid" width="100"/> <a:column name="link_workflow_code" editorFunction="editorFun_nodeDs_grid" prompt="链接流程代码" width="200"/> <a:column name="link_workflow_desc" prompt="链接流程描述" width="200"/> </a:columns> <a:editors> <a:numberField id="nodeDs_grid_editor_nf_integer" allowDecimals="false" allowNegative="false"/> <a:textField id="nodeDs_grid_editor_tf"/> <a:comboBox id="nodeDs_grid_editor_comb"/> <a:lov id="nodeDs_grid_editor_lov"/> <a:checkBox id="nodeDs_grid_editor_check"/> </a:editors> </a:grid> </a:tab> <a:tab prompt="节点图形" ref="${/request/@context_path}/modules/zjwfl/zj_wfl_graphics_preview.lview?workflow_id=${/parameter/@workflow_id}" width="100"><![CDATA[ ]]></a:tab> <a:placeHolder id="main_process_define"/> </a:tabs> </a:tabPanel> </a:screenBody> </a:view> <a:view-config> <c:create-config targetId="main_process_define"> <p:switch test="/model/workflow_record/record/@sub_category"> <p:case value="MAIN_PROCESS"> <c:process-config> <a:tab prompt="页面显示" width="100"> <a:screenBody> <a:fieldSet labelWidth="110" marginWidth="60" padding="0" title="页面显示信息"> <table> <tr> <td style="text-align:right;" width="100px"><![CDATA[自定义]]></td> <td width="160px"> <a:checkBox name="display_type" bindTarget="wflUpdateDs" prompt="自定义"/> </td> <td style="text-align:right;" width="100px"> <a href="javascript:define_workflow_service_para();"><![CDATA[参数定义]]></a> </td> <td><![CDATA[ ]]></td> </tr> <tr> <td style="text-align:right;" width="100px"><![CDATA[显示页面]]></td> <td> <a:lov name="display_service_desc" bindTarget="wflUpdateDs" prompt="显示页面"/> </td> <td style="text-align:right;" width="100px"><![CDATA[页面名称]]></td> <td> <a:textField name="display_service_name" bindTarget="wflUpdateDs" prompt="页面名称" width="500"/> </td> </tr> </table> <!-- <a:checkBox name="display_type" bindTarget="wflUpdateDs" prompt="自定义"/> <a href="javascript:define_workflow_service_para();"><![CDATA[参数定义]]></a> <a:lov name="display_service_desc" bindTarget="wflUpdateDs" prompt="显示页面"/> <a:textField name="display_service_name" bindTarget="wflUpdateDs" prompt="页面名称" width="300" /> --> </a:fieldSet> <a:fieldSet labelWidth="110" marginWidth="60" padding="0" title="审批历史"> <table> <tr> <td style="text-align:right;" width="100px"><![CDATA[显示审批历史]]></td> <td width="160px"> <a:checkBox name="show_approve_history_flag" bindTarget="wflUpdateDs" prompt="显示审批历史"/> </td> <td style="text-align:right;" width="100px"><![CDATA[显示所有审批历史]]></td> <td> <a:checkBox name="show_all_approve_ht_flag" bindTarget="wflUpdateDs" prompt="显示所有审批历史"/> </td> </tr> </table> </a:fieldSet> </a:screenBody> </a:tab> </c:process-config> </p:case> </p:switch> </c:create-config> </a:view-config> </a:screen>