ソースを参照

Merge branch 'qhse_ptw' of shuzhihua/pms-iot-vue into master

yanghao 2 日 前
コミット
650a9b81b8

+ 7 - 2
src/layout/components/AppView.vue

@@ -2,6 +2,7 @@
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useAppStore } from '@/store/modules/app'
 import { Footer } from '@/layout/components/Footer'
+import { getCurrentSource } from '@/utils/currentSource'
 
 defineOptions({ name: 'AppView' })
 
@@ -20,6 +21,7 @@ const getCaches = computed((): string[] => {
 })
 
 const tagsView = computed(() => appStore.getTagsView)
+const hideTopHeader = computed(() => getCurrentSource() === 'qhse')
 
 //region 无感刷新
 const routerAlive = ref(true)
@@ -36,10 +38,13 @@ provide('reload', reload)
 <template>
   <section
     :class="[
-      'p-[var(--app-content-padding)] w-full bg-[var(--app-content-bg-color)] dark:bg-[var(--el-bg-color)]',
+      'w-full bg-[var(--app-content-bg-color)] dark:bg-[var(--el-bg-color)]',
+      hideTopHeader ? 'px-[var(--app-content-padding)] pb-[var(--app-content-padding)] pt-0' : 'p-[var(--app-content-padding)]',
       {
+        '!min-h-[calc(100vh-var(--tags-view-height)-var(--app-footer-height))] pb-0':
+          footer && hideTopHeader,
         '!min-h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-footer-height))] pb-0':
-          footer
+          footer && !hideTopHeader
       }
     ]"
   >

+ 2 - 1
src/layout/components/Menu/src/components/useRenderMenuItem.tsx

@@ -3,6 +3,7 @@ import { hasOneShowingChild } from '../helper'
 import { isUrl } from '@/utils/is'
 import { useRenderMenuTitle } from './useRenderMenuTitle'
 import { pathResolve } from '@/utils/routerHelper'
+import { getCurrentSource } from '@/utils/currentSource'
 
 const { renderMenuTitle } = useRenderMenuTitle()
 
