項目學習

<button type="button" onclick="javascript:jumpUrl(url('/loanmgr/newloan'));" class="btn btn-primary right add-bottom">新增貸款</button>
<button type=‘button’ onclick=‘javascript:jumpUrl()’>申請貸款

申請貸款須要的信息javascript

<?pho
/**
 * 生成tr
 *
 * $lang = array(
 *     'gender' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender1' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender2' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender3' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 * );
 *
 * $lang = array(
 *     'gender' => '機構名稱',
 *     'gender1' => '性別1',
 *     'gender2' => '性別2',
 *     'gender3' => '性別3',
 * );
 */
function buildTr($data) {
    $_option = $data['_option'];
    $_data = $data['_data'];
    unset($data['_data'], $data['_option']);

    $td_limit = isset($_option['td_limit']) ? $_option['td_limit'] : 2;
    $td_count = 1;
    $tr = '';
    foreach($data as $key => $value) {
        if($td_count === 1) {
            $tr .= "<tr>\r\n";
            $td = '';
        }
        $name = isset($value['name']) ? $value['name'] : $key;
        $val = isset($_data[$key]) ? $_data[$key] : (isset($value['name']) ? $_data[$value['name']] : '');

        $content = '';
        $type = isset($value['type']) ? $value['type'] : 'input';
        switch(strtolower($type)) {
            case 'radio':
                $content = buildRadio($name, $value['option'], $val);
                break;
            case 'select':
                $content = buildSelect($name, $value['option'], $val);
                break;
            default:
                $content = buildInput($name, $val);
                break;
        }

        $title = is_string($value) ? $value : $value['title'];
        $td .= sprintf(buildTd($title), $content);
        if($td_count >= $td_limit) {
            $tr .= $td . "</tr>\r\n";
            $td_count = 1;
        } else {
            $td_count++;
        }
    }
    if(($td_count = $td_limit - (count($data) % $td_limit)) != $td_limit) {
        $tr .= $td;
        $td = '';
        for($i=0;$i<$td_count;$i++) {
            $td .= sprintf(buildTd(''), '');
        }
        $tr .= $td . '</tr>'; 
    }
    return $tr;
}

 

<?php include __DIR__.'/../inc/tool.php'; ?>

<?php
$user = array(
    'user_name' => '姓名<span class="not_null">*</span>',
    'user_phone' => '手機號<span class="not_null">*</span>',
    'user_cardcode' => '身份證號<span class="not_null">*</span>',
    'user_email' => '郵箱',
    'user_address' => '地址',
    'user_fixedphone' => '固定電話',
    'user_qq' => 'QQ號',
    'user_household' => '戶籍地址',
    'user_bank_name' => '銀行名稱',
    'user_bank_card' => '銀行帳號<span class="not_null">*</span>',
    'user_bank_account' => '銀行用戶名<span class="not_null">*</span>',
    'user_bank_code' => array('title'=>'銀行編號<span class="not_null">*</span>', 'type'=>'select', 'option'=>$bank_no),
    'user_bank_phone' => '銀行預留手機號<span class="not_null">*</span>',
    'user_ismarital' => array('title'=>'婚姻情況', 'type'=>'radio', 'option'=>$marital),
    'user_occup' => array('title'=>'職業', 'type'=>'radio', 'option'=>$occup),
    '_data' => array(), 
    '_option' => array('td_limit'=>2), 
);
echo buildTr($user);
?>

魔法常量:php

__FILE__文件的完整路徑和文件名。css

__DIR__文件所在的目錄。html

__FUNCTION__常量返回該函數被定義時的名字java

__CLASS__常量返回該類被定義時的名字jquery

__METHOD__  類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。ajax

__NAMESPACE__  當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。正則表達式

 

 

這塊有個生成tr的工具,須要學習一下json

還有一個操做是,他這裏面沒有在控制器裏面數組

private static $_instance = null;

public static function init() {//調用類裏面的這個方法之後,就能夠直接調用類裏面的其餘方法了
    if(self::$_instance === null) {
        self::$_instance = new self;
    }
    return self::$_instance;
}

$this->response['orgmain'] = Orginfo::init()->instOption();//在這個地方就不用new了,在裏面new過了

 

申請貸款須要的信息是啥:
1)機構、課程、套餐、費率、還款方式什麼的

