Browse Source

2024-5-16

dzl 11 months ago
parent
commit
b3ba82451b

+ 1 - 1
.env.development

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 北京继续教育
 ENV = 'development'
 
 # 北京继续教育/开发环境
-VUE_APP_BASE_API = 'http://localhost:8080'
+VUE_APP_BASE_API = '/dev-api'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 4 - 3
package.json

@@ -5,9 +5,9 @@
   "author": "若依",
   "license": "MIT",
   "scripts": {
-    "dev": "vue-cli-service serve",
-    "build:prod": "vue-cli-service build",
-    "build:stage": "vue-cli-service build --mode staging",
+    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
+    "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
+    "build:stage": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging",
     "preview": "node build/index.js --preview",
     "lint": "eslint --ext .js,.vue src"
   },
@@ -58,6 +58,7 @@
     "vue-meta": "2.4.0",
     "vue-router": "3.4.9",
     "vuedraggable": "2.24.3",
+	"vue-video-player": "^5.0.2",
     "vuex": "3.6.0"
   },
   "devDependencies": {

+ 1 - 0
src/App.vue

@@ -22,6 +22,7 @@ export default {
 };
 </script>
 <style scoped>
+	
 #app .theme-picker {
   display: none;
 }

BIN
src/assets/images/ad3.png


BIN
src/assets/images/cx.jpg


BIN
src/assets/images/login-bg.jpg


BIN
src/assets/images/logo.png


BIN
src/assets/images/pxtg.png


BIN
src/assets/images/qytg.png


+ 106 - 0
src/assets/styles/index.scss

@@ -180,3 +180,109 @@ aside {
     margin-bottom: 10px;
   }
 }
