<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Author: ouyangzhaochang2663 $
    $Date: 2011/02/21 08:37:47 $
    $Revision: 1.8 $
    $Purpose: UPDATE BY DJ 重构大部分代码
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" trace="true">
    <a:init-procedure>
        <a:model-query model="sys.sys_user" rootPath="user_model"/>
    </a:init-procedure>
    <a:view>
        <script type="text/javascript"><![CDATA[
            function editScreen_close() {
                $('sys_user_edit').close();
            }
            
            function editDs_save() {
                var ds = $('editDs');
                if (ds.validate()) {
                    var record = ds.getCurrentRecord();
                    //ds.submit();
                    Leaf.request({
                        url: '${/request/@context_path}/autocrud/sys.SYS8210.ad_master_user_v/update',
                        para: {
                            user_id: record.get("user_id"),
                            start_date: record.get('start_date'),
                            end_date: record.get('end_date'),
                            password_lifespan_days: record.get('password_lifespan_days'),
                            password_lifespan_access: record.get('password_lifespan_access'),
                            frozen_flag: record.get('frozen_flag'),
                            frozen_date: record.get('frozen_date'),
                            bp_category: record.get('bp_category'),
                            ad_user_id: record.get('ad_user_id'),
                            bp_id:record.get('bp_id')
                        },
                        success: function (res) {
                            Leaf.SideBar.show({
                                msg: '${l:HLS.SUBMIT_SUCCESS}',
                                duration: 2000
                            });
                            $('userDs').query();
                            $('${/parameter/@winid}').close();
                        },
                        failure: function () {
                        },
                        error: function () {
                        },
                        sync: true,
                        scope: this
                    });
                }
            }
            
            function onSubmitSuccess_editDs(dateSet, datas, results) {
                userScreen_userDs_query();
                editScreen_close();
            }
            
            function compareDate(start, end) {
                if (start > end) {
                    return false;
                }
                return true;
            }
            
            function dateValidator(record, name, value) {
                if (name == 'start_date' || name == 'end_date') {
                    var start_date = record.get('start_date');
                    var end_date = record.get('end_date');
                    if (typeof(end_date) != 'undefined' && !Ext.isEmpty(end_date)) {
                        if (!compareDate(start_date, end_date)) {
                            return '${l:START_GREATER_THAN_END}';
                        }
                    }
                    return true;
                }
            }
            
            
            function field_handle(type, record, name) {
                var field = record.getField(name);
                if (type == 'readonly') {
                    field.setReadOnly(true);
                    field.setRequired(false);
                    record.set(name, '');
                } else if (type == 'require') {
                    field.setReadOnly(false);
                    field.setRequired(true);
                }
            
            }
            
            function onUpdate_editDs(ds, record, name, value, oldvalue) {
                /*if (name == 'bp_category') {
                    var user_type = record.get("bp_category");
                    var bp_code = record.getMeta().getField('bp_code');
                    var employee_code = record.getMeta().getField('employee_code');
                    if (user_type == 'EMPLOYEE') {
                        bp_code.setReadOnly(true);
                        employee_code.setReadOnly(false);
                        record.set('bp_id', '');
                        record.set('bp_code', '');
                        record.set('bp_name', '');
                    } else {
                        if (Ext.isEmpty(user_type)) {
                            employee_code.setReadOnly(true);
                            bp_code.setReadOnly(true);
                            record.set('bp_id', '');
                            record.set('bp_code', '');
                            record.set('bp_name', '');
                            record.set('employee_id', '');
                            record.set('employee_code', '');
                            record.set('emp_name', '');
                        } else {
                            bp_code.setReadOnly(false);
                            employee_code.setReadOnly(true);
                            url = 'sys.SYS8210.sys_user_bp_master_lov?bp_category=' + user_type;
                            bp_code.setLovService(url);
                            var mapping = [{
                                from: "bp_id",
                                to: "bp_id"
                            }, {
                                from: "bp_code",
                                to: "bp_code"
                            }, {
                                from: "bp_name",
                                to: "bp_name"
                            }];
                            bp_code.setMapping(mapping);
                            record.set('employee_id', '');
                            record.set('employee_code', '');
                            record.set('emp_name', '');
                        }
                    }
                }*/
                if (name == 'state') {
                    if (value == '1') {
                        field_handle('readonly', record, 'password_lifespan_access');
                        field_handle('require', record, 'password_lifespan_days');
                    } else if (value == '2') {
                        field_handle('require', record, 'password_lifespan_access');
                        field_handle('readonly', record, 'password_lifespan_days');
                    } else {
                        field_handle('readonly', record, 'password_lifespan_access');
                        field_handle('readonly', record, 'password_lifespan_days');
                    }
                } else if (name == 'frozen_flag') {
                    if (value == 'Y') {
                        record.set('frozen_date', new Date().format('yyyy-mm-dd'));
                    } else {
                        record.set('frozen_date', '');
                    }
                } else if (name == 'password' || name == 'confirm_password') {
                    record.validate((name == 'password') ? 'confirm_password' : 'password');
                } else if (name == 'start_date' || name == 'end_date') {
                    record.validate((name == 'start_date') ? 'end_date' : 'start_date');
                }
            }
        ]]></script>
        <a:dataSets>
            <a:dataSet id="editDs" model="sys.sys_user">
                <a:datas dataSource="/model/user_model"/>
                <a:fields>
                    <a:field name="user_name" readOnly="true"/>
                    <a:field name="start_date" required="true" validator="dateValidator"/>
                    <a:field name="end_date" validator="dateValidator"/>
                    <a:field name="description" required="true"/>
                    <a:field name="frozen_date" readOnly="true"/>
                    <a:field name="emp_name" readOnly="true"/>
                    <a:field name="employee_code" autoComplete="true" autoCompleteField="employee_code" lovGridHeight="300" lovHeight="430" lovService="sys.SYS8210.sys_user_employee_lov?ORDER_FIELD=employee_code" lovWidth="500" readOnly="true">
                        <a:mapping>
                            <a:map from="name" to="emp_name"/>
                            <a:map from="employee_code" to="employee_code"/>
                            <a:map from="employee_id" to="employee_id"/>
                        </a:mapping>
                    </a:field>



                    <a:field name="ad_user_id" lovGridHeight="400" lovHeight="600" lovService="sys.SYS8210.ad_master_user_v?ORDER_FIELD=ad_user_id" lovWidth="700" readOnly="true" title="EXP_EMPLOYEES.QUERY">
                        <a:mapping>
                            <a:map from="userid" to="ad_user_id"/>
                            <a:map from="name_zh" to="ad_user_name"/>
                            <a:map from="mail" to="email"/>
                            <a:map from="orgunitid" to="ad_org_unit_id"/>
                            <a:map from="employeeid" to="ad_employee_id"/>
                            <a:map from="firstemployeeid" to="ad_first_employee_id"/>
                            <a:map from="workpersonnelareacode" to="work_personnel_area_code"/>
                            <a:map from="originpersonnelareacode" to="origin_personnel_area_code"/>
                            <a:map from="mobilenumber" to="phone"/>
                            <a:map from="employeestatus" to="employee_status"/>
                        </a:mapping>
                    </a:field>

                    <a:field name="phone" readOnly="true"/>
                    <a:field name="email" readOnly="true"/>
                    <a:field name="ad_org_unit_id" readOnly="true"/>
                    <a:field name="ad_user_name" readOnly="true"/>



                    <a:field name="bp_category_name" displayField="code_value_name" options="user_type_lov_ds" readOnly="true" returnField="bp_category" valueField="code_value"/>
                    <!--<a:field name="bp_code" lovGridHeight="300" lovHeight="460" lovLabelWidth="100" lovWidth="530" readOnly="true">
                        <a:mapping>
                            <a:map from="" to=""/>
                            <a:map from="" to=""/>
                            <a:map from="" to=""/>
                        </a:mapping>
                    </a:field>


                    <a:field name="bp_name" readOnly="true"/>-->

                    <a:field name="bp_name" lovGridHeight="300" lovHeight="460" lovLabelWidth="100" lovWidth="530"
                             lovService="sys.SYS8210.sys_user_bp_master_lov?bp_category=AGENT"
                             readOnly="true">
                        <a:mapping>
                            <a:map from="bp_name" to="bp_name"/>
                            <a:map from="bp_id" to="bp_id"/>
                            <a:map from="bp_code" to="bp_code"/>
                        </a:mapping>
                    </a:field>

                </a:fields>
                <a:events>
                    <a:event name="submitsuccess" handler="onSubmitSuccess_editDs"/>
                    <a:event name="update" handler="onUpdate_editDs"/>
                </a:events>
            </a:dataSet>
        </a:dataSets>
        <a:screenBody>
            <a:screenTopToolbar>
                <a:gridButton click="editScreen_close" text="HLS.CLOSE"/>
                <a:gridButton click="editDs_save" text="HLS.SAVE"/>
            </a:screenTopToolbar>
            <a:fieldSet column="2" labelWidth="100" title="SYS_USER.USER_INFO" width="500">

                <a:comboBox name="bp_category_name" bindTarget="editDs" prompt="SYS_USER.USER_TYPE"/>
                <!--ad master 字段-->
                <a:lov name="ad_user_id" bindTarget="editDs" prompt="账号"/>
                <a:textField name="ad_user_name" bindTarget="editDs" prompt="姓名"/>
                <a:textField name="phone" bindTarget="editDs" prompt="手机号"/>
                <a:textField name="email" bindTarget="editDs" prompt="Email"/>
                <a:textField name="ad_org_unit_id" bindTarget="editDs" prompt="组织ID"/>
                <!--ad master 字段-->


                <!--<a:textField name="user_name" bindTarget="editDs"/>-->

                <a:datePicker name="start_date" bindTarget="editDs"/>
                <a:datePicker name="end_date" bindTarget="editDs"/>
                <!--<a:textField name="description" bindTarget="editDs"/>-->



                <!--<a:textField name="phone" bindTarget="editDs" prompt="SYS_USER.PHONE"/>
                <a:lov name="employee_code" bindTarget="editDs"/>
                <a:textField name="emp_name" bindTarget="editDs"/>
                <a:lov name="bp_code" bindTarget="editDs" prompt="HLS_BP_MASTER.BP_CODE"/>
                <a:textField name="bp_name" bindTarget="editDs" prompt="HLS_BP_MASTER.BP_NAME"/>-->
                <a:checkBox name="frozen_flag" bindTarget="editDs"/>
                <a:datePicker name="frozen_date" bindTarget="editDs"/>
                <a:lov name="bp_name" bindTarget="editDs" prompt="代理商"/>
                <a:hBox padding="0" prompt="SYS_USER.PASSWD_EXPIRED_TYPE">
                    <a:radio name="state" bindTarget="editDs" layout="vertical" style="padding-top:5px;padding-bottom:5px;" width="80">
                        <a:items>
                            <a:item label="SYS_USER.PASSWD_EXPIRED_DAYS" value="1"/>
                            <a:item label="SYS_USER.PASSWD_EXPIRED_TIMES" value="2"/>
                            <a:item label="SYS_USER.PASSWD_EXPIRED_NEVER" value="3"/>
                        </a:items>
                    </a:radio>
                    <a:vBox>
                        <a:numberField name="password_lifespan_days" allowDecimals="false" allowNegative="false" bindTarget="editDs" width="67"/>
                        <a:numberField name="password_lifespan_access" allowDecimals="false" allowNegative="false" bindTarget="editDs" width="67"/>
                    </a:vBox>
                </a:hBox>
            </a:fieldSet>
            <script type="text/javascript"><![CDATA[
                Leaf.onReady(function() {
                    var obj = $('editDs').getCurrentRecord();
                    var user_type = obj.get('bp_category');
                    var bp_code = obj.getMeta().getField('bp_code');
                    var employee_code = obj.getMeta().getField('employee_code');
                    /*if (user_type == 'EMPLOYEE') {
                        bp_code.setReadOnly(true);
                        employee_code.setReadOnly(false);
                    } else {
                        if (Ext.isEmpty(user_type)) {
                            obj.getField('bp_category_name').setReadOnly(false);
                        } else {
                            url = 'sys.SYS8210.sys_user_bp_master_lov?bp_category=' + user_type;
                            bp_code.setLovService(url);
                            var mapping = [{
                                from: "bp_id",
                                to: "bp_id"
                            }, {
                                from: "bp_code",
                                to: "bp_code"
                            }, {
                                from: "bp_name",
                                to: "bp_name"
                            }];
                            bp_code.setMapping(mapping);
                            bp_code.setReadOnly(false);
                            employee_code.setReadOnly(true);
                        }
                    }*/
                });
                
                function init() {
                    var record = $('editDs').getAt(0);
                    var password_lifespan_days = record.get('password_lifespan_days');
                    var password_lifespan_access = record.get('password_lifespan_access');
                
                    var state;
                    if (!Ext.isEmpty(password_lifespan_days)) {
                        state = '1';
                    } else if (!Ext.isEmpty(password_lifespan_access)) {
                        state = '2';
                    } else {
                        state = '3';
                    }
                
                    record.set('state', state);
                
                    if (state == '1' || state == '3') {
                        record.getField('password_lifespan_access').setReadOnly(true);
                    } else if (state == '2' || state == '3') {
                        record.getField('password_lifespan_days').setReadOnly(true);
                    }
                }
                init();
            ]]></script>
        </a:screenBody>
    </a:view>
</a:screen>