這裏有個聯動,自動填充的點了解一下

function n(name) {
    return $('select[name="'+name+’」]’);//選擇name爲參數name的,這樣的也封爲一個函數學一下這個思想,別那老思想
}

var inst = n('edu_inst_code');

function p(name) {
    return $('input[name="'+name+'"]');
}

function readonly(names) {//多個readonly的就封一個這樣的函數
    for(i in names) {
        p(names[i]).prop('readonly', 'readonly');
    }
}
var readOnly = [
    'bank_loan_account',
    'bank_loan_name',
    'bank_loan_card',
    'edu_course_amout',
    'edu_grace_period',
    'edu_not_period',
    'edu_service_rate',
    'edu_later_rate',
    'edu_rate',
    'user_bank_name'
];
readonly(readOnly);


inst.change(function() {
   var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code};//data是個什麼玩意兒json嗎     
   p('bank_loan_account').val('');
   p('bank_loan_card').val('');
   p('bank_loan_name').val('');

   ajaxReturn(url('/loanmgr/getbank'), data, function(json) {
       if(json.retcode !== 0) {//
           alert(json.msg);return;
       }
       if(json.data == '') return;

       var fieldsArr = [
           'bank_loan_account',
           'bank_loan_card',
           'bank_loan_name',
           'edu_lender_flag'
           //{'name':'grace_period_repay', 'type':'radio'},
           //{'name':'inst_behalf_way', 'type':'select'}
       ];
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);
       }
   });

   ajaxReturn(url('/loanmgr/getbranch'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       branch.html(buildHtml(json.list, '請選擇分支機構'));
   });
   ajaxReturn(url('/loanmgr/getcourse'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       course.html(buildHtml(json.list, '請選擇課程'));
   });
   ajaxReturn(url('/loanmgr/getplan'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       plan.html(buildHtml(json.list, '請選擇套餐'));
   });
});
// 執行Ajax,封裝一個執行ajax的函數,因此上面那個不知名的Jason字符串data是傳遞到了這裏
function ajaxReturn(url, data, func) {
    $.ajax({
        cache: true,
        type: "POST",
        url:url,
        data:data,
        dataType: 'json',
        error: function(data) {
            alert('系統異常,請稍後再試!');
        },
        success: func
    });
}

職業變化有個聯動,學生、在職、無業,選擇不一樣的職業顯示不一樣的填寫項

// 職業類別
$('input[name="user_occup"]').change(function() {
    changeName($(this).val(), $(this).parents('form'));//兩個jquery方法須要記住,.parents()找父元素,.find()找後代
});
var edu = '<?php echo buildSelect('user_edu', $edu, 0); ?>';
function changeName(occup, obj) {
    for(var i=1;i<4;i++) {
        var occupObj = obj.find('.occup'+i);//選擇哪一個,就顯示哪一個相關選項
        if(occup == i) {
            occupObj.show();
            weoccupObj.find('#edu'+i).html(edu);
            occupObj.find('select,input').prop('disabled', false);
        } else {
            occupObj.hide();
            occupObj.find('select,input').prop('disabled', true);
        }
    }
}
<form class="userinfo" id="userinfo0">
<table class="table table-bordered">
<input type="hidden" name="other_loanid" value="" />
<input type="hidden" name="other_userid" value="" />
<tr class="active">
    <td colspan="4" class="bold user_title">用戶信息</td>
</tr>
<?php
$user = array(
    'user_name' => '姓名<span class="not_null">*</span>',
    'user_phone' => '手機號<span class="not_null">*</span>',
    'user_cardcode' => '身份證號<span class="not_null">*</span>',
    'user_email' => '郵箱',
    'user_address' => '地址',
    'user_fixedphone' => '固定電話',
    'user_qq' => 'QQ號',
    'user_household' => '戶籍地址',
    'user_bank_name' => '銀行名稱',
    'user_bank_card' => '銀行帳號<span class="not_null">*</span>',
    'user_bank_account' => '銀行用戶名<span class="not_null">*</span>',
    'user_bank_code' => array('title'=>'銀行編號<span class="not_null">*</span>', 'type'=>'select', 'option'=>$bank_no),
    'user_bank_phone' => '銀行預留手機號<span class="not_null">*</span>',
    'user_ismarital' => array('title'=>'婚姻情況', 'type'=>'radio', 'option'=>$marital),
    'user_occup' => array('title'=>'職業', 'type'=>'radio', 'option'=>$occup),
    '_data' => array(), 
    '_option' => array('td_limit'=>2), 
);
echo buildTr($user);
?>
<tr>
    <td colspan="4">
