YangJian0701 1 year ago
parent
commit
1f76a9aa24

+ 5 - 0
.env

@@ -0,0 +1,5 @@
+NODE_ENV = 'production'
+VUE_APP_BASE_URL = 'https://erp.baozhida.cn'
+VUE_APP_BASE_API = '/api'
+VUE_APP_BASE_TITLE = 'ERP宝智达'
+VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'

+ 5 - 0
env.development

@@ -0,0 +1,5 @@
+NODE_ENV = 'development'
+VUE_APP_BASE_URL = 'https://erptest.baozhida.cn'
+VUE_APP_BASE_API = '/api'
+VUE_APP_BASE_TITLE = 'ERP宝智达'
+VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'

+ 5 - 0
env.production

@@ -0,0 +1,5 @@
+NODE_ENV = 'production'
+VUE_APP_BASE_URL = 'https://erp.baozhida.cn'
+VUE_APP_BASE_API = '/api'
+VUE_APP_BASE_TITLE = 'ERP宝智达'
+VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'

+ 6 - 1
package.json

@@ -7,7 +7,10 @@
     "build": "vue-cli-service build"
   },
   "dependencies": {
+    "@element-plus/icons-vue": "^2.1.0",
+    "axios": "^1.6.1",
     "core-js": "^3.8.3",
+    "element-plus": "^2.4.2",
     "register-service-worker": "^1.7.2",
     "vue": "^3.2.13",
     "vue-class-component": "^8.0.0-0",
@@ -23,7 +26,9 @@
     "@vue/cli-service": "~5.0.0",
     "sass": "^1.32.7",
     "sass-loader": "^12.0.0",
-    "typescript": "~4.5.5"
+    "typescript": "~4.5.5",
+    "unplugin-auto-import": "^0.16.7",
+    "unplugin-vue-components": "^0.25.2"
   },
   "browserslist": [
     "> 1%",

+ 8 - 6
src/App.vue

@@ -1,11 +1,6 @@
 <template>
-  <nav>
-    <router-link to="/">Home</router-link> |
-    <router-link to="/about">About</router-link>
-  </nav>
   <router-view/>
 </template>
-
 <style lang="scss">
 #app {
   font-family: Avenir, Helvetica, Arial, sans-serif;
@@ -14,7 +9,14 @@
   text-align: center;
   color: #2c3e50;
 }
