shaogen1995 9 tháng trước cách đây
mục cha
commit
c9e3426ace
56 tập tin đã thay đổi với 297 bổ sung7266 xóa
  1. 0 24
      .gitignore
  2. BIN
      scene/public/code.png
  3. 0 3
      web/public/myData/myData.js
  4. 25 0
      web/src/App.tsx
  5. 4 0
      web/src/AppM.tsx
  6. 0 0
      web/src/assets/img/home/1.png
  7. 0 0
      web/src/assets/img/home/1Ac.png
  8. 0 0
      web/src/assets/img/home/1F.png
  9. 0 0
      web/src/assets/img/home/2.png
  10. 0 0
      web/src/assets/img/home/2Ac.png
  11. 0 0
      web/src/assets/img/home/2F.png
  12. 0 0
      web/src/assets/img/home/3.png
  13. 0 0
      web/src/assets/img/home/3Ac.png
  14. 0 0
      web/src/assets/img/home/3F.png
  15. 0 0
      web/src/assets/img/home/bg.jpg
  16. 0 0
      web/src/assets/img/home/logo.png
  17. 0 0
      web/src/assets/img/home/yan.png
  18. 21 0
      web/src/components/AsyncSpinLoding/index.module.scss
  19. 15 0
      web/src/components/AsyncSpinLoding/index.tsx
  20. 8 8
      web/src/components/LeftTopLogo/index.tsx
  21. 0 77
      web/src/components/LookGood/index.module.scss
  22. 0 59
      web/src/components/LookGood/index.tsx
  23. 6 4
      web/src/index.tsx
  24. 34 0
      web/src/pages/A1home/index.module.scss
  25. 42 27
      web/src/pages/A1home/index.tsx
  26. 3 6
      web/src/pages/A2scene/index.tsx
  27. 6 265
      web/src/pages/A3goods/index.tsx
  28. 0 83
      web/src/pages/A4expert/A4look/index.module.scss
  29. 0 57
      web/src/pages/A4expert/A4look/index.tsx
  30. 6 189
      web/src/pages/A4expert/index.tsx
  31. 8 0
      web/src/store/action/all.ts
  32. 9 1
      web/src/store/reducer/layout.ts
  33. 0 50
      web/src/types/api/layot.d.ts
  34. 0 6
      web/src/types/declaration.d.ts
  35. 13 0
      web/src/utils/domShow.ts
  36. 0 12
      web/src/utils/history.ts
  37. 97 10
      web/src/utils/http.ts
  38. BIN
      web静态资源/staticData/expert/bg.jpg
  39. BIN
      web静态资源/staticData/expert/left.png
  40. BIN
      web静态资源/staticData/expert/li1.png
  41. BIN
      web静态资源/staticData/expert/li2.png
  42. BIN
      web静态资源/staticData/expert/li3.png
  43. BIN
      web静态资源/staticData/expert/mjfc.png
  44. BIN
      web静态资源/staticData/expert/moveBg.png
  45. BIN
      web静态资源/staticData/expert/moveInco.png
  46. BIN
      web静态资源/staticData/expert/right.png
  47. BIN
      web静态资源/staticData/expert/topBg.png
  48. BIN
      web静态资源/staticData/goods/bg.jpg
  49. BIN
      web静态资源/staticData/goods/close.png
  50. BIN
      web静态资源/staticData/goods/iconS.png
  51. BIN
      web静态资源/staticData/goods/model/1.4dage
  52. BIN
      web静态资源/staticData/goods/model/2.4dage
  53. BIN
      web静态资源/staticData/goods/null.png
  54. BIN
      web静态资源/staticData/goods/video/1.mp4
  55. 0 6352
      web静态资源/staticData/modelLoding/4dage.js
  56. 0 33
      web静态资源/staticData/modelLoding/model.html

+ 0 - 24
.gitignore

@@ -1,24 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-staticData
-/.pnp
-.pnp.js
-
-# testing
-/coverage
-
-# production
-/build
-
-# misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*

BIN
scene/public/code.png


+ 0 - 3
web/public/myData/myData.js