<!-- 學生 -->
<table class="table table-bordered occup1">
    <tr>
        <td width="15%" class="bold">學生證件號</td>
        <td width="35%"><input class="form-control" name="user_school_code" type="text" placeholder="" value=""></td>
        <td width="15%" width="15%" class="bold">專業名稱</td>
        <td width="35%"><input class="form-control" name="user_school_major" type="text" placeholder="" value=""></td>
    </tr>
    <tr>
        <td class="bold">學校名稱</td>
        <td><input class="form-control" name="user_school_unit" type="text" placeholder="" value=""></td>
        <td class="bold">錄取方式</td>
        <td><?php echo buildRadio('user_school_enroll', $school_enroll, 0); ?></td>
    </tr>
    <tr>
        <td class="bold">入學時間</td>
        <td>
            <select name="user_school_time" class="form-control">
                <?php for($i=date('Y');$i>=1970;$i--) { $d='%d-00-00';?>
                <option value="<?=sprintf($d, $i)?>"><?=$i?></option>
                <?php } ?>
            </select>
        </td>
        <td class="bold">學校地址</td>
        <td><input class="form-control" name="user_school_address" type="text" placeholder="" value=""></td>
    </tr>
    <tr>
        <td class="bold">學校電話</td>
        <td><input class="form-control" name="user_school_phone" type="text" placeholder="" value=""></td>
<!--        <td class="bold"></td>-->
<!--        <td></td>-->
        <td width="15%" class="bold">教育程度</td>
        <td width="35%" id="edu1"></td>
    </tr>
</table>
<!-- 學生 over -->
<!-- 在職 -->
<table class="table table-bordered occup2">
    <tr>
        <td width="15%" class="bold">教育程度</td>
        <td width="35%" id="edu2"></td>
        <td width="15%" class="bold">工做單位</td>
        <td width="35%"><input class="form-control" name="user_unit_name" type="text" placeholder="" value=""></td>
    </tr>
    <tr>
        <td class="bold">入職時間</td>
        <td>
            <select name="user_unit_entrytime" class="form-control">
                <?php for($i=date('Y');$i>=2000;$i--) { $d='%d-00-00';?>
                <option value="<?=sprintf($d, $i)?>"><?=$i?></option>
                <?php } ?>
            </select>
        </td>
        <td class="bold" id="position_name">職位</td>
        <td><?php echo buildSelect('user_unit_position', $position, 0); ?></td>
    </tr>
    <tr>
        <td class="bold">單位地址</td>
        <td><input class="form-control" name="user_unit_address" type="text" placeholder="" value=""></td>
        <td class="bold">單位電話</td>
        <td><input class="form-control" name="user_unit_phone" type="text" placeholder="" value=""></td>
    </tr>
</table>
<!-- 在職 over -->
<!-- 無業 -->
<table class="table table-bordered occup3">
    <tr>
        <td width="15%" class="bold">教育程度</td>
        <td width="35%" id="edu3"></td>
        <td width="15%"></td>
        <td width="35%"></td>
    </tr>
</table>
<!-- 無業 over -->
<tr>
    <td class="bold">面籤方式<span class="not_null">*</span></td>
    <td><?php echo buildRadio('user_isinterview', $isinterview, 2); ?></td>
</tr>
<?php foreach($contact_type as $k => $v) { ?>
<tr class="active">
    <td colspan="4" class="bold"><?php echo $v; ?></td>
</tr>
<input type="hidden" name="contact_id<?php echo $k; ?>" value="<?php echo $contact[$k]['id']; ?>" />
<tr>
    <td class="bold">姓名</td>
    <td><input class="form-control" name="contact_name<?php echo $k; ?>" type="text" placeholder="" value=""></td>
    <td class="bold">電話</td>
    <td><input class="form-control" name="contact_phone<?php echo $k; ?>" type="text" placeholder="" value=""></td>
</tr>
<tr>
    <td class="bold">關係</td>
    <td><?php echo buildSelect('contact_relation'.$k, $relation, 0); ?></td>
    <td class="bold"></td>
    <td></td>
</tr>
<?php } ?>

    <tr class="active">
        <td colspan="4" class="bold">照片上傳</td>
    </tr>
    <tr>
        <td>
            選擇身份證照片:
        </td>
        <td>
            <input type="file" id="cert_card_img" name="cert_card_img" multiple="multiple" accept="image/*"/>
        </td>
        <td>
            選擇戶口本照片:
        </td>
        <td>
            <input type="file" id="account_book_img" name = "account_book_img" multiple="multiple" accept="image/*"/>
        </td>
    </tr>

    <tr class="warning">
    <td colspan="4" class="bold">操做</td>
