Administrator
2022-04-11 79d9fc857559982b00b68b2d709807bdc4cd286f
src/store/modules/control.js
@@ -1,26 +1,314 @@
// import {getStore, setStore} from '@/util/store'
// import {getDictionary} from '@/api/system/dict'
const dict = {
let screenSizes = {
  w: window.screen.width,
  h: window.screen.height
};
let innerWH = {
  innerWidth: window.innerWidth,
  innerHeight: window.innerHeight
};
const control = {
  state: {
    clearOtherBut: {
      refreshBtn: false,
      columnBtn: false,
      searchShowBtn: false,
      filterBtn: false,
      // addBtn: false,
      // editBtn: false,
      // viewBtn: false,
      // delBtn: false,
      searchIndex: 6, //收缩展示数量
      searchIcon: true, //搜索是否收缩
      height: window.screen.height //初始高度
    },
    windowWidth: 1025,
    changePageSize: {
      pageSize: 15,
      currentPage: 1,
      total: 0,
      pageSizes: [15, 30, 50, 100]
    },
    windowWidth: innerWH.innerWidth,
    windowHeight: innerWH.innerHeight,
    tableWindowHeight: innerWH.innerHeight,
    heightTimesOut: "",
    table_height: "",
    butState: "",
    oldOpens: "",
    screenSize: screenSizes.w <= 1366 && screenSizes.h <= 768,
    screenHeight: 1000,
    searchOpen: {
      searchIndex: 6, //收缩展示数量
      searchIcon: true, //搜索是否收缩
      height: window.screen.height //初始高度
    },
    //面的集和点
    polygons: [],
  },
  actions: {
    WHchangeHight({
      state,
      commit
    }, data) {
      if (data.fn) {
        if (!state.heightTimesOut) {
          data.fn(state.windowHeight);
        } else {
          state.heightTimesOut = setTimeout(() => {
            clearTimeout(state.heightTimesOut);
            state.heightTimesOut = "";
            data.fn(state.windowHeight);
          }, 500);
        }
      }
    },
    TABLE_CHANGEBUTPOSITION({
      state,
      commit,
      dispatch
    }, data) {
      //判断是否有展开按键,并做调整,具体样式在smallSize.scss中做调整
      let table = document.getElementsByClassName("tablesss")[0];
      let heard = table.getElementsByClassName("avue-crud__search")[0]; //获取搜索的长度
      let buts = table.getElementsByClassName("avue-form__menu--center")[0];
      let Open = buts.getElementsByClassName("el-button--text")[0];
      let butsheight = heard.clientHeight;
      let other = data.otherclass || [];
      // buts.style.transition = "all 0.1s";
      if (buts) {
        buts.style.top = butsheight - 3 + "px";
      }
      if (other && state.windowWidth >= 1024) {
        for (let k in other) {
          let otherbuts = document.getElementsByClassName(other[k])[0];
          // otherbuts.style.transition = "all 0.1s";
          if (otherbuts) {
            otherbuts.style.top = butsheight + 26 + "px";
          }
        }
      }
      // Open.style.transition = "all 0.1s";
      // Open.style.top = -(butsheight + 4) + "px";
      // 添加事件
      if (Open) {
        Open.style.top = (state.screenSize ? 125 : 140) + "px";
        Open.onclick = function (e) {
          // changedom(e.srcElement.innerText);
          //固定高度
          //调用改变高度
          if (e.srcElement.innerText == "展 开") {
            state.tableWindowHeight += 1;
          } else {
            state.tableWindowHeight -= 1;
          }
          // commit("setButOpens", e.srcElement.innerText);
        };
      }
    },
    TABLE_CHANGEHEIGHT({
      state,
      commit
    }, data) {
      let h = +state.windowHeight - (+data.searchHeight + +data.flowHeight);
      console.log(h);
      state.table_height = h;
      // commit("settable_height", h);
    },
    changeZoom({
      state,
      commit,
      dispatch
    }, data) {
      if (window.innerWidth <= 1396 && window.innerHeight <= 798) {
        // var devicewidth = document.documentElement.clientWidth; //获取当前分辨率下的可是区域宽度
        // console.log(devicewidth)
        let devicewidth = 1143;
        var scale = devicewidth / 1366; // 分母——设计稿的尺寸
        document.body.style.zoom = scale; //放大缩小相应倍数
        // console.log("应用1366*768")
      } else {
        if (document.body.style.zoom != 1) {
          document.body.style.zoom = 1;
          // console.log("还原缩放")
        }
      }
      // return;
      let usheight = 0;
      //监听可视高度
      Object.defineProperty(state, "tableWindowHeight", {
        set: function (key, value) {
          //   //此处拦截了设置请求
          // window.console.log(key, value, "tableWindowHeight");
          usheight = key;
          let d = {
            fn: function (h) {
              let doit = (height, val) => {
                //获取tablesss 若没有  不做更改
                let table = document.getElementsByClassName("tablesss");
                // console.log(table[0]);
                if (table[0]) {
                  //有需要调整的表格
                  let heard = table[0].getElementsByClassName(
                    "avue-crud__search"
                  );
                  let tip = document.getElementsByClassName("avue-crud__tip")[0];
                  //判断是否存在提示dom
                  let usNum = state.screenSize ? 165 : 302;
                  if (!tip) {
                    // console.log("没有tip")
                    usNum = usNum - 50;
                  }
                  let pagination = document.getElementsByClassName("avue-crud__pagination")[0];
                  //判断是否存在分页
                  if (!pagination) {
                    // console.log("没有分页")
                    usNum = usNum - 45;
                  }
                  let nav_scroll = document.getElementsByClassName("el-tabs__nav-scroll");
                  if (nav_scroll[1]) {
                    // console.log("有额外标签栏")
                    usNum = usNum + 55;
                  }
                  let hs = height || h;
                  let overHeight = +hs - (+heard[0].clientHeight + +usNum);
                  // console.log(overHeight, heard[0].clientHeight, usNum);
                  let fromDom = document.getElementsByClassName(
                    "el-table--fit"
                  );
                  if (fromDom) {
                    let ifsize = fromDom.length;
                    // console.log("页面表格数量:", ifsize)
                    for (let ifrom = 0; ifrom < ifsize; ifrom++) {
                      // fromDom[ifrom].style.transition = "height 0.1s";
                      fromDom[ifrom].style.maxHeight = overHeight + "px";
                      fromDom[ifrom].style.height = overHeight + "px";
                    }
                  }
                  let d = {
                    otherclass: ["downSFZ"],
                    haveOpen: true
                  };
                  dispatch("TABLE_CHANGEBUTPOSITION", d);
                }
                return;
              };
              // if (that.onceTableChange == 1) {
              //   //解决第一次未渲染成功会报错的问题
              //   that.onceTableChange++;
              //   console.log(that.onceTableChange);
              //   commit("checkDomHeight", {
              //     domName: "getElementsByClassName",
              //     name: "el-table--fit",
              //     fn: function() {
              //       that.$nextTick(() => {
              //         setTimeout(() => {
              // doit(window.innerHeight, "once");
              //         }, 200);
              //       });
              //     }
              //   });
              // } else {
              doit(window.innerHeight);
              // }
            }
          };
          dispatch("WHchangeHight", d);
          return
          // tablesss
          // class="tablesss"
          $store.state.control.screenSize == 1366 ? 'smallSize' : 'normalSize',
            $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : '',
            // searchIndex: 6, //收缩展示数量
            // searchIcon: true, //搜索是否收缩
            // ...this.$store.state.control.searchOpen,
            // height: "auto",
            // 初始化位置, 放入mounted, 以及放入onload的获取数据后
            this.$store.commit("setWindowSizeHeightAdd");
        },
        get: function () {
          // console.log('get!', usheight);
          return usheight;
        }
      });
    },
    MOUNTED_TABLE_SIZE({
      state,
      commit,
      dispatch
    }, data) {
      let d = {
        otherclass: ["downSFZ"],
        haveOpen: true,
        from: "mounted"
      };
      // 开始就适应高度
      commit("setWindowSizeHeightAdd");
      // dispatch("TABLE_CHANGEBUTPOSITION", d);
    }
  },
  mutations: {
    setpolygon: (state, data) => {
      state.polygons = data;
    },
    setWindowSize: (state, data) => {
      state.windowWidth = data.innerWidth;
      // console.log(data)
      state.windowHeight = data.innerHeight;
      // console.log(state.windowHeight, "state.windowHeight")
    },
    setWindowSizeHeight: (state, data) => {
      state.tableWindowHeight = data;
      // console.log(state.tableWindowHeight, "state.tableWindowHeight")
    },
    setWindowSizeHeightAdd: (state, data) => {
      setTimeout(() => {
        state.tableWindowHeight += 1;
      }, 0);
    },
    setButOpens(state, data) {
      state.butState = data;
    },
    setOldOpens(state, data) {
      state.oldOpens = data;
      state.oldOpens = data;
    },
    setScreenSize(state, data) {
      state.screenSize = data.w <= 1366 && data.h <= 768 ? 1366 : false;
      state.screenHeight = data.h;
    },
    checkDomHeight(state, data) {
      //  声明定时器
      var timer = null;
      //  检查dom是否执行完成
      function checkDom() {
        let dom = document[data.domName](data.name);
        console.log(dom[0].style.height, "height");
        if (dom[0].style.height) {
          //  执行dom加载完成后的操作
          //  清除定时器
          if (!timer) {
            clearTimeout(timer);
          }
          if (data.fn) {
            //回调函数
            data.fn(dom);
            return;
          } else {
            return dom;
          }
        } else {
          //  自我调用
          timer = setTimeout(checkDom, 200);
        }
      }
      //  首次执行
      checkDom();
    }
  }
};
export default dict;
export default control;