liting2017 7 роки тому
батько
коміт
668ce10c2d

+ 25 - 0
js/component/manageCenter/set/content.jsx

@@ -79,6 +79,31 @@ class Content extends Component {
                 	});
                 });
             break; 
+            case 'user':
+                require.ensure([], () => {
+                    const User = require('./userManagementS/user').default;
+                    this.setState({
+                        component: <User />                      
+                    });
+                });
+                break;           
+           
+            case 'roles':
+                require.ensure([], () => {
+	                const Roles = require('./userManagementS/roles').default;
+	                this.setState({
+	                    component:<Roles />,	                    	                  
+	                });
+          	    });
+          	    break;
+          	case 'jurisdiction':
+                require.ensure([], () => {
+                    const Jurisdiction = require('./userManagementS/jurisdiction').default;
+                    this.setState({
+                        component: <Jurisdiction />                      
+                    });
+                });
+                break;  
         };
         window.location.hash = key;
     }

+ 12 - 0
js/component/manageCenter/set/leftTab.jsx

@@ -15,6 +15,7 @@ const LeftTab = React.createClass({
                 { key: 'sub1', value: ['member','permission','role','site'] },
                 { key: 'sub2', value: ['organization'] },
                 { key: 'sub3', value: ['businessCategory', 'businessProject'] },
+                { key: 'sub4', value: ['user','roles','jurisdiction'] },
             ]
         };
     },
@@ -63,6 +64,17 @@ const LeftTab = React.createClass({
 		                    业务项目管理
 		                </Menu.Item>	               		           
 		        </SubMenu>
+		        <SubMenu key="sub4" title={<span>新开发用户管理</span>}>	
+	            		<Menu.Item key="user">
+		                    用户信息
+		                </Menu.Item> 
+		                <Menu.Item key="roles">
+		                    角色信息
+		                </Menu.Item>                              
+		                <Menu.Item key="jurisdiction">
+		                    权限信息
+		                </Menu.Item>		           
+		        </SubMenu>
             </Menu>
         );
     }

+ 0 - 252
js/component/manageCenter/set/member.jsx

@@ -1,252 +0,0 @@
-import React from 'react';
-import { Table, Button, Spin, message, Icon, Select, Input } from 'antd';
-import { provinceSelect, provinceList, getProvince } from '../../NewDicProvinceList.js';
-import { companySearch } from '../../tools';
-import ajax from 'jquery/src/ajax/xhr.js';
-import $ from 'jquery/src/ajax';
-import TheModal from './modal.jsx';
-
-const Member = React.createClass({
-    loadData(pageNo) {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            type: 'get',
-            cache: false,
-            url: globalConfig.context + "/api/admin/supervise/adminList",
-            dataType: "json",
-            data: {
-                pageNo: pageNo || 1,
-                pageSize: this.state.pagination.pageSize,
-                province: this.state.searchProvince,
-                mobile: this.state.searchMobile,
-                name: this.state.searchName
-            },
-            success: function (data) {
-                let theArr = [];
-                if (!data.data) {
-                    if (data.error && data.error.length) {
-                        message.warning(data.error[0].message);
-                    };
-                } else {
-                    for (let i = 0; i < data.data.list.length; i++) {
-                        let thisdata = data.data.list[i];
-                        this.state.onlyProvince = thisdata.province;
-                        theArr.push({
-                            key: i,
-                            id: thisdata.id,
-                            mobile: thisdata.mobile,
-                            name: thisdata.name,
-                            email: thisdata.email,
-                            createTime: thisdata.createTime,
-                            number: thisdata.number,
-                            province: thisdata.province,
-                            position: thisdata.position,
-                            superior: thisdata.superior,
-                            superiorId: thisdata.superiorId,
-                            createTimeFormattedDate: thisdata.createTimeFormattedDate
-                        });
-                    };
-                    this.state.pagination.current = data.data.pageNo;
-                    this.state.pagination.total = data.data.totalCount;
-                };
-                this.setState({
-                    data: theArr,
-                    pagination: this.state.pagination
-                });
-            }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    loadInitialData() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/roles',
-            cache: false
-        }).done((rolesres) => {
-            let theAdminRole = [], rolesObj = {};
-            if (rolesres.data && window.adminData) {
-                rolesres.data.map((item) => {
-                    theAdminRole.push(item.id);
-                    rolesObj[item.id] = item.roleName;
-                })
-            }
-            this.setState({
-                roles: rolesres.data,
-                theAdminRole: theAdminRole,
-                rolesObj:rolesObj,
-                loading: false
-            });
-        })
-    },
-    loadBindRoles(uid) {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/admin/role',
-            cache: false,
-            data: {
-                "uid": window.adminData.uid
-            }
-        }).done((data) => {
-            this.setState({
-                currentRoles: data.data || [],
-                loading: false
-            });
-        })
-    },
-    getInitialState() {
-        return {
-            data: [],
-            roles: [],
-            currentRoles:[],
-            rolesObj: {},
-            theAdminRole: [],
-            provinceList: [],
-            dataSource: [],
-            selectedRowKeys: [],
-            selectedRows: [],
-            loading: false,
-            modalData: {},
-            modalShow: false,
-            pagination: {
-                defaultCurrent: 1,
-                defaultPageSize: 10,
-                showQuickJumper: true,
-                pageSize: 10,
-                onChange: function (page) {
-                    this.loadData(page);
-                }.bind(this),
-                showTotal: function (total) {
-                    return '共' + total + '条数据';
-                }
-            },
-            columns: [
-                {
-                    title: '编号',
-                    dataIndex: 'number',
-                    key: 'number'
-                }, {
-                    title: '登录账号',
-                    dataIndex: 'mobile',
-                    key: 'mobile'
-                }, {
-                    title: '名字',
-                    dataIndex: 'name',
-                    key: 'name'
-                }, {
-                    title: '职位',
-                    dataIndex: 'position',
-                    key: 'position'
-                }, {
-                    title: '上级管理员',
-                    dataIndex: 'superior',
-                    key: 'superior'
-                }, {
-                    title: '省份',
-                    dataIndex: 'province',
-                    key: 'province',
-                    render: text => {
-                        return text ? text.split(',').map((item) => {
-                            return getProvince(item) + ' '
-                        }) : []
-                    }
-                }, {
-                    title: '邮箱',
-                    dataIndex: 'email',
-                    key: 'email'
-                }, {
-                    title: '创建时间',
-                    dataIndex: 'createTimeFormattedDate',
-                    key: 'createTimeFormattedDate'
-                }
-            ]
-        }
-    },
-    componentWillMount() {
-        this.state.provinceList = provinceSelect();
-        this.loadData();
-        this.loadInitialData();
-        this.loadBindRoles();
-    },
-    addNew() {
-        let e = {}
-        this.setState({
-            modalData: e,
-            modalShow: true
-        })
-    },
-    edit(e) {
-        this.setState({
-            modalData: e,
-            modalShow: true
-        })
-    },
-    reset() {
-        this.state.searchMobile = undefined;
-        this.state.searchName = undefined;
-        this.state.searchProvince = undefined;
-        this.loadData();
-    },
-    handleReturn(show, render) {
-        this.state.modalShow = show;
-        if (render) {
-            this.loadData();
-        }
-    },
-    render() {
-        return (
-            <Spin spinning={this.state.loading}>
-                <div className="set-content">
-                    <div className="set-title">
-                        <span>管理员设置</span>
-                        <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
-                            onClick={this.addNew}>添加<Icon type="plus" /></Button>
-                    </div>
-                    <div className="set-search">
-                        <Input placeholder="登录号"
-                            value={this.state.searchMobile}
-                            onChange={(e) => { this.setState({ searchMobile: e.target.value }); }} />
-                        <Input placeholder="管理员名字"
-                            value={this.state.searchName}
-                            onChange={(e) => { this.setState({ searchName: e.target.value }); }} />
-                        <Select style={{ width: 120 }}
-                            placeholder="选择一个省份"
-                            showSearch
-                            filterOption={companySearch}
-                            value={this.state.searchProvince}
-                            onChange={(e) => { this.setState({ searchProvince: e }) }} >
-                            {this.state.provinceList.map((item) => {
-                                return <Select.Option key={String(item.value)}>{item.label}</Select.Option>
-                            })}
-                        </Select>
-                        <Button type="primary" onClick={() => { this.loadData() }}>搜索</Button>
-                        <Button onClick={this.reset}>重置</Button>
-                    </div>
-                    <TheModal
-                        theAdminRole={this.state.theAdminRole}
-                        currentRoles={this.state.currentRoles}
-                        roles={this.state.roles}
-                        rolesObj={this.state.rolesObj}
-                        data={this.state.modalData}
-                        onlyProvince={this.state.onlyProvince}
-                        show={this.state.modalShow}
-                        handleReturn={this.handleReturn} />
-                    <Table className='member-table'
-                        columns={this.state.columns}
-                        onRowClick={this.edit}
-                        dataSource={this.state.data}
-                        pagination={this.state.pagination} />
-                </div>
-            </Spin>
-        );
-    }
-});
-export default Member;

+ 0 - 533
js/component/manageCenter/set/modal.jsx

