caipin 4 년 전
부모
커밋
95f18b32f4

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 16949 - 0
src/common/districtOptions.json


+ 34 - 21
src/common/popupsCompany/company.js

@@ -3,9 +3,7 @@ import { connect } from 'react-redux';
 import { Input, Cascader, message } from 'antd';
 import { actionCreators } from './store';
 
-import options from '../popups/districtOptions.json';
-
-
+import options from '../districtOptions.json';
 
 class company extends PureComponent {
 
@@ -13,7 +11,7 @@ class company extends PureComponent {
         const { companyDetail, natureOptions, handleModifyCompany } = this.props;
         let companyDetail2 = companyDetail.toJS();
         let natureOptions2 = natureOptions.toJS();
-        console.log('ddd');
+
         return (
             <Fragment>
 
@@ -34,7 +32,7 @@ class company extends PureComponent {
                 </div> */}
                 <div className="sheet-panel-header d-flex justify-content-between mx-4">
                     <div>
-                        <a href="#" data-toggle="tooltip" data-placement="top" title="" data-original-title="新页面打开"><i className="fal fa-external-link"></i></a>
+                        {/* <a href="#" data-toggle="tooltip" data-placement="top" title="" data-original-title="新页面打开"><i className="fal fa-external-link"></i></a> */}
                     </div>
                     <div>
                     </div>
@@ -100,8 +98,10 @@ class company extends PureComponent {
                                 <div className="cldform-label">公司地址</div>
                                 <div className="cldform-control">
                                     <Input id="2" value={companyDetail2.address}
-                                    onChange={(e) => handleModifyCompany({ 'field': 'address', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '公司地址' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'address', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '公司地址'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -111,8 +111,10 @@ class company extends PureComponent {
                                 <div className="cldform-control">
                                     <Input id="2"
                                         value={companyDetail2.fax}
-                                        onChange={(e) => handleModifyCompany({ 'field': 'fax', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '公司传真' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'fax', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '公司传真'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -121,8 +123,10 @@ class company extends PureComponent {
                                 <div className="cldform-control">
                                     <Input id="2"
                                         value={companyDetail2.webservice}
-                                        onChange={(e) => handleModifyCompany({ 'field': 'webservice', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '网址' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'webservice', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '网址'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -133,8 +137,10 @@ class company extends PureComponent {
                                     <Input id="2"
                                         value={companyDetail2.ride}
 
-                                        onChange={(e) => handleModifyCompany({ 'field': 'ride', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '乘车路线' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'ride', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '乘车路线'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -144,8 +150,10 @@ class company extends PureComponent {
                                 <div className="cldform-control">
                                     <Input id="2"
                                         value={companyDetail2.landmarks}
-                                        onChange={(e) => handleModifyCompany({ 'field': 'landmarks', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '地标建筑' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'landmarks', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '地标建筑'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -155,8 +163,10 @@ class company extends PureComponent {
                                 <div className="cldform-control">
                                     <Input id="2"
                                         value={companyDetail2.stay}
-                                        onChange={(e) => handleModifyCompany({ 'field': 'stay', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '参考住宿' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'stay', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '参考住宿'
+                                        })}
                                     />
                                 </div>
                             </div>
@@ -166,14 +176,17 @@ class company extends PureComponent {
                                 <div className="cldform-control">
                                     <Input id="2"
                                         value={companyDetail2.remarks}
-                                        onChange={(e) => handleModifyCompany({ 'field': 'remarks', 'value': e.target.value
-                                    , 'key': companyDetail2.key, 'title': '备注' })}
+                                        onChange={(e) => handleModifyCompany({
+                                            'field': 'remarks', 'value': e.target.value
+                                            , 'key': companyDetail2.key, 'title': '备注'
+                                        })}
                                     />
                                 </div>
                             </div>
                         </div>
                     </div>
                 </div>
+
             </Fragment>
 
         );
@@ -192,13 +205,13 @@ const mapStateToProps = (state) => {
 const mapDispathToProps = (dispatch) => {
     return {
         handleModifyCompany(parameter) {
-            
+
             dispatch(actionCreators.changeInputValue(parameter));
             if (delaySwitch != null) {
                 clearTimeout(delaySwitch);
             }
             delaySwitch = setTimeout(() => {
-                
+
                 dispatch(actionCreators.modifyCompany(parameter));
             }, 800);
         },

+ 5 - 21
src/common/popupsCompany/index.js

@@ -5,6 +5,7 @@ import 'antd/dist/antd.css';
 import { actionCreators } from './store';
 
 import Company from './company';
+import PopupsTab from '../tab/popupsTab';
 
 const error = (msg) => {
   message.error({
@@ -38,31 +39,14 @@ class popups extends PureComponent {
                   <div className="sheet-left-panel">
 
                   <Company />
-
+                  
+                  
                     
 
+                  </div>
 
+                  <PopupsTab data={companyDetail.toJS()} />
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-                  </div>
                   {/* <div class="sheet-right-panel col p-0">
                   <div class="sheet-panel-tabs mx-4 mt-4">
                     <ul class="nav nav-tabs sheet-nav-tabs" role="tablist">

+ 247 - 0
src/common/tab/popupsTab.js

@@ -0,0 +1,247 @@
+import React, { PureComponent, Fragment } from 'react';
+import { connect } from 'react-redux';
+import { Table } from 'antd';
+
+import {  reducer } from './store';
+
+const tabTable={
+    height:'340px',
+}
+
+class popupsTab extends PureComponent {
+
+    tabMenu() {
+        const { data } = this.props;
+        let clientMenu;
+        let noneMenu;
+        if (typeof data.clientList !== 'undefined') {
+            clientMenu = (<li className="nav-item"><a className="nav-link active" data-toggle="tab" href="#tabClient" role="tab" aria-selected="true">联系人</a></li>);
+        }
+        noneMenu = (<li className="nav-item "><a className="nav-link" data-toggle="tab" href="#tab-yun" role="tab" aria-selected="true">联系人</a></li>);
+        return (
+            <Fragment>
+                {clientMenu}
+            </Fragment>
+        )
+    }
+
+    tabContent() {
+        const { data } = this.props;
+        let clientContent;
+        
+        reducer.columns[0].filters=data.departmentFilters;
+
+        if (typeof data.clientList !== 'undefined') {
+            clientContent = (
+                <div className="tab-pane fade active show sheet-panel-righttop" id="tabClient" role="tabpanel" aria-labelledby="tab-yun">
+                    <div className="slimScrol3" style={tabTable} >
+                        <Table
+                            columns={reducer.columns}
+                            dataSource={data.clientList}
+                            pagination={false}
+                            //bordered
+                            size="small"
+                            scroll={{
+                                // x: 'calc(1200px + 50%)',
+                                // y: screenHeight - reportHeaderHeight - 75,
+                                //x:400,
+                                y:315,
+                            }}
+                            
+
+                        />
+
+                       
+
+
+                    </div>
+                </div>
+            );
+        }
+
+        return (
+            <Fragment>
+                {clientContent}
+                <div className="sheet-btns mt-3">
+                <a href="#add-server" className="btn btn-xs btn-outline-primary" data-toggle="modal" data-target="#add-server"><i className="far fa-plus"></i> 添加联系人</a>
+                </div>
+            </Fragment>
+        )
+
+    }
+
+    render() {
+        // companyDetail, natureOptions, handleModifyCompany,
+        const { data } = this.props;
+
+        
+
+        //let dataToJS = data.toJS();
+        // let natureOptions2 = natureOptions.toJS();
+        //console.log(data.clientList);
+        //console.log(typeof companyDetailtoJS.clientList)
+        return (
+            <Fragment>
+                <div className="sheet-right-panel col p-0">
+                    <div className="sheet-panel-tabs mx-4 mt-4">
+                        <ul className="nav nav-tabs sheet-nav-tabs" role="tablist">
+                            {/* <li className="nav-item"><a className="nav-link" data-toggle="tab" href="#tab-yun" role="tab" aria-selected="true">联系人</a></li>
+                            <li className="nav-item"><a className="nav-link" data-toggle="tab" href="#tab-clock" role="tab" aria-selected="false">软件锁</a></li> */}
+                            {this.tabMenu()}
+                        </ul>
+                        <div className="tab-content">
+
+                            {this.tabContent()}
+
+                           
+
+                            <div className="tab-pane fade sheet-panel-righttop" id="tab-clock" role="tabpanel" aria-labelledby="tab-lock">
+                                <div className="slimScrol3">
+                                    <table className="table">
+                                        <thead>
+                                            <tr>
+                                                <th className="border-0"></th>
+                                                <th className="border-0">锁号</th>
+                                                <th className="border-0">产品</th>
+                                                <th className="border-0">状态</th>
+                                                <th className="border-0">联系人</th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>1</td>
+                                                <td><a href="#lock-detail" data-toggle="modal" data-target="#lock-detail">HNYH-0654</a></td>
+                                                <td>固化清单全功能+全国专业+全国专业(新定额)</td>
+                                                <td>借出</td>
+                                                <td><a href="#">张三</a></td>
+                                            </tr>
+                                            <tr>
+                                                <td>2</td>
+                                                <td><a href="#lock-detail" data-toggle="modal" data-target="#lock-detail">HNYH-0655</a></td>
+                                                <td>+全国专业(新定额)</td>
+                                                <td>借出</td>
+                                                <td><a href="#">李四</a></td>
+                                            </tr>
+                                        </tbody>
+                                    </table>
+                                </div>
+                            </div>
+
+
+                        </div>
+
+
+                        {/* <Tabs onChange={callback} type="card">
+                            <TabPane tab="联系人" key="1">
+                                <table className="table">
+                                        <thead>
+                                            <tr>
+                                                <th width="20" className="border-0"></th>
+                                                <th className="border-0"><a className="dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">所有</a>
+                                                    <div className="dropdown-menu" >
+                                                        <a className="dropdown-item d-flex" href="#">所有<i className="far fa-check ml-auto"></i></a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门1</a>
+                                                        <a className="dropdown-item d-flex" href="#">部门2</a>
+                                                    </div>
+                                                </th>
+                                                <th className="border-0">姓名</th>
+                                                <th className="border-0">昵称</th>
+                                                <th className="border-0">手机</th>
+                                                <th className="border-0">QQ</th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <tr>
+                                                <td>1</td>
+                                                <td>部门1</td>
+                                                <td><a href="#">张三</a></td>
+                                                <td>张(三)工:</td>
+                                                <td>15811111111</td>
+                                                <td>23232323</td>
+                                            </tr>
+                                        </tbody>
+                                    </table>
+                            </TabPane>
+                            <TabPane tab="Tab 2" key="2">
+                                Content of Tab Pane 2
+                            </TabPane>
+                            <TabPane tab="Tab 3" key="3">
+                                Content of Tab Pane 3
+                            </TabPane>
+                        </Tabs> */}
+
+
+                        
+                    </div>
+
+
+
+                    <div className="sheet-panel-record">
+                        <ul className="nav nav-tabs nav-tabs-clean sheet-nav-tabs" role="tablist">
+                            <li className="nav-item ml-4"><a className="nav-link text-center active" data-toggle="tab" href="#tab-log" role="tab" aria-selected="true">日志</a></li>
+                        </ul>
+                        <div className="tab-content p-3">
+                            <div className="tab-pane fade active show sheet-panel-log" id="tab-log" role="tabpanel" aria-labelledby="tab-log">
+                                <div className="slimScrol4">
+                                    <p><a href="#">@陈特</a> 移除 通行账号 15812345678<br /><span className="text-muted">5月5日 14:55</span></p>
+
+                                    <p><a href="#">@陈特</a> 关联 通行账号 15812345678<br /><span className="text-muted">5月5日 14:55</span></p>
+
+                                    <p><a href="#">@陈特</a> 将手机 15800000000 改为 15812345678;将客户 珠海纵横创新软件有限公司 改为 北京旺圣干科技有限公司<br /><span className="text-muted">5月5日 14:55</span></p>
+
+                                    <p><a href="#">@陈特</a> 将客户 改为 珠海纵横创新软件有限公司<br /><span className="text-muted">5月5日 14:55</span></p>
+
+                                    <p><a href="#">@陈特</a> 创建<br /><span className="text-muted">5月5日 14:55</span></p>
+
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+
+
+                </div>
+
+
+            </Fragment>
+        );
+    }
+}
+
+let delaySwitch = null;//延迟检索开关
+
+const mapStateToProps = (state) => {
+    
+    return {
+        // companyDetail: state.getIn(['companyPopups', 'companyDetail']),
+        // natureOptions: state.getIn(['companyPopups', 'natureOptions']),
+        districtOptions:state.get('districtOptions')
+    }
+}
+
+const mapDispathToProps = (dispatch) => {
+    return {
+        handleModifyCompany(parameter) {
+
+            dispatch(actionCreators.changeInputValue(parameter));
+            if (delaySwitch != null) {
+                clearTimeout(delaySwitch);
+            }
+            delaySwitch = setTimeout(() => {
+
+                dispatch(actionCreators.modifyCompany(parameter));
+            }, 800);
+        },
+    }
+}
+
+export default connect(mapStateToProps, mapDispathToProps)(popupsTab);

+ 82 - 0
src/common/tab/store/actionCreators.js

@@ -0,0 +1,82 @@
+import * as constants from './constants';
+import { fromJS } from 'immutable';
+import * as config from '../../../common/config.js';
+import axios from '../../../common/axios_auth.js';
+import qs from 'qs';
+
+import { message } from 'antd';
+
+const error = (msg) => {
+    message.error({
+        content: msg,
+    });
+};
+
+const success = (msg) => {
+    message.success(msg);
+};
+
+
+//获得公司详情
+export const getCompanyDetail = (key, error) => {
+    return (dispatch) => {
+        axios.get(config.CLD2API + '/contact/companyDetail/' + key).then((res) => {
+            const data = res.data;
+            if (data.code === 200) {
+                dispatch({
+                    type: constants.CHANGE_COMPANY_DETAIL,
+                    data: data.data,
+                });
+            } else {
+                error('公司详情请求失败');
+            }
+        }).catch((e) => {
+            error('公司详情请求失败');
+        })
+    }
+};
+//loading
+export const changeLoading = () => {
+    return (dispatch) => {
+        dispatch({
+            type: constants.CHANGE_COMPANYDETAIL_LOADING,
+            data: true,
+        });
+    }
+}
+
+//改变input值
+export const changeInputValue = (parameter) => {
+    return (dispatch) => {
+        dispatch({
+            type: constants.CHANGE_INPUT_VALUE,
+            data: parameter,
+        });
+
+    }
+}
+//更新公司详情
+export const modifyCompany = (parameter) => {
+    return (dispatch) => {
+        let data = {...parameter};
+        console.log('ddd');
+        axios.post(config.CLD2API + '/contact/modifyCompany', qs.stringify(data)).then((res) => {
+            const data = res.data;
+            if (data.code === 200) {
+                if(parameter.field==='district'){
+                    let result = parameter.lable.map(item => { return item.label; })
+                    success(`"${parameter.title}"已保存为"${result.join(',')}"`);
+                }else{
+                    success(`"${parameter.title}"已保存为"${parameter.value}"`);
+                }
+            } else {
+                error(`更新${parameter.title}失败`);
+            }
+        }).catch((e) => {
+            error(`更新${parameter.title}失败`);
+        })
+    }
+}
+
+
+

+ 6 - 0
src/common/tab/store/constants.js

@@ -0,0 +1,6 @@
+export const CHANGE_COMPANY_DETAIL = 'popups/change_company_detail';
+export const CHANGE_COMPANYDETAIL_LOADING = 'popups/change_companydetail_loading';
+export const CHANGE_INPUT_VALUE = 'popups/change_input_value';
+
+
+

+ 5 - 0
src/common/tab/store/index.js

@@ -0,0 +1,5 @@
+import * as reducer from './reducer';
+// import * as actionCreators from './actionCreators';
+// import * as constants from './constants';
+
+export { reducer }

+ 31 - 0
src/common/tab/store/reducer.js

@@ -0,0 +1,31 @@
+import React from 'react';
+export let columns = [
+    {
+      title: '部门',
+      dataIndex: 'department',
+      key: 'department',
+      filters: [
+	],
+	onFilter: (value, record) => record.department === value,
+    },
+    {
+      title: '姓名',
+      dataIndex: 'clientname',
+      key: 'clientname',
+    },
+    {
+      title: '昵称',
+      dataIndex: 'nicename',
+      key: 'nicename',
+    },
+    {
+      title: '手机',
+      key: 'telephone',
+      dataIndex: 'telephone',
+    },
+    {
+      title: 'QQ',
+      key: 'qq',
+      dataIndex: 'qq',
+    },
+  ];

+ 1 - 1
src/contact/company/index.js

@@ -8,7 +8,6 @@ import { Table, Radio, Input, Space, Tag } from 'antd';
 import 'antd/dist/antd.css';
 
 
-
 import Popups from '../../common/popupsCompany';
 
 const radioStyle = {
@@ -223,6 +222,7 @@ const mapDispathToProps = (dispatch) => {
     //检索客户名称
     handleSearch(pagination, props, searchValue, keyup) {
       dispatch(actionCreators.changeLoading());
+      pagination.current=1;
       if (keyup === 'keyup') {
         if (delaySwitch != null) {
           clearTimeout(delaySwitch);

+ 3 - 3
src/contact/contact.js

@@ -40,7 +40,7 @@ class contact extends Component {
                 <li className={menuActive=='company'?'active':''} onClick={()=>handleMenuActive('company')}>
                   <Link to='/contact/company'>
                   <i className="fal fa-building "></i>
-                      <span className="nav-link-text">公司</span>
+                      <span className="nav-link-text">客户</span>
                   </Link>
                 </li>
               </ul>
@@ -86,8 +86,8 @@ const mapDispathToProps = (dispatch) => {
     handleMenuActive(value) {
       dispatch(actionCreators.menuActive(value));
       let sectionName='联系人';
-      if(value==='/contact/company'){
-        sectionName='公司';
+      if(value==='company'){
+        sectionName='客户';
       }
       dispatch(actionCreatorsCommon.setSectionName(sectionName));
     },