@ -1,8 +1,10 @@ |
|||||
config = { |
config = { |
||||
API_URL: 'http://172.119.51.18:8081', |
API_URL: 'http://172.119.51.140:8081', |
||||
COCKPIT_API_URL: 'http://www.fatoaniic.com/api', |
CODE_URL: 'http://172.119.51.140:8082', |
||||
LOGIN_URL: 'http://www.fatoaniic.com/#/login', |
UPLOAD_URL: "http://172.119.51.140:8082/attachment/uploadOne", |
||||
APP_URL:'http://nmsj.org.cn/', |
// COCKPIT_API_URL: 'http://www.fatoaniic.com/api',
|
||||
SHOW_URL: "http://121.36.65.171:8787/file/", |
// LOGIN_URL: 'http://www.fatoaniic.com/#/login',
|
||||
UPLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/upload", |
// APP_URL:'http://nmsj.org.cn/',
|
||||
|
// SHOW_URL: "http://121.36.65.171:8787/file/",
|
||||
|
|
||||
} |
} |
||||
|
After Width: | Height: | Size: 309 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 309 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 309 KiB |
After Width: | Height: | Size: 309 KiB |
After Width: | Height: | Size: 309 KiB |
After Width: | Height: | Size: 40 KiB |
@ -0,0 +1,26 @@ |
|||||
|
import request from '@/utils/request'; |
||||
|
|
||||
|
//区域查询接口
|
||||
|
export function getArea(params) { |
||||
|
return request({ |
||||
|
baseURL:config.CODE_URL, |
||||
|
url: '/common/getComboList_2/40010/'+params, |
||||
|
method: 'get' |
||||
|
}); |
||||
|
} |
||||
|
//行业大类查询接口
|
||||
|
export function getBigIndustryList() { |
||||
|
return request({ |
||||
|
baseURL:config.CODE_URL, |
||||
|
url: '/common/getComboList_1/40008', |
||||
|
method: 'get' |
||||
|
}); |
||||
|
} |
||||
|
//行业小类查询接口
|
||||
|
export function getSmallIndustryList(params) { |
||||
|
return request({ |
||||
|
baseURL:config.CODE_URL, |
||||
|
url: '/common/getComboList_2/40009/'+params, |
||||
|
method: 'get' |
||||
|
}); |
||||
|
} |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 181 KiB |
@ -0,0 +1,61 @@ |
|||||
|
<template> |
||||
|
<div class="banner"> |
||||
|
<img class="banner-bg" :src="_getImage(title,'banner-bg.png')"/> |
||||
|
<div class="banner-content"> |
||||
|
<span class="banner-title">{{title}}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:"banner", |
||||
|
data(){ |
||||
|
return { |
||||
|
title:this.$route.query.title || this.$route.matched[1].meta.title |
||||
|
} |
||||
|
}, |
||||
|
watch:{ |
||||
|
'$route'(to,from){ |
||||
|
this.title = this.$route.query.title || this.$route.matched[1].meta.title |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.banner { |
||||
|
position: relative; |
||||
|
.banner-bg { |
||||
|
width: 100%; |
||||
|
} |
||||
|
.banner-content { |
||||
|
position: absolute; |
||||
|
width: 1200px; |
||||
|
height: 50px; |
||||
|
left: 50%; |
||||
|
transform: translateX(-50%); |
||||
|
bottom: 100px; |
||||
|
background: transparent; |
||||
|
color: #fff; |
||||
|
font-size: 30px; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.banner-title { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: -10px; |
||||
|
width: 50px; |
||||
|
height: 4px; |
||||
|
background: #fff; |
||||
|
transition: All 0.3s ease-in-out; |
||||
|
} |
||||
|
&:hover { |
||||
|
&::before { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,146 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<img class="banner-bg" :src="_getImage('转型升级论坛','top-banner.jpg')"/> |
||||
|
<br><br><br> |
||||
|
<span class="title">论坛新闻</span> |
||||
|
<el-divider></el-divider> |
||||
|
<div class="notice-list" v-for="(item,index) in noticeList.slice(0,4)" :key="index"> |
||||
|
<div class="content-block"> |
||||
|
<p class="text-title" style="font-size:14px;"><span style="color:#01496E;"></span>{{item.title}}</p> |
||||
|
</div> |
||||
|
<span class="text-date">{{item.issueStartTime}}</span> |
||||
|
</div> |
||||
|
<el-pagination |
||||
|
layout="prev, pager, next" |
||||
|
:current-page.sync="currentPage" |
||||
|
:page-size="10" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {getNoticeList} from "@/api/notice" |
||||
|
export default { |
||||
|
name: "newsForum", |
||||
|
data() { |
||||
|
return { |
||||
|
noticeList:[], |
||||
|
currentPage:1, |
||||
|
total:0 |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initData() |
||||
|
}, |
||||
|
methods:{ |
||||
|
initData(){ |
||||
|
let params = { |
||||
|
"pageNum": this.currentPage, |
||||
|
"pageSize": 10, |
||||
|
"search": { |
||||
|
"type": "LTXW" |
||||
|
}, |
||||
|
"sort": "" |
||||
|
} |
||||
|
getNoticeList(params).then(res => { |
||||
|
console.log(res); |
||||
|
this.noticeList = res.data.list |
||||
|
this.total = res.data.count |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.banner-bg { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
} |
||||
|
.title { |
||||
|
position: relative; |
||||
|
color: #1e50ae; |
||||
|
font-size: 18px; |
||||
|
padding: 0 10px; |
||||
|
font-weight: bold; |
||||
|
font-family: 微软雅黑; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: -25px; |
||||
|
width: 100%; |
||||
|
height: 4px; |
||||
|
background: #1e50ae; |
||||
|
} |
||||
|
} |
||||
|
.notice-list { |
||||
|
position: relative; |
||||
|
background-color: rgba(255,255,255,0); |
||||
|
cursor: pointer; |
||||
|
color: #999999; |
||||
|
font-family:PingFang SC; |
||||
|
border-bottom: 1px dotted #dcdcdc; |
||||
|
margin: 10px 30px; |
||||
|
.date-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
vertical-align: top; |
||||
|
width: 67px; |
||||
|
height: 67px; |
||||
|
margin: 10px 10px 10px 0; |
||||
|
padding: 13px 0; |
||||
|
background-color: #E4E4E4; |
||||
|
} |
||||
|
.content-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
height: 46px; |
||||
|
padding: 0 15px; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
top: 28%; |
||||
|
left: -10px; |
||||
|
width: 6px; |
||||
|
height: 6px; |
||||
|
background: #8D8D8D; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
} |
||||
|
.content-block-first { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
height: 103px; |
||||
|
padding: 0 15px; |
||||
|
} |
||||
|
.text-date { |
||||
|
text-align: center; |
||||
|
font-size: 14px; |
||||
|
vertical-align: super; |
||||
|
} |
||||
|
.text-title { |
||||
|
font-size: 18px; |
||||
|
margin: 6px 0; |
||||
|
font-weight:500; |
||||
|
color: #666666; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.text-content { |
||||
|
font-size: 14px; |
||||
|
overflow: hidden; |
||||
|
display: -webkit-box; |
||||
|
-webkit-line-clamp:2; |
||||
|
-webkit-box-orient: vertical; |
||||
|
} |
||||
|
&:hover { |
||||
|
.text-title { |
||||
|
color: #3893c7; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -1,286 +1,208 @@ |
|||||
<template> |
<template> |
||||
<div class="app-container"> |
<div class="app-container"> |
||||
<div class="app-main"> |
<div class="app-main"> |
||||
<div class="content-block"> |
<div class="content-block"> |
||||
<el-steps |
<h1>密码找回</h1> |
||||
:space="180" |
<el-divider></el-divider> |
||||
:active="stepActive" |
<el-form :model="form" :rules="rules" ref="ruleForm"> |
||||
finish-status="process" |
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="account"> |
||||
process-status="wait" |
<el-input type="text" v-model="form.account" auto-complete="new-password" placeholder="请输入用户名(必填)"></el-input> |
||||
align-center |
</el-form-item> |
||||
> |
<el-form-item label="电话:" :label-width="formLabelWidth" prop="phone"> |
||||
<el-step title="输入账号"></el-step> |
<el-input v-model.number="form.phone" autocomplete="off" minlength="11" maxlength="11" |
||||
<el-step title="安全验证"></el-step> |
placeholder="请输入电话号码(必填)"></el-input> |
||||
<el-step title="重置密码"></el-step> |
</el-form-item> |
||||
<el-step title="成功"></el-step> |
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email"> |
||||
</el-steps> |
<el-input v-model="form.email" autocomplete="off" placeholder="请输入邮箱(必填)"></el-input> |
||||
<div class="flex-box"> |
</el-form-item> |
||||
<div class="step-block"> |
<el-form-item label="新密码:" :label-width="formLabelWidth" prop="newPassword"> |
||||
<el-form :model="step0" :rules="step0Rules" ref="step0" v-show="stepActive == 1"> |
<el-input type="password" v-model="form.newPassword" auto-complete="new-password" placeholder="请输入新密码(必填)"></el-input> |
||||
<el-form-item label="账号:" :label-width="formLabelWidth" prop="username"> |
</el-form-item> |
||||
<el-input v-model="step0.username" autocomplete="off" size="small"></el-input> |
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="confirmPassword"> |
||||
</el-form-item> |
<el-input type="password" v-model="form.confirmPassword" autocomplete="off" placeholder="请再次输入新密码(必填)"></el-input> |
||||
<el-form-item :label-width="formLabelWidth"> |
</el-form-item> |
||||
<el-button |
<el-form-item label="验证码" :label-width="formLabelWidth" prop="verificationCode"> |
||||
type="danger" |
<el-row> |
||||
size="small" |
<el-col :span="12"> |
||||
style="width:250px;" |
<el-input |
||||
@click="submitForm('step0')" |
v-model="form.verificationCode" |
||||
>下一步</el-button> |
name="vercode" |
||||
</el-form-item> |
type="text" |
||||
</el-form> |
auto-complete="off" |
||||
<el-form :model="step1" :rules="step1Rules" ref="step1" v-show="stepActive == 2"> |
minlength="4" |
||||
<el-form-item label="手机号:" :label-width="formLabelWidth"> |
maxlength="4" |
||||
<span>{{step1.telPhone}}</span> |
placeholder="请输入验证码" |
||||
</el-form-item> |
@keyup.enter.native="handleLogin" |
||||
<!-- <el-form-item label="验证码:" :label-width="formLabelWidth" prop="tcode"> |
/> |
||||
<el-input v-model="step1.tcode" autocomplete="off" size="small" style="width:110px;"></el-input> |
</el-col> |
||||
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic"> |
<el-col :span="12"> |
||||
<img src="../../assets/login/refresh.png" alt="点击刷新" class="code-refresh" @click="refreshCode"> |
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/> |
||||
</el-form-item>--> |
<img |
||||
<el-form-item label="短信验证码:" :label-width="formLabelWidth" prop="code"> |
:src="_getImage('login','refresh.png')" |
||||
<el-input |
alt="点击刷新" |
||||
v-model.number="step1.code" |
class="code-refresh" |
||||
autocomplete="off" |
@click="refreshCode" |
||||
size="small" |
/> |
||||
style="width:110px;margin-right:5px;" |
</el-col> |
||||
></el-input> |
</el-row> |
||||
<!-- <el-button type="danger" size="small ">获取验证码</el-button> --> |
|
||||
<el-button |
|
||||
type="danger" |
</el-form-item> |
||||
style="width:100px;" |
<div class="text-center"> |
||||
size="small" |
<el-button type="danger" size="mini" @click="submitForm('ruleForm')">保存</el-button> |
||||
@click="getSendMessage" |
<el-button type="info" size="mini" @click="resetForm('ruleForm')">重置</el-button> |
||||
:disabled="sendStatus" |
</div> |
||||
>{{!sendStatus?'获取验证码':codeTimer+'秒'}}</el-button> |
|
||||
</el-form-item> |
</el-form> |
||||
<el-form-item :label-width="formLabelWidth"> |
|
||||
<el-button |
|
||||
type="danger" |
|
||||
size="small" |
|
||||
style="width:250px;" |
|
||||
@click="submitForm('step1')" |
|
||||
>下一步</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
<el-form :model="step2" :rules="step2Rules" ref="step2" v-show="stepActive == 3"> |
|
||||
<el-form-item label="手机号:" :label-width="formLabelWidth"> |
|
||||
<span>{{step2.telPhone}}</span> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="新密码:" :label-width="formLabelWidth" prop="newPass"> |
|
||||
<el-input type="password" v-model="step2.newPass" autocomplete="off" size="small"></el-input> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="again"> |
|
||||
<el-input type="password" v-model="step2.again" autocomplete="off" size="small"></el-input> |
|
||||
</el-form-item> |
|
||||
<el-form-item :label-width="formLabelWidth"> |
|
||||
<el-button |
|
||||
type="danger" |
|
||||
size="small" |
|
||||
style="width:250px;" |
|
||||
@click="submitForm('step2')" |
|
||||
>下一步</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
<div class="flex-box-column" v-show="stepActive == 4"> |
|
||||
<i class="el-icon-success my-success"></i> |
|
||||
<p class="font-size-21 font-weight-bold text-center fontSize1">恭喜您密码修改成功!</p> |
|
||||
<span class="font-size-13 text-center"> |
|
||||
{{timer}}秒后自动跳回登录页面,或 |
|
||||
<el-link :underline="false" type="primary" @click="goLogin">立即登录</el-link> |
|
||||
</span> |
|
||||
</div> |
</div> |
||||
</div> |
|
||||
</div> |
</div> |
||||
</div> |
|
||||
|
|
||||
</div> |
</div> |
||||
</div> |
|
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
import { |
import { |
||||
userToTelphone, |
|
||||
sendMessage, |
|
||||
smsVerification, |
|
||||
setUpPassword |
setUpPassword |
||||
} from "@/api/login"; |
} from "@/api/login"; |
||||
|
import {validateEmail, validatePhone, validateChinese} from "@/utils/validate" |
||||
export default { |
export default { |
||||
name: "retrievePassword", |
name: "retrievePassword", |
||||
data() { |
data() { |
||||
const checkAgainPassword = (rule, value, callback) => { |
const checkAgainPassword = (rule, value, callback) => { |
||||
if (value != this.step2.newPass) { |
if (value != this.step2.newPass) { |
||||
return callback(new Error("两次输入密码不一致")); |
return callback(new Error("两次输入密码不一致")); |
||||
} else { |
} else { |
||||
callback(); |
callback(); |
||||
} |
} |
||||
}; |
}; |
||||
|
const checkIsUserdUser = (rule, value, callback) => { |
||||
|
if (validateChinese(value)) { |
||||
|
return callback(new Error('用户名不可为中文')); |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
}; |
||||
|
const checkPhone = (rule, value, callback) => { |
||||
|
if (!value) { |
||||
|
return callback(new Error('手机号不能为空')); |
||||
|
} else { |
||||
|
if (validatePhone(value)) { |
||||
|
callback(); |
||||
|
} else { |
||||
|
return callback(new Error('请输入正确的手机号')); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
const checkEmail = (rule, value, callback) => { |
||||
|
if (!validateEmail(value)) { |
||||
|
return callback(new Error('请输入正确格式的Email')); |
||||
|
} else { |
||||
|
callback(); |
||||
|
} |
||||
|
} |
||||
return { |
return { |
||||
timer: 10, //返回的计时器 |
code_url: config.CODE_URL, |
||||
tagTimer: null, //返回计时器的标记 |
formLabelWidth: '150px', |
||||
stepActive: 1, //步骤标记 |
form:{ |
||||
formLabelWidth: "120px", //form表单的lable宽度 |
account:'', |
||||
codeSrc: "", //图片地址 |
email:'', |
||||
step0: { |
phone:'', |
||||
//操作步骤1的数据 |
newPassword:'', |
||||
username: "" |
confirmPassword:'', |
||||
}, |
verificationCode:'', |
||||
step0Rules: { |
t:'' |
||||
//操作步骤1的校验规则 |
}, |
||||
username: [{ required: true, message: "请输入账号", trigger: "blur" }] |
rules: { //添加修改的校验规则 |
||||
}, |
account: [ |
||||
step1: { |
{required: true, message: '请输入用户名', trigger: 'blur'}, |
||||
//操作步骤2的数据 |
{validator: checkIsUserdUser, trigger: 'blur'} |
||||
telPhone: "", |
], |
||||
// tcode:'', |
phone: [ |
||||
code: null |
{required: true, validator: checkPhone, trigger: 'blur'} |
||||
}, |
], |
||||
step1Rules: { |
email: [ |
||||
//操作步骤2的校验规则 |
{required: true, message: '请填写邮箱', trigger: 'blur'}, |
||||
// tcode: [ |
{validator: checkEmail, trigger: 'blur'} |
||||
// { required: true, message: '请输入验证码', trigger: 'blur' } |
], |
||||
// ], |
newPassword: [ |
||||
code: [{ required: true, message: "请输入短信验证码", trigger: "blur" }] |
{required: true, message: '请输入新密码', trigger: 'blur'}, |
||||
}, |
{min: 8, max: 12, message: '长度在 8 到 12 个字符', trigger: 'blur'} |
||||
step2: { |
], |
||||
//操作步骤3的数据 |
confirmPassword: [ |
||||
telPhone: "", |
{required: true, message: '请再次输入新密码', trigger: 'blur'}, |
||||
newPass: "", |
{validator: checkAgainPassword, trigger: 'blur'} |
||||
again: "" |
], |
||||
}, |
verificationCode: [ |
||||
step2Rules: { |
{required: true, message: '请填写验证码', trigger: 'blur'}, |
||||
//操作步骤3的校验规则 |
], |
||||
newPass: [ |
|
||||
{ required: true, message: "请输入新密码", trigger: "blur" }, |
}, |
||||
{ min: 8, max: 12, message: "长度在 8 到 12 个字符", trigger: "blur" } |
codeSrc:'' |
||||
], |
} |
||||
again: [ |
|
||||
{ required: true, message: "请再次输入新密码", trigger: "blur" }, |
|
||||
{ validator: checkAgainPassword, trigger: "blur" } |
|
||||
] |
|
||||
}, |
|
||||
sendStatus: false, |
|
||||
codeTimer: 60 |
|
||||
}; |
|
||||
}, |
}, |
||||
mounted() { |
mounted() { |
||||
// this.codeSrc = config.API_URL+"/api-login/common/verifycode?" + Math.random() |
this.form.t = Math.random().toString().substring(0,13) |
||||
|
this.codeSrc = this.code_url + "/common/getVerificationCode/" + this.form.t; |
||||
}, |
}, |
||||
methods: { |
methods: { |
||||
//下一步的校验与操作 |
//下一步的校验与操作 |
||||
submitForm(formName) { |
submitForm(formName) { |
||||
this.$refs[formName].validate(valid => { |
this.$refs[formName].validate(valid => { |
||||
if (valid) { |
if (valid) { |
||||
if (formName == "step0") { |
setUpPassword(this.form).then(res => { |
||||
userToTelphone({ userName: this.step0.username }).then(res => { |
console.log(res); |
||||
this.step1.telPhone = res.data; |
this.$message({ |
||||
this.step2.telPhone = res.data; |
message: res.message, |
||||
this.stepActive++; |
type: "success" |
||||
}); |
}); |
||||
} else if (formName == "step1") { |
this.$router.push({path:'/'}) |
||||
smsVerification(this.step1).then(res => { |
}) |
||||
this.stepActive++; |
|
||||
}); |
|
||||
} else if (formName == "step2") { |
|
||||
const param = { |
|
||||
userName: this.step0.username, |
|
||||
password: this.step2.newPass, |
|
||||
telPhone: this.step2.telPhone, |
|
||||
code: this.step1.code |
|
||||
}; |
|
||||
setUpPassword(param).then(res => { |
|
||||
this.stepActive++; |
|
||||
this.startTimer(); |
|
||||
}); |
|
||||
} |
|
||||
} else { |
} else { |
||||
console.log("error submit!!"); |
console.log("error submit!!"); |
||||
return false; |
return false; |
||||
} |
} |
||||
}); |
}); |
||||
}, |
}, |
||||
getSendMessage() { |
//form重置 |
||||
sendMessage({ telPhone: this.step1.telPhone }).then(res => { |
resetForm(formName) { |
||||
this.$message({ |
this.$refs[formName].resetFields(); |
||||
message: res.msg, |
|
||||
type: "success" |
|
||||
}); |
|
||||
this.codeTimer = 60; |
|
||||
this.sendStatus = true; |
|
||||
var flag = setInterval(() => { |
|
||||
if (this.codeTimer == 0) { |
|
||||
clearInterval(flag); |
|
||||
this.sendStatus = false; |
|
||||
} else { |
|
||||
this.codeTimer--; |
|
||||
} |
|
||||
}, 1000); |
|
||||
}); |
|
||||
}, |
|
||||
//成功的倒计时 |
|
||||
startTimer() { |
|
||||
this.timer = 10; |
|
||||
this.tagTimer = setInterval(() => { |
|
||||
if (this.timer == 0) { |
|
||||
this.goLogin(); |
|
||||
} else { |
|
||||
this.timer--; |
|
||||
} |
|
||||
}, 1000); |
|
||||
}, |
|
||||
//返回登录 |
|
||||
goLogin() { |
|
||||
clearInterval(this.tagTimer); |
|
||||
this.$router.push({ name: "login" }); |
|
||||
}, |
}, |
||||
//刷新验证码 |
//刷新验证码 |
||||
refreshCode: function() { |
refreshCode: function () { |
||||
|
this.form.t = Math.random().toString().substring(0,13) |
||||
document |
document |
||||
.getElementById("codePic") |
.getElementById("codePic") |
||||
.setAttribute( |
.setAttribute( |
||||
"src", |
"src", |
||||
config.API_URL + "/api-login/common/verifycode?" + Math.random() |
this.code_url + "/common/getVerificationCode/" + this.form.t |
||||
); |
); |
||||
} |
} |
||||
} |
} |
||||
}; |
}; |
||||
</script> |
</script> |
||||
<style lang="scss" scoped> |
<style lang="scss" scoped> |
||||
.content-block { |
.content-block { |
||||
height: calc(100vh - 469px); |
|
||||
min-height: 300px; |
min-height: 300px; |
||||
padding: 50px; |
// padding: 50px; |
||||
} |
} |
||||
.el-steps { |
.el-form { |
||||
justify-content: center; |
margin: 50px auto; |
||||
|
width: 500px; |
||||
} |
} |
||||
.step-block { |
|
||||
// width: 500px; |
|
||||
padding: 80px 50px; |
|
||||
} |
|
||||
|
|
||||
.code-refresh { |
.code-refresh { |
||||
position: absolute; |
position: absolute; |
||||
// right: 2px; |
right: 10px; |
||||
top: 10px; |
top: 10px; |
||||
width: 25px; |
width: 30px; |
||||
height: 20px; |
height: 25spx; |
||||
cursor: pointer; |
cursor: pointer; |
||||
} |
} |
||||
.code-pic { |
.code-pic { |
||||
margin: 0 5px; |
margin: 0 5px; |
||||
border: 1px solid rgba(220, 220, 220, 1); |
border: 1px solid rgba(220, 220, 220, 1); |
||||
border-radius: 3px; |
border-radius: 3px; |
||||
width: 90px; |
width: 120px; |
||||
height: 32px; |
height: 40px; |
||||
vertical-align: middle; |
vertical-align: middle; |
||||
// cursor: pointer; |
// cursor: pointer; |
||||
} |
} |
||||
.my-success { |
|
||||
font-size: 80px; |
|
||||
color: #20c05c; |
|
||||
} |
|
||||
.fontSize1 { |
|
||||
margin: 30px 0; |
|
||||
} |
|
||||
</style> |
</style> |
||||
|
@ -0,0 +1,146 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<img class="banner-bg" :src="_getImage('互联网大会','top-banner.jpg')"/> |
||||
|
<br><br><br> |
||||
|
<span class="title">大会新闻</span> |
||||
|
<el-divider></el-divider> |
||||
|
<div class="notice-list" v-for="(item,index) in noticeList.slice(0,4)" :key="index"> |
||||
|
<div class="content-block"> |
||||
|
<p class="text-title" style="font-size:14px;"><span style="color:#01496E;"></span>{{item.title}}</p> |
||||
|
</div> |
||||
|
<span class="text-date">{{item.issueStartTime}}</span> |
||||
|
</div> |
||||
|
<el-pagination |
||||
|
layout="prev, pager, next" |
||||
|
:current-page.sync="currentPage" |
||||
|
:page-size="10" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {getNoticeList} from "@/api/notice" |
||||
|
export default { |
||||
|
name: "newsMeeting", |
||||
|
data() { |
||||
|
return { |
||||
|
noticeList:[], |
||||
|
currentPage:1, |
||||
|
total:0 |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initData() |
||||
|
}, |
||||
|
methods:{ |
||||
|
initData(){ |
||||
|
let params = { |
||||
|
"pageNum": this.currentPage, |
||||
|
"pageSize": 10, |
||||
|
"search": { |
||||
|
"type": "DHXW" |
||||
|
}, |
||||
|
"sort": "" |
||||
|
} |
||||
|
getNoticeList(params).then(res => { |
||||
|
console.log(res); |
||||
|
this.noticeList = res.data.list |
||||
|
this.total = res.data.count |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.banner-bg { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
} |
||||
|
.title { |
||||
|
position: relative; |
||||
|
color: #1e50ae; |
||||
|
font-size: 18px; |
||||
|
padding: 0 10px; |
||||
|
font-weight: bold; |
||||
|
font-family: 微软雅黑; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: -25px; |
||||
|
width: 100%; |
||||
|
height: 4px; |
||||
|
background: #1e50ae; |
||||
|
} |
||||
|
} |
||||
|
.notice-list { |
||||
|
position: relative; |
||||
|
background-color: rgba(255,255,255,0); |
||||
|
cursor: pointer; |
||||
|
color: #999999; |
||||
|
font-family:PingFang SC; |
||||
|
border-bottom: 1px dotted #dcdcdc; |
||||
|
margin: 10px 30px; |
||||
|
.date-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
vertical-align: top; |
||||
|
width: 67px; |
||||
|
height: 67px; |
||||
|
margin: 10px 10px 10px 0; |
||||
|
padding: 13px 0; |
||||
|
background-color: #E4E4E4; |
||||
|
} |
||||
|
.content-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
height: 46px; |
||||
|
padding: 0 15px; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
top: 28%; |
||||
|
left: -10px; |
||||
|
width: 6px; |
||||
|
height: 6px; |
||||
|
background: #8D8D8D; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
} |
||||
|
.content-block-first { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
height: 103px; |
||||
|
padding: 0 15px; |
||||
|
} |
||||
|
.text-date { |
||||
|
text-align: center; |
||||
|
font-size: 14px; |
||||
|
vertical-align: super; |
||||
|
} |
||||
|
.text-title { |
||||
|
font-size: 18px; |
||||
|
margin: 6px 0; |
||||
|
font-weight:500; |
||||
|
color: #666666; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.text-content { |
||||
|
font-size: 14px; |
||||
|
overflow: hidden; |
||||
|
display: -webkit-box; |
||||
|
-webkit-line-clamp:2; |
||||
|
-webkit-box-orient: vertical; |
||||
|
} |
||||
|
&:hover { |
||||
|
.text-title { |
||||
|
color: #3893c7; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,128 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<banner></banner> |
||||
|
<div class="content"> |
||||
|
<div class="app-container"> |
||||
|
<h2 class="text-center">{{noticeTitle}}</h2> |
||||
|
<p v-if="source" class="text-center font-size-13"><br> |
||||
|
<span style="margin-right:30px;">发布于:{{issueStartTime}}</span>来源: |
||||
|
<span style="color:#8a8a8a;">{{source}}</span> |
||||
|
</p> |
||||
|
<el-divider></el-divider> |
||||
|
<p class="ql-editor" v-html="content"></p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
<script> |
||||
|
import banner from '@/components/banner'; |
||||
|
import {getNoticeInfo,getNoticeList} from "@/api/notice" |
||||
|
import 'quill/dist/quill.snow.css' |
||||
|
export default { |
||||
|
name:"noticeShow", |
||||
|
data(){ |
||||
|
return { |
||||
|
ID: this.$route.query.id || '', |
||||
|
content:``, |
||||
|
// title:this.$route.query.title || '', |
||||
|
noticeTitle:'', |
||||
|
source:'', |
||||
|
issueStartTime:'' |
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
banner |
||||
|
}, |
||||
|
watch:{ |
||||
|
'$route'(to,from){ |
||||
|
this.resetDara() |
||||
|
this.initData() |
||||
|
} |
||||
|
}, |
||||
|
mounted(){ |
||||
|
this.initData() |
||||
|
}, |
||||
|
methods:{ |
||||
|
//根据id获取公告详情 |
||||
|
initData() { |
||||
|
if(this.ID) |
||||
|
{ |
||||
|
let params = { |
||||
|
"pageNum": 1, |
||||
|
"pageSize": 1, |
||||
|
"search": { |
||||
|
"type": this.ID |
||||
|
}, |
||||
|
"sort": "" |
||||
|
} |
||||
|
getNoticeList(params).then(res => { |
||||
|
if(res.data && res.data.list.length > 0) |
||||
|
{ |
||||
|
getNoticeInfo(res.data.list[0].id).then(res => { |
||||
|
if (res.data) { |
||||
|
this.content = res.data.content |
||||
|
this.noticeTitle = res.data.title |
||||
|
this.source = res.data.source |
||||
|
this.issueStartTime = res.data.issueStartTime |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
resetDara(){ |
||||
|
this.ID = this.$route.query.id || '', |
||||
|
this.content = ``, |
||||
|
// this.title = this.$route.query.title || '', |
||||
|
this.noticeTitle = '', |
||||
|
this.source = '' |
||||
|
this.issueStartTime = "" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.banner { |
||||
|
position: relative; |
||||
|
.banner-bg { |
||||
|
width: 100%; |
||||
|
} |
||||
|
.banner-content { |
||||
|
position: absolute; |
||||
|
width: 1200px; |
||||
|
height: 50px; |
||||
|
left: 50%; |
||||
|
transform: translateX(-50%); |
||||
|
bottom: 100px; |
||||
|
background: transparent; |
||||
|
color: #fff; |
||||
|
font-size: 30px; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.banner-title { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: -10px; |
||||
|
width: 50px; |
||||
|
height: 4px; |
||||
|
background: #fff; |
||||
|
transition: All 0.3s ease-in-out; |
||||
|
} |
||||
|
&:hover { |
||||
|
&::before { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.content { |
||||
|
position: relative; |
||||
|
min-height: 500px; |
||||
|
background: #dddddd91; |
||||
|
} |
||||
|
</style> |
@ -1,31 +0,0 @@ |
|||||
<template> |
|
||||
<div class="app-container"> |
|
||||
<p class="ql-editor" v-html="content"></p> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
import {getNoticeInfo} from "@/api/notice" |
|
||||
import 'quill/dist/quill.snow.css' |
|
||||
export default { |
|
||||
name:"noticeShow", |
|
||||
data(){ |
|
||||
return { |
|
||||
ID: this.$route.query.id || '', |
|
||||
content:`` |
|
||||
} |
|
||||
}, |
|
||||
mounted(){ |
|
||||
this.initData() |
|
||||
}, |
|
||||
methods:{ |
|
||||
//根据id获取公告详情 |
|
||||
initData() { |
|
||||
getNoticeInfo(this.ID).then(res => { |
|
||||
if (res.data) { |
|
||||
this.content = res.data.content |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
@ -0,0 +1,87 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<p class="title">平台</p> |
||||
|
<div class="platform-box platform-bg-1"> |
||||
|
<a class="title-1" style="z-index:1000;" target="_blank" href="http://wwww.ftiia.com/">食品行业工业互联网标识解析二级节点</a> |
||||
|
</div> |
||||
|
<div class="platform-box platform-bg-2"> |
||||
|
<a class="title-1" style="z-index:1000;" target="_blank" href="">食品工业智能制造平台</a> |
||||
|
</div> |
||||
|
<div class="platform-box platform-bg-1"> |
||||
|
<a class="title-1" style="z-index:1000;" target="_blank" href="http://platform.ftiia.com/">工业互联网公共服务平台</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name: "platform", |
||||
|
data() { |
||||
|
return { |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods:{ |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.title { |
||||
|
position: relative; |
||||
|
height: 60px; |
||||
|
cursor: default; |
||||
|
line-height: 60px; |
||||
|
margin: 15px 0; |
||||
|
font-size: 28px; |
||||
|
color: #000; |
||||
|
} |
||||
|
.title-1 { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
cursor: pointer; |
||||
|
height: 60px; |
||||
|
line-height: 60px; |
||||
|
margin: 15px 0; |
||||
|
font-size: 24px; |
||||
|
// color: #fff; |
||||
|
} |
||||
|
.platform-box { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
cursor: pointer; |
||||
|
vertical-align: top; |
||||
|
width: 320px; |
||||
|
height: 330px; |
||||
|
margin-right: 20px; |
||||
|
padding: 15px 40px; |
||||
|
color: #fff; |
||||
|
&:last-child { |
||||
|
margin-right: 0; |
||||
|
} |
||||
|
&:after { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
width: 0; |
||||
|
height: 100%; |
||||
|
background: rgba(0,0,0,0.5); |
||||
|
transition:none; |
||||
|
// z-index: 5; |
||||
|
} |
||||
|
&:hover { |
||||
|
&:after { |
||||
|
width: 100%; |
||||
|
transition: All 0.3s ease-in-out; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.platform-bg-1 { |
||||
|
background: url('../../assets/public/platform-1.jpg') no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
.platform-bg-2 { |
||||
|
background: url('../../assets/public/platform-2.jpg') no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,114 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="app-main"> |
||||
|
<p class="font-size-24 font-weight-bold line-height-2em">查询结果</p> |
||||
|
<el-divider></el-divider> |
||||
|
<div class="notice-list" v-for="(item,index) in noticeList.slice(0,10)" :key="index"> |
||||
|
<div class="content-block"> |
||||
|
<p class="text-title" style="font-size:14px;"><span style="color:#01496E;">【白皮书】</span>{{item.title}}</p> |
||||
|
</div> |
||||
|
<span class="text-date">{{item.sendtime}}</span> |
||||
|
</div> |
||||
|
<el-pagination |
||||
|
layout="prev, pager, next" |
||||
|
:current-page.sync="currentPage" |
||||
|
:page-size="10" |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:"search", |
||||
|
data(){ |
||||
|
return { |
||||
|
noticeList:[ |
||||
|
{sendtime:'2020-05-10',title:'工业和信息化部办公厅关于推动工业互联网加快发展工业和信息化部办公厅关于推动工业互联网加快发展',content:'各省、自治区、直辖市及计划单列市、新疆生产建设兵团工业和信息化主 管部门,各省、自治区、直辖市通信管理局,中国电信集团有限公司。'}, |
||||
|
{sendtime:'2020-05-09',title:'工业和信息化部办公厅关于公布2019年工业互联网试2019年工业互联网试',content:'各省、自治区、直辖市及计划单列市工业和信息化主管部门,各省、自治区 、直辖市通信管理局,各有关单位。'}, |
||||
|
{sendtime:'2020-05-08',title:'北京市经济和信息化局关于开展2020年工信部工业互',content:'各有关单位:根据工信部及我局工作安排,现将2020年工信部工业互联网 创新发展工程项目(以下简称“项目”)有关工作通知如下。'}, |
||||
|
{sendtime:'2020-05-07',title:'江门市工业和信息化局转发关于组织推进 “5G+工业”',content:'各市(含定州、辛集市)工业和信息化局、通信发展管理办公室,中国联通 河北分公司、中国电信河北分公司、中国移动河北分公司、河北广电网络。'}, |
||||
|
{sendtime:'2020-05-08',title:'关于进一步加快工业互联网发展的通知',content:'各省、自治区、直辖市及计划单列市工业和信息化主管部门,各省、自治区 、直辖市通信管理局,各有关单位。'}, |
||||
|
{sendtime:'2020-05-07',title:'关于天津市钢铁、水泥企业 2018年度工序单位产品',content:'按照工业和信息化部《2019年工业节能监察重点工作计划》(工信部节函 〔2019〕77号)和《关于下达2019年国家重大工业节能监察任务及经费。'}, |
||||
|
{sendtime:'2020-06-07',title:'ssssssssssssssss 2018年度工序单位产品',content:'按照工业和信息化部《2019年工业节能监察重点工作计划》(工信部节函 〔2019〕77号)和《关于下达2019年国家重大工业节能监察任务及经费。'}, |
||||
|
], |
||||
|
currentPage:1, |
||||
|
total:0 |
||||
|
} |
||||
|
}, |
||||
|
mounted(){ |
||||
|
|
||||
|
}, |
||||
|
methods:{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.notice-list { |
||||
|
position: relative; |
||||
|
background-color: rgba(255,255,255,0); |
||||
|
cursor: pointer; |
||||
|
color: #999999; |
||||
|
font-family:PingFang SC; |
||||
|
border-bottom: 1px dotted #dcdcdc; |
||||
|
margin: 0 30px; |
||||
|
height: 46px; |
||||
|
.content-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 150px); |
||||
|
height: 46px; |
||||
|
line-height: 46px; |
||||
|
padding: 0 15px; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
top: 20px; |
||||
|
left: -10px; |
||||
|
width: 6px; |
||||
|
height: 6px; |
||||
|
background: #8D8D8D; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
} |
||||
|
.content-block-first { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
height: 103px; |
||||
|
padding: 0 15px; |
||||
|
} |
||||
|
.text-date { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
height: 46px; |
||||
|
width: 150px; |
||||
|
line-height: 46px; |
||||
|
text-align: center; |
||||
|
font-size: 14px; |
||||
|
vertical-align: bottom; |
||||
|
} |
||||
|
.text-title { |
||||
|
font-size: 18px; |
||||
|
// margin: 6px 0; |
||||
|
font-weight:500; |
||||
|
color: #666666; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.text-content { |
||||
|
font-size: 14px; |
||||
|
overflow: hidden; |
||||
|
display: -webkit-box; |
||||
|
-webkit-line-clamp:2; |
||||
|
-webkit-box-orient: vertical; |
||||
|
} |
||||
|
&:hover { |
||||
|
.text-title { |
||||
|
color: #3893c7; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,12 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<router-view name="banner"/> |
||||
|
<router-view/> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:"mytemplate" |
||||
|
} |
||||
|
</script> |