@@ -1,533 +0,0 @@
-import React from 'react';
-import { Tag, Modal, Input, Spin, Switch, Select, message, Popconfirm, Button, Cascader, Icon } from 'antd';
-import { provinceSelect, provinceList, getProvince } from '../../NewDicProvinceList.js';
-import { companySearch } from '../../tools.js';
-import ajax from 'jquery/src/ajax/xhr.js';
-import $ from 'jquery/src/ajax';
-
-const ProvinceAdd = React.createClass({
-    getInitialState() {
-        return {
-            cityOption: [],
-            theProvince: [],
-            citys: []
-        };
-    },
-    componentWillMount() {
-        let theArr = [];
-        this.state.theProvince = [this.props.locations[this.props.index].province];
-        this.state.citys = this.props.locations[this.props.index].city || [];
-        this.props.provinceList.map((item) => {
-            if (item.id == this.props.locations[this.props.index].province) {
-                item.cityList.map((city) => {
-                    theArr.push({
-                        value: city.id,
-                        label: city.name
-                    })
-                });
-            };
-        });
-        this.state.cityOption = theArr;
-    },
-    componentWillReceiveProps(nextProps) {
-        let theArr = [];
-        this.state.theProvince = [nextProps.locations[nextProps.index].province];
-        this.state.citys = nextProps.locations[nextProps.index].city || [];
-        this.props.provinceList.map((item) => {
-            if (item.id == nextProps.locations[nextProps.index].province) {
-                item.cityList.map((city) => {
-                    theArr.push({
-                        value: city.id,
-                        label: city.name
-                    })
-                });
-            };
-        });
-        this.state.cityOption = theArr;
-    },
-    render() {
-        return (
-            <div style={{ display: 'inline-block', marginRight: '20px', marginBottom: '10px' }}>
-                <Cascader placeholder="选择省份"
-                    style={{ width: 80, marginRight: '20px', verticalAlign: 'middle' }}
-                    options={this.props.provinceOption}
-                    value={this.state.theProvince}
-                    showSearch
-                    filterOption={companySearch}
-                    onChange={(e) => {
-                        let bool = true, theArr = [], _me = this;;
-                        this.props.locations.map((item, i) => {
-                            if (item.province == e[0] && this.props.index != i) {
-                                bool = false;
-                            };
-                        });
-                        if (!bool) {
-                            message.warning('请选择一个其他省份');
-                            this.setState({
-                                theProvince: undefined,
-                                citys: undefined,
-                                cityOption: []
-                            });
-                            return;
-                        };
-                        this.props.provinceList.map((item) => {
-                            if (item.id == e) {
-                                item.cityList.map((city) => {
-                                    theArr.push({
-                                        value: city.id,
-                                        label: city.name
-                                    })
-                                });
-                            };
-                        });
-                        this.props.getLocations(this.props.index, e[0])
-                        this.setState({
-                            theProvince: e,
-                            citys: undefined,
-                            cityOption: theArr,
-                        })
-                    }} />
-                <Select style={{ verticalAlign: 'middle', width: 584 }}
-                    placeholder="选择城市" notFoundContent="请先选择一个省份" multiple={true}
-                    showSearch
-                    filterOption={companySearch}
-                    value={this.state.citys}
-                    onChange={(e) => { this.setState({ citys: e }) }}
-                    onBlur={() => {
-                        this.props.getLocations(this.props.index, this.state.theProvince ? this.state.theProvince[0] : null, this.state.citys)
-                    }}>
-                    {this.state.cityOption.map((item) => {
-                        return <Select.Option key={String(item.value)}>{item.label}</Select.Option>
-                    })}
-                </Select>
-                <Button style={{ verticalAlign: 'middle', marginLeft: '20px' }} type="dashed" size="small"
-                    onClick={() => { this.props.delLocations(this.props.index) }}>
-                    <Icon type="minus" />
-                </Button>
-            </div>
-        );
-    },
-})
-
-const TheModal = React.createClass({
-    postData() {
-        this.setState({
-            loading: true
-        });
-        let theArr = [];
-        let theLocations = this.state.locations.concat();
-        theLocations.map((item, i) => {
-            if (item.province) {
-                theArr.push(item);
-            };
-        });
-        theArr.map((item) => {
-            if (item.city && item.city.length) {
-                item.city = item.city.join(',');
-            } else {
-                item.city = null;
-            };
-        });
-        $.ajax({
-            type: "POST",
-            url: this.state.id ? globalConfig.context + "/api/admin/supervise/updateAdmin" : globalConfig.context + "/api/admin/supervise/insertAdmin",
-            data: {
-                data: JSON.stringify({
-                    'id': this.state.id,
-                    'name': this.state.name,
-                    'email': this.state.email,
-                    'mobile': this.state.mobile,
-                    'position': this.state.position,
-                    'locations': theArr,
-                    'superiorId': this.state.superiorId
-                }),
-                'roles': this.state.bindroles
-            }
-        }).done((res) => {
-            if (res.error.length) {
-                message.error(res.error[0].message);
-            } else {
-                message.success("保存成功");
-                this.setState({
-                    visible: false,
-                });
-                this.props.handleReturn(false, true);
-                //第二个参数表示保存
-            }
-        }).always(() => {
-            this.setState({
-                loading: false
-            })
-        })
-        this.props.postData;
-    },
-    getInitialState() {
-        return {
-            name: '',
-            email: '',
-            mobile: '',
-            roles: [],
-            visible: false,
-            loading: false,
-            theSwitch: true,
-            bindroles: [],
-            locations: [],
-            cityOption: [],
-            locationsObj: {},
-            adminSelectObj: {}
-        }
-    },
-    handleCancel() {
-        this.setState({
-            visible: false,
-            locations:[]
-        });
-        this.props.handleReturn(false, false);
-    },
-    loadAdminSelectList() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/admin/supervise/adminSelectList',
-            cache: false
-        }).done((data) => {
-            if (!data.data) {
-                if (data.error && data.error.length) {
-                    message.warning(data.error[0].message);
-                    return;
-                };
-            };
-            let theArr = [], i;
-            for (i in data.data) {
-                theArr.push(
-                    <Select.Option key={i}>{data.data[i]}</Select.Option>
-                )
-            };
-            this.setState({
-                adminSelectOption: theArr,
-                adminSelectObj: data.data,
-                loading: false
-            });
-        })
-    },
-    loadAdminOwnLocation() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/admin/supervise/adminOwnLocation',
-            cache: false
-        }).done((data) => {
-            if (!data.data) {
-                if (data.error && data.error.length) {
-                    message.warning(data.error[0].message);
-                    return;
-                };
-            };
-            let theArr = [], theList = [];
-            if ((typeof (data.data)).indexOf('string') == -1) {
-                data.data.map((item) => {
-                    theArr.push({
-                        value: item.province,
-                        label: getProvince(item.province)
-                    });
-                    let cityList = [];
-                    if (item.city) {
-                        item.city.split(',').map((c) => {
-                            cityList.push({
-                                id: Number(c),
-                                name: getProvince(c)
-                            });
-                        });
-                    };
-                    theList.push({
-                        id: item.province,
-                        name: getProvince(item.province),
-                        cityList: cityList.length ? cityList : null
-                    });
-                });
-            } else {
-                theArr = provinceSelect();
-                theList = provinceList;
-            }
-            this.setState({
-                provinceOption: theArr,
-                provinceList: theList,
-                loading: false
-            });
-        })
-    },
-    loadBindRoles(uid) {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/admin/role',
-            cache: false,
-            data: {
-                "uid": uid
-            }
-        }).done((data) => {
-            if (!data.data) {
-                if (data.error && data.error.length) {
-                    message.warning(data.error[0].message);
-                };
-                return;
-            } else if (data.data) {
-                this.state.theSwitch = true;
-                for (let i = 0; i < data.data.length; i++) {
-                    for (let n = 0; n < this.props.currentRoles.length; n++) {
-                        if (data.data[i] === this.props.currentRoles[n] && uid != 1) {
-                            this.state.theSwitch = false;
-                        }
-                    }
-                };
-            };
-            this.setState({
-                bindroles: data.data || [],
-                theSwitch: this.state.theSwitch,
-                loading: false
-            });
-        })
-    },
-    loadLocations(id) {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/admin/supervise/adminDetailLocation',
-            cache: false,
-            data: {
-                "id": id
-            }
-        }).done((data) => {
-            if (!data.data) {
-                if (data.error && data.error.length) {
-                    message.warning(data.error[0].message);
-                    return;
-                };
-            };
-            data.data.map((item) => {
-                if (item.city) {
-                    item.city = item.city.split(',');
-                }
-            });
-            this.setState({
-                locations: data.data,
-                loading: false
-            });
-        })
-    },
-    componentWillMount() {
-        this.loadAdminSelectList();
-        this.loadAdminOwnLocation();
-    },
-    componentWillReceiveProps(nextProps) {
-        if (!this.state.visible && nextProps.show) {
-            if (nextProps.data.id) {
-                this.loadBindRoles(nextProps.data.id);
-                this.loadLocations(nextProps.data.id);
-            }
-        };
-        let nextState = {
-            visible: nextProps.show,
-            id: nextProps.data ? nextProps.data.id : '',
-            name: nextProps.data ? nextProps.data.name : '',
-            email: nextProps.data ? nextProps.data.email : '',
-            mobile: nextProps.data ? nextProps.data.mobile : '',
-            position: nextProps.data ? nextProps.data.position : '',
-            superiorId: nextProps.data ? nextProps.data.superiorId : '',    
-        };
-        this.setState(nextState)
-    },
-    resetPwd(e) {
-        this.setState({
-            loading: true
-        })
-        $.ajax({
-            type: 'post',
-            url: globalConfig.context + "/api/admin/supervise/resetPwd",
-            dataType: "json",
-            data: {
-                id: this.state.id
-            }
-        }).done((res) => {
-            if (res.error && res.error.length) {
-                message.error(res.error[0].message);
-            } else {
-                message.success("密码重置成功");
-            }
-        }).always(() => {
-            this.setState({
-                loading: false
-            })
-        });
-    },
-    getRolesSelection() {
-        if (!this.state.id) {
-            return <li></li>
-        } else if (this.state.id != '1') {
-            return <li className="list">
-                <span className='modal-text'>角色</span>
-                <Select
-                    multiple
-                    style={{ width: '60%' }}
-                    placeholder="选择用户关联角色"
-                    value={this.state.bindroles}
-                    onChange={this.bindRoles} >
-                    {this.getRolesOptions()}
-                </Select>
-            </li>
-        } else if (this.state.id == "1") {
-            return <li><span className='modal-text'>角色</span><span>系统管理员</span></li>
-        }
-    },
-    bindRoles(val) {
-        this.setState({
-            bindroles: val
-        });
-    },
-    getRolesOptions() {
-        let options = [];
-        for (let i = 0; i < this.props.roles.length; i++) {
-            options.push(<Select.Option key={String(this.props.roles[i].id)}>{this.props.roles[i].roleName}</Select.Option>);
-        }
-        return options;
-    },
-    getLocations(index, p, c) {
-        this.state.locations.map((item, i) => {
-            if (index == i) {
-                item.province = p;
-                item.city = c || [];
-            };
-        });
-    },
-    delLocations(index) {
-        this.state.locations.splice(index, 1);
-        this.setState({ locations: this.state.locations });
-    },
-    provinceAdd() {
-        this.state.locations.push({
-            province: null,
-            city: null
-        });
-        this.setState({ locations: this.state.locations });
-    },
-    render() {
-        return (
-            <div className="modal" >
-                <Modal maskClosable={false} title="管理员详情"
-                    closable={false} width={1000}
-                    visible={this.state.visible}
-                    onOk={this.postData}
-                    onCancel={this.handleCancel} >
-                    <Spin spinning={this.state.loading} >
-                        {this.state.theSwitch ? <div className="modal-box">
-                            <ul className="modal-content clearfix">
-                                <li className="list">
-                                    <span className='modal-text'>名字</span>
-                                    <Input value={this.state.name} onChange={(e) => { this.state.name = e.target.value; this.setState({ name: this.state.name }); }} />
-                                </li>
-                                <li className="list">
-                                    <span className='modal-text'>职位</span>
-                                    <Input value={this.state.position} onChange={(e) => { this.state.position = e.target.value; this.setState({ position: this.state.position }); }} />
-                                </li>
-                                <li className="list">
-                                    <span className='modal-text'>上级</span>
-                                    <Select style={{ verticalAlign: 'middle', width: 200 }}
-                                        placeholder="选择一个上级" notFoundContent="没有获取到管理员列表"
-                                        showSearch
-                                        filterOption={companySearch}
-                                        value={this.state.superiorId}
-                                        onChange={(e) => { this.setState({ superiorId: e }) }} >
-                                        {this.state.adminSelectOption}
-                                    </Select>
-                                </li>
-                                <li className="list">
-                                    <span className='modal-text'>登录账号</span>
-                                    <Input value={this.state.mobile} onChange={(e) => { this.state.mobile = e.target.value; this.setState({ mobile: this.state.mobile }); }} />
-                                </li>
-                                <li className="list">
-                                    <span className='modal-text'>邮箱</span>
-                                    <Input value={this.state.email} onChange={(e) => { this.state.email = e.target.value; this.setState({ email: this.state.email }); }} />
-                                </li>
-                                {this.getRolesSelection()}
-                                {this.state.id ? <li className="list">
-                                    <span></span>
-                                    <Popconfirm
-                                        title={"用户 [ " + this.state.name + " ] 的密码将会重置为123456,确认操作?"}
-                                        onConfirm={this.resetPwd}
-                                        okText="确认"
-                                        cancelText="取消"
-                                        placement="topLeft">
-                                        <Button>重置密码</Button>
-                                    </Popconfirm>
-                                </li> : <li></li>}
-                            </ul>
-                            <div>
-                                <span className='modal-text' style={{ verticalAlign: 'top' }}>地区</span>
-                                {window.showPermissionList && window.showRoleList ? <div style={{ display: 'inline-block', width: '88%' }}>
-                                    {this.state.locations.map((item, i) => {
-                                        return <ProvinceAdd
-                                            provinceList={this.state.provinceList}
-                                            provinceOption={this.state.provinceOption}
-                                            getLocations={this.getLocations}
-                                            delLocations={this.delLocations}
-                                            locations={this.state.locations}
-                                            index={i} key={i} />
-                                    })}
-                                    <Button style={{ verticalAlign: 'middle' }} type="dashed" size="small"
-                                        onClick={this.provinceAdd}>
-                                        <Icon type="plus" />
-                                    </Button>
-                                </div> : <div style={{ display: 'inline-block', width: '88%' }}>
-                                        {this.state.locations.map((item, i) => {
-                                            return <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
-                                                return getProvince(c) + ' '
-                                            }) : '')}</Tag>
-                                        })}
-                                    </div>}
-                            </div>
-                        </div> : <div className="modal-box">
-                                <ul className="modal-content clearfix">
-                                    <li className="list">
-                                        <span className='modal-text'>名字</span>
-                                        <span className="modal-det">{this.state.name}</span>
-                                    </li>
-                                    <li className="list">
-                                        <span className='modal-text'>职位</span>
-                                        <span className="modal-det">{this.state.position}</span>
-                                    </li>
-                                    <li className="list">
-                                        <span className='modal-text'>上级</span>
-                                        <span className="modal-det">{this.state.adminSelectObj[this.state.superiorId]}</span>
-                                    </li>
-                                    <li className="list">
-                                        <span className='modal-text'>登录账号</span>
-                                        <span className="modal-det">{this.state.mobile}</span>
-                                    </li>
-                                    <li className="list">
-                                        <span className='modal-text'>邮箱</span>
-                                        <span className="modal-det">{this.state.email}</span>
-                                    </li>
-                                </ul>
-                                <div>
-                                    <span className='modal-text' style={{ verticalAlign: 'top' }}>地区</span>
-                                    <div style={{ display: 'inline-block', width: '88%' }}>
-                                        {this.state.locations.map((item, i) => {
-                                            return <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
-                                                return getProvince(c) + ' '
-                                            }) : '')}</Tag>
-                                        })}
-                                    </div>
-                                </div>
-                            </div>}
-                    </Spin>
-                </Modal>
-            </div >
-        );
-    }
-})
-
-export default TheModal;

