shaogen1995 пре 10 месеци
родитељ
комит
888a6671bd

BIN
public/favicon.ico


+ 2 - 5
public/index.html

@@ -6,10 +6,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="theme-color" content="#000000" />
     <script src="./baseUrl.js"></script>
-    <meta
-      name="description"
-      content="Web site created using create-react-app"
-    />
+    <meta name="description" content="Web site created using create-react-app" />
     <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
     <!--
       manifest.json provides metadata used when your web app is installed on a
@@ -25,7 +22,7 @@
       work correctly both with client-side routing and a non-root public URL.
       Learn how to configure a non-root public URL by running `npm run build`.
     -->
-    <title>华东野战军博物馆馆藏系统</title>
+    <title>华东野战军总部旧址暨新四军军部旧址纪念馆</title>
   </head>
   <body>
     <noscript>You need to enable JavaScript to run this app.</noscript>

BIN
src/assets/img/login/LOGO.png


BIN
src/assets/img/login/bg.jpg


BIN
src/assets/img/login/user_1.png


+ 145 - 151
src/pages/Home/index.tsx

@@ -1,137 +1,133 @@
-import { getTokenInfo } from "@/utils/storage";
-import { useCallback, useEffect, useMemo, useRef, useState } from "react";
-import styles from "./index.module.scss";
-import dayjs from "dayjs";
-import { Button } from "antd";
-import classNames from "classnames";
-import * as echarts from "echarts/core";
-import { TooltipComponent, GridComponent } from "echarts/components";
-import { BarChart } from "echarts/charts";
-import { CanvasRenderer } from "echarts/renderers";
-import history from "@/utils/history";
-import { getStores2API1 } from "@/store/action/stores1";
-import { getHomeNumsAPI } from "@/store/action/login";
-import { useSelector } from "react-redux";
-import { RootState } from "@/store";
-import { MessageFu } from "@/utils/message";
+import { getTokenInfo } from '@/utils/storage'
+import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
+import styles from './index.module.scss'
+import dayjs from 'dayjs'
+import { Button } from 'antd'
+import classNames from 'classnames'
+import * as echarts from 'echarts/core'
+import { TooltipComponent, GridComponent } from 'echarts/components'
+import { BarChart } from 'echarts/charts'
+import { CanvasRenderer } from 'echarts/renderers'
+import history from '@/utils/history'
+import { getStores2API1 } from '@/store/action/stores1'
+import { getHomeNumsAPI } from '@/store/action/login'
+import { useSelector } from 'react-redux'
+import { RootState } from '@/store'
+import { MessageFu } from '@/utils/message'
 
-echarts.use([TooltipComponent, GridComponent, BarChart, CanvasRenderer]);
+echarts.use([TooltipComponent, GridComponent, BarChart, CanvasRenderer])
 
 export default function Home() {
   // 顶部右侧数据
   const tabListTemp = useMemo(() => {
     return [
-      { id: 1, done: false, path: "/object", name: "藏品登记" },
-      { id: 2, done: false, path: "/object/2", name: "藏品总账" },
-      { id: 3, done: false, path: "/object/3", name: "入库管理" },
-      { id: 4, done: false, path: "/object/4", name: "出库管理" },
-      { id: 5, done: false, path: "/object/6", name: "藏品注销" },
-    ];
-  }, []);
+      { id: 1, done: false, path: '/object', name: '藏品登记' },
+      { id: 2, done: false, path: '/object/2', name: '藏品总账' },
+      { id: 3, done: false, path: '/object/3', name: '入库管理' },
+      { id: 4, done: false, path: '/object/4', name: '出库管理' },
+      { id: 5, done: false, path: '/object/6', name: '藏品注销' }
+    ]
+  }, [])
   // 右下方的数据
   const tempDone = useMemo(() => {
     return [
-      { id: 1, done: false, path: "/object", num: 0, name: "藏品登记" },
-      { id: 2, done: false, path: "/object/3", num: 0, name: "入库管理" },
-      { id: 3, done: false, path: "/object/4", num: 0, name: "出库管理" },
-      { id: 4, done: false, path: "/object/5", num: 0, name: "藏品修改" },
-      { id: 5, done: false, path: "/object/6", num: 0, name: "藏品注销" },
-      { id: 6, done: false, path: "/stores/3", num: 0, name: "藏品移库" },
-    ];
-  }, []);
+      { id: 1, done: false, path: '/object', num: 0, name: '藏品登记' },
+      { id: 2, done: false, path: '/object/3', num: 0, name: '入库管理' },
+      { id: 3, done: false, path: '/object/4', num: 0, name: '出库管理' },
+      { id: 4, done: false, path: '/object/5', num: 0, name: '藏品修改' },
+      { id: 5, done: false, path: '/object/6', num: 0, name: '藏品注销' },
+      { id: 6, done: false, path: '/stores/3', num: 0, name: '藏品移库' }
+    ]
+  }, [])
 
