caipin 5 年之前
父节点
当前提交
cc10c49c41

+ 5 - 4
config/webpack.common.config.js

@@ -3,6 +3,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin')
 
 module.exports = {
   //devtool: 'cheap-module-eval-source-map',
+  
   entry: {
     contact: './src/contact/index.js',
     framework: ['react','react-dom','redux','react-redux'],
@@ -11,10 +12,10 @@ module.exports = {
     hr:'./src/human-resource/index.js',
     product:'./src/product/index.js',
   },
-  output: {
-    filename: 'js/bundle.js',
-    path: path.resolve(__dirname, '../dist')
-  },
+  // output: {
+  //   filename: 'js/bundle.js',
+  //   path: path.resolve(__dirname, '../dist')
+  // },
 
   module: {
     rules: [

+ 4 - 3
config/webpack.prod.config.js

@@ -77,6 +77,7 @@ module.exports = merge(common, {
 
   mode: 'production',
   output: {
+    publicPath:'http://cld2.com:9090/',
     filename: 'nodejs/[name].[hash].bundle.js',
   },
   mode: 'development',
@@ -100,10 +101,10 @@ module.exports = merge(common, {
     historyApiFallback: {
       rewrites: [
         {
-          from: /^\/company/, to: '/',
-          from: /^\/product\/lockStatistics/, to: '/product',
+          // from: /^\/company/, to: '/',
+          // from: /^\/product\/lockStatistics/, to: '/product',
           from: /^\/product/, to: '/product',
-          from: /^\/product\/lockCount/, to: '/product/lockCount',
+          from: /^\/product\/lockCount/, to: '/product',
           //客户相关
           from: /^\/contact/, to: '/contact',
           from: /^\/contact\/company/, to: '/contact',

+ 1 - 9
dist/api/lock_count.json

@@ -7,18 +7,10 @@
         {
             "id":"0",
             "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部"
         },
-{
+	{
             "id":"1",
             "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部",
-            "telephone": "总部"
         }
         
     ]

+ 2 - 2
public/sub_index.html

@@ -48,9 +48,9 @@
      **/
     if (themeSettings.themeOptions) {
       classHolder.className = themeSettings.themeOptions;
-      console.log("%c✔ Theme settings loaded", "color: #148f32");
+      
     } else {
-      console.log("Heads up! Theme settings is empty or does not exist, loading default settings...");
+     
     }
     if (themeSettings.themeURL && !document.getElementById('mytheme')) {
       var cssfile = document.createElement('link');

文件差异内容过多而无法显示
+ 0 - 569
src/common/clientPopups/index.js


+ 0 - 58
src/common/clientPopups/store/reducer.js

@@ -1,58 +0,0 @@
-import * as constants from './constants';
-//锁定state不可修改,导致错误y
-import { fromJS } from 'immutable';
-
-
-const defaultState = fromJS({
-    menu: 'hello submenu-t!!!',
-    list:[],
-    inputValue:'',
-
-});
-
-
-export default (state = defaultState, action) => {
-
-    // switch(action.type) {
-	// 	case constants.SEARCH_FOCUS:
-	// 		return state.set('focused', true);
-	// 	case constants.SEARCH_BLUR:
-	// 		return state.set('focused', false);
-	// 	case constants.CHANGE_LIST:
-	// 		return state.merge({
-	// 			list: action.data,
-	// 			totalPage: action.totalPage
-	// 		});
-	// 	case constants.MOUSE_ENTER:
-	// 		return state.set('mouseIn', true);
-	// 	case constants.MOUSE_LEAVE:
-	// 		return state.set('mouseIn', false);
-	// 	case constants.CHANGE_PAGE:
-	// 		return state.set('page', action.page);
-	// 	default:
-	// 		return state;
-	// }
-    if(action.type===constants.CHANGE_INPUTVALUE){
-        return state.set('inputValue',action.data);
-
-    }
-
-
-
-    if(action.type===constants.SEARCH_FOCUS){
-        return state.set('menu','clicke me');
-        // return {
-        //     menu:'clicke me'
-        // }
-    }
-    if(action.type===constants.CHANGE_LIST){
-        return state.set('list',action.data);
-        //return state.set('menu','clicke me');
-
-        // return state.merge({
-        //     list: action.data,
-        //     //totalPage: action.totalPage
-        // });
-    }
-    return state;
-}

+ 51 - 6
src/common/dataTable/index.js

@@ -5,9 +5,14 @@ const $ = require('jquery');
 $.DataTable = require('datatables.net');
 
 
-let td = null;
-
+let dt = null;
+let propsobj=null;
 class dataTable extends PureComponent {
+    // constructor(props){
+    //     super(props);
+    //     this.handleColumnVisible=this.handleColumnVisible.bind(this);
+    // }
+
     render() {
         const { columnsData } = this.props;
         return (
@@ -30,9 +35,10 @@ class dataTable extends PureComponent {
     }
 
     componentDidMount() {
-        this.props.onRef(this)
+        this.props.onRef(this);
+        propsobj=this.props;
         this.$el = $(this.el);
-        td = this.$el.DataTable(
+        dt = this.$el.DataTable(
             {
                 ordering: false,
                 processing: true,
@@ -43,10 +49,14 @@ class dataTable extends PureComponent {
                 searching: true,
                 dom: 'lBrtip',
                 lengthChange: false,
+                
                 'ajax': {
                     url: config.CLD2API + this.props.url,
                     type: 'get',
-                    // "dataSrc": "list"
+                    "dataSrc": function ( res ) {
+                        let bindDataEvend=propsobj.columnBindEvent(res);
+                         return bindDataEvend.data;
+                      }
                 },
                 columns: this.props.columns,
             }
@@ -63,9 +73,41 @@ class dataTable extends PureComponent {
     }
 
     handleSearch(filter) {
-        td.search(JSON.stringify(filter)).draw();
+        dt.search(JSON.stringify(filter)).draw();
         // console.log(value);
     }
+    handleColumnVisible(index,visible){
+        //console.log(index);
+        // let visible=localStorage.getItem('contact_client_Column_'+index);
+        //console.log(visible);
+        
+        // let column=dt.columns(index);
+        // console.log(column.visible());
+        // //console.log(!column.visible());
+        // column.visible(false);
+
+
+        // setTimeout(() => {
+        //     console.log('dd');
+        //     column.visible(1);
+        //   }, 350);
+
+        let column=dt.columns(index);
+        //column.visible(visible);
+        //let visible=1;
+        let boolVisible=true;
+        if(visible==='false'||visible===false){
+            boolVisible=false;
+        }
+        if(boolVisible){
+            column.visible(1);
+        }else{
+            column.visible(0);
+        }
+        
+        //column.visible(visible);
+    }
+
 }
 
 const mapStateToProps = (state) => {
@@ -75,6 +117,9 @@ const mapStateToProps = (state) => {
 
 const mapDispathToProps = (dispatch) => {
     return {
+        ddd(){
+            
+        }
     }
 }
 

+ 525 - 0
src/common/popups/index.js

@@ -0,0 +1,525 @@
+import React, { PureComponent } from 'react';
+import { connect } from 'react-redux';
+// import { BrowserRouter, Route,Link } from 'react-router-dom';
+
+// import { actionCreators } from './store';
+
+class popups extends PureComponent {
+
+
+  render() {
+    return (
+
+      <div className="modal fade" id="detail"  role="dialog" aria-hidden="true" data-backdrop="static">
+        <div className="modal-dialog modal-xl">
+          <div className="modal-content">
+            <div className="dialog-sheet">
+              <button type="button" className="close" data-dismiss="modal" aria-label="Close">
+                <span aria-hidden="true"><i className="fal fa-times"></i></span>
+              </button>
+              <div className="sheet-box row m-0">
+                <div className="sheet-left-panel">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                  <div className="save-tips">
+                    <div className="alert bg-warning-700 text-white p-2 m-1" role="alert">
+                      <div className="d-flex align-items-center">
+                        <div className="alert-icon">
+                          <i className="fal fa-info-circle"></i>
+                        </div>
+                        <div className="flex-1">
+                          <span className="h5">内容已经修改</span>
+                        </div>
+                        <a href="#" className="btn btn-sm text-white width-8">取消</a>
+                        <a href="#" className="btn btn-light btn-sm width-8">保存</a>
+                      </div>
+                    </div>
+                  </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="上一条记录" className="mr-2 disabled"><i className="far fa-chevron-up"></i></a>
+                      <a href="#" data-toggle="tooltip" data-placement="top" title="" data-original-title="下一条记录" className="mr-2"><i className="far fa-chevron-down"></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>
+                  </div>
+                  <div className="sheet-panel-content">
+                    <div className="sheet-panel-form slimScroll1 mx-4">
+                      <div className="form-header mt-3">
+                        <div className="d-flex justify-content-between"><span className="text-muted">联系人</span><span className="text-muted">陈特 创建于 2019年5月6日 14:55</span></div>
+                        <legend>张三</legend>
+                      </div>
+                      <div className="cldform clearfix">
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">姓名</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>张三</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">姓名</div>
+                          <div className="cldform-control">
+                            {/* <textarea className="cldform-contarl-textarea" style="height:36px;width:100%">张三</textarea> */}
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-wauto">
+                          <div className="cldform-label">联系人地区</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox" data-toggle="dropdown"><span className="cldform-contarl-dropdown">广东省 / 珠海市 / 香洲区<i className="far fa-map-marker-alt mt-1"></i></span></div>
+                            <div className="dropdown-menu" >
+                              <ul className="nav nav-tabs nav-tabs-clean justify-content-center" role="tablist">
+                                <li className="nav-item"><a className="nav-link text-center active" data-toggle="tab" href="#tab-province2" role="tab" aria-selected="true">省份</a></li>
+                                <li className="nav-item"><a className="nav-link" data-toggle="tab" href="#tab-city2" role="tab" aria-selected="false">市区</a></li>
+                                <li className="nav-item"><a className="nav-link" data-toggle="tab" href="#tab-area2" role="tab" aria-selected="false">县区</a></li>
+                              </ul>
+                              <div className="tab-content p-3">
+                                <div className="tab-pane city-item fade active show" id="tab-province2" role="tabpanel" aria-labelledby="tab-province">
+
+                                  <button type="button" className="btn btn-xs btn-outline-default">北京市</button><button type="button" className="btn btn-xs btn-outline-default">天津市</button><button type="button" className="btn btn-xs btn-outline-default">河北省</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">山西省</button><button type="button" className="btn btn-xs btn-outline-default">内蒙古自治区</button>
+
+                                  <button type="button" className="btn btn-xs btn-outline-default">黑龙江省</button><button type="button" className="btn btn-xs btn-outline-default">吉林省</button><button type="button" className="btn btn-xs btn-outline-default">辽宁省</button>
+
+                                  <button type="button" className="btn btn-xs btn-outline-default">山东省</button><button type="button" className="btn btn-xs btn-outline-default">江苏省</button><button type="button" className="btn btn-xs btn-outline-default">安徽省</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">上海市</button><button type="button" className="btn btn-xs btn-outline-default">浙江省</button><button type="button" className="btn btn-xs btn-outline-default">江西省</button><button type="button" className="btn btn-xs btn-outline-default">福建省</button>
+
+                                  <button type="button" className="btn btn-xs btn-outline-default">河南省</button><button type="button" className="btn btn-xs btn-outline-default">湖北省</button><button type="button" className="btn btn-xs btn-outline-default">湖南省</button>
+
+                                  <button type="button" className="btn btn-xs btn-primary">广东省</button><button type="button" className="btn btn-xs btn-outline-default">广西壮族自治区</button><button type="button" className="btn btn-xs btn-outline-default">海南省</button>
+                                  <button type="button" className="btn btn-xs btn-outline-default">四川省</button><button type="button" className="btn btn-xs btn-outline-default">贵州省</button><button type="button" className="btn btn-xs btn-outline-default">云南省</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">重庆市</button><button type="button" className="btn btn-xs btn-outline-default">西藏自治区</button>
+
+                                  <button type="button" className="btn btn-xs btn-outline-default">陕西省</button><button type="button" className="btn btn-xs btn-outline-default">甘肃省</button><button type="button" className="btn btn-xs btn-outline-default">宁夏回族自治区</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">青海省</button><button type="button" className="btn btn-xs btn-outline-default">新疆维吾尔自治区</button>
+
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">台湾省</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">香港特别行政区</button><button type="button" className="btn btn-xs btn-outline-default">澳门特别行政区</button>
+                                </div>
+                                <div className="tab-pane city-item fade" id="tab-city2" role="tabpanel" aria-labelledby="tab-city"><button type="button" className="btn btn-xs btn-outline-default">广州市</button><button type="button" className="btn btn-xs btn-outline-default">深圳市</button><button type="button" className="btn btn-xs btn-primary">珠海市</button><button type="button"
+                                  className="btn btn-xs btn-outline-default">汕头市</button><button type="button" className="btn btn-xs btn-outline-default">佛山市</button><button type="button" className="btn btn-xs btn-outline-default">韶关市</button><button type="button" className="btn btn-xs btn-outline-default">湛江市</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">肇庆市</button><button type="button" className="btn btn-xs btn-outline-default">江门市</button><button type="button" className="btn btn-xs btn-outline-default">茂名市</button><button type="button" className="btn btn-xs btn-outline-default">惠州市</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">梅州市</button><button type="button" className="btn btn-xs btn-outline-default">汕尾市</button><button type="button" className="btn btn-xs btn-outline-default">河源市</button><button type="button" className="btn btn-xs btn-outline-default">阳江市</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">清远市</button><button type="button" className="btn btn-xs btn-outline-default">东莞市</button><button type="button" className="btn btn-xs btn-outline-default">中山市</button><button type="button" className="btn btn-xs btn-outline-default">潮州市</button>
+                                  <button
+                                    type="button" className="btn btn-xs btn-outline-default">揭阳市</button><button type="button" className="btn btn-xs btn-outline-default">云浮市</button></div>
+                                <div className="tab-pane city-item fade" id="tab-area2" role="tabpanel" aria-labelledby="tab-area"><button type="button" className="btn btn-xs btn-primary">香洲区</button><button type="button" className="btn btn-xs btn-outline-default">金湾区</button><button type="button" className="btn btn-xs btn-outline-default">斗门区</button></div>
+                              </div>
+                            </div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">客户名称</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><div className="card p-2 text-primary"><div className="d-flex justify-content-between"><a href="#com-detail" data-toggle="modal" data-target="#com-detail">珠海纵横创新软件有限公司1</a><span>
+                              <a href="#" className="btn btn-outline-danger btn-xs btn-icon mr-1" data-toggle="modal" data-target="#remover-com"><i className="far fa-unlink" data-toggle="tooltip" data-placement="left" data-original-title="移除客户"></i></a>
+                              <a href="#" className="btn btn-outline-primary btn-xs btn-icon" data-toggle="modal" data-target="#link-com"><i className="far fa-retweet" data-toggle="tooltip" data-placement="left" data-original-title="更换客户"></i></a></span></div></div></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">客户名称</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span><a href="#link-com" data-toggle="modal" data-target="#link-com"><i className="far fa-link"></i> 关联客户</a></span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-half pr-3">
+                          <div className="cldform-label">性别</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox" data-toggle="dropdown"><span className="cldform-contarl-dropdown">男<i className="far fa-angle-down mt-1"></i></span></div>
+                            <div className="dropdown-menu" >
+                              <button className="dropdown-item">男</button>
+                              <button className="dropdown-item">女</button>
+                            </div>
+                          </div>
+                        </div>
+                        <div className="cldform-item cldform-item-half pl-3">
+                          <div className="cldform-label">昵称</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>陈(特)工:</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-half pr-3">
+                          <div className="cldform-label">手机</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>15800000001</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-item cldform-item-half pl-3">
+                          <div className="cldform-label">QQ</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>1234567</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-half pr-3">
+                          <div className="cldform-label">电话</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>0756-3850891</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-item cldform-item-half pl-3">
+                          <div className="cldform-label">邮箱</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>914630468@qq.com</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-half pr-3">
+                          <div className="cldform-label">传真</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>0756-3850891</span></div>
+                          </div>
+                        </div>
+
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item cldform-item-half pr-3">
+                          <div className="cldform-label">部门</div>
+                          <div className="cldform-control">
+                            {/* <textarea class="cldform-contarl-textarea " data-toggle="dropdown" style="height:36px;width:100%" placeholder="输入新部门"></textarea> */}
+                            {/* <div class="dropdown-menu" style="width:320px">
+                              <div class="row m-3">
+                                <div class="custom-control custom-radio custom-control-inline col-4 mr-0 mb-1">
+                                  <input type="radio" class="custom-control-input" id="department1" name="departmentradio" />
+                                  <label class="custom-control-label" for="department1">部门1</label>
+                                </div>
+                                <div class="custom-control custom-radio custom-control-inline col-4 mr-0 mb-1">
+                                  <input type="radio" class="custom-control-input" id="department2" name="departmentradio" />
+                                  <label class="custom-control-label" for="department2">部门2</label>
+                                </div>
+                                <div class="custom-control custom-radio custom-control-inline col-4 mr-0 mb-1">
+                                  <input type="radio" class="custom-control-input" id="department3" name="departmentradio" />
+                                  <label class="custom-control-label" for="department3">部门3</label>
+                                </div>
+                              </div>
+                            </div> */}
+                          </div>
+                        </div>
+                        <div className="cldform-item cldform-item-half pl-3">
+                          <div className="cldform-label">职务</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>科长</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">办公室</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>2楼</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">联系人地址</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox"><span>银桦路8号深发展大厦24D</span></div>
+                          </div>
+                        </div>
+
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">联系人乘车</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox text-muted"><span>填写文本内容</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">联系人地标</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox text-muted"><span>填写文本内容</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">联系人住宿</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox text-muted"><span>填写文本内容</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">备注</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox text-muted"><span>填写文本内容</span></div>
+                          </div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">个人标签</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank"><span className="badge badge-pill tagcol-01">标签</span><span className="badge badge-pill tagcol-02">特别关注</span><a title="添加标签" className="badge badge-secondary tagcol-08" href="" data-toggle="dropdown"><i className="far fa-plus"></i></a><div className="dropdown-menu"></div></div></div>
+                        </div>
+                        <div className="cldform-line"></div>
+                        <div className="cldform-item">
+                          <div className="cldform-label">协作标签</div>
+                          <div className="cldform-control">
+                            <div className="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank"><span className="badge tagcol-11">协作标签1</span><span className="badge tagcol-12">协作标签2</span><a title="添加标签" className="badge badge-secondary tagcol-08" href="" data-toggle="dropdown"><i className="far fa-plus"></i></a><div className="dropdown-menu">
+
+                            </div>
+                            </div></div>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                  
+                </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">
+                      <li class="nav-item"><a class="nav-link active" data-toggle="tab" href="#tab-yun" role="tab" aria-selected="true">养护云造价</a></li>
+                      <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-yun2" role="tab" aria-selected="true">大司空云计价</a></li>
+                      <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-lock" role="tab" aria-selected="false">软件锁</a></li>
+                      <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-sso" role="tab" aria-selected="false">通行账号</a></li>
+                      <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-server" role="tab" aria-selected="false">服务记录</a></li>
+                    </ul>
+                    <div class="tab-content">
+                      <div class="tab-pane fade active show sheet-panel-righttop" id="tab-yun" role="tabpanel" aria-labelledby="tab-yun">
+                        <div class="slimScrol3">
+                          <table class="table">
+                            <thead>
+                              <tr>
+                                <th class="border-0"></th>
+                                <th class="border-0">产品</th>
+                                <th class="border-0">专业版</th>
+                              </tr>
+                            </thead>
+                            <tr>
+                              <td>1</td>
+                              <td>重庆养护(2018)</td>
+                              <td>已升级(<a href="#">@刘飞</a> 6月5日 13:32)<a href="#degrade-confirm" class="btn btn-xs btn-outline-danger waves-effect waves-themed" data-toggle="modal" data-target="#degrade-confirm">降级</a></td>
+                            </tr>
+                            <tr>
+                              <td>2</td>
+                              <td>广东养护(2018)</td>
+                              <td><a href="#update-confirm" class="btn btn-xs btn-outline-primary waves-effect waves-themed" data-toggle="modal" data-target="#update-confirm">升级</a></td>
+                            </tr>
+                          </table>
+                        </div>
+                      </div>
+                      <div class="tab-pane fade sheet-panel-righttop" id="tab-yun2" role="tabpanel" aria-labelledby="tab-yun">
+                        <div class="slimScrol3">
+                          <table class="table">
+                            <thead>
+                              <tr>
+                                <th class="border-0"></th>
+                                <th class="border-0">产品</th>
+                                <th class="border-0">专业版</th>
+                              </tr>
+                            </thead>
+                            <tr>
+                              <td>1</td>
+                              <td>重庆</td>
+                              <td><a href="#update-confirm" class="btn btn-xs btn-outline-primary waves-effect waves-themed" data-toggle="modal" data-target="#update-confirm">升级</a></td>
+                            </tr>
+                            <tr>
+                              <td>2</td>
+                              <td>江西</td>
+                              <td><a href="#update-confirm" class="btn btn-xs btn-outline-primary waves-effect waves-themed" data-toggle="modal" data-target="#update-confirm">升级</a></td>
+                            </tr>
+                            <tr>
+                              <td>3</td>
+                              <td>内蒙</td>
+                              <td><a href="#update-confirm" class="btn btn-xs btn-outline-primary waves-effect waves-themed" data-toggle="modal" data-target="#update-confirm">升级</a></td>
+                            </tr>
+                          </table>
+                        </div>
+                      </div>
+                      <div class="tab-pane fade sheet-panel-righttop" id="tab-lock" role="tabpanel" aria-labelledby="tab-lock">
+                        <div class="slimScrol3">
+                          <table class="table">
+                            <thead>
+                              <tr>
+                                <th class="border-0"></th>
+                                <th class="border-0">锁号</th>
+                                <th class="border-0">产品</th>
+                                <th class="border-0">状态</th>
+                                <th class="border-0">责任人</th>
+                              </tr>
+                            </thead>
+                            <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>
+                          </table>
+                        </div>
+                      </div>
+                      <div class="tab-pane fade sheet-panel-righttop" id="tab-sso" role="tabpanel" aria-labelledby="tab-yun">
+                        <div class="slimScrol3">
+                          <table class="table">
+                            <thead>
+                              <tr>
+                                <th class="border-0"></th>
+                                <th class="border-0">手机</th>
+                                <th class="border-0">邮箱</th>
+                                <th class="border-0">QQ</th>
+                                <th class="border-0">称呼</th>
+                              </tr>
+                            </thead>
+                            <tr>
+                              <td>1</td>
+                              <td><a href="">15812345678</a></td>
+                              <td></td>
+                              <td>123456</td>
+                              <td>张三</td>
+                            </tr>
+                            <tr>
+                              <td>1</td>
+                              <td><a href="">13900623512</a></td>
+                              <td>123456@qq.com</td>
+                              <td>123456</td>
+                              <td>张三</td>
+                            </tr>
+                          </table>
+                        </div>
+                      </div>
+                      <div class="tab-pane fade sheet-panel-righttop" id="tab-server" role="tabpanel" aria-labelledby="tab-server">
+                        <div class="slimScrol3">
+                          <table class="table">
+                            <thead>
+                              <tr>
+                                <th class="border-0"></th>
+                                <th class="border-0">类型/时间</th>
+                                <th class="border-0">服务内容</th></tr>
+                            </thead>
+                            <tr>
+                              <td width="20">1</td>
+                              <td width="140"><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                            <tr>
+                              <td>2</td>
+                              <td><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                            <tr>
+                              <td>3</td>
+                              <td><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                            <tr>
+                              <td>4</td>
+                              <td><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                            <tr>
+                              <td>5</td>
+                              <td><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                            <tr>
+                              <td>6</td>
+                              <td><a href="#">@陈特</a> 上门服务
+                            <br /><span class="text-muted">5月5日 14:55</span></td>
+                              <td>1-给彭工更新了软件程序,安装演示了软。2-单位彭工要考甲乙级考试,给他带了资料过去。3-表示论文发表评职称也可以随时联系我。</td>
+                            </tr>
+                          </table>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="sheet-btns mt-3"><a href="#add-server" class="btn btn-xs btn-outline-primary" data-toggle="modal" data-target="#add-server"><i class="far fa-plus"></i> 添加服务记录</a><a href="#add-lock" class="btn btn-xs btn-outline-primary" data-toggle="modal" data-target="#add-lock"><i class="far fa-link"></i> 绑定加密锁</a></div>
+                  </div>
+                  <div class="sheet-panel-record">
+                    <ul class="nav nav-tabs nav-tabs-clean sheet-nav-tabs" role="tablist">
+                      <li class="nav-item ml-4"><a class="nav-link text-center active" data-toggle="tab" href="#tab-log" role="tab" aria-selected="true">日志</a></li>
+                    </ul>
+                    <div class="tab-content p-3">
+                      <div class="tab-pane fade active show sheet-panel-log" id="tab-log" role="tabpanel" aria-labelledby="tab-log">
+                        <div class="slimScrol4">
+                          <p><a href="#">@陈特</a> 移除 通行账号 15812345678<br /><span class="text-muted">5月5日 14:55</span></p>
+
+                          <p><a href="#">@陈特</a> 关联 通行账号 15812345678<br /><span class="text-muted">5月5日 14:55</span></p>
+
+                          <p><a href="#">@陈特</a> 将手机 15800000000 改为 15812345678;将客户 珠海纵横创新软件有限公司 改为 北京旺圣干科技有限公司<br /><span class="text-muted">5月5日 14:55</span></p>
+
+                          <p><a href="#">@陈特</a> 将客户 改为 珠海纵横创新软件有限公司<br /><span class="text-muted">5月5日 14:55</span></p>
+
+                          <p><a href="#">@陈特</a> 创建<br /><span class="text-muted">5月5日 14:55</span></p>
+
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div> */}
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+    );
+  }
+
+}
+
+const mapStateToProps = (state) => {
+  return {
+    popupsClientId: state.getIn(['popups', 'popupsClientId']),
+  }
+}
+
+const mapDispathToProps = (dispatch) => {
+  return {}
+}
+
+export default connect(mapStateToProps, mapDispathToProps)(popups);
+
+// export default popups;

src/common/clientPopups/store/actionCreators.js → src/common/popups/store/actionCreators.js


src/common/clientPopups/store/constants.js → src/common/popups/store/constants.js


src/common/clientPopups/store/index.js → src/common/popups/store/index.js


+ 32 - 0
src/common/popups/store/reducer.js

@@ -0,0 +1,32 @@
+import * as constants from './constants';
+import { fromJS } from 'immutable';
+
+
+const defaultState = fromJS({
+    popupsClientId: '',
+});
+
+
+export default (state = defaultState, action) => {
+
+     switch(action.type) {
+	// 	case constants.SEARCH_FOCUS:
+	// 		return state.set('focused', true);
+	// 	case constants.SEARCH_BLUR:
+	// 		return state.set('focused', false);
+	// 	case constants.CHANGE_LIST:
+	// 		return state.merge({
+	// 			list: action.data,
+	// 			totalPage: action.totalPage
+	// 		});
+	// 	case constants.MOUSE_ENTER:
+	// 		return state.set('mouseIn', true);
+	// 	case constants.MOUSE_LEAVE:
+	// 		return state.set('mouseIn', false);
+	// 	case constants.CHANGE_PAGE:
+	// 		return state.set('page', action.page);
+		default:
+			return state;
+	}
+    
+}

+ 34 - 118
src/contact/client/index.js

@@ -8,11 +8,9 @@ import StaffHeader from '../../common/staffHeader';
 import DataTable from '../../common/dataTable';
 
 
-import '../style.css';
+// import '../style.css';
 // import { get } from 'immutable';
-// import ClientPopups from '../../common/clientPopups'
-
-
+import ClientPopups from '../../common/popups'
 
 // const client =(props)=>{
 //     const { searchValue,columns,clientThead,handleInputSearchValue } = props;
@@ -25,26 +23,6 @@ let dt = null;
 
 class client extends PureComponent {
 
-
-  getClientListArea() {
-    const { clientList } = this.props;
-    console.log(clientList.toJS());
-    if (clientList.length) {
-      return (
-        <Fragment>
-          {
-            list.map((item) => {
-              return <span className='ispan' type="text" key={item} >{item}</span>
-            })
-          }
-        </Fragment>
-      )
-    } else {
-      return null;
-    }
-  }
-
-
   getListArea() {
     const { list, menu } = this.props;
     // const newList = list.toJS();
@@ -74,70 +52,8 @@ class client extends PureComponent {
     }
   }
 
-  // constructClientColumns() {
-  //   let columns = [
-  //     { data: "clientname" },
-  //     { data: "companyname" },
-  //     { data: "telephone" },
-  //     { data: "phone" },
-  //     { data: "qq" },
-  //     { data: "department" },
-  //     { data: "position" },
-  //     { data: "office" },
-  //     { data: "local" },
-
-  //     { data: "local" },
-  //     { data: "local" },
-
-  //     { data: "address" },
-  //     { data: "ride" },
-  //     { data: "landmarks" },
-  //     { data: "stay" },
-  //     { data: "mark" },
-
-  //     { data: "mark" },
-  //     { data: "mark" },
-  //     { data: "mark" },
-  //     { data: "mark" },
-  //   ];
-  //   return columns;
-  // }
-
-  // constructClientThead() {
-  //   return (<thead>
-  //     <tr>
-  //       <th>联系人</th>
-  //       <th>客户名称</th>
-  //       <th>手机</th>
-  //       <th>电话</th>
-  //       <th>QQ</th>
-  //       <th>部门</th>
-  //       <th>职务</th>
-  //       <th>办公室</th>
-  //       <th>地区</th>
-  //       <th>个人标签</th>
-  //       <th>协作标签</th>
-  //       <th>地址</th>
-  //       <th>乘车</th>
-  //       <th>地标</th>
-  //       <th>住宿</th>
-  //       <th>备注</th>
-  //       <th>软件锁</th>
-  //       <th>大司空</th>
-  //       <th>养护云</th>
-  //       <th>创建人</th>
-  //     </tr>
-  //   </thead>);
-  // }
-
-  // handleSearch(inputValue){
-  //   //this.add.handleSearch();
-  //   console.log(this.searchValue);
-  // }
-
-
   render() {
-    const { clientList,columns,  columnsData, handleSearch, handleColumnsShow } = this.props;
+    const { handleInputChange, columns, columnsData, handleSearch, handleColumnsShow, handleColumnBindEvent } = this.props;
 
     return (
       <Fragment>
@@ -150,7 +66,6 @@ class client extends PureComponent {
 
 
 
-
                   <div className="col-auto pr-0">
                     <button className="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown">省/市/区</button>
                     <div className="dropdown-menu width300" >
@@ -204,8 +119,9 @@ value={searchValue} onChange={handleInputSearchValue}
                             return (
                               <li key={index} className="mb-2">
                                 <div className="custom-control custom-switch">
-                                  <input type="checkbox" name={index} onChange={() => handleInputChange()} value={item.get('columnsValue')} checked={item.get('columnsValue')}  className="custom-control-input" id={"lie" + index} />
-                                  <label onClick={() => handleColumnsShow(index)} className="custom-control-label" >{item.get('columnsName')}</label>
+                                  <input type="checkbox" name={index} onChange={(e) => handleInputChange(e, index)} value={item.get('columnsValue')} checked={item.get('columnsValue')} className="custom-control-input" id={"lie" + index} />
+                                  <label onClick={() => handleColumnsShow(index)} htmlFor={"lie" + index} className="custom-control-label" >{item.get('columnsName')}</label>
+                                  {/* onClick={() => handleColumnsShow(index)} */}
                                 </div>
                               </li>
                             )
@@ -264,7 +180,7 @@ value={searchValue} onChange={handleInputSearchValue}
                 <div className="panel-container show ">
                   <div className="panel-content " >
                     {/* this.constructClientColumns()  this.constructClientThead()   */}
-                    <DataTable onRef={(ref) => dt = ref} url={`/contact/client`} columnsData={columnsData} columns={columns.toJS()} />
+                    <DataTable onRef={(ref) => dt = ref} url={`/contact/client`} columnBindEvent={handleColumnBindEvent} columnsData={columnsData} columns={columns.toJS()} />
 
                     {/* <table id="dt-basic-example"  className="table table-bordered table-hover table-striped w-100">
                       <thead>
@@ -344,18 +260,15 @@ value={searchValue} onChange={handleInputSearchValue}
 
         </main>
 
-
-
-        {/* <ClientPopups /> */}
-
+        <ClientPopups />
       </Fragment>
     );
   }
 
   //组件即将要被挂在的时候执行的方法
   componentDidMount() {
-   
-    // const { clientList } = this.props;
+    //const { columnsData } = this.props;
+    this.props.handleColumnsAllShow();
     // this.props.handleClientData(clientList);
   }
 
@@ -375,9 +288,10 @@ let delaySwitch = null;//延迟检索开关
  */
 const mapStateToProps = (state) => {
   return {
-    clientList:state.getIn(['contact', 'clientList']),
-    columns: state.getIn(['contact', 'columns']),
-    columnsData: state.getIn(['contact', 'columnsData']),
+    clientList: state.getIn(['client', 'clientList']),
+    columns: state.getIn(['client', 'columns']),
+    columnsData: state.getIn(['client', 'columnsData']),
+    popupsClientId: state.getIn(['popups', 'popupsClientId']),
   }
 }
 
@@ -394,7 +308,6 @@ const mapDispathToProps = (dispatch) => {
     //检索联系人
     handleSearch(serchValue) {
       //e.target --可以获得dom
-
       if (delaySwitch != null) {
         clearTimeout(delaySwitch);
       }
@@ -405,7 +318,10 @@ const mapDispathToProps = (dispatch) => {
         dt.handleSearch(filter);
       }, 350);
     },
-    handleInputChange(e){
+    //----组件更新后,调用更新后的方法---利用引用的方式操作子组件方法
+    handleInputChange(e, index) {
+      //dispatch(actionCreators.toggleColumns(index));
+      dt.handleColumnVisible(index, e.target.value);
       // const target = event.target;
       // const value =  target.checked;
       // console.log(value);
@@ -413,23 +329,23 @@ const mapDispathToProps = (dispatch) => {
     handleColumnsShow(index) {
       dispatch(actionCreators.toggleColumns(index));
     },
-    // handleInputFocus(list) {
-
-    //   // const action = {
-    //   //     type: 'aearch_focus'
-    //   // };
-    //   //发送给store--提取出action--避免发送重复的ajax请求
-    //   (list.size === 0) && dispatch(actionCreators.getList());
-    //   // if(list.size>0){
-    //   //     dispatch(actionCreators.getList());
-    //   // }
-    //   dispatch(actionCreators.searchFocus());
-    // },
-    // handleInputChange(ivalueElem) {
-
-    //   dispatch(actionCreators.changeInputValue(ivalueElem.value));
-    // },
+    handleColumnsAllShow() {
+      dispatch(actionCreators.toggleColumnsAll(dt));
+    },
+    //构建列的点击事件
+    handleColumnBindEvent(res) {
+      console.log(this);
+      for (var i = 0 ; i < res.data.length; i++) {
+        res.data[i].clientname = `<a onClick="abc()" href="#detail" data-toggle="modal" data-target="#detail">${res.data[i].clientname}</a>`;
+      }
+      return res;
+    },
+    
+    //要操作子组件-更新父组件的值,把父组件的方法传递过去
+
+    //-----
   }
 }
 
+
 export default connect(mapStateToProps, mapDispathToProps)(client);

+ 9 - 0
src/contact/client/store/actionCreators.js

@@ -13,6 +13,15 @@ export const toggleColumns = (index) => {
         });
     }
 };
+export const toggleColumnsAll = (dt) => {
+    return (dispatch) => {
+        dispatch({
+            type: constants.TOGGLE_COLUMNS_ALL,
+            dt:dt
+        });
+    }
+};
+
 
 
 

+ 1 - 0
src/contact/client/store/constants.js

@@ -1,3 +1,4 @@
 export const TOGGLE_COLUMNS = 'client/toggle_columns';
+export const TOGGLE_COLUMNS_ALL = 'client/toggle_columns_all';
 
 export const CHANGE_CLIENT_DATA = 'client/change_client_data';

+ 11 - 1
src/contact/client/store/reducer.js

@@ -54,13 +54,23 @@ const defaultState = fromJS({
 });
 
 export default (state = defaultState, action) => {
+	let columnsData=state.get('columnsData').toJS();
+
 	switch (action.type) {
 		case constants.TOGGLE_COLUMNS:
-			let columnsData=state.get('columnsData').toJS();
 			columnsData[action.data].columnsValue=!columnsData[action.data].columnsValue;
 			//存储
 			localStorage.setItem('contact_client_Column_'+action.data, columnsData[action.data].columnsValue);
 			return state.set('columnsData', fromJS(columnsData));
+		case constants.TOGGLE_COLUMNS_ALL:
+			for(var i=1;i<=columnsData.length;i++){
+				var isAccept=localStorage.getItem("contact_client_Column_"+i);
+				if(isAccept==='false'){
+					columnsData[i].columnsValue=false;
+					action.dt.handleColumnVisible(i,false);
+				}
+			}
+			return state.set('columnsData', fromJS(columnsData));
 		case constants.CHANGE_CLIENT_DATA:
 			return state.set('clientList', action.data);
 		default:

+ 1 - 1
src/contact/common/store/actionCreators.js

@@ -1,7 +1,7 @@
 import * as constants from './constants';
 import { fromJS } from 'immutable';
 
-import axios from '../../../common/axios_auth.js';
+// import axios from '../../../common/axios_auth.js';
 // import axios from 'axios';
 
 //actionType

+ 4 - 3
src/contact/contact.js

@@ -53,8 +53,8 @@ class contact extends Component {
           <div className="page-content-wrapper">
                
                 <Route path='/contact' exact component={Client} ></Route>
-                <Route path='/contac/company' exact render={()=><div>使用统计</div>} ></Route>
-               
+                <Route path='/contact/company' exact render={()=><div>使用统计--------------------------------=================================-------------------</div>} ></Route>
+                {/* render={()=>{<div>使用统计--------------------------------=================================-------------------</div>}} */}
           </div>
             </BrowserRouter>
         
@@ -67,7 +67,7 @@ class contact extends Component {
 const mapStateToProps = (state) => {
 
   return {
-    menuActive: state.getIn(['common', 'menuActive']),
+    menuActive: state.getIn(['commonContact', 'menuActive']),
   }
 }
 
@@ -75,6 +75,7 @@ const mapStateToProps = (state) => {
 const mapDispathToProps = (dispatch) => {
   return {
     handleMenuActive(value) {
+     
       dispatch(actionCreators.menuActive(value));
     },
   }

+ 5 - 5
src/contact/store/reducer.js

@@ -1,14 +1,14 @@
 import { combineReducers } from 'redux-immutable';
 import { reducer as clientReducer } from '../client/store';
-import { reducer as commonReducer } from '../common/store';
-
+import { reducer as commonContactReducer } from '../common/store';
+import { reducer as popupsReducer } from '../../common/popups/store';
 
 
 
 const reducer = combineReducers({
-    common: commonReducer,
-    contact: clientReducer,
-
+    commonContact: commonContactReducer,
+    client: clientReducer,
+    popups:popupsReducer,
 });
 
 export default reducer;

+ 3 - 3
src/workbench/Workbench.js

@@ -30,16 +30,16 @@ class WorkBench extends Component {
                 <li className="active open">
                   <a href="#" title="软件锁" data-filter-tags="软件锁" className="waves-effect waves-themed">
                     <i className="fal fa-magic "></i>
-                    <span className="nav-link-text">软件锁</span>
+                    <span className="nav-link-text">工作台</span>
                   </a>
                   <ul>
                     <li className="active">
                     
-                      <Link to='/product'>公共锁库</Link>
+                      {/* <Link to='/product'>公共锁库</Link> */}
                     </li>
                     <li>
                    
-                      <Link to='/product/lockStatistics'>使用统计</Link>
+                      {/* <Link to='/product/lockStatistics'>使用统计</Link> */}
                     </li>
                   </ul>