+ 0 - 166
js/component/manageCenter/set/permission.jsx

@@ -1,166 +0,0 @@
-import React from 'react';
-import { Table, Button, Input, Spin, Message, Icon } from 'antd';
-import ajax from 'jquery/src/ajax/xhr.js';
-import $ from 'jquery/src/ajax';
-
-const Permission = React.createClass({
-    getInitialState() {
-        return {
-            data: [],
-            selectedRowKeys: [],
-            selectedRows: [],
-            loading: false
-        }
-    },
-
-    componentDidMount() {
-        this.loadData();
-    },
-
-    loadData() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/permissions',
-            method: 'get',
-            cache: false
-        }).done((res) => {
-            if (!res.error.length) {
-                this.setState({
-                    data: res.data
-                })
-            }
-        }).always(() => {
-            this.setState({
-                loading: false
-            });
-        });
-    },
-
-    save() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/permission',
-            method: 'post',
-            data: {
-                data: JSON.stringify(this.state.data)
-            }
-        }).done((res) => {
-            if (!res.error.length) {
-                Message.success("保存成功");
-                this.loadData();
-            } else {
-                Message.error(res.error[0].message);
-            }
-        }).always(() => {
-            this.setState({
-                loading: false
-            });
-        })
-    },
-
-    remove() {
-        let deletedIds = [];
-        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
-            let rowItem = this.state.selectedRows[idx];
-            if (rowItem.id) {
-                deletedIds.push(rowItem.id)
-            }
-        };
-        this.setState({
-            loading: deletedIds.length > 0
-        });
-        if (deletedIds.length) {
-            $.ajax({
-                url: globalConfig.context + '/api/permission/delete',
-                method: 'post',
-                data: {
-                    data: JSON.stringify(deletedIds)
-                }
-            }).done((res) => {
-                if (!res.error.length) {
-                    Message.success("删除成功");
-                    this.state.selectedRowKeys.sort((a, b) => { return b - a });
-                    for (let idx = 0; idx < this.state.selectedRowKeys.length; idx++) {
-                        let dataIndex = this.state.selectedRowKeys[idx];
-                        this.state.data.splice(dataIndex, 1);
-                    };
-                    this.setState({
-                        data: this.state.data,
-                        selectedRowKeys: []
-                    });
-                } else {
-                    Message.error(res.error[0].message);
-                }
-            }).always(() => {
-                this.setState({
-                    loading: false
-                });
-            })
-        }
-    },
-
-    addNew() {
-        this.state.data.push({
-            id: null,
-            name: '',
-            url: ''
-        });
-        this.setState({
-            data: this.state.data
-        })
-    },
-
-    render() {
-        const columns = [{
-            title: '权限名字',
-            dataIndex: 'name',
-            key: 'name',
-            render: (text, record, index) => {
-                return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} />
-            }
-        }, {
-            title: '接口路径',
-            dataIndex: 'url',
-            key: 'url',
-            render: (text, record, index) => {
-                return <Input value={record.url} onChange={(e) => { record.url = e.target.value; this.setState({ data: this.state.data }); }} />
-            }
-        }];
-        const rowSelection = {
-            type: 'checkbox',
-            selectedRowKeys: this.state.selectedRowKeys,
-            onChange: (selectedRowKeys, selectedRows) => {
-                this.setState({
-                    selectedRows: selectedRows,
-                    selectedRowKeys: selectedRowKeys
-                });
-            }
-        };
-        const hasSelected = this.state.selectedRowKeys.length > 0;
-        return (
-            <Spin spinning={this.state.loading}>
-                <div className="set-content">
-                    <div className="set-title">
-                        <span>权限控制</span>
-                        <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
-                            onClick={this.addNew}>添加<Icon type="plus" /></Button>
-                        <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
-                            disabled={!hasSelected}
-                            onClick={this.remove}>删除<Icon type="minus" /></Button>
-                        <Button type="primary" onClick={this.save}>保存修改</Button>
-                    </div>
-                    <Table className="member-table"
-                        columns={columns}
-                        dataSource={this.state.data}
-                        pagination={false}
-                        rowSelection={rowSelection} />
-                </div>
-            </Spin>
-        );
-    }
-});
-export default Permission;

+ 0 - 273
js/component/manageCenter/set/role.jsx

