mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +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);
|