知识点

129 阅读4分钟

子系统英文简称:SBOFALCON-CORE

子系统英文名:Forward Aggregated Legal Compliance Online

子系统中文名:领航智能全面合规管理平台

合规项目背景:通过对接整合内部业务数据与外部监管数据,构建一站式的全面合规管理平台。该平台将建立整体合规管理视图和合规管理驾驶舱,实时、直观展示公司合规整体状况;建立合规数据集市,将各类合规检查底稿、现场督导、报表、报告线上化撰写,借助大数据、人工智能辅助合规管理,最终实现合规预警及时化、合规评审标准化、合规检查程序化、合规学习全员化,从机制上保证合规经营、诚信展业、专业执业,增强全体员工合规意识,提升公司合规管理水平。

1、通过css设置文字不能被选中

.select{
   -webkit-user-select:none;
   -moz-user-select:none;
   -ms-user-select:none;
   user-select:none;
}

2、window.open() 传参

3、vue.js 键盘enter事件的使用 (2020-07-28)

<input v-on:keyup.13="submit">
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">
若是使用了element-ui,则要加上native限制符,因为element-ui把input进行了封装,原事件就不起作用了
<input @keyup.enter.native="submit">

4、UTC 时间转化为北京时间 (2020-07-28)

2020-06-27T14:20:27.000000Z 时间格式转换成 2020-06-27 14:20:27
function rTime(date) {
    var json_date = new Date(date).toJSON();
    return new Date(new Date(json_date) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') 
}
let date = rTime('2020-06-27T14:20:27.000000Z');
toJSON() 方法可以将 Date 对象转换为字符串,并格式化为 JSON 数据格式

5、js 处理树形结构数据

handleTree(data) {
  // 删除 所有 children,以防止多次调用
  data.forEach(function(item) {
    delete item.children
  })
  // 将数据存储为 以 id 为 KEY 的 map 索引数据列
  var map = {}
  data.forEach(function(item) {
    map[item.id] = item
  })
  //        console.log(map);
  var val = []
  data.forEach(function(item) {
    // 以当前遍历项,的parent_id,去map对象中找到索引的id
    var parent = map[item.parent_id]
    // 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
    if (parent) {
      ;(parent.children || (parent.children = [])).push(item)
    } else {
      //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
      val.push(item)
    }
  })
  return val
}

6、用trim()方法,要先判空

7、用绝对定位要加上具体定位,不加低版本浏览器会有问题

8、input输入框只能输入正整数(同时禁止了以0开始的数字输入)

9、格式化时间

formatDate(value: any) {
  let date = new Date(value)
  let y = date.getFullYear()
  let MM: any = date.getMonth() + 1
  MM = MM < 10 ? '0' + MM : MM
  let d: any = date.getDate()
  d = d < 10 ? '0' + d : d
  let h: any = date.getHours()
  h = h < 10 ? '0' + h : h
  let m: any = date.getMinutes()
  m = m < 10 ? '0' + m : m
  let s: any = date.getSeconds()
  s = s < 10 ? '0' + s : s
  return y + '-' + MM + '-' + d
}

listDateFormatter(value: any) {
  const time = new Date(Date.parse(value))
  let Y = time.getFullYear()
  let M = (time.getMonth() + 1 + '').padStart(2, '0')
  let D = (time.getDate() + '').padStart(2, '0')
  let h = (time.getHours() + '').padStart(2, '0')
  let m = (time.getMinutes() + '').padStart(2, '0')
  let s = (time.getSeconds() + '').padStart(2, '0')
  return `${Y}-${M}-${D} ${h}:${m}:${s}`
}

10、word,excel在线预览:

  a、引入第三方插件 pageOffice、liberOffice

  b、把word,excel 在服务器转化成 PDF,然后在线预览PDF

11、溢出的文本折叠

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  

12、页面媒体查询响应式布局: @media screen and (min-width: 1000px) and (max-width: 1366px) { .doc-catalog-tree-wrap { width: 320px;

.doc-catalog-tree {
  width: 320px;
}

} }

13、刷新当前页面 window.location.href=“url”:改变url地址;

window.location.replace(“url”):将地址替换成新url,该方法通过指定URL替换当前缓存在历史里(客户端)的项目, 因此当使用replace方法之后,你不能通过“前进”和“后 退”来访问已经被替换的URL,这个特点对于做一些过渡页面非常有用!

window.location.reload():强制刷新页面,从服务器重新请求!

location.href不重新刷新当前页面: a、使用location.href和location.reload(); window.location.href = url window.location.reload() b、使用form表单提交 var url=data.url document.write("

"); c、时间戳 window.location.href=data.url+"?time="+new Data().getTime();//加一个时间变量,让每次请求的url都不一样

window.location.reload()刷新当前页面 window.parent.location.reload()刷新父亲对象(用于框架) opener.location.reload()刷新父窗口对象(用于单开窗口) top.location.reload()刷新最顶端对象(用于多开窗口) window.location.reload()是刷新当前窗口,可传参数true,表示不走缓存,从服务端重新获取数据 使用window.parent.location.reload()相当于按F5页面刷新,整个页面都会刷新 window可以省略

14、ts 如何忽略 node_module 中包的类型错误 ?

15、获取数组差集

  getDiffCollection(unionArr, subsetArr): any[] {
    let arr = unionArr.filter((x) => subsetArr.every((y) => y.id !== x.id));
    return arr;
  }

16、获取数组交集

  getSameCollection(unionArr, subsetArr, key): any[] {
    let arr = unionArr.filter((x) => subsetArr.some((y) => y.id === x[key]));
    return arr;
  }

17、构造map

    dataObj() {
       const key = this.props.key;
       return this.data.reduce((o, cur) => (o[cur[key]] = cur) && o, {});
    },

18、z-index 堆叠上下文,只有在postion:relative/absolute/fixed脱离文档流控制时才生效,static时无效。

  • 当父元素和子元素都处于堆叠上下文时,子元素继承父元素的优先级,故父元素大的就大,如果父元素没有处于堆叠上下文时,即z-index:auto;或者position:static;时,子元素不会继承父元素的优先级。
  • z-index为0时依然处于堆叠上下文中,比负值高,比正值低。
  • z-index为负值时不仅会处于z-index为0和正值元素的后面,还会处于非堆叠元素的后面。

19、z-index在以下情况下会失效

  • 父元素position为relative时,子元素的z-index失效。
  • 该元素没有设置position属性为非static属性。
  • 该标签在设置z-index的同时还设置了float浮动

20、计算精度问题

  add(a, b) {
    let aNum = Number(a) || 0
    let bNum = Number(b) || 0

    let aStr = aNum + ''
    let aDotPos = aStr.indexOf('.')
    let aLen = aStr.substr(aDotPos + 1).length
    let aTimes = Math.pow(10, aLen)

    let bStr = bNum + ''
    let bDotPos = bStr.indexOf('.')
    let bLen = bStr.substr(bDotPos + 1).length
    let bTimes = Math.pow(10, bLen)

    let maxTimes = aTimes > bTimes ? aTimes : bTimes

    if (maxTimes <= 0) {
      return aNum + bNum
    }

    let result = aNum * maxTimes + bNum * maxTimes

    return result / maxTimes
  }