@@ -1,273 +0,0 @@
-import React from 'react';
-import { Table, Button, Input, Spin, Message, Select, Modal, Tag, Icon } from 'antd';
-import ajax from 'jquery/src/ajax/xhr.js'
-import $ from 'jquery/src/ajax';
-
-const Role = React.createClass({
-    getInitialState() {
-        return {
-            visible: false,
-            disabled: false,
-            name: '',
-            selectOption: [],
-            data: [],
-            selectedRowKeys: [],
-            selectedRows: [],
-            loading: false,
-            permissions: {
-
-            },
-            modelRecord: {
-                id: '',
-                name: '',
-                permissions: []
-            }
-        }
-    },
-
-    componentWillMount() {
-        this.loadData();
-    },
-
-    loadData() {
-        let _me = this;
-        this.setState({
-            loading: true
-        });
-        $.when($.ajax({
-            url: globalConfig.context + '/api/roles',
-            method: 'get',
-            cache: false
-        }), $.ajax({
-            url: globalConfig.context + '/api/permissions',
-            method: 'get',
-            cache: false
-        })).done((roles, permissions) => {
-            if (!roles[0].error.length && roles[0].data) {
-                this.state.data = [];
-                for (let i = 0; i < roles[0].data.length; i++) {
-                    let thisdata = roles[0].data[i];
-                    this.state.data.push({
-                        key: i,
-                        id: thisdata.id,
-                        roleName: thisdata.roleName,
-                        permissions: thisdata.permissions.map((p) => { return String(p.id) }) || []
-                    });
-                };
-            }
-            if (!permissions[0].error.length && permissions[0].data) {
-                _me.state.selectOption = [];
-                permissions[0].data.map(function (item) {
-                    _me.state.selectOption.push(
-                        <Select.Option key={item.id}>{item.name}</Select.Option>
-                    )
-                    _me.state.permissions[String(item.id)] = item.name;
-                });
-            }
-        }).always(() => {
-            this.setState({
-                loading: false
-            });
-        });
-    },
-
-    save() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/role',
-            method: 'post',
-            data: { data: JSON.stringify(this.state.modelRecord) },
-        }).done((res) => {
-            if (!res.error.length) {
-                Message.success("保存成功");
-                this.loadData();
-            } else {
-                Message.error(res.error[0].message);
-            }
-        }).always(() => {
-            this.setState({
-                loading: false,
-                visible: false,
-                disabled: false
-            });
-        })
-    },
-
-    remove() {
-        let deletedIds = [];
-        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
-            let rowItem = this.state.selectedRows[idx];
-            if (rowItem.id) {
-                deletedIds.push(rowItem.id)
-            }
-        };
-        this.setState({
-            loading: deletedIds.length > 0
-        });
-        if (deletedIds.length) {
-            $.ajax({
-                url: globalConfig.context + '/api/role/delete',
-                method: 'post',
-                data: {
-                    data: JSON.stringify(deletedIds)
-                }
-            }).done((res) => {
-                if (!res.error.length) {
-                    Message.success("删除成功");
-                    this.state.selectedRowKeys.sort((a, b) => { return b - a });
-                    for (let idx = 0; idx < this.state.selectedRowKeys.length; idx++) {
-                        let dataIndex = this.state.selectedRowKeys[idx];
-                        this.state.data.splice(dataIndex, 1);
-                    };
-                    this.setState({
-                        data: this.state.data,
-                        selectedRowKeys: []
-                    });
-                } else {
-                    Message.error(res.error[0].message);
-                }
-            }).always(() => {
-                this.setState({
-                    loading: false
-                });
-            })
-        }
-    },
-
-    addNew() {
-        this.setState({
-            visible: true,
-            modelRecord: {
-                id: null,
-                roleName: '',
-                permissions: []
-            }
-        })
-    },
-
-    edit(e) {
-        this.setState({
-            modelRecord: {
-                id: e.id,
-                roleName: e.roleName,
-                permissions: e.permissions
-            },
-            visible: true,
-            disabled: false
-        })
-    },
-
-    handleCancel() {
-        this.setState({
-            visible: false,
-            disabled: false
-        })
-    },
-
-    render() {
-        const columns = [{
-            title: '名字',
-            dataIndex: 'roleName',
-            key: 'roleName'
-        }, {
-            title: '绑定权限',
-            dataIndex: 'permissions',
-            key: 'permissions',
-            render: (text, record, index) => {
-                let _me = this;
-                if (record.permissions) {
-                    return <div>
-                        {record.permissions.map((tag, i) => {
-                            if (i < 3) {
-                                return <Tag key={tag} closable={false}>
-                                    {_me.state.permissions[tag]}
-                                </Tag>
-                            } else if (i == 3) {
-                                return <Tag key={tag} closable={false}>
-                                    ...
-                                </Tag>
-                            } else {
-                                return false;
-                            }
-                        }
-                        )}
-                    </div>
-                } else {
-                    return <div></div>;
-                }
-            },
-        }];
-        const rowSelection = {
-            type: 'checkbox',
-            selectedRowKeys: this.state.selectedRowKeys,
-            onChange: (selectedRowKeys, selectedRows) => {
-                this.setState({
-                    selectedRows: selectedRows,
-                    selectedRowKeys: selectedRowKeys
-                });
-            }
-        };
-        const hasSelected = this.state.selectedRowKeys.length > 0;
-        return (
-            <Spin spinning={this.state.loading}>
-                <Modal maskClosable={false} title="角色编辑"
-                    closable={false}
-                    visible={this.state.visible}
-                    onOk={this.save}
-                    width={1000}
-                    onCancel={this.handleCancel}>
-                    <ul className="modal-content">
-                        <li>
-                            <span className='modal-text'>名字</span>
-                            <Input value={this.state.modelRecord.roleName} onChange={(e) => {
-                                this.state.modelRecord.roleName = e.target.value;
-                                this.setState({
-                                    modelRecord: this.state.modelRecord
-                                })
-                            }} />
-                        </li>
-                        <li>
-                            <span className='modal-text'>权限</span>
-                            <Select
-                                multiple
-                                style={{ width: '80%' }}
-                                placeholder="选择绑定权限"
-                                disabled={!this.state.modelRecord.id}
-                                filterOption={(input, option) => { return option.props.children.indexOf(input) >= 0 }}
-                                value={this.state.modelRecord.permissions}
-                                onChange={(pids) => {
-                                    this.state.modelRecord.permissions = pids;
-                                    this.setState({
-                                        modelRecord: this.state.modelRecord
-                                    })
-                                }}
-                            >
-                                {this.state.selectOption}
-                            </Select>
-                        </li>
-                    </ul>
-                </Modal>
-                <div className="set-content">
-                    <div className="set-title">
-                        <span>角色控制</span>
-                        <Button style={{ background: "#ea0862", border: "none", color: "#fff" }}
-                            onClick={this.addNew}>添加<Icon type="plus" /></Button>
-                        <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
-                            disabled={!hasSelected}
-                            onClick={this.remove}>删除<Icon type="minus" /></Button>
-                    </div>
-                    <Table className='member-table'
-                        columns={columns}
-                        dataSource={this.state.data}
-                        onRowClick={this.edit}
-                        pagination={false}
-                        rowSelection={rowSelection} />
-                </div>
-            </Spin>
-        );
-    }
-});
-
-export default Role;

+ 0 - 24
js/component/manageCenter/set/site.jsx

@@ -1,24 +0,0 @@
-import React from 'react';
-import theme from 'react-quill/dist/quill.snow.css'
-import ReactQuill from 'react-quill'
-
-class Site extends React.Component {
-  constructor(props) {
-    super(props)
-    this.state = { text: '' }
-    this.handleChange = this.handleChange.bind(this)
-  }
-
-  handleChange(value) {
-    this.setState({ text: value })
-  }
-
-  render() {
-    return (
-      <ReactQuill value={this.state.text}
-                  onChange={this.handleChange} />
-    )
-  }
-}
-
-export default Site;

+ 305 - 0
js/component/manageCenter/set/userManagementS/addjurisdiction.jsx

@@ -0,0 +1,305 @@
+import React from 'react';
+import { Icon,  Modal, message,  AutoComplete,Spin, Input, Select, Button, Form,Upload } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './userMangagement.less';
+import {} from '../../../dataDic.js';
+const Option = AutoComplete.Option;
+
+const Addjurisdiction = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+            loading: false,
+            visible:false
+        };
+    },
+    //保存
+    handleSubmit(e) {
+    	e.preventDefault();
+    	let theType;
+    	if(this.props.userDetaile){
+			if (!this.state.auto) {
+				message.warning('请输入上级模块')
+				return false;
+			}
+		}
+    	let api=this.props.userDetaile?'/api/admin/updateById':'/api/admin/addSupPermission';
+        this.props.form.validateFields((err, values) => { 
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                $.ajax({
+                    method: "POST",
+                    dataType: "json",
+                    crossDomain: false,
+                    url: globalConfig.context + api,
+                    data: {
+                    	id:this.state.ids,
+                        name:this.state.name, //接口名称
+						url:this.state.url,//接口路径
+						superId:this.state.auto,//接口上级模板功能
+                    }
+                }).done(function (data) { 
+                    this.setState({
+                        loading: false
+                    });
+                    if (!data.error.length) {
+                        message.success('保存成功!');
+                        this.props.closeDesc(false,true);
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this));
+            }
+        });
+    },
+    //主管初始加载(自动补全)
+	supervisor(e){ 
+		$.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/selectName",
+            data:{
+            	name:e
+            },
+            success: function (data) {                	  
+				       let thedata=data.data;
+				    if (!thedata) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };	
+                    thedata = {}; 
+              }; 
+					this.setState({
+						customerArr:thedata,	
+                    });
+				}.bind(this),
+			}).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));  
+	},
+	//上级主管输入框失去焦点是判断客户是否存在
+	selectAuto(value,options){
+		this.setState({
+			auto:value
+		})
+	},
+	blurChange(e){
+		let theType;
+		let contactLists=this.state.customerArr||[];
+			if (e) {
+            contactLists.map(function (item) {
+                if (item.name == e.toString()) {
+                    theType=true
+                }else{
+                	theType=false
+                }
+           });     
+   	    }
+		this.setState({
+			theTypes:theType
+		})
+	},
+	//值改变时请求客户名称
+	httpChange(e){
+		if(e.length>=1){
+			this.supervisor(e); 
+		}	
+		this.setState({
+			auto:e
+		})
+	},
+	//查看基本详情基本信息
+    loaduser(record){
+    	if(record){
+    	$.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/selectAllById',
+            data: {
+              id: record.id
+            },
+            success: function (data) {
+                let thisData = data.data;                
+                if (!thisData) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    thisData = {};
+                }; 
+                let Times = new Date(thisData.createTime);
+                let upTimes = new Date(thisData.updateTime);
+                let createY=Times.getFullYear();
+                let createH=Times.getHours();
+                let createF=Times.getMinutes();
+                let createS=Times.getSeconds();
+                let createM,createD;
+                if(createM<10){
+                	createM='0'+Times.getMonth()
+                }else{
+                	createM=Times.getMonth();
+                };
+                if(createD<10){
+                	createD='0'+Times.getDate()
+                }else{
+                	createD=Times.getDate();
+                };
+                let createTimes=createY+'-'+createM+'-'+createD+' '+createH+':'+createF+':'+createS;
+                //更新时间
+                let updateY=upTimes.getFullYear();
+                let updateH=upTimes.getHours();
+                let updateF=upTimes.getMinutes();
+                let updateS=upTimes.getSeconds();
+                let updateM,updateD;
+                if(updateM<10){
+                	updateM='0'+upTimes.getMonth()
+                }else{
+                	updateM=upTimes.getMonth();
+                };
+                if(updateD<10){
+                	updateD='0'+upTimes.getDate()
+                }else{
+                	updateD=upTimes.getDate();
+                };
+                let updateTimes=updateY+'-'+updateM+'-'+updateD+' '+updateH+':'+updateF+':'+updateS;
+                this.setState({
+                	ids:thisData.id,
+                	name:thisData.name, //接口名称
+					url:thisData.url,//接口路径
+					preModule:thisData.preModule,//接口上级模板功能
+                	createId:thisData.createId,
+                	createTime:createTimes,
+                	updateTime:updateTimes,
+                	autNo:thisData.autNo,
+                	auto:thisData.superId,
+                });                  
+            }.bind(this),
+       }).always(function () {
+            this.setState({ 
+                loading: false
+            });
+        }.bind(this));  
+       }
+    },
+    handleOk(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false, true);
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    componentWillReceiveProps(nextProps) {
+    	this.state.visible = nextProps.showDesc;
+    	this.state.Detaile=nextProps.userDetaile;
+		if(!nextProps.userDetaile){
+			this.state.name='';
+			this.state.url='';
+   		}else{
+    		this.loaduser(nextProps.datauser)
+    	   }     
+      },
+    render() {
+        const theData = this.state.datauser||{};
+        const { getFieldDecorator } = this.props.form;
+        const FormItem = Form.Item
+        const formItemLayout = {
+            labelCol: { span: 8 },
+            wrapperCol: { span: 14 },
+        }; 
+        const dataSources=this.state.customerArr || [];
+        const options = dataSources.map((group,index) =>
+				      <Option key={index} value={group.name}>{group.name}</Option>
+				     )
+        return (
+        <div>
+           <Modal maskClosable={false} visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='600px'
+                        title={this.props.userDetaile?'权限详情':'新建权限'}                      
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form">
+			                <Spin spinning={this.state.loading}>
+			                        <div className="clearfix">
+				                    	<FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="接口名称" >   			                           
+				                                    <Input placeholder="接口名称" value={this.state.name} style={{width:'230px'}}
+				                                    onChange={(e)=>{this.setState({name:e.target.value})}} required="required"/>
+					                   			<span className="mandatory">*</span>
+					                   </FormItem>
+					                    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="接口路径" >   
+				                                    <Input placeholder="接口路径" value={this.state.url} style={{width:'230px'}}
+				                                    onChange={(e)=>{this.setState({url:e.target.value})}} required="required"/>
+					                    		<span className="mandatory">*</span>	
+					                    </FormItem>
+				                    </div>
+				                    <div className="clearfix" style={{display:this.props.userDetaile?'block':'none'}}>
+				                    	<FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="上级功能模块" >   
+				                                    <AutoComplete
+											        className="certain-category-search"
+											        dropdownClassName="certain-category-search-dropdown"
+											        dropdownMatchSelectWidth={false}
+											        dropdownStyle={{ width: 230 }}
+											        size="large"
+											        style={{ width: '230px' }}
+											        dataSource={options}
+											        placeholder="输入名称"
+											        value={this.state.auto}
+											        onChange={this.httpChange}
+											        filterOption={true}
+											        onBlur={this.blurChange}
+											        onSelect={this.selectAuto}
+											      >
+											        <Input/>
+											      </AutoComplete> 
+											      <span className="mandatory">*</span>
+					                    </FormItem>
+				                    	<FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="权限编号" >   
+					                            <span>{this.state.autNo}</span>
+					                    </FormItem>
+					                    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="创建人" >   
+					                            <span>{this.state.createId}</span>
+					                    </FormItem>
+			                   		    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="创建时间" >   
+					                            <span>{this.state.createTime}</span>
+					                    </FormItem>
+					                    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="更新时间" >   
+					                           <span>{this.state.updateTime}</span>
+					                    </FormItem>
+				                    </div>	
+			                    <FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle">
+			                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>  
+			                        <Button className="set-submit" type="ghost" onClick={this.handleCancel}>取消</Button>
+			                    </FormItem> 
+			                </Spin>
+			            </Form >
+			        </Modal>    
+    	    </div>
+        )
+    }
+}));
+
+export default Addjurisdiction;

