Browse Source

Merge branch 'v3' of ssh://94.191.59.107:10222/houwenfeng/cloudfile-ui into v3

“yueshang” 2 years ago
parent
commit
a69c6d58f5

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 若依管理系统
+VITE_APP_TITLE = 文档管理系统
 
 # 开发环境配置
 VITE_APP_ENV = 'development'

+ 1 - 1
index.html

@@ -3,7 +3,7 @@
 
 <head>
   <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
   <meta name="renderer" content="webkit">
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
   <link rel="icon" href="/favicon.ico">

+ 12 - 0
src/api/myfile/myfile.js

@@ -0,0 +1,12 @@
+import request from "../../../src/utils/request"
+// 查询文档目录管理列表
+function get(data) {
+    return request({
+        url: "/biz/dir/list",
+        method: "get",
+        params: data
+    })
+}
+export default {
+    get,
+}

BIN
src/assets/fonts/Inter-Black-3.otf


BIN
src/assets/fonts/Inter-Bold-4.otf


BIN
src/assets/fonts/Inter-ExtraBold-5.otf


BIN
src/assets/fonts/Inter-ExtraLight-6.otf


BIN
src/assets/fonts/Inter-Light-7.otf


BIN
src/assets/fonts/Inter-Medium-8.otf


BIN
src/assets/fonts/Inter-Regular-9.otf


BIN
src/assets/fonts/Inter-SemiBold-10.otf


BIN
src/assets/fonts/Inter-Thin-11.otf


BIN
src/assets/fonts/Inter-var-2.ttf


+ 18 - 0
src/assets/fonts/font.css

@@ -0,0 +1,18 @@
+  @font-face {
+    font-family: "Inter-Bold";
+    src: url('Inter-Bold-4.otf');
+    font-weight: normal;
+    font-style: normal;
+  }
+  @font-face {
+    font-family: "Inter-Regular";
+    src: url('Inter-Regular-9.otf');
+    font-weight: normal;
+    font-style: normal;
+  }
+  @font-face {
+    font-family: "Inter-SemiBold";
+    src: url('Inter-SemiBold-10.otf');
+    font-weight: normal;
+    font-style: normal;
+  }

BIN
src/assets/images/Rectangle 229.png


+ 1 - 1
src/assets/styles/index.scss

@@ -12,7 +12,7 @@ body {
   -moz-osx-font-smoothing: grayscale;
   -webkit-font-smoothing: antialiased;
   text-rendering: optimizeLegibility;
-  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+  font-family: Inter-Regular;
 }
 
 label {

+ 6 - 3
src/main.js

@@ -16,11 +16,13 @@ import directive from './directive' // directive
 import plugins from './plugins' // plugins
 import { download } from '@/utils/request'
 
+//引入字体
+import '@/assets/fonts/font.css'
 // svg图标
 import 'virtual:svg-icons-register'
 import SvgIcon from '@/components/SvgIcon'
 import elementIcons from '@/components/SvgIcon/svgicon'
-
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 import './permission' // permission control
 
 import { useDict } from '@/utils/dict'
@@ -44,7 +46,9 @@ import TreeSelect from '@/components/TreeSelect'
 import DictTag from '@/components/DictTag'
 
 const app = createApp(App)
-
+// for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+//   app.component(key, component)
+// }
 // 全局方法挂载
 app.config.globalProperties.useDict = useDict
 app.config.globalProperties.download = download
@@ -79,5 +83,4 @@ app.use(ElementPlus, {
   // 支持 large、default、small
   size: Cookies.get('size') || 'default'
 })
-
 app.mount('#app')

+ 17 - 3
src/router/index.js

@@ -67,10 +67,24 @@ export const constantRoutes = [
         component: () => import('@/views/index'),
         name: 'Index',
         meta: { title: '首页', icon: 'dashboard', affix: true }
-      }
+      },
     ]
   },
   {
+    path: '',
+    component: Layout,
+    redirect: '/index',
+    children: [
+      {
+        path: "/myfile",
+        component: () => import("@/views/myfile/MyFile"),
+        name: "myfile",
+        meta: { title: "我的文件", icon: "myfile" }
+      },
+    ]
+  },
+
+  {
     path: '/user',
     component: Layout,
     hidden: true,
@@ -81,9 +95,9 @@ export const constantRoutes = [
         component: () => import('@/views/system/user/profile/index'),
         name: 'Profile',
         meta: { title: '个人中心', icon: 'user' }
-      }
+      },
     ]
-  }
+  },
 ]
 
 // 动态路由,基于用户权限动态去加载

+ 147 - 75
src/views/login.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="login">
-    <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
+    <!-- <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
       <h3 class="title">若依后台管理系统</h3>
       <el-form-item prop="username">
         <el-input