-  const [tabList, setTabList] = useState(tabListTemp);
-  const powerInfo = useSelector(
-    (state: RootState) => state.loginStore.authPageArr
-  );
+  const [tabList, setTabList] = useState(tabListTemp)
+  const powerInfo = useSelector((state: RootState) => state.loginStore.authPageArr)
 
   useEffect(() => {
     powerInfo.forEach((v: any) => {
-      if (v.id === 100) tabListTemp[0].done = tempDone[0].done = true;
-      if (v.id === 200) tabListTemp[1].done = true;
-      if (v.id === 300) tabListTemp[2].done = tempDone[1].done = true;
-      if (v.id === 400) tabListTemp[3].done = tempDone[2].done = true;
-      if (v.id === 500) tempDone[3].done = true;
-      if (v.id === 600) tabListTemp[4].done = tempDone[4].done = true;
-      if (v.id === 800) tempDone[5].done = true;
-    });
+      if (v.id === 100) tabListTemp[0].done = tempDone[0].done = true
+      if (v.id === 200) tabListTemp[1].done = true
+      if (v.id === 300) tabListTemp[2].done = tempDone[1].done = true
+      if (v.id === 400) tabListTemp[3].done = tempDone[2].done = true
+      if (v.id === 500) tempDone[3].done = true
+      if (v.id === 600) tabListTemp[4].done = tempDone[4].done = true
+      if (v.id === 800) tempDone[5].done = true
+    })
 
     window.setTimeout(() => {
-      setTabList(tabListTemp);
-    }, 100);
-  }, [powerInfo, tabListTemp, tempDone]);
+      setTabList(tabListTemp)
+    }, 100)
+  }, [powerInfo, tabListTemp, tempDone])
 
   // 实时时间
-  const [nowTime, setNowTime] = useState(
-    dayjs(Date.now()).format("YYYY年MM月DD HH:mm")
-  );
+  const [nowTime, setNowTime] = useState(dayjs(Date.now()).format('YYYY年MM月DD HH:mm'))
 
   // 点击头部右侧和下面右侧
   const toPageFu = useCallback((path: string, flag: boolean) => {
-    if (flag) return MessageFu.warning("没有该模块权限!");
-    history.push(path);
-  }, []);
+    if (flag) return MessageFu.warning('没有该模块权限!')
+    history.push(path)
+  }, [])
 