@@ -19,9 +19,6 @@ const myDataTemp = {
     yan: 'home/yan.png',
     // 文字介绍
     txt: `
-    <p>&emsp;&emsp;时光荏苒,岁月流芳。1964年,在首任院长谢志光、首任所长梁伯强、首任副院长廖月琴等院所先驱的带领下,中山大学肿瘤防治中心的前身——华南肿瘤医院、中山医学院肿瘤研究所相继成立,成为新中国最早成立的肿瘤医院之一,肩负起肿瘤防治的时代重任。</p>
-    <p>&emsp;&emsp;六十载春华秋实、风雨兼程,一代代中肿人始终不忘初心,以“征服癌症,造福人类”为己任,栉风沐雨、砥砺前行,为我国医学事业的发展、为人民的健康做出了杰出贡献。今日的中肿,“诚实、友爱、敬业、创新”的院训精神薪火相传,“幸福、同心、奋斗”的中心文化历久弥新。中肿人正以时不我待的紧迫感与使命感,加快构建三院区发展新格局。 </p>
-    <P>&emsp;&emsp;甲子华诞,怀揣着这份内心的感动与自豪,我们在有限的空间里重新打造了这一开放式院史馆,希望通过馆中的一图一文、一物一品,能够让大家一起重温令人心潮澎湃的历史脉动,共同见证中心艰辛而又光辉的发展历程,激励后来者在通向世界顶尖梦想的征途上砥砺前行。</P>
     `,
     // 3个模块
     arr: [

+ 25 - 0
web/src/App.tsx

@@ -1,12 +1,37 @@
 import '@/assets/styles/base.css'
 import MessageCom from './components/Message'
 import RouterOrder from './components/RouterOrder'
+import AsyncSpinLoding from './components/AsyncSpinLoding'
+import { Image } from 'antd'
+import { useSelector } from 'react-redux'
+import store, { RootState } from './store'
 
 export default function App() {
+  // 从仓库中获取查看图片的信息
+  const lookBigImg = useSelector((state: RootState) => state.A0Layout.lookBigImg)
+
   return (
     <div id='App'>
       {/* 关于路由 */}
       <RouterOrder />
+      {/* 发送请求的加载组件 */}
+      <AsyncSpinLoding />
+
+      {/* 所有图片点击预览查看大图 */}
+      <Image
+        preview={{
+          visible: lookBigImg.show,
+          src: lookBigImg.url,
+          onVisibleChange: value => {
+            // 清除仓库信息
+            store.dispatch({
+              type: 'layout/lookBigImg',
+              payload: { url: '', show: false }
+            })
+          }
+        }}
+      />
+
       {/* antd 轻提示 ---兼容360浏览器 */}
       <MessageCom />
     </div>

+ 4 - 0
web/src/AppM.tsx

@@ -4,6 +4,7 @@ import { useCallback, useEffect, useRef } from 'react'
 import MessageCom from './components/Message'
 import RouterOrder from './components/RouterOrder'
 import screenImg from '@/assets/img/landtip.png'
+import AsyncSpinLoding from './components/AsyncSpinLoding'
 
 export default function AppM() {
   const setFullFu = useCallback(() => {
@@ -38,6 +39,9 @@ export default function AppM() {
       {/* 关于路由 */}
       <RouterOrder />
 
+      {/* 发送请求的加载组件 */}
+      <AsyncSpinLoding />
+
       {/* antd 轻提示 ---兼容360浏览器 */}
       <MessageCom />
 

web静态资源/staticData/home/1.png → web/src/assets/img/home/1.png


web静态资源/staticData/home/1Ac.png → web/src/assets/img/home/1Ac.png


web静态资源/staticData/home/1F.png → web/src/assets/img/home/1F.png


web静态资源/staticData/home/2.png → web/src/assets/img/home/2.png


web静态资源/staticData/home/2Ac.png → web/src/assets/img/home/2Ac.png


web静态资源/staticData/home/2F.png → web/src/assets/img/home/2F.png


web静态资源/staticData/home/3.png → web/src/assets/img/home/3.png


web静态资源/staticData/home/3Ac.png → web/src/assets/img/home/3Ac.png


web静态资源/staticData/home/3F.png → web/src/assets/img/home/3F.png


web静态资源/staticData/home/bg.jpg → web/src/assets/img/home/bg.jpg


web静态资源/staticData/home/logo.png → web/src/assets/img/home/logo.png


web静态资源/staticData/home/yan.png → web/src/assets/img/home/yan.png


+ 21 - 0
web/src/components/AsyncSpinLoding/index.module.scss

@@ -0,0 +1,21 @@
+.AsyncSpinLoding {
+  opacity: 0;
+  pointer-events: none;
+  transition: all .5s;
+  position: fixed;
+  z-index: 9998;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  // background-color: rgba(0, 0, 0, .6);
+  background-color: transparent;
+  :global{
+    .ant-spin-spinning{
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%,-50%);
+    }
+  }
+}

+ 15 - 0
web/src/components/AsyncSpinLoding/index.tsx

@@ -0,0 +1,15 @@
+import styles from "./index.module.scss";
+import { Spin } from "antd";
+import React from "react";
+
+function AsyncSpinLoding() {
+  return (
+    <div id="AsyncSpinLoding" className={styles.AsyncSpinLoding}>
+      <Spin size="large" />
+    </div>
+  );
+}
+
+const MemoAsyncSpinLoding = React.memo(AsyncSpinLoding);
+
+export default MemoAsyncSpinLoding;

+ 8 - 8
web/src/components/LeftTopLogo/index.tsx

@@ -1,25 +1,25 @@
 import React from 'react'
 import styles from './index.module.scss'
-import history, { baseURL, myData } from '@/utils/history'
+import history from '@/utils/history'
 import { useSelector } from 'react-redux'
 import { RootState } from '@/store'
+
+// 图片导入
+import logoImg from '@/assets/img/home/logo.png'
+import yanImg from '@/assets/img/home/yan.png'
+
 function LeftTopLogo() {
   const { visitSum } = useSelector((state: RootState) => state.A0Layout)
 
   return (
     <div className={styles.LeftTopLogo}>
-      <img
-        onClick={() => history.push('/')}
-        className='leftTopLogo1'
-        src={baseURL + myData.home.logo}
-        alt=''
-      />
+      <img onClick={() => history.push('/')} className='leftTopLogo1' src={logoImg} alt='' />
 
       <div className='leftTopLogo2'></div>
       <div className='leftTopLogo3'>
         <p>欢迎您的到来,您是第{visitSum}位参观者!</p>
         <p>
-          <img src={baseURL + myData.home.yan} alt='' />
+          <img src={yanImg} alt='' />
           <span>{visitSum}</span>浏览量
         </p>
       </div>

+ 0 - 77
web/src/components/LookGood/index.module.scss

@@ -1,77 +0,0 @@
-.LookGood {
-  position: absolute;
-  z-index: 10;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  opacity: 0.1;
-  transition: opacity 0.5s;
-  :global {
-    .Lcolse {
-      z-index: 10;
-      cursor: pointer;
-      position: absolute;
-      top: 20px;
-      right: 20px;
-      width: 50px;
-    }
-    .Lmain {
-      position: absolute;
-      top: 50%;
-      left: 50%;
-      transform: translate(-50%, -50%);
-      width: 860px;
-      height: 560px;
-      .LmainCen {
-        width: 100%;
-        height: 490px;
-        .Limg {
-          width: 100%;
-          height: 100%;
-          cursor: zoom-in;
-          img {
-            pointer-events: none;
-            width: 100%;
-            height: 100%;
-            object-fit: contain !important;
-          }
-        }
-        video {
-          width: 100%;
-          height: 100%;
-        }
-      }
-      .LmTxt {
-        font-size: 22px;
-        font-weight: 700;
-        display: flex;
-        align-items: flex-end;
-        justify-content: center;
-        height: 70px;
-      }
-    }
-    .LmainFull {
-      top: 0;
-      left: 0;
-      width: 100%;
-      height: 100%;
-      transform: translate(0, 0);
-      .LmainCen {
-        height: 100%;
-        overflow: hidden;
-        iframe {
-          width: 100%;
-          height: 100%;
-        }
-      }
-      .LmTxt {
-        position: absolute;
-        z-index: 5;
-        bottom: 40px;
-        width: 100%;
-        left: 0;
-      }
-    }
-  }
-}

+ 0 - 59
web/src/components/LookGood/index.tsx

@@ -1,59 +0,0 @@
-import React, { useState } from 'react'
-import styles from './index.module.scss'
-import classNames from 'classnames'
-import { GoodsRow } from '@/types'
-import { baseURL } from '@/utils/history'
-import { Image } from 'antd'
-import LazyImg from '../LazyImg'
-
-type Props = {
-  info: GoodsRow
-  closeFu: () => void
-  type: 'img' | 'model' | 'video'
-}
-
-function LookGood({ info, closeFu, type }: Props) {
-  const [imgLook, setImgLook] = useState('')
-
-  return (
-    <div className={classNames(styles.LookGood)} id='LookGood'>
-      {/* 关闭按钮 */}
-      <img onClick={closeFu} className='Lcolse' src={baseURL + 'goods/close.png'} alt='' />
-
-      <div className={classNames('Lmain', type === 'model' ? 'LmainFull' : '')}>
-        <div className='LmainCen'>
-          {type === 'img' ? (
-            <div className='Limg' onClick={() => setImgLook(baseURL + info.lookSrc)}>
-              <LazyImg src={baseURL + info.lookSrc} />
-            </div>
-          ) : null}
-          {type === 'model' ? (
-            <iframe
-              title={'模型'}
-              src={`${baseURL}modelLoding/model.html?u=${info.lookSrc}`}
-              frameBorder='0'
-            ></iframe>
-          ) : null}
-          {type === 'video' ? <video src={baseURL + info.lookSrc} controls /> : null}
-        </div>
-
-        <div className='LmTxt'>{info.name}</div>
-      </div>
-
-      {/* pc端查看图片 */}
-      {imgLook ? (
-        <Image
-          preview={{
-            visible: !!imgLook,
-            src: imgLook,
-            onVisibleChange: () => setImgLook('')
-          }}
-        />
-      ) : null}
-    </div>
-  )
-}
-
-const MemoLookGood = React.memo(LookGood)
-
-export default MemoLookGood

+ 6 - 4
web/src/index.tsx

@@ -14,17 +14,19 @@ import 'dayjs/locale/zh-cn'
 import locale from 'antd/locale/zh_CN'
 
 import { isMobileFu } from './utils/history'
-import { httpGet } from './utils/http'
+import { getvisit } from './store/action/all'
 
 const container = document.getElementById('root') as HTMLElement
 const root = createRoot(container)
 
 // 浏览量
-httpGet('https://count.4dage.com/api/count/saveVisit/SG-mSXPpz8xPea', res => {
+const resFu = async () => {
+  const res = await getvisit()
   if (res.code === 0) {
-    store.dispatch({ type: 'layout/visitSum', payload: res.data.visitSum })
+    store.dispatch({ type: 'layout/visitSum', payload: res.data })
   }
-})
+}
+resFu()
 
 root.render(
   <ConfigProvider

+ 34 - 0
web/src/pages/A1home/index.module.scss

@@ -2,6 +2,7 @@
   background-size: 100% 100%;
   position: relative;
   overflow: hidden;
+  background-image: url('../../assets/img/home/bg.jpg');
   :global {
     .A1baseLogo {
       pointer-events: none;
@@ -135,6 +136,39 @@
               pointer-events: auto;
             }
           }
+          &:nth-of-type(1) {
+            .A1rRow1 {
+              background-image: url('../../assets/img/home/1F.png');
+            }
+            .A1rRow2 {
+              background-image: url('../../assets/img/home/1.png');
+            }
+            .A1rRow3 {
+              background-image: url('../../assets/img/home/1Ac.png');
+            }
+          }
+          &:nth-of-type(2) {
+            .A1rRow1 {
+              background-image: url('../../assets/img/home/2F.png');
+            }
+            .A1rRow2 {
+              background-image: url('../../assets/img/home/2.png');
+            }
+            .A1rRow3 {
+              background-image: url('../../assets/img/home/2Ac.png');
+            }
+          }
+          &:nth-of-type(3) {
+            .A1rRow1 {
+              background-image: url('../../assets/img/home/3F.png');
+            }
+            .A1rRow2 {
+              background-image: url('../../assets/img/home/3.png');
+            }
+            .A1rRow3 {
+              background-image: url('../../assets/img/home/3Ac.png');
+            }
+          }
         }
 
         .A1rRowAc {

+ 42 - 27
web/src/pages/A1home/index.tsx

@@ -1,10 +1,32 @@
 import React, { useEffect, useRef, useState } from 'react'
 import styles from './index.module.scss'
-import history, { baseURL, myData } from '@/utils/history'
+import history from '@/utils/history'
 import { useSelector } from 'react-redux'
 import { RootState } from '@/store'
 import classNames from 'classnames'
 
+// 图片导入
+import logoImg from '@/assets/img/home/logo.png'
+import yanImg from '@/assets/img/home/yan.png'
+
+const rightArr = [
+  {
+    id: 1,
+    name: '展馆漫游',
+    path: '/scene'
+  },
+  {
+    id: 2,
+    name: '精品典藏',
+    path: '/goods'
+  },
+  {
+    id: 3,
+    name: '专家风采',
+    path: '/expert'
+  }
+]
+
 function A1home() {
   const { visitSum } = useSelector((state: RootState) => state.A0Layout)
 
@@ -33,20 +55,15 @@ function A1home() {
   }, [])
 
   return (
-    <div
-      className={styles.A1home}
-      style={{
-        backgroundImage: `url(${baseURL + myData.home.bg})`
-      }}
-    >
+    <div className={styles.A1home}>
       {/* 初始化logo */}
-      <img className='A1baseLogo' src={baseURL + myData.home.logo} alt='' />
+      <img className='A1baseLogo' src={logoImg} alt='' />
 
       {/* 顶部浏览量 */}
       <div className='leftTopLogo' v-show='!isMobile'>
         <p>欢迎您的到来,您是第{visitSum}位参观者!</p>
         <p>
-          <img src={baseURL + myData.home.yan} alt='' />
+          <img src={yanImg} alt='' />
           <span>{visitSum}</span>浏览量
         </p>
       </div>
@@ -55,16 +72,23 @@ function A1home() {
       <div className='A1main'>
         {/* 左侧文字 */}
         <div className='A1Left'>
-          <img src={baseURL + myData.home.logo} alt='' />
-          <div
-            className='A1LeftTxt mySorrlNo'
-            dangerouslySetInnerHTML={{ __html: myData.home.txt }}
-          ></div>
+          <img src={logoImg} alt='' />
+          <div className='A1LeftTxt mySorrlNo'>
+            <p>
+              &emsp;&emsp;时光荏苒,岁月流芳。1964年,在首任院长谢志光、首任所长梁伯强、首任副院长廖月琴等院所先驱的带领下,中山大学肿瘤防治中心的前身——华南肿瘤医院、中山医学院肿瘤研究所相继成立,成为新中国最早成立的肿瘤医院之一,肩负起肿瘤防治的时代重任。
+            </p>
+            <p>
+              &emsp;&emsp;六十载春华秋实、风雨兼程,一代代中肿人始终不忘初心,以“征服癌症,造福人类”为己任,栉风沐雨、砥砺前行,为我国医学事业的发展、为人民的健康做出了杰出贡献。今日的中肿,“诚实、友爱、敬业、创新”的院训精神薪火相传,“幸福、同心、奋斗”的中心文化历久弥新。中肿人正以时不我待的紧迫感与使命感,加快构建三院区发展新格局。
+            </p>
+            <p>
+              &emsp;&emsp;甲子华诞,怀揣着这份内心的感动与自豪,我们在有限的空间里重新打造了这一开放式院史馆,希望通过馆中的一图一文、一物一品,能够让大家一起重温令人心潮澎湃的历史脉动,共同见证中心艰辛而又光辉的发展历程,激励后来者在通向世界顶尖梦想的征途上砥砺前行。
+            </p>
+          </div>
         </div>
 
         {/* 右侧信息 */}
         <div className='A1Right'>
-          {myData.home.arr.map((v, i) => (
+          {rightArr.map((v, i) => (
             <div
               className={classNames('A1rRow', 'A1rRow' + i, bacFlag[i] ? 'A1rRowAc' : '')}
               key={v.id}
@@ -72,23 +96,14 @@ function A1home() {
             >
               <div className='A1rRowOne'>
                 {/* 反的 */}
-                <div
-                  className='A1rRow1'
-                  style={{ backgroundImage: `url(${baseURL}home/${v.id}F.png)` }}
-                ></div>
+                <div className='A1rRow1'></div>
 
                 {/* 正常的 */}
-                <div
-                  className='A1rRow2'
-                  style={{ backgroundImage: `url(${baseURL}home/${v.id}.png)` }}
-                ></div>
+                <div className='A1rRow2'></div>
               </div>
 
               {/* 鼠标移入的 */}
-              <div
-                className='A1rRow3'
-                style={{ backgroundImage: `url(${baseURL}home/${v.id}Ac.png)` }}
-              ></div>
+              <div className='A1rRow3'></div>
             </div>
           ))}
         </div>

+ 3 - 6
web/src/pages/A2scene/index.tsx

@@ -1,6 +1,7 @@
 import React, { useEffect } from 'react'
 import styles from './index.module.scss'
-import history, { sceneBaseUrl } from '@/utils/history'
+import history from '@/utils/history'
+import { baseURL } from '@/utils/http'
 
 declare global {
   //设置全局属性
@@ -19,11 +20,7 @@ function A2scene() {
 
   return (
     <div className={styles.A2scene}>
-      <iframe
-        src={sceneBaseUrl.replace('Web', 'Scene') + 'index.html#/?h=1'}
-        frameBorder='0'
-        title='场景'
-      ></iframe>
+      <iframe src={`${baseURL}/scene/#/?h=1`} frameBorder='0' title='场景'></iframe>
     </div>
   )
 }

+ 6 - 265
web/src/pages/A3goods/index.tsx

@@ -1,272 +1,13 @@
-import React, { useCallback, useEffect, useState } from 'react'
+import React from 'react'
 import styles from './index.module.scss'
-import LeftTopLogo from '@/components/LeftTopLogo'
-import { baseURL, myData } from '@/utils/history'
-import { GoodsInfo, GoodsRow } from '@/types'
-import { SearchOutline } from 'antd-mobile-icons'
-
-import { Swiper, SwiperSlide } from 'swiper/react'
-
-import { FreeMode, Mousewheel } from 'swiper'
-// Import Swiper styles
-import 'swiper/css'
-import 'swiper/css/free-mode'
-import 'swiper/css/mousewheel'
-
-import classNames from 'classnames'
-import LazyImg from '@/components/LazyImg'
-import { Input } from 'antd-mobile'
-import LookGood from '@/components/LookGood'
-
-function A3goods() {
-  const [data1, setData1] = useState(myData.goods.img.rowArr)
-  const [ac1, setAc1] = useState('全部')
-  const [rowArr1, setrowArr1] = useState<string[]>([])
-  const [txt1, setTxt1] = useState('')
-  const [txtFlag1, setTxtFlag1] = useState(false)
-
-  const [data2, setData2] = useState(myData.goods.model.rowArr)
-  const [ac2, setAc2] = useState('全部')
-  const [rowArr2, setrowArr2] = useState<string[]>([])
-  const [txt2, setTxt2] = useState('')
-  const [txtFlag2, setTxtFlag2] = useState(false)
-
-  const [data3, setData3] = useState(myData.goods.video.rowArr)
-  const [ac3, setAc3] = useState('全部')
-  const [rowArr3, setrowArr3] = useState<string[]>([])
-  const [txt3, setTxt3] = useState('')
-  const [txtFlag3, setTxtFlag3] = useState(false)
-
-  useEffect(() => {
-    const types1 = myData.goods.img.rowArr.map(v => v.type)
-    setrowArr1(['全部', ...Array.from(new Set(types1))])
-
-    const types2 = myData.goods.model.rowArr.map(v => v.type)
-    setrowArr2(['全部', ...Array.from(new Set(types2))])
-
-    const types3 = myData.goods.video.rowArr.map(v => v.type)
-    setrowArr3(['全部', ...Array.from(new Set(types3))])
-  }, [])
-
-  // 滚动到顶部
-  const sollrTop = useCallback((classKey: string) => {
-    const dom: HTMLDivElement = document.querySelector('.' + classKey)!
-    if (dom) dom.scrollTop = 0
-  }, [])
-
-  // 切换顶部
-  const topCut = useCallback(
-    (name: string, acTxt: string, index: 1 | 2 | 3, classKey: string) => {
-      if (name === acTxt) return
-      index === 1 ? setAc1(name) : index === 2 ? setAc2(name) : setAc3(name)
-
-      index === 1 ? setTxt1('') : index === 2 ? setTxt2('') : setTxt3('')
-
-      const dataAll =
-        index === 1
-          ? myData.goods.img.rowArr
-          : index === 2
-          ? myData.goods.model.rowArr
-          : myData.goods.video.rowArr
-
-      let resData: GoodsRow[] = []
-
-      if (name === '全部') resData = dataAll
-      else resData = dataAll.filter(v => v.type === name)
-
-      index === 1 ? setData1(resData) : index === 2 ? setData2(resData) : setData3(resData)
-
-      sollrTop(classKey)
-    },
-    [sollrTop]
-  )
-
-  // 点击搜索
-  const searchFu = useCallback(
-    (val: string, acTxt: string, index: 1 | 2 | 3, classKey: string) => {
-      const dataAllTemp =
-        index === 1
-          ? myData.goods.img.rowArr
-          : index === 2
-          ? myData.goods.model.rowArr
-          : myData.goods.video.rowArr
-
-      const dataAll = acTxt === '全部' ? dataAllTemp : dataAllTemp.filter(v => v.type === acTxt)
-
-      let resData: GoodsRow[] = []
-
-      if (val === '') resData = dataAll
-      else resData = dataAll.filter(v => v.name.includes(val))
-
-      index === 1 ? setData1(resData) : index === 2 ? setData2(resData) : setData3(resData)
-
-      sollrTop(classKey)
-    },
-    [sollrTop]
-  )
-
-  // 打开详情
-  const [opInfo, setOpInfo] = useState({} as GoodsRow)
-  const [opType, setOpType] = useState<any>('')
-
-  const rowBox = useCallback(
-    (info: GoodsInfo, index: 1 | 2 | 3) => {
-      const rowArr = index === 1 ? rowArr1 : index === 2 ? rowArr2 : rowArr3
-      const acTxt = index === 1 ? ac1 : index === 2 ? ac2 : ac3
-      const data = index === 1 ? data1 : index === 2 ? data2 : data3
-      const txtFlag = index === 1 ? txtFlag1 : index === 2 ? txtFlag2 : txtFlag3
-
-      return (
-        <div>
-          <div className='A2top'>
-            <div className='A2top1'>
-              <h1>{info.name}</h1> {info.name2}
-            </div>
-            <div className='A2top2'>
-              <Swiper
-                modules={[FreeMode, Mousewheel]}
-                className='appSw'
-                spaceBetween={0}
-                slidesPerView='auto'
-                freeMode={true}
-                mousewheel={true}
-                // onSlideChange={(e) => console.log("slide change", e)}
-                // onSwiper={(swiper) => (mySwiperRef.current = swiper)}
-              >
-                {rowArr.map(v => (
-                  <SwiperSlide key={v}>
-                    <div
-                      onClick={() => topCut(v, acTxt, index, 'A2Sorrl' + index)}
-                      className={classNames('topRow', acTxt === v ? 'active' : '')}
-                    >
-                      <span>{v}</span>
-                    </div>
-                  </SwiperSlide>
-                ))}
-              </Swiper>
-            </div>
-          </div>
-
-          <div className='A2info'>
-            <div className={classNames('mySorrl', 'A2Sorrl' + index)}>
-              {data.length ? (
-                <>
-                  {data.map(v => (
-                    <div
-                      className='A2Irow'
-                      onClick={() => {
-                        setOpInfo(v)
-                        setOpType(index === 1 ? 'img' : index === 2 ? 'model' : 'video')
-                      }}
-                      key={v.name + v.type}
-                      title={v.name}
-                    >
-                      <div className='A2Irow1'>
-                        <LazyImg src={baseURL + v.coveImg} />
-                      </div>
-                      <div className='A2Irow2'>
-                        {v.name}
-                        <img src={baseURL + 'goods/iconS.png'} alt='' />
-                      </div>
-                    </div>
-                  ))}
-                </>
-              ) : (
-                <div className='A2IrowNull'>
-                  <img src={baseURL + 'goods/null.png'} alt='' />
-                  <p>暂时没有数据</p>
-                  <p>请试一下其他关键字</p>
-                </div>
-              )}
-            </div>
-          </div>
-
-          {/* 底部搜索 */}
-          <div className='A2Search'>
-            {txtFlag ? (
-              <Input
-                onEnterPress={() =>
-                  searchFu(
-                    index === 1 ? txt1 : index === 2 ? txt2 : txt3,
-                    acTxt,
-                    index,
-                    'A2Sorrl' + index
-                  )
-                }
-                placeholder='请输入搜索内容'
-                value={index === 1 ? txt1 : index === 2 ? txt2 : txt3}
-                onChange={value => {
-                  const txtRes = value.replace(/\s+/g, '')
-                  index === 1 ? setTxt1(txtRes) : index === 2 ? setTxt2(txtRes) : setTxt3(txtRes)
-                }}
-              />
-            ) : null}
-
-            <div
-              className='A2SearchIcon'
-              onClick={() => {
-                if (!txtFlag) {
-                  index === 1
-                    ? setTxtFlag1(true)
-                    : index === 2
-                    ? setTxtFlag2(true)
-                    : setTxtFlag3(true)
-                } else
-                  searchFu(
-                    index === 1 ? txt1 : index === 2 ? txt2 : txt3,
-                    acTxt,
-                    index,
-                    'A2Sorrl' + index
-                  )
-              }}
-            >
-              <SearchOutline />
-            </div>
-          </div>
-        </div>
-      )
-    },
-    [
-      ac1,
-      ac2,
-      ac3,
-      data1,
-      data2,
-      data3,
-      searchFu,
-      rowArr1,
-      rowArr2,
-      rowArr3,
-      topCut,
-      txt1,
-      txt2,
-      txt3,
-      txtFlag1,
-      txtFlag2,
-      txtFlag3
-    ]
-  )
-
+function AAAAA() {
   return (
-    <div
-      className={styles.A3goods}
-      style={{ backgroundImage: `url(${baseURL + myData.goods.bg})` }}
-    >
-      <LeftTopLogo />
-
-      <div className='A2main' hidden={!!opInfo.name}>
-        {rowBox(myData.goods.img, 1)}
-        {rowBox(myData.goods.model, 2)}
-        {rowBox(myData.goods.video, 3)}
-      </div>
-
-      {opInfo.name ? (
-        <LookGood info={opInfo} closeFu={() => setOpInfo({} as GoodsRow)} type={opType} />
-      ) : null}
+    <div className={styles.AAAAA}>
+      <h1>AAAAA</h1>
     </div>
   )
 }
 
-const MemoA3goods = React.memo(A3goods)
+const MemoAAAAA = React.memo(AAAAA)
 
-export default MemoA3goods
+export default MemoAAAAA

+ 0 - 83
web/src/pages/A4expert/A4look/index.module.scss

@@ -1,83 +0,0 @@
-.A4look {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 10;
-  padding: 7% 10% 9%;
-  :global {
-    .Lcolse {
-      z-index: 10;
-      cursor: pointer;
-      position: absolute;
-      top: 20px;
-      right: 20px;
-      width: 50px;
-    }
-
-    .A4Lmani {
-      width: 100%;
-      height: 100%;
-      display: flex;
-      justify-content: space-between;
-      .A4Lll {
-        margin-right: 80px;
-        width: 380px;
-        height: 100%;
-        pointer-events: none;
-        display: inline-block;
-        border-radius: 30px;
-        overflow: hidden;
-        img {
-          object-fit: cover !important;
-        }
-      }
-      .A4Lrr {
-        width: calc(100% - 460px);
-        height: 100%;
-        .A4Lrr1 {
-          display: flex;
-          padding-bottom: 15px;
-          border-bottom: 2px solid var(--themeColor2);
-          margin-bottom: 30px;
-          & > h1 {
-            color: var(--themeColor2);
-            font-weight: 700;
-            font-size: 34px;
-            margin-right: 20px;
-          }
-          & > p {
-            position: relative;
-            top: 18px;
-            color: #999;
-            font-size: 18px;
-          }
-        }
-        .A4Lrr2 {
-          display: flex;
-          align-items: center;
-          margin-bottom: 20px;
-          font-size: 16px;
-          & > img {
-            width: 26px;
-          }
-          & > span {
-            font-weight: 700;
-            color: var(--themeColor2);
-          }
-        }
-        .A4Lrr3 {
-          padding-right: 15px;
-          height: calc(100% - 235px);
-          overflow-y: auto;
-          p {
-            line-height: 30px;
-            font-size: 16px;
-            letter-spacing: 4px;
-          }
-        }
-      }
-    }
-  }
-}

+ 0 - 57
web/src/pages/A4expert/A4look/index.tsx

@@ -1,57 +0,0 @@
-import React from 'react'
-import styles from './index.module.scss'
-import { baseURL } from '@/utils/history'
-import { ZhuanObj } from '@/types'
-import LazyImg from '@/components/LazyImg'
-
-type Props = {
-  info: ZhuanObj
-  closeFu: () => void
-}
-
-function A4look({ info, closeFu }: Props) {
-  return (
-    <div id='LookGood' className={styles.A4look}>
-      {/* 关闭按钮 */}
-      <img onClick={closeFu} className='Lcolse' src={baseURL + 'goods/close.png'} alt='' />
-
-      <div className='A4Lmani'>
-        <div className='A4Lll'>
-          <LazyImg src={baseURL + info.lookSrc} />
-        </div>
-
-        <div className='A4Lrr'>
-          <div className='A4Lrr1'>
-            <h1>{info.name}</h1>
-            <p>{info.name2}</p>
-          </div>
-
-          <div className='A4Lrr2'>
-            <img src={baseURL + 'expert/li1.png'} alt='' />
-            <span>职称:</span>
-            {info.zhi || '(空)'}
-          </div>
-
-          <div className='A4Lrr2'>
-            <img src={baseURL + 'expert/li2.png'} alt='' />
-            <span>专长:</span>
-            {info.zhuan || '(空)'}
-          </div>
-
-          <div className='A4Lrr2'>
-            <img src={baseURL + 'expert/li3.png'} alt='' />
-            <span>简介:</span>
-          </div>
-
-          <div className='A4Lrr3 mySorrl'>
-            <div dangerouslySetInnerHTML={{ __html: info.txt || '(空)' }}></div>
-          </div>
-        </div>
-      </div>
-    </div>
-  )
-}
-
-const MemoA4look = React.memo(A4look)
-
-export default MemoA4look

+ 6 - 189
web/src/pages/A4expert/index.tsx

@@ -1,196 +1,13 @@
-import React, { useCallback, useEffect, useRef, useState } from 'react'
+import React from 'react'
 import styles from './index.module.scss'
-import { baseURL, myData } from '@/utils/history'
-import LeftTopLogo from '@/components/LeftTopLogo'
-import { SearchOutline } from 'antd-mobile-icons'
-import { Input } from 'antd-mobile'
-import classNames from 'classnames'
-import { ZhuanObj } from '@/types'
-import A4look from './A4look'
-import LazyImg from '@/components/LazyImg'
-
-function A4expert() {
-  const [txt, setTxt] = useState('')
-
-  const [topArr, setTopArr] = useState<string[]>([])
-
-  const [topAc, setTopAc] = useState('全部')
-
-  useEffect(() => {
-    const types = myData.expert.infoArr.map(v => v.type)
-    setTopArr(['全部', ...Array.from(new Set(types))])
-  }, [])
-
-  const [data, setData] = useState(myData.expert.infoArr)
-
-  const sroolRef = useRef<HTMLDivElement>(null)
-
-  const sroolRefFu = useCallback(() => {
-    if (sroolRef.current) {
-      sroolRef.current.scrollTo({ left: 0, behavior: 'smooth' })
-    }
-  }, [])
-
-  // 点击切换顶部
-  const cutTopFu = useCallback(
-    (val: string) => {
-      setTopAc(val)
-      setTxt('')
-      if (val === '全部') setData(myData.expert.infoArr)
-      else setData(myData.expert.infoArr.filter(v => v.type === val))
-      sroolRefFu()
-    },
-    [sroolRefFu]
-  )
-
-  // 点击搜索
-  const btnSearchFu = useCallback(() => {
-    const dataAll =
-      topAc === '全部' ? myData.expert.infoArr : myData.expert.infoArr.filter(v => v.type === topAc)
-
-    setData(
-      dataAll.filter(
-        v =>
-          v.name.includes(txt) ||
-          v.name2.includes(txt) ||
-          v.zhi.includes(txt) ||
-          v.zhuan.includes(txt)
-      )
-    )
-    sroolRefFu()
-  }, [sroolRefFu, topAc, txt])
-
-  // 滚轮
-  const mousemoveFu = useCallback((ev: any) => {
-    if (sroolRef.current) {
-      const nowMove = sroolRef.current.scrollLeft
-      // 滚轮
-      let num = 100
-      if (ev.deltaY < 0) num = -num
-      sroolRef.current.scrollLeft = nowMove + num
-    }
-  }, [])
-
-  // 点击左右箭头
-  const clickIncoFu = useCallback((flag: 1 | -1) => {
-    if (sroolRef.current) {
-      const numNow = sroolRef.current.scrollLeft
-      const moveNum = 1000 * flag
-      let resNum = numNow + moveNum
-      sroolRef.current.scrollTo({ left: resNum, behavior: 'smooth' })
-    }
-  }, [])
-
-  // 平时展示 和 鼠标移入的相同dom
-  const rowTongDom = useCallback((info: ZhuanObj) => {
-    return (
-      <>
-        <div
-          className='A4mRtitle'
-          style={{ backgroundImage: `url(${baseURL + 'expert/mjfc.png'})` }}
-        >
-          {info.name}
-        </div>
-        <div className='A4mRtitle2'>{info.name2}</div>
-        <div className='A4mRtxt'>{info.zhi}</div>
-      </>
-    )
-  }, [])
-
-  const [opInfo, setOpInfo] = useState({} as ZhuanObj)
-
+function AAAAA() {
   return (
-    <div
-      className={styles.A4expert}
-      style={{ backgroundImage: `url(${baseURL + myData.expert.bg})` }}
-    >
-      <LeftTopLogo />
-
-      <div className='A4top' hidden={!!opInfo.name}>
-        <img className='A4topll' src={baseURL + 'expert/topBg.png'} alt='' />
-        <div className='A4toprr'>
-          类型:&nbsp;&nbsp;
-          {topArr.map(v => (
-            <div
-              onClick={() => cutTopFu(v)}
-              className={classNames('A4trRow', topAc === v ? 'A4trRowAc' : '')}
-              key={v}
-            >
-              {v}
-            </div>
-          ))}
-          <div className='A4trInp'>
-            <Input
-              placeholder='请输入搜索内容'
-              value={txt}
-              onChange={val => setTxt(val.replace(/\s+/g, ''))}
-              onEnterPress={btnSearchFu}
-            />
-            <div className='A4trInpInco' onClick={btnSearchFu}>
-              <SearchOutline />
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div
-        hidden={!!opInfo.name}
-        className='A4main mySorrlNo'
-        ref={sroolRef}
-        onWheel={e => mousemoveFu(e)}
-      >
-        {data.length ? (
-          <div className='A4mBox' style={{ width: 310 * data.length + 'px' }}>
-            {data.map((v, i) => (
-              <div
-                className={classNames('A4mRow', i % 2 === 0 ? 'A4mRowOu' : '')}
-                key={v.name + v.type}
-              >
-                <div>
-                  <div className='A4mRowShow'>
-                    <LazyImg src={baseURL + v.coveImg} />
-                    {rowTongDom(v)}
-                  </div>
-
-                  <div
-                    onClick={() => setOpInfo(v)}
-                    className='A4mRowMoveShow'
-                    style={{ backgroundImage: `url(${baseURL + 'expert/moveBg.png'})` }}
-                  >
-                    {rowTongDom(v)}
-
-                    {/* 底部箭头 */}
-                    <img
-                      className='A4mRowMoveShowInco'
-                      src={baseURL + 'expert/moveInco.png'}
-                      alt=''
-                    />
-                  </div>
-                </div>
-              </div>
-            ))}
-          </div>
-        ) : (
-          <div className='A4mNull'>
-            <img src={baseURL + 'goods/null.png'} alt='' />
-            <p>暂时没有数据</p>
-            <p>请试一下其他关键字</p>
-          </div>
-        )}
-
-        {/* 左右箭头 */}
-        <div className='A4mIcon' hidden={data.length <= 4}>
-          <img onClick={() => clickIncoFu(-1)} src={baseURL + 'expert/left.png'} alt='' />
-          <img onClick={() => clickIncoFu(1)} src={baseURL + 'expert/right.png'} alt='' />
-        </div>
-      </div>
-
-      {/* 查看详情 */}
-      {opInfo.name ? <A4look info={opInfo} closeFu={() => setOpInfo({} as ZhuanObj)} /> : null}
+    <div className={styles.AAAAA}>
+      <h1>AAAAA</h1>
     </div>
   )
 }
 
-const MemoA4expert = React.memo(A4expert)
+const MemoAAAAA = React.memo(AAAAA)
 
-export default MemoA4expert
+export default MemoAAAAA

+ 8 - 0
web/src/store/action/all.ts

@@ -0,0 +1,8 @@
+import http from '@/utils/http'
+
+/**
+ * 获取浏览量
+ */
+export const getvisit = () => {
+  return http.get('show/visit/add')
+}

+ 9 - 1
web/src/store/reducer/layout.ts

@@ -8,7 +8,11 @@ const initState = {
     type: 'info',
     duration: 3
   } as MessageType,
-
+  // 所有图片点击预览查看大图
+  lookBigImg: {
+    url: '',
+    show: false
+  },
   // 浏览量
   visitSum: 0
 }
@@ -17,6 +21,7 @@ const initState = {
 type LayoutActionType =
   | { type: 'layout/message'; payload: MessageType }
   | { type: 'layout/visitSum'; payload: number }
+  | { type: 'layout/lookBigImg'; payload: { url: string; show: boolean } }
 
 // 频道 reducer
 export default function layoutReducer(state = initState, action: LayoutActionType) {
@@ -27,6 +32,9 @@ export default function layoutReducer(state = initState, action: LayoutActionTyp
     // 浏览量
     case 'layout/visitSum':
       return { ...state, visitSum: action.payload }
+    // 所有图片点击预览查看大图
+    case 'layout/lookBigImg':
+      return { ...state, lookBigImg: action.payload }
     default:
       return state
   }

+ 0 - 50
web/src/types/api/layot.d.ts

@@ -1,50 +0,0 @@
-export type MyDataType = {
-  home: {
-    bg: string
-    logo: string
-    yan: string
-    txt: string
-    arr: {
-      id: number
-      name: string
-      path: string
-    }[]
-  }
-  goods: {
-    bg: string
-    img: GoodsInfo
-    model: GoodsInfo
-    video: GoodsInfo
-  }
-  expert: {
-    bg: string
-    infoArr: ZhuanObj[]
-  }
-}
-
-// 馆藏
-export type GoodsRow = {
-  type: string
-  name: string
-  coveImg: string
-  lookSrc: string
-}
-
-export type GoodsInfo = {
-  name: string
-  name2: string
-  rowArr: GoodsRow[]
-}
-
-// 专家
-
-export type ZhuanObj = {
-  type: string
-  name: string
-  name2: string
-  coveImg: string
-  lookSrc: string
-  zhi: string
-  zhuan: string
-  txt: string
-}

+ 0 - 6
web/src/types/declaration.d.ts

@@ -6,9 +6,3 @@ declare module '*.gif'
 declare module '*.svg'
 declare module 'js-export-excel'
 declare module 'braft-utils'
-
-// 一些在pubilc/index里面直接定义的数据类型声明
-declare const baseUrlLoc: string
-declare const baseUrlAtl: string
-declare const myBaseUrl: string
-declare const myDataTemp: any

+ 13 - 0
web/src/utils/domShow.ts

@@ -0,0 +1,13 @@
+// 加载和上传的盒子的显示隐藏
+export const domShowFu = (ele: string, val: boolean) => {
+  const dom: HTMLDivElement = document.querySelector(ele)!
+  if (dom) {
+    if (val) {
+      dom.style.opacity = '1'
+      dom.style.pointerEvents = 'auto'
+    } else {
+      dom.style.opacity = '0'
+      dom.style.pointerEvents = 'none'
+    }
+  }
+}

+ 0 - 12
web/src/utils/history.ts

@@ -1,4 +1,3 @@
-import { MyDataType } from '@/types'
 import { createHashHistory } from 'history'
 const history = createHashHistory()
 export default history
@@ -13,14 +12,3 @@ export const isMobileFu = () => {
     return true
   } else return false
 }
-
-// 当前环境是 本地环境 还是 服务器环境
-export const isLoc = process.env.NODE_ENV === 'development'
-
-export const baseURL = isLoc ? baseUrlLoc : baseUrlAtl
-
-// 所有数据
-export const myData: MyDataType = myDataTemp
-
-// 场景基地址
-export const sceneBaseUrl = myBaseUrl

+ 97 - 10
web/src/utils/http.ts

@@ -1,11 +1,98 @@
-export const httpGet = (url: string, fu: (res: any) => void) => {
-  fetch(url)
-    .then(response => {
-      if (!response.ok) {
-        throw new Error('Network response was not ok')
-      }
-      return response.json()
-    })
-    .then(data => fu(data))
-    .catch(error => console.error('Fetch error:', error))
+import axios from 'axios'
+import { MessageFu } from './message'
+import { Toast } from 'antd-mobile'
+import { domShowFu } from './domShow'
+import { isMobileFu } from './history'
+
+const envFlag = process.env.NODE_ENV === 'development'
+
+const baseUrlTemp = 'https://sit-zhongliuyiyuan.4dage.com' // 测试环境
+// const baseUrlTemp = 'http://192.168.20.13:8079' // 线下环境
+
+const baseFlag = baseUrlTemp.includes('https://')
+
+// 请求基地址
+export const baseURL = envFlag ? `${baseUrlTemp}${baseFlag ? '' : '/api/'}` : ''
+
+// 处理  类型“AxiosResponse<any, any>”上不存在属性“code”
+declare module 'axios' {
+  interface AxiosResponse {
+    code: number
+    // 这里追加你的参数
+  }
 }
+
+// 创建 axios 实例
+const http = axios.create({
+  baseURL: `${baseURL}${baseFlag ? '/api/' : ''}`,
+  timeout: 10000
+})
+
+let axajInd = 0
+
+// 请求拦截器
+http.interceptors.request.use(
+  function (config: any) {
+    // 发请求前打开加载提示
+    domShowFu('#AsyncSpinLoding', true)
+
+    axajInd++
+    return config
+  },
+  function (err) {
+    return Promise.reject(err)
+  }
+)
+
+let timeId = -1
+
+// 响应拦截器
+http.interceptors.response.use(
+  function (response) {
+    // 请求回来的关闭加载提示
+    axajInd--
+    if (axajInd === 0) {
+      domShowFu('#AsyncSpinLoding', false)
+    }
+    if (response.data.code === 0) {
+      // MessageFu.success(response.data.msg);
+    } else {
+      isMobileFu() && response.data.msg
+        ? Toast.show({
+            icon: 'fail',
+            content: response.data.msg
+          })
+        : MessageFu.warning(response.data.msg)
+    }
+
+    return response.data
+  },
+  async function (err) {
+    clearTimeout(timeId)
+    timeId = window.setTimeout(() => {
+      axajInd = 0
+      domShowFu('#AsyncSpinLoding', false)
+      // 如果因为网络原因,response没有,给提示消息
+      if (!err.response) {
+        isMobileFu()
+          ? Toast.show({
+              icon: 'fail',
+              content: '网络繁忙,请稍后重试!'
+            })
+          : MessageFu.error('网络繁忙,请稍后重试!')
+      } else {
+        isMobileFu()
+          ? Toast.show({
+              icon: 'fail',
+              content: '响应错误,请联系管理员!'
+            })
+          : MessageFu.error('响应错误,请联系管理员!')
+      }
+    }, 100)
+
+    return Promise.reject(err)
+  }
+)
+
+// 导出 axios 实例
+export default http

BIN
web静态资源/staticData/expert/bg.jpg


BIN
web静态资源/staticData/expert/left.png


BIN
web静态资源/staticData/expert/li1.png


BIN
web静态资源/staticData/expert/li2.png


BIN
web静态资源/staticData/expert/li3.png


BIN
web静态资源/staticData/expert/mjfc.png


BIN
web静态资源/staticData/expert/moveBg.png


BIN
web静态资源/staticData/expert/moveInco.png


BIN
web静态资源/staticData/expert/right.png


BIN
web静态资源/staticData/expert/topBg.png


BIN
web静态资源/staticData/goods/bg.jpg


BIN
web静态资源/staticData/goods/close.png


BIN
web静态资源/staticData/goods/iconS.png


BIN
web静态资源/staticData/goods/model/1.4dage


BIN
web静态资源/staticData/goods/model/2.4dage


BIN
web静态资源/staticData/goods/null.png


BIN
web静态资源/staticData/goods/video/1.mp4


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 6352
web静态资源/staticData/modelLoding/4dage.js


+ 0 - 33
web静态资源/staticData/modelLoding/model.html

@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <script src="./4dage.js"></script>
-    <title>Document</title>
-    <style>
-      html {
-        overflow: hidden;
-      }
-    </style>
-  </head>
-
-  <body>
-    <div id="ui"></div>
-    <script>
-      let src = getQueryVariable('u')
-    
-
-      // fdage.embed( number, {
-      fdage.embed(`../${src}`, {
-        transparentBackground: true,
-        width: 800,
-        height: 600,
-        autoStart: true,
-        fullFrame: true,
-        pagePreset: false
-      })
-    </script>
-  </body>
-</html>