@@ -56,10 +56,65 @@
           <router-link class="link-type" :to="'/register'">立即注册</router-link>
         </div>
       </el-form-item>
-    </el-form>
-    <!--  底部  -->
-    <div class="el-login-footer">
-      <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
+    </el-form> -->
+    <div class="img_box"></div>
+    <!-- 右侧登录盒子 -->
+    <div class="login_box">
+      <el-form
+        ref="loginRef"
+        :model="loginForm"
+        :rules="loginRules"
+        class="center_box"
+      >
+        <span class="title">Sign up to Domino’s</span>
+        <el-form-item prop="username">
+          <span class="ipt_title">用户名</span>
+          <el-input
+            v-model="loginForm.username"
+            type="text"
+            size="large"
+            auto-complete="off"
+            placeholder="请输入用户名"
+          >
+          </el-input>
+        </el-form-item>
+        <!-- <el-form-item prop="username">
+          <span class="ipt_title">真实姓名</span>
+          <el-input
+            v-model="loginForm.username"
+            type="text"
+            size="large"
+            auto-complete="off"
+            placeholder="请输入真实姓名"
+          >
+          </el-input>
+        </el-form-item> -->
+        <el-form-item prop="password">
+          <span class="ipt_title">密码</span>
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            size="large"
+            auto-complete="off"
+            placeholder="请输入密码"
+            @keyup.enter="handleLogin"
+          >
+          </el-input>
+        </el-form-item>
+        <el-checkbox v-model="loginForm.rememberMe" class="re_checkout">记住密码</el-checkbox>
+      <el-form-item style="width:100%;">
+        <el-button
+          :loading="loading"
+          size="large"
+          type="primary"
+          class="login_btn"
+          @click.prevent="handleLogin"
+        >
+          <span v-if="!loading">登 录</span>
+          <span v-else>登 录 中...</span>
+        </el-button>
+      </el-form-item>
+      </el-form>
     </div>
   </div>
 </template>
@@ -68,9 +123,9 @@
 import { getCodeImg } from "@/api/login";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from "@/utils/jsencrypt";
-import useUserStore from '@/store/modules/user'
+import useUserStore from "@/store/modules/user";
 
-const userStore = useUserStore()
+const userStore = useUserStore();
 const route = useRoute();
 const router = useRouter();
 const { proxy } = getCurrentInstance();
@@ -80,35 +135,41 @@ const loginForm = ref({
   password: "admin123",
   rememberMe: false,
   code: "",
-  uuid: ""
+  uuid: "",
 });
 
 const loginRules = {
   username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
   password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],
-  code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+  code: [{ required: true, trigger: "change", message: "请输入验证码" }],
 };
 
 const codeUrl = ref("");
 const loading = ref(false);
 // 验证码开关
-const captchaEnabled = ref(true);
+const captchaEnabled = ref(false);
 // 注册开关
 const register = ref(false);
 const redirect = ref(undefined);
 