</tr>
<tr>
    <td class="bold"></td>
    <td colspan="3" class="btn_opt">
        <button type="button" mid="0" class="btn btn_save btn-primary">保存訂單</button>
        <button type="button" onclick="javascript:jumpUrl(url('/usermgr/userlist'));" class="btn btn-info">返回列表</button>
    </td>
</tr>
</table>
</form>
// 生成td
function buildTd($title) {
    return str_replace('[]', '%s', sprintf("<td class='bold'>%s</td>\r\n<td>[]</td>\r\n", $title));
}
str_replace(find,replace,string,count)
參數 描述
find 必需。規定要查找的值。
replace 必需。規定替換 find 中的值的值。
string 必需。規定被搜索的字符串。
count 可選。對替換數進行計數的變量。

sprintf(buildTd($title), $content);

 *上面有個厲害操做:

$td .= sprintf(str_replace('[]', '%s', sprintf("<td class='bold'>%s</td>\r\n<td>[]</td>\r\n", $title)), $content);

分析下,"<td class='bold'>%s</td>\r\n<td>[]</td>\r\n"這個字符串裏面有兩個部分須要替換,title和content,第一個td填充title,第二個填充content,

不對感受是個畫蛇添足的操做。。直接printf("<td class='bold'>%s</td>\r\n<td>%s</td>\r\n",$title, $content)爲啥還用[]中間轉化一次

 像這個這樣

// 生成input
function buildInput($name, $value='') {
    return sprintf('<input class="form-control" name="%s" type="text" placeholder="" value="%s">', $name, $value);
}

看明白生成tr是什麼原理:

無不是生成以下的形式<tr><td>title</td><td>content</td></tr><tr><td>title1</td><td>content1</td></tr>

傳遞的參數是以下形式:這兩種

/**
 * 生成tr
 *
 * $lang = array(
 *     'gender' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender1' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender2' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 *     'gender3' => array('title'=>'機構名稱', 'type'=>'radio', 'option'=>array(1=>'男', 2=>'女')),
 * );
 *
 * $lang = array(//沒有type即爲文本框
 *     'gender' => '機構名稱',
 *     'gender1' => '性別1',
 *     'gender2' => '性別2',
 *     'gender3' => '性別3',
 * );
 */
$org = array(
'edu_inst_code' => array('title'=>'主機構', 'type'=>'select', 'option'=>$orgmain),
'edu_branch_code' => array('title'=>'分支機構', 'type'=>'select', 'option'=>$orgbranch),
'edu_course_code' => array('title'=>'課程', 'type'=>'select', 'option'=>$course),
'edu_plan_code' => array('title'=>'套餐', 'type'=>'select', 'option'=>$case),
'bank_loan_name' => '開戶行名稱',
'bank_loan_account' => '開戶行用戶名',
'bank_loan_card' => '開戶行卡號',
'edu_course_amout' => '課程金額(元)',
'edu_course_cycle' => '課程週期',
'product_prototype' => array('title'=>'還款方式', 'type'=>'radio', 'option'=>$product_prototype),
'edu_grace_period' => '寬限期',
'edu_not_period' => '非寬限期',
'edu_service_rate' => '寬限期服務費率(%%)',
'edu_later_rate' => '非寬限期服務費率(%%)',
'edu_rate' => '貸款利率(%%)',
'money' => '貸款額度(元)<span class="not_null">*</span>',
'grace_period_repay' => array('title'=>'寬限期還款方式', 'type'=>'radio', 'option'=>$grace_period_repay),
'inst_behalf_way' => array('title'=>'機構代還方式', 'type'=>'select', 'option'=>$inst_behalf_way),
'_data' => array(),
'_option' => array('td_limit'=>2),
);
echo buildTr($org);
'_option' => array('td_limit'=>2)這個也是一個比較重要的點,<tr>和<td>的拼接,<tr>比較容易取決於<td>的結束,這裏有個<td>的計數,td_limit=2,兩個<td>結束加上</tr>結束符
下面這段不懂算了。。
if(($td_count = $td_limit - (count($data) % $td_limit)) != $td_limit) {
        $tr .= $td;
        $td = '';
        for($i=0;$i<$td_count;$i++) {
            $td .= sprintf(buildTd(''), '');
        }
        $tr .= $td . '</tr>'; 
    }

