@ -1,8 +1,10 @@ |
|||
config = { |
|||
API_URL: 'http://172.119.51.18:8081', |
|||
COCKPIT_API_URL: 'http://www.fatoaniic.com/api', |
|||
LOGIN_URL: 'http://www.fatoaniic.com/#/login', |
|||
APP_URL:'http://nmsj.org.cn/', |
|||
SHOW_URL: "http://121.36.65.171:8787/file/", |
|||
UPLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/upload", |
|||
API_URL: 'http://172.119.51.140:8081', |
|||
CODE_URL: 'http://172.119.51.140:8082', |
|||
UPLOAD_URL: "http://172.119.51.140:8082/attachment/uploadOne", |
|||
// COCKPIT_API_URL: 'http://www.fatoaniic.com/api',
|
|||
// LOGIN_URL: 'http://www.fatoaniic.com/#/login',
|
|||
// 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> |
|||
<div class="app-container"> |
|||
<div class="app-main"> |
|||
<div class="content-block"> |
|||
<el-steps |
|||
:space="180" |
|||
:active="stepActive" |
|||
finish-status="process" |
|||
process-status="wait" |
|||
align-center |
|||
> |
|||
<el-step title="输入账号"></el-step> |
|||
<el-step title="安全验证"></el-step> |
|||
<el-step title="重置密码"></el-step> |
|||
<el-step title="成功"></el-step> |
|||
</el-steps> |
|||
<div class="flex-box"> |
|||
<div class="step-block"> |
|||
<el-form :model="step0" :rules="step0Rules" ref="step0" v-show="stepActive == 1"> |
|||
<el-form-item label="账号:" :label-width="formLabelWidth" prop="username"> |
|||
<el-input v-model="step0.username" 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('step0')" |
|||
>下一步</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-form :model="step1" :rules="step1Rules" ref="step1" v-show="stepActive == 2"> |
|||
<el-form-item label="手机号:" :label-width="formLabelWidth"> |
|||
<span>{{step1.telPhone}}</span> |
|||
</el-form-item> |
|||
<!-- <el-form-item label="验证码:" :label-width="formLabelWidth" prop="tcode"> |
|||
<el-input v-model="step1.tcode" autocomplete="off" size="small" style="width:110px;"></el-input> |
|||
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic"> |
|||
<img src="../../assets/login/refresh.png" alt="点击刷新" class="code-refresh" @click="refreshCode"> |
|||
</el-form-item>--> |
|||
<el-form-item label="短信验证码:" :label-width="formLabelWidth" prop="code"> |
|||
<el-input |
|||
v-model.number="step1.code" |
|||
autocomplete="off" |
|||
size="small" |
|||
style="width:110px;margin-right:5px;" |
|||
></el-input> |
|||
<!-- <el-button type="danger" size="small ">获取验证码</el-button> --> |
|||
<el-button |
|||
type="danger" |
|||
style="width:100px;" |
|||
size="small" |
|||
@click="getSendMessage" |
|||
:disabled="sendStatus" |
|||
>{{!sendStatus?'获取验证码':codeTimer+'秒'}}</el-button> |
|||
</el-form-item> |
|||
<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 class="app-container"> |
|||
<div class="app-main"> |
|||
<div class="content-block"> |
|||
<h1>密码找回</h1> |
|||
<el-divider></el-divider> |
|||
<el-form :model="form" :rules="rules" ref="ruleForm"> |
|||
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="account"> |
|||
<el-input type="text" v-model="form.account" auto-complete="new-password" placeholder="请输入用户名(必填)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="电话:" :label-width="formLabelWidth" prop="phone"> |
|||
<el-input v-model.number="form.phone" autocomplete="off" minlength="11" maxlength="11" |
|||
placeholder="请输入电话号码(必填)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email"> |
|||
<el-input v-model="form.email" autocomplete="off" placeholder="请输入邮箱(必填)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="新密码:" :label-width="formLabelWidth" prop="newPassword"> |
|||
<el-input type="password" v-model="form.newPassword" auto-complete="new-password" placeholder="请输入新密码(必填)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="confirmPassword"> |
|||
<el-input type="password" v-model="form.confirmPassword" autocomplete="off" placeholder="请再次输入新密码(必填)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="验证码" :label-width="formLabelWidth" prop="verificationCode"> |
|||
<el-row> |
|||
<el-col :span="12"> |
|||
<el-input |
|||
v-model="form.verificationCode" |
|||
name="vercode" |
|||
type="text" |
|||
auto-complete="off" |
|||
minlength="4" |
|||
maxlength="4" |
|||
placeholder="请输入验证码" |
|||
@keyup.enter.native="handleLogin" |
|||
/> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/> |
|||
<img |
|||
:src="_getImage('login','refresh.png')" |
|||
alt="点击刷新" |
|||
class="code-refresh" |
|||
@click="refreshCode" |
|||
/> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
|
|||
</el-form-item> |
|||
<div class="text-center"> |
|||
<el-button type="danger" size="mini" @click="submitForm('ruleForm')">保存</el-button> |
|||
<el-button type="info" size="mini" @click="resetForm('ruleForm')">重置</el-button> |
|||
</div> |
|||
|
|||
</el-form> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
userToTelphone, |
|||
sendMessage, |
|||
smsVerification, |
|||
setUpPassword |
|||
} from "@/api/login"; |
|||
import {validateEmail, validatePhone, validateChinese} from "@/utils/validate" |
|||
export default { |
|||
name: "retrievePassword", |
|||
data() { |
|||
const checkAgainPassword = (rule, value, callback) => { |
|||
if (value != this.step2.newPass) { |
|||
return callback(new Error("两次输入密码不一致")); |
|||
} else { |
|||
callback(); |
|||
} |
|||
}; |
|||
name: "retrievePassword", |
|||
data() { |
|||
const checkAgainPassword = (rule, value, callback) => { |
|||
if (value != this.step2.newPass) { |
|||
return callback(new Error("两次输入密码不一致")); |
|||
} else { |
|||
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 { |
|||
timer: 10, //返回的计时器 |
|||
tagTimer: null, //返回计时器的标记 |
|||
stepActive: 1, //步骤标记 |
|||
formLabelWidth: "120px", //form表单的lable宽度 |
|||
codeSrc: "", //图片地址 |
|||
step0: { |
|||
//操作步骤1的数据 |
|||
username: "" |
|||
}, |
|||
step0Rules: { |
|||
//操作步骤1的校验规则 |
|||
username: [{ required: true, message: "请输入账号", trigger: "blur" }] |
|||
}, |
|||
step1: { |
|||
//操作步骤2的数据 |
|||
telPhone: "", |
|||
// tcode:'', |
|||
code: null |
|||
}, |
|||
step1Rules: { |
|||
//操作步骤2的校验规则 |
|||
// tcode: [ |
|||
// { required: true, message: '请输入验证码', trigger: 'blur' } |
|||
// ], |
|||
code: [{ required: true, message: "请输入短信验证码", trigger: "blur" }] |
|||
}, |
|||
step2: { |
|||
//操作步骤3的数据 |
|||
telPhone: "", |
|||
newPass: "", |
|||
again: "" |
|||
}, |
|||
step2Rules: { |
|||
//操作步骤3的校验规则 |
|||
newPass: [ |
|||
{ required: true, message: "请输入新密码", trigger: "blur" }, |
|||
{ min: 8, max: 12, message: "长度在 8 到 12 个字符", trigger: "blur" } |
|||
], |
|||
again: [ |
|||
{ required: true, message: "请再次输入新密码", trigger: "blur" }, |
|||
{ validator: checkAgainPassword, trigger: "blur" } |
|||
] |
|||
}, |
|||
sendStatus: false, |
|||
codeTimer: 60 |
|||
}; |
|||
code_url: config.CODE_URL, |
|||
formLabelWidth: '150px', |
|||
form:{ |
|||
account:'', |
|||
email:'', |
|||
phone:'', |
|||
newPassword:'', |
|||
confirmPassword:'', |
|||
verificationCode:'', |
|||
t:'' |
|||
}, |
|||
rules: { //添加修改的校验规则 |
|||
account: [ |
|||
{required: true, message: '请输入用户名', trigger: 'blur'}, |
|||
{validator: checkIsUserdUser, trigger: 'blur'} |
|||
], |
|||
phone: [ |
|||
{required: true, validator: checkPhone, trigger: 'blur'} |
|||
], |
|||
email: [ |
|||
{required: true, message: '请填写邮箱', trigger: 'blur'}, |
|||
{validator: checkEmail, trigger: 'blur'} |
|||
], |
|||
newPassword: [ |
|||
{required: true, message: '请输入新密码', trigger: 'blur'}, |
|||
{min: 8, max: 12, message: '长度在 8 到 12 个字符', trigger: 'blur'} |
|||
], |
|||
confirmPassword: [ |
|||
{required: true, message: '请再次输入新密码', trigger: 'blur'}, |
|||
{validator: checkAgainPassword, trigger: 'blur'} |
|||
], |
|||
verificationCode: [ |
|||
{required: true, message: '请填写验证码', trigger: 'blur'}, |
|||
], |
|||
|
|||
}, |
|||
codeSrc:'' |
|||
} |
|||
}, |
|||
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: { |
|||
//下一步的校验与操作 |
|||
submitForm(formName) { |
|||
this.$refs[formName].validate(valid => { |
|||
if (valid) { |
|||
if (formName == "step0") { |
|||
userToTelphone({ userName: this.step0.username }).then(res => { |
|||
this.step1.telPhone = res.data; |
|||
this.step2.telPhone = res.data; |
|||
this.stepActive++; |
|||
}); |
|||
} else if (formName == "step1") { |
|||
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(); |
|||
}); |
|||
} |
|||
setUpPassword(this.form).then(res => { |
|||
console.log(res); |
|||
this.$message({ |
|||
message: res.message, |
|||
type: "success" |
|||
}); |
|||
this.$router.push({path:'/'}) |
|||
}) |
|||
} else { |
|||
console.log("error submit!!"); |
|||
return false; |
|||
} |
|||
}); |
|||
}, |
|||
getSendMessage() { |
|||
sendMessage({ telPhone: this.step1.telPhone }).then(res => { |
|||
this.$message({ |
|||
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" }); |
|||
//form重置 |
|||
resetForm(formName) { |
|||
this.$refs[formName].resetFields(); |
|||
}, |
|||
//刷新验证码 |
|||
refreshCode: function() { |
|||
refreshCode: function () { |
|||
this.form.t = Math.random().toString().substring(0,13) |
|||
document |
|||
.getElementById("codePic") |
|||
.setAttribute( |
|||
"src", |
|||
config.API_URL + "/api-login/common/verifycode?" + Math.random() |
|||
); |
|||
.getElementById("codePic") |
|||
.setAttribute( |
|||
"src", |
|||
this.code_url + "/common/getVerificationCode/" + this.form.t |
|||
); |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.content-block { |
|||
height: calc(100vh - 469px); |
|||
min-height: 300px; |
|||
padding: 50px; |
|||
} |
|||
.el-steps { |
|||
justify-content: center; |
|||
// padding: 50px; |
|||
} |
|||
.step-block { |
|||
// width: 500px; |
|||
padding: 80px 50px; |
|||
.el-form { |
|||
margin: 50px auto; |
|||
width: 500px; |
|||
} |
|||
|
|||
.code-refresh { |
|||
position: absolute; |
|||
// right: 2px; |
|||
right: 10px; |
|||
top: 10px; |
|||
width: 25px; |
|||
height: 20px; |
|||
width: 30px; |
|||
height: 25spx; |
|||
cursor: pointer; |
|||
} |
|||
.code-pic { |
|||
margin: 0 5px; |
|||
border: 1px solid rgba(220, 220, 220, 1); |
|||
border-radius: 3px; |
|||
width: 90px; |
|||
height: 32px; |
|||
width: 120px; |
|||
height: 40px; |
|||
vertical-align: middle; |
|||
// cursor: pointer; |
|||
} |
|||
.my-success { |
|||
font-size: 80px; |
|||
color: #20c05c; |
|||
} |
|||
.fontSize1 { |
|||
margin: 30px 0; |
|||
} |
|||
</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> |