-watch(route, (newRoute) => {
+watch(
+  route,
+  (newRoute) => {
     redirect.value = newRoute.query && newRoute.query.redirect;
-}, { immediate: true });
+  },
+  { immediate: true }
+);
 
 function handleLogin() {
-  proxy.$refs.loginRef.validate(valid => {
+  proxy.$refs.loginRef.validate((valid) => {
     if (valid) {
       loading.value = true;
       // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
       if (loginForm.value.rememberMe) {
         Cookies.set("username", loginForm.value.username, { expires: 30 });
-        Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 });
+        Cookies.set("password", encrypt(loginForm.value.password), {
+          expires: 30,
+        });
         Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 });
       } else {
         // 否则移除
@@ -117,22 +178,26 @@ function handleLogin() {
         Cookies.remove("rememberMe");
       }
       // 调用action的登录方法
-      userStore.login(loginForm.value).then(() => {
-        router.push({ path: redirect.value || "/" });
-      }).catch(() => {
-        loading.value = false;
-        // 重新获取验证码
-        if (captchaEnabled.value) {
-          getCode();
-        }
-      });
+      userStore
+        .login(loginForm.value)
+        .then(() => {
+          router.push({ path: redirect.value || "/" });
+        })
+        .catch(() => {
+          loading.value = false;
+          // 重新获取验证码
+          if (captchaEnabled.value) {
+            getCode();
+          }
+        });
     }
   });
 }
 
 function getCode() {
-  getCodeImg().then(res => {
-    captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+  getCodeImg().then((res) => {
+    captchaEnabled.value =
+      res.captchaEnabled === undefined ? true : res.captchaEnabled;
     if (captchaEnabled.value) {
       codeUrl.value = "data:image/gif;base64," + res.img;
       loginForm.value.uuid = res.uuid;
@@ -146,8 +211,9 @@ function getCookie() {
   const rememberMe = Cookies.get("rememberMe");
   loginForm.value = {
     username: username === undefined ? loginForm.value.username : username,
-    password: password === undefined ? loginForm.value.password : decrypt(password),
-    rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+    password:
+      password === undefined ? loginForm.value.password : decrypt(password),
+    rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
   };
 }
 
@@ -158,63 +224,69 @@ getCookie();
 <style lang='scss' scoped>
 .login {
   display: flex;
-  justify-content: center;
-  align-items: center;
+  // justify-content: center;
+  // align-items: center;
+  width: 100%;
   height: 100%;
-  background-image: url("../assets/images/login-background.jpg");
-  background-size: cover;
 }
-.title {
-  margin: 0px auto 30px auto;
-  text-align: center;
-  color: #707070;
+.img_box {
+  height: 100%;
+  width: 640px;
+  background-image: url("../assets/images/Rectangle 229.png");
+  background-repeat: no-repeat;
+  background-size: contain;
 }
-
-.login-form {
-  border-radius: 6px;
-  background: #ffffff;
-  width: 400px;
-  padding: 25px 25px 5px 25px;
-  .el-input {
-    height: 40px;
-    input {
+.login_box {
+  .center_box {
+    width: 400px;
+    // height: 400px;
+    margin-top: 180px;
+    margin-left: 200px;
+    // background-color: #ccc;
+    .title {
+      // color: #081f4c;
+      display: inline-block;
+      font-size: 24px;
+      font-weight: bold;
+      line-height: 32px;
+      font-family: Inter-Bold;
+      margin-bottom: 40px;
+    }
+    .ipt_title {
+      color: #081f4c;
+      display: inline-block;
+      margin-bottom: 4px;
+      font-size: 16px;
+      line-height: 24px;
+      font-weight: bold;
+      font-family: Inter-SemiBold;
+    }
+    .re_checkout{
+      color: #505870;
+      font-size: 14px;
+      margin:0px 0px 16px 0px;
+    }
+    .login_btn{
+      width: 186px;
       height: 40px;
+      background-color: #2E6BC8;
+      border-radius: 4px;
     }
   }
-  .input-icon {
-    height: 39px;
-    width: 14px;
-    margin-left: 0px;
-  }
 }
-.login-tip {
-  font-size: 13px;
-  text-align: center;
-  color: #bfbfbf;
+// 输入框样式
+::v-deep .el-input__wrapper {
+  background-color: #f5f6f7 !important;
+  border-radius: 4px;
+  box-shadow: inset 0px 2px 4px 0px rgba(188, 188, 188, 0.2);
 }
-.login-code {
-  width: 33%;
-  height: 40px;
-  float: right;
-  img {
-    cursor: pointer;
-    vertical-align: middle;
-  }
+::v-deep .el-checkbox__inner{
+  border-color: #2E6BC8;
 }
-.el-login-footer {
-  height: 40px;
-  line-height: 40px;
-  position: fixed;
-  bottom: 0;
-  width: 100%;
-  text-align: center;
-  color: #fff;
-  font-family: Arial;
-  font-size: 12px;
-  letter-spacing: 1px;
+::v-deep .is-checked .el-checkbox__inner{
+background-color: #2E6BC8;
 }
-.login-code-img {
-  height: 40px;
-  padding-left: 12px;
+::v-deep .is-checked .el-checkbox__label{
+color: #505870;
 }
 </style>

+ 62 - 0
src/views/myfile/MyFile.vue

@@ -0,0 +1,62 @@
+<template>
+    <div>
+        <div class="bigBox">
+            <div class="settingBox">
+                <!-- 设置盒子顶部搜索 -->
+                <div class="topSearch">
+                    <el-input v-model="searchFire" class="searchFire" size="large" placeholder="搜索文件">
+                    </el-input>
+                    <el-icon style="font-size: 24px;">
+                        <Plus />
+                    </el-icon>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref } from 'vue'
+import myfile from '../../api/myfile/myfile'
+import { Search } from '@element-plus/icons-vue'
+export default {
+    setup() {
+        let tableList = ref([])
+        let searchFire = ref('')
+        const getAll = () => {
+            myfile.get().then(res => {
+                console.log(res, 'eee');
+            })
+        }
+        return {
+            tableList,//定义的数据
+            getAll,//拿到数据的方法
+            searchFire,//搜索文件的model
+        }
+    },
+    created() {
+        this.getAll();
+    },
+}
+</script>
+
+<style scoped>
+.settingBox {
+    width: 312px;
+    height: 836px;
+    border: 1px solid black;
+    border-radius: 4px;
+    margin: 10px 10px;
+}
+.topSearch{
+    width: 100%;
+    height: 48px;
+    background-color: #EBEFF6;
+    text-align: center;
+    line-height: 48px;
+}
+.searchFire {
+    width: 248px;
+    height: 32px;
+}
+</style>