yee 7 years ago
parent
commit
cf2b235105

+ 4 - 0
js/component/manageCenter/set/content.less

@@ -40,6 +40,10 @@
             >input {
                 width: 200px;
             }
+            .modal-det {
+                width: 200px;
+                text-align: left;
+            }
         }
     }
     .modal-text {

+ 56 - 2
js/component/manageCenter/set/member.jsx

@@ -62,10 +62,54 @@ const Member = React.createClass({
             });
         }.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: [],
-            provinceList:[],
+            roles: [],
+            currentRoles:[],
+            rolesObj: {},
+            theAdminRole: [],
+            provinceList: [],
             dataSource: [],
             selectedRowKeys: [],
             selectedRows: [],
@@ -129,6 +173,8 @@ const Member = React.createClass({
     componentWillMount() {
         this.state.provinceList = provinceSelect();
         this.loadData();
+        this.loadInitialData();
+        this.loadBindRoles();
     },
     addNew() {
         let e = {}
@@ -184,7 +230,15 @@ const Member = React.createClass({
                         <Button type="primary" onClick={() => { this.loadData() }}>搜索</Button>
                         <Button onClick={this.reset}>重置</Button>
                     </div>
-                    <TheModal data={this.state.modalData} onlyProvince={this.state.onlyProvince} show={this.state.modalShow} handleReturn={this.handleReturn} />
+                    <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}

+ 144 - 91
js/component/manageCenter/set/modal.jsx

@@ -13,6 +13,22 @@ const ProvinceAdd = React.createClass({
             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];
@@ -153,10 +169,12 @@ const TheModal = React.createClass({
             roles: [],
             visible: false,
             loading: false,
+            theSwitch: true,
             bindroles: [],
             locations: [],
             cityOption: [],
-            locationsObj: {}
+            locationsObj: {},
+            adminSelectObj: {}
         }
     },
     handleCancel() {
@@ -165,20 +183,6 @@ const TheModal = React.createClass({
         });
         this.props.handleReturn(false, false);
     },
-    loadInitialData() {
-        this.setState({
-            loading: true
-        });
-        $.ajax({
-            url: globalConfig.context + '/api/roles',
-            cache: false
-        }).done((rolesres) => {
-            this.setState({
-                roles: rolesres.data,
-                loading: false
-            });
-        })
-    },
     loadAdminSelectList() {
         this.setState({
             loading: true
@@ -201,6 +205,7 @@ const TheModal = React.createClass({
             };
             this.setState({
                 adminSelectOption: theArr,
+                adminSelectObj: data.data,
                 loading: false
             });
         })
@@ -263,8 +268,24 @@ const TheModal = React.createClass({
                 "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]) {
+                            this.state.theSwitch = false;
+                        }
+                    }
+                };
+            };
             this.setState({
                 bindroles: data.data || [],
+                theSwitch: this.state.theSwitch,
                 loading: false
             });
         })
@@ -302,9 +323,6 @@ const TheModal = React.createClass({
         this.loadAdminOwnLocation();
     },
     componentWillReceiveProps(nextProps) {
-        if (nextProps.show && !this.state.roles.length) {
-            this.loadInitialData();
-        };
         if (!this.state.visible && nextProps.show) {
             if (nextProps.data.id) {
                 this.loadBindRoles(nextProps.data.id);
@@ -371,8 +389,8 @@ const TheModal = React.createClass({
     },
     getRolesOptions() {
         let options = [];
-        for (let i = 0; i < this.state.roles.length; i++) {
-            options.push(<Select.Option key={String(this.state.roles[i].id)}>{this.state.roles[i].roleName}</Select.Option>);
+        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;
     },
@@ -398,79 +416,114 @@ const TheModal = React.createClass({
     render() {
         return (
             <div className="modal" >
-                <Spin spinning={this.state.loading} >
-                    <Modal maskClosable={false} title="管理员详情"
-                        closable={false} width={1000}
-                        visible={this.state.visible}
-                        onOk={this.postData}
-                        onCancel={this.handleCancel} >
-                        <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%' }}>
+                <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 <Tag key={i}>{getProvince(item.province) + ' ' + (item.city ? item.city.map((c) => {
-                                            return getProvince(c) + ' '
-                                        }) : '')}</Tag>
+                                        return <ProvinceAdd
+                                            provinceList={this.state.provinceList}
+                                            provinceOption={this.state.provinceOption}
+                                            getLocations={this.getLocations}
+                                            delLocations={this.delLocations}
+                                            locations={this.state.locations}
+                                            index={i} key={i} />
                                     })}
-                                </div>}
-                        </div>
-                    </Modal>
-                </Spin>
+                                    <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 >
         );
     }