-
+body,html{
+  background: url('@/assets/img/bg.jpg') no-repeat top center;
+  background-size: 100%;
+}
+*{
+  margin: 0;
+  padding: 0;
+}
 nav {
   padding: 30px;
 

+ 1 - 0
src/api/index.ts

@@ -0,0 +1 @@
+export * from './module/login'

+ 9 - 0
src/api/module/login.ts

@@ -0,0 +1,9 @@
+import {axios} from '@/utils/index'
+
+export const login = (data:any)=>{
+    return axios({
+        url:'/IllnessNotice/List',
+        method: 'post',
+		data
+    })
+}

BIN
src/assets/img/bg.jpg


BIN
src/assets/img/icon-1.png


BIN
src/assets/img/icon-2.png


BIN
src/assets/img/icon-3.png


BIN
src/assets/img/icon-4.png


BIN
src/assets/img/icon-5.png


+ 10 - 40
src/components/HelloWorld.vue

@@ -1,49 +1,19 @@
 <template>
   <div class="hello">
-    <h1>{{ msg }}</h1>
-    <p>
-      For a guide and recipes on how to configure / customize this project,<br>
-      check out the
-      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
-    </p>
-    <h3>Installed CLI Plugins</h3>
-    <ul>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa" target="_blank" rel="noopener">pwa</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript" target="_blank" rel="noopener">typescript</a></li>
-    </ul>
-    <h3>Essential Links</h3>
-    <ul>
-      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
-      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
-      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
-      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
-      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
-    </ul>
-    <h3>Ecosystem</h3>
-    <ul>
-      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
-      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
-      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
-      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
-      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
-    </ul>
+    <el-button>Default</el-button>
+    <el-button type="primary">Primary</el-button>
+    <el-button type="success">Success</el-button>
+    <el-button type="info">Info</el-button>
+    <el-button type="warning">Warning</el-button>
+    <el-button type="danger">Danger</el-button>
   </div>
 </template>
 
-<script lang="ts">
-import { Options, Vue } from 'vue-class-component';
+<script setup lang="ts">
+import { login } from "@/api/index";
+  login({}).then(res=>{
 
-@Options({
-  props: {
-    msg: String
-  }
-})
-export default class HelloWorld extends Vue {
-  msg!: string
-}
+  })
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->

+ 24 - 1
src/main.ts

@@ -3,5 +3,28 @@ import App from './App.vue'
 import './registerServiceWorker'
 import router from './router'
 import store from './store'
+const app = createApp(App)
 
-createApp(App).use(store).use(router).mount('#app')
+import 'element-plus/theme-chalk/index.css'  // 引入组件样式
+
+
+import {elementList} from "@/plugins/elementData";
+for (const key of elementList) {
+    app.component(key.name, key)
+}
+
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'// 全部引入 Icon 图标 
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {// 全部引入 Icon 图标 ,并注册iocn图标
+    app.component(key, component)
+}
+
+
+// 全局注册组件
+// app.component('ElButton', ElButton)
+// app.component('ElForm', ElForm)
+// app.component('ElInput', ElInput)
+
+
+app.use(store)
+app.use(router)
+app.mount('#app')

+ 4 - 0
src/plugins/elementData.ts

@@ -0,0 +1,4 @@
+
+import { ElButton, ElForm, ElFormItem, ElInput, ElRadio } from 'element-plus';   // 按需引入组件
+
+export const elementList:any = [ElButton, ElForm, ElFormItem, ElInput, ElRadio]

+ 35 - 14
src/router/index.ts

@@ -1,20 +1,12 @@
 import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
-import HomeView from '../views/HomeView.vue'
+import {dynamicRoutes} from "./module/dynamicRoutes";
+import {globalRoutes} from "./module/globalRoutes";
+
+import { useStore } from 'vuex'
 
 const routes: Array<RouteRecordRaw> = [
-  {
-    path: '/',
-    name: 'home',
-    component: HomeView
-  },
-  {
-    path: '/about',
-    name: 'about',
-    // route level code-splitting
-    // this generates a separate chunk (about.[hash].js) for this route
-    // which is lazy-loaded when the route is visited.
-    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
-  }
+  ...dynamicRoutes,
+  ...globalRoutes
 ]
 
 const router = createRouter({
@@ -22,4 +14,33 @@ const router = createRouter({
   routes
 })
 
+/**
+ * 设置标题
+ */
+router.afterEach((to, from) => {
+  document.title = '复诊系统 - ' + to.meta.title;
+})
+
+
+router.beforeEach((to,from,next)=>{
+	const store = useStore()
+  const token = 1
+	if(token){
+		next()
+	}else{
+		//如果是登录页面路径,就直接next()
+		if (to.path === '/') {
+			next();
+		} else {
+			next('/');
+		}
+	}
+	// if(to.name=='login'){//直接进入了登录,清除token
+	// 	let obj = store.state.userinfo
+	// 	obj.token = ''
+	// 	obj.UserId = ''
+	// 	store.commit('setInfo',obj) 
+	// }
+})
+
 export default router

+ 17 - 0
src/router/module/dynamicRoutes.ts

@@ -0,0 +1,17 @@
+import layout from "@/views/layout/index.vue";
+export const dynamicRoutes = [{
+    path: '/layout',
+    name: 'layout',
+    component: layout,
+    // redirect: '/home',
+    children: [{
+        path: '/home',
+        name: 'home', 
+        icon: "icon-zhuye1",
+        component: () => import('@/views/home/index.vue'),
+        meta: {
+            roles:false,
+            title: '首页',
+        },
+    }]
+}]

+ 10 - 0
src/router/module/globalRoutes.ts

@@ -0,0 +1,10 @@
+import login from '@/views/login/index.vue'
+// 全局路由
+export const globalRoutes = [{
+	path: '/',
+	name: 'login',
+	component: login,
+	meta: {
+		title: '登录',
+	},
+}]

+ 32 - 0
src/utils/index.ts

@@ -0,0 +1,32 @@
+import axios from "axios";
+const service = axios.create({
+    baseURL:process.env.VUE_APP_BASE_URL,
+    timeout:3000,
+    withCredentials: false,// 是否跨站点访问控制请求
+    headers:{
+        "Content-Type":'application/x-www-form-urlencoded'
+    }
+})
+
+//请求拦截器
+service.interceptors.request.use(config =>{
+    console.log('请求',config)
+    return config
+},(error)=>{
+    error.data = {}
+	return Promise.resolve(error)
+})
+
+
+service.interceptors.response.use(response=>{
+    return response
+},error=>{
+    console.log('错误码',error)
+})
+
+
+export {
+	service as axios
+}
+console.log(process.env,'process.env')
+console.log(process.env, "VUE_APP_URL");

+ 0 - 5
src/views/AboutView.vue

@@ -1,5 +0,0 @@
-<template>
-  <div class="about">
-    <h1>This is an about page</h1>
-  </div>
-</template>

+ 0 - 18
src/views/HomeView.vue

@@ -1,18 +0,0 @@
-<template>
-  <div class="home">
-    <img alt="Vue logo" src="../assets/logo.png">
-    <HelloWorld msg="Welcome to Your Vue.js + TypeScript App"/>
-  </div>
-</template>
-
-<script lang="ts">
-import { Options, Vue } from 'vue-class-component';
-import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src
-
-@Options({
-  components: {
-    HelloWorld,
-  },
-})
-export default class HomeView extends Vue {}
-</script>

+ 13 - 0
src/views/home/index.vue

@@ -0,0 +1,13 @@
+<!--  -->
+<template>
+    <div class="">
+        首页
+    </div>
+</template>
+
+<script setup>
+</script>
+<style lang="scss">
+/* @import url(); 引入css类 */
+
+</style>

+ 20 - 0
src/views/layout/index.vue

@@ -0,0 +1,20 @@
+<!--  -->
+<template>
+    <div class="layout">
+        <div style="flex: 1;">
+            <router-view></router-view>
+        </div>
+        <menus></menus>
+    </div>
+</template>
+<script setup lang="ts">
+    import menus from "./menu.vue";
+</script>
+<style lang="scss">
+/* @import url(); 引入css类 */
+.layout{
+    height: 100vh;
+    display: flex;
+    flex-direction: column;
+}
+</style>

+ 51 - 0
src/views/layout/menu.vue

@@ -0,0 +1,51 @@
+<!--  -->
+<template>
+    <div class="menus">
+        <div class="menus-main">
+            <div class="menus-main-img">
+                <img src="@/assets/img/icon-1.png" style="width: 100%;height: 100%;">
+            </div>
+            <div class="menus-main-img">
+                <img src="@/assets/img/icon-2.png" style="width: 100%;height: 100%;">
+            </div>
+            <div class="menus-main-img">
+                <img src="@/assets/img/icon-3.png" style="width: 100%;height: 100%;">
+            </div>
+            <div class="menus-main-img">
+                <img src="@/assets/img/icon-4.png" style="width: 100%;height: 100%;">
+            </div>
+            <div class="menus-main-img">
+                <img src="@/assets/img/icon-5.png" style="width: 100%;height: 100%;">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script setup lang="ts">
+</script>
+<style lang="scss">
+/* @import url(); 引入css类 */
+.menus{
+    height: 80px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin-bottom: 10px;
+    &-main{
+        min-width: 40%;
+        height: 100%;
+        background: rgba(#fff, 0.2);
+        border-radius: 20px;
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+        &-img{
+            width: 60px;
+            height: 60px;
+            border-radius: 10px;
+            overflow: hidden;
+            box-shadow: 0 1px 1px 0 #000;
+        }
+    }
+}
+</style>

+ 13 - 0
src/views/login/index.vue

@@ -0,0 +1,13 @@
+<!--  -->
+<template>
+    <div class="">
+        <router-link to="/layout">登录</router-link>
+    </div>
+</template>
+
+<script setup>
+</script>
+<style lang="scss">
+/* @import url(); 引入css类 */
+
+</style>

+ 18 - 1
vue.config.js

@@ -1,4 +1,21 @@
 const { defineConfig } = require('@vue/cli-service')
 module.exports = defineConfig({
-  transpileDependencies: true
+	transpileDependencies: true
 })
+module.exports = {
+	lintOnSave: false, //关闭eslint验证
+	outputDir: '出入库管理系统',// 输出文件目录(默认dist)
+	devServer: {
+		open: false,//打开浏览器
+      	host: '0.0.0.0',
+		proxy: {
+			[process.env.VUE_APP_BASE_API]: {
+				target: process.env.VUE_APP_BASE_URL,
+				changeOrigin: true,
+				pathRewrite: {
+					'^/api': ''
+				}
+			}
+		}
+	}
+}

+ 14 - 0
webpack.config.js

@@ -0,0 +1,14 @@
+const AutoImport = require('unplugin-auto-import/webpack')
+const Components = require('unplugin-vue-components/webpack')
+const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
+
+module.exports = {
+  plugins: [
+    AutoImport({
+      resolvers: [ElementPlusResolver()],
+    }),
+    Components({
+      resolvers: [ElementPlusResolver()],
+    }),
+  ],
+}