commonWeight.js 3.93 KB
export default {
  data() {
    return {
      options: {},
      optionsSetUp: {},
      optionsPosition: {},
      optionsData: {},
      id: (new Date()).getTime(),
    }
  },
  props: {
    config:Object,
    value: Object,
    ispreview: Boolean
  },
  watch: {
    value: {
      handler(val) {
        this.options = val;
        this.optionsSetUp = val.setup;
        this.optionsPosition = val.position;
        this.reloadPage();
      },
      deep: true
    }
  },
  mounted() {
    this.options = this.value;
    this.optionsSetUp = this.value.setup;
    this.optionsPosition = this.value.position;
  },
  computed: {
    // 计算样式
    getStyle() {
      let that = this;
      // 位置信息
      const position = this.optionsPosition;
      let css = {};
      if(position && Object.keys(position).length > 0){
        css = {
          position: this.ispreview ? "absolute" : "static",
          width: position.width + "px",
          height: position.height + "px",
          left: position.left + "px",
          top: position.top + "px"
        };
      }

      // 属性信息
      const setup = that.optionsSetUp;
      const config = that.config;
      for (const key in setup) {
        let arr = config.setup.filter(function(v){if(v.name == key){return v}})
        if(arr && arr.length == 1){
          let val = setup[key];
          let cssTemplate = arr[0].cssTemplate;
          if (cssTemplate) {
            let split = cssTemplate.replace("%s", val).split(":");
            css[split[0]] = split[1];
          }
        }
      }
      return css;
    }
  },
  methods: {
    /**
     * 页面重新加载
     */
    reloadPage() {
      console.log("页面重新加载中....")
    },
    /**
     * 获取x天后的日期
     * @param day
     * @returns {string} yyyy-MM-mm
     */
    getData(day) {
      var doHandMonth = (month) => {
        var m = month
        if (month.toString().length == 1) {
          m = "0" + month
        }
        return m
      }
      var today = new Date()
      var targetday = today.getTime() + 1000 * 60 * 60 * 24 * day
      today.setTime(targetday)
      var tYear = today.getFullYear()
      var tMonth = today.getMonth()
      var tDate = today.getDate()
      tMonth = doHandMonth(tMonth + 1)
      tDate = doHandMonth(tDate)
      return tYear + "-" + tMonth + "-" + tDate
    },
    /**
     * 获取URL所有的参数
     */
    getUrlParam() {
      let url = window.location.href;
      let arrObj = url.split("?");
      let params = Object.create(null)
      if (arrObj.length > 1) {
        arrObj = arrObj[1].split("&");
        arrObj.forEach(item => {
          item = item.split("=");
          params[item[0]] = item[1]
        })
      }
      return params;
    },
    /**
     * 请求接口数据
     * @returns {Promise<unknown>}
     */
    handlerData(params) {
      let that = this;
      const optionsData = this.value.data;
      if (optionsData.dynamicData) {
        let contextData = optionsData.dynamicData.contextData;
        // 合并url参数
        let paramsObj = that.getUrlParam();
        if (paramsObj) {
          for (let key of Object.keys(paramsObj)) {
            let paramVal = paramsObj[key];
            contextData[key] = paramVal;
          }
        }
        // 合并自定义的参数
        if (params) {
          for (let key of Object.keys(params)) {
            let paramVal = params[key];
            contextData[key] = paramVal;
          }
        }
      }

      return new Promise(async (resolve) => {
        that.queryEchartsData(
          optionsData.dynamicData,
          optionsData.refreshTime,
          that.optionsSetup,
          optionsData.isRefresh
        ).then(res => {
          let data = res[0];
          if (data && (data.code == 200 || data.code == 0)) {
            resolve(data);
          } else if (data && data.code == 401) {
            console.log('token过期,请重新登录!', data);
          }
        });
      })
    },
  }
}