mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			241 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// Fixture taken from https://github.com/jcingroup/C551608_Roki/blob/master/Work.WebProj/Scripts/src/tsx/m-parm.tsx
 | 
						||
 | 
						||
import $ = require('jquery');
 | 
						||
import React = require('react');
 | 
						||
import ReactDOM = require('react-dom');
 | 
						||
import Moment = require('moment');
 | 
						||
import ReactBootstrap = require("react-bootstrap");
 | 
						||
import CommCmpt = require('comm-cmpt');
 | 
						||
import CommFunc = require('comm-func');
 | 
						||
 | 
						||
namespace Parm {
 | 
						||
    interface ParamData {
 | 
						||
        Email?: string;
 | 
						||
        PurchaseTotal?: number;
 | 
						||
        HomoiothermyFee?: number;
 | 
						||
        RefrigerFee?: number;
 | 
						||
        AccountName?: string;
 | 
						||
        BankName?: string;
 | 
						||
        BankCode?: string;
 | 
						||
        AccountNumber?: string;
 | 
						||
        Fee?: number;
 | 
						||
    }
 | 
						||
    export class GridForm extends React.Component<any, { param?: ParamData }>{
 | 
						||
 | 
						||
 | 
						||
        constructor() {
 | 
						||
 | 
						||
            super();
 | 
						||
            this.queryInitData = this.queryInitData.bind(this);
 | 
						||
            this.handleSubmit = this.handleSubmit.bind(this);
 | 
						||
            this.componentDidMount = this.componentDidMount.bind(this);
 | 
						||
            this.setInputValue = this.setInputValue.bind(this);
 | 
						||
            this.render = this.render.bind(this);
 | 
						||
            this.state = {
 | 
						||
                param: {
 | 
						||
                    Email: null,
 | 
						||
                    PurchaseTotal: 0,
 | 
						||
                    HomoiothermyFee: 0,
 | 
						||
                    RefrigerFee:0,
 | 
						||
                    AccountName: null,
 | 
						||
                    BankName: null,
 | 
						||
                    BankCode: null,
 | 
						||
                    AccountNumber: null,
 | 
						||
                    Fee: 0
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
        static defaultProps = {
 | 
						||
            apiInitPath: gb_approot + 'Active/ParmData/aj_ParamInit',
 | 
						||
            apiPath: gb_approot + 'api/GetAction/PostParamData'
 | 
						||
        }
 | 
						||
        componentDidMount() {
 | 
						||
            this.queryInitData();
 | 
						||
        }
 | 
						||
        queryInitData() {
 | 
						||
            CommFunc.jqGet(this.props.apiInitPath, {})
 | 
						||
                .done((data, textStatus, jqXHRdata) => {
 | 
						||
                    this.setState({ param: data });
 | 
						||
                })
 | 
						||
                .fail((jqXHR, textStatus, errorThrown) => {
 | 
						||
                    CommFunc.showAjaxError(errorThrown);
 | 
						||
                });
 | 
						||
        }
 | 
						||
        handleSubmit(e: React.FormEvent) {
 | 
						||
 | 
						||
            e.preventDefault();
 | 
						||
            CommFunc.jqPost(this.props.apiPath, this.state.param)
 | 
						||
                .done((data, textStatus, jqXHRdata) => {
 | 
						||
                    if (data.result) {
 | 
						||
                        CommFunc.tosMessage(null, '修改完成', 1);
 | 
						||
                    } else {
 | 
						||
                        alert(data.message);
 | 
						||
                    }
 | 
						||
                })
 | 
						||
                .fail((jqXHR, textStatus, errorThrown) => {
 | 
						||
                    CommFunc.showAjaxError(errorThrown);
 | 
						||
                });
 | 
						||
            return;
 | 
						||
        }
 | 
						||
        handleOnBlur(date) {
 | 
						||
 | 
						||
        }
 | 
						||
        setInputValue(name: string, e: React.SyntheticEvent) {
 | 
						||
            let input: HTMLInputElement = e.target as HTMLInputElement;
 | 
						||
            let obj = this.state.param;
 | 
						||
            obj[name] = input.value;
 | 
						||
            this.setState({ param: obj });
 | 
						||
        }
 | 
						||
        render() {
 | 
						||
 | 
						||
            var outHtml: JSX.Element = null;
 | 
						||
 | 
						||
            let param = this.state.param;
 | 
						||
            let InputDate = CommCmpt.InputDate;
 | 
						||
 | 
						||
            outHtml = (
 | 
						||
                <div>
 | 
						||
    <ul className="breadcrumb">
 | 
						||
        <li><i className="fa-list-alt"></i>
 | 
						||
            {this.props.menuName}
 | 
						||
            </li>
 | 
						||
        </ul>
 | 
						||
    <h4 className="title"> {this.props.caption} 基本資料維護</h4>
 | 
						||
    <form className="form-horizontal" onSubmit={this.handleSubmit}>
 | 
						||
        <div className="col-xs-12">
 | 
						||
            <div className="item-box">
 | 
						||
                {/*--email--*/}
 | 
						||
                <div className="item-title text-center">
 | 
						||
                <h5>Email信箱設定</h5>
 | 
						||
                    </div>
 | 
						||
                    <div className="alert alert-warning" role="alert">
 | 
						||
                        <ol>
 | 
						||
                            <li>多筆信箱請用「<strong className="text-danger">, </strong>」逗號分開。<br />ex.<strong>user1 @demo.com.tw, user2 @demo.com.tw</strong></li>
 | 
						||
                            <li>Email 前面可填收件人姓名,用「<strong className="text-danger">: </strong>」冒號分隔姓名和信箱,此項非必要,可省略。<br />ex.<strong>收件人A: user1 @demo.com.tw, 收件人B: user2 @demo.com.tw</strong></li>
 | 
						||
                            </ol>
 | 
						||
                        </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-1 control-label">收件信箱</label>
 | 
						||
                       <div className="col-xs-9">
 | 
						||
                                <input className="form-control" type="text"
 | 
						||
                                    value={param.Email}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'Email') }
 | 
						||
                                    maxLength={500}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        </div>
 | 
						||
                {/*--email end--*/}
 | 
						||
                {/*--shoppingCost--*/}
 | 
						||
                <div className="item-title text-center">
 | 
						||
                <h5>訂單運費設定</h5>
 | 
						||
                    </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-3 control-label">會員下訂單,當訂單金額少於NT$</label>
 | 
						||
                       <div className="col-xs-1">
 | 
						||
                                <input className="form-control" type="number"
 | 
						||
                                    value={param.PurchaseTotal}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'PurchaseTotal') }
 | 
						||
                                    min={0}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        <label className="col-xs-2 control-label">元時須付常溫運費NT$</label>
 | 
						||
                       <div className="col-xs-1">
 | 
						||
                                <input className="form-control" type="number"
 | 
						||
                                    value={param.HomoiothermyFee}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'HomoiothermyFee') }
 | 
						||
                                    min={0}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        <label className="col-xs-2 control-label">元或冷凍(冷藏)運費NT$</label>
 | 
						||
                       <div className="col-xs-1">
 | 
						||
                                <input className="form-control" type="number"
 | 
						||
                                    value={param.RefrigerFee}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'RefrigerFee') }
 | 
						||
                                    min={0}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        <label className="col-xs-1 control-label">元</label>
 | 
						||
                        </div>
 | 
						||
 | 
						||
                {/*--shoppingCost end--*/}
 | 
						||
                {/*--Payment--*/}
 | 
						||
                <div className="item-title text-center">
 | 
						||
                <h5>付款方式</h5>
 | 
						||
                    </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                     <label className="col-xs-4 control-label">當付款方式選擇『ATM轉帳』時,銀行帳號資料為: </label>
 | 
						||
                        </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-2 control-label">戶名: </label>
 | 
						||
                       <div className="col-xs-3">
 | 
						||
                                <input className="form-control" type="text"
 | 
						||
                                    value={param.AccountName}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'AccountName') }
 | 
						||
                                    maxLength={16}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-2 control-label">銀行: </label>
 | 
						||
                       <div className="col-xs-3">
 | 
						||
                                <input className="form-control" type="text"
 | 
						||
                                    value={param.BankName}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'BankName') }
 | 
						||
                                    maxLength={16}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-2 control-label">代碼: </label>
 | 
						||
                       <div className="col-xs-3">
 | 
						||
                                <input className="form-control" type="text"
 | 
						||
                                    value={param.BankCode}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'BankCode') }
 | 
						||
                                    maxLength={5}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        </div>
 | 
						||
                    <div className="form-group">
 | 
						||
                       <label className="col-xs-2 control-label">帳號: </label>
 | 
						||
                       <div className="col-xs-3">
 | 
						||
                                <input className="form-control" type="text"
 | 
						||
                                    value={param.AccountNumber}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'AccountNumber') }
 | 
						||
                                    maxLength={16}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                        </div>
 | 
						||
                    {/*<div className="form-group">
 | 
						||
                     <label className="col-xs-4 control-label">當付款方式選擇『貨到付款』時,須加NT$ </label>
 | 
						||
                       <div className="col-xs-1">
 | 
						||
                                <input className="form-control" type="number"
 | 
						||
                                    value={param.Fee}
 | 
						||
                                    onChange={this.setInputValue.bind(this, 'Fee') }
 | 
						||
                                    min={0}
 | 
						||
                                    required/>
 | 
						||
                           </div>
 | 
						||
                     <label className="control-label">元手續費</label>
 | 
						||
                        </div>*/}
 | 
						||
                {/*--Payment end--*/}
 | 
						||
                </div>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
            <div className="form-action">
 | 
						||
                <div className="col-xs-4 col-xs-offset-5">
 | 
						||
                    <button type="submit" className="btn-primary"><i className="fa-check"></i> 儲存</button>
 | 
						||
                    </div>
 | 
						||
                </div>
 | 
						||
            </div>
 | 
						||
        </form>
 | 
						||
                    </div>
 | 
						||
            );
 | 
						||
 | 
						||
            return outHtml;
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
var dom = document.getElementById('page_content');
 | 
						||
ReactDOM.render(<Parm.GridForm caption={gb_caption} menuName={gb_menuname} iconClass="fa-list-alt" />, dom);
 |