Explorar o código

Merge branch 'cpq-dev' of wangfan/adweb3-web into master

chenpeiqing hai 3 meses
pai
achega
4317e4480b
Modificáronse 1 ficheiros con 132 adicións e 0 borrados
  1. 132 0
      src/views/adweb/sohoeb2b/Order.vue

+ 132 - 0
src/views/adweb/sohoeb2b/Order.vue

@@ -0,0 +1,132 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper" v-if="isShowSelect">
+      <select-site ref="selectSiteRef" @set-site-info="setSiteInfo" select-width="100%" label="站点选择" />
+    </div>
+    <!-- 查询区域-END -->
+
+    <a-spin :spinning="confirmLoading">
+      <iframe
+        v-if="showiIrame"
+        ref="iframeRef"
+        :src="srcUrl"
+        height="100%"
+        width="100%"
+        :style="{ height: iframeHeight + 'px', border: 0, 'overflow-y': 'scroll' }"
+      >
+      </iframe>
+
+      <a-result
+        status="403"
+        v-else-if="showNoResult"
+        title="网站尚未设置用于处理订单的URL"
+        :style="{ height: iframeHeight + 'px', border: 0, 'overflow-y': 'scroll' }"
+      />
+    </a-spin>
+  </a-card>
+</template>
+
+<script lang="ts" name="SiteOrderData" setup>
+  import { getAction } from '/@/api/manage/manage';
+  import { computed, nextTick, onBeforeMount, onMounted, reactive, ref } from 'vue';
+  import { RoleEnum } from '@/enums/roleEnum';
+  import { getTenantById } from '@/views/system/tenant/tenant.api';
+  import { getAuthCache } from '@/utils/auth';
+  import { TENANT_ID } from '@/enums/cacheEnum';
+  import { useUserStore } from '/src/store/modules/user';
+  import SelectSite from '@/components/Adweb/selectSite.vue';
+
+  const srcUrl = ref('');
+  const showiIrame = ref(false);
+  const showNoResult = ref(false);
+  const confirmLoading = ref(false);
+  const isShowSelect = ref(false);
+  const windowHeight = ref(window.innerHeight);
+  const iframeHeight = ref(window.innerHeight);
+  const userStore = useUserStore();
+  const iframeRef = ref();
+
+  // 租户管理员角色
+  const isTenantAdmin = computed(() => {
+    return userStore.getRoleList.includes(RoleEnum.ADWEB_CHANNEL_ADMIN);
+  });
+
+  // 是否是苏豪纺织的租户
+  const isSohoeb2b = ref(false);
+
+  onBeforeMount(async () => {
+    isSohoeb2bTenant();
+  });
+
+  onMounted(() => {
+    window.addEventListener('resize', () => {
+      windowHeight.value = window.innerHeight;
+      iframeHeight.value = isShowSelect.value ? windowHeight.value - 59 - 24 - 24 - 20 - 44 : windowHeight.value - 59 - 24 - 24 - 20;
+    });
+
+    iframeHeight.value = isShowSelect.value ? windowHeight.value - 59 - 24 - 24 - 20 - 44 : windowHeight.value - 59 - 24 - 24 - 20;
+  });
+
+  // 判断当前登录的租户是否是苏豪通的租户
+  function isSohoeb2bTenant() {
+    getTenantById({ id: getAuthCache(TENANT_ID) }).then((res) => {
+      isSohoeb2b.value = res.name.includes('苏豪纺织集团');
+
+      // 针对租户管理员,并且是苏豪纺织的租户
+      if (isTenantAdmin.value && isSohoeb2b.value) {
+        isShowSelect.value = true;
+      }
+    });
+  }
+
+  // 调用方法
+  function iframeLoad() {
+    nextTick(() => {
+      confirmLoading.value = true;
+      const iframe = iframeRef.value;
+
+      iframe.onload = () => {
+        confirmLoading.value = false;
+      };
+    });
+  }
+
+  function setSiteInfo() {
+    confirmLoading.value = true;
+    let url = location.href;
+    let i = url.lastIndexOf('/');
+    let siteId = url.substring(i + 1, url.length);
+    let siteCode = '';
+    if (localStorage.getItem('siteCode') !== null) {
+      siteCode = localStorage.getItem('siteCode');
+    }
+    getAction('/adweb/adwebSiteManage/getSiteOrderInfo?siteCode=' + siteCode, {}).then(function (res) {
+      if (res.code == 200) {
+        showiIrame.value = true;
+        srcUrl.value = res.result.orderUrl;
+        iframeLoad();
+      } else {
+        showiIrame.value = false;
+        showNoResult.value = true;
+        confirmLoading.value = false;
+      }
+    });
+  }
+</script>
+<style scoped>
+  .table-page-search-wrapper {
+    margin-bottom: 20px;
+
+    :deep(.ant-form-item-label) {
+      width: 100px;
+      text-align: left;
+    }
+
+    :deep(.ant-form-item-control) {
+      width: 30%;
+      min-width: 200px;
+      flex-grow: initial;
+    }
+  }
+</style>