+ 236 - 0
js/component/manageCenter/set/userManagementS/jurisdiction.jsx

@@ -0,0 +1,236 @@
+import React from 'react';
+import ReactDom from 'react-dom';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import { Form, Radio, Icon, Button, Input, Select, Popconfirm, Spin, Table, Switch, message, DatePicker, Modal, Upload } from 'antd';
+import Addjurisdiction from "./addjurisdiction.jsx"
+import './userMangagement.less'
+import { techAuditStatusList, station, post } from '../../../dataDic.js';
+
+const Jurisdiction = Form.create()(React.createClass({
+	loadData(pageNo) {
+		this.state.data = [];
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "post",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + '/api/admin/permissions',
+			success: function(data) {
+				let thisData = data.data.one;
+				this.setState({
+					dataSource: data.data.one,
+				});
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	getInitialState() {
+		return {
+			datauser: {},
+			selectedRowKeys: [],
+			selectedRows: [],
+			loading: false,
+			addnextVisible: false,
+			columns: [{
+				title: '接口名称',
+				dataIndex: 'name',
+				key: 'name',
+				width: '300px'
+			}, {
+				title: '接口路径',
+				dataIndex: 'url',
+				key: 'url',
+			}, {
+				title: '操作',
+				dataIndex: 'id',
+				key: 'id',
+				render: (text, recard) => {
+					return(
+						<div>
+							<Button type="primary" onClick={(e)=>{e.stopPropagation(),this.addNextURL(recard)}} style={{marginRight:'15px'}}>新建下级权限</Button>
+	                        <Popconfirm
+	                                title={"是否真的删除?"}
+	                                onConfirm={(e)=>{this.delectRow(recard)}}
+	                                okText="确认"
+	                                cancelText="取消"
+	                                placement="topLeft">
+	                                <Button type="danger" onClick={(e)=>{e.stopPropagation()}}>删除</Button>
+	                        </Popconfirm>
+                        </div>
+					)
+				}
+			}],
+			dataSource: [],
+		};
+	},
+	componentWillMount() {
+		this.loadData();
+	},
+	tableRowClick(record, index) {
+		this.state.userDetaile = true;
+		this.state.datauser = record;
+		this.setState({
+			showDesc: true
+		});
+	},
+	//删除(已改接口)
+	delectRow(ids) {
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + "/api/admin/deleteById",
+			data: {
+				id: ids.id
+			}
+		}).done(function(data) {
+			if(!data.error.length) {
+				message.success('删除成功!');
+				this.setState({
+					loading: false,
+				});
+			} else {
+				message.warning(data.error[0].message);
+			};
+			this.loadData();
+		}.bind(this));
+	},
+	addClick() {
+		this.state.userDetaile = false;
+		this.setState({
+			showDesc: true
+		});
+	},
+	closeDesc(e, s) {
+		this.state.userDetaile = false;
+		this.state.showDesc = e;
+		if(s) {
+			this.loadData();
+		};
+	},
+	//新建下级
+	addNext() {
+		this.setState({
+			addnextVisible: false
+		})
+	},
+	nextCancel() {
+		this.setState({
+			addnextVisible: false
+		})
+	},
+	addNextURL(e) {
+		this.state.name = '';
+		this.state.url = '';
+		this.setState({
+			ids: e.id,
+			preName: e.name,
+			addnextVisible: true
+		})
+	},
+	//新建二级接口保存
+	nextSubmit() {
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + '/api/admin/addPermission',
+			data: {
+				superId: this.state.preName,
+				name: this.state.name, //接口名称
+				url: this.state.url //接口路径
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.addNext();
+				this.loadData();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	render() {
+		const FormItem = Form.Item;
+		const formItemLayout = {
+			labelCol: { span: 8 },
+			wrapperCol: { span: 14 },
+		};
+		const hasSelected = this.state.selectedRowKeys.length > 0;
+		return(
+			<div className="user-content" >
+                <div className="content-title">
+	                <div className="user-search">
+	                    <Button type="primary" className="addButton" onClick={this.addClick} style={{marginBottom:'15px'}}>新增权限<Icon type="user"/></Button>
+	                </div>
+	                <div className="patent-table">
+	                    <Spin spinning={this.state.loading}>
+	                        <Table columns={this.state.columns}
+	                            dataSource={this.state.dataSource}
+	                            pagination={false}
+	                            onRowClick={this.tableRowClick} />
+	                    </Spin>
+	                </div>
+	                <Addjurisdiction
+	                    userDetaile={this.state.userDetaile}
+	                    datauser={this.state.datauser}
+	                    showDesc={this.state.showDesc}
+	                    closeDesc={this.closeDesc} />
+	            </div >
+	            <Modal maskClosable={false} visible={this.state.addnextVisible}
+                        onOk={this.addNext} onCancel={this.nextCancel}
+                        width='600px'
+                        title='新建下级权限模块'                     
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
+			                <Spin spinning={this.state.loading}>
+			                        <div className="clearfix">
+				                    	<FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="接口名称" >   			                           
+				                                    <Input placeholder="接口名称" value={this.state.name} style={{width:'230px'}}
+				                                    onChange={(e)=>{this.setState({name:e.target.value})}} required="required"/>
+					                   			<span className="mandatory">*</span>
+					                   </FormItem>
+					                    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="接口路径" >   
+				                                    <Input placeholder="接口路径" value={this.state.url} style={{width:'230px'}}
+				                                    onChange={(e)=>{this.setState({url:e.target.value})}} required="required"/>
+					                    		<span className="mandatory">*</span>	
+					                    </FormItem>
+			                   		    <FormItem className="half-middle"
+					                            {...formItemLayout}
+					                            label="上级功能模块" >   
+				                                   <span>{this.state.preName}</span>
+					                    </FormItem>
+				                    </div>
+			                    <FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle">
+			                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>  
+			                        <Button className="set-submit" type="ghost" onClick={this.nextCancel}>取消</Button>
+			                    </FormItem> 
+			                </Spin>
+			            </Form >
+			        </Modal>    
+            </div>
+		);
+	}
+}));
+
+export default Jurisdiction;

+ 256 - 0
js/component/manageCenter/set/userManagementS/newRole.jsx

@@ -0,0 +1,256 @@
+import React from 'react';
+import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './userMangagement.less';
+import {} from '../../../dataDic.js';
+
+const Newrole = Form.create()(React.createClass({
+	addloadData() {
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "post",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + '/api/admin/customer/listAllPersonalCustomer',
+			data: {
+				pageNo: 1,
+				pageSize: 10,
+			},
+			success: function(data) {
+				let theArr = [];
+				if(!data.data || !data.data.list) {
+					if(data.error && data.error.length) {
+						message.warning(data.error[0].message);
+					};
+				} else {
+					for(let i = 0; i < data.data.list.length; i++) {
+						let thisdata = data.data.list[i];
+						let nub = Math.floor(Math.random() * 100000);
+						theArr.push({
+							key: 'AM' + nub,
+							id: 'nub' + i + 'b',
+							name: '成果录入' + i,
+							Interface: 'api/admin/customer' + i,
+							children: [{
+									key: 'BM' + nub,
+									id: 'nub' + i + 'b' + i,
+									name: '成果录入' + i + i,
+									Interface: 'api/admin/customer' + i + i + i,
+								},
+								{
+									key: 'BM' + nub + i,
+									id: 'nub' + i + 'c' + i,
+									name: '成果录入' + i + i,
+									Interface: 'api/admin/customer' + i + i + i,
+								}
+							]
+						});
+					};
+				};
+				this.setState({
+					Interface: theArr,
+				});
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	getInitialState() {
+		return {
+			orgCodeUrl: [],
+			loading: false,
+			visible: false,
+			addColumns: [{
+				title: '选择角色权限',
+				dataIndex: 'name',
+				key: 'name',
+			}, {
+				title: '',
+				dataIndex: 'Interface',
+				key: 'Interface',
+			}],
+		};
+	},
+	handleSubmit(e) {
+		e.preventDefault();
+		//let api=this.props.userDetaile?'保存':'新建';
+		this.props.form.validateFields((err, values) => {
+			let idsArr = this.state.selectedRowst || [];
+			let prekeys = this.state.selectedRowKeyst;
+			let Interfaces = this.state.Interface;
+			let ineIds = [];
+			let ids = [];
+			if(idsArr.length) {
+				idsArr.map(function(index) {
+					ids.push(
+						index.id
+					)
+					if(idsArr.children) {
+						idsArr.children.map(function(item) {
+							ids.push(
+								item.id
+							)
+						})
+					}
+				})
+			} else {
+				prekeys.map(function(item) {
+					ineIds.push(Interfaces[item].id)
+				});
+			}
+			if(!err) {
+				this.setState({
+					loading: true
+				});
+				$.ajax({
+					method: "POST",
+					dataType: "json",
+					crossDomain: false,
+					url: globalConfig.context + '/api/admin/customer/addCustomer',
+					data: {
+						roleName: this.state.roleName,
+						id: ids.length ? JSON.stringify(ids) : JSON.stringify(ineIds)
+					}
+				}).done(function(data) {
+					this.setState({
+						loading: false
+					});
+					if(!data.error.length) {
+						message.success('保存成功!');
+						this.handleCancel()
+					} else {
+						message.warning(data.error[0].message);
+					}
+				}.bind(this));
+			}
+		});
+	},
+	//查看基本详情基本信息
+	loaduser(record) {
+		if(record) {
+			$.ajax({
+				method: "get",
+				dataType: "json",
+				crossDomain: false,
+				url: globalConfig.context + '/api/admin/customer/toUpdateBusiness',
+				data: {
+					businessId: record.id
+				},
+				success: function(data) {
+					let thisData = data.data;
+					if(!thisData) {
+						if(data.error && data.error.length) {
+							message.warning(data.error[0].message);
+						};
+						thisData = {};
+					};
+					this.setState({
+						detaileuser: thisData,
+						uids: thisData.uid,
+						//selectedRowKeyst:[0,1,2]
+					});
+				}.bind(this),
+			}).always(function() {
+				this.setState({
+					loading: false
+				});
+			}.bind(this));
+		}
+	},
+	handleOk(e) {
+		this.setState({
+			visible: false,
+		});
+		this.props.closeDesc(false, true);
+	},
+	handleCancel(e) {
+		this.setState({
+			visible: false,
+		});
+		this.props.closeDesc(false);
+	},
+	componentWillMount() {
+		
+		this.addloadData()
+	},
+	componentWillReceiveProps(nextProps) { //props改变时触发
+		this.state.visible = nextProps.showDesc;
+		if(nextProps.userDetaile && nextProps.showDesc) {
+			if(nextProps.datauser && nextProps.datauser.id) {
+				this.loaduser(nextProps.datauser);
+			}
+		}
+		this.setState({
+			selectedRowKeyst: [],
+			datauser: {},
+		})
+	},
+	render() {
+		const theData = this.state.detaileuser || {};
+		const FormItem = Form.Item
+		const formItemLayout = {
+			labelCol: { span: 8 },
+			wrapperCol: { span: 14 },
+		};
+		const rowSelection = {
+            selectedRowKeys: this.state.selectedRowKeyst,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    selectedRowst: selectedRows,
+                    selectedRowKeyst: selectedRowKeys
+                });
+            },
+            onSelect: (recordt, selected, selectedRows) => {			   
+			    this.setState({
+			    	recordt:recordt.id
+			    })
+			},
+        };
+		return(
+			<div>
+           <Modal maskClosable={false} visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='1000px'
+                        title={!this.props.userDetaile?'添加角色':'编辑角色'}                      
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'40px'}} required="required">
+			                <Spin spinning={this.state.loading}>
+			                        <div className="clearfix">
+			                            <div className="clearfix">
+					                    	<FormItem className="half-item"
+						                            {...formItemLayout}
+						                            label="角色名称" >                             
+					                                    <Input placeholder="角色名称" value={this.state.roleName} onChange={(e)=>{this.setState({roleName:e.target.value})}} style={{width:'200px'}} required="required"/>
+						                    		<span className="mandatory">*</span>
+						                    </FormItem>
+						                    <FormItem className="half-item"
+						                            {...formItemLayout}
+						                            label="" > 
+							                    <Button className="set-submit" type="primary" htmlType="submit">保存</Button>  
+				                                <Button className="set-submit" type="ghost" onClick={this.handleCancel}>返回</Button> 
+			                                </FormItem>
+						                </div>
+						                <div className="clearfix">
+						                	<Table columns={this.state.addColumns}
+					                            dataSource={this.state.Interface}
+					                            rowSelection={rowSelection}
+					                            scroll={{ y: 500 }}
+					                            pagination={false}
+					                            />
+						                </div>
+				                    </div>
+			                </Spin>
+			            </Form >
+			        </Modal>    
+    	    </div>
+		)
+	}
+}));
+
+export default Newrole;