接着往下看

繼續jquery頁面處理:

主機構選擇聯動變化:

inst.change(function() {
   var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code};     
   p('bank_loan_account').val('');
   p('bank_loan_card').val('');
   p('bank_loan_name').val('');

   ajaxReturn(url('/loanmgr/getbank'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       if(json.data == '') return;

       var fieldsArr = [
           'bank_loan_account',
           'bank_loan_card',
           'bank_loan_name',
           'edu_lender_flag'
           //{'name':'grace_period_repay', 'type':'radio'},
           //{'name':'inst_behalf_way', 'type':'select'}
       ];
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);//學習人家這裏這種時刻封裝,生成form表單,相似Tool中的bulidTr的作法
       }
   });

   ajaxReturn(url('/loanmgr/getbranch'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       branch.html(buildHtml(json.list, '請選擇分支機構'));//.html()獲取和設置內容;buildHtml()這個函數放在下面
   });
   ajaxReturn(url('/loanmgr/getcourse'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       course.html(buildHtml(json.list, '請選擇課程'));
   });
   ajaxReturn(url('/loanmgr/getplan'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       plan.html(buildHtml(json.list, '請選擇套餐'));
   });
});
function buildHtml(s, t) {//s爲全部選項的內容,t爲標題
var h = ['<option value="">'+t+'</option>'];
$.each(s, function(i, n) {//循環全部的內容
h.push('<option value="'+i+'">'+n+'</option>');
});
return h.join("\r\n");
}
 
 
 
 
 
arrayObj.join(separator); //返回字符串,這個字符串將數組的每個元素值鏈接在一塊兒,中間用 separator 隔開。

jquery對數組的操做:

建立:[];例,var h=['<option value="">'+t+'</option>']或者以下這種

var fieldsArr = [
{'name':'grace_period_repay', 'type':'radio'},
{'name':'inst_behalf_way', 'type':'select'}
];

添加:push;例,h.push('<option value="'+i+'">'+n+'</option>')或者

fieldsArr.push(
'bank_loan_account',
'bank_loan_card',
'bank_loan_name'
);

數組元素字符串華:.join(separator),返回字符串,這個字符串將數組的每個元素值鏈接在一塊兒,中間用 separator 隔開;例,h.join("\r\n")

*這裏下拉框有個知識點,進入頁面默認顯示$course = array(''=>'請選擇課程');'edu_course_code' => array('title'=>'課程', 'type'=>'select', 'option'=>$course),echo buildTr($org);生成select標籤,選定了主機構之後,利用機構編號下面的選擇框獲取到數據填充,buildHtml(s, t)添加數據

 

寫HTML代碼的時候,能夠內嵌PHP代碼使用tool.php中的buildTr函數來建立,jquery代碼中不能夠內嵌PHP代碼,就封裝兩個函數一個是buildHtml一個是form函數

接着研究,下面看一下jquery中的form函數是怎麼使用的,

// 套餐下拉切換
plan.change(function() {
   ajaxReturn(url('/loanmgr/doplan'), {code:$(this).val()}, function(json) {
    //看一下json傳的是什麼樣的數據
    
if(json.retcode !== 0) { alert(json.msg);return; } var fieldsArr = [ {'name':'product_prototype', 'type':'radio'}, 'edu_grace_period', 'edu_not_period', 'edu_service_rate', 'edu_later_rate', 'edu_rate' ]; for(var i in fieldsArr) { form(fieldsArr[i], json.data); } }); }); function form(o, v) { var type, name; if(typeof o == 'object') {//typeof是是判斷數據類型的
     //針對的是這種形式的元素:{'name':'prodect_prototype','type':'radio'} type
= o.type; name = o.name; } else {
     //針對的是這樣的元素:'edu_grace_period' type
= 'input'; name = o; } v = v[name]; if(v == undefined) return; switch(type) { case 'radio': radio(name, v); break; case 'select': select(name, v); break; default: input(name, v); } }
//阻止默認事件.好比當你點擊帶有href值的a標籤時,元素響應click事件後,還會發生頁面跳轉.若是加上這個方法(屬性)後,瀏覽器只會響應click事件,不會發生跳轉.
p('product_prototype').click(function(e) { e.preventDefault() });

