Conflicts: config/index.jswulanhaote
@@ -4,5 +4,5 @@ const prodEnv = require('./prod.env') | |||
module.exports = merge(prodEnv, { | |||
NODE_ENV: '"development"', | |||
VUE_APP_BASE_API:'"/dev-api"' | |||
VUE_APP_BASE_API: '"/api"' | |||
}) |
@@ -10,20 +10,20 @@ module.exports = { | |||
assetsSubDirectory: 'static', | |||
assetsPublicPath: '/', | |||
proxyTable: { | |||
"/dev-api": { | |||
"/api": { | |||
// 请求的目标主机 | |||
target: 'http://116.255.135.38:8081/nsgk_test/', | |||
//target: 'http://192.168.31.107:8080/', | |||
//target: 'http://116.255.135.38:8081/nsgk_test/', | |||
target: 'http://localhost:8080/', | |||
changeOrigin: true, | |||
pathRewrite: { | |||
'^/dev-api': '' | |||
'^/api': '' | |||
} | |||
} | |||
}, | |||
// Various Dev Server settings | |||
host: '0.0.0.0', // can be overwritten by process.env.HOST | |||
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined | |||
port: 85, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined | |||
autoOpenBrowser: false, | |||
errorOverlay: true, | |||
notifyOnErrors: true, | |||
@@ -1,4 +1,5 @@ | |||
'use strict' | |||
module.exports = { | |||
NODE_ENV: '"production"' | |||
NODE_ENV: '"production"', | |||
VUE_APP_BASE_API: '"/api"' | |||
} |
@@ -6,6 +6,9 @@ | |||
<meta name="viewport" | |||
content="width=device-width,initial-scale=1,user-scalable=0,minimum-scale=1.0,maximum=scale=1.0" /> | |||
<link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico"> | |||
<script src="/static/js/ol.js"></script> | |||
<script type="text/javascript" | |||
src="http://api.tianditu.gov.cn/api?v=4.0&tk=cc4aba6e967096098249efa069733067"></script> | |||
<title>农燊高科</title> | |||
</head> | |||
@@ -5676,6 +5676,11 @@ | |||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | |||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" | |||
}, | |||
"jquery": { | |||
"version": "3.6.0", | |||
"resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.6.0.tgz?cache=0&sync_timestamp=1614705639458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjquery%2Fdownload%2Fjquery-3.6.0.tgz", | |||
"integrity": "sha1-xyoJ8Vwb3OFC9J2/EXC9+K2sJHA=" | |||
}, | |||
"js-base64": { | |||
"version": "2.6.4", | |||
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", | |||
@@ -11,6 +11,7 @@ | |||
}, | |||
"dependencies": { | |||
"axios": "^0.21.1", | |||
"jquery": "^3.6.0", | |||
"global": "^4.4.0", | |||
"js-cookie": "^2.2.1", | |||
"lib-flexible": "^0.3.2", | |||
@@ -0,0 +1,80 @@ | |||
import request from '@/utils/request' | |||
//查询列表 | |||
export function listSampling(data){ | |||
return request({ | |||
url:'service/sampling/list', | |||
method:'get', | |||
params:data | |||
}) | |||
} | |||
// 删除农户抽样 | |||
export function delSampling(id) { | |||
return request({ | |||
url: '/service/sampling/remove/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
export function updateSampling(data) { | |||
return request({ | |||
url: '/service/sampling/edit', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 查询农户抽样详细 | |||
export function getInvestigate(id) { | |||
return request({ | |||
url: '/service/sampling/getInvestigate/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 新增农户抽样 | |||
export function addSampling(data) { | |||
return request({ | |||
url: '/service/sampling/add', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 新增农户抽样 | |||
export function addInvestigate(data) { | |||
return request({ | |||
url: '/service/sampling/addInvestigate', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改农户抽样 | |||
export function updateInvestigate(data) { | |||
return request({ | |||
url: '/service/sampling/editInvestigate', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
//查询列表 | |||
export function listSamplingDept(data){ | |||
return request({ | |||
url:'service/sampling/listSamplingDept', | |||
method:'get', | |||
params:data | |||
}) | |||
} | |||
// 修改农户抽样 | |||
export function uploadFile(data) { | |||
return request({ | |||
url: '/service/sampling/ocr/idcard', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 修改农户抽样 | |||
export function uploadFileBase(data) { | |||
return request({ | |||
url: '/common/upload', | |||
method: 'post', | |||
data: data | |||
}) | |||
} |
@@ -0,0 +1,153 @@ | |||
import request from '@/utils/request' | |||
// 获取区下拉 | |||
export function bigDataHcAreaInfo(query) { | |||
return request({ | |||
url: '/bigData/hc/hcAreaInfo', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 获取乡镇下拉 | |||
export function bigDataHcCountyInfo(query) { | |||
return request({ | |||
url: '/bigData/hc/hcCountyInfo', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
//获取村级下拉 | |||
export function bigDataHcVillageInfo(query) { | |||
return request({ | |||
url: '/bigData/hc/hcVillageInfo', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
//右侧详情农房农地列表 | |||
export function hcBottomSearch(query) { | |||
return request({ | |||
url: '/bigData/hc/hcBottomSearch', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
//上传附件图片 | |||
export function commonUpload(query) { | |||
return request({ | |||
url: '/common/upload', | |||
method: 'post', | |||
data: query | |||
}) | |||
} | |||
//农房新增 | |||
export function houseAdd(query) { | |||
return request({ | |||
url: '/geo/house/add', | |||
method: 'post', | |||
data: query | |||
}) | |||
} | |||
//农房编辑 | |||
export function houseEdit(query) { | |||
return request({ | |||
url: '/geo/house/edit', | |||
method: 'post', | |||
data: query | |||
}) | |||
} | |||
//农地新增 | |||
export function landAdd(query) { | |||
return request({ | |||
url: '/geo/land/add', | |||
method: 'post', | |||
data: query | |||
}) | |||
} | |||
//农地编辑 | |||
export function landEdit(query) { | |||
return request({ | |||
url: '/geo/land/edit', | |||
method: 'post', | |||
data: query | |||
}) | |||
} | |||
//获取区、镇、村地区 | |||
export function treeselectByUser(query) { | |||
return request({ | |||
url: '/system/dept/treeselectByUser', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
//获取村的经纬度 | |||
export function deptGetId(id) { | |||
return request({ | |||
url: '/system/dept/get/' + id, | |||
method: 'get', | |||
}) | |||
} | |||
//查询农地地信息 | |||
export function getLand(id) { | |||
return request({ | |||
url: '/geo/land/get/' + id, | |||
method: 'get', | |||
}) | |||
} | |||
//查询农房信息 | |||
export function getHouse(id) { | |||
return request({ | |||
url: '/geo/house/get/' + id, | |||
method: 'get', | |||
}) | |||
} | |||
//获取接口地图地址 | |||
export function currentLocation(query) { | |||
return request({ | |||
url: '/bigData/common/currentLocation', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
//修改坐标数据同步 | |||
export function coordinatesUpdateGeo(data) { | |||
return request({ | |||
url: '/geo/geo/coordinatesEdit', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
//删除农房信息 | |||
export function houseRemove(id) { | |||
return request({ | |||
url: '/geo/house/remove/' + id, | |||
method: 'get', | |||
}) | |||
} | |||
//删除农地信息 | |||
export function landRemove(id) { | |||
return request({ | |||
url: '/geo/land/remove/' + id, | |||
method: 'get', | |||
}) | |||
} |
@@ -11,7 +11,10 @@ export function login(username, password, code, uuid) { | |||
return request({ | |||
url: '/login', | |||
method: 'post', | |||
data: data | |||
data: data, | |||
headers: { | |||
isToken: false | |||
} | |||
}) | |||
} | |||
@@ -25,7 +28,10 @@ export function smsLogin(mobile, smsCode, uuid) { | |||
return request({ | |||
url: '/sms/login', | |||
method: 'post', | |||
data: data | |||
data: data, | |||
headers: { | |||
isToken: false | |||
} | |||
}) | |||
} | |||
@@ -49,7 +55,10 @@ export function logout() { | |||
export function getCodeImg() { | |||
return request({ | |||
url: '/captchaImage', | |||
method: 'get' | |||
method: 'get', | |||
headers: { | |||
isToken: false | |||
} | |||
}) | |||
} | |||
@@ -63,7 +72,7 @@ export function getSmsCode(mobile) { | |||
return request({ | |||
url: '/sms/code', | |||
method: 'post', | |||
data:data | |||
data: data | |||
}) | |||
} | |||
@@ -22,11 +22,15 @@ const whiteList = [ | |||
'/register/userRegister', | |||
'/register/companyRegister', | |||
'/biddingHall', | |||
'/authenticRight', | |||
'/authenticRight/login', | |||
'/project', | |||
'/policy', | |||
'/policyDetail', | |||
'/attestationDetail', | |||
'/noticeDetail', | |||
'/homestead/login', | |||
] | |||
@@ -53,7 +57,13 @@ router.beforeEach((to, from, next) => { | |||
}).catch(err => { | |||
store.dispatch('LogOut').then(() => { | |||
// Message.error(err) | |||
next({ path: '/' }) | |||
if ('/authenticRight/index'.indexOf(to.path) !== -1) { | |||
next({ path: '/authenticRight/login' }) | |||
} else if ('/homestead/index'.indexOf(to.path) !== -1) { | |||
next({ path: '/homestead/login' }) | |||
} else { | |||
next({ path: '/' }) | |||
} | |||
}) | |||
}) | |||
} else { | |||
@@ -66,8 +76,16 @@ router.beforeEach((to, from, next) => { | |||
// 在免登录白名单,直接进入 | |||
next() | |||
} else { | |||
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 | |||
//next('/index'); | |||
if ('/authenticRight/index'.indexOf(to.path) !== -1) { | |||
next(`/authenticRight/login?redirect=${to.fullPath}`) | |||
} else if ('/homestead/index'.indexOf(to.path) !== -1) { | |||
next(`/homestead/login?redirect=${to.fullPath}`) | |||
} else { | |||
next(`/login?redirect=${to.fullPath}`) | |||
} | |||
// // 否则全部重定向到登录页 | |||
//next('/index'); | |||
NProgress.done() | |||
} | |||
} | |||
@@ -76,6 +76,14 @@ export const constantRoutes = [ | |||
title: '我的' | |||
}, | |||
component: (resolve) => require(['@/views/mynsgk'], resolve) | |||
} , | |||
{ | |||
path: '/authenticRight', | |||
name: 'authenticRight', | |||
meta: { | |||
title: '确权颁证调查统计表', | |||
}, | |||
component: (resolve) => require(['@/views/authenticRight/index'], resolve) | |||
}, | |||
{ | |||
path: '/biddingHall', | |||
@@ -354,10 +362,28 @@ export const constantRoutes = [ | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/homestead/login'], resolve) | |||
}, | |||
//两清三化宅基地 | |||
{ | |||
path: '/authenticRight/index', | |||
name: 'authenticRightIndex', | |||
meta: { | |||
title: '两清三化宅基地', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/authenticRight/index'], resolve) | |||
}, | |||
{ | |||
path: '/authenticRight/login', | |||
name: 'authenticRightLogin', | |||
meta: { | |||
title: '登录页', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/authenticRight/login'], resolve) | |||
} | |||
]; | |||
@@ -70,7 +70,13 @@ service.interceptors.response.use(res => { | |||
}) | |||
.then(() => { | |||
store.dispatch('LogOut').then(() => { | |||
location.href = '/index'; | |||
if ('/authenticRight/index'.indexOf(to.path) !== -1) { | |||
location.href = '/authenticRight/login'; | |||
} else if ('/homestead/index'.indexOf(to.path) !== -1) { | |||
location.href = '/homestead/login'; | |||
} else { | |||
location.href = '/index'; | |||
} | |||
}) | |||
}) | |||
} else if (code === 500) { | |||
@@ -0,0 +1,236 @@ | |||
<template> | |||
<div class="app-container" :style="{ height: windowHeight + 'px' }"> | |||
<div class="login_header"></div> | |||
<div class="login_content"> | |||
<div class="homestead_wrap"> | |||
<div class="key_title">确权颁证调查统计系统</div> | |||
<div class="slogan"></div> | |||
</div> | |||
<div class="from_wrap"> | |||
<div class="from_content"> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field | |||
autosize | |||
v-model="formData.username" | |||
placeholder="请输入用户名" | |||
/> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field | |||
autosize | |||
type="password" | |||
placeholder="请输入密码" | |||
v-model="formData.password" | |||
/> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<div class="verification_code"> | |||
<van-field | |||
autosize | |||
placeholder="请输入验证码" | |||
v-model="formData.code" | |||
/> | |||
</div> | |||
<div class="verification_images"> | |||
<img class="code-img" :src="codeUrl" @click="getCode" /> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="remember_num"> | |||
<van-checkbox | |||
v-model="rememberPassword" | |||
icon-size="16px" | |||
checked-color="#3CBF5B" | |||
>记住密码</van-checkbox | |||
> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="from_btn" @click="handleLogin">登录</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import { getCodeImg } from "@/api/login"; | |||
import Cookies from "js-cookie"; | |||
export default { | |||
name: "homesteadLogin", | |||
data() { | |||
return { | |||
formData: { | |||
username: "", //账号 | |||
password: "", //密码 | |||
code: null, //图片验证码 | |||
uuid: null, //识别uuid | |||
}, | |||
codeUrl: "", //图片验证码 | |||
windowHeight: 0, | |||
rememberPassword: false, //记住密码 1记住 2不记住 | |||
}; | |||
}, | |||
created() { | |||
this.getCode(); | |||
let userName = Cookies.get("homesteadUserName"); // => 'value' | |||
let password = Cookies.get("homesteadPassword"); // => undefined | |||
if (userName != undefined) { | |||
this.formData.username = userName; | |||
this.rememberPassword = true; | |||
} | |||
if (password != undefined) { | |||
this.formData.password = password; | |||
} | |||
}, | |||
mounted() { | |||
let windowHeight = document.documentElement.clientHeight; | |||
this.windowHeight = windowHeight; | |||
}, | |||
methods: { | |||
getCode() { | |||
getCodeImg().then((res) => { | |||
this.formData.uuid = res.uuid; | |||
this.codeUrl = "data:image/gif;base64," + res.img; | |||
}); | |||
}, | |||
handleLogin() { | |||
//账号密码登录 | |||
if (this.formData.username == "") { | |||
this.$dialog.alert({ | |||
message: "账号不能为空", | |||
}); | |||
return false; | |||
} else if (this.formData.password == "") { | |||
this.$dialog.alert({ | |||
message: "密码不能为空", | |||
}); | |||
return false; | |||
} else if (this.formData.code == "") { | |||
this.$dialog.alert({ | |||
message: "图片验证码不能为空", | |||
}); | |||
return false; | |||
} | |||
this.$store | |||
.dispatch("Login", this.formData) | |||
.then(() => { | |||
if (this.rememberPassword == true) { | |||
Cookies.set("homesteadUserName", this.formData.username, { | |||
expires: 30, | |||
}); | |||
Cookies.set("homesteadPassword", this.formData.password, { | |||
expires: 30, | |||
}); | |||
} | |||
this.$router | |||
.push({ path: this.redirect || "/authenticRight/index" }) | |||
.catch(() => {}); | |||
}) | |||
.catch(() => { | |||
this.loading = false; | |||
this.getCode(); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
display: flex; | |||
width: 100vw; | |||
height: 100vh; | |||
flex-direction: column; | |||
.login_header { | |||
flex: 0.35; | |||
background: url("../../assets/images/homestead/login_bg.jpg") center bottom | |||
no-repeat; | |||
background-size: 100% 100%; | |||
} | |||
.login_content { | |||
flex: 0.65; | |||
display: flex; | |||
flex-direction: column; | |||
.homestead_wrap { | |||
flex: 0.28; | |||
display: flex; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
flex-direction: column; | |||
.key_title { | |||
font-size: 56px; | |||
margin-bottom: 10px; | |||
} | |||
.slogan { | |||
font-size: 32px; | |||
color: #9f9f9f; | |||
} | |||
} | |||
.from_wrap { | |||
flex: 0.72; | |||
padding-bottom: 14%; | |||
flex-direction: column; | |||
display: flex; | |||
margin: 0 40px; | |||
.from_content { | |||
flex: 1; | |||
display: flex; | |||
flex-direction: column; | |||
padding-bottom: 14%; | |||
.signIn_container { | |||
flex: 1; | |||
display: flex; | |||
max-height: 90px; | |||
margin-bottom: 24px; | |||
&:last-child { | |||
margin-bottom: 0; | |||
} | |||
.signIn_input_wrap { | |||
flex: 1; | |||
display: flex; | |||
.verification_code { | |||
flex: 1; | |||
} | |||
.verification_images { | |||
flex: 0 0 220px; | |||
margin-left: 20px; | |||
img { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.van-cell { | |||
border: 2px solid #f1f0f5; | |||
border-radius: 46px; | |||
font-size: 32px; | |||
} | |||
} | |||
.remember_num { | |||
margin-left: 14px; | |||
font-size: 28px; | |||
color: #3cbf5b; | |||
} | |||
} | |||
} | |||
.from_btn { | |||
display: flex; | |||
flex: 0 0 80px; | |||
background: #3cbf5b; | |||
border-radius: 40px; | |||
font-size: 36px; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
color: #fff; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -1,153 +1,236 @@ | |||
<template> | |||
<div class="app-container"> | |||
<div class="login_header"></div> | |||
<div class="login_content"> | |||
<div class="homestead_wrap"> | |||
<div class="key_title">两清三化宅基地</div> | |||
<div class="slogan">随时随地管理宅基地</div> | |||
</div> | |||
<div class="from_wrap"> | |||
<div class="from_content"> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field | |||
v-model="message" | |||
autosize | |||
placeholder="请输入手机号" | |||
/> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field v-model="message" autosize placeholder="请输入密码" /> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<div class="verification_code"> | |||
<van-field | |||
v-model="message" | |||
autosize | |||
placeholder="请输入验证码" | |||
/> | |||
</div> | |||
<div class="verification_images"></div> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="remember_num"> | |||
<van-radio-group v-model="radio"> | |||
<van-radio name="1" icon-size="16px" checked-color="#3CBF5B" | |||
>记住密码</van-radio | |||
> | |||
</van-radio-group> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="from_btn">登录</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: "homesteadLogin", | |||
data() { | |||
return { | |||
message: "", | |||
radio: "2", | |||
}; | |||
}, | |||
mounted() {}, | |||
methods: {}, | |||
}; | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
display: flex; | |||
width: 100vw; | |||
height: 100vh; | |||
flex-direction: column; | |||
.login_header { | |||
flex: 0.35; | |||
background: url("../../assets/images/homestead/login_bg.jpg") center bottom | |||
no-repeat; | |||
background-size: 100% 100%; | |||
} | |||
.login_content { | |||
flex: 0.65; | |||
display: flex; | |||
flex-direction: column; | |||
.homestead_wrap { | |||
flex: 0.28; | |||
display: flex; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
flex-direction: column; | |||
.key_title { | |||
font-size: 56px; | |||
margin-bottom: 10px; | |||
} | |||
.slogan { | |||
font-size: 32px; | |||
color: #9f9f9f; | |||
} | |||
} | |||
.from_wrap { | |||
flex: 0.72; | |||
padding-bottom: 14%; | |||
flex-direction: column; | |||
display: flex; | |||
margin: 0 40px; | |||
.from_content { | |||
flex: 1; | |||
display: flex; | |||
flex-direction: column; | |||
padding-bottom: 14%; | |||
.signIn_container { | |||
flex: 1; | |||
display: flex; | |||
margin-bottom: 18px; | |||
&:last-child { | |||
margin-bottom: 0; | |||
} | |||
.signIn_input_wrap { | |||
flex: 1; | |||
display: flex; | |||
.verification_code { | |||
flex: 1; | |||
} | |||
.verification_images { | |||
flex: 0 0 220px; | |||
margin-left: 20px; | |||
} | |||
.van-cell { | |||
border: 2px solid #f1f0f5; | |||
border-radius: 46px; | |||
font-size: 32px; | |||
} | |||
} | |||
.remember_num { | |||
margin-left: 14px; | |||
font-size: 28px; | |||
color: #3cbf5b; | |||
} | |||
} | |||
} | |||
.from_btn { | |||
display: flex; | |||
flex: 0 0 80px; | |||
background: #3cbf5b; | |||
border-radius: 40px; | |||
font-size: 36px; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
color: #fff; | |||
} | |||
} | |||
} | |||
} | |||
</style> | |||
<template> | |||
<div class="app-container" :style="{ height: windowHeight + 'px' }"> | |||
<div class="login_header"></div> | |||
<div class="login_content"> | |||
<div class="homestead_wrap"> | |||
<div class="key_title">环翠区两清三化</div> | |||
<div class="slogan">数据调查系统</div> | |||
</div> | |||
<div class="from_wrap"> | |||
<div class="from_content"> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field | |||
autosize | |||
v-model="formData.username" | |||
placeholder="请输入用户名" | |||
/> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<van-field | |||
autosize | |||
type="password" | |||
placeholder="请输入密码" | |||
v-model="formData.password" | |||
/> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="signIn_input_wrap"> | |||
<div class="verification_code"> | |||
<van-field | |||
autosize | |||
placeholder="请输入验证码" | |||
v-model="formData.code" | |||
/> | |||
</div> | |||
<div class="verification_images"> | |||
<img class="code-img" :src="codeUrl" @click="getCode" /> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="signIn_container"> | |||
<div class="remember_num"> | |||
<van-checkbox | |||
v-model="rememberPassword" | |||
icon-size="16px" | |||
checked-color="#3CBF5B" | |||
>记住密码</van-checkbox | |||
> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="from_btn" @click="handleLogin">登录</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import { getCodeImg } from "@/api/login"; | |||
import Cookies from "js-cookie"; | |||
export default { | |||
name: "homesteadLogin", | |||
data() { | |||
return { | |||
formData: { | |||
username: "", //账号 | |||
password: "", //密码 | |||
code: null, //图片验证码 | |||
uuid: null, //识别uuid | |||
}, | |||
codeUrl: "", //图片验证码 | |||
rememberPassword: false, //记住密码 1记住 2不记住 | |||
windowHeight: 0, | |||
}; | |||
}, | |||
created() { | |||
this.getCode(); | |||
let userName = Cookies.get("homesteadUserName"); // => 'value' | |||
let password = Cookies.get("homesteadPassword"); // => undefined | |||
if (userName != undefined) { | |||
this.formData.username = userName; | |||
this.rememberPassword = true; | |||
} | |||
if (password != undefined) { | |||
this.formData.password = password; | |||
} | |||
}, | |||
mounted() { | |||
let windowHeight = document.documentElement.clientHeight; | |||
this.windowHeight = windowHeight; | |||
}, | |||
methods: { | |||
getCode() { | |||
getCodeImg().then((res) => { | |||
this.formData.uuid = res.uuid; | |||
this.codeUrl = "data:image/gif;base64," + res.img; | |||
}); | |||
}, | |||
handleLogin() { | |||
//账号密码登录 | |||
if (this.formData.username == "") { | |||
this.$dialog.alert({ | |||
message: "账号不能为空", | |||
}); | |||
return false; | |||
} else if (this.formData.password == "") { | |||
this.$dialog.alert({ | |||
message: "密码不能为空", | |||
}); | |||
return false; | |||
} else if (this.formData.code == "") { | |||
this.$dialog.alert({ | |||
message: "图片验证码不能为空", | |||
}); | |||
return false; | |||
} | |||
this.$store | |||
.dispatch("Login", this.formData) | |||
.then(() => { | |||
if (this.rememberPassword == true) { | |||
Cookies.set("homesteadUserName", this.formData.username, { | |||
expires: 30, | |||
}); | |||
Cookies.set("homesteadPassword", this.formData.password, { | |||
expires: 30, | |||
}); | |||
} | |||
this.$router | |||
.push({ path: this.redirect || "/homestead/index" }) | |||
.catch(() => {}); | |||
}) | |||
.catch(() => { | |||
this.loading = false; | |||
this.getCode(); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
display: flex; | |||
width: 100vw; | |||
height: 100vh; | |||
flex-direction: column; | |||
.login_header { | |||
flex: 0.35; | |||
background: url("../../assets/images/homestead/login_bg.jpg") center bottom | |||
no-repeat; | |||
background-size: 100% 100%; | |||
} | |||
.login_content { | |||
flex: 0.65; | |||
display: flex; | |||
flex-direction: column; | |||
.homestead_wrap { | |||
flex: 0.28; | |||
display: flex; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
flex-direction: column; | |||
.key_title { | |||
font-size: 56px; | |||
margin-bottom: 10px; | |||
} | |||
.slogan { | |||
font-size: 32px; | |||
color: #9f9f9f; | |||
} | |||
} | |||
.from_wrap { | |||
flex: 0.72; | |||
padding-bottom: 14%; | |||
flex-direction: column; | |||
display: flex; | |||
margin: 0 40px; | |||
.from_content { | |||
flex: 1; | |||
display: flex; | |||
flex-direction: column; | |||
padding-bottom: 14%; | |||
.signIn_container { | |||
flex: 1; | |||
display: flex; | |||
max-height: 90px; | |||
margin-bottom: 24px; | |||
&:last-child { | |||
margin-bottom: 0; | |||
} | |||
.signIn_input_wrap { | |||
flex: 1; | |||
display: flex; | |||
.verification_code { | |||
flex: 1; | |||
} | |||
.verification_images { | |||
flex: 0 0 220px; | |||
margin-left: 20px; | |||
img { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.van-cell { | |||
border: 2px solid #f1f0f5; | |||
border-radius: 46px; | |||
font-size: 32px; | |||
} | |||
} | |||
.remember_num { | |||
margin-left: 14px; | |||
font-size: 28px; | |||
color: #3cbf5b; | |||
} | |||
} | |||
} | |||
.from_btn { | |||
display: flex; | |||
flex: 0 0 80px; | |||
background: #3cbf5b; | |||
border-radius: 40px; | |||
font-size: 36px; | |||
justify-content: center; /* 相对父元素水平居中 */ | |||
align-items: center; /* 子元素相对父元素垂直居中 */ | |||
color: #fff; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -38,6 +38,10 @@ | |||
<van-image src="../../static/images/icon/icon_need.png" width="40" height="40" /> | |||
<p>个人供求</p> | |||
</van-grid-item> | |||
<van-grid-item to="/authenticRight"> | |||
<van-image src="../../static/images/icon/icon_need.png" width="40" height="40" /> | |||
<p>确权调查</p> | |||
</van-grid-item> | |||
</van-grid> | |||
</div> | |||
<p class="newTit">新闻咨询</p> | |||
@@ -0,0 +1,18 @@ | |||
@echo off | |||
D: | |||
cd D:\workspace\code\nsgk_mobile | |||
::安装依赖 | |||
:: npm install | |||
::强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。 | |||
:: npm install --registry=https://registry.npm.taobao.org | |||
::本地开发 启动项目 | |||
npm run dev | |||
@echo SUCCESS | |||
pause |
@@ -0,0 +1,18 @@ | |||
@echo off | |||
D: | |||
cd D:\workspace\code\nsgk_mobile | |||
::安装依赖 | |||
npm install | |||
::强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。 | |||
npm install --registry=https://registry.npm.taobao.org | |||
::本地开发 启动项目 | |||
:: npm run dev | |||
@echo SUCCESS | |||
pause |
@@ -0,0 +1,14 @@ | |||
@echo off | |||
D: | |||
cd D:\workspace\code\nsgk_mobile | |||
:: 打包预发布环境 | |||
npm run build | |||
@echo SUCCESS | |||
pause |