+ 478 - 0
js/component/manageCenter/set/userManagementS/newUser.jsx

@@ -0,0 +1,478 @@
+import React from 'react';
+import { Icon,  Modal, message,  AutoComplete,Spin, Input, Select, Button, Form,Upload,Popconfirm } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import './userMangagement.less';
+import {socialAttribute,cityArr,station,post} from '../../../dataDic.js';
+const Option = AutoComplete.Option;
+
+//图片组件
+const PicturesWall = React.createClass({
+    getInitialState() {
+        return {
+            previewVisible: false,
+            previewImage: '',
+            fileList: [],
+        }
+    },
+    handleCancel() {
+        this.setState({ previewVisible: false })
+    },
+    handlePreview(file) {
+        this.setState({
+            previewImage: file.url || file.thumbUrl,
+            previewVisible: true,
+        });
+    },
+    handleChange(info) {
+        let fileList = info.fileList;
+        this.setState({ fileList });
+        this.props.fileList(fileList);
+    },
+    componentWillReceiveProps(nextProps) {
+        this.state.fileList = nextProps.pictureUrl; 
+    },
+    render() {
+        const { previewVisible, previewImage, fileList } = this.state;
+        const uploadButton = (
+            <div>
+                <Icon type="plus" />
+                <div className="ant-upload-text">点击上传</div>
+            </div>
+        );
+        return (
+            <div style={{display:"inline-block"}}>
+                <Upload
+                    action={globalConfig.context + "/api/admin/customer/attachmentUpload"}
+                    data={{ 'sign': this.props.pictureSign }}
+                    listType="picture-card"
+                    fileList={fileList}
+                    onPreview={this.handlePreview}
+                    onChange={this.handleChange} >
+                    {fileList.length >= 1 ? null : uploadButton}
+                </Upload>
+                <Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
+                    <img alt="example" style={{ width: '100%' }} src={previewImage} />
+                </Modal>
+            </div>
+        );
+    }
+});
+
+const Newuser = Form.create()(React.createClass({
+    getInitialState() {
+        return {
+        	orgCodeUrl:[],
+            loading: false,
+            loaduser: {}, 
+            visible:false
+        };
+    },
+    handleSubmit(e) {
+        e.preventDefault();
+        if(!this.state.role){
+        	message.warning('亲!请选择角色');
+        	return false;
+        };
+        if(!this.state.roleState){
+        	message.warning('亲!请选择角色状态');
+        	return false;
+        }
+        let theorgCodeUrl = [];
+        if (this.state.orgCodeUrl.length) {
+            let picArr = [];
+            this.state.orgCodeUrl.map(function (item) {
+                picArr.push(item.response.data);
+            });
+            theorgCodeUrl = picArr.join(",");
+        };
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/customer/addCustomer',
+            data: {
+            	id:this.props.datauser.id,
+                uesrName:this.state.uesrName,
+				role:this.state.role,
+				roleState:this.state.roleState,
+				customerName:this.state.customerName,
+				department:this.state.department,
+				post:this.state.post,
+				station:this.state.station,
+				phone:this.state.phone,
+				email:this.state.email,
+				director:this.state.theTypes,
+				companyIntention:JSON.stringify(this.state.companyIntention),
+            }
+        }).done(function (data) { 
+            this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('保存成功!');
+                this.handleOk();
+            } else {
+                message.warning(data.error[0].message);
+            }
+        }.bind(this));
+    },
+    //主管初始加载(自动补全)
+	supervisor(e){ 
+		$.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/customer/findCustomerByName",
+            data:{
+            	name:e
+            },
+            success: function (data) {                	  
+				       let thedata=data.data;
+				    if (!thedata) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };	
+                    thedata = {}; 
+              }; 
+					this.setState({
+						customerArr:thedata,	
+                    });
+				}.bind(this),
+			}).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));  
+	},
+	//上级主管输入框失去焦点是判断客户是否存在
+	selectAuto(value,options){
+		this.setState({
+			auto:value
+		})
+	},
+	blurChange(e){
+		console.log(e)
+		let theType='';
+		let contactLists=this.state.customerArr||[];
+			if (e) {
+            contactLists.map(function (item) {
+                if (item.name == e.toString()) {
+                    theType = item.id;
+                }
+           });     
+   	    }
+		this.setState({
+			theTypes:theType
+		})
+	},
+	//值改变时请求客户名称
+	httpChange(e){
+		if(e.length>=2){
+			this.supervisor(e); 
+		}	
+		this.setState({
+			auto:e
+		})
+	},
+	//查看基本详情基本信息
+    loaduser(record){
+    	if(record){
+    	$.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/customer/toUpdateBusiness',
+            data: {
+              businessId: record.name
+            },
+            success: function (data) {
+                let thisData = data.data;                
+                if (!thisData) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    thisData = {};
+                }; 
+                this.setState({
+                	orgCodeUrl: thisData.orgCodeUrl ? splitUrl(thisData.orgCodeUrl, ',', globalConfig.avatarHost + '/upload') : [],
+                	uids:thisData.uid,
+                	followSituation:thisData.followSituation,
+                	businessGlossoryId:thisData.businessGlossoryId,
+                	customerStatus:thisData.customerStatus,
+                	remarks:thisData.remarks,	
+                });                  
+            }.bind(this),
+       }).always(function () {
+            this.setState({            	
+                loading: false
+            });
+        }.bind(this));  
+       }
+    },
+    //重置密码
+    resetPwd(e) {
+        this.setState({
+            loading: true
+        })
+        $.ajax({
+            type: 'post',
+            url: globalConfig.context + "/api/admin/supervise/resetPwd",
+            dataType: "json",
+            data: {
+                id: this.state.id
+            }
+        }).done((res) => {
+            if (res.error && res.error.length) {
+                message.error(res.error[0].message);
+            } else {
+                message.success("密码重置成功");
+            }
+        }).always(() => {
+            this.setState({
+                loading: false
+            })
+        });
+    },
+    handleOk(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false, true);
+    },
+    handleCancel(e) {
+        this.setState({
+            visible: false,
+        });
+        this.props.closeDesc(false);
+    },
+    getOrgCodeUrl(e) {
+        this.setState({ orgCodeUrl: e });
+    },
+    componentWillMount(e){
+    	const cityArrs=[];
+        cityArr.map(function (item) {
+            cityArrs.push(
+                <Select.Option key={item.value}>{item.key}</Select.Option>
+            )                    
+        });
+        this.state.cityOption=cityArrs;
+    },
+    componentWillReceiveProps(nextProps) {
+    	this.state.visible = nextProps.showDesc;
+    	this.state.Detaile=nextProps.userDetaile;
+		if(!nextProps.userDetaile){
+			this.state.uesrName='';
+			this.state.role=undefined;
+			this.state.roleState=undefined;
+			this.state.customerName='';
+			this.state.department=undefined;
+			this.state.post=undefined;
+			this.state.station=undefined;
+			this.state.phone='';
+			this.state.email='';
+			this.state.auto='';
+			this.state.companyIntention=[];
+			this.state.orgCodeUrl=[];
+   		}else{
+    		this.loaduser(nextProps.datauser)
+    	   }     
+      },
+    render() {
+        const FormItem = Form.Item
+        const formItemLayout = {
+            labelCol: { span: 8 },
+            wrapperCol: { span: 14 },
+        };  
+        const dataSources=this.state.customerArr || [];
+        const options = dataSources.map((group,index) =>
+				      <Select.Option key={index} value={group.name}>{group.name}</Select.Option>
+				     )
+        return (
+        <div>
+           <Modal maskClosable={false} visible={this.state.visible}
+                        onOk={this.handleOk} onCancel={this.handleCancel}
+                        width='800px'
+                        title={this.props.userDetaile?'用户详情':'新建用户'}                      
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form">
+			                <Spin spinning={this.state.loading}>
+			                        <div className="clearfix">
+			                            <div className="clearfix">
+					                    	<FormItem className="half-item"
+						                            {...formItemLayout}
+						                            label="用户名" >   
+					                                    <Input placeholder="输入客户姓名" value={this.state.uesrName}
+					                                    onChange={(e)=>{this.setState({uesrName:e.target.value})}} required="required" style={{width:'200px'}}/>
+					                                <span className="mandatory">*</span>
+						                    </FormItem>
+						                    {this.props.userDetaile?
+						                    	<Popconfirm
+			                                        title={"用户 [ " + this.state.name + " ] 的密码将会重置为123456,确认操作?"}
+			                                        onConfirm={this.resetPwd}
+			                                        okText="确认"
+			                                        cancelText="取消"
+			                                        placement="topLeft">
+			                                        <Button>重置密码</Button>
+			                                    </Popconfirm>:''}
+					                    </div>
+					                    <FormItem className="half-item" 
+					                          {...formItemLayout}
+					                           label="用户角色"
+					                         > 
+												  <Select placeholder="选择用户角色" value={this.state.role}
+												    onChange={(e)=>{this.setState({role:e})}} style={{width:'200px'}}>
+					                                {
+					                                    socialAttribute.map(function (item) {
+					                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+					                                    })
+					                                }
+					                              </Select>
+					                              <span className="mandatory">*</span>
+			                   		    </FormItem>
+			                   		    {this.props.userDetaile?<FormItem className="half-item"
+						                            {...formItemLayout}
+						                            label="用户状态" >   
+					                                    <Select placeholder="用户状态" value={this.state.roleState} style={{width:'200px'}}
+												          onChange={(e)=>{this.setState({roleState:e})}} > 
+					                                      {
+					                                      socialAttribute.map(function (item) {
+					                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+					                                       })
+					                                      }
+					                                   </Select>
+					                                   <span className="mandatory">*</span>
+						                </FormItem>:''}
+					                    <FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="用户姓名" >   
+				                                    <Input placeholder="请输入用户姓名" style={{width:'200px'}} value={this.state.customerName}
+					                                    onChange={(e)=>{this.setState({customerName:e.target.value})}} required="required"/> 
+				                                    <span className="mandatory">*</span>
+					                    </FormItem>
+					                    <FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="组织部门" >   
+				                                    <Input placeholder="请输入组织部门" style={{width:'200px'}} value={this.state.department}
+					                                    onChange={(e)=>{this.setState({department:e.target.value})}} required="required"/> 
+				                                    <span className="mandatory">*</span>
+					                    </FormItem>
+					                    <FormItem className="half-item" 
+					                          {...formItemLayout}
+					                           label="职务"
+					                         > 
+												  <Select placeholder="选择职务" style={{width:'200px'}} value={this.state.post} onChange={(e)=>{this.setState({post:e})}}> 
+					                                {
+					                                    post.map(function (item) {
+					                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+					                                    })
+					                                }
+					                              </Select>
+			                   		    </FormItem>
+			                   		    <FormItem className="half-item" 
+					                          {...formItemLayout}
+					                           label="岗位"
+					                         > 
+												  <Select placeholder="选择岗位" style={{width:'200px'}} value={this.state.station} onChange={(e)=>{this.setState({station:e})}}> 
+					                                {
+					                                    station.map(function (item) {
+					                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+					                                    })
+					                                }
+					                              </Select>
+			                   		    </FormItem>
+			                   		    <FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="联系手机" >   
+				                                    <Input placeholder="请输入号码" style={{width:'200px'}} value={this.state.phone}
+					                                    onChange={(e)=>{this.setState({phone:e.target.value})}} required="required"/> 
+				                                    <span className="mandatory">*</span>
+					                    </FormItem>
+					                    <FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="电子邮箱" >   
+				                                    <Input placeholder="请输入邮箱" style={{width:'200px'}} value={this.state.email}
+					                                    onChange={(e)=>{this.setState({email:e.target.value})}} /> 
+					                    </FormItem> 
+					                    <FormItem className="half-item"
+				                            {...formItemLayout}
+				                             label="上级主管"
+				                             >
+						                    <AutoComplete
+											        className="certain-category-search"
+											        dropdownClassName="certain-category-search-dropdown"
+											        dropdownMatchSelectWidth={false}
+											        dropdownStyle={{ width: 200 }}
+											        size="large"
+											        style={{ width: '200px' }}
+											        dataSource={options}
+											        placeholder="输入名称"
+											        value={this.state.auto}
+											        onChange={this.httpChange}
+											        filterOption={true}
+											        onBlur={this.blurChange}
+											        onSelect={this.selectAuto}
+											      >
+											        <Input/>
+											      </AutoComplete> 
+											      <span className="mandatory">*</span>
+							            </FormItem>
+							           {this.props.userDetaile?
+							           	
+						                    <FormItem className="half-item"
+						                            {...formItemLayout}
+						                            label="用户编号" >   
+						                            <span>{this.state.id}</span>
+						                    </FormItem>
+						                :''}
+							            <div className='clearfix'>
+							            	<FormItem className="half-item"
+						                        {...formItemLayout}
+						                        label="地区" >
+												   <Select
+						                                multiple
+						                                style={{width:'500px'}}
+						                                placeholder="选择地区"                               
+						                                filterOption={(input, option) => { return option.props.children.indexOf(input) >= 0 }}
+						                                value={this.state.companyIntention}
+						                                onChange={(pids) => {
+						                                    this.state.companyIntention = pids;
+						                                    this.setState({
+						                                        companyIntention: this.state.companyIntention
+						                                    })
+						                                }}
+						                            >
+						                                {this.state.cityOption}
+						                            </Select>
+						                    </FormItem>	
+							            </div>
+							             <div className="clearfix pictures">
+						                        <FormItem
+							                        labelCol={{ span: 4 }}
+							                        wrapperCol={{ span: 18 }}
+							                        label="用户头像" >
+							                        <PicturesWall
+							                            pictureSign="customer_sys_file"
+							                            fileList={this.getOrgCodeUrl}
+							                            pictureUrl={this.state.orgCodeUrl} />
+							                            <p>图片建议:要萌。</p>
+						                        </FormItem>
+							                </div> 
+				                    </div>
+			                    <FormItem wrapperCol={{ span: 12, offset: 4 }}>
+			                        <Button className="set-submit" type="primary" htmlType="submit">保存</Button>  
+			                        <Button className="set-submit" type="ghost" onClick={this.handleCancel}>取消</Button>
+			                    </FormItem> 
+			                </Spin>
+			            </Form >
+			        </Modal>    
+    	    </div>
+        )
+    }
+}));
+
+export default Newuser;

