6
jinlin
2023-11-29 b21945e7dea2daa8b30bee3cdd4bca91277e3b5f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import {addResizeListener, removeResizeListener} from 'element-ui/src/utils/resize-event'
 
// 设置表格高度
const doResize = async (el, binding, vnode) => {
  // 获取表格Dom对象
  const {componentInstance: $table} = await vnode
  // 获取调用传递过来的数据
  const {value} = binding
 
  if (!$table.height) {
    $table.height = '100px'
  }
  // 获取距底部距离(用于展示页码等信息)
  const bottomOffset = (value && value.bottomOffset) || 30
 
  if (!$table) return
 
  // 计算列表高度并设置
  console.log("mark3")
  const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset - 10
  $table.layout.setHeight(height)
  $table.doLayout()
}
 
export default {
  // 初始化设置
  bind(el, binding, vnode) {
    // 设置resize监听方法
    el.resizeListener = async () => {
      await doResize(el, binding, vnode)
    }
    // 绑定监听方法到addResizeListener
    addResizeListener(window.document.body, el.resizeListener)
  },
  // 绑定默认高度
  async inserted(el, binding, vnode) {
    await doResize(el, binding, vnode)
  },
  // 绑定默认高度
  async update(el, binding, vnode) {
    await doResize(el, binding, vnode)
  },
  // 销毁时设置
  unbind(el) {
    // 移除resize监听
    removeResizeListener(el, el.resizeListener)
  }
}
 
/*function setHeight(el, binding) {
  let rect = el.getBoundingClientRect();
  if (rect.top > 0) {
    let height = window.innerHeight - rect.top - (binding.value0);
    // console.log(binding.value +-' + window.innerHeight)
    // console.log(rect)
    el.style.height = height + 'px
    el.style.overflowY = 'auto'
  }
  Vue.directive('fixed-bottom', {
    bind: function (el, binding) {
      // console.log('bind')
      setHeight(el, binding)
    },
    inserted: function (el, binding) {
      // console.log('inserted')
      setHeight(el, binding)
    },
    update: function (el, binding) {
      // console.log(update')
      setHeight(el, binding)
    }
  })*/