@@ -10,7 +11,7 @@ export const useRenderMenuItem = () =>
   // allRouters: AppRouteRecordRaw[] = [],
   {
     const route = useRoute()
-    const currentSource = sessionStorage.getItem('LOGIN_SOURCE') || route.query.source
+    const currentSource = getCurrentSource(route.query.source)
     const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => {
       return routers
         .filter((v) => {

+ 4 - 0
src/layout/components/ToolHeader.vue

@@ -10,6 +10,7 @@ import { LocaleDropdown } from '@/layout/components/LocaleDropdown'
 import RouterSearch from '@/components/RouterSearch/index.vue'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
+import { getCurrentSource } from '@/utils/currentSource'
 
 const { getPrefixCls, variables } = useDesign()
 
@@ -40,11 +41,13 @@ const locale = computed(() => appStore.getLocale)
 
 // 消息图标
 const message = computed(() => appStore.getMessage)
+const hideTopHeader = computed(() => getCurrentSource() === 'qhse')
 
 export default defineComponent({
   name: 'ToolHeader',
   setup() {
     return () => (
+      hideTopHeader.value ? null : (
       <div
         id={`${variables.namespace}-tool-header`}
         class={[
@@ -81,6 +84,7 @@ export default defineComponent({
           <UserInfo></UserInfo>
         </div>
       </div>
+      )
     )
   }
 })

+ 143 - 113
src/layout/components/useRenderLayout.tsx

@@ -8,6 +8,7 @@ import AppView from './AppView.vue'
 import ToolHeader from './ToolHeader.vue'
 import { ElScrollbar } from 'element-plus'
 import { useDesign } from '@/hooks/web/useDesign'
+import { getCurrentSource } from '@/utils/currentSource'
 
 const { getPrefixCls } = useDesign()
 
@@ -16,59 +17,52 @@ const prefixCls = getPrefixCls('layout')
 const appStore = useAppStore()
 
 const pageLoading = computed(() => appStore.getPageLoading)
-
-// 标签页
 const tagsView = computed(() => appStore.getTagsView)
-
-// 菜单折叠
 const collapse = computed(() => appStore.getCollapse)
-
-// logo
 const logo = computed(() => appStore.logo)
-
-// 固定头部
 const fixedHeader = computed(() => appStore.getFixedHeader)
-
-// 是否是移动端
 const mobile = computed(() => appStore.getMobile)
-
-// 固定菜单
 const fixedMenu = computed(() => appStore.getFixedMenu)
+const hideLeftMenu = computed(() => getCurrentSource() === 'qhse')
+const hideTopHeader = computed(() => getCurrentSource() === 'qhse')
 
 export const useRenderLayout = () => {
   const renderClassic = () => {
     return (
       <>
-        <div
-          class={[
-            'absolute top-0 left-0 h-full layout-border__right',
-            { '!fixed z-3000': mobile.value }
-          ]}
-        >
-          {logo.value ? (
-            <Logo
-              class={[
-                'bg-[var(--left-menu-bg-color)] relative',
-                {
-                  '!pl-0': mobile.value && collapse.value,
-                  'w-[var(--left-menu-min-width)]': appStore.getCollapse,
-                  'w-[var(--left-menu-max-width)]': !appStore.getCollapse
-                }
-              ]}
-              style="transition: all var(--transition-time-02);"
-            ></Logo>
-          ) : undefined}
-          <Menu class={[{ '!h-[calc(100%-var(--logo-height))]': logo.value }]}></Menu>
-        </div>
+        {!hideLeftMenu.value ? (
+          <div
+            class={[
+              'absolute top-0 left-0 h-full layout-border__right',
+              { '!fixed z-3000': mobile.value }
+            ]}
+          >
+            {logo.value ? (
+              <Logo
+                class={[
+                  'bg-[var(--left-menu-bg-color)] relative',
+                  {
+                    '!pl-0': mobile.value && collapse.value,
+                    'w-[var(--left-menu-min-width)]': appStore.getCollapse,
+                    'w-[var(--left-menu-max-width)]': !appStore.getCollapse
+                  }
+                ]}
+                style="transition: all var(--transition-time-02);"
+              ></Logo>
+            ) : undefined}
+            <Menu class={[{ '!h-[calc(100%-var(--logo-height))]': logo.value }]}></Menu>
+          </div>
+        ) : undefined}
         <div
           class={[
             `${prefixCls}-content`,
             'absolute top-0 h-[100%]',
             {
               'w-[calc(100%-var(--left-menu-min-width))] left-[var(--left-menu-min-width)]':
-                collapse.value && !mobile.value && !mobile.value,
+                !hideLeftMenu.value && collapse.value && !mobile.value,
               'w-[calc(100%-var(--left-menu-max-width))] left-[var(--left-menu-max-width)]':
-                !collapse.value && !mobile.value && !mobile.value,
+                !hideLeftMenu.value && !collapse.value && !mobile.value,
+              'w-full left-0': hideLeftMenu.value,
               'fixed !w-full !left-0': mobile.value
             }
           ]}
@@ -80,36 +74,40 @@ export const useRenderLayout = () => {
               `${prefixCls}-content-scrollbar`,
               {
                 '!h-[calc(100%-var(--top-tool-height)-var(--tags-view-height))] mt-[calc(var(--top-tool-height)+var(--tags-view-height))]':
-                  fixedHeader.value
+                  fixedHeader.value && !hideTopHeader.value,
+                '!h-[calc(100%-var(--tags-view-height))] mt-0':
+                  fixedHeader.value && hideTopHeader.value
               }
             ]}
           >
-            <div
-              class={[
-                {
-                  'fixed top-0 left-0 z-10': fixedHeader.value,
-                  'w-[calc(100%-var(--left-menu-min-width))] !left-[var(--left-menu-min-width)]':
-                    collapse.value && fixedHeader.value && !mobile.value,
-                  'w-[calc(100%-var(--left-menu-max-width))] !left-[var(--left-menu-max-width)]':
-                    !collapse.value && fixedHeader.value && !mobile.value,
-                  '!w-full !left-0': mobile.value
-                }
-              ]}
-              style="transition: all var(--transition-time-02);"
-            >
-              <ToolHeader
+            {!hideTopHeader.value ? (
+              <div
                 class={[
-                  'bg-[var(--top-header-bg-color)]',
                   {
-                    'layout-border__bottom': !tagsView.value
+                    'fixed top-0 left-0 z-10': fixedHeader.value,
+                    'w-[calc(100%-var(--left-menu-min-width))] !left-[var(--left-menu-min-width)]':
+                      !hideLeftMenu.value && collapse.value && fixedHeader.value && !mobile.value,
+                    'w-[calc(100%-var(--left-menu-max-width))] !left-[var(--left-menu-max-width)]':
+                      !hideLeftMenu.value && !collapse.value && fixedHeader.value && !mobile.value,
+                    '!w-full !left-0': hideLeftMenu.value || mobile.value
                   }
                 ]}
-              ></ToolHeader>
+                style="transition: all var(--transition-time-02);"
+              >
+                <ToolHeader
+                  class={[
+                    'bg-[var(--top-header-bg-color)]',
+                    {
+                      'layout-border__bottom': !tagsView.value
+                    }
+                  ]}
+                ></ToolHeader>
 
-              {tagsView.value ? (
-                <TagsView class="layout-border__top layout-border__bottom"></TagsView>
-              ) : undefined}
-            </div>
+                {!hideTopHeader.value && tagsView.value ? (
+                  <TagsView class="layout-border__top layout-border__bottom"></TagsView>
+                ) : undefined}
+              </div>
+            ) : undefined}
 
             <AppView></AppView>
           </ElScrollbar>
@@ -121,46 +119,58 @@ export const useRenderLayout = () => {
   const renderTopLeft = () => {
     return (
       <>
-        <div class="relative flex items-center bg-[var(--top-header-bg-color)] layout-border__bottom dark:bg-[var(--el-bg-color)]">
-          {logo.value ? <Logo class="custom-hover"></Logo> : undefined}
-
-          <ToolHeader class="flex-1"></ToolHeader>
-        </div>
-        <div class="absolute left-0 top-[var(--logo-height)] h-[calc(100%-var(--logo-height))] w-full flex">
-          <Menu class="relative layout-border__right !h-full"></Menu>
+        {!hideTopHeader.value ? (
+          <div class="relative flex items-center bg-[var(--top-header-bg-color)] layout-border__bottom dark:bg-[var(--el-bg-color)]">
+            {logo.value ? <Logo class="custom-hover"></Logo> : undefined}
+            <ToolHeader class="flex-1"></ToolHeader>
+          </div>
+        ) : undefined}
+        <div
+          class={[
+            'absolute left-0 w-full flex',
+            hideTopHeader.value
+              ? 'top-0 h-full'
+              : 'top-[var(--logo-height)] h-[calc(100%-var(--logo-height))]'
+          ]}
+        >
+          {!hideLeftMenu.value ? <Menu class="relative layout-border__right !h-full"></Menu> : undefined}
           <div
             class={[
               `${prefixCls}-content`,
               'h-[100%]',
               {
                 'w-[calc(100%-var(--left-menu-min-width))] left-[var(--left-menu-min-width)]':
-                  collapse.value,
+                  !hideLeftMenu.value && collapse.value,
                 'w-[calc(100%-var(--left-menu-max-width))] left-[var(--left-menu-max-width)]':
-                  !collapse.value
+                  !hideLeftMenu.value && !collapse.value,
+                'w-full left-0': hideLeftMenu.value
               }
             ]}
             style="transition: all var(--transition-time-02);"
           >
             <ElScrollbar
               v-loading={pageLoading.value}
-              class={[
-                `${prefixCls}-content-scrollbar`,
-                {
-                  '!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]':
-                    fixedHeader.value && tagsView.value
-                }
-              ]}
+            class={[
+              `${prefixCls}-content-scrollbar`,
+              {
+                '!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]':
+                  fixedHeader.value && tagsView.value && !hideTopHeader.value,
+                '!h-[calc(100%)] mt-0':
+                  fixedHeader.value && hideTopHeader.value
+              }
+            ]}
             >
-              {tagsView.value ? (
+              {!hideTopHeader.value && tagsView.value ? (
                 <TagsView
                   class={[
                     'layout-border__bottom absolute',
                     {
-                      '!fixed top-0 left-0 z-10': fixedHeader.value,
+                      '!fixed top-0 left-0 z-10': fixedHeader.value && !hideTopHeader.value,
                       'w-[calc(100%-var(--left-menu-min-width))] !left-[var(--left-menu-min-width)] mt-[var(--logo-height)]':
-                        collapse.value && fixedHeader.value,
+                        !hideLeftMenu.value && collapse.value && fixedHeader.value && !hideTopHeader.value,
                       'w-[calc(100%-var(--left-menu-max-width))] !left-[var(--left-menu-max-width)] mt-[var(--logo-height)]':
-                        !collapse.value && fixedHeader.value
+                        !hideLeftMenu.value && !collapse.value && fixedHeader.value && !hideTopHeader.value,
+                      '!w-full !left-0': hideLeftMenu.value || hideTopHeader.value
                     }
                   ]}
                   style="transition: width var(--transition-time-02), left var(--transition-time-02);"
@@ -178,35 +188,44 @@ export const useRenderLayout = () => {
   const renderTop = () => {
     return (
       <>
+        {!hideTopHeader.value ? (
+          <div
+            class={[
+              'flex items-center justify-between bg-[var(--top-header-bg-color)] relative',
+              {
+                'layout-border__bottom': !tagsView.value
+              }
+            ]}
+          >
+            {logo.value ? <Logo class="custom-hover"></Logo> : undefined}
+            <Menu class="h-[var(--top-tool-height)] flex-1 px-10px"></Menu>
+            <ToolHeader></ToolHeader>
+          </div>
+        ) : undefined}
         <div
           class={[
-            'flex items-center justify-between bg-[var(--top-header-bg-color)] relative',
-            {
-              'layout-border__bottom': !tagsView.value
-            }
+            `${prefixCls}-content`,
+            hideTopHeader.value ? 'w-full h-full' : 'w-full h-[calc(100%-var(--top-tool-height))]'
           ]}
         >
-          {logo.value ? <Logo class="custom-hover"></Logo> : undefined}
-          <Menu class="h-[var(--top-tool-height)] flex-1 px-10px"></Menu>
-          <ToolHeader></ToolHeader>
-        </div>
-        <div class={[`${prefixCls}-content`, 'w-full h-[calc(100%-var(--top-tool-height))]']}>
           <ElScrollbar
             v-loading={pageLoading.value}
             class={[
               `${prefixCls}-content-scrollbar`,
               {
                 '!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]':
-                  fixedHeader.value && tagsView.value
+                  fixedHeader.value && tagsView.value && !hideTopHeader.value,
+                '!h-full mt-0': hideTopHeader.value
               }
             ]}
           >
-            {tagsView.value ? (
+            {!hideTopHeader.value && tagsView.value ? (
               <TagsView
                 class={[
                   'layout-border__bottom layout-border__top relative',
                   {
-                    '!fixed w-full top-[var(--top-tool-height)] left-0': fixedHeader.value
+                    '!fixed w-full top-[var(--top-tool-height)] left-0': fixedHeader.value && !hideTopHeader.value,
+                    '!fixed w-full top-0 left-0': hideTopHeader.value
                   }
                 ]}
                 style="transition: width var(--transition-time-02), left var(--transition-time-02);"
@@ -223,54 +242,65 @@ export const useRenderLayout = () => {
   const renderCutMenu = () => {
     return (
       <>
-        <div class="relative flex items-center bg-[var(--top-header-bg-color)] layout-border__bottom">
-          {logo.value ? <Logo class="custom-hover !pr-15px"></Logo> : undefined}
-
-          <ToolHeader class="flex-1"></ToolHeader>
-        </div>
-        <div class="absolute left-0 top-[var(--logo-height)] h-[calc(100%-var(--logo-height))] w-full flex">
-          <TabMenu></TabMenu>
+        {!hideTopHeader.value ? (
+          <div class="relative flex items-center bg-[var(--top-header-bg-color)] layout-border__bottom">
+            {logo.value ? <Logo class="custom-hover !pr-15px"></Logo> : undefined}
+            <ToolHeader class="flex-1"></ToolHeader>
+          </div>
+        ) : undefined}
+        <div
+          class={[
+            'absolute left-0 w-full flex',
+            hideTopHeader.value
+              ? 'top-0 h-full'
+              : 'top-[var(--logo-height)] h-[calc(100%-var(--logo-height))]'
+          ]}
+        >
+          {!hideLeftMenu.value ? <TabMenu></TabMenu> : undefined}
           <div
             class={[
               `${prefixCls}-content`,
               'h-[100%]',
               {
                 'w-[calc(100%-var(--tab-menu-min-width))] left-[var(--tab-menu-min-width)]':
-                  collapse.value && !fixedMenu.value,
+                  !hideLeftMenu.value && collapse.value && !fixedMenu.value,
                 'w-[calc(100%-var(--tab-menu-max-width))] left-[var(--tab-menu-max-width)]':
-                  !collapse.value && !fixedMenu.value,
+                  !hideLeftMenu.value && !collapse.value && !fixedMenu.value,
                 'w-[calc(100%-var(--tab-menu-min-width)-var(--left-menu-max-width))] ml-[var(--left-menu-max-width)]':
-                  collapse.value && fixedMenu.value,
+                  !hideLeftMenu.value && collapse.value && fixedMenu.value,
                 'w-[calc(100%-var(--tab-menu-max-width)-var(--left-menu-max-width))] ml-[var(--left-menu-max-width)]':
-                  !collapse.value && fixedMenu.value
+                  !hideLeftMenu.value && !collapse.value && fixedMenu.value,
+                'w-full left-0': hideLeftMenu.value
               }
             ]}
             style="transition: all var(--transition-time-02);"
           >
             <ElScrollbar
               v-loading={pageLoading.value}
-              class={[
-                `${prefixCls}-content-scrollbar`,
-                {
-                  '!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]':
-                    fixedHeader.value && tagsView.value
-                }
-              ]}
+            class={[
+              `${prefixCls}-content-scrollbar`,
+              {
+                '!h-[calc(100%-var(--tags-view-height))] mt-[calc(var(--tags-view-height))]':
+                  fixedHeader.value && tagsView.value && !hideTopHeader.value,
+                '!h-full mt-0': hideTopHeader.value
+              }
+            ]}
             >
-              {tagsView.value ? (
+              {!hideTopHeader.value && tagsView.value ? (
                 <TagsView
                   class={[
                     'relative layout-border__bottom',
                     {
-                      '!fixed top-0 left-0 z-10': fixedHeader.value,
+                      '!fixed top-0 left-0 z-10': fixedHeader.value && !hideTopHeader.value,
+                      '!fixed top-0 left-0 z-10 w-full': hideTopHeader.value,
                       'w-[calc(100%-var(--tab-menu-min-width))] !left-[var(--tab-menu-min-width)] mt-[var(--logo-height)]':
-                        collapse.value && fixedHeader.value && !fixedMenu.value,
+                        !hideLeftMenu.value && collapse.value && fixedHeader.value && !fixedMenu.value && !hideTopHeader.value,
                       'w-[calc(100%-var(--tab-menu-max-width))] !left-[var(--tab-menu-max-width)] mt-[var(--logo-height)]':
-                        !collapse.value && fixedHeader.value && !fixedMenu.value,
+                        !hideLeftMenu.value && !collapse.value && fixedHeader.value && !fixedMenu.value && !hideTopHeader.value,
                       'w-[calc(100%-var(--tab-menu-min-width)-var(--left-menu-max-width))] !left-[calc(var(--tab-menu-min-width)+var(--left-menu-max-width))] mt-[var(--logo-height)]':
-                        collapse.value && fixedHeader.value && fixedMenu.value,
+                        !hideLeftMenu.value && collapse.value && fixedHeader.value && fixedMenu.value && !hideTopHeader.value,
                       'w-[calc(100%-var(--tab-menu-max-width)-var(--left-menu-max-width))] !left-[calc(var(--tab-menu-max-width)+var(--left-menu-max-width))] mt-[var(--logo-height)]':
-                        !collapse.value && fixedHeader.value && fixedMenu.value
+                        !hideLeftMenu.value && !collapse.value && fixedHeader.value && fixedMenu.value && !hideTopHeader.value
                     }
                   ]}
                   style="transition: width var(--transition-time-02), left var(--transition-time-02);"

+ 13 - 0
src/utils/currentSource.ts

@@ -0,0 +1,13 @@
+export const getCurrentSource = (routeSource?: string | string[]) => {
+  const sessionSource = sessionStorage.getItem('LOGIN_SOURCE')
+
+  if (sessionSource) {
+    return sessionSource
+  }
+
+  if (Array.isArray(routeSource)) {
+    return routeSource[0]
+  }
+
+  return routeSource || ''
+}

+ 7 - 2
src/views/pms/qhse/iotmeasuredetect/IotMeasureDetectForm.vue

@@ -263,11 +263,16 @@ const submitForm = async () => {
   try {
     const data = formData.value as unknown as IotMeasureDetectVO
     if (formType.value === 'create') {
-      console.log('提交数据>>>>>>>>>>>>>>>......:', data)
+      if (data.file instanceof Array) {
+        data.file = data.file.join(',')
+      }
       await IotMeasureDetectApi.createIotMeasureDetect(data)
       message.success(t('common.createSuccess'))
     } else {
-      console.log('提交数据>>>>>>>>>>>>>>>......:', data)
+      if (data.file instanceof Array) {
+        data.file = data.file.join(',')
+      }
+
       await IotMeasureDetectApi.updateIotMeasureDetect(data)
       message.success(t('common.updateSuccess'))
     }