-  const timeRef = useRef(-1);
+  const timeRef = useRef(-1)
   useEffect(() => {
     timeRef.current = window.setInterval(() => {
       setNowTime(() => {
-        return dayjs(Date.now()).format("YYYY年MM月DD HH:mm");
-      });
-    }, 1000);
+        return dayjs(Date.now()).format('YYYY年MM月DD HH:mm')
+      })
+    }, 1000)
     return () => {
-      clearInterval(timeRef.current);
-    };
-  }, []);
+      clearInterval(timeRef.current)
+    }
+  }, [])
 
   const userInfo = useMemo(() => {
-    return getTokenInfo().user;
-  }, []);
+    return getTokenInfo().user
+  }, [])
 
   // -----------图表
   const echartsFu = useCallback(async () => {
-    const res = await getStores2API1();
-    let list = res.data;
+    const res = await getStores2API1()
+    let list = res.data
 
     if (list && list.length && list.length > 7) {
-      list = list.slice(0, 7);
+      list = list.slice(0, 7)
     } else {
-      const num = 7 - list.length;
+      const num = 7 - list.length
       for (let i = 0; i < num; i++) {
-        if (i % 2 !== 0) list.unshift({ groupKey: "", count: null });
-        else list.push({ groupKey: "", count: null });
+        if (i % 2 !== 0) list.unshift({ groupKey: '', count: null })
+        else list.push({ groupKey: '', count: null })
       }
     }
-    const chartDom: any = document.querySelector(".chart");
-    const myChart = echarts.init(chartDom);
+    const chartDom: any = document.querySelector('.chart')
+    const myChart = echarts.init(chartDom)
     const option = {
-      color: ["#9F1927"],
+      color: ['#9F1927'],
       tooltip: {
-        trigger: "axis",
+        trigger: 'axis',
         axisPointer: {
-          type: "shadow",
-        },
+          type: 'shadow'
+        }
       },
       grid: {
-        left: "3%",
-        right: "4%",
-        bottom: "3%",
-        containLabel: true,
+        left: '3%',
+        right: '4%',
+        bottom: '3%',
+        containLabel: true
       },
       xAxis: [
         {
-          type: "category",
+          type: 'category',
           data: list.map((v: any) => v.groupKey),
           axisTick: {
             show: false,
-            alignWithLabel: false,
+            alignWithLabel: false
           },
           axisLabel: {
             interval: 0, //强制文字产生间隔
             textStyle: {
-              color: "#000", //坐标值得具体的颜色
-              fontSize: 12,
-            },
+              color: '#000', //坐标值得具体的颜色
+              fontSize: 12
+            }
           },
           axisLine: {
             //Y轴坐标轴
@@ -139,105 +135,105 @@ export default function Home() {
             // 坐标的颜色和宽度
             lineStyle: {
               width: 2,
-              color: "#9F1927",
-            },
-          },
-        },
+              color: '#9F1927'
+            }
+          }
+        }
       ],
       yAxis: [
         {
-          type: "value",
+          type: 'value',
           axisLabel: {
             textStyle: {
-              color: "#000", //坐标值得具体的颜色
-            },
+              color: '#000' //坐标值得具体的颜色
+            }
           },
           axisLine: {
             //Y轴坐标轴
             show: true,
             lineStyle: {
               width: 2,
-              color: "#9F1927",
-            },
+              color: '#9F1927'
+            }
           },
           // 隐藏背景坐标线段
           splitLine: {
-            show: false,
-          },
-        },
+            show: false
+          }
+        }
       ],
       series: [
         {
-          name: "",
-          type: "bar",
-          barMaxwidth: "50%",
+          name: '',
+          type: 'bar',
+          barMaxwidth: '50%',
           data: list.map((v: any) => v.count),
           itemStyle: {
             normal: {
               color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: "rgba(159, 25, 39, .5)" }, //渐变头部色
-                { offset: 1, color: "rgba(159, 25, 39, 1)" },
+                { offset: 0, color: 'rgba(159, 25, 39, .5)' }, //渐变头部色
+                { offset: 1, color: 'rgba(159, 25, 39, 1)' }
               ]),
 
               barBorderRadius: 2,
               label: {
                 show: true, //开启显示
-                position: "top", //在上方显示
+                position: 'top', //在上方显示
                 textStyle: {
                   //数值样式
-                  color: "#9F1927",
-                  fontSize: 16,
-                },
-              },
-            },
-          },
-        },
-      ],
-    };
-    option && myChart.setOption(option);
-  }, []);
+                  color: '#9F1927',
+                  fontSize: 16
+                }
+              }
+            }
+          }
+        }
+      ]
+    }
+    option && myChart.setOption(option)
+  }, [])
 
   // 代办提醒