+ 210 - 0
js/component/manageCenter/set/userManagementS/roles.jsx

@@ -0,0 +1,210 @@
+import React from 'react';
+import ReactDom from 'react-dom';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload } from 'antd';
+import Newrole from "./newRole.jsx"
+import './userMangagement.less'
+import {techAuditStatusList, station,post } from '../../../dataDic.js';
+
+const Roles=Form.create()(React.createClass({
+	loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/rol',
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                roleName:this.state.roleNameSearch,
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        let thisdata = data.data[i];
+                        theArr.push({
+                             key: i,
+	                         id: thisdata.id,
+	                         roleName: thisdata.roleName,
+	                         admin:thisdata.admin
+                        });
+                    };
+                    this.state.pagination.current = data.data.pageNo;
+                    this.state.pagination.total = data.data.totalCount;
+                };
+                this.setState({
+                    dataSource: theArr,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+        	datauser:{},
+            selectedRowKeys: [],
+            selectedRows: [],
+            loading: false,
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+
+            columns: [
+                {
+                    title: '角色名称',
+                    dataIndex: 'roleName',
+                    key: 'roleName',
+                    width:'300px'
+                }, {
+                    title: '创建人',
+                    dataIndex: 'admin',
+                    key: 'admin',
+                    width:'300px'
+                }, {
+                    title: '创建时间',
+                    dataIndex: 'keyword',
+                    key: 'keyword',
+                }
+            ],
+            dataSource: [],
+        };
+    },
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+    	this.state.userDetaile=true;
+        this.state.datauser = record;
+        this.setState({
+            showDesc: true
+        });
+    },
+    //删除
+    delectRow() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: deletedIds.length > 0
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/achievement/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('删除成功!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    addClick() {
+    	this.state.userDetaile=false;
+        this.setState({
+            showDesc: true
+        });
+    },
+    closeDesc(e, s) {
+        this.state.showDesc = e;
+        if (s) {
+            this.loadData();
+        };
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+    	this.state.userNameSearch='';
+        this.loadData();       
+    },
+    render() {
+        const rowSelection = {
+            selectedRowKeys: this.state.selectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+            	if(selectedRows.length=='10'){
+                	this.setState({
+                    selectedRows: [],
+                    selectedRowKeys: ''
+                });
+                }else{
+	                this.setState({
+	                    selectedRows: selectedRows.slice(-1),
+	                    selectedRowKeys: selectedRowKeys.slice(-1)
+	                });
+                }  
+            }
+        };
+        const hasSelected = this.state.selectedRowKeys.length > 0;
+        return (
+            <div className="user-content" >
+                <div className="content-title">
+	                <div className="user-search">
+	                    <Input placeholder="角色名称" style={{width:'150px'}}
+	                        value={this.state.roleNameSearch}
+	                        onChange={(e) => { this.setState({ roleNameSearch: e.target.value }); }} />
+	                    <Button type="primary" onClick={this.search}>搜索</Button>
+	                    <Button onClick={this.reset}>重置</Button>
+	                    <Button style={{ background: "red", border: "none", color: "#fff" }}
+	                        disabled={!hasSelected}
+	                        onClick={this.delectRow}>删除<Icon type="minus" /></Button>
+	                    <Button type="primary" className="addButton" onClick={this.addClick} disabled>新增用户<Icon type="user" /></Button>
+	                </div>
+	                <div className="patent-table">
+	                    <Spin spinning={this.state.loading}>
+	                        <Table columns={this.state.columns}
+	                            dataSource={this.state.dataSource}
+	                            rowSelection={rowSelection}
+	                            pagination={this.state.pagination}
+	                            onRowClick={this.tableRowClick} />
+	                    </Spin>
+	                </div>
+	                <Newrole
+	                    userDetaile={this.state.userDetaile}
+	                    datauser={this.state.datauser}
+	                    showDesc={this.state.showDesc}
+	                    closeDesc={this.closeDesc} />
+	            </div >
+            </div>
+        );
+    }
+}));
+
+export default Roles;
+

