Commit 0e4e7c3d authored by superman's avatar superman

1.4.0

parent 3ecd0dfb
webpackJsonp([33],[function(e,n,t){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var c=t(12),o=(u(c),t(6)),r=(u(o),t(46)),s=(u(r),t(36)),a=(u(s),t(50)),f=(u(a),t(124)),i=(u(f),t(89)),d=(u(i),t(166)),l=(u(d),t(53)),p=(u(l),t(90)),_=(u(p),t(146)),b=(u(_),t(125)),k=(u(b),t(115)),v=(u(k),t(127)),w=(u(v),t(114));u(w)}]);
\ No newline at end of file
webpackJsonp([35],[function(e,n,t){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var c=t(12),o=(u(c),t(6)),r=(u(o),t(47)),s=(u(r),t(36)),a=(u(s),t(50)),f=(u(a),t(128)),i=(u(f),t(95)),d=(u(i),t(171)),l=(u(d),t(53)),p=(u(l),t(88)),_=(u(p),t(147)),b=(u(_),t(107)),k=(u(b),t(109)),v=(u(k),t(129)),w=(u(v),t(119));u(w)}]);
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
webpackJsonp([29],{7:[841,23],8:2,14:[841,40],20:[841,31],21:function(e,t,l){"use strict";l(2),l(49),l(48)},23:2,31:2,40:2,48:[841,8],49:2,63:[841,65],65:2,271:function(e,t,l){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=void 0;var n,r,u,d,o,f=(l(20),l(53)),c=a(f),i=(l(7),l(12)),p=a(i),s=(l(63),l(124)),m=a(s),g=(l(14),l(58)),E=a(g),_=l(11),v=a(_),y=l(3),b=a(y),h=l(5),I=a(h),N=l(4),S=a(N),T=(l(21),l(50)),P=a(T),O=l(1),j=a(O),k=l(22),w=l(19),x=(n=(0,k.connect)(function(e){return{loading:e.user.loading}}),r=P["default"].create(),n(u=r((o=d=function(e){function t(){var a,n,r;(0,b["default"])(this,t);for(var u=arguments.length,d=Array(u),o=0;o<u;o++)d[o]=arguments[o];return a=n=(0,I["default"])(this,e.call.apply(e,[this].concat(d))),n.handleSubmit=function(e){e.preventDefault();var t=n.props.form.getFieldsValue();n.props.dispatch((0,v["default"])({},t,{replace:n.props.history.replace,type:"LOGIN_REQUEST"}))},n.render=function(){var e=n.props,t=e.form.getFieldProps,a=e.loading,r=l(589),u=l(831);return j["default"].createElement(c["default"],{spinning:a,tip:"\u6b63\u5728\u767b\u5f55..."},j["default"].createElement("div",{className:r.normal},j["default"].createElement("div",{className:r.content},j["default"].createElement("div",{className:r["login-bg"],style:{backgroundImage:"url("+u+")"}}),j["default"].createElement("div",{className:r["login-container"]},j["default"].createElement("div",null,j["default"].createElement("div",null,j["default"].createElement("h1",null,"\u67a2\u7ebd\u79d1\u6280\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf"),j["default"].createElement(P["default"],{inline:!0,onSubmit:n.handleSubmit.bind(n)},j["default"].createElement("div",null,j["default"].createElement(P["default"].Item,null,j["default"].createElement(E["default"],(0,v["default"])({placeholder:"\u8bf7\u8f93\u5165\u8d26\u6237\u540d"},t("username")))),j["default"].createElement(P["default"].Item,null,j["default"].createElement(E["default"],(0,v["default"])({type:"password",placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801"},t("password"))))),j["default"].createElement("div",null,j["default"].createElement(P["default"].Item,null,j["default"].createElement(m["default"],t("agreement"),"\u8bb0\u4f4f\u6211")),j["default"].createElement(p["default"],{type:"primary",htmlType:"submit"},"\u767b\u5f55"),j["default"].createElement(w.Link,{to:"/register"},j["default"].createElement(p["default"],{type:"ghost"},"\u6ce8\u518c"))))))))))},r=a,(0,I["default"])(n,r)}return(0,S["default"])(t,e),t.prototype.componentWillMount=function(){sessionStorage.clear()},t}(O.Component),d.propTypes={form:O.PropTypes.object,dispatch:O.PropTypes.func},u=o))||u)||u);t["default"]=x,e.exports=t["default"]},589:function(e,t){e.exports={normal:"normal___1GD36",content:"content___1S3IP","login-bg":"login-bg___1CINX","login-container":"login-container___3JgsK",fadeIn:"fadeIn___3V6ip",fadeOut:"fadeOut___FoTgE"}},831:function(e,t,l){e.exports=l.p+"0e82090a7877fbb6f828e531fe738741.jpg"}});
\ No newline at end of file
webpackJsonp([31],{7:[856,23],8:2,14:[856,41],20:[856,31],21:function(e,t,l){"use strict";l(2),l(49),l(48)},23:2,31:2,41:2,48:[856,8],49:2,62:[856,64],64:2,277:function(e,t,l){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=void 0;var n,r,u,d,o,f=(l(20),l(53)),c=a(f),i=(l(7),l(12)),p=a(i),s=(l(62),l(128)),m=a(s),g=(l(14),l(60)),E=a(g),_=l(11),v=a(_),y=l(3),b=a(y),h=l(5),I=a(h),N=l(4),S=a(N),T=(l(21),l(50)),P=a(T),O=l(1),j=a(O),k=l(22),w=l(19),x=(n=(0,k.connect)(function(e){return{loading:e.user.loading}}),r=P["default"].create(),n(u=r((o=d=function(e){function t(){var a,n,r;(0,b["default"])(this,t);for(var u=arguments.length,d=Array(u),o=0;o<u;o++)d[o]=arguments[o];return a=n=(0,I["default"])(this,e.call.apply(e,[this].concat(d))),n.handleSubmit=function(e){e.preventDefault();var t=n.props.form.getFieldsValue();n.props.dispatch((0,v["default"])({},t,{replace:n.props.history.replace,type:"LOGIN_REQUEST"}))},n.render=function(){var e=n.props,t=e.form.getFieldProps,a=e.loading,r=l(599),u=l(845);return j["default"].createElement(c["default"],{spinning:a,tip:"\u6b63\u5728\u767b\u5f55..."},j["default"].createElement("div",{className:r.normal},j["default"].createElement("div",{className:r.content},j["default"].createElement("div",{className:r["login-bg"],style:{backgroundImage:"url("+u+")"}}),j["default"].createElement("div",{className:r["login-container"]},j["default"].createElement("div",null,j["default"].createElement("div",null,j["default"].createElement("h1",null,"\u67a2\u7ebd\u79d1\u6280\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf"),j["default"].createElement(P["default"],{inline:!0,onSubmit:n.handleSubmit.bind(n)},j["default"].createElement("div",null,j["default"].createElement(P["default"].Item,null,j["default"].createElement(E["default"],(0,v["default"])({placeholder:"\u8bf7\u8f93\u5165\u8d26\u6237\u540d"},t("username")))),j["default"].createElement(P["default"].Item,null,j["default"].createElement(E["default"],(0,v["default"])({type:"password",placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801"},t("password"))))),j["default"].createElement("div",null,j["default"].createElement(P["default"].Item,null,j["default"].createElement(m["default"],t("agreement"),"\u8bb0\u4f4f\u6211")),j["default"].createElement(p["default"],{type:"primary",htmlType:"submit"},"\u767b\u5f55"),j["default"].createElement(w.Link,{to:"/register"},j["default"].createElement(p["default"],{type:"ghost"},"\u6ce8\u518c"))))))))))},r=a,(0,I["default"])(n,r)}return(0,S["default"])(t,e),t.prototype.componentWillMount=function(){sessionStorage.clear()},t}(O.Component),d.propTypes={form:O.PropTypes.object,dispatch:O.PropTypes.func},u=o))||u)||u);t["default"]=x,e.exports=t["default"]},599:function(e,t){e.exports={normal:"normal___1GD36",content:"content___1S3IP","login-bg":"login-bg___1CINX","login-container":"login-container___3JgsK",fadeIn:"fadeIn___3V6ip",fadeOut:"fadeOut___FoTgE"}},845:function(e,t,l){e.exports=l.p+"0e82090a7877fbb6f828e531fe738741.jpg"}});
\ No newline at end of file
webpackJsonp([30],{7:[841,23],23:2,272:function(e,t,a){"use strict";function l(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var n=(a(7),a(12)),r=l(n),u=a(1),c=l(u),d=a(590),f=l(d),s=function(){return c["default"].createElement("div",{className:f["default"].normal},c["default"].createElement("div",{className:f["default"].container},c["default"].createElement("h1",{className:f["default"].title},"404"),c["default"].createElement("p",{className:f["default"].desc},"\u672a\u627e\u5230\u8be5\u9875\u9762"),c["default"].createElement("a",{href:"/"},c["default"].createElement(r["default"],{type:"primary",style:{marginTop:5}},"\u8fd4\u56de\u9996\u9875"))))};t["default"]=s,e.exports=t["default"]},590:function(e,t){e.exports={normal:"normal___1J5-e",container:"container___1yrrz",title:"title___3_IsN",desc:"desc___3ktop"}}});
\ No newline at end of file
webpackJsonp([32],{7:[856,23],23:2,278:function(e,t,a){"use strict";function l(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var n=(a(7),a(12)),r=l(n),u=a(1),c=l(u),d=a(600),f=l(d),s=function(){return c["default"].createElement("div",{className:f["default"].normal},c["default"].createElement("div",{className:f["default"].container},c["default"].createElement("h1",{className:f["default"].title},"404"),c["default"].createElement("p",{className:f["default"].desc},"\u672a\u627e\u5230\u8be5\u9875\u9762"),c["default"].createElement("a",{href:"/"},c["default"].createElement(r["default"],{type:"primary",style:{marginTop:5}},"\u8fd4\u56de\u9996\u9875"))))};t["default"]=s,e.exports=t["default"]},600:function(e,t){e.exports={normal:"normal___1J5-e",container:"container___1yrrz",title:"title___3_IsN",desc:"desc___3ktop"}}});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -78,6 +78,15 @@ export default class App extends Component {
en: 'Send Message'
}
]
}, {
title:'Banner管理',
items:[
{
to: '/banners',
cn: 'Banner列表',
en: 'Banners'
}
]
}
]
}, {
......
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {
Row,
Col,
Form,
Input,
Button,
Checkbox,
Select,
message,
Tabs,
Cascader,
Radio,
Upload,
Icon,
Modal,
DatePicker,
Table,
Spin,
Switch,
Slider
} from 'antd';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader/MainHeader';
import HeaderOperation, {DetailOperations} from '../../components/HeaderOperation/HeaderOperation';
import FooterOperation from '../../components/FooterOperation/FooterOperation';
import {UUID, NULL, imgProps, formItemLayout, footerFormSubmitLayout, FILE_UPLOAD, handleUpload} from '../../utils';
const TYPE_ENUM = ['请选择','产品ID', 'URL', '图片'];
@connect(state=>({
user: state.user,
loading: state.banner.loading,
item: state.banner.item,
isEdit: state.banner.isEdit
}))
@Form.create()
export default class Item extends Component {
static propsType = {
item: PropTypes.object,
user: PropTypes.object,
dispatch: PropTypes.func
};
constructor(props, content) {
super(props, content);
this.state = {
weight: 1,
type: undefined,
fileList: []
};
}
componentWillMount() {
this.props.dispatch({
type: 'CLEAR_BANNER_ITEM'
});
}
componentDidMount() {
const {params:{id}} = this.props;
if (id) {
this.fetchItem(id);
}
}
componentWillReceiveProps(nextProps) {
const {params:{id}, history} = this.props;
const {item, isEdit} = nextProps;
if (!id && item && item.id) {
history.replace('/banners/' + item.id);
return;
}
if(!this.props.isEdit && isEdit && item){
this.setState({
fileList: [{
uid: UUID(),
status: 'done',
url: item.pic,
thumbUrl: item.pic + '!t'
}],
type: item.type,
weight: item.weight
});
}
}
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_BANNER_ITEM',
id
});
}
handleSubmit(e) {
e.preventDefault();
const {form, dispatch, params:{id}} = this.props;
const data = form.getFieldsValue();
data.weight = this.state.weight;
data.pic = this.state.fileList[0] ? this.state.fileList[0].url : undefined;
data.type = this.state.type;
data.status = data.status ? 1 : 0;
if (id) {
data.id = id;
}
console.log(data, id, data.id ? 'CREATE_BANNER_ITEM' : 'UPDATE_BANNER_ITEM');
dispatch({
type: data.id ? 'UPDATE_BANNER_ITEM' : 'CREATE_BANNER_ITEM',
item: data
});
}
render = ()=> {
let {item, loading, form:{getFieldProps}, location:{query}, isEdit, params, dispatch, user} = this.props;
const isCreate = !params.id;
if (!params.id) {
item = {};
isEdit = true;
}
const breadcrumb = isCreate ? ['Banner管理', '新增Banner'] : ['Banner管理', 'Banner详情'];
const title = isCreate ? '添加Banner' : ('Banner详情' + (isEdit ? ' - 编辑' : ''));
const operation = (
<HeaderOperation history={this.props.history}
buttons={DetailOperations('BANNER', params.id, isEdit, dispatch)}/>
);
const header = (
<MainHeader breadcrumb={breadcrumb} title={title}
operation={operation}
/>
);
const redirectNamePlaceholder = {0: '无需填写', 1: '请输入一个产品ID', 2: '请输入消息跳转指定的URL地址'};
return (
<Layout header={header}>
<Spin spinning={loading}>
{
item &&
<Form className="main-form" horizontal onSubmit={this.handleSubmit.bind(this)}>
<Form.Item label="Banner标题" {...formItemLayout}>
{
isEdit ?
<Input placeholder="Banner标题"
{...getFieldProps('title', {
initialValue:item.title
})} />
:
item.title || NULL
}
</Form.Item>
<Form.Item label="Banner图片" {...formItemLayout}>
{
isEdit ?
<Upload {...FILE_UPLOAD} listType="picture-card"
multiple={false}
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({fileList: handleUpload(info, 1)})}
onPreview={file => {
this.setState({
priviewImage: file.url,
priviewVisible: true
});
}}
fileList={this.state.fileList}>
<Icon type="upload"/>
<div className="ant-upload-text">上传Banner</div>
</Upload>
:
<img {...imgProps(this, item.pic)} style={{display:'block'}} />
}
<Modal footer={null}
width="100vw"
visible={this.state.priviewVisible}
className="img-priview-dialog"
style={{height:'100vh', background:'transparent'}}
onCancel={()=>this.setState({ priviewVisible: false })}>
<img src={this.state.priviewImage} style={{maxWidth:'100%'}}/>
</Modal>
</Form.Item>
<Form.Item label="Banner跳转" {...formItemLayout}>
{
isEdit ?
<Row>
<Col span="6">
<Select placeholder="请选择"
value={this.state.type}
onChange={value=>this.setState({type: value})}>
{
TYPE_ENUM.map((type, index)=>
<Select.Option key={'type-'+index} value={index}>{type}</Select.Option>
)
}
</Select>
</Col>
<Col span="18" style={{paddingLeft: '.5em'}}>
<Input placeholder={redirectNamePlaceholder[this.state.redirectName]}
{...getFieldProps('redirect', {
initialValue: item.redirect
})} />
</Col>
</Row>
:
TYPE_ENUM[item.type]+': '+ item.redirect
}
</Form.Item>
<Form.Item label="权重配置" {...formItemLayout}>
{
isEdit ?
<Slider min={1} max={100} value={this.state.weight}
onChange={value=>this.setState({weight: value})}/>
:
item.weight
}
</Form.Item>
<Form.Item label="是否展示" {...formItemLayout}>
<Switch checkedChildren="是" unCheckedChildren="关"
{...getFieldProps('status')}
disabled={!isEdit}
defaultChecked={!!item.status}
/>
</Form.Item>
<FooterOperation {...this.props} isEdit={isEdit} command="BANNER"
hasCancel={!isCreate}/>
</Form>
}
</Spin>
</Layout>
);
}
}
This diff is collapsed.
......@@ -7,6 +7,10 @@ const Home = ({location}) => {
<div className={styles.home}>
<h1 style={{marginBottom: 50}}>欢迎使用枢纽科技后台</h1>
<h3>2016-09-20 更新 1.4.0</h3>
<p>
1. 需求增加: Banner管理<br/>
</p>
<h3>2016-08-26 更新 1.3.7</h3>
<p>
1. 需求增加: 报单审核过程中,开户行内容允许修改<br/>
......
.home {
padding: 20px 50px 20px 100px;
overflow-y: auto;
h1 {
font-size: 24px !important;
}
......
This diff is collapsed.
......@@ -82,6 +82,23 @@ export default (store)=> {
}, 'javascript/Announcement-Item');
}}/>
</Route>
<Route path="banners">
<IndexRoute getComponents={(location, callback)=> {
require.ensure([], function (require) {
callback(null, require('../containers/Banner/List'));
}, 'javascript/Banner-List');
}}/>
<Route path="create" getComponents={(location, callback)=> {
require.ensure([], function (require) {
callback(null, require('../containers/Banner/Item'));
}, 'javascript/Banner-Item');
}}/>
<Route path=":id" getComponents={(location, callback)=> {
require.ensure([], function (require) {
callback(null, require('../containers/Banner/Item'));
}, 'javascript/Banner-Item');
}}/>
</Route>
<Route path="remittance">
<Route path="audits">
<IndexRoute getComponents={(location, callback)=> {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment