utils.js 7.73 KB
import React from 'react';
import { Select,Tooltip } from 'antd'
import axios from '@src/axios/index';
import { API_DICT_MANAGE } from '@src/Api'

import moment from 'moment';
const Option = Select.Option;
export default {
  formateDate(time) {
    if (!time) return '';
    let date = new Date(time);
    return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
  },
  formateDateToYMDSFM(time) {
    if (!time) return '';
    let date = new Date(time * 1000);
    return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
  },
  formateDateToYMD(time) {
    if (!time) return '';
    let date = new Date(time * 1000);
    return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' '
  },
  formateDateToSFM(time) {
    if (!time) return '';
    let date = new Date(time * 1000);
    return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
  },
  formateDateToDetail(time,type) {
    if (!time) return '';
    let date;
    switch (type) {
      case 'seconds':
        date = new Date(time * 1000);
        break;
      case 'standard':
        date = new Date(time);
        break;
    }
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let hour = date.getHours()  >= 10 ? date.getHours() : '0' + date.getHours();
    let minutes = date.getMinutes()  >= 10 ?  date.getMinutes() : '0' + date.getMinutes();
    let seconds = date.getSeconds() >= 10 ? date.getSeconds() : '0' + date.getSeconds();
    return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds;
  },
  //日期获取时间戳
  formatTimeStamp(date) {
    return parseInt(moment(date).valueOf() / 1000)
  },
  //时间戳转日期
  formatMomentDate(stamp) {
    if (typeof (stamp) === "string") {
      stamp = Number(stamp)
    }
    return moment(stamp).format('YYYY-MM-DD')
  },
  formatTableColumn(field){
    if(!field) return ''
    if (field.length > 80) {
      return <Tooltip  placement="topLeft" title={field}>
        <span className="tdWidthStyle">{field}</span>
      </Tooltip>
    } else if (7<field.length <80 ) {
      return <Tooltip  placement="bottomLeft" title={field}>
        <span className="tdWidthStyle">{field}</span>
      </Tooltip>
    }else {
      return field
    }
  },

  //过滤空格
  filterSpace (e, field,that) {
    let userInfo = that.props.form.getFieldsValue();
    if (e.keyCode === 32 && userInfo[field]) {
      that.props.form.setFieldsValue({ [field]: userInfo[field].replace(/^\s+|\s+$/g, '') })
    }
  },

  // 去掉左右两边的空格
  trim (value){
    if (value === null) {
      return;
    }
    if (typeof (value) === 'object') {
      var newObje = {};
      for( let items in value) {
        if (typeof (value[items]) === 'string'){
          newObje[items] = value[items].replace(/(^\s*)|(\s*$)/g, '');
        } else {
          newObje[items] = value[items];
        }
      }
      return newObje;
    }
    if (typeof (value) === 'string') {
      return value.replace(/(^\s*)|(\s*$)/g, '')
    } else {
      return ;
    }
  },


  // 将数据转成table tree 结构
  formatTreeData(data, name = 'childOrgs') {
    if(!data){
      return
    }
    data.map(item => {    
      if (item[name]) {      
          if (item[name].length > 0) {
            item[name] = this.formatTreeData(item[name], name);      
          } else {        
            delete item[name];      
          }    
       }    
    })  
    return data;  

    // let ss = JSON.stringify(data).replace(/,"childOrgs":\[\]/g, '').replace(/"childOrgs":\[\],/g,'')
    // return JSON.parse(ss);
  },


  pagination(data, callback) {
    return {
      onChange: (current,e) => {
        console.log('jump:' + current);
        console.log('jump:' + e);
        callback(current)
      },
      pageNum:3,
      current: data.current,
      pageSize: data.size,
      total: data.total,
      showTotal: () => {
        return `当前共${data.total}条`
      },
      showQuickJumper: true
    }
  },
  // 格式化金额,单位:分(eg:430分=4.30元)
  formatFee(fee, suffix = '') {
    if (!fee) {
      return 0;
    }
    return Number(fee).toFixed(2) + suffix;
  },
  // 格式化公里(eg:3000 = 3公里)
  formatMileage(mileage, text) {
    if (!mileage) {
      return 0;
    }
    if (mileage >= 1000) {
      text = text || " km";
      return Math.floor(mileage / 100) / 10 + text;
    } else {
      text = text || " m";
      return mileage + text;
    }
  },
  // 隐藏手机号中间4位
  formatPhone(phone) {
    phone += '';
    return phone.replace(/(\d{3})\d*(\d{4})/g, '$1***$2')
  },
  // 隐藏身份证号中11位
  formatIdentity(number) {
    number += '';
    return number.replace(/(\d{3})\d*(\d{4})/g, '$1***********$2')
  },
  getOptionList(data, value, label) {
    var value = value || 'id';
    var label = label || 'name';

    if (!data) {
      return [];
    }
    let options = [
      <Option value={0} key="all_key">其它</Option>
    ] //[<Option value="0" key="all_key">全部</Option>];
    data.map((item) => {
      options.push(<Option value={item[value]} key={item[value]}>{item[label]}</Option>)
    })
    return options;
  },

  getOptionHtml(data, value, label) {
    var value = value || 'id';
    var label = label || 'name';

    if (!data) {
      return [];
    }
    let options = []
    data.map((item) => {
      options.push(<Option value={item[value]} key={item[value]}>{item[label]}</Option>)
    })
    return options;
  },

  /**
   * ETable 行点击通用函数
   * @param {*选中行的索引} selectedRowKeys
   * @param {*选中行对象} selectedItem
   */
  updateSelectedItem(selectedRowKeys, selectedRows, selectedIds) {
    if (selectedIds) {
      this.setState({
        selectedRowKeys,
        selectedIds: selectedIds,
        selectedItem: selectedRows
      })
    } else {
      this.setState({
        selectedRowKeys,
        selectedItem: selectedRows
      })
    }
  },


 /**
   * getDictOpt 获取字典里面的下拉 因为后台的code 字段极可能会改,所以在前端我做了一个对应的对象来做控制
   * @param {*传过来的数组} list
   */
  getDictOpt( list ) {
    // 前端需要定义一套code值,以为后台这个值会变动
    const data = {
      nation: 'nation',  // 国籍
      marriage: 'marriage',  // 婚姻状态
      cert: 'cert',  //证件类型
      occupation: 'occupation',
      userGrade: 'userGrade',
      creditGrade: 'creditGrade',
      insurance: 'insurance',
      smoke: 'smoke',
      msgTempType: 'msgTempType'
    }
    let codes = []
    list.map((item) =>{
      codes.push(data[item])
    })
    return new Promise((resolve, reject) =>{
      axios.ajax({
        url: API_DICT_MANAGE.getDictsByCode,
        data: {codes}
      }).then(res => {
        if (res && res.length > 0) {
           resolve(res)
        }
      })
    })

  },

  // 表单正则表达式以及提示
  getFormRules (name) {
    const list = {
      'numLetters': {regular:/^([a-zA-Z0-9])*$/},
      'version': {regular: /^\w*(\.[0-9]+)*$/},
      'chartLetters': {regular: /^\s*[\u4E00-\u9FA5-a-zA-Z]{0,100}(?:·[\u4E00-\u9FA5-a-zA-Z]{0,100})*\s*$/},
      'IDCode':{regular:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/},
      'phone': {regular: /^(\s*||\s*(\d{5})||\s*(\d{3,4})?(-)?\d{5,8}\s*)$/},
      'mobile': {regular: /^(0|86|17951)?(13[0-9]|15[012356789]|17[0-9]|18[0-9]|14[57])[0-9]{8}$/},
      'email': {regular : /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/},
      'number': {regular: /^[0-9]*$/},
      'letters': {regular:  /^([a-zA-Z])+$/}

    }
    return list[name]
  }

}