+ 400 - 0
js/component/manageCenter/set/userManagementS/user.jsx

@@ -0,0 +1,400 @@
+import React from 'react';
+import ReactDom from 'react-dom';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Modal, Upload } from 'antd';
+import Newuser from "./newUser.jsx"
+import './userMangagement.less'
+import {techAuditStatusList, station,post } from '../../../dataDic.js';
+
+const User=Form.create()(React.createClass({
+	loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/supervise/adminLi',
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                userName:this.state.userNameSearch,
+				organization:this.state.organizationSearch,
+				role:this.state.rolesSearch,
+				post:this.state.postSearch,
+				station:this.state.stationSearch,
+				status:this.state.statusSeach,
+				signName:this.state.signNameSearch,
+				mobile:this.state.mobileSearch,
+				proName:this.state.proNameSearch
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            id: thisdata.id,
+                            mobile: thisdata.mobile,
+                            name: thisdata.name,
+                            email: thisdata.email,
+                            createTime: thisdata.createTime,
+                            number: thisdata.number,
+                            province: thisdata.province,
+                            position: thisdata.position,
+                            superior: thisdata.superior,
+                            superiorId: thisdata.superiorId,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate
+                        });
+                    };   
+                };
+                this.state.pagination.current = data.data.pageNo?data.data.pageNo:'0';
+                this.state.pagination.total = data.data.totalCount?data.data.totalCount:'0';
+                this.setState({
+                    dataSource: theArr,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+        	datauser:{},
+            searchMore: true,
+            selectedRowKeys: [],
+            selectedRows: [],
+            loading: false,
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '用户编号',
+                    dataIndex: 'key',
+                    key: 'key',
+                }, {
+                    title: '登录用户名',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '角色',
+                    dataIndex: 'email',
+                    key: 'email',
+                }, {
+                    title: '用户姓名',
+                    dataIndex: 'createTime',
+                    key: 'createTime',
+                }, {
+                    title: '组织机构',
+                    dataIndex: 'number',
+                    key: 'number',
+                }, {
+                    title: '职务',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                }, 
+                {
+                    title: '岗位',
+                    dataIndex: 'boutique',
+                    key: 'boutique',
+                },
+                 {
+                    title: '联系手机',
+                    dataIndex: 'mobile',
+                    key: 'mobile',
+                },
+                {
+                    title: '上级主管姓名',
+                    dataIndex: 'province',
+                    key: 'province',
+                },
+                {
+                    title: '状态',
+                    dataIndex: 'a',
+                    key: 'a',
+                }
+            ],
+            dataSource: [],
+        };
+    },
+    componentWillMount() {
+        let organizationArr = [];
+        techAuditStatusList.map(function (item) {
+            organizationArr.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
+        this.state.organizationList = organizationArr;
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+    	this.state.userDetaile=true;
+        this.state.datauser = record;
+        this.setState({
+            showDesc: true
+        });
+    },
+    //锁定
+    locking() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/achievement/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('锁定成功!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    //激活
+    activation() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/achievement/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('激活成功!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    //删除
+    delectRow() {
+        let deletedIds = [];
+        for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
+            let rowItem = this.state.selectedRows[idx];
+            if (rowItem.id) {
+                deletedIds.push(rowItem.id)
+            };
+        };
+        this.setState({
+            selectedRowKeys: [],
+            loading: true
+        });
+        $.ajax({
+            method: "POST",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/achievement/delete",
+            data: {
+                ids: deletedIds
+            }
+        }).done(function (data) {
+            if (!data.error.length) {
+                message.success('删除成功!');
+                this.setState({
+                    loading: false,
+                });
+            } else {
+                message.warning(data.error[0].message);
+            };
+            this.loadData();
+        }.bind(this));
+    },
+    addClick() {
+    	this.state.userDetaile=false;
+        this.setState({
+            showDesc: true
+        });
+    },
+    closeDesc(e, s) {
+        this.state.showDesc = e;
+        if (s) {
+            this.loadData();
+        };
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+    	this.state.userNameSearch='';
+		this.state.organizationSearch=undefined;
+		this.state.rolesSearch=undefined;
+		this.state.postSearch=undefined;
+		this.state.stationSearch=undefined;
+		this.state.statusSeach=undefined;
+		this.state.signNameSearch='';
+		this.state.mobileSearch='';
+		this.state.proNameSearch='';
+        this.loadData();       
+    },
+    searchSwitch() {
+        this.setState({
+            searchMore: !this.state.searchMore
+        });
+    },
+    render() {
+        const rowSelection = {
+            selectedRowKeys: this.state.selectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+            	if(selectedRows.length=='10'){
+                	this.setState({
+                    selectedRows: [],
+                    selectedRowKeys: ''
+                });
+                }else{
+	                this.setState({
+	                    selectedRows: selectedRows.slice(-1),
+	                    selectedRowKeys: selectedRowKeys.slice(-1)
+	                });
+                }
+                
+            }
+        };
+        const hasSelected = this.state.selectedRowKeys.length > 0;
+        const { RangePicker } = DatePicker;
+        return (
+            <div className="user-content" >
+                <div className="content-title">
+	                <div className="user-search">
+	                    <Input placeholder="用户姓名" style={{width:'150px'}}
+	                        value={this.state.userNameSearch}
+	                        onChange={(e) => { this.setState({ userNameSearch: e.target.value }); }} />
+	                    <Select placeholder="组织机构"
+                            style={{ width: 160 }}
+                            value={this.state.organizationSearch}
+                            onChange={(e) => { this.setState({ organizationSearch: e }) }}>
+                            {this.state.organizationList}
+                        </Select>
+                        <Select placeholder="角色"
+                            style={{ width: 160 }}
+                            value={this.state.rolesSearch}
+                            onChange={(e) => { this.setState({ rolesSearch: e }) }}>
+                            {this.state.organizationList}
+                        </Select>    
+	                    <Button type="primary" onClick={this.search}>搜索</Button>
+	                    <Button onClick={this.reset}>重置</Button>
+	                    <Button style={{ background: "red", border: "none", color: "#fff" }}
+	                        disabled={!hasSelected}
+	                        onClick={this.delectRow}>删除<Icon type="minus" /></Button>
+	                    <Button style={{ background: "#333333", border: "none", color: "#fff" }}
+	                        disabled={!hasSelected}
+	                        onClick={this.locking}>锁定<Icon type="lock" /></Button>
+	                    <Button style={{ background: "green", border: "none", color: "#fff" }}
+	                        disabled={!hasSelected}
+	                        onClick={this.activation}>激活<Icon type="unlock" /></Button>
+	                    
+	                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
+	                    <Button type="primary" className="addButton" onClick={this.addClick} disabled>新增用户<Icon type="user" /></Button>
+	                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
+	                    	<Select placeholder="职务"
+	                            style={{ width: 160 }}
+	                            value={this.state.postSearch}
+	                            onChange={(e) => { this.setState({ postSearch: e }) }}>
+	                            {
+                                    post.map(function (item) {
+                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+                                    })
+                                }
+                            </Select>
+                            <Select placeholder="岗位"
+	                            style={{ width: 160 }}
+	                            value={this.state.stationSearch}
+	                            onChange={(e) => { this.setState({ stationSearch: e }) }}>
+	                             {
+                                    station.map(function (item) {
+                                        return <Select.Option key={item.value} >{item.key}</Select.Option>
+                                    })
+                                }
+                       		</Select>
+                       		<Select placeholder="状态"
+	                            style={{ width: 160 }}
+	                            value={this.state.statusSeach}
+	                            onChange={(e) => { this.setState({ statusSeach: e }) }}>
+	                            {this.state.organizationList}
+                       		</Select>
+                       		<Input placeholder="登录用户名" style={{width:'150px'}}
+		                        value={this.state.signNameSearch}
+		                        onChange={(e) => { this.setState({ signNameSearch: e.target.value }); }} />
+	                        <Input placeholder="联系手机" style={{width:'150px',margin:'0 15px'}}
+		                        value={this.state.mobileSearch}
+		                        onChange={(e) => { this.setState({ mobileSearch: e.target.value }); }} />
+	                        <Input placeholder="上级主管名称" style={{width:'150px'}}
+		                        value={this.state.proNameSearch}
+		                        onChange={(e) => { this.setState({ proNameSearch: e.target.value }); }} />
+	                    </div>
+	                </div>
+	                <div className="patent-table">
+	                    <Spin spinning={this.state.loading}>
+	                        <Table columns={this.state.columns}
+	                            dataSource={this.state.dataSource}
+	                            rowSelection={rowSelection}
+	                            pagination={this.state.pagination}
+	                            onRowClick={this.tableRowClick} />
+	                    </Spin>
+	                </div>
+	                <Newuser
+	                    userDetaile={this.state.userDetaile}
+	                    datauser={this.state.datauser}
+	                    showDesc={this.state.showDesc}
+	                    closeDesc={this.closeDesc} />
+	            </div >
+            </div>
+        );
+    }
+}));
+
+export default User;

+ 69 - 0
js/component/manageCenter/set/userManagementS/userMangagement.less

@@ -0,0 +1,69 @@
+.user-content {
+    background: #fff;
+    padding: 20px;
+    .content-title {
+        color: #333;
+        font-size: 16px;
+        overflow: hidden;
+    }
+    .user-search {
+        margin-bottom: 10px;
+        > input {
+            width: 140px;
+        }
+         > button,
+        .ant-select,
+        > input {
+            margin-right: 10px;
+            margin-top: 10px;
+        }
+        .ant-switch {
+            margin-left: 10px;
+        }
+        .search-more {
+            margin: 10px 0;
+            > span {
+                margin-right: 10px;
+            }
+        }
+    }
+    .addButton {
+        float: right;
+        margin-right: 50px!important;
+    }
+}
+.half-item {
+    float: left;
+    width: 50%;
+    height: 36px;
+    margin-bottom: 10px;
+    button {
+        margin-left: 20px;
+    }
+}
+.half-middle {
+    width: 80%;
+    margin: 10px auto;
+    height: 36px;
+    button {
+        margin-left: 20px;
+    }
+}
+.patent-table {
+    clear: both;
+}
+.set-submit {
+    margin-right: 15px;
+}
+.deletButton {
+    float: right;
+    margin-bottom: 15px;
+}
+.clearfix {
+    clear: both;
+}
+.mandatory {
+    color: red;
+    margin-left: 8px;
+}
+