捋一下產品信息模塊的juery實現,下面是全部的代碼

inst.change(function() {
   var edu_inst_code = $(this).val(), data={edu_inst_code:edu_inst_code};     
   p('bank_loan_account').val('');
   p('bank_loan_card').val('');
   p('bank_loan_name').val('');

   ajaxReturn(url('/loanmgr/getbank'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       if(json.data == '') return;

       var fieldsArr = [
           'bank_loan_account',
           'bank_loan_card',
           'bank_loan_name',
           'edu_lender_flag'
           //{'name':'grace_period_repay', 'type':'radio'},
           //{'name':'inst_behalf_way', 'type':'select'}
       ];
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);
       }
   });

   ajaxReturn(url('/loanmgr/getbranch'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       branch.html(buildHtml(json.list, '請選擇分支機構'));
   });
   ajaxReturn(url('/loanmgr/getcourse'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       course.html(buildHtml(json.list, '請選擇課程'));
   });
   ajaxReturn(url('/loanmgr/getplan'), data, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       plan.html(buildHtml(json.list, '請選擇套餐'));
   });
});

// 分支下拉切換
branch.change(function() {
   ajaxReturn(url('/loanmgr/dobranch'), {code:$(this).val()}, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       var fieldsArr = [
           {'name':'grace_period_repay', 'type':'radio'},
           {'name':'inst_behalf_way', 'type':'select'}
       ];
       if(p('edu_lender_flag').val() != '1') { // 若是是分支機構帳號
           fieldsArr.push(
               'bank_loan_account',
               'bank_loan_card',
               'bank_loan_name'
           ); 
       }
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);
       }
   });
});

// 課程下拉切換
course.change(function() {
   ajaxReturn(url('/loanmgr/docourse'), {code:$(this).val()}, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       var fieldsArr = [
           'edu_course_amout',
           'edu_course_cycle'
       ];
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);
       }
   });
});

// 套餐下拉切換
plan.change(function() {
   ajaxReturn(url('/loanmgr/doplan'), {code:$(this).val()}, function(json) {
       if(json.retcode !== 0) {
           alert(json.msg);return;
       }
       var fieldsArr = [
           {'name':'product_prototype', 'type':'radio'},
           'edu_grace_period',
           'edu_not_period',
           'edu_service_rate',
           'edu_later_rate',
           'edu_rate'
       ];
       for(var i in fieldsArr) {
           form(fieldsArr[i], json.data);
       }
   });
});

// 執行Ajax
function ajaxReturn(url, data, func) {
$.ajax({
cache: true,
type: "POST",
url:url,
data:data,
dataType: 'json',
error: function(data) {
alert('系統異常,請稍後再試!');
},
success: func
});
}

整個的邏輯是這樣,顯示主機構選擇是,獲取到分支機構、課程、套餐、開戶行等信息,進行填充,具體是這樣一開始生成HTML的時候沒有數據,只有一個選項-請選擇xxx,選擇後填充時將對應的請選擇xxx和相應數據拼接填充

**接着研究添加貸款信息那塊,這麼沒有好好,返回來再好好看看

 添加貸款人信息這個功能是同一個機構添加多個貸款學生的話,就用這個添加。這個案件永遠在最下邊

<?php if(empty($readonly)) { ?>//$readonly是標識權限的b變量,若是隻讀的話,不會顯示添加貸款人信息這個按鈕
<div class="bs-glyphicons" id="table-form">
  <a href="javascript:newBranchForm();">
      <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
      <span class="glyphicon-class">添加貸款人信息</span>
  </a>
</div>
<?php } ?>
// 添加貸款用戶表單
function newBranchForm() {
addLoaninfo();
}

// 添加貸款用戶表單
function addLoaninfo() {
  //這個的意思是取到那個form,進行拷貝,對新的form進行改造
var userinfo=$('#userinfo'), mClone=userinfo.clone(), count=$('.userinfo').size();
mClone.attr('id', 'userinfo'+count);
mClone.find('.user_title').html('新增用戶信息');
mClone.find('.btn_save').attr('mid', count);
mClone.find('input[name="user_occup"]').change(function() {
changeName($(this).val(), $(this).parents('form'));
});
mClone.find('input[name="user_isdoubtful"]').change(function() {
isDoubtful($(this).val(), $(this).parents('form'));
});
mClone.show();
$('#table-form').before(mClone);
$('.btn_save').unbind().click(saveBranchOrg);
}
$('.btn_save').click(saveBranchOrg);

//這個函數做用是啥,
function changeName(occup, obj) {
for(var i=1;i<4;i++) {
var occupObj = obj.find('.occup'+i);
if(occup == i) {
occupObj.show();
occupObj.find('#edu'+i).html(edu);
occupObj.find('select,input').prop('disabled', false);
} else {
occupObj.hide();
occupObj.find('select,input').prop('disabled', true);
}
}
}


// 保存分支機構信息
function saveBranchOrg() {
var self=$(this), data=JSON.stringify($('#userinfo'+self.attr('mid')).serializeArray()), order=JSON.stringify($('#orginfo').serializeArray());
ajaxReturn(url('/loanmgr/saveloan'), {userinfo:data, orderinfo:order}, function(json) {
if(json.retcode == 0) {
var branch = $('#userinfo'+self.attr('mid')).find('.user_title');
if(branch.size() != 0) {
$('input[name="other_loanid"]').val(json.loanid);
$('input[name="other_userid"]').val(json.userid);

// 上傳圖片
sendImg(json.userid,json.loanid);
var branchHtml = '用戶信息 ( 訂單編號:<span style="color:#D9534F;">'+json.loancode+'</span> )';
branch.html(branchHtml);

}
} else {
alert(json.msg);
}
});
}

function sendImg(userid,loanid){
var cert_card_img = document.getElementById( "cert_card_img" ).files;
var account_book_img = document.getElementById( "account_book_img" ).files;

var fd = new FormData();
fd.append('cert_card_img1', cert_card_img[0]);
fd.append('cert_card_img2', cert_card_img[1]);
fd.append('cert_card_img3', cert_card_img[2]);
fd.append('account_book_img1', account_book_img[0]);
fd.append('account_book_img2', account_book_img[1]);
fd.append('account_book_img3', account_book_img[2]);
fd.append('userid', userid);
fd.append('loanid', loanid);
var xhr = new XMLHttpRequest();
xhr.open("post", url('/loanmgr/saveimg'), true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(fd);
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200) {
alert("添加成功")
}
if (xhr.readyState==4 && xhr.status!=200) {
alert("添加失敗")
}
}
}

 

// 是否可編輯,這個也是權限控制的一種方法,若是權限是隻讀的話不能夠保存
<?php if(!empty($readonly)) { ?>
$('input,textarea').prop('readonly', true);
$('select,.btn_save,.btn_del,input:radio,.btn_operate').prop('disabled', true);
<?php } else { ?>
//$('.loan_disabled').find('select,input,.btn_save').prop('disabled', true);
<?php } ?>

 

 

 

當輸入域失去焦點 (blur) 時改變其顏色:

$("input").blur(function(){
  $("input").css("background-color","#D6D6FF");
});

jQuery json處理看一下

JSON.parse(jsonString): 在一個字符串中解析出JSON對象

JSON.stringify(obj) : 將一個JSON對象轉換成字符串(json字符串轉化爲json字符串)

jQuery.parseJSON(jsonString) : 將格式無缺的JSON字符串轉爲與之對應的JavaScript對象

JSON.parse()和jQuery.parseJSON()的區別:有的瀏覽器不支持JSON.parse()方法,使用jQuery.parseJSON()方法時,在瀏覽器支持時會返回執行JSON.parse()方法的結果,不然會返回相似執行eval()方法的結果

接下來看啥呢,怎麼生成訂單和帳單

 下單操做

 

*學一下催收中心的權限管理那部分

正則表達式也要看看

相關文章
相關標籤/搜索