-  const [doneList, setDoneList] = useState(tempDone);
+  const [doneList, setDoneList] = useState(tempDone)
 
   const doneNumsAPIFu = useCallback(async () => {
-    const res = await getHomeNumsAPI();
-    const data = [...tempDone];
+    const res = await getHomeNumsAPI()
+    const data = [...tempDone]
     res.data.forEach((v: any) => {
-      if (v.groupKey === "register") data[0].num = v.count;
-      else if (v.groupKey === "in") data[1].num = v.count;
-      else if (v.groupKey === "out") data[2].num = v.count;
-      else if (v.groupKey === "edit") data[3].num = v.count;
-      else if (v.groupKey === "cancel") data[4].num = v.count;
-      else if (v.groupKey === "move") data[5].num = v.count;
-    });
-    setDoneList(data);
-  }, [tempDone]);
+      if (v.groupKey === 'register') data[0].num = v.count
+      else if (v.groupKey === 'in') data[1].num = v.count
+      else if (v.groupKey === 'out') data[2].num = v.count
+      else if (v.groupKey === 'edit') data[3].num = v.count
+      else if (v.groupKey === 'cancel') data[4].num = v.count
+      else if (v.groupKey === 'move') data[5].num = v.count
+    })
+    setDoneList(data)
+  }, [tempDone])
 
   useEffect(() => {
-    echartsFu();
-    doneNumsAPIFu();
-  }, [doneNumsAPIFu, echartsFu]);
+    echartsFu()
+    doneNumsAPIFu()
+  }, [doneNumsAPIFu, echartsFu])
 
   return (
     <div className={styles.Home}>
-      <div className="homeMain">
+      <div className='homeMain'>
         {/* 顶部页面 */}
-        <div className="title">
-          <div className="titleL">
+        <div className='title'>
+          <div className='titleL'>
             <h3>
               欢迎 {userInfo.realName} 进入
               <br />
               <br />
-              华东野战军博物馆馆藏系统
+              华东野战军总部旧址暨新四军军部旧址纪念馆
             </h3>
             <p>{nowTime}</p>
           </div>
-          <div className="titleR">
+          <div className='titleR'>
             {tabList.map((v, i) => (
               <div
                 onClick={() => toPageFu(v.path, !v.done)}
-                className={classNames("row", !v.done ? "noAuth" : "")}
+                className={classNames('row', !v.done ? 'noAuth' : '')}
                 key={v.id}
               >
                 <div className={`bac${v.id}`}></div>
@@ -247,37 +243,35 @@ export default function Home() {
           </div>
         </div>
         {/* 下面数据 */}
-        <div className="flooBox">
-          <div className="flooBoxL">
-            <div className="flooTit">
+        <div className='flooBox'>
+          <div className='flooBoxL'>
+            <div className='flooTit'>
               <div>藏馆统计</div>
-              <Button onClick={() => history.push("/stores/2")}>
-                查看更多
-              </Button>
+              <Button onClick={() => history.push('/stores/2')}>查看更多</Button>
             </div>
             {/* 图表 */}
-            <div className="chartBox">
-              <div className="chartTit">(件)</div>
-              <div className="chart"></div>
+            <div className='chartBox'>
+              <div className='chartTit'>(件)</div>
+              <div className='chart'></div>
             </div>
           </div>
-          <div className="flooBoxR">
-            <div className="flooTit">
+          <div className='flooBoxR'>
+            <div className='flooTit'>
               <div>审核提醒</div>
             </div>
-            <div className="doneBox">
+            <div className='doneBox'>
               {doneList.map((v, i) => (
                 <div
                   onClick={() => toPageFu(v.path, !v.done)}
                   className={classNames(
-                    "doneRow",
-                    i >= 4 ? "noneRow" : "",
-                    !v.done ? "noAuth" : ""
+                    'doneRow',
+                    i >= 4 ? 'noneRow' : '',
+                    !v.done ? 'noAuth' : ''
                   )}
                   key={v.id}
                 >
-                  <div className="doneRow_tit">{v.name}</div>
-                  <div className="doneRow_txt">
+                  <div className='doneRow_tit'>{v.name}</div>
+                  <div className='doneRow_txt'>
                     共有&emsp;<span>{v.num}</span>&emsp;待审核事项
                   </div>
                 </div>
@@ -287,5 +281,5 @@ export default function Home() {
         </div>
       </div>
     </div>
-  );
+  )
 }

+ 27 - 26
src/pages/Layout/index.module.scss

@@ -7,6 +7,7 @@
       width: 100%;
       height: 90px;
       background-color: var(--themeColor);
+      // background-color: rgb(75, 40, 40);
 
       .main {
         width: 1580px;
@@ -16,12 +17,12 @@
         align-items: center;
         justify-content: space-between;
 
-        &>div {
+        & > div {
           height: 100%;
         }
 
         .logo {
-          height: 35px;
+          height: 100%;
           width: 256px;
           background-image: url('../../assets/img/login/LOGO.png');
           background-size: 100% 100%;
@@ -41,26 +42,26 @@
             height: 100%;
 
             &:hover {
-              color: #D3B453;
+              color: #d3b453;
             }
           }
 
           .active {
             pointer-events: none;
-            color: #D3B453;
+            color: #d3b453;
             position: relative;
 
-            &::before {
-              content: '';
-              position: absolute;
-              bottom: 0;
-              left: 50%;
-              transform: translateX(-50%);
-              width: 56px;
-              height: 24px;
-              background-image: url('../../assets/img/login/flower.png');
-              background-size: 56px 24px;
-            }
+            // &::before {
+            //   content: '';
+            //   position: absolute;
+            //   bottom: 0;
+            //   left: 50%;
+            //   transform: translateX(-50%);
+            //   width: 56px;
+            //   height: 24px;
+            //   background-image: url('../../assets/img/login/flower.png');
+            //   background-size: 56px 24px;
+            // }
           }
         }
 
@@ -79,14 +80,14 @@
             width: 115px;
             opacity: 0;
             pointer-events: none;
-            transition: bottom .3s;
+            transition: bottom 0.3s;
             height: 100px;
             background-color: var(--themeColor);
             position: absolute;
             left: 0;
             bottom: -80px;
 
-            &>span {
+            & > span {
               display: block;
               width: 100%;
               height: 50%;
@@ -94,7 +95,7 @@
               text-align: center;
 
               &:hover {
-                color: #D3B453;
+                color: #d3b453;
               }
             }
           }
@@ -116,7 +117,7 @@
       background-image: url('../../assets/img/login/homeBg.jpg');
       background-size: cover;
 
-      &>div {
+      & > div {
         width: 1600px;
         margin: 0 auto;
         padding-top: 35px;
@@ -135,7 +136,7 @@
           height: 100%;
           float: right;
 
-          &>div {
+          & > div {
             width: 100%;
             height: 100%;
           }
@@ -163,14 +164,14 @@
               padding: 0 5px;
               display: flex;
 
-              &>div {
+              & > div {
                 cursor: pointer;
                 height: 100%;
                 line-height: 58px;
                 padding: 0 15px;
                 font-size: 16px;
                 margin-right: 50px;
-                &:hover{
+                &:hover {
                   color: var(--themeColor);
                 }
               }
@@ -198,17 +199,17 @@
               width: calc(100% - 60px);
               margin: 0 auto;
               height: calc(100% - 80px);
-              .tableSelectBox{
+              .tableSelectBox {
                 margin-bottom: 20px;
                 width: 100%;
                 height: 40px;
                 display: flex;
                 align-items: center;
-                .row{
+                .row {
                   margin-right: 30px;
                 }
               }
-              .tableMain{
+              .tableMain {
                 width: 100%;
                 height: calc(100% - 60px);
               }
@@ -218,4 +219,4 @@
       }
     }
   }
-}
+}

+ 6 - 7
src/pages/Login/index.module.scss

@@ -9,20 +9,20 @@
     .main {
       padding-top: 20px;
       position: absolute;
-      top: 50%;
+      top: 55%;
       transform: translateY(-50%);
       width: 100%;
-      height: 380px;
-      background-color: rgba(255, 255, 255, .8);
+      height: 280px;
+      background-color: rgba(255, 255, 255, 0.4);
       backdrop-filter: blur(4px);
       text-align: center;
 
-      &>h1 {
+      & > h1 {
         font-size: 44px;
         color: var(--themeColor);
       }
 
-      &>p {
+      & > p {
         margin: 10px 0 40px;
         font-size: 18px;
       }
@@ -62,7 +62,6 @@
           -webkit-box-shadow: 0 0 0px 1000px transparent inset !important; //填充阴影,可以用来遮住背景色
           background-color: transparent;
           transition: background-color 50000s ease-in-out 0s; //背景色透明  生效时长  过渡效果  启用时延迟的时间
-
         }
 
         .ant-input-affix-wrapper {
@@ -88,4 +87,4 @@
       }
     }
   }
-}
+}

+ 41 - 40
src/pages/Login/index.tsx

@@ -1,82 +1,83 @@
-import styles from "./index.module.scss";
+import styles from './index.module.scss'
 
-import { Input, Button } from "antd";
-import { UserOutlined, LockOutlined } from "@ant-design/icons";
-import { useEffect, useState } from "react";
-import { Base64 } from "js-base64";
-import encodeStr from "@/utils/pass";
-import { userLoginAPI } from "@/store/action/login";
-import { setTokenInfo } from "@/utils/storage";
-import history from "@/utils/history";
-import { useDispatch } from "react-redux";
-import { MessageFu } from "@/utils/message";
+import { Input, Button } from 'antd'
+import { UserOutlined, LockOutlined } from '@ant-design/icons'
+import { useEffect, useState } from 'react'
+import { Base64 } from 'js-base64'
+import encodeStr from '@/utils/pass'
+import { userLoginAPI } from '@/store/action/login'
+import { setTokenInfo } from '@/utils/storage'
+import history from '@/utils/history'
+import { useDispatch } from 'react-redux'
+import { MessageFu } from '@/utils/message'
 
 export default function Login() {
-  const dispatch = useDispatch();
+  const dispatch = useDispatch()
 
   // 进登录页面把权限的信息初始化,防止登录成功之后进到首页,数据渲染问题
   useEffect(() => {
-    dispatch({ type: "login/setAuthPageArr", payload: [] });
-  }, [dispatch]);
+    dispatch({ type: 'login/setAuthPageArr', payload: [] })
+  }, [dispatch])
 
   // 账号密码
-  const [userName, setUserName] = useState("");
-  const [passWord, setPassWord] = useState("");
+  const [userName, setUserName] = useState('')
+  const [passWord, setPassWord] = useState('')
 
   // 键盘按下回车事件
   const keyUpEntFu = (e: React.KeyboardEvent<HTMLInputElement>) => {
-    if (e.key === "Enter") loginClickFu();
-  };
+    if (e.key === 'Enter') loginClickFu()
+  }
   // 点击登录
   const loginClickFu = async () => {
     // 非空判断
-    if (userName === "") return MessageFu.warning("请填写用户账号!");
-    else if (passWord === "") return MessageFu.warning("请填写登录密码!");
+    if (userName === '') return MessageFu.warning('请填写用户账号!')
+    else if (passWord === '') return MessageFu.warning('请填写登录密码!')
     const obj = {
       userName,
-      passWord: encodeStr(Base64.encode(passWord)),
-    };
-    const res: any = await userLoginAPI(obj);
+      passWord: encodeStr(Base64.encode(passWord))
+    }
+    const res: any = await userLoginAPI(obj)
     if (res.code === 0) {
-      MessageFu.success("登录成功");
+      MessageFu.success('登录成功')
       // 用户信息存到本地
-      setTokenInfo(res.data);
-      history.push("/");
+      setTokenInfo(res.data)
+      history.push('/')
     }
-  };
+  }
 
   return (
     <div className={styles.Login}>
-      <div className="main">
-        <h1>华东野战军博物馆馆藏系统</h1>
-        <p>LESHAN DAFO MUSEUMCOLLECTION MANAGEMENT SYSTEM</p>
+      <div className='main'>
+        {/* <h1>华东野战军总部旧址暨新四军军部旧址纪念馆</h1> */}
+        {/* <p>LESHAN DAFO MUSEUMCOLLECTION MANAGEMENT SYSTEM</p> */}
+        <p> </p>
         {/* 账号密码输入框 */}
-        <div className="inputBox">
+        <div className='inputBox'>
           <Input
-            onKeyUp={(e) => keyUpEntFu(e)}
+            onKeyUp={e => keyUpEntFu(e)}
             value={userName}
-            onChange={(e) => setUserName(e.target.value.trim())}
+            onChange={e => setUserName(e.target.value.trim())}
             prefix={<UserOutlined />}
-            placeholder="请输入用户名称"
+            placeholder='请输入用户名称'
             maxLength={15}
           />
           <Input.Password
-            onKeyUp={(e) => keyUpEntFu(e)}
+            onKeyUp={e => keyUpEntFu(e)}
             value={passWord}
-            onChange={(e) => setPassWord(e.target.value.trim())}
+            onChange={e => setPassWord(e.target.value.trim())}
             prefix={<LockOutlined />}
-            placeholder="请输入登录密码"
+            placeholder='请输入登录密码'
             maxLength={15}
           />
         </div>
 
         {/* 登录按钮 */}
-        <div className="loginBtn">
-          <Button type="primary" size="large" onClick={loginClickFu}>
+        <div className='loginBtn'>
+          <Button type='primary' size='large' onClick={loginClickFu}>
             登 录
           </Button>
         </div>
       </div>
     </div>
-  );
+  )
 }