@@ -0,0 +1,15 @@ | |||
{ | |||
"compilerOptions": { | |||
"target": "ES6", | |||
"module": "commonjs", | |||
"allowSyntheticDefaultImports": true, | |||
"baseUrl": "./", | |||
"paths": { | |||
"@/*": ["src/*"], | |||
"@api/*": ["src/api/*"] | |||
} | |||
}, | |||
"exclude": [ | |||
"node_modules" | |||
] | |||
} |
@@ -1,9 +1,14 @@ | |||
// 首页、搜索、关于我们路由 | |||
import index from "./modules/index"; | |||
// 登录页 | |||
import login from './modules/login'; | |||
// 产品相关 | |||
import product from './modules/product'; | |||
export default [{ | |||
path: "*", | |||
redirect: "/index", // 重定向 | |||
}, | |||
...index, | |||
...login, | |||
...product, | |||
]; |
@@ -0,0 +1,18 @@ | |||
/** | |||
* | |||
* 登录页 | |||
* | |||
*/ | |||
export default [ | |||
// 官网首页 | |||
{ | |||
path: "/login", | |||
name: "Login", | |||
component: () => | |||
import ("../../views/login/Login.vue"), | |||
meta: { | |||
title: "登录页面", | |||
}, | |||
}, | |||
]; |
@@ -0,0 +1,18 @@ | |||
/** | |||
* | |||
* 产品路由 | |||
* | |||
*/ | |||
export default [ | |||
// 产品详情 | |||
{ | |||
path: "/product-detail", | |||
name: "ProductDetail", | |||
component: () => | |||
import ("../../views/product/detail/ProductDetail.vue"), | |||
meta: { | |||
title: "产品详情", | |||
}, | |||
}, | |||
]; |
@@ -0,0 +1,37 @@ | |||
<!-- banner --> | |||
<template> | |||
<div class="login"> | |||
<Nav /> | |||
<LoginFrom /> | |||
</div> | |||
</template> | |||
<script> | |||
import Nav from "@components/Header.vue"; | |||
import LoginFrom from "./LoginFrom/LoginFrom.vue"; | |||
export default { | |||
//import引入的组件需要注入到对象中才能使用 | |||
components: { Nav, LoginFrom }, | |||
data() { | |||
//这里存放数据 | |||
return {}; | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.login { | |||
// @include size(100%, 600px); | |||
min-height: 100vh; | |||
background: url("~@/assets/images/login/loginPageBgc.png") no-repeat; | |||
background-size: 100% 100%; | |||
position: relative; | |||
.nav { | |||
z-index: 100; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
} | |||
} | |||
</style> | |||
@@ -0,0 +1,136 @@ | |||
.login-from-container[data-1664161475611] { | |||
$boderColor: #1e89e6; | |||
$fontColor: #637485; | |||
height: calc(100vh - 100px); | |||
min-height: 820px; | |||
min-width: 1200px; | |||
position: relative; | |||
.login-from-box { | |||
height: 100%; | |||
position: relative; | |||
user-select: none; | |||
.login-from { | |||
width: 360px; | |||
position: absolute; | |||
right: 360px; | |||
top: 30%; | |||
transform: translate(0, -20%); | |||
.el-input__icon { | |||
color: $boderColor; | |||
} | |||
.el-input__inner { | |||
border: 1px solid $boderColor; | |||
outline: none; | |||
background: transparent; | |||
transition: none; | |||
transform: none; | |||
box-shadow: none; | |||
} | |||
.el-checkbox { | |||
.el-checkbox__inner { | |||
border-color: $boderColor; | |||
} | |||
.el-checkbox__label { | |||
color: $fontColor; | |||
} | |||
} | |||
} | |||
} | |||
.login-title { | |||
height: 27px; | |||
font-family: AlibabaPuHuiTiM; | |||
font-size: 20px; | |||
font-weight: bold; | |||
letter-spacing: 0px; | |||
color: $fontColor; | |||
margin-bottom: 10px; | |||
} | |||
.login-sub-title { | |||
font-family: Alibaba-PuHuiTi-R; | |||
font-size: 14px; | |||
font-weight: normal; | |||
font-stretch: normal; | |||
letter-spacing: 0px; | |||
color: $fontColor; | |||
line-height: 20px; | |||
margin-bottom: 30px; | |||
} | |||
.verification-code-row { | |||
height: 40px; | |||
.img-code-input { | |||
width: 276px; | |||
margin-right: 6px; | |||
.img-code-icon { | |||
width: 14px; | |||
margin-top: 12px; | |||
margin-left: 5px; | |||
} | |||
.img-code-icon-num { | |||
width: 18px; | |||
margin-top: 14px; | |||
margin-left: 3px; | |||
} | |||
} | |||
.img-code-box { | |||
width: 78px; | |||
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%); | |||
height: 40px; | |||
border-radius: 6px; | |||
color: #fff; | |||
text-align: center; | |||
line-height: 40px; | |||
cursor: pointer; | |||
&.get-code { | |||
font-size: 12px; | |||
color: #fff; | |||
} | |||
} | |||
} | |||
.img-phone-number { | |||
.img-code-icon { | |||
width: 18px; | |||
margin-top: 14px; | |||
margin-left: 3px; | |||
} | |||
} | |||
.remember-row { | |||
height: 20px; | |||
line-height: 20px; | |||
.forgot-password { | |||
font-size: 14px; | |||
color: $fontColor; | |||
} | |||
} | |||
.login-btn { | |||
width: 360px; | |||
height: 50px; | |||
line-height: 50px; | |||
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%); | |||
border-radius: 6px; | |||
text-align: center; | |||
font-size: 18px; | |||
color: #ffffff; | |||
font-weight: bold; | |||
margin-bottom: 30px; | |||
} | |||
.other-login { | |||
color: $fontColor; | |||
font-size: 14px; | |||
.reg-span { | |||
color: #0086e7; | |||
} | |||
} | |||
.cursor-pointer { | |||
cursor: pointer; | |||
} | |||
.mb-20 { | |||
margin-bottom: 20px; | |||
} | |||
.fl { | |||
float: left; | |||
} | |||
.fr { | |||
float: right; | |||
} | |||
} |
@@ -0,0 +1,210 @@ | |||
<template> | |||
<div class="login-from-container" data-1664161475611> | |||
<div class="login-from-box"> | |||
<div class="login-from"> | |||
<div class="login-title">{{ getTitleText() }}</div> | |||
<div | |||
class="login-sub-title" | |||
v-if="loginMethod == 1 || loginMethod == 2" | |||
>登录之后您可以享受企业服务、税收分析、订阅信息、定制化服务</div> | |||
<!-- 默认登录 --> | |||
<div v-if="loginMethod == 1"> | |||
<el-input placeholder="请输入用户名..." v-model="userName" class="mb-20"> | |||
<i slot="prefix" class="el-input__icon el-icon-user"></i> | |||
</el-input> | |||
<el-input | |||
placeholder="请输入登录密码..." | |||
v-model="password" | |||
show-password | |||
class="mb-20" | |||
> | |||
<i slot="prefix" class="el-input__icon el-icon-lock"></i> | |||
</el-input> | |||
</div> | |||
<!-- 手机登录 --> | |||
<div v-if="loginMethod == 2"> | |||
<el-input placeholder="请输入手机号码..." v-model="mobilePhone" class="mb-20"> | |||
<i slot="prefix" class="el-input__icon el-icon-mobile-phone"></i> | |||
</el-input> | |||
<div class="verification-code-row mb-20"> | |||
<el-input | |||
placeholder="请输入图片验证码..." | |||
v-model="imgCode" | |||
class="fl img-code-input" | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/verificationCode.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
</el-input> | |||
<div class="img-code-box fl">123456</div> | |||
</div> | |||
<el-input | |||
placeholder="请输入手机验证码..." | |||
v-model="phoneCode" | |||
class="mb-20 img-phone-number" | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/numCodeIcon.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
</el-input> | |||
</div> | |||
<!-- 注册 || 忘记密码 --> | |||
<div v-if="loginMethod == 3 || loginMethod == 4"> | |||
<el-input placeholder="请输入手机号码..." v-model="mobilePhone" class="mb-20"> | |||
<i slot="prefix" class="el-input__icon el-icon-mobile-phone"></i> | |||
</el-input> | |||
<el-input placeholder="请输入用户名..." v-model="userName" class="mb-20"> | |||
<i slot="prefix" class="el-input__icon el-icon-user"></i> | |||
</el-input> | |||
<el-input | |||
placeholder="请输入新密码..." | |||
v-model="newPassword" | |||
show-password | |||
class="mb-20" | |||
> | |||
<i slot="prefix" class="el-input__icon el-icon-lock"></i> | |||
</el-input> | |||
<el-input | |||
placeholder="请再次输入新密码..." | |||
v-model="confirmPassword" | |||
show-password | |||
class="mb-20" | |||
> | |||
<i slot="prefix" class="el-input__icon el-icon-lock"></i> | |||
</el-input> | |||
<div class="verification-code-row mb-20"> | |||
<el-input | |||
placeholder="请输入图片验证码..." | |||
v-model="imgCode" | |||
class="fl img-code-input" | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/verificationCode.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
</el-input> | |||
<div class="img-code-box fl">123456</div> | |||
</div> | |||
<div class="verification-code-row mb-20"> | |||
<el-input | |||
placeholder="请输入手机验证码..." | |||
v-model="phoneCode" | |||
class="fl img-code-input" | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/numCodeIcon.png" | |||
class="img-code-icon-num" | |||
alt | |||
/> | |||
</el-input> | |||
<div class="img-code-box get-code fl">获取验证码</div> | |||
</div> | |||
</div> | |||
<div class="remember-row mb-20" v-if="loginMethod == 1 || loginMethod == 2"> | |||
<div class="remember-password fl"> | |||
<el-checkbox v-model="isRemember">记住密码</el-checkbox> | |||
</div> | |||
<span | |||
class="forgot-password fr cursor-pointer" | |||
@click="loginMethodChange(4)" | |||
>忘记密码?</span> | |||
</div> | |||
<div class="login-btn cursor-pointer">{{ getLoginBtnText() }}</div> | |||
<div class="other-login" v-if="loginMethod == 1 || loginMethod == 2"> | |||
<span | |||
class="fl cursor-pointer" | |||
v-if="loginMethod == 1" | |||
@click="loginMethodChange(2)" | |||
>手机验证码登录</span> | |||
<span | |||
class="fl cursor-pointer" | |||
v-if="loginMethod == 2" | |||
@click="loginMethodChange(1)" | |||
>账号密码登录</span> | |||
<span class="fr cursor-pointer"> | |||
你还没有账户? | |||
<span class="reg-span" @click="loginMethodChange(3)">立即注册 ></span> | |||
</span> | |||
</div> | |||
<div class="other-login" v-else> | |||
<span class="fr cursor-pointer"> | |||
已经拥有账户? | |||
<span class="reg-span" @click="loginMethodChange(1)">立即登录 ></span> | |||
</span> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import ret from "bluebird/js/release/util"; | |||
import "./LoginFrom.scss"; | |||
export default { | |||
data() { | |||
return { | |||
// 登录loading | |||
loginLoading: false, | |||
/** | |||
* | |||
* 登录方式 | |||
* 1 默认登录 | |||
* 2 手机号登录 | |||
* 3 注册 | |||
* 4 忘记密码 | |||
* | |||
*/ | |||
loginMethod: 1, | |||
// 用户名 | |||
userName: "", | |||
// 登录密码 | |||
password: "", | |||
// 手机号码 | |||
mobilePhone: "", | |||
// 图片验证码 | |||
imgCode: "", | |||
// 手机验证码 | |||
phoneCode: "", | |||
// 新密码 | |||
newPassword: "", | |||
// 确认密码 | |||
confirmPassword: "", | |||
// 记住密码 | |||
isRemember: false, | |||
}; | |||
}, | |||
methods: { | |||
// 登录界面切换 | |||
loginMethodChange(status) { | |||
this.loginMethod = status; | |||
}, | |||
// 获取title | |||
getTitleText() { | |||
let { loginMethod } = this; | |||
return loginMethod == 1 || loginMethod == 2 | |||
? "松江经济技术开发区(小昆山分区)" | |||
: loginMethod == 3 | |||
? "注册" | |||
: "忘记密码"; | |||
}, | |||
// 获取登录按钮文本 | |||
getLoginBtnText() { | |||
let { loginMethod } = this; | |||
return loginMethod == 1 || loginMethod == 2 | |||
? "登录" | |||
: loginMethod == 3 | |||
? "注册" | |||
: "修改密码"; | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,145 @@ | |||
.product-detial[data-1664250138954] { | |||
height: 250px; | |||
background: url("~@/assets/images/product/productDetialHeaderBgc.png") | |||
no-repeat; | |||
background-size: 100% 100%; | |||
.header-box { | |||
width: 1200px; | |||
margin: 0 auto; | |||
height: 150px; | |||
position: relative; | |||
.breadcrumb-nav { | |||
float: left; | |||
margin-top: 32px; | |||
.current-position { | |||
position: relative; | |||
z-index: 2; | |||
color: #fff; | |||
font-size: 16px; | |||
&.link { | |||
margin-right: 3px; | |||
cursor: pointer; | |||
} | |||
&.active { | |||
font-weight: bold; | |||
} | |||
} | |||
} | |||
.content { | |||
position: absolute; | |||
left: 0; | |||
top: 0; | |||
width: 100%; | |||
height: 100%; | |||
text-align: center; | |||
color: #fff; | |||
.title { | |||
font-size: 36px; | |||
font-weight: bold; | |||
height: 50px; | |||
line-height: 50px; | |||
margin-top: 36px; | |||
} | |||
.sub-title { | |||
margin-top: 5px; | |||
font-size: 14px; | |||
} | |||
} | |||
} | |||
.detial-container { | |||
width: 1200px; | |||
margin: 0 auto; | |||
margin-top: 30px; | |||
padding-bottom: 50px; | |||
border-top: 2px solid #2c94f0; | |||
.ditial-banner { | |||
height: 387px; | |||
background: linear-gradient(to bottom, #cde8fb, #fff); | |||
box-sizing: border-box; | |||
padding: 27px 28px 0 30px; | |||
.main-img { | |||
float: left; | |||
width: 530px; | |||
height: 360px; | |||
margin-right: 32px; | |||
background: green; | |||
} | |||
.main-item { | |||
float: left; | |||
height: 360px; | |||
width: calc(100% - 562px); | |||
.main-title { | |||
height: 33px; | |||
line-height: 33px; | |||
font-weight: bold; | |||
font-size: 24px; | |||
color: #334a5f; | |||
@include text-ellipsis(); | |||
} | |||
} | |||
.main-price { | |||
margin-top: 23px; | |||
line-height: 42px; | |||
font-size: 30px; | |||
color: #334a5f; | |||
font-weight: bold; | |||
.price-value { | |||
color: #d9121a; | |||
} | |||
} | |||
.mian-detail { | |||
font-size: 16px; | |||
height: 150px; | |||
margin-top: 25px; | |||
box-sizing: border-box; | |||
line-height: 30px; | |||
color: #637485; | |||
@include text-ellipsis-multiple(5); | |||
.mian-detail-span { | |||
font-weight: bold; | |||
color: #334a5f; | |||
} | |||
} | |||
.main-btn { | |||
margin-top: 30px; | |||
height: 56px; | |||
line-height: 56px; | |||
width: 190px; | |||
background-image: linear-gradient( | |||
135deg, | |||
#42a6fe 0%, | |||
#0070d2 100% | |||
); | |||
border-radius: 28px; | |||
color: #fff; | |||
font-size: 24px; | |||
text-align: center; | |||
.consult-icon { | |||
position: relative; | |||
top: 6px; | |||
left: -3px; | |||
} | |||
cursor: pointer; | |||
} | |||
} | |||
.server-detail { | |||
margin-top: 30px; | |||
.server-title { | |||
height: 60px; | |||
line-height: 60px; | |||
background-image: linear-gradient( | |||
135deg, | |||
#42a6fe 0%, | |||
#0070d2 100% | |||
); | |||
@include font(24px, #fff); | |||
padding-left: 30px; | |||
} | |||
.server-content { | |||
padding: 30px; | |||
border: solid 1px #bcd8e9; | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,64 @@ | |||
<template> | |||
<div class="product-detial" data-1664250138954> | |||
<div class="detial-header"> | |||
<Nav></Nav> | |||
<div class="header-box"> | |||
<div class="breadcrumb-nav"> | |||
<span class="current-position"> | |||
<i class="el-icon-location"></i> 当前位置: | |||
</span> | |||
<span class="current-position link">首页</span> | |||
<span class="current-position link"> | |||
<i class="el-icon-arrow-right"></i> | |||
</span> | |||
<span class="current-position link active">招商服务</span> | |||
</div> | |||
<div class="content"> | |||
<div class="title">招商服务</div> | |||
<div class="sub-title">Investment promotion service</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="detial-container"> | |||
<div class="ditial-banner"> | |||
<div class="main-img">123</div> | |||
<div class="main-item"> | |||
<div class="main-title" :title="'有限责任公司注册(松江)'">有限责任公司注册(松江)</div> | |||
<div class="main-price"> | |||
<span class="price-label">价格:</span> | |||
<span class="price-value">¥80.00元</span> | |||
</div> | |||
<div class="mian-detail" :title="mainDetailText"> | |||
<span class="mian-detail-span">详情:</span> | |||
{{ mainDetailText }} | |||
</div> | |||
<div class="main-btn"> | |||
<img src="~@assets/images/product/consult-icon.png" class="consult-icon" alt="icon"> 立即咨询 | |||
</div> | |||
</div> | |||
</div> | |||
<div class="server-detail"> | |||
<div class="server-title"> | |||
服务详情 | |||
</div> | |||
<div class="server-content"> | |||
123 | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import Nav from "@components/Header.vue"; | |||
import "./ProductDetail.scss"; | |||
export default { | |||
components: { Nav }, | |||
data() { | |||
return { | |||
mainDetailText: `根据一个纳税年度内的所得、应纳税额、已缴(扣)税额、抵免(扣)税额、应补(退)税额等情况,如实填写并报送《个人所得税纳税申报表(适用于年所得12万元以上的纳税人申报)》、个人有效身份证件复印件,以及主管税务机关要求报送的其他有关资料。有效身份证件,包括纳税人的身份证、护照、回乡证、军人身份证件等。`, | |||
}; | |||
}, | |||
}; | |||
</script> | |||