<template>
  <div
		class="commonfunctions-card"
		@click="gotoQuery(item)"
  >
    <div class="icon">
      <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
        <title>{{item.function.title}}</title>
        <use :xlink:href="`${item.icon}`"></use>
      </svg>
    </div>
    <div class="title">
      {{item.function.title}}
    </div>
  </div>
</template>

<script>
export default {
  props: {
    item: {
      type: Object,
      default: () => ({})
    }
  },
  data() {
    return {
      sqlResult: 0,
    }
  },
  methods: {
    async gotoQuery(item) {
      if (!item.function || !item.function.id) return
      function getUUID() {
        return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
          var r = (Math.random() * 16) | 0,
            v = c == "x" ? r : (r & 0x3) | 0x8;
          return v.toString(16);
        });
      }
      item = item.function
      let appConfig = await window.GMS.util.nvwa.getAppConfig(item.id)
      appConfig = appConfig?.data?.configJson || '{}'
      appConfig = JSON.parse(appConfig)
      if (
        window.osConfig.appOpenMode &&
        window.osConfig.appOpenMode == "apploader"
      ) {
        window.GMS.$hideContainer.$portalAPI.emit(
          "open-new-page", //打开一个新的页签
          getUUID(),
          item.appName,
          {
            ...appConfig,
          },
          {
            openWay: "FUNCTAB",
            title: item.title,
          }
        );
      } else {
        if (item.path) {
          window.GMS.$hideContainer.$router.push({
            path: `/${item.path}`
          })
          return
        }
        const [appName, moduleName] = item.appName.split('/')
        const portalConfig = { id: item.id }
        if (moduleName) {
          portalConfig['exportLibrary'] = moduleName
          portalConfig['funcName'] = moduleName
        }
        const path = window.GMS.routerManager.getRouter().resolve({
          name: "app",
          query: {
            name: appName,
            "os-jump": encodeURIComponent(window.Base64.encode(JSON.stringify(
              Object.assign(
                {  },
                portalConfig
              )
            ))),
            onlyShowContent: false,
          }
        })
        window.location.hash = path.href
        setTimeout(() => {
          window.location.hash = '#'
        }, 0);
        setTimeout(() => {
          sessionStorage.setItem('appObj', '')
        }, 3500);
      }
		},
  },
  created() {
  },
}
</script>

<style scoped lang="less">
.commonfunctions-card {
  height: 118px;
  background: #FFFFFF;
  padding: 24px 16px 16px 16px; 
  font-family: PingFangSC-Regular, PingFang SC;
  cursor: pointer;
  .icon {
    width: 46px;
    height: 46px;
    margin: 0 auto 12px auto;
    svg {
      width: 100%;
      height: 100%;
    }
  }
  .title {
    height: 20px;
    font-size: 14px;
    font-weight: 400;
    color: #424242;
    line-height: 20px;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}
</style>