+//公共样式
+// 外边距
+.m-t-10{
+	margin-top: 10px;
+}
+.m-t-20{
+	margin-top: 20px;
+}
+.m-r-10{
+	margin-right: 10px;
+}
+.m-r-20{
+	margin-right: 20px;
+}
+.m-b-10{
+	margin-bottom: 10px;
+}
+.m-b-20{
+	margin-bottom: 20px;
+}
+.m-l-10{
+	margin-left: 10px;
+}
+.m-l-20{
+	margin-left: 20px;
+}
+// 内边距
+.pd-10{
+	padding: 10px;
+}
+.pd-20{
+	padding: 20px;
+}
+.p-t-10{
+	padding-top: 10px;
+}
+.p-t-20{
+	padding-top: 20px;
+}
+.p-r-10{
+	padding-right: 10px;
+}
+.p-r-20{
+	padding-right: 20px;
+}
+.p-b-10{
+	padding-bottom: 10px;
+}
+.p-b-20{
+	padding-bottom: 20px;
+}
+.p-l-10{
+	padding-left: 10px;
+}
+.p-l-20{
+	padding-left: 20px;
+}
+//流式布局
+.flex-ac-jc{
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+.flex-ac{
+	display: flex;
+	align-items: center;
+}
+.flex-ac-ja{
+	display: flex;
+	align-items: center;
+	justify-content: space-around;
+}
+.flex-ac-jb{
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+.flex-jb{
+	display: flex;
+	justify-content: space-between;
+}
+.flex-jc{
+	display: flex;
+	justify-content: center;
+}
+.flex-as{
+	display: flex;
+	align-items: flex-start;
+}
+.flex-ae{
+	display: flex;
+	align-items: flex-end;
+}
+.flex-js{
+	display: flex;
+	justify-content: flex-start;
+}
+.flex-je{
+	display: flex;
+	justify-content: flex-end;
+}
+//鼠标移动小手
+.box-hover:hover{
+	cursor: pointer;
+}
+

+ 4 - 4
src/layout/components/Navbar.vue

@@ -6,7 +6,7 @@
     <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
 
     <div class="right-menu">
-      <template v-if="device!=='mobile'">
+     <!-- <template v-if="device!=='mobile'">
         <search id="header-search" class="right-menu-item" />
         
         <el-tooltip content="源码地址" effect="dark" placement="bottom">
@@ -23,7 +23,7 @@
           <size-select id="size-select" class="right-menu-item hover-effect" />
         </el-tooltip>
 
-      </template>
+      </template> -->
 
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
@@ -34,9 +34,9 @@
           <router-link to="/user/profile">
             <el-dropdown-item>个人中心</el-dropdown-item>
           </router-link>
-          <el-dropdown-item @click.native="setting = true">
+         <!-- <el-dropdown-item @click.native="setting = true">
             <span>布局设置</span>
-          </el-dropdown-item>
+          </el-dropdown-item> -->
           <el-dropdown-item divided @click.native="logout">
             <span>退出登录</span>
           </el-dropdown-item>

+ 8 - 2
src/main.js

@@ -1,10 +1,9 @@
 import Vue from 'vue'
 
 import Cookies from 'js-cookie'
-
 import Element from 'element-ui'
 import './assets/styles/element-variables.scss'
-
+import 'element-ui/lib/theme-chalk/display.css'
 import '@/assets/styles/index.scss' // global css
 import '@/assets/styles/ruoyi.scss' // ruoyi css
 import App from './App'
@@ -37,6 +36,13 @@ import DictTag from '@/components/DictTag'
 import VueMeta from 'vue-meta'
 // 字典数据组件
 import DictData from '@/components/DictData'
+import VideoPlayer from "vue-video-player";
+import "video.js/dist/video-js.css";
+import "vue-video-player/src/custom-theme.css";
+
+console.log(VideoPlayer);
+
+Vue.use(VideoPlayer);
 
 // 全局方法挂载
 Vue.prototype.getDicts = getDicts

+ 1 - 1
src/permission.js

@@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request'
 
 NProgress.configure({ showSpinner: false })
 
-const whiteList = ['/login', '/register']
+const whiteList = ['/login', '/register','/userIndex']
 
 router.beforeEach((to, from, next) => {
   NProgress.start()

+ 6 - 0
src/router/index.js

@@ -41,11 +41,17 @@ export const constantRoutes = [
       }
     ]
   },
+  {
+    path: '/userIndex',
+    component: () => import('@/views/userIndex'),
+    hidden: true
+  },
   {
     path: '/login',
     component: () => import('@/views/login'),
     hidden: true
   },
+  
   {
     path: '/register',
     component: () => import('@/views/register'),

+ 264 - 0
src/views/components/baoming/kaoshi.vue

@@ -0,0 +1,264 @@
+<template>
+	<div>
+		<el-form ref="classForm" label-position="left" label-width="100px" :model="classForm" :rules="classRules">
+			<el-row :gutter="40">
+				<el-col :span="24">
+					<div style="background-color: #eee;font-weight: bold;text-align: center;font-size: 16px;"
+						class="pd-10 m-b-10">
+						2024年第四期铁路监理工程师网络继续教育(土建专业)
+					</div>
+				</el-col>
+				<el-col :span="24">
+					<div class="formTitle m-b-20">
+						企业信息
+					</div>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item label="企业名称" prop="qyname">
+						<!-- <el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入正确的公司全称"></el-input> -->
+						<el-select v-model="classForm.qyname" multiple filterable remote reserve-keyword
+							placeholder="请输入企业名称" :remote-method="remoteMethod" :loading="loading">
+							<el-option v-for="item in options" :key="item.value" :label="item.label"
+								:value="item.value">
+							</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="负责人姓名" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入负责人姓名"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="手机号码" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入手机号码"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="邮政编码" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入邮政编码"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="电子邮箱" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入电子邮箱"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<div class="formTitle m-b-20">
+						监理工程师信息
+					</div>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="姓名" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入姓名"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="性别" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请选择性别"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="身份证号" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入身份证号"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="联系电话" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入联系电话"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="学历" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请选择学历"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="证书有效期至" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入证书有效期"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item label="毕业院校" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入毕业院校"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="职称" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入职称"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item label="职称批准单位" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入职称批准单位"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="监工证书编号" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入监工证书编号"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="监理工程师业绩/简历" prop="qyname">
+						<!-- <el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入正确的公司全称"></el-input> -->
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="新增简历工程师业绩" prop="qyname">
+						<el-input v-model="classForm.qyname"  auto-complete="off"
+							placeholder="请输入新增简历工程师业绩"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<div class="formTitle m-b-20">
+						开票信息
+					</div>
+				</el-col>
+				<el-col :span="24">
+					<div style="color:#F56C6C;">
+						注意事项:发票均每人单独开出,在网络报名时,选择付款单位,选择付款单位后,发票将不能更换。开票信息为空的,请联系企业完善开票信息。
+					</div>
+					<div class="m-t-10">
+						<el-form-item label="发票抬头" prop="qyname">
+							
+						</el-form-item>
+					</div>
+				</el-col>
+				<el-col :span="24">
+					<div class="formTitle m-b-20">
+						邮寄信息
+					</div>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item label="收件人姓名" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入收件人姓名"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="收件人手机" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入收件人手机"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item label="邮寄地址" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入邮寄地址"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="8">
+					<el-form-item label="邮政编码" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入邮政编码"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<div style="color: #F56C6C;">
+						注意事项:发票统一邮寄到付款单位,不单独邮寄给分公司或者个人。
+					</div>
+				</el-col>
+				<el-col :span="24">
+					<div class="formTitle m-b-20">
+						证件上传
+					</div>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="身份证上传" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入正确的公司全称"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="毕业证上传" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入正确的公司全称"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="职称证上传" prop="qyname">
+						<el-input v-model="classForm.qyname" type="text" auto-complete="off"
+							placeholder="请输入正确的公司全称"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+</template>
+
+<script>
+	export default {
+		name: "kaoshi",
+		data() {
+
+			return {
+				loading: false, //按钮加载
+				classForm: {
+					TrainId: null, //培训计划id
+					qyname: null,
+				},
+				classRules: {
+
+				}
+			}
+		},
+		methods: {
+			handleRegister() {
+				this.$emit('submitSuccess', 1)
+				// this.$refs.classForm.validate(valid => {
+				// 	if (valid) {
+
+				// 	} else {
+
+				// 	}
+				// })
+
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.formTitle {
+		color: #409EFF;
+		border-bottom: 1px solid #409EFF;
+		padding: 10px;
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	::v-deep .el-form-item__label {
+		text-align: justify !important;
+
+		text-align-last: justify !important;
+	}
+	::v-deep .el-select{
+		width: 100%!important;
+	}
+	::v-deep .select-container {
+		width: 100%;
+		/* 如果需要,可以设置外部容器的宽度 */
+	}
+
+	::v-deep .select-container .el-select {
+		width: 100%;
+		/* 让 el-select 占满外部容器的宽度 */
+	}
+</style>

+ 11 - 0
src/views/components/baoming/kecheng.vue

@@ -0,0 +1,11 @@
+<template>
+	
+</template>
+
+<script>
+	
+</script>
+
+<style>
+	
+</style>

+ 147 - 0
src/views/components/video.vue

@@ -0,0 +1,147 @@
+<template>
+	<div class="player">
+		<video-player ref="videoPlayer" class="video-player vjs-custom-skin" :playsinline="false" :options="playOptions"
+			@ready="onPlayerReady" @play="onPlayerPlay($event)" @pause="onPlayerPause($event)"
+			@ended="onPlayerEnd($event)" @waiting="onPlayerWaiting($event)" @playing="onPlayerPlaying($event)"
+			@loadeddata="onPlayerLoadeddata($event)" @timeupdate="onPlayerTimeupdate($event)"
+			@statechanged="playerStateChanged($event)" />
+	</div>
+</template>
+
+<script>
+	export default {
+		name:"playVideo",
+		props: {
+			path: { // 传入的地址
+				type: String,
+				default: "",
+			},
+			lastTime: { // 传入的上次播放位置
+				type: Number,
+				default: 0,
+			},
+		},
+		data() {
+			return {
+				wancheng:false,//是否看完
+				playedTime: this.lastTime,
+				currentTime: 0,
+				maxTime: 0,
+				playOptions: {
+					height: "200px",
+					width: "100%",
+					playbackRates: [1.0], // 可选的播放速度
+					autoplay: false, // 如果为true,浏览器准备好时开始回放
+					muted: false, // 默认情况下静音播放
+					loop: false, // 是否视频一结束就重新开始
+					preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据,auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
+					language: "zh-CN",
+					aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值,值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
+					fluid: true, // 当true时,Video.js player将拥有流体大小,换句话说,它将按比例缩放以适应其容器
+					sources: [{
+						type: "video/mp4", // 类型
+						src: require("@/assets/images/sp.mp4"), // url地址,在使用本地的资源时,需要用require()引入,否则控制台会报错
+					}, ],
+					// poster: "./gcy-logo-200.png", // 设置封面地址
+					notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息
+					controlBar: {
+						currentTimeDisplay: true,
+						progressControl: true, // 是否显示进度条
+						playbackRateMenuButton: true, // 是否显示调整播放倍速按钮
+						timeDivider: true, // 当前时间和持续时间的分隔符
+						durationDisplay: true, // 显示持续时间
+						remainingTimeDisplay: true, // 是否显示剩余时间功能
+						fullscreenToggle: true, // 是否显示全屏按钮
+					},
+				},
+			};
+		},
+		computed: {},
+		mounted() {
+			// this.getData()  // 调用获取地址的接口,然后修改播放器配置中的src属性
+		},
+		methods: {
+			// 准备好了
+			onPlayerReady() {
+				console.log("准备好了");
+			},
+			// 视频播放
+			onPlayerPlay(player) {
+				console.log('播放了');
+				console.log(player);
+				let playTime = 0;
+				if (
+					Number(Math.floor(this.playedTime)) ===
+					Number(Math.floor(player.duration()))
+				) {
+					this.playedTime = 0;
+					playTime = 0;
+				} else if (
+					Number(Math.floor(player.currentTime())) !==
+					Number(Math.floor(this.playedTime))
+				) {
+					playTime = this.playedTime;
+					player.currentTime(playTime)
+				}
+			},
+			// 视频暂停的
+			onPlayerPause(player) {
+				console.log('暂停中');
+				console.log(player);
+				this.playedTime = player.currentTime();
+			},
+			// 视频播放完
+			onPlayerEnd(player) {
+				console.log('播放结束了');
+				console.log(player);
+				this.maxTime = player.duration()
+				this.wancheng = true
+			},
+			// DOM元素上的readyState更改导致播放停止
+			onPlayerWaiting(player) {
+				console.log("播放停止中");
+				console.log(player);
+			},
+			// 视频已开始播放
+			onPlayerPlaying(player) {
+				console.log("开始播放了");
+				console.log(player);
+			},
+			// 当播放器在当前播放位置下载数据时触发
+			onPlayerLoadeddata(player) {
+				console.log("开始下载数据");
+				console.log(player);
+			},
+			// 当前播放位置发生变化时触发
+			onPlayerTimeupdate(player) {
+				console.log("播放位置变化了");
+				console.log(player);
+				let timeDisplay = player.currentTime();
+				if(this.wancheng == false){
+					if (timeDisplay - this.currentTime > 1) {
+						player.currentTime(this.currentTime > this.maxTime ? this.currentTime : this.maxTime);
+					}
+					this.currentTime = player.currentTime();
+					this.maxTime = this.currentTime > this.maxTime ? this.currentTime : this.maxTime;
+				}else{
+					this.currentTime = player.currentTime();
+				}
+				
+			},
+			//播放状态改变
+			playerStateChanged(playerCurrentState) {
+				console.log("播放状态变化了");
+				console.log(playerCurrentState);
+			},
+			// 手动暂停视频的播放
+			pause() {
+				// 视频播放器的方法调用,要使用this.$refs.videoPlayer.player这个对象去调用
+				this.$refs.videoPlayer.player.pause()
+			}
+		},
+	};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 228 - 0
src/views/components/zhuce/baseInfo.vue

@@ -0,0 +1,228 @@
+<template>
+	<div>
+		<el-form ref="registerForm" label-position="left" label-width="100px" :model="registerForm"
+			:rules="registerRules">
+			<el-form-item label="企业名称" prop="qyname">
+				<el-input v-model="registerForm.qyname" type="text" auto-complete="off"
+					placeholder="请输入正确的公司全称"></el-input>
+			</el-form-item>
+			<el-form-item label="用户名" prop="username">
+				<el-input v-model="registerForm.username" auto-complete="off"
+					placeholder="用户名长度3-20位,只能输入字母、数字、下划线,以字母开头"></el-input>
+			</el-form-item>
+			<el-form-item label="密码" prop="password">
+				<el-input v-model="registerForm.password" type="password" auto-complete="off"
+					placeholder="6-20位英文(区分大小写)、数字的组合"></el-input>
+			</el-form-item>
+			<el-form-item label="确认密码" prop="password">
+				<el-input v-model="registerForm.password" type="password" auto-complete="off"
+					placeholder="请再输入一遍上面的密码"></el-input>
+			</el-form-item>
+			<el-form-item label="负责人姓名" prop="name">
+				<el-input v-model="registerForm.name" auto-complete="off" placeholder="请输入负责人姓名"></el-input>
+			</el-form-item>
+			<el-form-item label="手机号码" prop="photo">
+				<el-input v-model="registerForm.photo" auto-complete="off" placeholder="请填写11位有效的手机号码"></el-input>
+			</el-form-item>
+			<el-form-item label="电子邮箱" prop="lxryx">
+				<el-input v-model="registerForm.lxryx" auto-complete="off" placeholder="请填写有效的电子邮箱地址"></el-input>
+			</el-form-item>
+			<el-form-item label="邮政编码" prop="yzbm">
+				<el-input v-model="registerForm.yzbm" auto-complete="off" placeholder="请输入邮政编码"></el-input>
+			</el-form-item>
+			<el-form-item label="营业执照" prop="yyzz">
+				<!-- <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/"
+					:show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+					<img v-if="imageUrl" :src="imageUrl" class="avatar">
+					<i v-else class="el-icon-plus avatar-uploader-icon"></i>
+				</el-upload> -->
+			</el-form-item>
+			<el-form-item style="width:100%;">
+				<el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click="handleRegister">
+					下一步
+				</el-button>
+			</el-form-item>
+		</el-form>
+	</div>
+</template>
+
+<script>
+	export default {
+		name: "baseInfo",
+		data() {
+			//用户名格式验证
+			var userName = (rule, value, callback) => {
+				const regex = /^[a-zA-Z][a-zA-Z0-9_]{2,19}$/;
+				if (regex.test(value) == true) {
+					callback();
+				} else {
+					callback(new Error('用户名长度3-20位,只能输入字母、数字、下划线,以字母开头'));
+				}
+
+			};
+			//密码格式验证
+			var passWord = (rule, value, callback) => {
+				const regex = /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{6,20}$/
+				if (regex.test(value) == true) {
+					callback();
+				} else {
+					callback(new Error('6-20位英文(区分大小写)、数字的组合'));
+				}
+			}
+			//两次密码是否一致验证
+			const equalToPassword = (rule, value, callback) => {
+				if (this.registerForm.password !== value) {
+					callback(new Error("两次输入的密码不一致"));
+				} else {
+					callback();
+				}
+			};
+			//手机号验证
+			const phone = (rule, value, callback) => {
+				const regex = /^1[3-9]\d{9}$/
+				if (regex.test(value) == false) {
+					callback(new Error("手机号码不正确"));
+				} else {
+					callback();
+				}
+			};
+			//电子邮箱验证
+			const email = (rule, value, callback) => {
+				const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
+				if (regex.test(value) == false) {
+					callback(new Error("电子邮箱不正确"));
+				} else {
+					callback();
+				}
+			};
+			return {
+				loading:false,//按钮加载
+				registerForm: {
+					qyname: null, //企业名称
+					username: null, //用户名
+					password: null, //密码
+					qrpassword: null, //确认密码
+					name: null, //负责人姓名
+					photo: null, //手机号码
+					lxryx: null, //电子邮箱
+					yzbm: null, //邮政编码
+					yyzz: null, //营业执照
+				},
+				registerRules: {
+					qyname: {
+						required: true,
+						message: '公司名称不能为空',
+						trigger: ['blur', 'change']
+					},
+					username: [{
+							required: true,
+							message: '用户名不能为空',
+							trigger: ['blur', 'change']
+						},
+						{
+							validator: userName,
+							trigger: ['blur', 'change']
+						}
+					],
+					password: [{
+							required: true,
+							message: '密码不能为空',
+							trigger: ['blur', 'change']
+						},
+						{
+							validator: passWord,
+							trigger: ['blur', 'change']
+						}
+					],
+					qypassword: [{
+							required: true,
+							message: '确认密码不能为空',
+							trigger: ['blur', 'change']
+						},
+						{
+							validator: equalToPassword,
+							trigger: ['blur', 'change']
+						}
+					],
+					name: {
+						required: true,
+						message: '负责人姓名不能为空',
+						trigger: ['blur', 'change']
+					},
+					photo: [{
+							required: true,
+							message: '手机号码不能为空',
+							trigger: ['blur', 'change']
+						},
+						{
+							validator: phone,
+							trigger: ['blur', 'change']
+						}
+					],
+					lxryx: [{
+							required: true,
+							message: '电子邮箱不能为空',
+							trigger: ['blur', 'change']
+						},
+						{
+							validator: email,
+							trigger: ['blur', 'change']
+						}
+					],
+					yzbm: {
+						required: true,
+						message: '邮政编码不能为空',
+						trigger: ['blur', 'change']
+					},
+					yyzz: {
+						required: true,
+						message: '请上传营业执照',
+						trigger: ['blur', 'change']
+					}
+				}
+			}
+		},
+		methods: {
+			handleRegister() {
+				 this.$emit('submitSuccess', 1)
+				// this.$refs.registerForm.validate(valid => {
+				// 	if (valid) {
+					
+				// 	} else {
+
+				// 	}
+				// })
+				
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.avatar-uploader .el-upload {
+		border: 1px dashed #eee;
+		border-radius: 6px;
+		cursor: pointer;
+		position: relative;
+		overflow: hidden;
+	}
+
+	.avatar-uploader .el-upload:hover {
+		border-color: #409EFF;
+	}
+
+	.avatar-uploader-icon {
+		font-size: 28px;
+		color: #8c939d;
+		width: 178px;
+		height: 178px;
+		line-height: 178px;
+		text-align: center;
+	}
+
+	.avatar {
+		width: 178px;
+		height: 178px;
+		display: block;
+	}
+</style>

File diff suppressed because it is too large
+ 22 - 978
src/views/index.vue


+ 2 - 2
src/views/login.vue

@@ -49,14 +49,14 @@
           <span v-if="!loading">登 录</span>
           <span v-else>登 录 中...</span>
         </el-button>
-        <div style="float: right;" v-if="register">
+        <div style="float: right;" >
           <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>
+      <!-- <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span> -->
     </div>
   </div>
 </template>

+ 82 - 203
src/views/register.vue

@@ -1,209 +1,88 @@
 <template>
-  <div class="register">
-    <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">若依后台管理系统</h3>
-      <el-form-item prop="username">
-        <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
-          <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="password">
-        <el-input
-          v-model="registerForm.password"
-          type="password"
-          auto-complete="off"
-          placeholder="密码"
-          @keyup.enter.native="handleRegister"
-        >
-          <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="confirmPassword">
-        <el-input
-          v-model="registerForm.confirmPassword"
-          type="password"
-          auto-complete="off"
-          placeholder="确认密码"
-          @keyup.enter.native="handleRegister"
-        >
-          <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="code" v-if="captchaEnabled">
-        <el-input
-          v-model="registerForm.code"
-          auto-complete="off"
-          placeholder="验证码"
-          style="width: 63%"
-          @keyup.enter.native="handleRegister"
-        >
-          <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
-        </el-input>
-        <div class="register-code">
-          <img :src="codeUrl" @click="getCode" class="register-code-img"/>
-        </div>
-      </el-form-item>
-      <el-form-item style="width:100%;">
-        <el-button
-          :loading="loading"
-          size="medium"
-          type="primary"
-          style="width:100%;"
-          @click.native.prevent="handleRegister"
-        >
-          <span v-if="!loading">注 册</span>
-          <span v-else>注 册 中...</span>
-        </el-button>
-        <div style="float: right;">
-          <router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
-        </div>
-      </el-form-item>
-    </el-form>
-    <!--  底部  -->
-    <div class="el-register-footer">
-      <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
-    </div>
-  </div>
+	<div class="register">
+		<el-row >
+			<el-col :xl="{span:14,offset:5}" :lg="{span:14,offset:5}" :md="{span:16,offset:4}" :sm="{span:20,offset:2}" :xs="{span:24}" style="min-height: 100vh;background-color: #fff;">
+				<div class=" m-b-20">
+					<img src="../assets/images/ad3.png" alt="" style="width: 100%;" />
+				</div>
+				<div class="m-b-20">
+					<el-steps :active="active" align-center finish-status="success" process-status="finish">
+						<el-step title="步骤一" description="填写基本信息"></el-step>
+						<el-step title="步骤二" description="注册成功"></el-step>
+					</el-steps>
+				</div>
+				<div style="padding:20px 60px 20px 60px ;">
+					<base-info v-if="active==0" @submitSuccess="submitSuccess"></base-info>
+					<div v-else>
+						<div style="font-size:30px;text-align: center;color: #606266;">
+							企业注册成功,请等待审核!
+						</div>
+						<div class="flex-ac-jc m-t-20" style="font-size: 14px;color: #909399;">
+							页面将在
+							<span style="font-size: 16px;font-weight: bold;padding: 0 4px;">{{time}}</span>
+							秒钟后返回
+							 <!-- <el-button type="text" style="margin-left: 6px;">登录页</el-button> -->
+							 <router-link class="link-type" :to="'/login'" style="margin-left: 4px;">登录页</router-link>
+						</div>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+	</div>
 </template>
 
 <script>
-import { getCodeImg, register } from "@/api/login";
-
-export default {
-  name: "Register",
-  data() {
-    const equalToPassword = (rule, value, callback) => {
-      if (this.registerForm.password !== value) {
-        callback(new Error("两次输入的密码不一致"));
-      } else {
-        callback();
-      }
-    };
-    return {
-      codeUrl: "",
-      registerForm: {
-        username: "",
-        password: "",
-        confirmPassword: "",
-        code: "",
-        uuid: ""
-      },
-      registerRules: {
-        username: [
-          { required: true, trigger: "blur", message: "请输入您的账号" },
-          { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
-        ],
-        password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" },
-          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
-        ],
-        confirmPassword: [
-          { required: true, trigger: "blur", message: "请再次输入您的密码" },
-          { required: true, validator: equalToPassword, trigger: "blur" }
-        ],
-        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
-      },
-      loading: false,
-      captchaEnabled: true
-    };
-  },
-  created() {
-    this.getCode();
-  },
-  methods: {
-    getCode() {
-      getCodeImg().then(res => {
-        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
-        if (this.captchaEnabled) {
-          this.codeUrl = "data:image/gif;base64," + res.img;
-          this.registerForm.uuid = res.uuid;
-        }
-      });
-    },
-    handleRegister() {
-      this.$refs.registerForm.validate(valid => {
-        if (valid) {
-          this.loading = true;
-          register(this.registerForm).then(res => {
-            const username = this.registerForm.username;
-            this.$alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", '系统提示', {
-              dangerouslyUseHTMLString: true,
-              type: 'success'
-            }).then(() => {
-              this.$router.push("/login");
-            }).catch(() => {});
-          }).catch(() => {
-            this.loading = false;
-            if (this.captchaEnabled) {
-              this.getCode();
-            }
-          })
-        }
-      });
-    }
-  }
-};
+	// import {
+	// 	getCodeImg,
+	// 	register
+	// } from "@/api/login";
+	import baseInfo from "./components/zhuce/baseInfo.vue"
+	export default {
+		name: "Register",
+		components:{
+			baseInfo
+		},
+		data() {
+			return {
+				active:0,
+				time:10,
+				jsq:null,
+			}
+		},
+		created(){
+			
+		},
+		watch:{
+			time:{
+				handler:function(n,o){
+					console.log(n)
+					if(n==0){
+						this.back()
+					}
+				}
+			}
+		},
+		methods: {
+			submitSuccess(e){
+				this.active = e
+				this.jsq = setInterval(()=>{
+					this.time--
+				},1000)
+			},
+			back(){
+				clearInterval(this.jsq)
+				this.$router.push({
+					path:"/login"
+				})
+			}
+			
+		}
+	};
 </script>
 
-<style rel="stylesheet/scss" lang="scss">
-.register {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  height: 100%;
-  background-image: url("../assets/images/login-background.jpg");
-  background-size: cover;
-}
-.title {
-  margin: 0px auto 30px auto;
-  text-align: center;
-  color: #707070;
-}
-
-.register-form {
-  border-radius: 6px;
-  background: #ffffff;
-  width: 400px;
-  padding: 25px 25px 5px 25px;
-  .el-input {
-    height: 38px;
-    input {
-      height: 38px;
-    }
-  }
-  .input-icon {
-    height: 39px;
-    width: 14px;
-    margin-left: 2px;
-  }
-}
-.register-tip {
-  font-size: 13px;
-  text-align: center;
-  color: #bfbfbf;
-}
-.register-code {
-  width: 33%;
-  height: 38px;
-  float: right;
-  img {
-    cursor: pointer;
-    vertical-align: middle;
-  }
-}
-.el-register-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;
-}
-.register-code-img {
-  height: 38px;
-}
-</style>
+<style scoped lang="scss">
+	.register{
+		background-color: #F4F4F7;
+		min-height: 100vh;
+	}
+</style>

+ 283 - 0
src/views/userIndex.vue

@@ -0,0 +1,283 @@
+<template>
+	<div class="home">
+		<el-row class="m-b-10 m-t-20">
+			<el-col :xl="{span:14,offset:5}" :lg="{span:14,offset:5}" :md="{span:16,offset:4}" :sm="{span:20,offset:2}"
+				:xs="{span:24}">
+				<div class="hidden-sm-and-up p-l-10 p-r-10 flex-ac-jb">
+					<img src="../assets/images/logo.png" alt="" style="width:70%;" />
+					<el-button type="warning">登录</el-button>
+				</div>
+				<img src="../assets/images/logo.png" alt="" style="width:50%;" class="hidden-xs-only" />
+			</el-col>
+		</el-row>
+		<el-row class="m-b-20 hidden-xs-only">
+			<el-col :span="24" style="background-color: #3084C2;">
+				<el-row>
+					<el-col :xl="{span:14,offset:5}" :lg="{span:14,offset:5}" :md="{span:16,offset:4}"
+						:sm="{span:20,offset:2}" :xs="{span:24}" style="position: relative;">
+						<div
+							style="height: 100%;background: linear-gradient(to right, #3084C2 , transparent);position: absolute;top: 0;left: 0;z-index: 99;width: 20%;">
+						</div>
+						<img src="../assets/images/login-bg.jpg" alt="" style="width:100%;" />
+						<div
+							style="height: 100%;background: linear-gradient(to left, #3084C2 , transparent);position: absolute;top: 0;right: 0;z-index: 99;width: 20%;">
+						</div>
+						<div
+							style="width: 30%;position: absolute;z-index: 100;top: 50%;transform: translateY(-50%);right:6%;background-color: rgba(28, 107, 115, 0.7);border-radius: 6px;color: #fff;">
+							<div class="pd-20" style="text-align: center;font-size: 18px;">
+								网络教育登录
+							</div>
+							<div class="pd-20" style="padding-top: 0;">
+								<el-form ref="form" :model="form">
+									<el-form-item>
+										<el-input v-model="form.name" placeholder="用户名">
+											<svg-icon slot="prefix" icon-class="user"
+												class="el-input__icon input-icon" />
+										</el-input>
+									</el-form-item>
+									<el-form-item>
+										<el-input v-model="form.password" placeholder="密码">
+											<svg-icon slot="prefix" icon-class="password"
+												class="el-input__icon input-icon" />
+										</el-input>
+									</el-form-item>
+									<div>
+										<el-button type="primary" @click="onSubmit" style="width: 100%;">登录</el-button>
+									</div>
+								</el-form>
+							</div>
+
+						</div>
+					</el-col>
+				</el-row>
+			</el-col>
+		</el-row>
+		<el-row class="m-b-20">
+			<el-col :xl="{span:14,offset:5}" :lg="{span:14,offset:5}" :md="{span:16,offset:4}" :sm="{span:20,offset:2}"
+				:xs="{span:24}">
+				<el-row>
+					<el-col :span="24" class="hidden-xs-only ">
+						<div style="border-bottom: 1px solid #34a150;" class="flex-ac m-b-20">
+							<div class="pd-10 "
+								style="border-bottom: 2px solid #34a150;font-size: 20px;padding-left: 0;">
+								网络继续教育安排
+							</div>
+						</div>
+						<div class="jxjy">
+							<el-table :data="tableData" border style="width: 100%">
+								<el-table-column prop="date" label="批次" width="100" align="center"></el-table-column>
+								<el-table-column prop="name" label="类别" width="100" align="center"></el-table-column>
+								<el-table-column prop="address" label="继续教育安排"></el-table-column>
+								<el-table-column prop="time" label="报名截止" width="100" align="center"></el-table-column>
+								<el-table-column prop="bmnum" label="已报人数" width="80" align="center">
+									<template slot-scope="scope">
+										<div style="color: #F56C6C;">
+											{{scope.row.bmnum}}
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column prop="sxnum" label="报名上限" width="80" align="center">
+									<template slot-scope="scope">
+										<div style="color: #F56C6C;">
+											{{scope.row.sxnum}}
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column label="报名" width="80" align="center">
+									<template slot-scope="scope">
+										<el-button type="success" size="small" @click="classSignUp(scope.row,'kc')">
+											报名
+										</el-button>
+									</template>
+								</el-table-column>
+							</el-table>
+						</div>
+					</el-col>
+					<el-col :span="24" class="hidden-xs-only m-t-20">
+						<div style="border-bottom: 1px solid #3084C2;" class="flex-ac m-b-20">
+							<div class="pd-10 "
+								style="border-bottom: 2px solid #3084C2;font-size: 20px;padding-left: 0;">
+								资格考试安排
+							</div>
+						</div>
+						<div class="zgks">
+							<el-table :data="tableData" border style="width: 100%">
+								<el-table-column prop="address" label="资格考试期次安排"></el-table-column>
+								<el-table-column prop="time" label="报名截止" width="100" align="center"></el-table-column>
+								<el-table-column prop="address" label="考试地点" width="80"></el-table-column>
+								<el-table-column prop="bmnum" label="已报人数" width="80" align="center">
+									<template slot-scope="scope">
+										<div style="color: #F56C6C;">
+											{{scope.row.bmnum}}
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column prop="sxnum" label="报名上限" width="80" align="center">
+									<template slot-scope="scope">
+										<div style="color: #F56C6C;">
+											{{scope.row.sxnum}}
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column label="报名" width="160" align="center">
+									<template slot-scope="scope">
+										<el-row :gutter="5">
+											<el-col :span="12">
+												<el-button type="success" size="small" @click="classSignUp(scope.row,'ks')">
+													报名
+												</el-button>
+											</el-col>
+											<el-col :span="12">
+												<el-button type="primary" size="small" @click="search(scope.row)">
+													查询
+												</el-button>
+											</el-col>
+										</el-row>
+									</template>
+								</el-table-column>
+							</el-table>
+						</div>
+					</el-col>
+				</el-row>
+			</el-col>
+			</el-col>
+		</el-row>
+		<div style="width: 8vw;position: fixed;top: 20vh;right: 0;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);border-radius: 6px 0 0 6px;overflow: hidden;"
+			class="box-hover hidden-xs-only">
+			<img src="../assets/images/cx.jpg" style="width: 100%;" />
+		</div>
+		<el-dialog :title="title" :visible.sync="show" width="60%">
+			<div style="height: 74vh;overflow-y: auto;overflow-x: hidden;padding-top: 0;" class="pd-10">
+				<kaoshi></kaoshi>
+			</div>
+			<span slot="footer" class="dialog-footer">
+			    <el-button @click="show = false">取 消</el-button>
+			    <el-button type="primary" @click="show = false">报名</el-button>
+			</span>
+		</el-dialog>
+		<el-dialog title="资格考试报名查询" :visible.sync="searchShow" width="40%">
+			<el-form ref="form" :model="form" label-width="80px">
+				<el-form-item label="姓名">
+					<el-input v-model="form.name" placeholder="请输入姓名"></el-input>
+				</el-form-item>
+				<el-form-item label="身份证号">
+					<el-input v-model="form.name" placeholder="请输入身份证号"></el-input>
+				</el-form-item>
+			</el-form>
+			<span slot="footer" class="dialog-footer">
+			    <el-button @click="searchShow = false">取 消</el-button>
+			    <el-button type="primary" @click="searchShow = false">查询</el-button>
+			</span>
+		</el-dialog>
+		<div class="footer">
+			<div class="in">
+				<p><span>Copyright © 中国铁道工程建设协会建设监理专业委员会&nbsp;&nbsp;&nbsp;&nbsp;版权所有</span></p>
+				<p><span>技术支持:石家庄亿网科技发展有限公司 &nbsp;&nbsp;QQ群1:273181486 QQ群2:379067534 QQ群3:684421906
+						客服QQ:3564246643&nbsp;&nbsp;<a rel="nofollow" href="https://beian.miit.gov.cn" target="_blank">
+							网站备案号:京ICP备13011762号-1
+						</a></span></p>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import kaoshi from "./components/baoming/kaoshi.vue"
+	export default {
+		name: "userIndex",
+		components: {
+			kaoshi
+		},
+		data() {
+			return {
+				tableData: [{
+					date: '2016-05-02',
+					name: '王小虎',
+					address: '上海市普陀区金沙江路 1518 弄',
+					time: "2024-06-12",
+					bmnum: "100",
+					sxnum: "200",
+				}, {
+					date: '2016-05-04',
+					name: '王小虎',
+					address: '上海市普陀区金沙江路 1517 弄',
+					time: "2024-06-12",
+					bmnum: "100",
+					sxnum: "200",
+				}, {
+					date: '2016-05-01',
+					name: '王小虎',
+					address: '上海市普陀区金沙江路 1519 弄',
+					time: "2024-06-12",
+					bmnum: "100",
+					sxnum: "200",
+				}, {
+					date: '2016-05-03',
+					name: '王小虎',
+					address: '上海市普陀区金沙江路 1516 弄',
+					time: "2024-06-12",
+					bmnum: "100",
+					sxnum: "200",
+				}, ],
+				form: {
+
+				},
+				show: false,//报名、考试对话框
+				type:null,//当前对话框状态
+				title: null, ///对话框标头
+				searchShow: false, //资格考试查询
+			};
+		},
+		methods: {
+			//报名
+			classSignUp(row,type) {
+				this.type = type
+				if(type == 'kc'){
+					this.title = '监理工程师继续教育报名'
+				}else{
+					this.title = '监理工程师资格考试报名'
+				}
+				this.show = true
+			},
+			//考试查询
+			search(row){
+				this.searchShow = true
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	::v-deep .jxjy .el-table__header-wrapper th {
+		background-color: #34a150;
+		/* 举例颜色 */
+		color: #fff;
+		font-weight: bold;
+	}
+
+	::v-deep .zgks .el-table__header-wrapper th {
+		background-color: #3084C2;
+		/* 举例颜色 */
+		color: #fff;
+		font-weight: bold;
+	}
+
+	.footer {
+		margin: 0;
+		border: 0;
+		padding: 0;
+		list-style: none;
+		font-size: 14px;
+		color: #333;
+		font-family: "Microsoft YaHei Mono", "微软雅黑";
+		background-color: #3084C2;
+	}
+
+	.in {
+		width: 1000px;
+		margin: 0 auto;
+		text-align: center;
+		padding: 15px 0;
+		color: #fff
+	}
+</style>

+ 2 - 1
vue.config.js

@@ -35,7 +35,8 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://localhost:8080`,
+        // target: `http://localhost:8080`,
+        target: `http://192.168.1.62:8080`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''